ROOT logo
#include "hgeantkine.h"
#include "hlinearcategory.h"
#include "hcategorymanager.h"
#include "hlinkeddataobject.h"
#include "hgeantmdc.h"
#include "hgeanttof.h"
#include "hgeantrich.h"
#include "hgeantshower.h"
#include "hgeantrpc.h"
#include "hgeantwall.h"
#include "hgeantemc.h"
#include "hgeantstart.h"
#include "TRandom.h"
#include "TString.h"

#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;

//*-- Author : Romain Holzmann, GSI
//*-- Modified : 23/03/05 by Romain Holzmann
//*-- Modified : 05/04/04 by Romain Holzmann
//*-- Modified : 03/11/03 by Romain Holzmann
//*-- Modified : 09/10/03 by Peter Zumbruch
//*-- Modified : 06/10/03 by Romain Holzmann
//*-- Modified : 14/12/99 by Romain Holzmann
//*-- Copyright : GSI, Darmstadt
//
//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////////////////////////////////
//
//  HGeantKine
// 
//  GEANT KINE data on primary and secondary particles in the simulated event
//
//***************************************************************************
//
// Inline functions:
//
//   void setWeight(Float_t aWeight)          Set weight of track
//   Int_t getTrack() const                   Get GEANT track number
//   Int_t getID() const                      Get GEANT particle id
//   Int_t getParentTrack() const             Get parent track number
//   void setParentTrack(Int_t track)         Set parent track number
//   Float_t getTotalMomentum() const         Get particle momentum (Ptot)
//   Float_t getTransverseMomentum() const    Get transverse momentum (Pt)
//   void getMomentum(HGeomVector& v)         Get momentum vector
//   void setActive(Bool_t flag = kTRUE)      Set track active/inactive
//   void setSuppressed(Bool_t flag = kTRUE)  Set track suppressed/unsuppressed
//   void setUserVal(Float_t val)             Set user specific values (for eaxpmple used for track embedding)
//   Bool_t isActive() const                  Test if track is active
//   Bool_t isPrimary() const                 Test if track is a primary
//   Bool_t isSuppressed() const              Test if track is suppressed
//   Float_t getUserVal()                     Get the specific user flag
//   Int_t setRichHitIndex(Int_t index)       Set index of RICH photon hit
//   Int_t setMdcHitIndex(Int_t index)        Set index of MDC hit
//   Int_t setTofHitIndex(Int_t index)        Set index of TOF hit
//   Int_t setRpcHitIndex(Int_t index)        Set index of RPC hit
//   Int_t setShowerHitIndex(Int_t index)     Set index of SHOWER hit
//   Int_t setWallHitIndex(Int_t index)       Set index of SHOWER hit
//   Int_t getFirstRichHit()                  Get index of first RICH photon hit of this track
//   Int_t getFirstMdcHit()                   Get index of first MDC hit of this track
//   Int_t getFirstTofHit()                   Get index of first TOF hit of this track
//   Int_t getFirstRpcHit()                   Get index of first TOF hit of this track
//   Int_t getFirstShowerHit()                Get index of first RPC hit of this track
//   Int_t getFirstWallHit()                  Get index of first WALL hit of this track
//   Int_t getFirstEmcHit()                   Get index of first EMC hit of this track
//   Int_t getFirstStartHit()                 Get index of first Start hit of this track
//   HLinkedDataObject* nextRichHit()         Get pointer to next RICH photon hit in linked list
//   HLinkedDataObject* nextMdcHit()          Get pointer to next MDC photon hit in linked list
//   HLinkedDataObject* nextTofHit()          Get pointer to next TOF photon hit in linked list
//   HLinkedDataObject* nextShowerHit()       Get pointer to next SHOWER hit in linked list
//   HLinkedDataObject* nextRpcHit()          Get pointer to next RPC hit in linked list
//   HLinkedDataObject* nextWallHit()         Get pointer to next WALL hit in linked list
//   HLinkedDataObject* nextEmcHit()          Get pointer to next EMC hit in linked list
//   HLinkedDataObject* nextStartHit()        Get pointer to next START hit in linked list
//   void setRichCategory(HCategory* p)       Set pointer to RICH photon hit category
//   void setMdcCategory(HCategory* p)        Set pointer to MDC hit category
//   void setTofCategory(HCategory* p)        Set pointer to TOF hit category
//   void setRpcCategory(HCategory* p)        Set pointer to RPC hit category
//   void setShowerCategory(HCategory* p)     Set pointer to SHOWER hit category
//   void setWallCategory(HCategory* p)       Set pointer to WALL hit category
//   void setEmcCategory(HCategory* p)        Set pointer to EMC hit category
//   void setStartCategory(HCategory* p)      Set pointer to StART hit category
//   void resetRichIter()                     Reset iterator on RICH photon hits
//   void resetMdcIter()                      Reset iterator on MDC hits
//   void resetTofIter()                      Reset iterator on TOF hits
//   void resetRpcIter()                      Reset iterator on RPC hits
//   void resetShowerIter()                   Reset iterator on SHOWER hits
//   void resetWallIter()                     Reset iterator on WALL hits
//   void resetEmcIter()                      Reset iterator on EMC hits
//   void resetStartIter()                    Reset iterator on START hits
//
/////////////////////////////////////////////////////////////////////////////

ClassImp(HGeantKine)

HGeantKine::HGeantKine(void) {
  // Default constructor.
  trackNumber = 0;
  parentTrack = 0;
  particleID = 0;
  mediumNumber = 0;
  creationMechanism = 0;
  xVertex = yVertex = zVertex = 0.;
  xMom = yMom = zMom = 0.;
  generatorInfo = 0.;
  generatorInfo1 = 0.;
  generatorInfo2 = 0.;
  generatorWeight = 1.;
  firstRichHit = firstMdcHit = firstTofHit = firstShowerHit = firstRpcHit = firstWallHit = firstEmcHit= firstStartHit = -1;
  pRich = pMdc = pTof = pShow = pRpc = pWall = pEmc = pStart = NULL;
  richIndex = mdcIndex = showIndex = tofIndex = rpcIndex = wallIndex = emcIndex = startIndex = 0;
  active = kFALSE;
  suppressed = kFALSE;
  userVal = -1;
  acceptance = 0;
}

HGeantKine::HGeantKine(HGeantKine &aKine) : TObject(aKine) {
  // Copy constructor.
  trackNumber = aKine.trackNumber;
  parentTrack = aKine.parentTrack;
  particleID = aKine.particleID;
  mediumNumber = aKine.mediumNumber;
  creationMechanism = aKine.creationMechanism;
  xVertex = aKine.xVertex;
  yVertex = aKine.yVertex;
  zVertex = aKine.zVertex;
  xMom = aKine.xMom;
  yMom = aKine.yMom;
  zMom = aKine.zMom;
  generatorInfo = aKine.generatorInfo;
  generatorInfo1 = aKine.generatorInfo1;
  generatorInfo2 = aKine.generatorInfo2;
  generatorWeight = aKine.generatorWeight;
  firstRichHit = aKine.firstRichHit;
  firstMdcHit = aKine.firstMdcHit;
  firstTofHit = aKine.firstTofHit;
  firstRpcHit = aKine.firstRpcHit;
  firstShowerHit = aKine.firstShowerHit;
  firstWallHit = aKine.firstWallHit;
  firstEmcHit = aKine.firstEmcHit;
  firstStartHit = aKine.firstStartHit;
  active = aKine.active;
  suppressed = aKine.suppressed;
  userVal = aKine.userVal;
  acceptance = aKine.acceptance;

}

HGeantKine::~HGeantKine(void) {
  // Destructor.
}

void HGeantKine::setParticle(Int_t aTrack, Int_t aID) {
  // Set GEANT track and particle id.
  trackNumber = aTrack;
  particleID = aID;
}

void HGeantKine::setCreator(Int_t aPar, Int_t aMed, Int_t aMech) {
  // Set information on particle creation: parent track number, midium number, and creation mechanism.
  parentTrack = aPar;
  mediumNumber = aMed;
  creationMechanism = aMech;
}

void HGeantKine::setVertex(Float_t ax, Float_t ay, Float_t az) {
  // Set creation vertex (x,y,z in mm) in lab frame.
  xVertex = ax;
  yVertex = ay;
  zVertex = az;
}

void HGeantKine::setMomentum(Float_t apx, Float_t apy, Float_t apz) {
  // Set particle momentum components at creation (in MeV/c).
  xMom = apx;
  yMom = apy;
  zMom = apz;
}

void HGeantKine::setGenerator(Float_t aInfo, Float_t aWeight) {
  // Set information on generator and weight.
  generatorInfo = aInfo;
  generatorWeight = aWeight;
}

void HGeantKine::setGenerator(Float_t aInfo, Float_t aInfo1, Float_t aInfo2) {
  // Set full generator information.
  generatorInfo = aInfo;
  generatorInfo1 = aInfo1;
  generatorInfo2 = aInfo2;
}

void HGeantKine::getParticle(Int_t &aTrack, Int_t &aID) {
  // Retrieve GEANT track number and id.
  aTrack = trackNumber;
  aID = particleID;
}

void HGeantKine::getCreator(Int_t &aPar, Int_t &aMed, Int_t &aMech) {
  // Retrieve parenet track number, medium and mechanism of creation.
  aPar = parentTrack;
  aMed = mediumNumber;
  aMech = creationMechanism;
}

void HGeantKine::getVertex(Float_t &ax, Float_t &ay, Float_t &az) {
  // Retrieve creation vertex (in mm) in lab frame.
  ax = xVertex;
  ay = yVertex;
  az = zVertex;
}

void HGeantKine::getVertex(HGeomVector& ver) {
  // Retrieve creation vertex (in mm) in lab frame.
    ver.setXYZ(xVertex,yVertex,zVertex);
}

Float_t HGeantKine::getDistFromVertex() {
  // get distance from primary vertex
    return TMath::Sqrt(xVertex*xVertex + yVertex*yVertex + zVertex*zVertex);
}

void HGeantKine::getMomentum(Float_t &apx, Float_t &apy, Float_t &apz) {
  // Retrieve momentum components at creation time.
  apx = xMom;
  apy = yMom;
  apz = zMom;
}

void HGeantKine::getGenerator(Float_t &aInfo, Float_t &aWeight) {
  // Retrieve generator infomation and track weight. 
  aInfo = generatorInfo;
  aWeight = generatorWeight;
}

void HGeantKine::getGenerator(Float_t &aInfo, Float_t &aInfo1, Float_t &aInfo2) {
  // Retrieve full generator information.
  aInfo = generatorInfo;
  aInfo1 = generatorInfo1;
  aInfo2 = generatorInfo2;
}

Int_t   HGeantKine::getGeneration(HGeantKine* kine)
{

    // returns the generation of the particle kine
    // primaries are gen 0. daughters of
    // primaries    gen 1 etc.

    HGeantKine* kine2 = kine;
    Int_t genCt       = 0;

    while (kine2->getParentTrack()!=0){
	kine2 = HCategoryManager::getObject(kine2,catGeantKine,kine2->getParentTrack()-1);
	if(kine) {
	    genCt++;
	}
    }
    return genCt;
}

Int_t   HGeantKine::getMothers(HGeantKine* kine,vector<HGeantKine*>& mothers)
{
    // return in vector all mothers of the particles of kine
    // index 0 is mother , index 1 grand mother etc.
    //the function return the number of mothers found.

    mothers.clear();
    HGeantKine* kine2 = kine;
    Int_t genCt       = 0;

    while (kine2->getParentTrack()!=0){
	kine2 = HCategoryManager::getObject(kine2,catGeantKine,kine2->getParentTrack()-1);
	if(kine) {
	    mothers.push_back(kine2);
	    genCt++;
	}
    }
    return genCt;
}

Int_t HGeantKine::getAllDaughters(HGeantKine* mother,vector<HGeantKine*>& daughters)
{
  // retrieve daughters from all following generations of this mother.
  //
    daughters.clear();

    if(!mother) return 0;

    HCategory* kineCat = HCategoryManager::getCategory(catGeantKine,0,"catGeantKine");

    if(!kineCat) return 0;

    Int_t n     = kineCat->getEntries();
    Int_t track = mother->getTrack();

    HGeantKine* kine = 0;
    for(Int_t i = track; i < n ; i++) { // starting at the first track after mother
	kine = HCategoryManager::getObject(kine,kineCat,i);
	if(kine->hasAncestor(track,(HLinearCategory*) kineCat)){
             daughters.push_back(kine);
	}
    }

    return daughters.size();
}

Int_t HGeantKine::getDaughters(HGeantKine* mother,vector<HGeantKine*>& daughters)
{
  // retrieve daughters from this mother.
  //
    daughters.clear();

    if(!mother) return 0;

    HCategory* kineCat =  HCategoryManager::getCategory(catGeantKine,0,"catGeantKine");

    if(!kineCat) return 0;

    Int_t n     = kineCat->getEntries();
    Int_t track = mother->getTrack();

    HGeantKine* kine = 0;
    for(Int_t i = track; i < n ; i++) { // starting at the first track after mother
	kine = HCategoryManager::getObject(kine,kineCat,i);
	if(kine->getParentTrack() == track){
             daughters.push_back(kine);
	}
    }

    return daughters.size();
}

HGeantKine*  HGeantKine::getChargedDecayDaughter(HGeantKine* mother)
{
    //-------------------------------------------------------
    // has the particle a decayed daughter ? like pion->muon
    HGeantKine* kine = mother;
    vector<HGeantKine*> daughters;
    HGeantKine::getDaughters(kine,daughters);
    HGeantKine* d = 0;
    Int_t chrgP = HPhysicsConstants::charge(kine->getID());

    for(UInt_t i=0;i<daughters.size();i++){
	HGeantKine* d1=daughters[i];
	Int_t chrg = HPhysicsConstants::charge(d1->getID());
	if(chrg != chrgP || chrg == 0) continue;
	if(d1->getMechanism()==5 ) { d = d1; break;}
    }
    //-------------------------------------------------------

    return d;
}


Float_t HGeantKine::getThetaDeg()
{
    // Convert geant mom to theta angle in degree
    Float_t mom = getTotalMomentum();
    return (mom>0.) ? (TMath::RadToDeg() * TMath::Abs(TMath::ACos(zMom / mom))) : 0.;

}

Float_t HGeantKine::getPhiDeg( Bool_t labSys)
{
    // Convert geant mom to phi angle in degree
    // labSys == kTRUE  -> 0-360 deg (lab)
    //        == kFALSE -> 0-60  deg (sector)
    Float_t phi   = TMath::RadToDeg() * TMath::ATan2( yMom, xMom);
    if (phi < 0.) phi += 360.;
    if(!labSys) phi=fmod(phi,60.f)+60.;
    return phi;
}

Int_t HGeantKine::getSector()
{
    // returns the sector number (0-5)
    Float_t phi   = TMath::RadToDeg() * TMath::ATan2( yMom, xMom);
    if (phi < 0.) phi += 360.;
    return  (phi < 60.)? 5 : ((Int_t) (phi / 60.) - 1);
}

Int_t HGeantKine::getPhiThetaDeg(Float_t& theta,Float_t& phi, Bool_t labSys)
{
    // Convert geant mom to phi/theta angle in degree
    // labSys == kTRUE  -> 0-360 deg (lab)
    //        == kFALSE -> 0-60  deg (sector)
    // returns the sector number (0-5)
    // Meaningful if used with primaries
    Float_t mom = getTotalMomentum();
    theta = (mom>0.) ? (TMath::RadToDeg() * TMath::Abs(TMath::ACos(zMom / mom))) : 0.;
    phi   = TMath::RadToDeg() * TMath::ATan2( yMom, xMom);
    if (phi < 0.) phi += 360.;
    Int_t s = (phi < 60.)? 5 : ((Int_t) (phi / 60.) - 1);
    if(!labSys) phi=fmod(phi,60.f)+60.;
    return s;
}

void HGeantKine::setNewTrackNumber(Int_t track) {
  // Set track number to new value and update indexes in all hit categories. 
  // Used in HGeant to re-index after having suppressed non-active tracks;
  // see fillkine.cc.
  Int_t next = 0;
  HLinkedDataObject* p = NULL;

  trackNumber = track;

  if ( (next = (Int_t)firstMdcHit) != -1) {  // update Mdc hits
    resetMdcIter();
    do {
       p = (HLinkedDataObject*)(pMdc->getObject(next));
       ( (HGeantMdc*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

  if ( (next = (Int_t)firstRichHit) != -1) { // update Rich photon hits
    resetRichIter();
    do {
       p = (HLinkedDataObject*)(pRich->getObject(next));
       ( (HGeantRichPhoton*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

  if ( (next = (Int_t)firstTofHit) != -1) {  // update Tof hits
    resetTofIter();
    do {
       p = (HLinkedDataObject*)(pTof->getObject(next));
       ( (HGeantTof*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

  if ( (next = (Int_t)firstRpcHit) != -1) {  // update Rpc hits
    resetRpcIter();
    do {
       p = (HLinkedDataObject*)(pRpc->getObject(next));
       ( (HGeantRpc*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

  if ( (next = (Int_t)firstShowerHit) != -1) { // update Shower hits
    resetShowerIter();
    do {
       p = (HLinkedDataObject*)(pShow->getObject(next));
       ( (HGeantShower*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

 if ( (next = (Int_t)firstWallHit) != -1) { // update Wall hits
    resetWallIter();
    do {
       p = (HLinkedDataObject*)(pWall->getObject(next));
       ( (HGeantWall*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

  if ( (next = (Int_t)firstEmcHit) != -1) {  // update Emc hits
    resetEmcIter();
    do {
       p = (HLinkedDataObject*)(pEmc->getObject(next));
       ( (HGeantEmc*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

  if ( (next = (Int_t)firstStartHit) != -1) {  // update Start hits
    resetStartIter();
    do {
       p = (HLinkedDataObject*)(pStart->getObject(next));
       ( (HGeantStart*)p )->setTrack(track);
    } while( (next = p->getNextHitIndex()) != -1);
  }

}

///////////////////////////////////////////////////////////////////////////////

Int_t HGeantKine::setHitIndex(HCategory* pCat,Short_t& firstHit, Int_t index) {
  // Set next hit index in generic linked list.
  //
  if(pCat == NULL) return 1;
  if(pCat->getObject(index) == NULL) return 1;

  if(firstHit == -1) {              // first hit in linked list
     firstHit = (Short_t)index; 
     active = kTRUE;
  } else {
     HLinkedDataObject* p = NULL;
     Int_t next = (Int_t)firstHit;
     do {                               // find end of list
        p = (HLinkedDataObject*)(pCat->getObject(next));
        next = p->getNextHitIndex();
     } while(next != -1);
     p->setNextHitIndex(index);         // append hit to end of list
  }
  return 0;
}

void HGeantKine::sortRichHits(void) {
  // Sort RICH photon hits in linked list for present track.
  //
  if(pRich == NULL) return;
  Int_t nHits = getNRichHits();
  if(nHits < 2) return;  // nothing to do

  HLinkedDataObject* p = NULL;
  for(Int_t i=0; i<nHits-1;i++) {  //  iterate through list nHits times
     resetRichIter();
     Int_t next = (Int_t)firstRichHit;
     do {
        p = (HLinkedDataObject*)(pRich->getObject(next));
	//
	// do here the swapping of hits
	//
        next = p->getNextHitIndex();
     } while(next != -1);
  }
  return;
}

void HGeantKine::sortMdcHits(void) {
  //
  // Sort MDC hits in linked list for actual track by increasing time-of-flight
  // (this is a simple bubble sort, should be replaced by something faster!).
  //
  // As sortVariable is non-persistent, the sort cannot be done a posteriori,
  // i.e. when the tree is read back. It has to be done before writing!
  //
  if(pMdc == NULL) return;
  Int_t nHits = getNMdcHits();
  if(nHits < 2) return;  // nothing to do

  HLinkedDataObject *pPrevPrev, *pPrev, *pHere;
  Float_t tofHere = 1000000.0;
  Float_t tofPrev = 1000000.0;
  for(Int_t i=0; i<nHits-1;i++) {  //  iterate through list nHits-1 times
     resetMdcIter();
     Int_t prev = -2;
     Int_t here = -1;
     Int_t next = (Int_t)firstMdcHit;
     pPrevPrev = pPrev = NULL;
     do {
        pHere = (HLinkedDataObject*)(pMdc->getObject(next));
        if(pHere == NULL) {
           printf("\nNULL in HGeantKine::sortMdcHits() at index %d ! \n",next);
           return;
        }
        prev = here;
        here = next;
        next = pHere->getNextHitIndex();
        tofHere = pHere->sortVariable;  // as sortVariable is non-persistent
	                                // the sort cannot be done a posteriori

        if(pPrev != NULL) {
           if(tofHere < tofPrev) { // swap hits if present hit is earlier
              if(pPrevPrev == NULL) firstMdcHit = (Short_t)here;
              else pPrevPrev->setNextHitIndex(here);
              pPrev->setNextHitIndex(next);
              pHere->setNextHitIndex(prev);
              pPrevPrev = pHere;
              here = prev;
              continue;
           }
        }

        pPrevPrev = pPrev;
        pPrev = pHere;
        tofPrev = tofHere;
     } while(next != -1);
  }
  return;
}

void HGeantKine::sortTofHits(void) {
  // Sort TOF hits in linked list for present track.
  //
  if(pTof == NULL) return;
  Int_t nHits = getNTofHits();
  if(nHits < 2) return;  // nothing to do

  HLinkedDataObject *pPrevPrev, *pPrev, *pHere;
  Float_t tofHere = 1000000.0;
  Float_t tofPrev = 1000000.0;
  for(Int_t i=0; i<nHits-1;i++) {  //  iterate through list nHits-1 times
     resetTofIter();
     Int_t prev = -2;
     Int_t here = -1;
     Int_t next = (Int_t)firstTofHit;
     pPrevPrev = pPrev = NULL;
     do {
        pHere = (HLinkedDataObject*)(pTof->getObject(next));
        if(pHere == NULL) {
           printf("\nNULL in HGeantKine::sortTofHits() at index %d ! \n",next);
           return;
        }
        prev = here;
        here = next;
        next = pHere->getNextHitIndex();
        tofHere = pHere->sortVariable;  // as sortVariable is non-persistent
	                                // the sort cannot be done a posteriori

        if(pPrev != NULL) {
           if(tofHere < tofPrev) { // swap hits if present hit is earlier
              if(pPrevPrev == NULL) firstTofHit = (Short_t)here;
              else pPrevPrev->setNextHitIndex(here);
              pPrev->setNextHitIndex(next);
              pHere->setNextHitIndex(prev);
              pPrevPrev = pHere;
              here = prev;
              continue;
           }
        }

        pPrevPrev = pPrev;
        pPrev = pHere;
        tofPrev = tofHere;
     } while(next != -1);
  }
  return;
}


void HGeantKine::sortRpcHits(void) {
  // Sort RPC hits in linked list for present track FIXME!! Is it ok??
  //
  if(pRpc == NULL) return;
  Int_t nHits = getNRpcHits();
  if(nHits < 2) return;  // nothing to do

  HLinkedDataObject *pPrevPrev, *pPrev, *pHere;
  Float_t tofHere = 1000000.0;
  Float_t tofPrev = 1000000.0;
  for(Int_t i=0; i<nHits-1;i++) {  //  iterate through list nHits-1 times
     resetRpcIter();
     Int_t prev = -2;
     Int_t here = -1;
     Int_t next = (Int_t)firstRpcHit;
     pPrevPrev = pPrev = NULL;
     do {
        pHere = (HLinkedDataObject*)(pRpc->getObject(next));
        if(pHere == NULL) {
           printf("\nNULL in HGeantKine::sortRpcHits() at index %d ! \n",next);
           return;
        }
        prev = here;
        here = next;
        next = pHere->getNextHitIndex();
        tofHere = pHere->sortVariable;  // as sortVariable is non-persistent
	                                // the sort cannot be done a posteriori

        if(pPrev != NULL) {
           if(tofHere < tofPrev) { // swap hits if present hit is earlier
              if(pPrevPrev == NULL) firstRpcHit = (Short_t)here;
              else pPrevPrev->setNextHitIndex(here);
              pPrev->setNextHitIndex(next);
              pHere->setNextHitIndex(prev);
              pPrevPrev = pHere;
              here = prev;
              continue;
           }
        }

        pPrevPrev = pPrev;
        pPrev = pHere;
        tofPrev = tofHere;
     } while(next != -1);
  }
  return;
}

void HGeantKine::sortShowerHits(void) {
  // Sort SHOWER hits in linked list for present track.
  //
  if(pShow == NULL) return;
  Int_t nHits = getNShowerHits();
  if(nHits < 2) return;  // nothing to do

  HLinkedDataObject* p = NULL;
  for(Int_t i=0; i<nHits-1;i++) {  //  iterate through list nHits times
     resetShowerIter();
     Int_t next = (Int_t)firstShowerHit;
     do {
        p = (HLinkedDataObject*)(pShow->getObject(next));
	//
	// do here the swapping of hits
	//
        next = p->getNextHitIndex();
     } while(next != -1);
  }
  return;
}

void HGeantKine::sortWallHits(void) {
  // Sort WALL hits in linked list for present track
  //
  if(pWall == NULL) return;
  Int_t nHits = getNWallHits();
  if(nHits < 2) return;  // nothing to do

  HLinkedDataObject *pPrevPrev, *pPrev, *pHere;
  Float_t tofHere = 1000000.0;
  Float_t tofPrev = 1000000.0;
  for(Int_t i=0; i<nHits-1;i++) {  //  iterate through list nHits-1 times
     resetWallIter();
     Int_t prev = -2;
     Int_t here = -1;
     Int_t next = (Int_t)firstWallHit;
     pPrevPrev = pPrev = NULL;
     do {
        pHere = (HLinkedDataObject*)(pWall->getObject(next));
        if(pHere == NULL) {
           printf("\nNULL in HGeantKine::sortWallHits() at index %d ! \n",next);
           return;
        }
        prev = here;
        here = next;
        next = pHere->getNextHitIndex();
        tofHere = pHere->sortVariable;  // as sortVariable is non-persistent
	                                // the sort cannot be done a posteriori

        if(pPrev != NULL) {
           if(tofHere < tofPrev) { // swap hits if present hit is earlier
              if(pPrevPrev == NULL) firstWallHit = (Short_t)here;
              else pPrevPrev->setNextHitIndex(here);
              pPrev->setNextHitIndex(next);
              pHere->setNextHitIndex(prev);
              pPrevPrev = pHere;
              here = prev;
              continue;
           }
        }

        pPrevPrev = pPrev;
        pPrev = pHere;
        tofPrev = tofHere;
     } while(next != -1);
  }
  return;
}

HLinkedDataObject* HGeantKine::nextHit(HCategory* pCat,Int_t& index) {
  // Return next hit in category made by present track.
   if(index == -1 || pCat == NULL) return NULL;
   HLinkedDataObject* p = (HLinkedDataObject*)(pCat->getObject(index));
   index = p->getNextHitIndex();
   return p;
}

Int_t HGeantKine::getNRichHits(void) {
  // Return number of RICH photon hits made by present track.
  //
   Int_t n = 0;
   if(firstRichHit > -1) {
      resetRichIter();
      while(nextRichHit() != NULL) n++;
      resetRichIter();
   }
   return n;
}

Int_t HGeantKine::getNMdcHits(void) {
  // Return number of MDC hits made by present track.
  //
   Int_t n = 0;
   if(firstMdcHit > -1) {
      resetMdcIter();
      while(nextMdcHit() != NULL) n++;
      resetMdcIter();
   }
   return n;
}

Int_t HGeantKine::getNMdcHits(Int_t module) {
// Return number of MDC hits made by present track
// for MDC module (range: [0,3]).

  Int_t n = 0;
  if (module >= 0 && module <4)
     {
     if(firstMdcHit > -1)
        {
	HGeantMdc* hit = NULL;
	resetMdcIter();
	while((hit = (HGeantMdc*) nextMdcHit()) != NULL)
	   {
	   if (hit->getModule() == module)
	      {
	      n++;
	      } 
	   }
	resetMdcIter();
	return n;
	}
     }
     else
     {
	return -1;
     }
  return n;
}


Int_t HGeantKine::getNTofHits(void) {
  // Return number of TOF hits made by present track.
  //
   Int_t n = 0;
   if(firstTofHit > -1) {
      resetTofIter();
      while(nextTofHit() != NULL) n++;
      resetTofIter();
   }
   return n;
}

Int_t HGeantKine::getNRpcHits(void) {
  // Return number of RPC hits made by present track.
  //
   Int_t n = 0;
   if(firstRpcHit > -1) {
      resetRpcIter();
      while(nextRpcHit() != NULL) n++;
      resetRpcIter();
   }
   return n;
}

Int_t HGeantKine::getNShowerHits(void) {
  // Return number of SHOWER hits made by present track.
  //
   Int_t n = 0;
   if(firstShowerHit > -1) {
      resetShowerIter();
      while(nextShowerHit() != NULL) n++;
      resetShowerIter();
   }
   return n;
}

Int_t HGeantKine::getNWallHits(void) {
  // Return number of WALL hits made by present track.
  //
   Int_t n = 0;
   if(firstWallHit > -1) {
      resetWallIter();
      while(nextWallHit() != NULL) n++;
      resetWallIter();
   }
   return n;
}

Int_t HGeantKine::getNEmcHits(void) {
  // Return number of EMC hits made by present track.
  //
   Int_t n = 0;
   if(firstEmcHit > -1) {
      resetEmcIter();
      while(nextEmcHit() != NULL) n++;
      resetEmcIter();
   }
   return n;
}

Int_t HGeantKine::getNStartHits(void) {
  // Return number of START hits made by present track.
  //
   Int_t n = 0;
   if(firstStartHit > -1) {
      resetStartIter();
      while(nextStartHit() != NULL) n++;
      resetStartIter();
   }
   return n;
}


Int_t HGeantKine::getRichHits(vector<HGeantRichPhoton*>& v) {
  // Return  RICH photon hits made by present track.
  //
    v.clear();

    HGeantRichPhoton* hit;
    if(firstRichHit > -1) {
	resetRichIter();
	while((hit = (HGeantRichPhoton*) nextRichHit()) != NULL){
	    v.push_back(hit);
	}
	resetRichIter();
    }
    return v.size();
}

Int_t HGeantKine::getMdcHits(vector<HGeantMdc*>& v) {
  // Return  MDC hits made by present track.
  //
    v.clear();

    HGeantMdc* hit;
    if(firstMdcHit > -1) {
	resetMdcIter();
	while((hit = (HGeantMdc*) nextMdcHit()) != NULL){
	    v.push_back(hit);
	}
	resetMdcIter();
    }
    return v.size();
}

Int_t HGeantKine::getTofHits(vector<HGeantTof*>& v) {
  // Return  Tof hits made by present track.
  //
    v.clear();

    HGeantTof* hit;
    if(firstTofHit > -1) {
	resetTofIter();
	while((hit = (HGeantTof*) nextTofHit()) != NULL){
	    v.push_back(hit);
	}
	resetTofIter();
    }
    return v.size();
}

Int_t HGeantKine::getRpcHits(vector<HGeantRpc*>& v) {
  // Return  Rpc hits made by present track.
  //
    v.clear();

    HGeantRpc* hit;
    if(firstRpcHit > -1) {
	resetRpcIter();
	while((hit = (HGeantRpc*) nextRpcHit()) != NULL){
	    v.push_back(hit);
	}
	resetRpcIter();
    }
    return v.size();
}

Int_t HGeantKine::getWallHits(vector<HGeantWall*>& v) {
  // Return  Wall hits made by present track.
  //
    v.clear();

    HGeantWall* hit;
    if(firstWallHit > -1) {
	resetWallIter();
	while((hit = (HGeantWall*) nextWallHit()) != NULL){
	    v.push_back(hit);
	}
	resetWallIter();
    }
    return v.size();
}

Int_t HGeantKine::getEmcHits(vector<HGeantEmc*>& v) {
  // Return  Emc hits made by present track.
  //
    v.clear();

    HGeantEmc* hit;
    if(firstEmcHit > -1) {
	resetEmcIter();
	while((hit = (HGeantEmc*) nextEmcHit()) != NULL){
	    v.push_back(hit);
	}
	resetEmcIter();
    }
    return v.size();
}

Int_t HGeantKine::getStartHits(vector<HGeantStart*>& v) {
  // Return  Start hits made by present track.
  //
    v.clear();

    HGeantStart* hit;
    if(firstStartHit > -1) {
	resetStartIter();
	while((hit = (HGeantStart*) nextStartHit()) != NULL){
	    v.push_back(hit);
	}
	resetStartIter();
    }
    return v.size();
}


Bool_t HGeantKine::isInAcceptance(Int_t m0,Int_t m1,Int_t m2,Int_t m3,Int_t sys0,Int_t sys1)
{
    // return kTRUE if the particle has hit at least m0-m3 (default 4
    // out of 7 per module) layers in MDCI-MDCIV and Meta (RPC or Shower >= sys0, Tof>=sys1)

    Int_t nMdc0   = getNMdcHits(0);
    Int_t nMdc1   = getNMdcHits(1);
    Int_t nMdc2   = getNMdcHits(2);
    Int_t nMdc3   = getNMdcHits(3);
    Int_t nShower = getNShowerHits();
    Int_t nEmc    = getNEmcHits();
    Int_t nRpc    = getNRpcHits();
    Int_t nTof    = getNTofHits();


    if(nMdc0 >= m0 && nMdc1 >= m1  &&
       nMdc2 >= m2 && nMdc3 >= m3  &&
       (nRpc >= sys0 || nShower >= sys0 || nEmc >= sys0 || nTof >= sys1) ) return kTRUE;
    else                                                                   return kFALSE;
}

Bool_t HGeantKine::isInAcceptanceDecay(Int_t m0,Int_t m1,Int_t m2,Int_t m3,Int_t sys0,Int_t sys1)
{
    // return kTRUE if the particle (and his decayed charged daughter it it exist) has hit at
    // least m0-m3 (default 4 out of 7 per module) layers in MDCI-MDCIV and Meta (RPC or Shower >= sys0, Tof>=sys1)

    Int_t cm0, cm1,cm2,cm3,csys0,csys1;

    getNHits(cm0,cm1,cm2,cm3,csys0,csys1);

    if(cm0 >= m0 && cm1 >= m1  &&
       cm2 >= m2 && cm3 >= m3  &&
       (csys0 >= sys0 || csys1 >= sys1) ) return kTRUE;

    HGeantKine* d = HGeantKine::getChargedDecayDaughter(this);

    if(d){
	Int_t c1m0, c1m1,c1m2,c1m3,c1sys0,c1sys1;

	d->getNHits(c1m0,c1m1,c1m2,c1m3,c1sys0,c1sys1);

	cm0   += c1m0;
	cm1   += c1m1;
	cm2   += c1m2;
	cm3   += c1m3;
        csys0 += c1sys0;
        csys1 += c1sys1;


    }

    if(cm0 >= m0 && cm1 >= m1  &&
       cm2 >= m2 && cm3 >= m3  &&
       (csys0 >= sys0 || csys1 >= sys1) ) return kTRUE;

    return kFALSE;
}

Bool_t HGeantKine::isInAcceptanceBit(Int_t m0,Int_t m1,Int_t m2,Int_t m3,Int_t sys0,Int_t sys1)
{
    // return kTRUE if the particle has hit at least m0-m3 (default 4
    // out of 7 per module) layers in MDCI-MDCIV and Meta sys0/1
    // this function works on prefilled acceptance bits and needs no
    // additional categories. If sys 0/1 should be checked exclusive
    // the other system threshold has to larger 1

    Int_t nMdc0   = getNLayerMod(0);
    Int_t nMdc1   = getNLayerMod(1);
    Int_t nMdc2   = getNLayerMod(2);
    Int_t nMdc3   = getNLayerMod(3);
    Int_t nSys0   = getSys(0);
    Int_t nSys1   = getSys(1);


    if(nMdc0 >= m0 && nMdc1 >= m1  &&
       nMdc2 >= m2 && nMdc3 >= m3  &&
       (nSys0 >= sys0 || nSys1 >= sys1) ) return kTRUE;
    else                                  return kFALSE;
}

Bool_t HGeantKine::isInAcceptanceDecayBit(Int_t m0,Int_t m1,Int_t m2,Int_t m3,Int_t sys0,Int_t sys1)
{
    // return kTRUE if the particle (and his decayed charged daughter it it exist) has hit at
    // least m0-m3 (default 4 out of 7 per module) layers in MDCI-MDCIV and Meta (RPC or
    // Shower >= sys0, Tof>=sys1)
    // this function works on prefilled acceptance bits and needs no
    // additional categories. If sys 0/1 should be checked exclusive
    // the other system threshold has to larger 1

    Int_t cm0, cm1,cm2,cm3,csys0,csys1;

    getNHitsBit(cm0,cm1,cm2,cm3,csys0,csys1);

    if(cm0 >= m0 && cm1 >= m1  &&
       cm2 >= m2 && cm3 >= m3  &&
       (csys0 >= sys0 || csys1 >= sys1) ) return kTRUE;


    HGeantKine* d = HGeantKine::getChargedDecayDaughter(this);

    if(d){
	Int_t c1m0, c1m1,c1m2,c1m3,c1sys0,c1sys1;

	d->getNHitsBit(c1m0,c1m1,c1m2,c1m3,c1sys0,c1sys1);

	cm0   += c1m0;
	cm1   += c1m1;
	cm2   += c1m2;
	cm3   += c1m3;
        csys0 += c1sys0;
        csys1 += c1sys1;

        if(csys0>1) csys0=1;
        if(csys1>1) csys1=1;

    }

    if(cm0 >= m0 && cm1 >= m1  &&
       cm2 >= m2 && cm3 >= m3  &&
       (csys0 >= sys0 || csys1 >= sys1) ) return kTRUE;

    return kFALSE;
}

void HGeantKine::fillAcceptanceBit() {
    //
    if(firstMdcHit > -1)
    {
	unsetAllLayers();
	HGeantMdc* hit = NULL;
	resetMdcIter();
	while((hit = (HGeantMdc*) nextMdcHit()) != NULL)
	{
	    Int_t lay = hit->getLayer();
            if(lay>5) continue;
	    Int_t mod = hit->getModule();
	    Int_t io  = mod < 2 ? 0:1;
	    Int_t l   = mod < 2 ? mod*6+lay : (mod-2)*6+lay;
	    setLayer(io,l);
	}
	resetMdcIter();
    }
    if(firstTofHit > -1)                      setSys(1);
    if(firstRpcHit!=-1 || firstShowerHit!=-1 || firstEmcHit!=-1) setSys(0);
    setAcceptanceFilled();
}

void  HGeantKine::getNHits(Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1)
{
    // returns the number of hits in MDC modules 0-3,
    // sys0 (shower+rpc) and sys1 (tof) 
    m0    = getNMdcHits(0);
    m1    = getNMdcHits(1);
    m2    = getNMdcHits(2);
    m3    = getNMdcHits(3);
    sys0  = getNShowerHits();
    sys0 += getNEmcHits();
    sys0 += getNRpcHits();
    sys1  = getNTofHits();
}

void  HGeantKine::getNHitsDecay(Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1)
{
    // returns the number of hits in MDC modules 0-3,
    // sys0 (shower+rpc) and sys1 (tof) of the track
    // (and his decayed charged daughter it it exist)
    m0    = getNMdcHits(0);
    m1    = getNMdcHits(1);
    m2    = getNMdcHits(2);
    m3    = getNMdcHits(3);
    sys0  = getNShowerHits();
    sys0 += getNEmcHits();
    sys0 += getNRpcHits();
    sys1  = getNTofHits();


    HGeantKine* d = HGeantKine::getChargedDecayDaughter(this);

    if(d){

	m0    += d->getNMdcHits(0);
	m1    += d->getNMdcHits(1);
	m2    += d->getNMdcHits(2);
	m3    += d->getNMdcHits(3);
	sys0  += d->getNShowerHits();
	sys0  += d->getNEmcHits();
	sys0  += d->getNRpcHits();
	sys1  += d->getNTofHits();
    }

}

void  HGeantKine::getNHitsBit(Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1)
{
    // returns the number of hits in MDC modules 0-3,
    // sys0 (shower+rpc) and sys1 (tof) of the track
    // number of hits for sys 0/1 can be only 0 or 1
    // this function works on prefilled acceptance bits and needs no
    // additional categories.
    m0    = getNLayerMod(0);
    m1    = getNLayerMod(1);
    m2    = getNLayerMod(2);
    m3    = getNLayerMod(3);
    sys0  = getSys(0);
    sys1  = getSys(1);


}

void  HGeantKine::getNHitsDecayBit(Int_t& m0,Int_t& m1,Int_t& m2,Int_t& m3,Int_t& sys0,Int_t& sys1)
{
    // returns the number of hits in MDC modules 0-3,
    // sys0 (shower+emc+rpc) and sys1 (tof) of the track
    // (and his decayed charged daughter it it exist).
    // number of hits for sys 0/1 can be only 0 or 1
    // this function works on prefilled acceptance bits and needs no
    // additional categories.
    m0    = getNLayerMod(0);
    m1    = getNLayerMod(1);
    m2    = getNLayerMod(2);
    m3    = getNLayerMod(3);
    sys0  = getSys(0);
    sys1  = getSys(1);


    HGeantKine* d = HGeantKine::getChargedDecayDaughter(this);

    if(d){

	m0    += getNLayerMod(0);
	m1    += getNLayerMod(1);
	m2    += getNLayerMod(2);
	m3    += getNLayerMod(3);
	sys0  += getSys(0);
	sys1  += getSys(1);

	if(sys0>1)sys0=1;
	if(sys1>1)sys1=1;

    }
}

Int_t HGeantKine::getSystem(void)
{
  // Return system crossed by the present track
  //  -1: no contact:
  //   0: RPC
  //   1: TOF
  //   2: RPC and TOF

   Int_t n = -1;
   Int_t n0 = 0;
   Int_t n1 = 0;
   if(firstTofHit > -1) n1=1;
   if(firstRpcHit!=-1 || firstShowerHit!=-1 || firstEmcHit!=-1) n0=1;


   if ( n0 > 0 && n1 <= 0) n = 0; // hits in RPC, but no hits in TOF --> RPC
   if ( n1 > 0 && n0 <= 0) n = 1; // hits in TOF, but no hits in RPC --> TOF
   if ( n0 > 0 && n1 >  0) n = 2; // hits in TOF and hits in RPC --> BOTH
   return n;
}

UInt_t HGeantKine::getMdcSectorBitArray(void) 
{
  // Returns bit array containing sectors crossed by current track
  //   bit 0: sector 0
  //   bit 1: sector 1
  //   bit 2: sector 2
  //   bit 3: sector 3
  //   bit 4: sector 4
  //   bit 5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5
  //  in hex:  0x2a
  //  decimal: 34

  UInt_t n=0;
  if(firstMdcHit > -1)
    {
      HGeantMdc* hit = NULL;
      resetMdcIter();
      while((hit = (HGeantMdc*) nextMdcHit()) != NULL)
	{
	  n|=(0x1<<hit->getSector());
	}
      resetMdcIter();
      return n&0x3f;
      
    }
  return n&0x3f;
}

UInt_t HGeantKine::getMdcSectorDecimalArray(void) 
{
  // Returns decimal array containing sectors crossed by current track
  //   digit 10^0: sector 0
  //   digit 10^1: sector 1
  //   digit 10^2: sector 2
  //   digit 10^3: sector 3
  //   digit 10^4: sector 4
  //   digit 10^5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5

  UInt_t bit = getMdcSectorBitArray() && 0x3f;
  UInt_t n=0;
  
  for (Int_t p=0; p<6; p++)
    {
      if ((bit>>p)&0x1)
      {
	n+=(UInt_t) pow(10.,p);
      }
    }
  return n;
}

UInt_t HGeantKine::getShowerSectorBitArray(void) 
{
  // Returns bit array containing sectors crossed by current track
  //   bit 0: sector 0
  //   bit 1: sector 1
  //   bit 2: sector 2
  //   bit 3: sector 3
  //   bit 4: sector 4
  //   bit 5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5
  //  in hex: 0x2a
  // decimal: 34

  UInt_t n=0;
  if(firstShowerHit > -1)
    {
      HGeantShower* hit = NULL;
      resetShowerIter();
      while((hit = (HGeantShower*) nextShowerHit()) != NULL)
	{
	  n|=(0x1<<hit->getSector());
	}
      resetShowerIter();
      return n&0x3f;
      
    }
  return n&0x3f;
}

UInt_t HGeantKine::getShowerSectorDecimalArray(void) 
{
  // Returns decimal array containing sectors crossed by current track
  //   digit 10^0: sector 0
  //   digit 10^1: sector 1
  //   digit 10^2: sector 2
  //   digit 10^3: sector 3
  //   digit 10^4: sector 4
  //   digit 10^5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5

  UInt_t bit = getShowerSectorBitArray() && 0x3f;
  UInt_t n=0;
  
  for (Int_t p=0; p<6; p++)
    {
      if ((bit>>p)&0x1)
      {
	n+=(UInt_t) pow(10.,p);
      }
    }
  return n;
}

UInt_t HGeantKine::getTofSectorBitArray(void) 
{
  // Returns bit array containing sectors crossed by current track
  //   bit 0: sector 0
  //   bit 1: sector 1
  //   bit 2: sector 2
  //   bit 3: sector 3
  //   bit 4: sector 4
  //   bit 5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5
  //  in hex: 0x2a
  // decimal: 34

  UInt_t n=0;
  if(firstTofHit > -1)
    {
      HGeantTof* hit = NULL;
      resetTofIter();
      while((hit = (HGeantTof*) nextTofHit()) != NULL)
	{
	  n|=(0x1<<hit->getSector());
	}
      resetTofIter();
      return n&0x3f;
      
    }
  return n&0x3f;
}

UInt_t HGeantKine::getTofSectorDecimalArray(void) 
{
  // Returns decimal array containing sectors crossed by current track
  //   digit 10^0: sector 0
  //   digit 10^1: sector 1
  //   digit 10^2: sector 2
  //   digit 10^3: sector 3
  //   digit 10^4: sector 4
  //   digit 10^5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5

  UInt_t bit = getTofSectorBitArray() && 0x3f;
  UInt_t n=0;
  
  for (Int_t p=0; p<6; p++)
    {
      if ((bit>>p)&0x1)
      {
	n+=(UInt_t) pow(10.,p);
      }
    }
  return n;
}

UInt_t HGeantKine::getRpcSectorBitArray(void) 
{
  // Returns bit array containing sectors crossed by current track
  //   bit 0: sector 0
  //   bit 1: sector 1
  //   bit 2: sector 2
  //   bit 3: sector 3
  //   bit 4: sector 4
  //   bit 5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5
  //  in hex: 0x2a
  // decimal: 34

  UInt_t n=0;
  if(firstRpcHit > -1)
    {
      HGeantRpc* hit = NULL;
      resetRpcIter();
      while((hit = (HGeantRpc*) nextRpcHit()) != NULL)
	{
	  n|=(0x1<<hit->getSector());
	}
      resetRpcIter();
      return n&0x3f;
      
    }
  return n&0x3f;
}

UInt_t HGeantKine::getRpcSectorDecimalArray(void) 
{
  // Returns decimal array containing sectors crossed by current track
  //   digit 10^0: sector 0
  //   digit 10^1: sector 1
  //   digit 10^2: sector 2
  //   digit 10^3: sector 3
  //   digit 10^4: sector 4
  //   digit 10^5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5

  UInt_t bit = getRpcSectorBitArray() && 0x3f;
  UInt_t n=0;
  
  for (Int_t p=0; p<6; p++)
    {
      if ((bit>>p)&0x1)
      {
	n+=(UInt_t) pow(10.,p);
      }
    }
  return n;
}

UInt_t HGeantKine::getRichSectorBitArray(void) 
{
  // Returns bit array containing sectors crossed by current track
  //   bit 0: sector 0
  //   bit 1: sector 1
  //   bit 2: sector 2
  //   bit 3: sector 3
  //   bit 4: sector 4
  //   bit 5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5
  //  in hex: 0x2a
  // decimal: 34

  UInt_t n=0;
  if(firstRichHit > -1)
    {
      HGeantRichPhoton* hit = NULL;
      resetRichIter();
      while((hit = (HGeantRichPhoton*) nextRichHit()) != NULL)
	{
	  n|=(0x1<<hit->getSector());
	}
      resetRichIter();
      return n&0x3f;
    }
  return n&0x3f;
}

UInt_t HGeantKine::getRichSectorDecimalArray(void) 
{
  // Returns decimal array containing sectors crossed by current track
  //   digit 10^0: sector 0
  //   digit 10^1: sector 1
  //   digit 10^2: sector 2
  //   digit 10^3: sector 3
  //   digit 10^4: sector 4
  //   digit 10^5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5

  UInt_t bit = getRichSectorBitArray() && 0x3f;
  UInt_t n=0;
  
  for (Int_t p=0; p<6; p++)
    {
      if ((bit>>p)&0x1)
      {
	n+=(UInt_t) pow(10.,p);
      }
    }
  return n;
}

UInt_t HGeantKine::getSectorBitArray(void)
{
  // Returns bit array containing sectors crossed by current track
  // as an or of all detectors (RICH, TOF, SHOWER, MDC)
  //   bit 0: sector 0
  //   bit 1: sector 1
  //   bit 2: sector 2
  //   bit 3: sector 3
  //   bit 4: sector 4
  //   bit 5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5
  //  in hex:  0x2a
  //  decimal: 34

  UInt_t n=0;
  n|=getRichSectorBitArray();
  n|=getTofSectorBitArray();
  n|=getRpcSectorBitArray();
  n|=getMdcSectorBitArray();
  n|=getShowerSectorBitArray();
  return n&0x3f;
}

UInt_t HGeantKine::getSectorDecimalArray(void)
{
  // Returns decimal array containing sectors crossed by current track
  // as an or of all detectors (RICH, TOF, SHOWER, MDC)
  //   digit 10^0: sector 0
  //   digit 10^1: sector 1
  //   digit 10^2: sector 2
  //   digit 10^3: sector 3
  //   digit 10^4: sector 4
  //   digit 10^5: sector 5
  //
  // i.e. 101010 -> Track crossed sector 1,3 and 5.

  UInt_t bit = getSectorBitArray() && 0x3f;
  UInt_t n=0;
  
  for (Int_t p=0; p<6; p++)
    {
      if ((bit>>p)&0x1)
      {
	n+=(UInt_t) pow(10.,p);
      }
    }
  return n;
}

Int_t HGeantKine::getSectorFromBitArray(void)
{
  // Returns sector if only one sector is crossed by current track
  // otherwise it returns a negative value
  // (-7 is returned if there is no hit)
  // where its absolute value gives the number of sectors crossed.
  // See getSectorBitArray(), getMdcBitArray(), getTofBitArray(), getRpcBitArray(),
  // getRichBitArray(), getShowerBitArray() for more details.

  UInt_t n=getSectorBitArray();
  if (n==0) return -7;
  Int_t sector=-1;
  Int_t ctr=0;
  for (Int_t p=0; p<6; p++)
    {
      if ((n>>p)&0x1) 
	{
	  if (ctr==0) 
	    {
	      sector = p;
	      ctr++;
	    }
	  else ctr++;
	}
    }
    return (ctr>1)?-ctr:sector;
}

void HGeantKine::Streamer(TBuffer &R__b)
{
   // Stream an object of class HGeantKine.

   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(); if (R__v) { }
      TObject::Streamer(R__b);
      R__b >> trackNumber;
      R__b >> parentTrack;
      R__b >> particleID;
      R__b >> mediumNumber;
      R__b >> creationMechanism;
      R__b >> xVertex;
      R__b >> yVertex;
      R__b >> zVertex;
      R__b >> xMom;
      R__b >> yMom;
      R__b >> zMom;
      R__b >> generatorInfo;
      if (R__v > 4) {
         R__b >> generatorInfo1;
         R__b >> generatorInfo2;
      } else {
         generatorInfo1 = 0.;
         generatorInfo2 = 0.;
      }
      R__b >> generatorWeight;

      firstRichHit   = -1;
      firstMdcHit    = -1;
      firstTofHit    = -1;
      firstRpcHit    = -1;
      firstShowerHit = -1;
      firstWallHit   = -1;
      firstEmcHit    = -1;
      firstStartHit  = -1;
 
      if (R__v > 1) {
         R__b >> firstRichHit;
         R__b >> firstMdcHit;
         R__b >> firstTofHit;
	 if (R__v > 5) { // rpc added in vers 6
	     R__b >> firstRpcHit;
	 }
         R__b >> firstShowerHit;
	 if (R__v > 7) { // wall added in vers 8
	     R__b >> firstWallHit;
	 }
	 if (R__v > 8) { // emc added in vers 9
	     R__b >> firstEmcHit;
	 }
	 if (R__v > 9) { // START added in vers 10
	     R__b >> firstStartHit;
	 }
      }
      active = kFALSE;

      if (R__v > 2) {
	 R__b >> active;

	 if(R__v > 5)
	 {   // rpc added in vers 6
	     if (firstRichHit  > -1 ||
		 firstMdcHit   > -1 ||
		 firstTofHit   > -1 ||
		 firstRpcHit   > -1 ||
		 firstShowerHit>-1 ) active = kTRUE;  // track made a hit
	     if(R__v > 7)
	     {   // wall added in vers 8
		 if (firstRichHit  > -1 ||
		     firstMdcHit   > -1 ||
		     firstTofHit   > -1 ||
		     firstRpcHit   > -1 ||
		     firstShowerHit> -1 ||
		     firstWallHit  > -1  ) active = kTRUE;  // track made a hit
		 if(R__v > 8)
	         {   // emc added in vers 9
		     if (firstRichHit  > -1 ||
		         firstMdcHit   > -1 ||
		         firstTofHit   > -1 ||
		         firstRpcHit   > -1 ||
		         firstShowerHit> -1 ||
		         firstWallHit  > -1 ||
		         firstEmcHit   > -1  ) active = kTRUE;  // track made a hit
		     if(R__v > 9)
	             {   // emc added in vers 10
		         if (firstRichHit  > -1 ||
    		             firstMdcHit   > -1 ||
		             firstTofHit   > -1 ||
		             firstRpcHit   > -1 ||
		             firstShowerHit> -1 ||
		             firstWallHit  > -1 ||
		             firstEmcHit   > -1 ||
                             firstStartHit   > -1 ) active = kTRUE;  // track made a hit
    	             }    
    	         }    
	     }
	 } else {
	     if (firstRichHit  > -1 ||
		 firstMdcHit   > -1 ||
		 firstTofHit   > -1 ||
		 firstShowerHit> -1 ) active = kTRUE;  // track made a hit
	 }

      } else { // very old ....
	  if (parentTrack==0) active = kTRUE;       // primary track
	  else                active = kFALSE;
      }

      if (R__v > 3) {
	  R__b >> suppressed;
      } else {
	  suppressed = kFALSE;
      }
      if (R__v > 6) {
	  R__b >> userVal;
      } else {
	  userVal = -1;
      }
      if (R__v > 10) {
	  R__b >> acceptance;
      } else {
	  acceptance = 0;
      }

   } else {
      R__b.WriteVersion(HGeantKine::IsA());
      TObject::Streamer(R__b);
      R__b << trackNumber;
      R__b << parentTrack;
      R__b << particleID;
      R__b << mediumNumber;
      R__b << creationMechanism;
      R__b << xVertex;
      R__b << yVertex;
      R__b << zVertex;
      R__b << xMom;
      R__b << yMom;
      R__b << zMom;
      R__b << generatorInfo;
      R__b << generatorInfo1;
      R__b << generatorInfo2;
      R__b << generatorWeight;
      R__b << firstRichHit;
      R__b << firstMdcHit;
      R__b << firstTofHit;
      R__b << firstRpcHit;
      R__b << firstShowerHit;
      R__b << firstWallHit;
      R__b << firstEmcHit;
      R__b << firstStartHit;
      R__b << active;
      R__b << suppressed;
      R__b << userVal;
      R__b << acceptance;
   }
} 


Bool_t HGeantKine::setChainActive(Int_t track, Bool_t flag, HLinearCategory* cat)
{
  // Set track and all its ancestors up to primary track active. 
  //
  HLinearCategory* catKine;
  if (track < 1) return kFALSE;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return kFALSE;
  HGeantKine* pKine = (HGeantKine*)catKine->getObject(track-1);
  if (pKine == NULL) return kFALSE;

  do {   // iterate over all ancestors until primary is found
    pKine->setActive(flag);
    track = pKine->getTrack();
  } while ((pKine=getParent(track,catKine)) != NULL);
  
  return kTRUE;
}

Bool_t HGeantKine::setAllDescendentsActive(Int_t trackIn, Bool_t flag, HLinearCategory* cat)
{
  // Set track and all of its descendents active.
  //
  HLinearCategory* catKine;
  if (trackIn < 1) return kFALSE;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return kFALSE;
  HGeantKine* pKine = (HGeantKine*)catKine->getObject(trackIn-1);

  Int_t nEntries=catKine->getEntries();
  for (Int_t i=0; i<nEntries; i++) {
    pKine = (HGeantKine*)catKine->getObject(i);
    if (pKine->hasAncestor(trackIn,catKine)) pKine->setActive(flag);
  }
  
  return kTRUE;
}

Bool_t HGeantKine::setAllDescendentsSuppressed(Int_t trackIn, Bool_t flag, HLinearCategory* cat)
{
  // Set track and all of its descendents suppressed. 
  //
  HLinearCategory* catKine;
  if (trackIn < 1) return kFALSE;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return kFALSE;
  HGeantKine* pKine = (HGeantKine*)catKine->getObject(trackIn-1);
  if (pKine == NULL) return kFALSE;

  Int_t nEntries=catKine->getEntries();
  for (Int_t i=0; i<nEntries; i++) {
    pKine = (HGeantKine*)catKine->getObject(i);
    if (pKine->hasAncestor(trackIn,catKine)) {
      pKine->setSuppressed(flag);
      if (flag==kTRUE) pKine->setActive(kFALSE);
    }
  }
  
  return kTRUE;
}

Bool_t HGeantKine::suppressTracks(Int_t id, Float_t acceptedFraction, HLinearCategory* cat) {
  // Suppress randomly a certain fraction of tracks of particle kind id, as well as all of its
  // descendants.   This can be used to correct (lower!) the yield of a certain particle species
  // AFTER the event generator has been run.
  //
  if (id<0 || acceptedFraction < 0. || acceptedFraction > 1.) return kFALSE;
  HLinearCategory* catKine;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  Int_t track=1;
  HGeantKine* pKine;
  pKine = (HGeantKine*)catKine->getObject(track-1);
  if (pKine == NULL) return kFALSE;
  while (pKine && pKine->isPrimary()) { // iterate over primaries and throw dice to
    if ((pKine->getID()) == id) {   // decide if they are to be suppressed or not
      if (gRandom->Rndm() > acceptedFraction)
        setAllDescendentsSuppressed(track, kTRUE, catKine);  // propagate the verdict to all descendents
    }
    track++;
    pKine = (HGeantKine*)catKine->getObject(track-1);
  }
  return kTRUE;
}

HGeantKine* HGeantKine::getParent(Int_t track, HLinearCategory* cat)
{ 
  // Return pointer to parent object, return NULL if none.
  //
  if (track < 1) return NULL;
  HLinearCategory* catKine;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return NULL;
  HGeantKine* pKine = (HGeantKine*)catKine->getObject(track-1);
  if (pKine == NULL) return NULL;
  Int_t parent = pKine->getParentTrack();
  if (parent == 0) return NULL;
  else return (HGeantKine*)catKine->getObject(parent-1);
}


HGeantKine* HGeantKine::getGrandParent(Int_t track, HLinearCategory* cat)
{ 
  // Return pointer to grandparent object, return NULL if none.
  //
  if (track < 1) return NULL;
  HLinearCategory* catKine;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return NULL;
  HGeantKine* pKine = getParent(track,catKine);
  if (pKine == NULL) return NULL;
  Int_t grandparent = pKine->getParentTrack();
  if(grandparent == 0) return NULL;
  else return (HGeantKine*)catKine->getObject(grandparent-1);
}

HGeantKine* HGeantKine::getPrimary(Int_t trackIn, HLinearCategory* cat)
{
  // Return pointer to primary ancestor of track.
  //
  if (trackIn < 1) return NULL;
  HLinearCategory* catKine;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return NULL;
  HGeantKine* pKine = (HGeantKine*)catKine->getObject(trackIn-1);
  if (pKine == NULL) return NULL;
  HGeantKine* pSave;
  Int_t track=0;

  do {   // iterate over all ancestors until primary is found
    pSave = pKine;
    track = pKine->getTrack();
  } while ((pKine=pKine->getParent(track,catKine)) != NULL);
  
  return pSave;
}

Bool_t HGeantKine::hasAncestor(Int_t trackIn, HLinearCategory* cat)
{
  // Check if current track has trackIn as ancestor (or is trackIn).
  //
  if (trackIn < 1) return kFALSE;
  HLinearCategory* catKine;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return kFALSE;
  HGeantKine* pKine = this;
  Int_t track = -1;

  do {   // iterate over all ancestors until track is found
    track = pKine->getTrack();
    if (track == trackIn) return kTRUE;
  } while ((pKine=getParent(track,catKine)) != NULL);
  
  return kFALSE;
}

HGeantKine* HGeantKine::getCommonAncestor(Int_t track1, Int_t track2, HLinearCategory* cat)
{
  // Return pointer to nearest ancestor of 2 tracks.
  // This ancestor is not necessarily a primary. 
  //
  if (track1 < 1 || track2 < 1) return NULL;
  HLinearCategory* catKine;
  if (cat != NULL) catKine = cat;
  else catKine = (HLinearCategory*)gHades->getCurrentEvent()
                                         ->getCategory(catGeantKine);
  if (catKine == NULL) return NULL;
  HGeantKine* pKine1 = (HGeantKine*)catKine->getObject(track1-1);
  if (pKine1 == NULL) return NULL;
  HGeantKine* pKine2 = (HGeantKine*)catKine->getObject(track2-1);
  if (pKine2 == NULL) return NULL;

  Int_t track=0;
  if (track1 < track2) {  // do the search along the shortest branch

    do {   // iterate until common ancestor or primary is found
      track = pKine1->getTrack();
      if (pKine2->hasAncestor(track,catKine)) return pKine1;
    } while ((pKine1=pKine1->getParent(track,catKine)) != NULL);
    return NULL;

  } else {

    do {   // iterate until common ancestor or primary is found
      track = pKine2->getTrack();
      if (pKine1->hasAncestor(track,catKine)) return pKine2;
    } while ((pKine2=pKine2->getParent(track,catKine)) != NULL);
    return NULL;
  }
}
void HGeantKine::printHistory(){

    vector <TString> list;

    Float_t x,y,z;
    Int_t parenttrack,medium,creation;
    TString tmp;
    getCreator(parenttrack,medium,creation);
    getVertex(x,y,z);

    tmp = HPhysicsConstants::pid(getID());
    tmp = Form("=>(track %5i, parent %5i,medium %3i,creation %2i at vertex %7.1f,%7.1f,%7.1f)=>",getTrack(),parenttrack,medium,creation,x,y,z) + tmp;

    list.push_back(tmp);

    if(parenttrack == 0) {
	cout<<"---------------------------------------" <<endl;
	cout<<"ID ="<<HPhysicsConstants::pid(getID())<<" track = "<<setw(5)<<getTrack()<<" , parent track = "<<getParentTrack()<<endl;
	cout<<tmp.Data()<<endl;
	cout<<"---------------------------------------" <<endl;
	return;
    }

    HGeantKine* parent = this;
    
    while ( (parent=parent->getParent(parent->getTrack()))!=0){
	parent->getCreator(parenttrack,medium,creation);
	parent->getVertex(x,y,z);
	tmp = HPhysicsConstants::pid(parent->getID());
	tmp = Form("=>(track %5i, parent %5i,medium %3i,creation %2i at vertex %7.1f,%7.1f,%7.1f)=>",parent->getTrack(),parenttrack,medium,creation,x,y,z) + tmp;
	list.push_back(tmp);
    }
    cout<<"---------------------------------------" <<endl;
    cout<<"ID ="<<HPhysicsConstants::pid(getID())<<" track = "<<setw(5)<<getTrack()<<" , parent track = "<<getParentTrack()<<endl;
    Int_t n=list.size();
    for(Int_t i=n-1;i>=0;i--){
         cout<<list.at(i).Data()<<endl;
    }
    cout<<"---------------------------------------" <<endl;

}
void HGeantKine::print()
{
    // print particle infos

    cout<<"HGeantKine::print()----------------------------------"<<endl;

    cout<<" ID       : "<<setw(5)<<particleID   <<", track     : "<<setw(5)<<trackNumber      <<", parentTrack : "<<setw(5)<<parentTrack <<endl;
    cout<<" medium   : "<<setw(5)<<mediumNumber <<", mechanism : "<<setw(5)<<creationMechanism<<endl;
    cout<<" vertex   : "<<setw(12)<<xVertex      <<",    "<<setw(12)<<yVertex       <<",     "<<setw(12)<<zVertex<<endl;
    cout<<" mom      : "<<setw(12)<<xMom         <<",    "<<setw(12)<<yMom          <<",     "<<setw(12)<<zMom          <<" total  : "<<setw(12)<<getTotalMomentum()<<endl;
    cout<<" geninfo  : "<<setw(12)<<generatorInfo<<", 1: "<<setw(12)<<generatorInfo1<<", 2 : "<<setw(12)<<generatorInfo2<<" weight : "<<setw(12)<<generatorWeight<<endl;
    cout<<" firsthit : Rich : "<<setw(5)<<firstRichHit<<", Mdc : "<<setw(5)<<firstMdcHit<<", Tof : "<<setw(5)<<firstTofHit<<" Rpc : "<<setw(5)<<firstRpcHit<<" Shower : "<<setw(5)<<firstShowerHit<<" Wall : "<<setw(5)<<firstWallHit<<endl;
}


//--------------------------------------------------------
// PLUTO helper functions

Bool_t HGeantKine::isBugInfo()
{
    // caused by GEANT bug: file input number has been written
    // to geninfo (geninfo1 and geninfo are 0) if the input did
    // not provide generator infos (fixed for HGeant2 > 3.2)

    if(generatorInfo>0&&generatorInfo<4&&generatorInfo1==0&&generatorInfo2==-1) return kTRUE;
    else return kFALSE;
}

Bool_t HGeantKine::isExternalSource()
{
    // For PLUTO generatorInfo will be
    // set to the parentPID.
    return (generatorInfo1 > 0);
}

Bool_t HGeantKine::isThermalSource()
{
    // For PLUTO  generatorInfo keeps
    // the source ID. For themal sources
    // the PID is genarated  parentID + 500
    // if generatorInfo is >= 500 and < 600
    // we assume this as thermal source.
    // For other decays as for example
    // pp->p p pi0 the source ID will be coded from
    // the outging particles ==> 141407

    return (generatorInfo >=500 && generatorInfo <600);
}

Bool_t HGeantKine::isSameExternalSource(HGeantKine* kine1,HGeantKine* kine2)
{
    // For PLUTO both particles kine1,kine2 as to come from an external source
    // and the parentPID (generatorInfo1) are equal. both particles
    // have to stem from the same parentIndex (generatorInfo2)(if
    // there are more than 1 source of the same type in the event)
    // CAUTION: For particles from a fireball without decay in PLUTO
    // parentIndex will be -1. In case of multiple particles from
    // such an source they canot be distinguished. The function will
    // retun kTRUE in this case.
    //

    if(!kine1 || !kine2) return kFALSE;
    return (kine1->isExternalSource() && kine2->isExternalSource() &&
	    kine1->getGeneratorInfo1() == kine2->getGeneratorInfo1() &&
	    kine1->getGeneratorInfo2() == kine2->getGeneratorInfo2());
}

Bool_t HGeantKine::isSameExternalSource(HGeantKine* kine1)
{
    if(!kine1) return kFALSE;
    return (kine1->isExternalSource() && isExternalSource()  &&
	    kine1->getGeneratorInfo1() == getGeneratorInfo1() &&
	    kine1->getGeneratorInfo2() == getGeneratorInfo2());
}

Int_t HGeantKine::getNLayer(UInt_t io)
{
    // i0 :  0 = inner seg , 1 = outer seg, 2 = both segs
    Int_t sum=0;
    if(io<2){
	for(UInt_t i=0;i<12;i++){
	    sum+= getLayer(io,i);
	}
    } else {
	for(UInt_t i=0;i<12;i++){
	    sum+= getLayer(0,i);
	    sum+= getLayer(1,i);
	}
    }

    return sum;
}

Int_t HGeantKine::getNLayerMod(UInt_t mod)
{
    Int_t sum=0;
    UInt_t io =0;
    if(mod>1) io =1;
    UInt_t first = 0;
    UInt_t last  = 12;
    if(mod==1||mod==3)first=6;
    if(mod==0||mod==2)last =6;

    for(UInt_t i=first;i<last;i++){
        sum+= getLayer(io,i);
    }
   return sum;
}

void HGeantKine::printLayers()
{
    TString out="";
    for(Int_t i=32;i>0;i--){
	if(i<25&&i%6==0) out+=" ";
	out+= ( (acceptance>>(i-1)) & 0x1 );
    }
    cout<<"    layers "<<out.Data()<<endl;
}

 hgeantkine.cc:1
 hgeantkine.cc:2
 hgeantkine.cc:3
 hgeantkine.cc:4
 hgeantkine.cc:5
 hgeantkine.cc:6
 hgeantkine.cc:7
 hgeantkine.cc:8
 hgeantkine.cc:9
 hgeantkine.cc:10
 hgeantkine.cc:11
 hgeantkine.cc:12
 hgeantkine.cc:13
 hgeantkine.cc:14
 hgeantkine.cc:15
 hgeantkine.cc:16
 hgeantkine.cc:17
 hgeantkine.cc:18
 hgeantkine.cc:19
 hgeantkine.cc:20
 hgeantkine.cc:21
 hgeantkine.cc:22
 hgeantkine.cc:23
 hgeantkine.cc:24
 hgeantkine.cc:25
 hgeantkine.cc:26
 hgeantkine.cc:27
 hgeantkine.cc:28
 hgeantkine.cc:29
 hgeantkine.cc:30
 hgeantkine.cc:31
 hgeantkine.cc:32
 hgeantkine.cc:33
 hgeantkine.cc:34
 hgeantkine.cc:35
 hgeantkine.cc:36
 hgeantkine.cc:37
 hgeantkine.cc:38
 hgeantkine.cc:39
 hgeantkine.cc:40
 hgeantkine.cc:41
 hgeantkine.cc:42
 hgeantkine.cc:43
 hgeantkine.cc:44
 hgeantkine.cc:45
 hgeantkine.cc:46
 hgeantkine.cc:47
 hgeantkine.cc:48
 hgeantkine.cc:49
 hgeantkine.cc:50
 hgeantkine.cc:51
 hgeantkine.cc:52
 hgeantkine.cc:53
 hgeantkine.cc:54
 hgeantkine.cc:55
 hgeantkine.cc:56
 hgeantkine.cc:57
 hgeantkine.cc:58
 hgeantkine.cc:59
 hgeantkine.cc:60
 hgeantkine.cc:61
 hgeantkine.cc:62
 hgeantkine.cc:63
 hgeantkine.cc:64
 hgeantkine.cc:65
 hgeantkine.cc:66
 hgeantkine.cc:67
 hgeantkine.cc:68
 hgeantkine.cc:69
 hgeantkine.cc:70
 hgeantkine.cc:71
 hgeantkine.cc:72
 hgeantkine.cc:73
 hgeantkine.cc:74
 hgeantkine.cc:75
 hgeantkine.cc:76
 hgeantkine.cc:77
 hgeantkine.cc:78
 hgeantkine.cc:79
 hgeantkine.cc:80
 hgeantkine.cc:81
 hgeantkine.cc:82
 hgeantkine.cc:83
 hgeantkine.cc:84
 hgeantkine.cc:85
 hgeantkine.cc:86
 hgeantkine.cc:87
 hgeantkine.cc:88
 hgeantkine.cc:89
 hgeantkine.cc:90
 hgeantkine.cc:91
 hgeantkine.cc:92
 hgeantkine.cc:93
 hgeantkine.cc:94
 hgeantkine.cc:95
 hgeantkine.cc:96
 hgeantkine.cc:97
 hgeantkine.cc:98
 hgeantkine.cc:99
 hgeantkine.cc:100
 hgeantkine.cc:101
 hgeantkine.cc:102
 hgeantkine.cc:103
 hgeantkine.cc:104
 hgeantkine.cc:105
 hgeantkine.cc:106
 hgeantkine.cc:107
 hgeantkine.cc:108
 hgeantkine.cc:109
 hgeantkine.cc:110
 hgeantkine.cc:111
 hgeantkine.cc:112
 hgeantkine.cc:113
 hgeantkine.cc:114
 hgeantkine.cc:115
 hgeantkine.cc:116
 hgeantkine.cc:117
 hgeantkine.cc:118
 hgeantkine.cc:119
 hgeantkine.cc:120
 hgeantkine.cc:121
 hgeantkine.cc:122
 hgeantkine.cc:123
 hgeantkine.cc:124
 hgeantkine.cc:125
 hgeantkine.cc:126
 hgeantkine.cc:127
 hgeantkine.cc:128
 hgeantkine.cc:129
 hgeantkine.cc:130
 hgeantkine.cc:131
 hgeantkine.cc:132
 hgeantkine.cc:133
 hgeantkine.cc:134
 hgeantkine.cc:135
 hgeantkine.cc:136
 hgeantkine.cc:137
 hgeantkine.cc:138
 hgeantkine.cc:139
 hgeantkine.cc:140
 hgeantkine.cc:141
 hgeantkine.cc:142
 hgeantkine.cc:143
 hgeantkine.cc:144
 hgeantkine.cc:145
 hgeantkine.cc:146
 hgeantkine.cc:147
 hgeantkine.cc:148
 hgeantkine.cc:149
 hgeantkine.cc:150
 hgeantkine.cc:151
 hgeantkine.cc:152
 hgeantkine.cc:153
 hgeantkine.cc:154
 hgeantkine.cc:155
 hgeantkine.cc:156
 hgeantkine.cc:157
 hgeantkine.cc:158
 hgeantkine.cc:159
 hgeantkine.cc:160
 hgeantkine.cc:161
 hgeantkine.cc:162
 hgeantkine.cc:163
 hgeantkine.cc:164
 hgeantkine.cc:165
 hgeantkine.cc:166
 hgeantkine.cc:167
 hgeantkine.cc:168
 hgeantkine.cc:169
 hgeantkine.cc:170
 hgeantkine.cc:171
 hgeantkine.cc:172
 hgeantkine.cc:173
 hgeantkine.cc:174
 hgeantkine.cc:175
 hgeantkine.cc:176
 hgeantkine.cc:177
 hgeantkine.cc:178
 hgeantkine.cc:179
 hgeantkine.cc:180
 hgeantkine.cc:181
 hgeantkine.cc:182
 hgeantkine.cc:183
 hgeantkine.cc:184
 hgeantkine.cc:185
 hgeantkine.cc:186
 hgeantkine.cc:187
 hgeantkine.cc:188
 hgeantkine.cc:189
 hgeantkine.cc:190
 hgeantkine.cc:191
 hgeantkine.cc:192
 hgeantkine.cc:193
 hgeantkine.cc:194
 hgeantkine.cc:195
 hgeantkine.cc:196
 hgeantkine.cc:197
 hgeantkine.cc:198
 hgeantkine.cc:199
 hgeantkine.cc:200
 hgeantkine.cc:201
 hgeantkine.cc:202
 hgeantkine.cc:203
 hgeantkine.cc:204
 hgeantkine.cc:205
 hgeantkine.cc:206
 hgeantkine.cc:207
 hgeantkine.cc:208
 hgeantkine.cc:209
 hgeantkine.cc:210
 hgeantkine.cc:211
 hgeantkine.cc:212
 hgeantkine.cc:213
 hgeantkine.cc:214
 hgeantkine.cc:215
 hgeantkine.cc:216
 hgeantkine.cc:217
 hgeantkine.cc:218
 hgeantkine.cc:219
 hgeantkine.cc:220
 hgeantkine.cc:221
 hgeantkine.cc:222
 hgeantkine.cc:223
 hgeantkine.cc:224
 hgeantkine.cc:225
 hgeantkine.cc:226
 hgeantkine.cc:227
 hgeantkine.cc:228
 hgeantkine.cc:229
 hgeantkine.cc:230
 hgeantkine.cc:231
 hgeantkine.cc:232
 hgeantkine.cc:233
 hgeantkine.cc:234
 hgeantkine.cc:235
 hgeantkine.cc:236
 hgeantkine.cc:237
 hgeantkine.cc:238
 hgeantkine.cc:239
 hgeantkine.cc:240
 hgeantkine.cc:241
 hgeantkine.cc:242
 hgeantkine.cc:243
 hgeantkine.cc:244
 hgeantkine.cc:245
 hgeantkine.cc:246
 hgeantkine.cc:247
 hgeantkine.cc:248
 hgeantkine.cc:249
 hgeantkine.cc:250
 hgeantkine.cc:251
 hgeantkine.cc:252
 hgeantkine.cc:253
 hgeantkine.cc:254
 hgeantkine.cc:255
 hgeantkine.cc:256
 hgeantkine.cc:257
 hgeantkine.cc:258
 hgeantkine.cc:259
 hgeantkine.cc:260
 hgeantkine.cc:261
 hgeantkine.cc:262
 hgeantkine.cc:263
 hgeantkine.cc:264
 hgeantkine.cc:265
 hgeantkine.cc:266
 hgeantkine.cc:267
 hgeantkine.cc:268
 hgeantkine.cc:269
 hgeantkine.cc:270
 hgeantkine.cc:271
 hgeantkine.cc:272
 hgeantkine.cc:273
 hgeantkine.cc:274
 hgeantkine.cc:275
 hgeantkine.cc:276
 hgeantkine.cc:277
 hgeantkine.cc:278
 hgeantkine.cc:279
 hgeantkine.cc:280
 hgeantkine.cc:281
 hgeantkine.cc:282
 hgeantkine.cc:283
 hgeantkine.cc:284
 hgeantkine.cc:285
 hgeantkine.cc:286
 hgeantkine.cc:287
 hgeantkine.cc:288
 hgeantkine.cc:289
 hgeantkine.cc:290
 hgeantkine.cc:291
 hgeantkine.cc:292
 hgeantkine.cc:293
 hgeantkine.cc:294
 hgeantkine.cc:295
 hgeantkine.cc:296
 hgeantkine.cc:297
 hgeantkine.cc:298
 hgeantkine.cc:299
 hgeantkine.cc:300
 hgeantkine.cc:301
 hgeantkine.cc:302
 hgeantkine.cc:303
 hgeantkine.cc:304
 hgeantkine.cc:305
 hgeantkine.cc:306
 hgeantkine.cc:307
 hgeantkine.cc:308
 hgeantkine.cc:309
 hgeantkine.cc:310
 hgeantkine.cc:311
 hgeantkine.cc:312
 hgeantkine.cc:313
 hgeantkine.cc:314
 hgeantkine.cc:315
 hgeantkine.cc:316
 hgeantkine.cc:317
 hgeantkine.cc:318
 hgeantkine.cc:319
 hgeantkine.cc:320
 hgeantkine.cc:321
 hgeantkine.cc:322
 hgeantkine.cc:323
 hgeantkine.cc:324
 hgeantkine.cc:325
 hgeantkine.cc:326
 hgeantkine.cc:327
 hgeantkine.cc:328
 hgeantkine.cc:329
 hgeantkine.cc:330
 hgeantkine.cc:331
 hgeantkine.cc:332
 hgeantkine.cc:333
 hgeantkine.cc:334
 hgeantkine.cc:335
 hgeantkine.cc:336
 hgeantkine.cc:337
 hgeantkine.cc:338
 hgeantkine.cc:339
 hgeantkine.cc:340
 hgeantkine.cc:341
 hgeantkine.cc:342
 hgeantkine.cc:343
 hgeantkine.cc:344
 hgeantkine.cc:345
 hgeantkine.cc:346
 hgeantkine.cc:347
 hgeantkine.cc:348
 hgeantkine.cc:349
 hgeantkine.cc:350
 hgeantkine.cc:351
 hgeantkine.cc:352
 hgeantkine.cc:353
 hgeantkine.cc:354
 hgeantkine.cc:355
 hgeantkine.cc:356
 hgeantkine.cc:357
 hgeantkine.cc:358
 hgeantkine.cc:359
 hgeantkine.cc:360
 hgeantkine.cc:361
 hgeantkine.cc:362
 hgeantkine.cc:363
 hgeantkine.cc:364
 hgeantkine.cc:365
 hgeantkine.cc:366
 hgeantkine.cc:367
 hgeantkine.cc:368
 hgeantkine.cc:369
 hgeantkine.cc:370
 hgeantkine.cc:371
 hgeantkine.cc:372
 hgeantkine.cc:373
 hgeantkine.cc:374
 hgeantkine.cc:375
 hgeantkine.cc:376
 hgeantkine.cc:377
 hgeantkine.cc:378
 hgeantkine.cc:379
 hgeantkine.cc:380
 hgeantkine.cc:381
 hgeantkine.cc:382
 hgeantkine.cc:383
 hgeantkine.cc:384
 hgeantkine.cc:385
 hgeantkine.cc:386
 hgeantkine.cc:387
 hgeantkine.cc:388
 hgeantkine.cc:389
 hgeantkine.cc:390
 hgeantkine.cc:391
 hgeantkine.cc:392
 hgeantkine.cc:393
 hgeantkine.cc:394
 hgeantkine.cc:395
 hgeantkine.cc:396
 hgeantkine.cc:397
 hgeantkine.cc:398
 hgeantkine.cc:399
 hgeantkine.cc:400
 hgeantkine.cc:401
 hgeantkine.cc:402
 hgeantkine.cc:403
 hgeantkine.cc:404
 hgeantkine.cc:405
 hgeantkine.cc:406
 hgeantkine.cc:407
 hgeantkine.cc:408
 hgeantkine.cc:409
 hgeantkine.cc:410
 hgeantkine.cc:411
 hgeantkine.cc:412
 hgeantkine.cc:413
 hgeantkine.cc:414
 hgeantkine.cc:415
 hgeantkine.cc:416
 hgeantkine.cc:417
 hgeantkine.cc:418
 hgeantkine.cc:419
 hgeantkine.cc:420
 hgeantkine.cc:421
 hgeantkine.cc:422
 hgeantkine.cc:423
 hgeantkine.cc:424
 hgeantkine.cc:425
 hgeantkine.cc:426
 hgeantkine.cc:427
 hgeantkine.cc:428
 hgeantkine.cc:429
 hgeantkine.cc:430
 hgeantkine.cc:431
 hgeantkine.cc:432
 hgeantkine.cc:433
 hgeantkine.cc:434
 hgeantkine.cc:435
 hgeantkine.cc:436
 hgeantkine.cc:437
 hgeantkine.cc:438
 hgeantkine.cc:439
 hgeantkine.cc:440
 hgeantkine.cc:441
 hgeantkine.cc:442
 hgeantkine.cc:443
 hgeantkine.cc:444
 hgeantkine.cc:445
 hgeantkine.cc:446
 hgeantkine.cc:447
 hgeantkine.cc:448
 hgeantkine.cc:449
 hgeantkine.cc:450
 hgeantkine.cc:451
 hgeantkine.cc:452
 hgeantkine.cc:453
 hgeantkine.cc:454
 hgeantkine.cc:455
 hgeantkine.cc:456
 hgeantkine.cc:457
 hgeantkine.cc:458
 hgeantkine.cc:459
 hgeantkine.cc:460
 hgeantkine.cc:461
 hgeantkine.cc:462
 hgeantkine.cc:463
 hgeantkine.cc:464
 hgeantkine.cc:465
 hgeantkine.cc:466
 hgeantkine.cc:467
 hgeantkine.cc:468
 hgeantkine.cc:469
 hgeantkine.cc:470
 hgeantkine.cc:471
 hgeantkine.cc:472
 hgeantkine.cc:473
 hgeantkine.cc:474
 hgeantkine.cc:475
 hgeantkine.cc:476
 hgeantkine.cc:477
 hgeantkine.cc:478
 hgeantkine.cc:479
 hgeantkine.cc:480
 hgeantkine.cc:481
 hgeantkine.cc:482
 hgeantkine.cc:483
 hgeantkine.cc:484
 hgeantkine.cc:485
 hgeantkine.cc:486
 hgeantkine.cc:487
 hgeantkine.cc:488
 hgeantkine.cc:489
 hgeantkine.cc:490
 hgeantkine.cc:491
 hgeantkine.cc:492
 hgeantkine.cc:493
 hgeantkine.cc:494
 hgeantkine.cc:495
 hgeantkine.cc:496
 hgeantkine.cc:497
 hgeantkine.cc:498
 hgeantkine.cc:499
 hgeantkine.cc:500
 hgeantkine.cc:501
 hgeantkine.cc:502
 hgeantkine.cc:503
 hgeantkine.cc:504
 hgeantkine.cc:505
 hgeantkine.cc:506
 hgeantkine.cc:507
 hgeantkine.cc:508
 hgeantkine.cc:509
 hgeantkine.cc:510
 hgeantkine.cc:511
 hgeantkine.cc:512
 hgeantkine.cc:513
 hgeantkine.cc:514
 hgeantkine.cc:515
 hgeantkine.cc:516
 hgeantkine.cc:517
 hgeantkine.cc:518
 hgeantkine.cc:519
 hgeantkine.cc:520
 hgeantkine.cc:521
 hgeantkine.cc:522
 hgeantkine.cc:523
 hgeantkine.cc:524
 hgeantkine.cc:525
 hgeantkine.cc:526
 hgeantkine.cc:527
 hgeantkine.cc:528
 hgeantkine.cc:529
 hgeantkine.cc:530
 hgeantkine.cc:531
 hgeantkine.cc:532
 hgeantkine.cc:533
 hgeantkine.cc:534
 hgeantkine.cc:535
 hgeantkine.cc:536
 hgeantkine.cc:537
 hgeantkine.cc:538
 hgeantkine.cc:539
 hgeantkine.cc:540
 hgeantkine.cc:541
 hgeantkine.cc:542
 hgeantkine.cc:543
 hgeantkine.cc:544
 hgeantkine.cc:545
 hgeantkine.cc:546
 hgeantkine.cc:547
 hgeantkine.cc:548
 hgeantkine.cc:549
 hgeantkine.cc:550
 hgeantkine.cc:551
 hgeantkine.cc:552
 hgeantkine.cc:553
 hgeantkine.cc:554
 hgeantkine.cc:555
 hgeantkine.cc:556
 hgeantkine.cc:557
 hgeantkine.cc:558
 hgeantkine.cc:559
 hgeantkine.cc:560
 hgeantkine.cc:561
 hgeantkine.cc:562
 hgeantkine.cc:563
 hgeantkine.cc:564
 hgeantkine.cc:565
 hgeantkine.cc:566
 hgeantkine.cc:567
 hgeantkine.cc:568
 hgeantkine.cc:569
 hgeantkine.cc:570
 hgeantkine.cc:571
 hgeantkine.cc:572
 hgeantkine.cc:573
 hgeantkine.cc:574
 hgeantkine.cc:575
 hgeantkine.cc:576
 hgeantkine.cc:577
 hgeantkine.cc:578
 hgeantkine.cc:579
 hgeantkine.cc:580
 hgeantkine.cc:581
 hgeantkine.cc:582
 hgeantkine.cc:583
 hgeantkine.cc:584
 hgeantkine.cc:585
 hgeantkine.cc:586
 hgeantkine.cc:587
 hgeantkine.cc:588
 hgeantkine.cc:589
 hgeantkine.cc:590
 hgeantkine.cc:591
 hgeantkine.cc:592
 hgeantkine.cc:593
 hgeantkine.cc:594
 hgeantkine.cc:595
 hgeantkine.cc:596
 hgeantkine.cc:597
 hgeantkine.cc:598
 hgeantkine.cc:599
 hgeantkine.cc:600
 hgeantkine.cc:601
 hgeantkine.cc:602
 hgeantkine.cc:603
 hgeantkine.cc:604
 hgeantkine.cc:605
 hgeantkine.cc:606
 hgeantkine.cc:607
 hgeantkine.cc:608
 hgeantkine.cc:609
 hgeantkine.cc:610
 hgeantkine.cc:611
 hgeantkine.cc:612
 hgeantkine.cc:613
 hgeantkine.cc:614
 hgeantkine.cc:615
 hgeantkine.cc:616
 hgeantkine.cc:617
 hgeantkine.cc:618
 hgeantkine.cc:619
 hgeantkine.cc:620
 hgeantkine.cc:621
 hgeantkine.cc:622
 hgeantkine.cc:623
 hgeantkine.cc:624
 hgeantkine.cc:625
 hgeantkine.cc:626
 hgeantkine.cc:627
 hgeantkine.cc:628
 hgeantkine.cc:629
 hgeantkine.cc:630
 hgeantkine.cc:631
 hgeantkine.cc:632
 hgeantkine.cc:633
 hgeantkine.cc:634
 hgeantkine.cc:635
 hgeantkine.cc:636
 hgeantkine.cc:637
 hgeantkine.cc:638
 hgeantkine.cc:639
 hgeantkine.cc:640
 hgeantkine.cc:641
 hgeantkine.cc:642
 hgeantkine.cc:643
 hgeantkine.cc:644
 hgeantkine.cc:645
 hgeantkine.cc:646
 hgeantkine.cc:647
 hgeantkine.cc:648
 hgeantkine.cc:649
 hgeantkine.cc:650
 hgeantkine.cc:651
 hgeantkine.cc:652
 hgeantkine.cc:653
 hgeantkine.cc:654
 hgeantkine.cc:655
 hgeantkine.cc:656
 hgeantkine.cc:657
 hgeantkine.cc:658
 hgeantkine.cc:659
 hgeantkine.cc:660
 hgeantkine.cc:661
 hgeantkine.cc:662
 hgeantkine.cc:663
 hgeantkine.cc:664
 hgeantkine.cc:665
 hgeantkine.cc:666
 hgeantkine.cc:667
 hgeantkine.cc:668
 hgeantkine.cc:669
 hgeantkine.cc:670
 hgeantkine.cc:671
 hgeantkine.cc:672
 hgeantkine.cc:673
 hgeantkine.cc:674
 hgeantkine.cc:675
 hgeantkine.cc:676
 hgeantkine.cc:677
 hgeantkine.cc:678
 hgeantkine.cc:679
 hgeantkine.cc:680
 hgeantkine.cc:681
 hgeantkine.cc:682
 hgeantkine.cc:683
 hgeantkine.cc:684
 hgeantkine.cc:685
 hgeantkine.cc:686
 hgeantkine.cc:687
 hgeantkine.cc:688
 hgeantkine.cc:689
 hgeantkine.cc:690
 hgeantkine.cc:691
 hgeantkine.cc:692
 hgeantkine.cc:693
 hgeantkine.cc:694
 hgeantkine.cc:695
 hgeantkine.cc:696
 hgeantkine.cc:697
 hgeantkine.cc:698
 hgeantkine.cc:699
 hgeantkine.cc:700
 hgeantkine.cc:701
 hgeantkine.cc:702
 hgeantkine.cc:703
 hgeantkine.cc:704
 hgeantkine.cc:705
 hgeantkine.cc:706
 hgeantkine.cc:707
 hgeantkine.cc:708
 hgeantkine.cc:709
 hgeantkine.cc:710
 hgeantkine.cc:711
 hgeantkine.cc:712
 hgeantkine.cc:713
 hgeantkine.cc:714
 hgeantkine.cc:715
 hgeantkine.cc:716
 hgeantkine.cc:717
 hgeantkine.cc:718
 hgeantkine.cc:719
 hgeantkine.cc:720
 hgeantkine.cc:721
 hgeantkine.cc:722
 hgeantkine.cc:723
 hgeantkine.cc:724
 hgeantkine.cc:725
 hgeantkine.cc:726
 hgeantkine.cc:727
 hgeantkine.cc:728
 hgeantkine.cc:729
 hgeantkine.cc:730
 hgeantkine.cc:731
 hgeantkine.cc:732
 hgeantkine.cc:733
 hgeantkine.cc:734
 hgeantkine.cc:735
 hgeantkine.cc:736
 hgeantkine.cc:737
 hgeantkine.cc:738
 hgeantkine.cc:739
 hgeantkine.cc:740
 hgeantkine.cc:741
 hgeantkine.cc:742
 hgeantkine.cc:743
 hgeantkine.cc:744
 hgeantkine.cc:745
 hgeantkine.cc:746
 hgeantkine.cc:747
 hgeantkine.cc:748
 hgeantkine.cc:749
 hgeantkine.cc:750
 hgeantkine.cc:751
 hgeantkine.cc:752
 hgeantkine.cc:753
 hgeantkine.cc:754
 hgeantkine.cc:755
 hgeantkine.cc:756
 hgeantkine.cc:757
 hgeantkine.cc:758
 hgeantkine.cc:759
 hgeantkine.cc:760
 hgeantkine.cc:761
 hgeantkine.cc:762
 hgeantkine.cc:763
 hgeantkine.cc:764
 hgeantkine.cc:765
 hgeantkine.cc:766
 hgeantkine.cc:767
 hgeantkine.cc:768
 hgeantkine.cc:769
 hgeantkine.cc:770
 hgeantkine.cc:771
 hgeantkine.cc:772
 hgeantkine.cc:773
 hgeantkine.cc:774
 hgeantkine.cc:775
 hgeantkine.cc:776
 hgeantkine.cc:777
 hgeantkine.cc:778
 hgeantkine.cc:779
 hgeantkine.cc:780
 hgeantkine.cc:781
 hgeantkine.cc:782
 hgeantkine.cc:783
 hgeantkine.cc:784
 hgeantkine.cc:785
 hgeantkine.cc:786
 hgeantkine.cc:787
 hgeantkine.cc:788
 hgeantkine.cc:789
 hgeantkine.cc:790
 hgeantkine.cc:791
 hgeantkine.cc:792
 hgeantkine.cc:793
 hgeantkine.cc:794
 hgeantkine.cc:795
 hgeantkine.cc:796
 hgeantkine.cc:797
 hgeantkine.cc:798
 hgeantkine.cc:799
 hgeantkine.cc:800
 hgeantkine.cc:801
 hgeantkine.cc:802
 hgeantkine.cc:803
 hgeantkine.cc:804
 hgeantkine.cc:805
 hgeantkine.cc:806
 hgeantkine.cc:807
 hgeantkine.cc:808
 hgeantkine.cc:809
 hgeantkine.cc:810
 hgeantkine.cc:811
 hgeantkine.cc:812
 hgeantkine.cc:813
 hgeantkine.cc:814
 hgeantkine.cc:815
 hgeantkine.cc:816
 hgeantkine.cc:817
 hgeantkine.cc:818
 hgeantkine.cc:819
 hgeantkine.cc:820
 hgeantkine.cc:821
 hgeantkine.cc:822
 hgeantkine.cc:823
 hgeantkine.cc:824
 hgeantkine.cc:825
 hgeantkine.cc:826
 hgeantkine.cc:827
 hgeantkine.cc:828
 hgeantkine.cc:829
 hgeantkine.cc:830
 hgeantkine.cc:831
 hgeantkine.cc:832
 hgeantkine.cc:833
 hgeantkine.cc:834
 hgeantkine.cc:835
 hgeantkine.cc:836
 hgeantkine.cc:837
 hgeantkine.cc:838
 hgeantkine.cc:839
 hgeantkine.cc:840
 hgeantkine.cc:841
 hgeantkine.cc:842
 hgeantkine.cc:843
 hgeantkine.cc:844
 hgeantkine.cc:845
 hgeantkine.cc:846
 hgeantkine.cc:847
 hgeantkine.cc:848
 hgeantkine.cc:849
 hgeantkine.cc:850
 hgeantkine.cc:851
 hgeantkine.cc:852
 hgeantkine.cc:853
 hgeantkine.cc:854
 hgeantkine.cc:855
 hgeantkine.cc:856
 hgeantkine.cc:857
 hgeantkine.cc:858
 hgeantkine.cc:859
 hgeantkine.cc:860
 hgeantkine.cc:861
 hgeantkine.cc:862
 hgeantkine.cc:863
 hgeantkine.cc:864
 hgeantkine.cc:865
 hgeantkine.cc:866
 hgeantkine.cc:867
 hgeantkine.cc:868
 hgeantkine.cc:869
 hgeantkine.cc:870
 hgeantkine.cc:871
 hgeantkine.cc:872
 hgeantkine.cc:873
 hgeantkine.cc:874
 hgeantkine.cc:875
 hgeantkine.cc:876
 hgeantkine.cc:877
 hgeantkine.cc:878
 hgeantkine.cc:879
 hgeantkine.cc:880
 hgeantkine.cc:881
 hgeantkine.cc:882
 hgeantkine.cc:883
 hgeantkine.cc:884
 hgeantkine.cc:885
 hgeantkine.cc:886
 hgeantkine.cc:887
 hgeantkine.cc:888
 hgeantkine.cc:889
 hgeantkine.cc:890
 hgeantkine.cc:891
 hgeantkine.cc:892
 hgeantkine.cc:893
 hgeantkine.cc:894
 hgeantkine.cc:895
 hgeantkine.cc:896
 hgeantkine.cc:897
 hgeantkine.cc:898
 hgeantkine.cc:899
 hgeantkine.cc:900
 hgeantkine.cc:901
 hgeantkine.cc:902
 hgeantkine.cc:903
 hgeantkine.cc:904
 hgeantkine.cc:905
 hgeantkine.cc:906
 hgeantkine.cc:907
 hgeantkine.cc:908
 hgeantkine.cc:909
 hgeantkine.cc:910
 hgeantkine.cc:911
 hgeantkine.cc:912
 hgeantkine.cc:913
 hgeantkine.cc:914
 hgeantkine.cc:915
 hgeantkine.cc:916
 hgeantkine.cc:917
 hgeantkine.cc:918
 hgeantkine.cc:919
 hgeantkine.cc:920
 hgeantkine.cc:921
 hgeantkine.cc:922
 hgeantkine.cc:923
 hgeantkine.cc:924
 hgeantkine.cc:925
 hgeantkine.cc:926
 hgeantkine.cc:927
 hgeantkine.cc:928
 hgeantkine.cc:929
 hgeantkine.cc:930
 hgeantkine.cc:931
 hgeantkine.cc:932
 hgeantkine.cc:933
 hgeantkine.cc:934
 hgeantkine.cc:935
 hgeantkine.cc:936
 hgeantkine.cc:937
 hgeantkine.cc:938
 hgeantkine.cc:939
 hgeantkine.cc:940
 hgeantkine.cc:941
 hgeantkine.cc:942
 hgeantkine.cc:943
 hgeantkine.cc:944
 hgeantkine.cc:945
 hgeantkine.cc:946
 hgeantkine.cc:947
 hgeantkine.cc:948
 hgeantkine.cc:949
 hgeantkine.cc:950
 hgeantkine.cc:951
 hgeantkine.cc:952
 hgeantkine.cc:953
 hgeantkine.cc:954
 hgeantkine.cc:955
 hgeantkine.cc:956
 hgeantkine.cc:957
 hgeantkine.cc:958
 hgeantkine.cc:959
 hgeantkine.cc:960
 hgeantkine.cc:961
 hgeantkine.cc:962
 hgeantkine.cc:963
 hgeantkine.cc:964
 hgeantkine.cc:965
 hgeantkine.cc:966
 hgeantkine.cc:967
 hgeantkine.cc:968
 hgeantkine.cc:969
 hgeantkine.cc:970
 hgeantkine.cc:971
 hgeantkine.cc:972
 hgeantkine.cc:973
 hgeantkine.cc:974
 hgeantkine.cc:975
 hgeantkine.cc:976
 hgeantkine.cc:977
 hgeantkine.cc:978
 hgeantkine.cc:979
 hgeantkine.cc:980
 hgeantkine.cc:981
 hgeantkine.cc:982
 hgeantkine.cc:983
 hgeantkine.cc:984
 hgeantkine.cc:985
 hgeantkine.cc:986
 hgeantkine.cc:987
 hgeantkine.cc:988
 hgeantkine.cc:989
 hgeantkine.cc:990
 hgeantkine.cc:991
 hgeantkine.cc:992
 hgeantkine.cc:993
 hgeantkine.cc:994
 hgeantkine.cc:995
 hgeantkine.cc:996
 hgeantkine.cc:997
 hgeantkine.cc:998
 hgeantkine.cc:999
 hgeantkine.cc:1000
 hgeantkine.cc:1001
 hgeantkine.cc:1002
 hgeantkine.cc:1003
 hgeantkine.cc:1004
 hgeantkine.cc:1005
 hgeantkine.cc:1006
 hgeantkine.cc:1007
 hgeantkine.cc:1008
 hgeantkine.cc:1009
 hgeantkine.cc:1010
 hgeantkine.cc:1011
 hgeantkine.cc:1012
 hgeantkine.cc:1013
 hgeantkine.cc:1014
 hgeantkine.cc:1015
 hgeantkine.cc:1016
 hgeantkine.cc:1017
 hgeantkine.cc:1018
 hgeantkine.cc:1019
 hgeantkine.cc:1020
 hgeantkine.cc:1021
 hgeantkine.cc:1022
 hgeantkine.cc:1023
 hgeantkine.cc:1024
 hgeantkine.cc:1025
 hgeantkine.cc:1026
 hgeantkine.cc:1027
 hgeantkine.cc:1028
 hgeantkine.cc:1029
 hgeantkine.cc:1030
 hgeantkine.cc:1031
 hgeantkine.cc:1032
 hgeantkine.cc:1033
 hgeantkine.cc:1034
 hgeantkine.cc:1035
 hgeantkine.cc:1036
 hgeantkine.cc:1037
 hgeantkine.cc:1038
 hgeantkine.cc:1039
 hgeantkine.cc:1040
 hgeantkine.cc:1041
 hgeantkine.cc:1042
 hgeantkine.cc:1043
 hgeantkine.cc:1044
 hgeantkine.cc:1045
 hgeantkine.cc:1046
 hgeantkine.cc:1047
 hgeantkine.cc:1048
 hgeantkine.cc:1049
 hgeantkine.cc:1050
 hgeantkine.cc:1051
 hgeantkine.cc:1052
 hgeantkine.cc:1053
 hgeantkine.cc:1054
 hgeantkine.cc:1055
 hgeantkine.cc:1056
 hgeantkine.cc:1057
 hgeantkine.cc:1058
 hgeantkine.cc:1059
 hgeantkine.cc:1060
 hgeantkine.cc:1061
 hgeantkine.cc:1062
 hgeantkine.cc:1063
 hgeantkine.cc:1064
 hgeantkine.cc:1065
 hgeantkine.cc:1066
 hgeantkine.cc:1067
 hgeantkine.cc:1068
 hgeantkine.cc:1069
 hgeantkine.cc:1070
 hgeantkine.cc:1071
 hgeantkine.cc:1072
 hgeantkine.cc:1073
 hgeantkine.cc:1074
 hgeantkine.cc:1075
 hgeantkine.cc:1076
 hgeantkine.cc:1077
 hgeantkine.cc:1078
 hgeantkine.cc:1079
 hgeantkine.cc:1080
 hgeantkine.cc:1081
 hgeantkine.cc:1082
 hgeantkine.cc:1083
 hgeantkine.cc:1084
 hgeantkine.cc:1085
 hgeantkine.cc:1086
 hgeantkine.cc:1087
 hgeantkine.cc:1088
 hgeantkine.cc:1089
 hgeantkine.cc:1090
 hgeantkine.cc:1091
 hgeantkine.cc:1092
 hgeantkine.cc:1093
 hgeantkine.cc:1094
 hgeantkine.cc:1095
 hgeantkine.cc:1096
 hgeantkine.cc:1097
 hgeantkine.cc:1098
 hgeantkine.cc:1099
 hgeantkine.cc:1100
 hgeantkine.cc:1101
 hgeantkine.cc:1102
 hgeantkine.cc:1103
 hgeantkine.cc:1104
 hgeantkine.cc:1105
 hgeantkine.cc:1106
 hgeantkine.cc:1107
 hgeantkine.cc:1108
 hgeantkine.cc:1109
 hgeantkine.cc:1110
 hgeantkine.cc:1111
 hgeantkine.cc:1112
 hgeantkine.cc:1113
 hgeantkine.cc:1114
 hgeantkine.cc:1115
 hgeantkine.cc:1116
 hgeantkine.cc:1117
 hgeantkine.cc:1118
 hgeantkine.cc:1119
 hgeantkine.cc:1120
 hgeantkine.cc:1121
 hgeantkine.cc:1122
 hgeantkine.cc:1123
 hgeantkine.cc:1124
 hgeantkine.cc:1125
 hgeantkine.cc:1126
 hgeantkine.cc:1127
 hgeantkine.cc:1128
 hgeantkine.cc:1129
 hgeantkine.cc:1130
 hgeantkine.cc:1131
 hgeantkine.cc:1132
 hgeantkine.cc:1133
 hgeantkine.cc:1134
 hgeantkine.cc:1135
 hgeantkine.cc:1136
 hgeantkine.cc:1137
 hgeantkine.cc:1138
 hgeantkine.cc:1139
 hgeantkine.cc:1140
 hgeantkine.cc:1141
 hgeantkine.cc:1142
 hgeantkine.cc:1143
 hgeantkine.cc:1144
 hgeantkine.cc:1145
 hgeantkine.cc:1146
 hgeantkine.cc:1147
 hgeantkine.cc:1148
 hgeantkine.cc:1149
 hgeantkine.cc:1150
 hgeantkine.cc:1151
 hgeantkine.cc:1152
 hgeantkine.cc:1153
 hgeantkine.cc:1154
 hgeantkine.cc:1155
 hgeantkine.cc:1156
 hgeantkine.cc:1157
 hgeantkine.cc:1158
 hgeantkine.cc:1159
 hgeantkine.cc:1160
 hgeantkine.cc:1161
 hgeantkine.cc:1162
 hgeantkine.cc:1163
 hgeantkine.cc:1164
 hgeantkine.cc:1165
 hgeantkine.cc:1166
 hgeantkine.cc:1167
 hgeantkine.cc:1168
 hgeantkine.cc:1169
 hgeantkine.cc:1170
 hgeantkine.cc:1171
 hgeantkine.cc:1172
 hgeantkine.cc:1173
 hgeantkine.cc:1174
 hgeantkine.cc:1175
 hgeantkine.cc:1176
 hgeantkine.cc:1177
 hgeantkine.cc:1178
 hgeantkine.cc:1179
 hgeantkine.cc:1180
 hgeantkine.cc:1181
 hgeantkine.cc:1182
 hgeantkine.cc:1183
 hgeantkine.cc:1184
 hgeantkine.cc:1185
 hgeantkine.cc:1186
 hgeantkine.cc:1187
 hgeantkine.cc:1188
 hgeantkine.cc:1189
 hgeantkine.cc:1190
 hgeantkine.cc:1191
 hgeantkine.cc:1192
 hgeantkine.cc:1193
 hgeantkine.cc:1194
 hgeantkine.cc:1195
 hgeantkine.cc:1196
 hgeantkine.cc:1197
 hgeantkine.cc:1198
 hgeantkine.cc:1199
 hgeantkine.cc:1200
 hgeantkine.cc:1201
 hgeantkine.cc:1202
 hgeantkine.cc:1203
 hgeantkine.cc:1204
 hgeantkine.cc:1205
 hgeantkine.cc:1206
 hgeantkine.cc:1207
 hgeantkine.cc:1208
 hgeantkine.cc:1209
 hgeantkine.cc:1210
 hgeantkine.cc:1211
 hgeantkine.cc:1212
 hgeantkine.cc:1213
 hgeantkine.cc:1214
 hgeantkine.cc:1215
 hgeantkine.cc:1216
 hgeantkine.cc:1217
 hgeantkine.cc:1218
 hgeantkine.cc:1219
 hgeantkine.cc:1220
 hgeantkine.cc:1221
 hgeantkine.cc:1222
 hgeantkine.cc:1223
 hgeantkine.cc:1224
 hgeantkine.cc:1225
 hgeantkine.cc:1226
 hgeantkine.cc:1227
 hgeantkine.cc:1228
 hgeantkine.cc:1229
 hgeantkine.cc:1230
 hgeantkine.cc:1231
 hgeantkine.cc:1232
 hgeantkine.cc:1233
 hgeantkine.cc:1234
 hgeantkine.cc:1235
 hgeantkine.cc:1236
 hgeantkine.cc:1237
 hgeantkine.cc:1238
 hgeantkine.cc:1239
 hgeantkine.cc:1240
 hgeantkine.cc:1241
 hgeantkine.cc:1242
 hgeantkine.cc:1243
 hgeantkine.cc:1244
 hgeantkine.cc:1245
 hgeantkine.cc:1246
 hgeantkine.cc:1247
 hgeantkine.cc:1248
 hgeantkine.cc:1249
 hgeantkine.cc:1250
 hgeantkine.cc:1251
 hgeantkine.cc:1252
 hgeantkine.cc:1253
 hgeantkine.cc:1254
 hgeantkine.cc:1255
 hgeantkine.cc:1256
 hgeantkine.cc:1257
 hgeantkine.cc:1258
 hgeantkine.cc:1259
 hgeantkine.cc:1260
 hgeantkine.cc:1261
 hgeantkine.cc:1262
 hgeantkine.cc:1263
 hgeantkine.cc:1264
 hgeantkine.cc:1265
 hgeantkine.cc:1266
 hgeantkine.cc:1267
 hgeantkine.cc:1268
 hgeantkine.cc:1269
 hgeantkine.cc:1270
 hgeantkine.cc:1271
 hgeantkine.cc:1272
 hgeantkine.cc:1273
 hgeantkine.cc:1274
 hgeantkine.cc:1275
 hgeantkine.cc:1276
 hgeantkine.cc:1277
 hgeantkine.cc:1278
 hgeantkine.cc:1279
 hgeantkine.cc:1280
 hgeantkine.cc:1281
 hgeantkine.cc:1282
 hgeantkine.cc:1283
 hgeantkine.cc:1284
 hgeantkine.cc:1285
 hgeantkine.cc:1286
 hgeantkine.cc:1287
 hgeantkine.cc:1288
 hgeantkine.cc:1289
 hgeantkine.cc:1290
 hgeantkine.cc:1291
 hgeantkine.cc:1292
 hgeantkine.cc:1293
 hgeantkine.cc:1294
 hgeantkine.cc:1295
 hgeantkine.cc:1296
 hgeantkine.cc:1297
 hgeantkine.cc:1298
 hgeantkine.cc:1299
 hgeantkine.cc:1300
 hgeantkine.cc:1301
 hgeantkine.cc:1302
 hgeantkine.cc:1303
 hgeantkine.cc:1304
 hgeantkine.cc:1305
 hgeantkine.cc:1306
 hgeantkine.cc:1307
 hgeantkine.cc:1308
 hgeantkine.cc:1309
 hgeantkine.cc:1310
 hgeantkine.cc:1311
 hgeantkine.cc:1312
 hgeantkine.cc:1313
 hgeantkine.cc:1314
 hgeantkine.cc:1315
 hgeantkine.cc:1316
 hgeantkine.cc:1317
 hgeantkine.cc:1318
 hgeantkine.cc:1319
 hgeantkine.cc:1320
 hgeantkine.cc:1321
 hgeantkine.cc:1322
 hgeantkine.cc:1323
 hgeantkine.cc:1324
 hgeantkine.cc:1325
 hgeantkine.cc:1326
 hgeantkine.cc:1327
 hgeantkine.cc:1328
 hgeantkine.cc:1329
 hgeantkine.cc:1330
 hgeantkine.cc:1331
 hgeantkine.cc:1332
 hgeantkine.cc:1333
 hgeantkine.cc:1334
 hgeantkine.cc:1335
 hgeantkine.cc:1336
 hgeantkine.cc:1337
 hgeantkine.cc:1338
 hgeantkine.cc:1339
 hgeantkine.cc:1340
 hgeantkine.cc:1341
 hgeantkine.cc:1342
 hgeantkine.cc:1343
 hgeantkine.cc:1344
 hgeantkine.cc:1345
 hgeantkine.cc:1346
 hgeantkine.cc:1347
 hgeantkine.cc:1348
 hgeantkine.cc:1349
 hgeantkine.cc:1350
 hgeantkine.cc:1351
 hgeantkine.cc:1352
 hgeantkine.cc:1353
 hgeantkine.cc:1354
 hgeantkine.cc:1355
 hgeantkine.cc:1356
 hgeantkine.cc:1357
 hgeantkine.cc:1358
 hgeantkine.cc:1359
 hgeantkine.cc:1360
 hgeantkine.cc:1361
 hgeantkine.cc:1362
 hgeantkine.cc:1363
 hgeantkine.cc:1364
 hgeantkine.cc:1365
 hgeantkine.cc:1366
 hgeantkine.cc:1367
 hgeantkine.cc:1368
 hgeantkine.cc:1369
 hgeantkine.cc:1370
 hgeantkine.cc:1371
 hgeantkine.cc:1372
 hgeantkine.cc:1373
 hgeantkine.cc:1374
 hgeantkine.cc:1375
 hgeantkine.cc:1376
 hgeantkine.cc:1377
 hgeantkine.cc:1378
 hgeantkine.cc:1379
 hgeantkine.cc:1380
 hgeantkine.cc:1381
 hgeantkine.cc:1382
 hgeantkine.cc:1383
 hgeantkine.cc:1384
 hgeantkine.cc:1385
 hgeantkine.cc:1386
 hgeantkine.cc:1387
 hgeantkine.cc:1388
 hgeantkine.cc:1389
 hgeantkine.cc:1390
 hgeantkine.cc:1391
 hgeantkine.cc:1392
 hgeantkine.cc:1393
 hgeantkine.cc:1394
 hgeantkine.cc:1395
 hgeantkine.cc:1396
 hgeantkine.cc:1397
 hgeantkine.cc:1398
 hgeantkine.cc:1399
 hgeantkine.cc:1400
 hgeantkine.cc:1401
 hgeantkine.cc:1402
 hgeantkine.cc:1403
 hgeantkine.cc:1404
 hgeantkine.cc:1405
 hgeantkine.cc:1406
 hgeantkine.cc:1407
 hgeantkine.cc:1408
 hgeantkine.cc:1409
 hgeantkine.cc:1410
 hgeantkine.cc:1411
 hgeantkine.cc:1412
 hgeantkine.cc:1413
 hgeantkine.cc:1414
 hgeantkine.cc:1415
 hgeantkine.cc:1416
 hgeantkine.cc:1417
 hgeantkine.cc:1418
 hgeantkine.cc:1419
 hgeantkine.cc:1420
 hgeantkine.cc:1421
 hgeantkine.cc:1422
 hgeantkine.cc:1423
 hgeantkine.cc:1424
 hgeantkine.cc:1425
 hgeantkine.cc:1426
 hgeantkine.cc:1427
 hgeantkine.cc:1428
 hgeantkine.cc:1429
 hgeantkine.cc:1430
 hgeantkine.cc:1431
 hgeantkine.cc:1432
 hgeantkine.cc:1433
 hgeantkine.cc:1434
 hgeantkine.cc:1435
 hgeantkine.cc:1436
 hgeantkine.cc:1437
 hgeantkine.cc:1438
 hgeantkine.cc:1439
 hgeantkine.cc:1440
 hgeantkine.cc:1441
 hgeantkine.cc:1442
 hgeantkine.cc:1443
 hgeantkine.cc:1444
 hgeantkine.cc:1445
 hgeantkine.cc:1446
 hgeantkine.cc:1447
 hgeantkine.cc:1448
 hgeantkine.cc:1449
 hgeantkine.cc:1450
 hgeantkine.cc:1451
 hgeantkine.cc:1452
 hgeantkine.cc:1453
 hgeantkine.cc:1454
 hgeantkine.cc:1455
 hgeantkine.cc:1456
 hgeantkine.cc:1457
 hgeantkine.cc:1458
 hgeantkine.cc:1459
 hgeantkine.cc:1460
 hgeantkine.cc:1461
 hgeantkine.cc:1462
 hgeantkine.cc:1463
 hgeantkine.cc:1464
 hgeantkine.cc:1465
 hgeantkine.cc:1466
 hgeantkine.cc:1467
 hgeantkine.cc:1468
 hgeantkine.cc:1469
 hgeantkine.cc:1470
 hgeantkine.cc:1471
 hgeantkine.cc:1472
 hgeantkine.cc:1473
 hgeantkine.cc:1474
 hgeantkine.cc:1475
 hgeantkine.cc:1476
 hgeantkine.cc:1477
 hgeantkine.cc:1478
 hgeantkine.cc:1479
 hgeantkine.cc:1480
 hgeantkine.cc:1481
 hgeantkine.cc:1482
 hgeantkine.cc:1483
 hgeantkine.cc:1484
 hgeantkine.cc:1485
 hgeantkine.cc:1486
 hgeantkine.cc:1487
 hgeantkine.cc:1488
 hgeantkine.cc:1489
 hgeantkine.cc:1490
 hgeantkine.cc:1491
 hgeantkine.cc:1492
 hgeantkine.cc:1493
 hgeantkine.cc:1494
 hgeantkine.cc:1495
 hgeantkine.cc:1496
 hgeantkine.cc:1497
 hgeantkine.cc:1498
 hgeantkine.cc:1499
 hgeantkine.cc:1500
 hgeantkine.cc:1501
 hgeantkine.cc:1502
 hgeantkine.cc:1503
 hgeantkine.cc:1504
 hgeantkine.cc:1505
 hgeantkine.cc:1506
 hgeantkine.cc:1507
 hgeantkine.cc:1508
 hgeantkine.cc:1509
 hgeantkine.cc:1510
 hgeantkine.cc:1511
 hgeantkine.cc:1512
 hgeantkine.cc:1513
 hgeantkine.cc:1514
 hgeantkine.cc:1515
 hgeantkine.cc:1516
 hgeantkine.cc:1517
 hgeantkine.cc:1518
 hgeantkine.cc:1519
 hgeantkine.cc:1520
 hgeantkine.cc:1521
 hgeantkine.cc:1522
 hgeantkine.cc:1523
 hgeantkine.cc:1524
 hgeantkine.cc:1525
 hgeantkine.cc:1526
 hgeantkine.cc:1527
 hgeantkine.cc:1528
 hgeantkine.cc:1529
 hgeantkine.cc:1530
 hgeantkine.cc:1531
 hgeantkine.cc:1532
 hgeantkine.cc:1533
 hgeantkine.cc:1534
 hgeantkine.cc:1535
 hgeantkine.cc:1536
 hgeantkine.cc:1537
 hgeantkine.cc:1538
 hgeantkine.cc:1539
 hgeantkine.cc:1540
 hgeantkine.cc:1541
 hgeantkine.cc:1542
 hgeantkine.cc:1543
 hgeantkine.cc:1544
 hgeantkine.cc:1545
 hgeantkine.cc:1546
 hgeantkine.cc:1547
 hgeantkine.cc:1548
 hgeantkine.cc:1549
 hgeantkine.cc:1550
 hgeantkine.cc:1551
 hgeantkine.cc:1552
 hgeantkine.cc:1553
 hgeantkine.cc:1554
 hgeantkine.cc:1555
 hgeantkine.cc:1556
 hgeantkine.cc:1557
 hgeantkine.cc:1558
 hgeantkine.cc:1559
 hgeantkine.cc:1560
 hgeantkine.cc:1561
 hgeantkine.cc:1562
 hgeantkine.cc:1563
 hgeantkine.cc:1564
 hgeantkine.cc:1565
 hgeantkine.cc:1566
 hgeantkine.cc:1567
 hgeantkine.cc:1568
 hgeantkine.cc:1569
 hgeantkine.cc:1570
 hgeantkine.cc:1571
 hgeantkine.cc:1572
 hgeantkine.cc:1573
 hgeantkine.cc:1574
 hgeantkine.cc:1575
 hgeantkine.cc:1576
 hgeantkine.cc:1577
 hgeantkine.cc:1578
 hgeantkine.cc:1579
 hgeantkine.cc:1580
 hgeantkine.cc:1581
 hgeantkine.cc:1582
 hgeantkine.cc:1583
 hgeantkine.cc:1584
 hgeantkine.cc:1585
 hgeantkine.cc:1586
 hgeantkine.cc:1587
 hgeantkine.cc:1588
 hgeantkine.cc:1589
 hgeantkine.cc:1590
 hgeantkine.cc:1591
 hgeantkine.cc:1592
 hgeantkine.cc:1593
 hgeantkine.cc:1594
 hgeantkine.cc:1595
 hgeantkine.cc:1596
 hgeantkine.cc:1597
 hgeantkine.cc:1598
 hgeantkine.cc:1599
 hgeantkine.cc:1600
 hgeantkine.cc:1601
 hgeantkine.cc:1602
 hgeantkine.cc:1603
 hgeantkine.cc:1604
 hgeantkine.cc:1605
 hgeantkine.cc:1606
 hgeantkine.cc:1607
 hgeantkine.cc:1608
 hgeantkine.cc:1609
 hgeantkine.cc:1610
 hgeantkine.cc:1611
 hgeantkine.cc:1612
 hgeantkine.cc:1613
 hgeantkine.cc:1614
 hgeantkine.cc:1615
 hgeantkine.cc:1616
 hgeantkine.cc:1617
 hgeantkine.cc:1618
 hgeantkine.cc:1619
 hgeantkine.cc:1620
 hgeantkine.cc:1621
 hgeantkine.cc:1622
 hgeantkine.cc:1623
 hgeantkine.cc:1624
 hgeantkine.cc:1625
 hgeantkine.cc:1626
 hgeantkine.cc:1627
 hgeantkine.cc:1628
 hgeantkine.cc:1629
 hgeantkine.cc:1630
 hgeantkine.cc:1631
 hgeantkine.cc:1632
 hgeantkine.cc:1633
 hgeantkine.cc:1634
 hgeantkine.cc:1635
 hgeantkine.cc:1636
 hgeantkine.cc:1637
 hgeantkine.cc:1638
 hgeantkine.cc:1639
 hgeantkine.cc:1640
 hgeantkine.cc:1641
 hgeantkine.cc:1642
 hgeantkine.cc:1643
 hgeantkine.cc:1644
 hgeantkine.cc:1645
 hgeantkine.cc:1646
 hgeantkine.cc:1647
 hgeantkine.cc:1648
 hgeantkine.cc:1649
 hgeantkine.cc:1650
 hgeantkine.cc:1651
 hgeantkine.cc:1652
 hgeantkine.cc:1653
 hgeantkine.cc:1654
 hgeantkine.cc:1655
 hgeantkine.cc:1656
 hgeantkine.cc:1657
 hgeantkine.cc:1658
 hgeantkine.cc:1659
 hgeantkine.cc:1660
 hgeantkine.cc:1661
 hgeantkine.cc:1662
 hgeantkine.cc:1663
 hgeantkine.cc:1664
 hgeantkine.cc:1665
 hgeantkine.cc:1666
 hgeantkine.cc:1667
 hgeantkine.cc:1668
 hgeantkine.cc:1669
 hgeantkine.cc:1670
 hgeantkine.cc:1671
 hgeantkine.cc:1672
 hgeantkine.cc:1673
 hgeantkine.cc:1674
 hgeantkine.cc:1675
 hgeantkine.cc:1676
 hgeantkine.cc:1677
 hgeantkine.cc:1678
 hgeantkine.cc:1679
 hgeantkine.cc:1680
 hgeantkine.cc:1681
 hgeantkine.cc:1682
 hgeantkine.cc:1683
 hgeantkine.cc:1684
 hgeantkine.cc:1685
 hgeantkine.cc:1686
 hgeantkine.cc:1687
 hgeantkine.cc:1688
 hgeantkine.cc:1689
 hgeantkine.cc:1690
 hgeantkine.cc:1691
 hgeantkine.cc:1692
 hgeantkine.cc:1693
 hgeantkine.cc:1694
 hgeantkine.cc:1695
 hgeantkine.cc:1696
 hgeantkine.cc:1697
 hgeantkine.cc:1698
 hgeantkine.cc:1699
 hgeantkine.cc:1700
 hgeantkine.cc:1701
 hgeantkine.cc:1702
 hgeantkine.cc:1703
 hgeantkine.cc:1704
 hgeantkine.cc:1705
 hgeantkine.cc:1706
 hgeantkine.cc:1707
 hgeantkine.cc:1708
 hgeantkine.cc:1709
 hgeantkine.cc:1710
 hgeantkine.cc:1711
 hgeantkine.cc:1712
 hgeantkine.cc:1713
 hgeantkine.cc:1714
 hgeantkine.cc:1715
 hgeantkine.cc:1716
 hgeantkine.cc:1717
 hgeantkine.cc:1718
 hgeantkine.cc:1719
 hgeantkine.cc:1720
 hgeantkine.cc:1721
 hgeantkine.cc:1722
 hgeantkine.cc:1723
 hgeantkine.cc:1724
 hgeantkine.cc:1725
 hgeantkine.cc:1726
 hgeantkine.cc:1727
 hgeantkine.cc:1728
 hgeantkine.cc:1729
 hgeantkine.cc:1730
 hgeantkine.cc:1731
 hgeantkine.cc:1732
 hgeantkine.cc:1733
 hgeantkine.cc:1734
 hgeantkine.cc:1735
 hgeantkine.cc:1736
 hgeantkine.cc:1737
 hgeantkine.cc:1738
 hgeantkine.cc:1739
 hgeantkine.cc:1740
 hgeantkine.cc:1741
 hgeantkine.cc:1742
 hgeantkine.cc:1743
 hgeantkine.cc:1744
 hgeantkine.cc:1745
 hgeantkine.cc:1746
 hgeantkine.cc:1747
 hgeantkine.cc:1748
 hgeantkine.cc:1749
 hgeantkine.cc:1750
 hgeantkine.cc:1751
 hgeantkine.cc:1752
 hgeantkine.cc:1753
 hgeantkine.cc:1754
 hgeantkine.cc:1755
 hgeantkine.cc:1756
 hgeantkine.cc:1757
 hgeantkine.cc:1758
 hgeantkine.cc:1759
 hgeantkine.cc:1760
 hgeantkine.cc:1761
 hgeantkine.cc:1762
 hgeantkine.cc:1763
 hgeantkine.cc:1764
 hgeantkine.cc:1765
 hgeantkine.cc:1766
 hgeantkine.cc:1767
 hgeantkine.cc:1768
 hgeantkine.cc:1769
 hgeantkine.cc:1770
 hgeantkine.cc:1771
 hgeantkine.cc:1772
 hgeantkine.cc:1773
 hgeantkine.cc:1774
 hgeantkine.cc:1775
 hgeantkine.cc:1776
 hgeantkine.cc:1777
 hgeantkine.cc:1778
 hgeantkine.cc:1779
 hgeantkine.cc:1780
 hgeantkine.cc:1781
 hgeantkine.cc:1782
 hgeantkine.cc:1783
 hgeantkine.cc:1784
 hgeantkine.cc:1785
 hgeantkine.cc:1786
 hgeantkine.cc:1787
 hgeantkine.cc:1788
 hgeantkine.cc:1789
 hgeantkine.cc:1790
 hgeantkine.cc:1791
 hgeantkine.cc:1792
 hgeantkine.cc:1793
 hgeantkine.cc:1794
 hgeantkine.cc:1795
 hgeantkine.cc:1796
 hgeantkine.cc:1797
 hgeantkine.cc:1798
 hgeantkine.cc:1799
 hgeantkine.cc:1800
 hgeantkine.cc:1801
 hgeantkine.cc:1802
 hgeantkine.cc:1803
 hgeantkine.cc:1804
 hgeantkine.cc:1805
 hgeantkine.cc:1806
 hgeantkine.cc:1807
 hgeantkine.cc:1808
 hgeantkine.cc:1809
 hgeantkine.cc:1810
 hgeantkine.cc:1811
 hgeantkine.cc:1812
 hgeantkine.cc:1813
 hgeantkine.cc:1814
 hgeantkine.cc:1815
 hgeantkine.cc:1816
 hgeantkine.cc:1817
 hgeantkine.cc:1818
 hgeantkine.cc:1819
 hgeantkine.cc:1820
 hgeantkine.cc:1821
 hgeantkine.cc:1822
 hgeantkine.cc:1823
 hgeantkine.cc:1824
 hgeantkine.cc:1825
 hgeantkine.cc:1826
 hgeantkine.cc:1827
 hgeantkine.cc:1828
 hgeantkine.cc:1829
 hgeantkine.cc:1830
 hgeantkine.cc:1831
 hgeantkine.cc:1832
 hgeantkine.cc:1833
 hgeantkine.cc:1834
 hgeantkine.cc:1835
 hgeantkine.cc:1836
 hgeantkine.cc:1837
 hgeantkine.cc:1838
 hgeantkine.cc:1839
 hgeantkine.cc:1840
 hgeantkine.cc:1841
 hgeantkine.cc:1842
 hgeantkine.cc:1843
 hgeantkine.cc:1844
 hgeantkine.cc:1845
 hgeantkine.cc:1846
 hgeantkine.cc:1847
 hgeantkine.cc:1848
 hgeantkine.cc:1849
 hgeantkine.cc:1850
 hgeantkine.cc:1851
 hgeantkine.cc:1852
 hgeantkine.cc:1853
 hgeantkine.cc:1854
 hgeantkine.cc:1855
 hgeantkine.cc:1856
 hgeantkine.cc:1857
 hgeantkine.cc:1858
 hgeantkine.cc:1859
 hgeantkine.cc:1860
 hgeantkine.cc:1861
 hgeantkine.cc:1862
 hgeantkine.cc:1863
 hgeantkine.cc:1864
 hgeantkine.cc:1865
 hgeantkine.cc:1866
 hgeantkine.cc:1867
 hgeantkine.cc:1868
 hgeantkine.cc:1869
 hgeantkine.cc:1870
 hgeantkine.cc:1871
 hgeantkine.cc:1872
 hgeantkine.cc:1873
 hgeantkine.cc:1874
 hgeantkine.cc:1875
 hgeantkine.cc:1876
 hgeantkine.cc:1877
 hgeantkine.cc:1878
 hgeantkine.cc:1879
 hgeantkine.cc:1880
 hgeantkine.cc:1881
 hgeantkine.cc:1882
 hgeantkine.cc:1883
 hgeantkine.cc:1884
 hgeantkine.cc:1885
 hgeantkine.cc:1886
 hgeantkine.cc:1887
 hgeantkine.cc:1888
 hgeantkine.cc:1889
 hgeantkine.cc:1890
 hgeantkine.cc:1891
 hgeantkine.cc:1892
 hgeantkine.cc:1893
 hgeantkine.cc:1894
 hgeantkine.cc:1895
 hgeantkine.cc:1896
 hgeantkine.cc:1897
 hgeantkine.cc:1898
 hgeantkine.cc:1899
 hgeantkine.cc:1900
 hgeantkine.cc:1901
 hgeantkine.cc:1902
 hgeantkine.cc:1903
 hgeantkine.cc:1904
 hgeantkine.cc:1905
 hgeantkine.cc:1906
 hgeantkine.cc:1907
 hgeantkine.cc:1908
 hgeantkine.cc:1909
 hgeantkine.cc:1910
 hgeantkine.cc:1911
 hgeantkine.cc:1912
 hgeantkine.cc:1913
 hgeantkine.cc:1914
 hgeantkine.cc:1915
 hgeantkine.cc:1916
 hgeantkine.cc:1917
 hgeantkine.cc:1918
 hgeantkine.cc:1919
 hgeantkine.cc:1920
 hgeantkine.cc:1921
 hgeantkine.cc:1922
 hgeantkine.cc:1923
 hgeantkine.cc:1924
 hgeantkine.cc:1925
 hgeantkine.cc:1926
 hgeantkine.cc:1927
 hgeantkine.cc:1928
 hgeantkine.cc:1929
 hgeantkine.cc:1930
 hgeantkine.cc:1931
 hgeantkine.cc:1932
 hgeantkine.cc:1933
 hgeantkine.cc:1934
 hgeantkine.cc:1935
 hgeantkine.cc:1936
 hgeantkine.cc:1937
 hgeantkine.cc:1938
 hgeantkine.cc:1939
 hgeantkine.cc:1940
 hgeantkine.cc:1941
 hgeantkine.cc:1942
 hgeantkine.cc:1943
 hgeantkine.cc:1944
 hgeantkine.cc:1945
 hgeantkine.cc:1946
 hgeantkine.cc:1947
 hgeantkine.cc:1948
 hgeantkine.cc:1949
 hgeantkine.cc:1950
 hgeantkine.cc:1951
 hgeantkine.cc:1952
 hgeantkine.cc:1953
 hgeantkine.cc:1954
 hgeantkine.cc:1955
 hgeantkine.cc:1956
 hgeantkine.cc:1957
 hgeantkine.cc:1958
 hgeantkine.cc:1959
 hgeantkine.cc:1960
 hgeantkine.cc:1961
 hgeantkine.cc:1962
 hgeantkine.cc:1963
 hgeantkine.cc:1964
 hgeantkine.cc:1965
 hgeantkine.cc:1966
 hgeantkine.cc:1967
 hgeantkine.cc:1968
 hgeantkine.cc:1969
 hgeantkine.cc:1970
 hgeantkine.cc:1971
 hgeantkine.cc:1972
 hgeantkine.cc:1973
 hgeantkine.cc:1974
 hgeantkine.cc:1975
 hgeantkine.cc:1976
 hgeantkine.cc:1977
 hgeantkine.cc:1978
 hgeantkine.cc:1979
 hgeantkine.cc:1980
 hgeantkine.cc:1981
 hgeantkine.cc:1982
 hgeantkine.cc:1983
 hgeantkine.cc:1984
 hgeantkine.cc:1985
 hgeantkine.cc:1986
 hgeantkine.cc:1987
 hgeantkine.cc:1988
 hgeantkine.cc:1989
 hgeantkine.cc:1990
 hgeantkine.cc:1991
 hgeantkine.cc:1992
 hgeantkine.cc:1993
 hgeantkine.cc:1994
 hgeantkine.cc:1995
 hgeantkine.cc:1996
 hgeantkine.cc:1997
 hgeantkine.cc:1998
 hgeantkine.cc:1999
 hgeantkine.cc:2000
 hgeantkine.cc:2001
 hgeantkine.cc:2002
 hgeantkine.cc:2003
 hgeantkine.cc:2004
 hgeantkine.cc:2005
 hgeantkine.cc:2006
 hgeantkine.cc:2007
 hgeantkine.cc:2008
 hgeantkine.cc:2009
 hgeantkine.cc:2010
 hgeantkine.cc:2011
 hgeantkine.cc:2012
 hgeantkine.cc:2013
 hgeantkine.cc:2014
 hgeantkine.cc:2015
 hgeantkine.cc:2016
 hgeantkine.cc:2017
 hgeantkine.cc:2018
 hgeantkine.cc:2019
 hgeantkine.cc:2020
 hgeantkine.cc:2021
 hgeantkine.cc:2022
 hgeantkine.cc:2023
 hgeantkine.cc:2024
 hgeantkine.cc:2025
 hgeantkine.cc:2026
 hgeantkine.cc:2027
 hgeantkine.cc:2028
 hgeantkine.cc:2029
 hgeantkine.cc:2030
 hgeantkine.cc:2031
 hgeantkine.cc:2032
 hgeantkine.cc:2033
 hgeantkine.cc:2034
 hgeantkine.cc:2035
 hgeantkine.cc:2036
 hgeantkine.cc:2037
 hgeantkine.cc:2038
 hgeantkine.cc:2039
 hgeantkine.cc:2040
 hgeantkine.cc:2041
 hgeantkine.cc:2042
 hgeantkine.cc:2043
 hgeantkine.cc:2044
 hgeantkine.cc:2045
 hgeantkine.cc:2046
 hgeantkine.cc:2047
 hgeantkine.cc:2048
 hgeantkine.cc:2049
 hgeantkine.cc:2050
 hgeantkine.cc:2051
 hgeantkine.cc:2052
 hgeantkine.cc:2053
 hgeantkine.cc:2054
 hgeantkine.cc:2055
 hgeantkine.cc:2056
 hgeantkine.cc:2057
 hgeantkine.cc:2058
 hgeantkine.cc:2059
 hgeantkine.cc:2060
 hgeantkine.cc:2061
 hgeantkine.cc:2062
 hgeantkine.cc:2063
 hgeantkine.cc:2064
 hgeantkine.cc:2065
 hgeantkine.cc:2066
 hgeantkine.cc:2067
 hgeantkine.cc:2068
 hgeantkine.cc:2069
 hgeantkine.cc:2070
 hgeantkine.cc:2071
 hgeantkine.cc:2072
 hgeantkine.cc:2073
 hgeantkine.cc:2074
 hgeantkine.cc:2075
 hgeantkine.cc:2076
 hgeantkine.cc:2077
 hgeantkine.cc:2078
 hgeantkine.cc:2079
 hgeantkine.cc:2080
 hgeantkine.cc:2081
 hgeantkine.cc:2082
 hgeantkine.cc:2083
 hgeantkine.cc:2084
 hgeantkine.cc:2085
 hgeantkine.cc:2086
 hgeantkine.cc:2087
 hgeantkine.cc:2088
 hgeantkine.cc:2089
 hgeantkine.cc:2090
 hgeantkine.cc:2091
 hgeantkine.cc:2092
 hgeantkine.cc:2093
 hgeantkine.cc:2094
 hgeantkine.cc:2095
 hgeantkine.cc:2096
 hgeantkine.cc:2097
 hgeantkine.cc:2098
 hgeantkine.cc:2099
 hgeantkine.cc:2100
 hgeantkine.cc:2101
 hgeantkine.cc:2102
 hgeantkine.cc:2103
 hgeantkine.cc:2104
 hgeantkine.cc:2105
 hgeantkine.cc:2106
 hgeantkine.cc:2107
 hgeantkine.cc:2108
 hgeantkine.cc:2109
 hgeantkine.cc:2110
 hgeantkine.cc:2111
 hgeantkine.cc:2112
 hgeantkine.cc:2113
 hgeantkine.cc:2114
 hgeantkine.cc:2115
 hgeantkine.cc:2116
 hgeantkine.cc:2117
 hgeantkine.cc:2118
 hgeantkine.cc:2119
 hgeantkine.cc:2120
 hgeantkine.cc:2121
 hgeantkine.cc:2122
 hgeantkine.cc:2123
 hgeantkine.cc:2124
 hgeantkine.cc:2125
 hgeantkine.cc:2126
 hgeantkine.cc:2127
 hgeantkine.cc:2128
 hgeantkine.cc:2129