// $Id$
// Author: Sergey Linev  4.03.2014

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//________________________________________________________________________
//
// Class for serializing/deserializing object to/from xml.
// It redefines most of TBuffer class function to convert simple types,
// array of simple types and objects to/from xml.
// Instead of writing a binary data it creates a set of xml structures as
// nodes and attributes
// TBufferJSON class uses streaming mechanism, provided by ROOT system,
// therefore most of ROOT and user classes can be stored to xml. There are
// limitations for complex objects like TTree, which can not be yet converted to xml.
//________________________________________________________________________


#include "TBufferJSON.h"

#include "Compression.h"

#include "TArrayI.h"
#include "TObjArray.h"
#include "TROOT.h"
#include "TClass.h"
#include "TClassTable.h"
#include "TDataType.h"
#include "TDataMember.h"
#include "TExMap.h"
#include "TMethodCall.h"
#include "TStreamerInfo.h"
#include "TStreamerElement.h"
#include "TProcessID.h"
#include "TFile.h"
#include "TMemberStreamer.h"
#include "TStreamer.h"
#include "TStreamerInfoActions.h"
#include "RVersion.h"
#include "TClonesArray.h"

#ifdef R__VISUAL_CPLUSPLUS
#define FLong64    "%I64d"
#define FULong64   "%I64u"
#else
#define FLong64    "%lld"
#define FULong64   "%llu"
#endif

ClassImp(TBufferJSON);


const char *TBufferJSON::fgFloatFmt = "%e";


// TJSONStackObj is used to keep stack of object hierarchy,
// stored in TBuffer. For instance, data for parent class(es)
// stored in subnodes, but initial object node will be kept.

class TJSONStackObj : public TObject {
public:
   TStreamerInfo    *fInfo;           //!
   TStreamerElement *fElem;           //! element in streamer info
   Int_t             fElemNumber;     //! number of streamer element in streamer info
   Bool_t            fIsStreamerInfo; //!
   Bool_t            fIsElemOwner;    //!
   Bool_t            fIsBaseClass;    //! indicate if element is base-class, ignored by post processing
   Bool_t            fIsPostProcessed;//! indicate that value is written
   Bool_t            fIsObjStarted;   //! indicate that object writing started, should be closed in postprocess
   Bool_t            fIsArray;        //! indicate if array object is used
   TObjArray         fValues;         //! raw values
   Int_t             fLevel;          //! indent level

   TJSONStackObj() :
      TObject(),
      fInfo(0),
      fElem(0),
      fElemNumber(0),
      fIsStreamerInfo(kFALSE),
      fIsElemOwner(kFALSE),
      fIsBaseClass(kFALSE),
      fIsPostProcessed(kFALSE),
      fIsObjStarted(kFALSE),
      fIsArray(kFALSE),
      fValues(),
      fLevel(0)
   {
      fValues.SetOwner(kTRUE);
   }

   virtual ~TJSONStackObj()
   {
      if (fIsElemOwner) delete fElem;
   }

   Bool_t IsStreamerInfo() const
   {
      return fIsStreamerInfo;
   }
   Bool_t IsStreamerElement() const
   {
      return !fIsStreamerInfo && (fElem != 0);
   }

   void PushValue(TString &v)
   {
      fValues.Add(new TObjString(v));
      v.Clear();
   }
};


//______________________________________________________________________________
TBufferJSON::TBufferJSON() :
   TBuffer(TBuffer::kWrite),
   fOutBuffer(),
   fValue(),
   fJsonrMap(),
   fJsonrCnt(0),
   fStack(),
   fExpectedChain(kFALSE),
   fCompact(0),
   fSemicolon(" : "),
   fArraySepar(", ")
{
   // Creates buffer object to serialize data into json.

   fBufSize = 1000000000;

   SetParent(0);
   SetBit(kCannotHandleMemberWiseStreaming);
   //SetBit(kTextBasedStreaming);

   fOutBuffer.Capacity(10000);
   fValue.Capacity(1000);
}

//______________________________________________________________________________
TBufferJSON::~TBufferJSON()
{
   // destroy xml buffer

   fStack.Delete();
}

//______________________________________________________________________________
TString TBufferJSON::ConvertToJSON(const TObject *obj, Int_t compact)
{
   // converts object, inherited from TObject class, to JSON string

   return ConvertToJSON(obj, (obj ? obj->IsA() : 0), compact);
}

//______________________________________________________________________________
void TBufferJSON::SetCompact(int level)
{
   // Set level of space/newline compression
   //   0 - no any compression
   //   1 - exclude spaces in the begin
   //   2 - remove newlines
   //   3 - exclude spaces as much as possible

   fCompact = level;
   fSemicolon = fCompact > 2 ? ":" : " : ";
   fArraySepar = fCompact > 2 ? "," : ", ";
}


//______________________________________________________________________________
TString TBufferJSON::ConvertToJSON(const void *obj, const TClass *cl,
                                   Int_t compact)
{
   // converts any type of object to JSON string
   // following values of compact
   //   0 - no any compression
   //   1 - exclude spaces in the begin
   //   2 - remove newlines
   //   3 - exclude spaces as much as possible

   TBufferJSON buf;

   buf.SetCompact(compact);

   return buf.JsonWriteAny(obj, cl);
}

//______________________________________________________________________________
TString TBufferJSON::ConvertToJSON(const void *ptr, TDataMember *member,
                                   Int_t compact)
{
   // converts selected data member into json

   if ((ptr == 0) || (member == 0)) return TString("null");

   TClass *mcl = (member->IsBasic() || member->IsSTLContainer()) ? 0 :
                 gROOT->GetClass(member->GetTypeName());

   if ((mcl != 0) && (mcl != TString::Class()) &&
         (mcl->GetBaseClassOffset(TArray::Class()) != 0))
      return TBufferJSON::ConvertToJSON(ptr, mcl, compact);

   TBufferJSON buf;
   buf.SetCompact(compact);

   return buf.JsonWriteMember(ptr, member, mcl);
}

//______________________________________________________________________________
TString TBufferJSON::JsonWriteAny(const void *obj, const TClass *cl)
{
   // Convert object of any class to JSON structures
   // Returns string with converted object

   fOutBuffer.Clear();

   JsonWriteObject(obj, cl);

   return fOutBuffer;
}

//______________________________________________________________________________
TString TBufferJSON::JsonWriteMember(const void *ptr, TDataMember *member,
                                     TClass *memberClass)
{
   // Convert single data member to JSON structures
   // Returns string with converted member

   if (member == 0) return "null";

   if (gDebug > 2)
      Info("JsonWriteMember", "Write member %s type %s ndim %d\n",
           member->GetName(), member->GetTrueTypeName(), member->GetArrayDim());

   PushStack(0);
   fValue.Clear();

   if (member->IsBasic()) {

      Int_t tid = member->GetDataType() ? member->GetDataType()->GetType() : kNoType_t;

      if (ptr == 0) {
         fValue = "null";
      } else if (member->GetArrayDim() == 0) {
         switch (tid) {
            case kChar_t:
               JsonWriteBasic(*((Char_t *)ptr));
               break;
            case kShort_t:
               JsonWriteBasic(*((Short_t *)ptr));
               break;
            case kInt_t:
               JsonWriteBasic(*((Int_t *)ptr));
               break;
            case kLong_t:
               JsonWriteBasic(*((Long_t *)ptr));
               break;
            case kFloat_t:
               JsonWriteBasic(*((Float_t *)ptr));
               break;
            case kCounter:
               JsonWriteBasic(*((Int_t *)ptr));
               break;
            case kCharStar:
               WriteCharP((Char_t *)ptr);
               break;
            case kDouble_t:
               JsonWriteBasic(*((Double_t *)ptr));
               break;
            case kDouble32_t:
               JsonWriteBasic(*((Double_t *)ptr));
               break;
            case kchar:
               JsonWriteBasic(*((char *)ptr));
               break;
            case kUChar_t:
               JsonWriteBasic(*((UChar_t *)ptr));
               break;
            case kUShort_t:
               JsonWriteBasic(*((UShort_t *)ptr));
               break;
            case kUInt_t:
               JsonWriteBasic(*((UInt_t *)ptr));
               break;
            case kULong_t:
               JsonWriteBasic(*((ULong_t *)ptr));
               break;
            case kBits:
               JsonWriteBasic(*((UInt_t *)ptr));
               break;
            case kLong64_t:
               JsonWriteBasic(*((Long64_t *)ptr));
               break;
            case kULong64_t:
               JsonWriteBasic(*((ULong64_t *)ptr));
               break;
            case kBool_t:
               JsonWriteBasic(*((Bool_t *)ptr));
               break;
            case kFloat16_t:
               JsonWriteBasic(*((Float_t *)ptr));
               break;
            case kOther_t:
            case kNoType_t:
            case kVoid_t:
               break;
         }
      } else if ((member->GetArrayDim() == 1) || (fCompact > 0)) {

         Int_t n = member->GetMaxIndex(0);
         for (Int_t ndim = 1; ndim < member->GetArrayDim(); ndim++)
            n *= member->GetMaxIndex(ndim);

         switch (tid) {
            case kChar_t:
               WriteFastArray((Char_t *)ptr, n);
               break;
            case kShort_t:
               WriteFastArray((Short_t *)ptr, n);
               break;
            case kInt_t:
               WriteFastArray((Int_t *)ptr, n);
               break;
            case kLong_t:
               WriteFastArray((Long_t *)ptr, n);
               break;
            case kFloat_t:
               WriteFastArray((Float_t *)ptr, n);
               break;
            case kCounter:
               WriteFastArray((Int_t *)ptr, n);
               break;
            case kCharStar:
               WriteFastArray((Char_t *)ptr, n);
               break;
            case kDouble_t:
               WriteFastArray((Double_t *)ptr, n);
               break;
            case kDouble32_t:
               WriteFastArray((Double_t *)ptr, n);
               break;
            case kchar:
               WriteFastArray((char *)ptr, n);
               break;
            case kUChar_t:
               WriteFastArray((UChar_t *)ptr, n);
               break;
            case kUShort_t:
               WriteFastArray((UShort_t *)ptr, n);
               break;
            case kUInt_t:
               WriteFastArray((UInt_t *)ptr, n);
               break;
            case kULong_t:
               WriteFastArray((ULong_t *)ptr, n);
               break;
            case kBits:
               WriteFastArray((UInt_t *)ptr, n);
               break;
            case kLong64_t:
               WriteFastArray((Long64_t *)ptr, n);
               break;
            case kULong64_t:
               WriteFastArray((ULong64_t *)ptr, n);
               break;
            case kBool_t:
               WriteFastArray((Bool_t *)ptr, n);
               break;
            case kFloat16_t:
               WriteFastArray((Float_t *)ptr, n);
               break;
            case kOther_t:
            case kNoType_t:
            case kVoid_t:
               break;
         }
      } else {
         // here generic code to write n-dimensional array

         TArrayI indexes(member->GetArrayDim() - 1);
         indexes.Reset(0);

         Int_t cnt = 0;
         while (cnt >= 0) {
            if (indexes[cnt] >= member->GetMaxIndex(cnt)) {
               fOutBuffer.Append(" ]");
               indexes[cnt] = 0;
               cnt--;
               if (cnt >= 0) indexes[cnt]++;
               continue;
            }

            if (indexes[cnt] > 0)
               fOutBuffer.Append(fArraySepar);
            else
               fOutBuffer.Append("[ ");

            if (++cnt == indexes.GetSize()) {
               Int_t shift = 0;
               for (Int_t k = 0; k < indexes.GetSize(); k++) {
                  shift = shift * member->GetMaxIndex(k) + indexes[k];
               }

               Int_t len = member->GetMaxIndex(indexes.GetSize());
               shift *= len;

               fValue.Clear();

               WriteFastArray((Int_t *)ptr + shift, len);

               switch (tid) {
                  case kChar_t:
                     WriteFastArray((Char_t *)ptr + shift, len);
                     break;
                  case kShort_t:
                     WriteFastArray((Short_t *)ptr + shift, len);
                     break;
                  case kInt_t:
                     WriteFastArray((Int_t *)ptr + shift, len);
                     break;
                  case kLong_t:
                     WriteFastArray((Long_t *)ptr + shift, len);
                     break;
                  case kFloat_t:
                     WriteFastArray((Float_t *)ptr + shift, len);
                     break;
                  case kCounter:
                     WriteFastArray((Int_t *)ptr + shift, len);
                     break;
                  case kCharStar:
                     WriteFastArray((Char_t *)ptr + shift, len);
                     break;
                  case kDouble_t:
                     WriteFastArray((Double_t *)ptr + shift, len);
                     break;
                  case kDouble32_t:
                     WriteFastArray((Double_t *)ptr + shift, len);
                     break;
                  case kchar:
                     WriteFastArray((char *)ptr + shift, len);
                     break;
                  case kUChar_t:
                     WriteFastArray((UChar_t *)ptr + shift, len);
                     break;
                  case kUShort_t:
                     WriteFastArray((UShort_t *)ptr + shift, len);
                     break;
                  case kUInt_t:
                     WriteFastArray((UInt_t *)ptr + shift, len);
                     break;
                  case kULong_t:
                     WriteFastArray((ULong_t *)ptr + shift, len);
                     break;
                  case kBits:
                     WriteFastArray((UInt_t *)ptr + shift, len);
                     break;
                  case kLong64_t:
                     WriteFastArray((Long64_t *)ptr + shift, len);
                     break;
                  case kULong64_t:
                     WriteFastArray((ULong64_t *)ptr + shift, len);
                     break;
                  case kBool_t:
                     WriteFastArray((Bool_t *)ptr + shift, len);
                     break;
                  case kFloat16_t:
                     WriteFastArray((Float_t *)ptr + shift, len);
                     break;
                  case kOther_t:
                  case kNoType_t:
                  case kVoid_t:
                     fValue = "null";
                     break;
               }

               fOutBuffer.Append(fValue);
               cnt--;
               indexes[cnt]++;
            }
         }

         fValue = fOutBuffer;
      }
   } else if (memberClass == TString::Class()) {
      TString *str = (TString *) ptr;
      fValue.Append("\"");
      if (str != 0) fValue.Append(*str);
      fValue.Append("\"");
   } else if (memberClass->GetBaseClassOffset(TArray::Class()) == 0) {
      TArray *arr = (TArray *) ptr;
      if ((arr != 0) && (arr->GetSize() > 0)) {
         arr->Streamer(*this);
         // WriteFastArray(arr->GetArray(), arr->GetSize());
         if (Stack()->fValues.GetLast() > 0) {
            Warning("TBufferJSON", "When streaming TArray, more than 1 object in the stack, use second item");
            fValue = Stack()->fValues.At(1)->GetName();
         }
      } else
         fValue = "[]";
   }

   PopStack();

   if (fValue.Length() == 0) return "not supported";

   return fValue;
}

//______________________________________________________________________________
void TBufferJSON::WriteObject(const TObject *obj)
{
   // Convert object into xml structures.
   // !!! Should be used only by TBufferJSON itself.
   // Use ConvertToXML() methods to convert your object to xml
   // Redefined here to avoid gcc 3.x warning

   Info("WriteObject", "Object %p", obj);

   WriteObjectAny(obj, TObject::Class());
}

//______________________________________________________________________________
TJSONStackObj *TBufferJSON::PushStack(Int_t inclevel)
{
   // add new level to the structures stack

   TJSONStackObj *curr = Stack();
   TJSONStackObj *stack = new TJSONStackObj();
   stack->fLevel = (curr ? curr->fLevel : 0) + inclevel;
   fStack.Add(stack);
   return stack;
}

//______________________________________________________________________________
TJSONStackObj *TBufferJSON::PopStack()
{
   // remove one level from xml stack

   TObject *last = fStack.Last();
   if (last != 0) {
      fStack.Remove(last);
      delete last;
      fStack.Compress();
   }
   return dynamic_cast<TJSONStackObj *>(fStack.Last());
}

//______________________________________________________________________________
TJSONStackObj *TBufferJSON::Stack(Int_t depth)
{
   // return xml stack object of specified depth

   TJSONStackObj *stack = 0;
   if (depth <= fStack.GetLast())
      stack = dynamic_cast<TJSONStackObj *>(fStack.At(fStack.GetLast() - depth));
   return stack;
}

//______________________________________________________________________________
void TBufferJSON::AppendOutput(const char *line0, const char *line1)
{
   // Info("AppendOutput","  '%s' '%s'", line0, line1?line1 : "---");

   if (line0 != 0) fOutBuffer.Append(line0);

   if (line1 != 0) {
      if (fCompact < 2) fOutBuffer.Append("\n");

      if (strlen(line1) > 0) {
         if (fCompact < 1) {
            TJSONStackObj *stack = Stack();
            if ((stack != 0) && (stack->fLevel > 0))
               fOutBuffer.Append(' ', stack->fLevel);
         }
         fOutBuffer.Append(line1);
      }
   }
}

//______________________________________________________________________________
void TBufferJSON::JsonStartElement()
{
   TJSONStackObj *stack = Stack();
   if ((stack != 0) && stack->IsStreamerElement() && !stack->fIsObjStarted) {

      if ((fValue.Length() > 0) || (stack->fValues.GetLast() >= 0))
         Error("JsonWriteObject", "Non-empty value buffer when start writing object");

      stack->fIsPostProcessed = kTRUE;
      stack->fIsObjStarted = kTRUE;

      if (!stack->fIsBaseClass) {
         AppendOutput(",", "\"");
         AppendOutput(stack->fElem->GetName());
         AppendOutput("\"");
         AppendOutput(fSemicolon.Data());
      }
   }
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteObject(const void *obj, const TClass *cl)
{
   // Write object to buffer
   // If object was written before, only pointer will be stored
   // Return pointer to top xml node, representing object

   // static int  cnt = 0;

   if (!cl) obj = 0;

   //if (cnt++>100) return;

   if (gDebug > 1)
      Info("JsonWriteObject", "Object %p class %s", obj, cl ? cl->GetName() : "null");

   // special handling for TArray classes - they should appear not as object but JSON array
   Bool_t isarray = strncmp("TArray", (cl ? cl->GetName() : ""), 6) == 0;
   if (isarray) isarray = ((TClass *)cl)->GetBaseClassOffset(TArray::Class()) == 0;
   Bool_t iscollect = !isarray && (cl != 0) && (((TClass *)cl)->GetBaseClassOffset(TCollection::Class()) == 0);

//   if (Stack() && Stack()->fElem && iscollect)
//      Info("Write","Collection %s of class %s", Stack()->fElem->GetName(), cl->GetName());

   // special case for TString - it is saved as string in JSON
   Bool_t iststring = !isarray && !iscollect && (cl == TString::Class()) && (fStack.GetLast() >= 0);

   if (!isarray) {
      JsonStartElement();
   }

   if (obj == 0) {
      AppendOutput("null");
      return;
   }

   TJSONStackObj *stack = 0;

   // for array and string different handling - they not recognized at the end as objects in JSON
   if (!isarray && !iststring) {
      // add element name which should correspond to the object

      std::map<const void *, unsigned>::const_iterator iter = fJsonrMap.find(obj);

      if (iter != fJsonrMap.end()) {
         AppendOutput(Form("\"$ref:%u\"", iter->second));
         return;
      }

      // if (fJsonrCnt<10) Info("JsonWriteObject","Object cl:%s $ref%u", cl->GetName(), fJsonrCnt);

      fJsonrMap[obj] = fJsonrCnt++;

      stack = PushStack(2);
      AppendOutput("{", "\"_typename\"");
      AppendOutput(fSemicolon.Data());
      AppendOutput("\"JSROOTIO.");
      AppendOutput(cl->GetName());
      AppendOutput("\"");
   } else {
      stack = PushStack(0);
   }

//   if (strcmp(cl->GetName(), "TMethodCall") == 0) {
//      gDebug=5; cl->GetStreamerInfo()->ls("*");
//   }

   if (gDebug > 3)
      Info("JsonWriteObject", "Starting object %p write for class: %s",
           obj, cl->GetName());

   stack->fIsArray = isarray;

   if (iscollect)
      JsonStreamCollection((TCollection *) obj, cl);
   else
      ((TClass *)cl)->Streamer((void *)obj, *this);

   if (gDebug > 3)
      Info("JsonWriteObject", "Done object %p write for class: %s",
           obj, cl->GetName());

//   if (strcmp(cl->GetName(), "TMethodCall") == 0) gDebug=0;

   if (isarray) {
      if (stack->fValues.GetLast() != 0)
         Error("JsonWriteObject", "Problem when writing array");
      stack->fValues.Delete();
   } else if (iststring) {
      if (stack->fValues.GetLast() > 1)
         Error("JsonWriteObject", "Problem when writing TString");
      stack->fValues.Delete();
      AppendOutput(fValue.Data());
      fValue.Clear();
   } else {
      if (stack->fValues.GetLast() >= 0)
         Error("JsonWriteObject", "Non-empty values %d for class %s",
               stack->fValues.GetLast() + 1, cl->GetName());
   }

   PopStack();

   if (!isarray && !iststring) {
      AppendOutput(0, "}");
   }
}

//______________________________________________________________________________
void TBufferJSON::JsonStreamCollection(TCollection *col, const TClass *)
{
   // store content of collection

   AppendOutput(",", "\"name\"");
   AppendOutput(fSemicolon.Data());
   AppendOutput("\"");
   AppendOutput(col->GetName());
   AppendOutput("\",", "\"arr\"");
   AppendOutput(fSemicolon.Data());

   // collection treated as JS Array and its reference kept in the objects map
   AppendOutput("[");   // fJsonrCnt++; // account array of objects

   bool islist = col->InheritsFrom(TList::Class());
   TString sopt;
   sopt.Capacity(500);
   sopt = "[";

   TIter iter(col);
   TObject *obj;
   Bool_t first = kTRUE;
   while ((obj = iter()) != 0) {
      if (!first) {
         AppendOutput(fArraySepar.Data());
         sopt.Append(fArraySepar.Data());
      }
      if (islist) {
         sopt.Append("\"");
         sopt.Append(iter.GetOption());
         sopt.Append("\"");
      }

      JsonWriteObject(obj, obj->IsA());

      first = kFALSE;
   }

   sopt.Append("]");

   AppendOutput("]");

   if (islist) {
      AppendOutput(",", "\"opt\"");
      AppendOutput(fSemicolon.Data());
      AppendOutput(sopt.Data());
      /* fJsonrCnt++; */ // account array of options
   }
}


//______________________________________________________________________________
void TBufferJSON::IncrementLevel(TVirtualStreamerInfo *info)
{
   // Function is called from TStreamerInfo WriteBuffer and Readbuffer functions
   // and indent new level in xml structure.
   // This call indicates, that TStreamerInfo functions starts streaming
   // object data of correspondent class

   if (gDebug > 2)
      Info("IncrementLevel", "Class: %s", (info ? info->GetClass()->GetName() : "custom"));

   WorkWithClass((TStreamerInfo *)info);
}

//______________________________________________________________________________
void  TBufferJSON::WorkWithClass(TStreamerInfo *sinfo, const TClass *cl)
{
   // Prepares buffer to stream data of specified class

   fExpectedChain = kFALSE;

   if (sinfo != 0) cl = sinfo->GetClass();

   if (cl == 0) return;

   if (gDebug > 3) Info("WorkWithClass", "Class: %s", cl->GetName());

   TJSONStackObj *stack = Stack();

   if ((stack != 0) && stack->IsStreamerElement() &&
         (stack->fElem->GetType() == TStreamerInfo::kObject) &&
         !stack->fIsObjStarted) {

      stack->fIsObjStarted = kTRUE;

      fJsonrCnt++;   // count object, but do not keep reference

      AppendOutput(",", "\"");
      AppendOutput(stack->fElem->GetName());

      stack = PushStack(2);
      AppendOutput("\" : {", "\"_typename\"");
      AppendOutput(fSemicolon.Data());
      AppendOutput("\"JSROOTIO.");
      AppendOutput(cl->GetName());
      AppendOutput("\"");
   } else {
      stack = PushStack(0);
   }


   stack->fInfo = sinfo;
   stack->fIsStreamerInfo = kTRUE;
}

//______________________________________________________________________________
void TBufferJSON::DecrementLevel(TVirtualStreamerInfo *info)
{
   // Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions
   // and decrease level in xml structure.

   fExpectedChain = kFALSE;

   if (gDebug > 2)
      Info("DecrementLevel", "Class: %s",
           (info ? info->GetClass()->GetName() : "custom"));

   TJSONStackObj *stack = Stack();

   if (stack->IsStreamerElement()) {
      if (gDebug > 3)
         Info("DecrementLevel", "    Perform post-processing elem: %s",
              stack->fElem->GetName());

      PerformPostProcessing(stack);

      PopStack();  // remove stack of last element

      stack = Stack();
   }

   if (stack->fInfo != (TStreamerInfo *) info)
      Error("DecrementLevel", "    Mismatch of streamer info");

   PopStack();                       // back from data of stack info

   if (gDebug > 3)
      Info("DecrementLevel", "Class: %s done",
           (info ? info->GetClass()->GetName() : "custom"));
}

//______________________________________________________________________________
void TBufferJSON::SetStreamerElementNumber(Int_t number)
{
   // Function is called from TStreamerInfo WriteBuffer and Readbuffer functions
   // and add/verify next element of xml structure
   // This calls allows separate data, correspondent to one class member, from another

   if (gDebug > 3)
      Info("SetStreamerElementNumber", "Number %d", number);

   WorkWithElement(0, number);
}

//______________________________________________________________________________
void TBufferJSON::WorkWithElement(TStreamerElement *elem, Int_t number)
{
   // This is call-back from streamer which indicates
   // that class member will be streamed
   // Name of element used in JSON

   fExpectedChain = kFALSE;

   TJSONStackObj *stack = Stack();
   if (stack == 0) {
      Error("WorkWithElement", "stack is empty");
      return;
   }

   if (gDebug > 3)
      Info("WorkWithElement", "    Start element %s type %d",
           elem ? elem->GetName() : "---", elem ? elem->GetType() : -1);

   if (stack->IsStreamerElement()) {
      // this is post processing

      if (gDebug > 3)
         Info("WorkWithElement", "    Perform post-processing elem: %s",
              stack->fElem->GetName());

      PerformPostProcessing(stack);

      PopStack();                    // go level back
      stack = dynamic_cast<TJSONStackObj *>(fStack.Last());
   }

   fValue.Clear();

   if (stack == 0) {
      Error("WorkWithElement", "Lost of stack");
      return;
   }

   Int_t comp_type = 0;

   if ((number >= 0) && (elem == 0)) {

      TStreamerInfo *info = stack->fInfo;
      if (!stack->IsStreamerInfo()) {
         Error("WorkWithElement", "Problem in Inc/Dec level");
         return;
      }

      comp_type = info->GetTypes()[number];

      elem = info->GetStreamerElementReal(number, 0);
   } else if (elem) {
      comp_type = elem->GetType();
   }

   if (gDebug > 3)
      Info("WorkWithElement", "    Start element %s type %d",
           elem ? elem->GetName() : "---", elem ? elem->GetType() : -1);

   if (elem == 0) {
      Error("WorkWithElement", "streamer info returns elem = 0");
      return;
   }

   if (gDebug > 3)
      Info("WorkWithElement", "    Element %s type %d",
           elem ? elem->GetName() : "---", elem ? elem->GetType() : -1);

   Bool_t isBasicType = (elem->GetType() > 0) && (elem->GetType() < 20);

   fExpectedChain = isBasicType && (comp_type - elem->GetType() == TStreamerInfo::kOffsetL);

   if (fExpectedChain && (gDebug > 3))
      Info("WorkWithElement", "    Expects chain for elem %s number %d",
           elem->GetName(), number);

   TClass *base_class = 0;

   if ((elem->GetType() == TStreamerInfo::kBase) ||
         ((elem->GetType() == TStreamerInfo::kTObject) &&
          !strcmp(elem->GetName(), TObject::Class()->GetName())) ||
         ((elem->GetType() == TStreamerInfo::kTNamed) &&
          !strcmp(elem->GetName(), TNamed::Class()->GetName())))
      base_class = elem->GetClassPointer();

   if (base_class && (gDebug > 3))
      Info("WorkWithElement", "   Expects base class %s with standard streamer",
           base_class->GetName());

   stack = PushStack(0);
   stack->fElem = (TStreamerElement *) elem;
   stack->fElemNumber = number;
   stack->fIsElemOwner = (number < 0);
   stack->fIsBaseClass = (base_class != 0);
}

//______________________________________________________________________________
void TBufferJSON::ClassBegin(const TClass *cl, Version_t)
{
   // Special function for custom streamers.
   // Should be called in the beginning

   WorkWithClass(0, cl);
}

//______________________________________________________________________________
void TBufferJSON::ClassEnd(const TClass *)
{
   // Special function for custom streamers.
   // Should be called at the end

   DecrementLevel(0);
}

//______________________________________________________________________________
void TBufferJSON::ClassMember(const char *name, const char *typeName,
                              Int_t arrsize1, Int_t arrsize2)
{
   // Special function for custom streamers.
   // Provides possibility to mark name and type of stored data

   if (typeName == 0) typeName = name;

   if ((name == 0) || (strlen(name) == 0)) {
      Error("ClassMember", "Invalid member name");
      return;
   }

   TString tname = typeName;

   Int_t typ_id = -1;

   if (strcmp(typeName, "raw:data") == 0)
      typ_id = TStreamerInfo::kMissing;

   if (typ_id < 0) {
      TDataType *dt = gROOT->GetType(typeName);
      if (dt != 0)
         if ((dt->GetType() > 0) && (dt->GetType() < 20))
            typ_id = dt->GetType();
   }

   if (typ_id < 0)
      if (strcmp(name, typeName) == 0) {
         TClass *cl = TClass::GetClass(tname.Data());
         if (cl != 0) typ_id = TStreamerInfo::kBase;
      }

   if (typ_id < 0) {
      Bool_t isptr = kFALSE;
      if (tname[tname.Length() - 1] == '*') {
         tname.Resize(tname.Length() - 1);
         isptr = kTRUE;
      }
      TClass *cl = TClass::GetClass(tname.Data());
      if (cl == 0) {
         Error("ClassMember", "Invalid class specifier %s", typeName);
         return;
      }

      if (cl->IsTObject())
         typ_id = isptr ? TStreamerInfo::kObjectp : TStreamerInfo::kObject;
      else
         typ_id = isptr ? TStreamerInfo::kAnyp : TStreamerInfo::kAny;

      if ((cl == TString::Class()) && !isptr)
         typ_id = TStreamerInfo::kTString;
   }

   TStreamerElement *elem = 0;

   if (typ_id == TStreamerInfo::kMissing) {
      elem = new TStreamerElement(name, "title", 0, typ_id, "raw:data");
   } else  if (typ_id == TStreamerInfo::kBase) {
      TClass *cl = TClass::GetClass(tname.Data());
      if (cl != 0) {
         TStreamerBase *b = new TStreamerBase(tname.Data(), "title", 0);
         b->SetBaseVersion(cl->GetClassVersion());
         elem = b;
      }
   } else if ((typ_id > 0) && (typ_id < 20)) {
      elem = new TStreamerBasicType(name, "title", 0, typ_id, typeName);
   } else if ((typ_id == TStreamerInfo::kObject) ||
              (typ_id == TStreamerInfo::kTObject) ||
              (typ_id == TStreamerInfo::kTNamed)) {
      elem = new TStreamerObject(name, "title", 0, tname.Data());
   } else if (typ_id == TStreamerInfo::kObjectp) {
      elem = new TStreamerObjectPointer(name, "title", 0, tname.Data());
   } else if (typ_id == TStreamerInfo::kAny) {
      elem = new TStreamerObjectAny(name, "title", 0, tname.Data());
   } else if (typ_id == TStreamerInfo::kAnyp) {
      elem = new TStreamerObjectAnyPointer(name, "title", 0, tname.Data());
   } else if (typ_id == TStreamerInfo::kTString) {
      elem = new TStreamerString(name, "title", 0);
   }

   if (elem == 0) {
      Error("ClassMember", "Invalid combination name = %s type = %s",
            name, typeName);
      return;
   }

   if (arrsize1 > 0) {
      elem->SetArrayDim(arrsize2 > 0 ? 2 : 1);
      elem->SetMaxIndex(0, arrsize1);
      if (arrsize2 > 0)
         elem->SetMaxIndex(1, arrsize2);
   }

   // we indicate that there is no streamerinfo
   WorkWithElement(elem, -1);
}

//______________________________________________________________________________
void TBufferJSON::PerformPostProcessing(TJSONStackObj *stack,
                                        const TStreamerElement *elem)
{
   // Function is converts TObject and TString structures to more compact representation

   if ((elem == 0) && stack->fIsPostProcessed) return;
   if (elem == 0) elem = stack->fElem;
   if (elem == 0) return;

   if (gDebug > 3)
      Info("PerformPostProcessing", "Start element %s type %s",
           elem->GetName(), elem->GetTypeName());

   stack->fIsPostProcessed = kTRUE;

   // when element was written as separate object, close only braces and exit
   if (stack->fIsObjStarted) {
      AppendOutput("", "}");
      return;
   }

   const char *typname = stack->fIsBaseClass ? elem->GetName() : elem->GetTypeName();
   Bool_t isTObject = (elem->GetType() == TStreamerInfo::kTObject) || (strcmp("TObject", typname) == 0);
   Bool_t isTString = elem->GetType() == TStreamerInfo::kTString;
   Bool_t isOffsetPArray = (elem->GetType() > TStreamerInfo::kOffsetP) && (elem->GetType() < TStreamerInfo::kOffsetP + 20);

   Bool_t isTArray = (strncmp("TArray", typname, 6) == 0);

   if (!stack->fIsBaseClass && (elem != 0)) {
      AppendOutput(",", "\"");
      AppendOutput(elem->GetName());
      AppendOutput("\"");
      AppendOutput(fSemicolon.Data());
   }

   if (isTString) {
      // in principle, we should just remove all kind of string length information

      if (gDebug > 3)
         Info("PerformPostProcessing", "reformat string value = '%s'", fValue.Data());

      stack->fValues.Delete();
   } else if (isOffsetPArray) {
      // basic array with [fN] comment

      if ((stack->fValues.GetLast() < 0) && (fValue == "0")) {
         fValue = "[]";
      } else if ((stack->fValues.GetLast() == 0) &&
                 (strcmp(stack->fValues.Last()->GetName(), "1") == 0)) {
         stack->fValues.Delete();
      } else {
         Error("PerformPostProcessing", "Wrong values for kOffsetP type %s name %s",
               typname, (elem ? elem->GetName() : "---"));
         stack->fValues.Delete();
         fValue = "[]";
      }
   } else if (isTObject) {
      if (stack->fValues.GetLast() != 0) {
         if (gDebug > 0)
            Error("PerformPostProcessing", "When storing TObject, more than 2 items are stored");
         AppendOutput(",", "\"dummy\"");
         AppendOutput(fSemicolon.Data());
      } else {
         AppendOutput(",", "\"fUniqueID\"");
         AppendOutput(fSemicolon.Data());
         AppendOutput(stack->fValues.At(0)->GetName());
         AppendOutput(",", "\"fBits\"");
         AppendOutput(fSemicolon.Data());
      }

      stack->fValues.Delete();
   } else if (isTArray) {

      if (gDebug > 3)
         Info("PerformPostProcessing", "TArray postprocessing");

      // work around for TArray classes - remove first element with array length

      // only for base class insert fN and fArray tags

      if (stack->fIsBaseClass && (stack->fValues.GetLast() == 0)) {
         AppendOutput(",", "\"fN\"");
         AppendOutput(fSemicolon.Data());
         AppendOutput(stack->fValues.At(0)->GetName());
         AppendOutput(",", "\"fArray\"");
         AppendOutput(fSemicolon.Data());
      }

      stack->fValues.Delete();
   }

   if (stack->fIsBaseClass && !isTArray && !isTObject) {
      if ((fValue.Length() != 0) && (gDebug > 0))
         Error("PerformPostProcessing", "Non-empty value for base class");
      return;
   }

   if (stack->fValues.GetLast() >= 0) {
      AppendOutput("{ ");
      fJsonrCnt++;   // count object, but do not keep reference
      TString sbuf;
      for (Int_t n = 0; n <= stack->fValues.GetLast(); n++) {
         sbuf.Form("\"elem%d\"%s", n, fSemicolon.Data());
         AppendOutput(sbuf.Data());
         AppendOutput(stack->fValues.At(n)->GetName());
         AppendOutput(fArraySepar.Data());
      }
      sbuf.Form("\"elem%d\"%s", stack->fValues.GetLast() + 1, fSemicolon.Data());
      AppendOutput(sbuf.Data());
   }

   if (fValue.Length() == 0) {
      AppendOutput("null");
   } else {
      AppendOutput(fValue.Data());
      fValue.Clear();
   }

   if (stack->fValues.GetLast() >= 0)
      AppendOutput("}");
}

//______________________________________________________________________________
TClass *TBufferJSON::ReadClass(const TClass *, UInt_t *)
{
   // suppressed function of TBuffer

   return 0;
}

//______________________________________________________________________________
void TBufferJSON::WriteClass(const TClass *)
{
   // suppressed function of TBuffer

}

//______________________________________________________________________________
Int_t TBufferJSON::CheckByteCount(UInt_t /*r_s */, UInt_t /*r_c*/,
                                  const TClass * /*cl*/)
{
   // suppressed function of TBuffer

   return 0;
}

//______________________________________________________________________________
Int_t  TBufferJSON::CheckByteCount(UInt_t, UInt_t, const char *)
{
   // suppressed function of TBuffer

   return 0;
}

//______________________________________________________________________________
void TBufferJSON::SetByteCount(UInt_t, Bool_t)
{
   // suppressed function of TBuffer

}

//______________________________________________________________________________
void TBufferJSON::SkipVersion(const TClass *cl)
{
   // Skip class version from I/O buffer.
   ReadVersion(0, 0, cl);
}

//______________________________________________________________________________
Version_t TBufferJSON::ReadVersion(UInt_t *start, UInt_t *bcnt,
                                   const TClass * /*cl*/)
{
   // read version value from buffer

   Version_t res = 0;

   if (start) *start = 0;
   if (bcnt) *bcnt = 0;

   if (gDebug > 3) Info("ReadVersion", "Version = %d", res);

   return res;
}

//______________________________________________________________________________
UInt_t TBufferJSON::WriteVersion(const TClass * /*cl*/, Bool_t /* useBcnt */)
{
   // Ignored in TBufferJSON

   return 0;
}

//______________________________________________________________________________
void *TBufferJSON::ReadObjectAny(const TClass *)
{
   // Read object from buffer. Only used from TBuffer

   return 0;
}

//______________________________________________________________________________
void TBufferJSON::SkipObjectAny()
{
   // Skip any kind of object from buffer
   // Actually skip only one node on current level of xml structure
}

//______________________________________________________________________________
void TBufferJSON::WriteObjectClass(const void *actualObjStart,
                                   const TClass *actualClass)
{
   // Write object to buffer. Only used from TBuffer

   if (gDebug > 3)
      Info("WriteObject", "Class %s", (actualClass ? actualClass->GetName() : " null"));

   JsonWriteObject(actualObjStart, actualClass);
}

#define TJSONPushValue()                                 \
   if (fValue.Length() > 0) Stack()->PushValue(fValue);


// macro to read array, which include size attribute
#define TBufferJSON_ReadArray(tname, vname)              \
   {                                                        \
      if (!vname) return 0;                                 \
      return 1;                                             \
   }

//______________________________________________________________________________
void TBufferJSON::ReadFloat16(Float_t *, TStreamerElement * /*ele*/)
{
   // read a Float16_t from the buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadDouble32(Double_t *, TStreamerElement * /*ele*/)
{
   // read a Double32_t from the buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadWithFactor(Float_t *, Double_t /* factor */,
                                 Double_t /* minvalue */)
{
   // Read a Double32_t from the buffer when the factor and minimun value have
   // been specified
   // see comments about Double32_t encoding at TBufferFile::WriteDouble32().
   // Currently TBufferJSON does not optimize space in this case.

}

//______________________________________________________________________________
void TBufferJSON::ReadWithNbits(Float_t *, Int_t /* nbits */)
{
   // Read a Float16_t from the buffer when the number of bits is specified
   // (explicitly or not)
   // see comments about Float16_t encoding at TBufferFile::WriteFloat16().
   // Currently TBufferJSON does not optimize space in this case.

}

//______________________________________________________________________________
void TBufferJSON::ReadWithFactor(Double_t *, Double_t /* factor */,
                                 Double_t /* minvalue */)
{
   // Read a Double32_t from the buffer when the factor and minimun value have
   // been specified
   // see comments about Double32_t encoding at TBufferFile::WriteDouble32().
   // Currently TBufferJSON does not optimize space in this case.

}

//______________________________________________________________________________
void TBufferJSON::ReadWithNbits(Double_t *, Int_t /* nbits */)
{
   // Read a Double32_t from the buffer when the number of bits is specified
   // (explicitly or not)
   // see comments about Double32_t encoding at TBufferFile::WriteDouble32().
   // Currently TBufferJSON does not optimize space in this case.

}

//______________________________________________________________________________
void TBufferJSON::WriteFloat16(Float_t *f, TStreamerElement * /*ele*/)
{
   // write a Float16_t to the buffer

   TJSONPushValue();

   JsonWriteBasic(*f);
}

//______________________________________________________________________________
void TBufferJSON::WriteDouble32(Double_t *d, TStreamerElement * /*ele*/)
{
   // write a Double32_t to the buffer

   TJSONPushValue();

   JsonWriteBasic(*d);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Bool_t *&b)
{
   // Read array of Bool_t from buffer

   TBufferJSON_ReadArray(Bool_t, b);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Char_t *&c)
{
   // Read array of Char_t from buffer

   TBufferJSON_ReadArray(Char_t, c);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(UChar_t *&c)
{
   // Read array of UChar_t from buffer

   TBufferJSON_ReadArray(UChar_t, c);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Short_t *&h)
{
   // Read array of Short_t from buffer

   TBufferJSON_ReadArray(Short_t, h);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(UShort_t *&h)
{
   // Read array of UShort_t from buffer

   TBufferJSON_ReadArray(UShort_t, h);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Int_t *&i)
{
   // Read array of Int_t from buffer

   TBufferJSON_ReadArray(Int_t, i);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(UInt_t *&i)
{
   // Read array of UInt_t from buffer

   TBufferJSON_ReadArray(UInt_t, i);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Long_t *&l)
{
   // Read array of Long_t from buffer

   TBufferJSON_ReadArray(Long_t, l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(ULong_t *&l)
{
   // Read array of ULong_t from buffer

   TBufferJSON_ReadArray(ULong_t, l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Long64_t *&l)
{
   // Read array of Long64_t from buffer

   TBufferJSON_ReadArray(Long64_t, l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(ULong64_t *&l)
{
   // Read array of ULong64_t from buffer

   TBufferJSON_ReadArray(ULong64_t, l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Float_t *&f)
{
   // Read array of Float_t from buffer

   TBufferJSON_ReadArray(Float_t, f);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArray(Double_t *&d)
{
   // Read array of Double_t from buffer

   TBufferJSON_ReadArray(Double_t, d);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArrayFloat16(Float_t *&f, TStreamerElement * /*ele*/)
{
   // Read array of Float16_t from buffer

   TBufferJSON_ReadArray(Float_t, f);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadArrayDouble32(Double_t *&d, TStreamerElement * /*ele*/)
{
   // Read array of Double32_t from buffer

   TBufferJSON_ReadArray(Double_t, d);
}

// macro to read array from xml buffer
#define TBufferJSON_ReadStaticArray(vname)               \
   {                                                        \
      if (!vname) return 0;                                 \
      return 1;                                             \
   }

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Bool_t *b)
{
   // Read array of Bool_t from buffer

   TBufferJSON_ReadStaticArray(b);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Char_t *c)
{
   // Read array of Char_t from buffer

   TBufferJSON_ReadStaticArray(c);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(UChar_t *c)
{
   // Read array of UChar_t from buffer

   TBufferJSON_ReadStaticArray(c);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Short_t *h)
{
   // Read array of Short_t from buffer

   TBufferJSON_ReadStaticArray(h);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(UShort_t *h)
{
   // Read array of UShort_t from buffer

   TBufferJSON_ReadStaticArray(h);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Int_t *i)
{
   // Read array of Int_t from buffer

   TBufferJSON_ReadStaticArray(i);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(UInt_t *i)
{
   // Read array of UInt_t from buffer

   TBufferJSON_ReadStaticArray(i);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Long_t *l)
{
   // Read array of Long_t from buffer

   TBufferJSON_ReadStaticArray(l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(ULong_t *l)
{
   // Read array of ULong_t from buffer

   TBufferJSON_ReadStaticArray(l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Long64_t *l)
{
   // Read array of Long64_t from buffer

   TBufferJSON_ReadStaticArray(l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(ULong64_t *l)
{
   // Read array of ULong64_t from buffer

   TBufferJSON_ReadStaticArray(l);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Float_t *f)
{
   // Read array of Float_t from buffer

   TBufferJSON_ReadStaticArray(f);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArray(Double_t *d)
{
   // Read array of Double_t from buffer

   TBufferJSON_ReadStaticArray(d);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArrayFloat16(Float_t *f, TStreamerElement * /*ele*/)
{
   // Read array of Float16_t from buffer

   TBufferJSON_ReadStaticArray(f);
}

//______________________________________________________________________________
Int_t TBufferJSON::ReadStaticArrayDouble32(Double_t *d, TStreamerElement * /*ele*/)
{
   // Read array of Double32_t from buffer

   TBufferJSON_ReadStaticArray(d);
}

// macro to read content of array, which not include size of array
// macro also treat situation, when instead of one single array chain
// of several elements should be produced
#define TBufferJSON_ReadFastArray(vname)                 \
   {                                                        \
      if (n <= 0) return;                                   \
      if (!vname) return;                                   \
   }

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Bool_t *b, Int_t n)
{
   // read array of Bool_t from buffer

   TBufferJSON_ReadFastArray(b);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Char_t *c, Int_t n)
{
   // read array of Char_t from buffer

   TBufferJSON_ReadFastArray(c);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayString(Char_t *c, Int_t n)
{
   // read array of Char_t from buffer

   TBufferJSON_ReadFastArray(c);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(UChar_t *c, Int_t n)
{
   // read array of UChar_t from buffer

   TBufferJSON_ReadFastArray(c);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Short_t *h, Int_t n)
{
   // read array of Short_t from buffer

   TBufferJSON_ReadFastArray(h);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(UShort_t *h, Int_t n)
{
   // read array of UShort_t from buffer

   TBufferJSON_ReadFastArray(h);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Int_t *i, Int_t n)
{
   // read array of Int_t from buffer

   TBufferJSON_ReadFastArray(i);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(UInt_t *i, Int_t n)
{
   // read array of UInt_t from buffer

   TBufferJSON_ReadFastArray(i);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Long_t *l, Int_t n)
{
   // read array of Long_t from buffer

   TBufferJSON_ReadFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(ULong_t *l, Int_t n)
{
   // read array of ULong_t from buffer

   TBufferJSON_ReadFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Long64_t *l, Int_t n)
{
   // read array of Long64_t from buffer

   TBufferJSON_ReadFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(ULong64_t *l, Int_t n)
{
   // read array of ULong64_t from buffer

   TBufferJSON_ReadFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Float_t *f, Int_t n)
{
   // read array of Float_t from buffer

   TBufferJSON_ReadFastArray(f);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(Double_t *d, Int_t n)
{
   // read array of Double_t from buffer

   TBufferJSON_ReadFastArray(d);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayFloat16(Float_t *f, Int_t n,
                                       TStreamerElement * /*ele*/)
{
   // read array of Float16_t from buffer

   TBufferJSON_ReadFastArray(f);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayWithFactor(Float_t *f, Int_t n,
      Double_t /* factor */,
      Double_t /* minvalue */)
{
   // read array of Float16_t from buffer

   TBufferJSON_ReadFastArray(f);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayWithNbits(Float_t *f, Int_t n, Int_t /*nbits*/)
{
   // read array of Float16_t from buffer

   TBufferJSON_ReadFastArray(f);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayDouble32(Double_t *d, Int_t n,
                                        TStreamerElement * /*ele*/)
{
   // read array of Double32_t from buffer

   TBufferJSON_ReadFastArray(d);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayWithFactor(Double_t *d, Int_t n,
      Double_t /* factor */,
      Double_t /* minvalue */)
{
   // read array of Double32_t from buffer

   TBufferJSON_ReadFastArray(d);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArrayWithNbits(Double_t *d, Int_t n, Int_t /*nbits*/)
{
   // read array of Double32_t from buffer

   TBufferJSON_ReadFastArray(d);
}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(void * /*start*/, const TClass * /*cl*/,
                                Int_t /*n*/, TMemberStreamer * /*s*/,
                                const TClass * /*onFileClass*/)
{
   // redefined here to avoid warning message from gcc

}

//______________________________________________________________________________
void TBufferJSON::ReadFastArray(void ** /*startp*/, const TClass * /*cl*/,
                                Int_t /*n*/, Bool_t /*isPreAlloc*/,
                                TMemberStreamer * /*s*/,
                                const TClass * /*onFileClass*/)
{
   // redefined here to avoid warning message from gcc

}


#define TJSONWriteArrayContent(vname, arrsize)        \
   {                                                     \
      fValue.Append("["); /* fJsonrCnt++; */             \
      for (Int_t indx=0;indx<arrsize;indx++) {           \
         if (indx>0) fValue.Append(fArraySepar.Data());  \
         JsonWriteBasic(vname[indx]);                    \
      }                                                  \
      fValue.Append("]");                                \
   }

// macro to write array, which include size
#define TBufferJSON_WriteArray(vname)                 \
   {                                                     \
      TJSONPushValue();                                  \
      TJSONWriteArrayContent(vname, n);                  \
   }

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Bool_t *b, Int_t n)
{
   // Write array of Bool_t to buffer

   TBufferJSON_WriteArray(b);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Char_t *c, Int_t n)
{
   // Write array of Char_t to buffer

   TBufferJSON_WriteArray(c);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const UChar_t *c, Int_t n)
{
   // Write array of UChar_t to buffer

   TBufferJSON_WriteArray(c);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Short_t *h, Int_t n)
{
   // Write array of Short_t to buffer

   TBufferJSON_WriteArray(h);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const UShort_t *h, Int_t n)
{
   // Write array of UShort_t to buffer

   TBufferJSON_WriteArray(h);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Int_t *i, Int_t n)
{
   // Write array of Int_ to buffer

   TBufferJSON_WriteArray(i);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const UInt_t *i, Int_t n)
{
   // Write array of UInt_t to buffer

   TBufferJSON_WriteArray(i);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Long_t *l, Int_t n)
{
   // Write array of Long_t to buffer

   TBufferJSON_WriteArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const ULong_t *l, Int_t n)
{
   // Write array of ULong_t to buffer

   TBufferJSON_WriteArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Long64_t *l, Int_t n)
{
   // Write array of Long64_t to buffer

   TBufferJSON_WriteArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const ULong64_t *l, Int_t n)
{
   // Write array of ULong64_t to buffer

   TBufferJSON_WriteArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Float_t *f, Int_t n)
{
   // Write array of Float_t to buffer

   TBufferJSON_WriteArray(f);
}

//______________________________________________________________________________
void TBufferJSON::WriteArray(const Double_t *d, Int_t n)
{
   // Write array of Double_t to buffer

   TBufferJSON_WriteArray(d);
}

//______________________________________________________________________________
void TBufferJSON::WriteArrayFloat16(const Float_t *f, Int_t n,
                                    TStreamerElement * /*ele*/)
{
   // Write array of Float16_t to buffer

   TBufferJSON_WriteArray(f);
}

//______________________________________________________________________________
void TBufferJSON::WriteArrayDouble32(const Double_t *d, Int_t n,
                                     TStreamerElement * /*ele*/)
{
   // Write array of Double32_t to buffer

   TBufferJSON_WriteArray(d);
}

// write array without size attribute
// macro also treat situation, when instead of one single array
// chain of several elements should be produced
#define TBufferJSON_WriteFastArray(vname)                                 \
   {                                                                         \
      TJSONPushValue();                                                      \
      if (n <= 0) { /*fJsonrCnt++;*/ fValue.Append("[]"); return; }          \
      TStreamerElement* elem = Stack(0)->fElem;                              \
      if ((elem != 0) && (elem->GetType()>TStreamerInfo::kOffsetL) &&        \
            (elem->GetType() < TStreamerInfo::kOffsetP) &&                     \
            (elem->GetArrayLength() != n)) fExpectedChain = kTRUE;             \
      if (fExpectedChain) {                                                  \
         TStreamerInfo* info = Stack(1)->fInfo;                              \
         Int_t startnumber = Stack(0)->fElemNumber;                          \
         fExpectedChain = kFALSE;                                            \
         Int_t number(0), index(0);                                          \
         while (index<n) {                                                   \
            elem = info->GetStreamerElementReal(startnumber, number++);       \
            if (elem->GetType()<TStreamerInfo::kOffsetL) {                    \
               JsonWriteBasic(vname[index]);                                   \
               PerformPostProcessing(Stack(0), elem);                          \
               index++;                                                        \
            }                                                                 \
            else {                                                            \
               Int_t elemlen = elem->GetArrayLength();                         \
               TJSONWriteArrayContent((vname+index), elemlen);                 \
               index+=elemlen;                                                 \
               PerformPostProcessing(Stack(0), elem);                          \
            }                                                                 \
         }                                                                   \
      }                                                                      \
      else {                                                                 \
         TJSONWriteArrayContent(vname, n);                                   \
      }                                                                      \
   }

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Bool_t *b, Int_t n)
{
   // Write array of Bool_t to buffer

   TBufferJSON_WriteFastArray(b);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Char_t *c, Int_t n)
{
   // Write array of Char_t to buffer
   // If array does not include any special characters,
   // it will be reproduced as CharStar node with string as attribute

   Bool_t usedefault = fExpectedChain;
   const Char_t *buf = c;
   if (!usedefault)
      for (int i = 0; i < n; i++) {
         if (*buf < 27) {
            usedefault = kTRUE;
            break;
         }
         buf++;
      }
   if (usedefault) {
      // TODO - write as array of characters
      TBufferJSON_WriteFastArray(c);
   } else {
      TJSONPushValue();

      // special case - not a zero-reminated string
      fValue.Append("\"");
      if ((c != 0) && (n > 0)) fValue.Append(c, n);
      fValue.Append("\"");
   }
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArrayString(const Char_t *c, Int_t n)
{
   // Write array of Char_t to buffer

   WriteFastArray(c, n);
}


//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const UChar_t *c, Int_t n)
{
   // Write array of UChar_t to buffer

   TBufferJSON_WriteFastArray(c);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Short_t *h, Int_t n)
{
   // Write array of Short_t to buffer

   TBufferJSON_WriteFastArray(h);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const UShort_t *h, Int_t n)
{
   // Write array of UShort_t to buffer

   TBufferJSON_WriteFastArray(h);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Int_t *i, Int_t n)
{
   // Write array of Int_t to buffer

   TBufferJSON_WriteFastArray(i);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const UInt_t *i, Int_t n)
{
   // Write array of UInt_t to buffer

   TBufferJSON_WriteFastArray(i);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Long_t *l, Int_t n)
{
   // Write array of Long_t to buffer

   TBufferJSON_WriteFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const ULong_t *l, Int_t n)
{
   // Write array of ULong_t to buffer

   TBufferJSON_WriteFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Long64_t *l, Int_t n)
{
   // Write array of Long64_t to buffer

   TBufferJSON_WriteFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const ULong64_t *l, Int_t n)
{
   // Write array of ULong64_t to buffer

   TBufferJSON_WriteFastArray(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Float_t *f, Int_t n)
{
   // Write array of Float_t to buffer

   TBufferJSON_WriteFastArray(f);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArray(const Double_t *d, Int_t n)
{
   // Write array of Double_t to buffer

   TBufferJSON_WriteFastArray(d);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArrayFloat16(const Float_t *f, Int_t n,
                                        TStreamerElement * /*ele*/)
{
   // Write array of Float16_t to buffer

   TBufferJSON_WriteFastArray(f);
}

//______________________________________________________________________________
void TBufferJSON::WriteFastArrayDouble32(const Double_t *d, Int_t n,
      TStreamerElement * /*ele*/)
{
   // Write array of Double32_t to buffer

   TBufferJSON_WriteFastArray(d);
}

//______________________________________________________________________________
void  TBufferJSON::WriteFastArray(void *start, const TClass *cl, Int_t n,
                                  TMemberStreamer *streamer)
{
   // Recall TBuffer function to avoid gcc warning message

   if (gDebug > 2)
      Info("WriteFastArray", "void *start");

   if (streamer) {
      JsonStartElement();
      (*streamer)(*this, start, 0);
      return;
   }

   char *obj = (char *)start;
   if (!n) n = 1;
   int size = cl->Size();

   if (n > 1) {
      JsonStartElement();
      AppendOutput("[");
      /* fJsonrCnt++; */ // count array, but do not add to references
   }

   for (Int_t j = 0; j < n; j++, obj += size) {
      // ((TClass*)cl)->Streamer(obj,*this);

      if (j > 0) AppendOutput(fArraySepar.Data());

      JsonWriteObject(obj, cl);
   }

   if (n > 1) {
      AppendOutput(" ]");
   }

}

//______________________________________________________________________________
Int_t TBufferJSON::WriteFastArray(void **start, const TClass *cl, Int_t n,
                                  Bool_t isPreAlloc, TMemberStreamer *streamer)
{
   // Recall TBuffer function to avoid gcc warning message

   if (gDebug > 2)
      Info("WriteFastArray", "void **startp cl %s n %d streamer %p",
           cl->GetName(), n, streamer);

   if (streamer) {
      JsonStartElement();
      (*streamer)(*this, (void *)start, 0);
      return 0;
   }

   Int_t res = 0;

   if (n > 1) {
      JsonStartElement();
      AppendOutput("[");
      /* fJsonrCnt++; */ // count array, but do not add to references
   }

   if (!isPreAlloc) {

      for (Int_t j = 0; j < n; j++) {
         if (j > 0) AppendOutput(fArraySepar.Data());
         res |= WriteObjectAny(start[j], cl);
      }

   } else {
      //case //-> in comment

      for (Int_t j = 0; j < n; j++) {
         if (j > 0) AppendOutput(fArraySepar.Data());

         if (!start[j]) start[j] = ((TClass *)cl)->New();
         // ((TClass*)cl)->Streamer(start[j],*this);
         JsonWriteObject(start[j], cl);
      }
   }

   if (n > 1) {
      AppendOutput("]");
   }

   return res;
}

//______________________________________________________________________________
void TBufferJSON::StreamObject(void *obj, const type_info &typeinfo,
                               const TClass * /* onFileClass */)
{
   // stream object to/from buffer

   StreamObject(obj, TClass::GetClass(typeinfo));
}

//______________________________________________________________________________
void TBufferJSON::StreamObject(void *obj, const char *className,
                               const TClass * /* onFileClass */)
{
   // stream object to/from buffer

   StreamObject(obj, TClass::GetClass(className));
}

void TBufferJSON::StreamObject(TObject *obj)
{
   // stream object to/from buffer

   StreamObject(obj, obj ? obj->IsA() : TObject::Class());
}

//______________________________________________________________________________
void TBufferJSON::StreamObject(void *obj, const TClass *cl,
                               const TClass * /* onfileClass */)
{
   // stream object to/from buffer

   if (gDebug > 3)
      Info("StreamObject", "Class: %s", (cl ? cl->GetName() : "none"));

   JsonWriteObject(obj, cl);
}

//______________________________________________________________________________
void TBufferJSON::ReadBool(Bool_t &)
{
   // Reads Bool_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadChar(Char_t &)
{
   // Reads Char_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadUChar(UChar_t &)
{
   // Reads UChar_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadShort(Short_t &)
{
   // Reads Short_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadUShort(UShort_t &)
{
   // Reads UShort_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadInt(Int_t &)
{
   // Reads Int_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadUInt(UInt_t &)
{
   // Reads UInt_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadLong(Long_t &)
{
   // Reads Long_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadULong(ULong_t &)
{
   // Reads ULong_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadLong64(Long64_t &)
{
   // Reads Long64_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadULong64(ULong64_t &)
{
   // Reads ULong64_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadFloat(Float_t &)
{
   // Reads Float_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadDouble(Double_t &)
{
   // Reads Double_t value from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadCharP(Char_t *)
{
   // Reads array of characters from buffer
}

//______________________________________________________________________________
void TBufferJSON::ReadTString(TString & /*s*/)
{
   // Reads a TString
}


//______________________________________________________________________________
void TBufferJSON::WriteBool(Bool_t b)
{
   // Writes Bool_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(b);
}

//______________________________________________________________________________
void TBufferJSON::WriteChar(Char_t c)
{
   // Writes Char_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(c);
}

//______________________________________________________________________________
void TBufferJSON::WriteUChar(UChar_t c)
{
   // Writes UChar_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(c);
}

//______________________________________________________________________________
void TBufferJSON::WriteShort(Short_t h)
{
   // Writes Short_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(h);
}

//______________________________________________________________________________
void TBufferJSON::WriteUShort(UShort_t h)
{
   // Writes UShort_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(h);
}

//______________________________________________________________________________
void TBufferJSON::WriteInt(Int_t i)
{
   // Writes Int_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(i);
}

//______________________________________________________________________________
void TBufferJSON::WriteUInt(UInt_t i)
{
   // Writes UInt_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(i);
}

//______________________________________________________________________________
void TBufferJSON::WriteLong(Long_t l)
{
   // Writes Long_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteULong(ULong_t l)
{
   // Writes ULong_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteLong64(Long64_t l)
{
   // Writes Long64_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteULong64(ULong64_t l)
{
   // Writes ULong64_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(l);
}

//______________________________________________________________________________
void TBufferJSON::WriteFloat(Float_t f)
{
   // Writes Float_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(f);
}

//______________________________________________________________________________
void TBufferJSON::WriteDouble(Double_t d)
{
   // Writes Double_t value to buffer

   TJSONPushValue();

   JsonWriteBasic(d);
}

//______________________________________________________________________________
void TBufferJSON::WriteCharP(const Char_t *c)
{
   // Writes array of characters to buffer

   TJSONPushValue();

   fValue.Append("\"");
   fValue.Append(c);
   fValue.Append("\"");
}

//______________________________________________________________________________
void TBufferJSON::WriteTString(const TString &s)
{
   // Writes a TString
   Info("WriteTString", "Write string value");

   TJSONPushValue();

   fValue.Append("\"");
   fValue.Append(s);
   fValue.Append("\"");
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Char_t value)
{
   // converts Char_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%d", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Short_t value)
{
   // converts Short_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%hd", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Int_t value)
{
   // converts Int_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%d", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Long_t value)
{
   // converts Long_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%ld", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Long64_t value)
{
   // converts Long64_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), FLong64, value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Float_t value)
{
   // converts Float_t to string and add xml node to buffer

   char buf[200];
   snprintf(buf, sizeof(buf), fgFloatFmt, value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Double_t value)
{
   // converts Double_t to string and add xml node to buffer

   char buf[1000];
   snprintf(buf, sizeof(buf), fgFloatFmt, value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(Bool_t value)
{
   // converts Bool_t to string and add xml node to buffer

   fValue.Append(value ? "true" : "false");
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(UChar_t value)
{
   // converts UChar_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%u", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(UShort_t value)
{
   // converts UShort_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%hu", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(UInt_t value)
{
   // converts UInt_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%u", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(ULong_t value)
{
   // converts ULong_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), "%lu", value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::JsonWriteBasic(ULong64_t value)
{
   // converts ULong64_t to string and add xml node to buffer

   char buf[50];
   snprintf(buf, sizeof(buf), FULong64, value);
   fValue.Append(buf);
}

//______________________________________________________________________________
void TBufferJSON::SetFloatFormat(const char *fmt)
{
   // set printf format for float/double members, default "%e"

   if (fmt == 0) fmt = "%e";
   fgFloatFmt = fmt;
}

//______________________________________________________________________________
const char *TBufferJSON::GetFloatFormat()
{
   // return current printf format for float/double members, default "%e"

   return fgFloatFmt;
}

//______________________________________________________________________________
Int_t TBufferJSON::ApplySequence(const TStreamerInfoActions::TActionSequence &sequence,
                                 void *obj)
{
   // Read one collection of objects from the buffer using the StreamerInfoLoopAction.
   // The collection needs to be a split TClonesArray or a split vector of pointers.

   TVirtualStreamerInfo *info = sequence.fStreamerInfo;
   IncrementLevel(info);

   if (gDebug) {
      //loop on all active members
      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.fActions.end();
      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.fActions.begin();
            iter != end; ++iter) {
         // Idea: Try to remove this function call as it is really needed only for XML streaming.
         SetStreamerElementNumber((*iter).fConfiguration->fElemId);
         (*iter).PrintDebug(*this, obj);
         (*iter)(*this, obj);
      }
   } else {
      //loop on all active members
      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.fActions.end();
      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.fActions.begin();
            iter != end;  ++iter) {
         // Idea: Try to remove this function call as it is really needed only for XML streaming.
         SetStreamerElementNumber((*iter).fConfiguration->fElemId);
         (*iter)(*this, obj);
      }
   }
   DecrementLevel(info);
   return 0;
}

//______________________________________________________________________________
Int_t TBufferJSON::ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence,
                                       void *start_collection, void *end_collection)
{
   // Read one collection of objects from the buffer using the StreamerInfoLoopAction.
   // The collection needs to be a split TClonesArray or a split vector of pointers.

   TVirtualStreamerInfo *info = sequence.fStreamerInfo;
   IncrementLevel(info);

   if (gDebug) {
      //loop on all active members
      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.fActions.end();
      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.fActions.begin();
            iter != end; ++iter) {
         // Idea: Try to remove this function call as it is really needed only for XML streaming.
         SetStreamerElementNumber((*iter).fConfiguration->fElemId);
         (*iter).PrintDebug(*this, *(char **)start_collection); // Warning: This limits us to TClonesArray and vector of pointers.
         (*iter)(*this, start_collection, end_collection);
      }
   } else {
      //loop on all active members
      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.fActions.end();
      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.fActions.begin();
            iter != end; ++iter) {
         // Idea: Try to remove this function call as it is really needed only for XML streaming.
         SetStreamerElementNumber((*iter).fConfiguration->fElemId);
         (*iter)(*this, start_collection, end_collection);
      }
   }
   DecrementLevel(info);
   return 0;
}

//______________________________________________________________________________
Int_t TBufferJSON::ApplySequence(const TStreamerInfoActions::TActionSequence &sequence,
                                 void *start_collection, void *end_collection)
{
   // Read one collection of objects from the buffer using the StreamerInfoLoopAction.

   TVirtualStreamerInfo *info = sequence.fStreamerInfo;
   IncrementLevel(info);

   TStreamerInfoActions::TLoopConfiguration *loopconfig = sequence.fLoopConfig;
   if (gDebug) {

      // Get the address of the first item for the PrintDebug.
      // (Performance is not essential here since we are going to print to
      // the screen anyway).
      void *arr0 = loopconfig->GetFirstAddress(start_collection, end_collection);
      // loop on all active members
      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.fActions.end();
      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.fActions.begin();
            iter != end; ++iter) {
         // Idea: Try to remove this function call as it is really needed only for XML streaming.
         SetStreamerElementNumber((*iter).fConfiguration->fElemId);
         (*iter).PrintDebug(*this, arr0);
         (*iter)(*this, start_collection, end_collection, loopconfig);
      }
   } else {
      //loop on all active members
      TStreamerInfoActions::ActionContainer_t::const_iterator end = sequence.fActions.end();
      for (TStreamerInfoActions::ActionContainer_t::const_iterator iter = sequence.fActions.begin();
            iter != end; ++iter) {
         // Idea: Try to remove this function call as it is really needed only for XML streaming.
         SetStreamerElementNumber((*iter).fConfiguration->fElemId);
         (*iter)(*this, start_collection, end_collection, loopconfig);
      }
   }
   DecrementLevel(info);
   return 0;
}


//______________________________________________________________________________
Int_t TBufferJSON::WriteClones(TClonesArray *a, Int_t /*nobjects*/)
{
   // Interface to TStreamerInfo::WriteBufferClones.

   Info("WriteClones", "Not yet tested");

   if (a != 0)
      JsonStreamCollection(a, a->IsA());

   return 0;
}

namespace {
   struct DynamicType {
      // Helper class to enable typeid on any address
      // Used in code similar to:
      //    typeid( * (DynamicType*) void_ptr );
      virtual ~DynamicType() {}
   };
}

//______________________________________________________________________________
Int_t TBufferJSON::WriteObjectAny(const void *obj, const TClass *ptrClass)
{
   // Write object to I/O buffer.
   // This function assumes that the value in 'obj' is the value stored in
   // a pointer to a "ptrClass". The actual type of the object pointed to
   // can be any class derived from "ptrClass".
   // Return:
   //  0: failure
   //  1: success
   //  2: truncated success (i.e actual class is missing. Only ptrClass saved.)

   if (!obj) {
      WriteObjectClass(0, 0);
      return 1;
   }

   if (!ptrClass) {
      Error("WriteObjectAny", "ptrClass argument may not be 0");
      return 0;
   }

   TClass *clActual = ptrClass->GetActualClass(obj);

   if (clActual == 0) {
      // The ptrClass is a class with a virtual table and we have no
      // TClass with the actual type_info in memory.

      DynamicType *d_ptr = (DynamicType *)obj;
      Warning("WriteObjectAny",
              "An object of type %s (from type_info) passed through a %s pointer was truncated (due a missing dictionary)!!!",
              typeid(*d_ptr).name(), ptrClass->GetName());
      WriteObjectClass(obj, ptrClass);
      return 2;
   } else if (clActual && (clActual != ptrClass)) {
      const char *temp = (const char *) obj;
      temp -= clActual->GetBaseClassOffset(ptrClass);
      WriteObjectClass(temp, clActual);
      return 1;
   } else {
      WriteObjectClass(obj, ptrClass);
      return 1;
   }
}

//______________________________________________________________________________
Int_t TBufferJSON::WriteClassBuffer(const TClass *cl, void *pointer)
{
   // Function called by the Streamer functions to serialize object at p
   // to buffer b. The optional argument info may be specified to give an
   // alternative StreamerInfo instead of using the default StreamerInfo
   // automatically built from the class definition.
   // For more information, see class TStreamerInfo.


   //build the StreamerInfo if first time for the class
   TStreamerInfo *sinfo = (TStreamerInfo *)const_cast<TClass *>(cl)->GetCurrentStreamerInfo();
   if (sinfo == 0) {
      const_cast<TClass *>(cl)->BuildRealData(pointer);
      sinfo = new TStreamerInfo(const_cast<TClass *>(cl));
      const_cast<TClass *>(cl)->SetCurrentStreamerInfo(sinfo);

#if ROOT_VERSION_CODE >= ROOT_VERSION(5,99,1)
      const_cast<TClass *>(cl)->RegisterStreamerInfo(sinfo);
#else
      cl->GetStreamerInfos()->AddAtAndExpand(sinfo, cl->GetClassVersion());
#endif

      if (gDebug > 0)
         printf("Creating StreamerInfo for class: %s, version: %d\n",
                cl->GetName(), cl->GetClassVersion());
      sinfo->Build();
   } else if (!sinfo->IsCompiled()) {
      const_cast<TClass *>(cl)->BuildRealData(pointer);
      sinfo->BuildOld();
   }

   //write the class version number and reserve space for the byte count
   // UInt_t R__c = WriteVersion(cl, kTRUE);

   //NOTE: In the future Philippe wants this to happen via a custom action
   TagStreamerInfo(sinfo);
   ApplySequence(*(sinfo->GetWriteObjectWiseActions()), (char *)pointer);

   //write the byte count at the start of the buffer
   // SetByteCount(R__c, kTRUE);

   if (gDebug > 2)
      printf(" TBufferJSON::WriteClassBuffer for class: %s version %d\n",
             cl->GetName(), cl->GetClassVersion());
   return 0;
}
 TBufferJSON.cxx:1
 TBufferJSON.cxx:2
 TBufferJSON.cxx:3
 TBufferJSON.cxx:4
 TBufferJSON.cxx:5
 TBufferJSON.cxx:6
 TBufferJSON.cxx:7
 TBufferJSON.cxx:8
 TBufferJSON.cxx:9
 TBufferJSON.cxx:10
 TBufferJSON.cxx:11
 TBufferJSON.cxx:12
 TBufferJSON.cxx:13
 TBufferJSON.cxx:14
 TBufferJSON.cxx:15
 TBufferJSON.cxx:16
 TBufferJSON.cxx:17
 TBufferJSON.cxx:18
 TBufferJSON.cxx:19
 TBufferJSON.cxx:20
 TBufferJSON.cxx:21
 TBufferJSON.cxx:22
 TBufferJSON.cxx:23
 TBufferJSON.cxx:24
 TBufferJSON.cxx:25
 TBufferJSON.cxx:26
 TBufferJSON.cxx:27
 TBufferJSON.cxx:28
 TBufferJSON.cxx:29
 TBufferJSON.cxx:30
 TBufferJSON.cxx:31
 TBufferJSON.cxx:32
 TBufferJSON.cxx:33
 TBufferJSON.cxx:34
 TBufferJSON.cxx:35
 TBufferJSON.cxx:36
 TBufferJSON.cxx:37
 TBufferJSON.cxx:38
 TBufferJSON.cxx:39
 TBufferJSON.cxx:40
 TBufferJSON.cxx:41
 TBufferJSON.cxx:42
 TBufferJSON.cxx:43
 TBufferJSON.cxx:44
 TBufferJSON.cxx:45
 TBufferJSON.cxx:46
 TBufferJSON.cxx:47
 TBufferJSON.cxx:48
 TBufferJSON.cxx:49
 TBufferJSON.cxx:50
 TBufferJSON.cxx:51
 TBufferJSON.cxx:52
 TBufferJSON.cxx:53
 TBufferJSON.cxx:54
 TBufferJSON.cxx:55
 TBufferJSON.cxx:56
 TBufferJSON.cxx:57
 TBufferJSON.cxx:58
 TBufferJSON.cxx:59
 TBufferJSON.cxx:60
 TBufferJSON.cxx:61
 TBufferJSON.cxx:62
 TBufferJSON.cxx:63
 TBufferJSON.cxx:64
 TBufferJSON.cxx:65
 TBufferJSON.cxx:66
 TBufferJSON.cxx:67
 TBufferJSON.cxx:68
 TBufferJSON.cxx:69
 TBufferJSON.cxx:70
 TBufferJSON.cxx:71
 TBufferJSON.cxx:72
 TBufferJSON.cxx:73
 TBufferJSON.cxx:74
 TBufferJSON.cxx:75
 TBufferJSON.cxx:76
 TBufferJSON.cxx:77
 TBufferJSON.cxx:78
 TBufferJSON.cxx:79
 TBufferJSON.cxx:80
 TBufferJSON.cxx:81
 TBufferJSON.cxx:82
 TBufferJSON.cxx:83
 TBufferJSON.cxx:84
 TBufferJSON.cxx:85
 TBufferJSON.cxx:86
 TBufferJSON.cxx:87
 TBufferJSON.cxx:88
 TBufferJSON.cxx:89
 TBufferJSON.cxx:90
 TBufferJSON.cxx:91
 TBufferJSON.cxx:92
 TBufferJSON.cxx:93
 TBufferJSON.cxx:94
 TBufferJSON.cxx:95
 TBufferJSON.cxx:96
 TBufferJSON.cxx:97
 TBufferJSON.cxx:98
 TBufferJSON.cxx:99
 TBufferJSON.cxx:100
 TBufferJSON.cxx:101
 TBufferJSON.cxx:102
 TBufferJSON.cxx:103
 TBufferJSON.cxx:104
 TBufferJSON.cxx:105
 TBufferJSON.cxx:106
 TBufferJSON.cxx:107
 TBufferJSON.cxx:108
 TBufferJSON.cxx:109
 TBufferJSON.cxx:110
 TBufferJSON.cxx:111
 TBufferJSON.cxx:112
 TBufferJSON.cxx:113
 TBufferJSON.cxx:114
 TBufferJSON.cxx:115
 TBufferJSON.cxx:116
 TBufferJSON.cxx:117
 TBufferJSON.cxx:118
 TBufferJSON.cxx:119
 TBufferJSON.cxx:120
 TBufferJSON.cxx:121
 TBufferJSON.cxx:122
 TBufferJSON.cxx:123
 TBufferJSON.cxx:124
 TBufferJSON.cxx:125
 TBufferJSON.cxx:126
 TBufferJSON.cxx:127
 TBufferJSON.cxx:128
 TBufferJSON.cxx:129
 TBufferJSON.cxx:130
 TBufferJSON.cxx:131
 TBufferJSON.cxx:132
 TBufferJSON.cxx:133
 TBufferJSON.cxx:134
 TBufferJSON.cxx:135
 TBufferJSON.cxx:136
 TBufferJSON.cxx:137
 TBufferJSON.cxx:138
 TBufferJSON.cxx:139
 TBufferJSON.cxx:140
 TBufferJSON.cxx:141
 TBufferJSON.cxx:142
 TBufferJSON.cxx:143
 TBufferJSON.cxx:144
 TBufferJSON.cxx:145
 TBufferJSON.cxx:146
 TBufferJSON.cxx:147
 TBufferJSON.cxx:148
 TBufferJSON.cxx:149
 TBufferJSON.cxx:150
 TBufferJSON.cxx:151
 TBufferJSON.cxx:152
 TBufferJSON.cxx:153
 TBufferJSON.cxx:154
 TBufferJSON.cxx:155
 TBufferJSON.cxx:156
 TBufferJSON.cxx:157
 TBufferJSON.cxx:158
 TBufferJSON.cxx:159
 TBufferJSON.cxx:160
 TBufferJSON.cxx:161
 TBufferJSON.cxx:162
 TBufferJSON.cxx:163
 TBufferJSON.cxx:164
 TBufferJSON.cxx:165
 TBufferJSON.cxx:166
 TBufferJSON.cxx:167
 TBufferJSON.cxx:168
 TBufferJSON.cxx:169
 TBufferJSON.cxx:170
 TBufferJSON.cxx:171
 TBufferJSON.cxx:172
 TBufferJSON.cxx:173
 TBufferJSON.cxx:174
 TBufferJSON.cxx:175
 TBufferJSON.cxx:176
 TBufferJSON.cxx:177
 TBufferJSON.cxx:178
 TBufferJSON.cxx:179
 TBufferJSON.cxx:180
 TBufferJSON.cxx:181
 TBufferJSON.cxx:182
 TBufferJSON.cxx:183
 TBufferJSON.cxx:184
 TBufferJSON.cxx:185
 TBufferJSON.cxx:186
 TBufferJSON.cxx:187
 TBufferJSON.cxx:188
 TBufferJSON.cxx:189
 TBufferJSON.cxx:190
 TBufferJSON.cxx:191
 TBufferJSON.cxx:192
 TBufferJSON.cxx:193
 TBufferJSON.cxx:194
 TBufferJSON.cxx:195
 TBufferJSON.cxx:196
 TBufferJSON.cxx:197
 TBufferJSON.cxx:198
 TBufferJSON.cxx:199
 TBufferJSON.cxx:200
 TBufferJSON.cxx:201
 TBufferJSON.cxx:202
 TBufferJSON.cxx:203
 TBufferJSON.cxx:204
 TBufferJSON.cxx:205
 TBufferJSON.cxx:206
 TBufferJSON.cxx:207
 TBufferJSON.cxx:208
 TBufferJSON.cxx:209
 TBufferJSON.cxx:210
 TBufferJSON.cxx:211
 TBufferJSON.cxx:212
 TBufferJSON.cxx:213
 TBufferJSON.cxx:214
 TBufferJSON.cxx:215
 TBufferJSON.cxx:216
 TBufferJSON.cxx:217
 TBufferJSON.cxx:218
 TBufferJSON.cxx:219
 TBufferJSON.cxx:220
 TBufferJSON.cxx:221
 TBufferJSON.cxx:222
 TBufferJSON.cxx:223
 TBufferJSON.cxx:224
 TBufferJSON.cxx:225
 TBufferJSON.cxx:226
 TBufferJSON.cxx:227
 TBufferJSON.cxx:228
 TBufferJSON.cxx:229
 TBufferJSON.cxx:230
 TBufferJSON.cxx:231
 TBufferJSON.cxx:232
 TBufferJSON.cxx:233
 TBufferJSON.cxx:234
 TBufferJSON.cxx:235
 TBufferJSON.cxx:236
 TBufferJSON.cxx:237
 TBufferJSON.cxx:238
 TBufferJSON.cxx:239
 TBufferJSON.cxx:240
 TBufferJSON.cxx:241
 TBufferJSON.cxx:242
 TBufferJSON.cxx:243
 TBufferJSON.cxx:244
 TBufferJSON.cxx:245
 TBufferJSON.cxx:246
 TBufferJSON.cxx:247
 TBufferJSON.cxx:248
 TBufferJSON.cxx:249
 TBufferJSON.cxx:250
 TBufferJSON.cxx:251
 TBufferJSON.cxx:252
 TBufferJSON.cxx:253
 TBufferJSON.cxx:254
 TBufferJSON.cxx:255
 TBufferJSON.cxx:256
 TBufferJSON.cxx:257
 TBufferJSON.cxx:258
 TBufferJSON.cxx:259
 TBufferJSON.cxx:260
 TBufferJSON.cxx:261
 TBufferJSON.cxx:262
 TBufferJSON.cxx:263
 TBufferJSON.cxx:264
 TBufferJSON.cxx:265
 TBufferJSON.cxx:266
 TBufferJSON.cxx:267
 TBufferJSON.cxx:268
 TBufferJSON.cxx:269
 TBufferJSON.cxx:270
 TBufferJSON.cxx:271
 TBufferJSON.cxx:272
 TBufferJSON.cxx:273
 TBufferJSON.cxx:274
 TBufferJSON.cxx:275
 TBufferJSON.cxx:276
 TBufferJSON.cxx:277
 TBufferJSON.cxx:278
 TBufferJSON.cxx:279
 TBufferJSON.cxx:280
 TBufferJSON.cxx:281
 TBufferJSON.cxx:282
 TBufferJSON.cxx:283
 TBufferJSON.cxx:284
 TBufferJSON.cxx:285
 TBufferJSON.cxx:286
 TBufferJSON.cxx:287
 TBufferJSON.cxx:288
 TBufferJSON.cxx:289
 TBufferJSON.cxx:290
 TBufferJSON.cxx:291
 TBufferJSON.cxx:292
 TBufferJSON.cxx:293
 TBufferJSON.cxx:294
 TBufferJSON.cxx:295
 TBufferJSON.cxx:296
 TBufferJSON.cxx:297
 TBufferJSON.cxx:298
 TBufferJSON.cxx:299
 TBufferJSON.cxx:300
 TBufferJSON.cxx:301
 TBufferJSON.cxx:302
 TBufferJSON.cxx:303
 TBufferJSON.cxx:304
 TBufferJSON.cxx:305
 TBufferJSON.cxx:306
 TBufferJSON.cxx:307
 TBufferJSON.cxx:308
 TBufferJSON.cxx:309
 TBufferJSON.cxx:310
 TBufferJSON.cxx:311
 TBufferJSON.cxx:312
 TBufferJSON.cxx:313
 TBufferJSON.cxx:314
 TBufferJSON.cxx:315
 TBufferJSON.cxx:316
 TBufferJSON.cxx:317
 TBufferJSON.cxx:318
 TBufferJSON.cxx:319
 TBufferJSON.cxx:320
 TBufferJSON.cxx:321
 TBufferJSON.cxx:322
 TBufferJSON.cxx:323
 TBufferJSON.cxx:324
 TBufferJSON.cxx:325
 TBufferJSON.cxx:326
 TBufferJSON.cxx:327
 TBufferJSON.cxx:328
 TBufferJSON.cxx:329
 TBufferJSON.cxx:330
 TBufferJSON.cxx:331
 TBufferJSON.cxx:332
 TBufferJSON.cxx:333
 TBufferJSON.cxx:334
 TBufferJSON.cxx:335
 TBufferJSON.cxx:336
 TBufferJSON.cxx:337
 TBufferJSON.cxx:338
 TBufferJSON.cxx:339
 TBufferJSON.cxx:340
 TBufferJSON.cxx:341
 TBufferJSON.cxx:342
 TBufferJSON.cxx:343
 TBufferJSON.cxx:344
 TBufferJSON.cxx:345
 TBufferJSON.cxx:346
 TBufferJSON.cxx:347
 TBufferJSON.cxx:348
 TBufferJSON.cxx:349
 TBufferJSON.cxx:350
 TBufferJSON.cxx:351
 TBufferJSON.cxx:352
 TBufferJSON.cxx:353
 TBufferJSON.cxx:354
 TBufferJSON.cxx:355
 TBufferJSON.cxx:356
 TBufferJSON.cxx:357
 TBufferJSON.cxx:358
 TBufferJSON.cxx:359
 TBufferJSON.cxx:360
 TBufferJSON.cxx:361
 TBufferJSON.cxx:362
 TBufferJSON.cxx:363
 TBufferJSON.cxx:364
 TBufferJSON.cxx:365
 TBufferJSON.cxx:366
 TBufferJSON.cxx:367
 TBufferJSON.cxx:368
 TBufferJSON.cxx:369
 TBufferJSON.cxx:370
 TBufferJSON.cxx:371
 TBufferJSON.cxx:372
 TBufferJSON.cxx:373
 TBufferJSON.cxx:374
 TBufferJSON.cxx:375
 TBufferJSON.cxx:376
 TBufferJSON.cxx:377
 TBufferJSON.cxx:378
 TBufferJSON.cxx:379
 TBufferJSON.cxx:380
 TBufferJSON.cxx:381
 TBufferJSON.cxx:382
 TBufferJSON.cxx:383
 TBufferJSON.cxx:384
 TBufferJSON.cxx:385
 TBufferJSON.cxx:386
 TBufferJSON.cxx:387
 TBufferJSON.cxx:388
 TBufferJSON.cxx:389
 TBufferJSON.cxx:390
 TBufferJSON.cxx:391
 TBufferJSON.cxx:392
 TBufferJSON.cxx:393
 TBufferJSON.cxx:394
 TBufferJSON.cxx:395
 TBufferJSON.cxx:396
 TBufferJSON.cxx:397
 TBufferJSON.cxx:398
 TBufferJSON.cxx:399
 TBufferJSON.cxx:400
 TBufferJSON.cxx:401
 TBufferJSON.cxx:402
 TBufferJSON.cxx:403
 TBufferJSON.cxx:404
 TBufferJSON.cxx:405
 TBufferJSON.cxx:406
 TBufferJSON.cxx:407
 TBufferJSON.cxx:408
 TBufferJSON.cxx:409
 TBufferJSON.cxx:410
 TBufferJSON.cxx:411
 TBufferJSON.cxx:412
 TBufferJSON.cxx:413
 TBufferJSON.cxx:414
 TBufferJSON.cxx:415
 TBufferJSON.cxx:416
 TBufferJSON.cxx:417
 TBufferJSON.cxx:418
 TBufferJSON.cxx:419
 TBufferJSON.cxx:420
 TBufferJSON.cxx:421
 TBufferJSON.cxx:422
 TBufferJSON.cxx:423
 TBufferJSON.cxx:424
 TBufferJSON.cxx:425
 TBufferJSON.cxx:426
 TBufferJSON.cxx:427
 TBufferJSON.cxx:428
 TBufferJSON.cxx:429
 TBufferJSON.cxx:430
 TBufferJSON.cxx:431
 TBufferJSON.cxx:432
 TBufferJSON.cxx:433
 TBufferJSON.cxx:434
 TBufferJSON.cxx:435
 TBufferJSON.cxx:436
 TBufferJSON.cxx:437
 TBufferJSON.cxx:438
 TBufferJSON.cxx:439
 TBufferJSON.cxx:440
 TBufferJSON.cxx:441
 TBufferJSON.cxx:442
 TBufferJSON.cxx:443
 TBufferJSON.cxx:444
 TBufferJSON.cxx:445
 TBufferJSON.cxx:446
 TBufferJSON.cxx:447
 TBufferJSON.cxx:448
 TBufferJSON.cxx:449
 TBufferJSON.cxx:450
 TBufferJSON.cxx:451
 TBufferJSON.cxx:452
 TBufferJSON.cxx:453
 TBufferJSON.cxx:454
 TBufferJSON.cxx:455
 TBufferJSON.cxx:456
 TBufferJSON.cxx:457
 TBufferJSON.cxx:458
 TBufferJSON.cxx:459
 TBufferJSON.cxx:460
 TBufferJSON.cxx:461
 TBufferJSON.cxx:462
 TBufferJSON.cxx:463
 TBufferJSON.cxx:464
 TBufferJSON.cxx:465
 TBufferJSON.cxx:466
 TBufferJSON.cxx:467
 TBufferJSON.cxx:468
 TBufferJSON.cxx:469
 TBufferJSON.cxx:470
 TBufferJSON.cxx:471
 TBufferJSON.cxx:472
 TBufferJSON.cxx:473
 TBufferJSON.cxx:474
 TBufferJSON.cxx:475
 TBufferJSON.cxx:476
 TBufferJSON.cxx:477
 TBufferJSON.cxx:478
 TBufferJSON.cxx:479
 TBufferJSON.cxx:480
 TBufferJSON.cxx:481
 TBufferJSON.cxx:482
 TBufferJSON.cxx:483
 TBufferJSON.cxx:484
 TBufferJSON.cxx:485
 TBufferJSON.cxx:486
 TBufferJSON.cxx:487
 TBufferJSON.cxx:488
 TBufferJSON.cxx:489
 TBufferJSON.cxx:490
 TBufferJSON.cxx:491
 TBufferJSON.cxx:492
 TBufferJSON.cxx:493
 TBufferJSON.cxx:494
 TBufferJSON.cxx:495
 TBufferJSON.cxx:496
 TBufferJSON.cxx:497
 TBufferJSON.cxx:498
 TBufferJSON.cxx:499
 TBufferJSON.cxx:500
 TBufferJSON.cxx:501
 TBufferJSON.cxx:502
 TBufferJSON.cxx:503
 TBufferJSON.cxx:504
 TBufferJSON.cxx:505
 TBufferJSON.cxx:506
 TBufferJSON.cxx:507
 TBufferJSON.cxx:508
 TBufferJSON.cxx:509
 TBufferJSON.cxx:510
 TBufferJSON.cxx:511
 TBufferJSON.cxx:512
 TBufferJSON.cxx:513
 TBufferJSON.cxx:514
 TBufferJSON.cxx:515
 TBufferJSON.cxx:516
 TBufferJSON.cxx:517
 TBufferJSON.cxx:518
 TBufferJSON.cxx:519
 TBufferJSON.cxx:520
 TBufferJSON.cxx:521
 TBufferJSON.cxx:522
 TBufferJSON.cxx:523
 TBufferJSON.cxx:524
 TBufferJSON.cxx:525
 TBufferJSON.cxx:526
 TBufferJSON.cxx:527
 TBufferJSON.cxx:528
 TBufferJSON.cxx:529
 TBufferJSON.cxx:530
 TBufferJSON.cxx:531
 TBufferJSON.cxx:532
 TBufferJSON.cxx:533
 TBufferJSON.cxx:534
 TBufferJSON.cxx:535
 TBufferJSON.cxx:536
 TBufferJSON.cxx:537
 TBufferJSON.cxx:538
 TBufferJSON.cxx:539
 TBufferJSON.cxx:540
 TBufferJSON.cxx:541
 TBufferJSON.cxx:542
 TBufferJSON.cxx:543
 TBufferJSON.cxx:544
 TBufferJSON.cxx:545
 TBufferJSON.cxx:546
 TBufferJSON.cxx:547
 TBufferJSON.cxx:548
 TBufferJSON.cxx:549
 TBufferJSON.cxx:550
 TBufferJSON.cxx:551
 TBufferJSON.cxx:552
 TBufferJSON.cxx:553
 TBufferJSON.cxx:554
 TBufferJSON.cxx:555
 TBufferJSON.cxx:556
 TBufferJSON.cxx:557
 TBufferJSON.cxx:558
 TBufferJSON.cxx:559
 TBufferJSON.cxx:560
 TBufferJSON.cxx:561
 TBufferJSON.cxx:562
 TBufferJSON.cxx:563
 TBufferJSON.cxx:564
 TBufferJSON.cxx:565
 TBufferJSON.cxx:566
 TBufferJSON.cxx:567
 TBufferJSON.cxx:568
 TBufferJSON.cxx:569
 TBufferJSON.cxx:570
 TBufferJSON.cxx:571
 TBufferJSON.cxx:572
 TBufferJSON.cxx:573
 TBufferJSON.cxx:574
 TBufferJSON.cxx:575
 TBufferJSON.cxx:576
 TBufferJSON.cxx:577
 TBufferJSON.cxx:578
 TBufferJSON.cxx:579
 TBufferJSON.cxx:580
 TBufferJSON.cxx:581
 TBufferJSON.cxx:582
 TBufferJSON.cxx:583
 TBufferJSON.cxx:584
 TBufferJSON.cxx:585
 TBufferJSON.cxx:586
 TBufferJSON.cxx:587
 TBufferJSON.cxx:588
 TBufferJSON.cxx:589
 TBufferJSON.cxx:590
 TBufferJSON.cxx:591
 TBufferJSON.cxx:592
 TBufferJSON.cxx:593
 TBufferJSON.cxx:594
 TBufferJSON.cxx:595
 TBufferJSON.cxx:596
 TBufferJSON.cxx:597
 TBufferJSON.cxx:598
 TBufferJSON.cxx:599
 TBufferJSON.cxx:600
 TBufferJSON.cxx:601
 TBufferJSON.cxx:602
 TBufferJSON.cxx:603
 TBufferJSON.cxx:604
 TBufferJSON.cxx:605
 TBufferJSON.cxx:606
 TBufferJSON.cxx:607
 TBufferJSON.cxx:608
 TBufferJSON.cxx:609
 TBufferJSON.cxx:610
 TBufferJSON.cxx:611
 TBufferJSON.cxx:612
 TBufferJSON.cxx:613
 TBufferJSON.cxx:614
 TBufferJSON.cxx:615
 TBufferJSON.cxx:616
 TBufferJSON.cxx:617
 TBufferJSON.cxx:618
 TBufferJSON.cxx:619
 TBufferJSON.cxx:620
 TBufferJSON.cxx:621
 TBufferJSON.cxx:622
 TBufferJSON.cxx:623
 TBufferJSON.cxx:624
 TBufferJSON.cxx:625
 TBufferJSON.cxx:626
 TBufferJSON.cxx:627
 TBufferJSON.cxx:628
 TBufferJSON.cxx:629
 TBufferJSON.cxx:630
 TBufferJSON.cxx:631
 TBufferJSON.cxx:632
 TBufferJSON.cxx:633
 TBufferJSON.cxx:634
 TBufferJSON.cxx:635
 TBufferJSON.cxx:636
 TBufferJSON.cxx:637
 TBufferJSON.cxx:638
 TBufferJSON.cxx:639
 TBufferJSON.cxx:640
 TBufferJSON.cxx:641
 TBufferJSON.cxx:642
 TBufferJSON.cxx:643
 TBufferJSON.cxx:644
 TBufferJSON.cxx:645
 TBufferJSON.cxx:646
 TBufferJSON.cxx:647
 TBufferJSON.cxx:648
 TBufferJSON.cxx:649
 TBufferJSON.cxx:650
 TBufferJSON.cxx:651
 TBufferJSON.cxx:652
 TBufferJSON.cxx:653
 TBufferJSON.cxx:654
 TBufferJSON.cxx:655
 TBufferJSON.cxx:656
 TBufferJSON.cxx:657
 TBufferJSON.cxx:658
 TBufferJSON.cxx:659
 TBufferJSON.cxx:660
 TBufferJSON.cxx:661
 TBufferJSON.cxx:662
 TBufferJSON.cxx:663
 TBufferJSON.cxx:664
 TBufferJSON.cxx:665
 TBufferJSON.cxx:666
 TBufferJSON.cxx:667
 TBufferJSON.cxx:668
 TBufferJSON.cxx:669
 TBufferJSON.cxx:670
 TBufferJSON.cxx:671
 TBufferJSON.cxx:672
 TBufferJSON.cxx:673
 TBufferJSON.cxx:674
 TBufferJSON.cxx:675
 TBufferJSON.cxx:676
 TBufferJSON.cxx:677
 TBufferJSON.cxx:678
 TBufferJSON.cxx:679
 TBufferJSON.cxx:680
 TBufferJSON.cxx:681
 TBufferJSON.cxx:682
 TBufferJSON.cxx:683
 TBufferJSON.cxx:684
 TBufferJSON.cxx:685
 TBufferJSON.cxx:686
 TBufferJSON.cxx:687
 TBufferJSON.cxx:688
 TBufferJSON.cxx:689
 TBufferJSON.cxx:690
 TBufferJSON.cxx:691
 TBufferJSON.cxx:692
 TBufferJSON.cxx:693
 TBufferJSON.cxx:694
 TBufferJSON.cxx:695
 TBufferJSON.cxx:696
 TBufferJSON.cxx:697
 TBufferJSON.cxx:698
 TBufferJSON.cxx:699
 TBufferJSON.cxx:700
 TBufferJSON.cxx:701
 TBufferJSON.cxx:702
 TBufferJSON.cxx:703
 TBufferJSON.cxx:704
 TBufferJSON.cxx:705
 TBufferJSON.cxx:706
 TBufferJSON.cxx:707
 TBufferJSON.cxx:708
 TBufferJSON.cxx:709
 TBufferJSON.cxx:710
 TBufferJSON.cxx:711
 TBufferJSON.cxx:712
 TBufferJSON.cxx:713
 TBufferJSON.cxx:714
 TBufferJSON.cxx:715
 TBufferJSON.cxx:716
 TBufferJSON.cxx:717
 TBufferJSON.cxx:718
 TBufferJSON.cxx:719
 TBufferJSON.cxx:720
 TBufferJSON.cxx:721
 TBufferJSON.cxx:722
 TBufferJSON.cxx:723
 TBufferJSON.cxx:724
 TBufferJSON.cxx:725
 TBufferJSON.cxx:726
 TBufferJSON.cxx:727
 TBufferJSON.cxx:728
 TBufferJSON.cxx:729
 TBufferJSON.cxx:730
 TBufferJSON.cxx:731
 TBufferJSON.cxx:732
 TBufferJSON.cxx:733
 TBufferJSON.cxx:734
 TBufferJSON.cxx:735
 TBufferJSON.cxx:736
 TBufferJSON.cxx:737
 TBufferJSON.cxx:738
 TBufferJSON.cxx:739
 TBufferJSON.cxx:740
 TBufferJSON.cxx:741
 TBufferJSON.cxx:742
 TBufferJSON.cxx:743
 TBufferJSON.cxx:744
 TBufferJSON.cxx:745
 TBufferJSON.cxx:746
 TBufferJSON.cxx:747
 TBufferJSON.cxx:748
 TBufferJSON.cxx:749
 TBufferJSON.cxx:750
 TBufferJSON.cxx:751
 TBufferJSON.cxx:752
 TBufferJSON.cxx:753
 TBufferJSON.cxx:754
 TBufferJSON.cxx:755
 TBufferJSON.cxx:756
 TBufferJSON.cxx:757
 TBufferJSON.cxx:758
 TBufferJSON.cxx:759
 TBufferJSON.cxx:760
 TBufferJSON.cxx:761
 TBufferJSON.cxx:762
 TBufferJSON.cxx:763
 TBufferJSON.cxx:764
 TBufferJSON.cxx:765
 TBufferJSON.cxx:766
 TBufferJSON.cxx:767
 TBufferJSON.cxx:768
 TBufferJSON.cxx:769
 TBufferJSON.cxx:770
 TBufferJSON.cxx:771
 TBufferJSON.cxx:772
 TBufferJSON.cxx:773
 TBufferJSON.cxx:774
 TBufferJSON.cxx:775
 TBufferJSON.cxx:776
 TBufferJSON.cxx:777
 TBufferJSON.cxx:778
 TBufferJSON.cxx:779
 TBufferJSON.cxx:780
 TBufferJSON.cxx:781
 TBufferJSON.cxx:782
 TBufferJSON.cxx:783
 TBufferJSON.cxx:784
 TBufferJSON.cxx:785
 TBufferJSON.cxx:786
 TBufferJSON.cxx:787
 TBufferJSON.cxx:788
 TBufferJSON.cxx:789
 TBufferJSON.cxx:790
 TBufferJSON.cxx:791
 TBufferJSON.cxx:792
 TBufferJSON.cxx:793
 TBufferJSON.cxx:794
 TBufferJSON.cxx:795
 TBufferJSON.cxx:796
 TBufferJSON.cxx:797
 TBufferJSON.cxx:798
 TBufferJSON.cxx:799
 TBufferJSON.cxx:800
 TBufferJSON.cxx:801
 TBufferJSON.cxx:802
 TBufferJSON.cxx:803
 TBufferJSON.cxx:804
 TBufferJSON.cxx:805
 TBufferJSON.cxx:806
 TBufferJSON.cxx:807
 TBufferJSON.cxx:808
 TBufferJSON.cxx:809
 TBufferJSON.cxx:810
 TBufferJSON.cxx:811
 TBufferJSON.cxx:812
 TBufferJSON.cxx:813
 TBufferJSON.cxx:814
 TBufferJSON.cxx:815
 TBufferJSON.cxx:816
 TBufferJSON.cxx:817
 TBufferJSON.cxx:818
 TBufferJSON.cxx:819
 TBufferJSON.cxx:820
 TBufferJSON.cxx:821
 TBufferJSON.cxx:822
 TBufferJSON.cxx:823
 TBufferJSON.cxx:824
 TBufferJSON.cxx:825
 TBufferJSON.cxx:826
 TBufferJSON.cxx:827
 TBufferJSON.cxx:828
 TBufferJSON.cxx:829
 TBufferJSON.cxx:830
 TBufferJSON.cxx:831
 TBufferJSON.cxx:832
 TBufferJSON.cxx:833
 TBufferJSON.cxx:834
 TBufferJSON.cxx:835
 TBufferJSON.cxx:836
 TBufferJSON.cxx:837
 TBufferJSON.cxx:838
 TBufferJSON.cxx:839
 TBufferJSON.cxx:840
 TBufferJSON.cxx:841
 TBufferJSON.cxx:842
 TBufferJSON.cxx:843
 TBufferJSON.cxx:844
 TBufferJSON.cxx:845
 TBufferJSON.cxx:846
 TBufferJSON.cxx:847
 TBufferJSON.cxx:848
 TBufferJSON.cxx:849
 TBufferJSON.cxx:850
 TBufferJSON.cxx:851
 TBufferJSON.cxx:852
 TBufferJSON.cxx:853
 TBufferJSON.cxx:854
 TBufferJSON.cxx:855
 TBufferJSON.cxx:856
 TBufferJSON.cxx:857
 TBufferJSON.cxx:858
 TBufferJSON.cxx:859
 TBufferJSON.cxx:860
 TBufferJSON.cxx:861
 TBufferJSON.cxx:862
 TBufferJSON.cxx:863
 TBufferJSON.cxx:864
 TBufferJSON.cxx:865
 TBufferJSON.cxx:866
 TBufferJSON.cxx:867
 TBufferJSON.cxx:868
 TBufferJSON.cxx:869
 TBufferJSON.cxx:870
 TBufferJSON.cxx:871
 TBufferJSON.cxx:872
 TBufferJSON.cxx:873
 TBufferJSON.cxx:874
 TBufferJSON.cxx:875
 TBufferJSON.cxx:876
 TBufferJSON.cxx:877
 TBufferJSON.cxx:878
 TBufferJSON.cxx:879
 TBufferJSON.cxx:880
 TBufferJSON.cxx:881
 TBufferJSON.cxx:882
 TBufferJSON.cxx:883
 TBufferJSON.cxx:884
 TBufferJSON.cxx:885
 TBufferJSON.cxx:886
 TBufferJSON.cxx:887
 TBufferJSON.cxx:888
 TBufferJSON.cxx:889
 TBufferJSON.cxx:890
 TBufferJSON.cxx:891
 TBufferJSON.cxx:892
 TBufferJSON.cxx:893
 TBufferJSON.cxx:894
 TBufferJSON.cxx:895
 TBufferJSON.cxx:896
 TBufferJSON.cxx:897
 TBufferJSON.cxx:898
 TBufferJSON.cxx:899
 TBufferJSON.cxx:900
 TBufferJSON.cxx:901
 TBufferJSON.cxx:902
 TBufferJSON.cxx:903
 TBufferJSON.cxx:904
 TBufferJSON.cxx:905
 TBufferJSON.cxx:906
 TBufferJSON.cxx:907
 TBufferJSON.cxx:908
 TBufferJSON.cxx:909
 TBufferJSON.cxx:910
 TBufferJSON.cxx:911
 TBufferJSON.cxx:912
 TBufferJSON.cxx:913
 TBufferJSON.cxx:914
 TBufferJSON.cxx:915
 TBufferJSON.cxx:916
 TBufferJSON.cxx:917
 TBufferJSON.cxx:918
 TBufferJSON.cxx:919
 TBufferJSON.cxx:920
 TBufferJSON.cxx:921
 TBufferJSON.cxx:922
 TBufferJSON.cxx:923
 TBufferJSON.cxx:924
 TBufferJSON.cxx:925
 TBufferJSON.cxx:926
 TBufferJSON.cxx:927
 TBufferJSON.cxx:928
 TBufferJSON.cxx:929
 TBufferJSON.cxx:930
 TBufferJSON.cxx:931
 TBufferJSON.cxx:932
 TBufferJSON.cxx:933
 TBufferJSON.cxx:934
 TBufferJSON.cxx:935
 TBufferJSON.cxx:936
 TBufferJSON.cxx:937
 TBufferJSON.cxx:938
 TBufferJSON.cxx:939
 TBufferJSON.cxx:940
 TBufferJSON.cxx:941
 TBufferJSON.cxx:942
 TBufferJSON.cxx:943
 TBufferJSON.cxx:944
 TBufferJSON.cxx:945
 TBufferJSON.cxx:946
 TBufferJSON.cxx:947
 TBufferJSON.cxx:948
 TBufferJSON.cxx:949
 TBufferJSON.cxx:950
 TBufferJSON.cxx:951
 TBufferJSON.cxx:952
 TBufferJSON.cxx:953
 TBufferJSON.cxx:954
 TBufferJSON.cxx:955
 TBufferJSON.cxx:956
 TBufferJSON.cxx:957
 TBufferJSON.cxx:958
 TBufferJSON.cxx:959
 TBufferJSON.cxx:960
 TBufferJSON.cxx:961
 TBufferJSON.cxx:962
 TBufferJSON.cxx:963
 TBufferJSON.cxx:964
 TBufferJSON.cxx:965
 TBufferJSON.cxx:966
 TBufferJSON.cxx:967
 TBufferJSON.cxx:968
 TBufferJSON.cxx:969
 TBufferJSON.cxx:970
 TBufferJSON.cxx:971
 TBufferJSON.cxx:972
 TBufferJSON.cxx:973
 TBufferJSON.cxx:974
 TBufferJSON.cxx:975
 TBufferJSON.cxx:976
 TBufferJSON.cxx:977
 TBufferJSON.cxx:978
 TBufferJSON.cxx:979
 TBufferJSON.cxx:980
 TBufferJSON.cxx:981
 TBufferJSON.cxx:982
 TBufferJSON.cxx:983
 TBufferJSON.cxx:984
 TBufferJSON.cxx:985
 TBufferJSON.cxx:986
 TBufferJSON.cxx:987
 TBufferJSON.cxx:988
 TBufferJSON.cxx:989
 TBufferJSON.cxx:990
 TBufferJSON.cxx:991
 TBufferJSON.cxx:992
 TBufferJSON.cxx:993
 TBufferJSON.cxx:994
 TBufferJSON.cxx:995
 TBufferJSON.cxx:996
 TBufferJSON.cxx:997
 TBufferJSON.cxx:998
 TBufferJSON.cxx:999
 TBufferJSON.cxx:1000
 TBufferJSON.cxx:1001
 TBufferJSON.cxx:1002
 TBufferJSON.cxx:1003
 TBufferJSON.cxx:1004
 TBufferJSON.cxx:1005
 TBufferJSON.cxx:1006
 TBufferJSON.cxx:1007
 TBufferJSON.cxx:1008
 TBufferJSON.cxx:1009
 TBufferJSON.cxx:1010
 TBufferJSON.cxx:1011
 TBufferJSON.cxx:1012
 TBufferJSON.cxx:1013
 TBufferJSON.cxx:1014
 TBufferJSON.cxx:1015
 TBufferJSON.cxx:1016
 TBufferJSON.cxx:1017
 TBufferJSON.cxx:1018
 TBufferJSON.cxx:1019
 TBufferJSON.cxx:1020
 TBufferJSON.cxx:1021
 TBufferJSON.cxx:1022
 TBufferJSON.cxx:1023
 TBufferJSON.cxx:1024
 TBufferJSON.cxx:1025
 TBufferJSON.cxx:1026
 TBufferJSON.cxx:1027
 TBufferJSON.cxx:1028
 TBufferJSON.cxx:1029
 TBufferJSON.cxx:1030
 TBufferJSON.cxx:1031
 TBufferJSON.cxx:1032
 TBufferJSON.cxx:1033
 TBufferJSON.cxx:1034
 TBufferJSON.cxx:1035
 TBufferJSON.cxx:1036
 TBufferJSON.cxx:1037
 TBufferJSON.cxx:1038
 TBufferJSON.cxx:1039
 TBufferJSON.cxx:1040
 TBufferJSON.cxx:1041
 TBufferJSON.cxx:1042
 TBufferJSON.cxx:1043
 TBufferJSON.cxx:1044
 TBufferJSON.cxx:1045
 TBufferJSON.cxx:1046
 TBufferJSON.cxx:1047
 TBufferJSON.cxx:1048
 TBufferJSON.cxx:1049
 TBufferJSON.cxx:1050
 TBufferJSON.cxx:1051
 TBufferJSON.cxx:1052
 TBufferJSON.cxx:1053
 TBufferJSON.cxx:1054
 TBufferJSON.cxx:1055
 TBufferJSON.cxx:1056
 TBufferJSON.cxx:1057
 TBufferJSON.cxx:1058
 TBufferJSON.cxx:1059
 TBufferJSON.cxx:1060
 TBufferJSON.cxx:1061
 TBufferJSON.cxx:1062
 TBufferJSON.cxx:1063
 TBufferJSON.cxx:1064
 TBufferJSON.cxx:1065
 TBufferJSON.cxx:1066
 TBufferJSON.cxx:1067
 TBufferJSON.cxx:1068
 TBufferJSON.cxx:1069
 TBufferJSON.cxx:1070
 TBufferJSON.cxx:1071
 TBufferJSON.cxx:1072
 TBufferJSON.cxx:1073
 TBufferJSON.cxx:1074
 TBufferJSON.cxx:1075
 TBufferJSON.cxx:1076
 TBufferJSON.cxx:1077
 TBufferJSON.cxx:1078
 TBufferJSON.cxx:1079
 TBufferJSON.cxx:1080
 TBufferJSON.cxx:1081
 TBufferJSON.cxx:1082
 TBufferJSON.cxx:1083
 TBufferJSON.cxx:1084
 TBufferJSON.cxx:1085
 TBufferJSON.cxx:1086
 TBufferJSON.cxx:1087
 TBufferJSON.cxx:1088
 TBufferJSON.cxx:1089
 TBufferJSON.cxx:1090
 TBufferJSON.cxx:1091
 TBufferJSON.cxx:1092
 TBufferJSON.cxx:1093
 TBufferJSON.cxx:1094
 TBufferJSON.cxx:1095
 TBufferJSON.cxx:1096
 TBufferJSON.cxx:1097
 TBufferJSON.cxx:1098
 TBufferJSON.cxx:1099
 TBufferJSON.cxx:1100
 TBufferJSON.cxx:1101
 TBufferJSON.cxx:1102
 TBufferJSON.cxx:1103
 TBufferJSON.cxx:1104
 TBufferJSON.cxx:1105
 TBufferJSON.cxx:1106
 TBufferJSON.cxx:1107
 TBufferJSON.cxx:1108
 TBufferJSON.cxx:1109
 TBufferJSON.cxx:1110
 TBufferJSON.cxx:1111
 TBufferJSON.cxx:1112
 TBufferJSON.cxx:1113
 TBufferJSON.cxx:1114
 TBufferJSON.cxx:1115
 TBufferJSON.cxx:1116
 TBufferJSON.cxx:1117
 TBufferJSON.cxx:1118
 TBufferJSON.cxx:1119
 TBufferJSON.cxx:1120
 TBufferJSON.cxx:1121
 TBufferJSON.cxx:1122
 TBufferJSON.cxx:1123
 TBufferJSON.cxx:1124
 TBufferJSON.cxx:1125
 TBufferJSON.cxx:1126
 TBufferJSON.cxx:1127
 TBufferJSON.cxx:1128
 TBufferJSON.cxx:1129
 TBufferJSON.cxx:1130
 TBufferJSON.cxx:1131
 TBufferJSON.cxx:1132
 TBufferJSON.cxx:1133
 TBufferJSON.cxx:1134
 TBufferJSON.cxx:1135
 TBufferJSON.cxx:1136
 TBufferJSON.cxx:1137
 TBufferJSON.cxx:1138
 TBufferJSON.cxx:1139
 TBufferJSON.cxx:1140
 TBufferJSON.cxx:1141
 TBufferJSON.cxx:1142
 TBufferJSON.cxx:1143
 TBufferJSON.cxx:1144
 TBufferJSON.cxx:1145
 TBufferJSON.cxx:1146
 TBufferJSON.cxx:1147
 TBufferJSON.cxx:1148
 TBufferJSON.cxx:1149
 TBufferJSON.cxx:1150
 TBufferJSON.cxx:1151
 TBufferJSON.cxx:1152
 TBufferJSON.cxx:1153
 TBufferJSON.cxx:1154
 TBufferJSON.cxx:1155
 TBufferJSON.cxx:1156
 TBufferJSON.cxx:1157
 TBufferJSON.cxx:1158
 TBufferJSON.cxx:1159
 TBufferJSON.cxx:1160
 TBufferJSON.cxx:1161
 TBufferJSON.cxx:1162
 TBufferJSON.cxx:1163
 TBufferJSON.cxx:1164
 TBufferJSON.cxx:1165
 TBufferJSON.cxx:1166
 TBufferJSON.cxx:1167
 TBufferJSON.cxx:1168
 TBufferJSON.cxx:1169
 TBufferJSON.cxx:1170
 TBufferJSON.cxx:1171
 TBufferJSON.cxx:1172
 TBufferJSON.cxx:1173
 TBufferJSON.cxx:1174
 TBufferJSON.cxx:1175
 TBufferJSON.cxx:1176
 TBufferJSON.cxx:1177
 TBufferJSON.cxx:1178
 TBufferJSON.cxx:1179
 TBufferJSON.cxx:1180
 TBufferJSON.cxx:1181
 TBufferJSON.cxx:1182
 TBufferJSON.cxx:1183
 TBufferJSON.cxx:1184
 TBufferJSON.cxx:1185
 TBufferJSON.cxx:1186
 TBufferJSON.cxx:1187
 TBufferJSON.cxx:1188
 TBufferJSON.cxx:1189
 TBufferJSON.cxx:1190
 TBufferJSON.cxx:1191
 TBufferJSON.cxx:1192
 TBufferJSON.cxx:1193
 TBufferJSON.cxx:1194
 TBufferJSON.cxx:1195
 TBufferJSON.cxx:1196
 TBufferJSON.cxx:1197
 TBufferJSON.cxx:1198
 TBufferJSON.cxx:1199
 TBufferJSON.cxx:1200
 TBufferJSON.cxx:1201
 TBufferJSON.cxx:1202
 TBufferJSON.cxx:1203
 TBufferJSON.cxx:1204
 TBufferJSON.cxx:1205
 TBufferJSON.cxx:1206
 TBufferJSON.cxx:1207
 TBufferJSON.cxx:1208
 TBufferJSON.cxx:1209
 TBufferJSON.cxx:1210
 TBufferJSON.cxx:1211
 TBufferJSON.cxx:1212
 TBufferJSON.cxx:1213
 TBufferJSON.cxx:1214
 TBufferJSON.cxx:1215
 TBufferJSON.cxx:1216
 TBufferJSON.cxx:1217
 TBufferJSON.cxx:1218
 TBufferJSON.cxx:1219
 TBufferJSON.cxx:1220
 TBufferJSON.cxx:1221
 TBufferJSON.cxx:1222
 TBufferJSON.cxx:1223
 TBufferJSON.cxx:1224
 TBufferJSON.cxx:1225
 TBufferJSON.cxx:1226
 TBufferJSON.cxx:1227
 TBufferJSON.cxx:1228
 TBufferJSON.cxx:1229
 TBufferJSON.cxx:1230
 TBufferJSON.cxx:1231
 TBufferJSON.cxx:1232
 TBufferJSON.cxx:1233
 TBufferJSON.cxx:1234
 TBufferJSON.cxx:1235
 TBufferJSON.cxx:1236
 TBufferJSON.cxx:1237
 TBufferJSON.cxx:1238
 TBufferJSON.cxx:1239
 TBufferJSON.cxx:1240
 TBufferJSON.cxx:1241
 TBufferJSON.cxx:1242
 TBufferJSON.cxx:1243
 TBufferJSON.cxx:1244
 TBufferJSON.cxx:1245
 TBufferJSON.cxx:1246
 TBufferJSON.cxx:1247
 TBufferJSON.cxx:1248
 TBufferJSON.cxx:1249
 TBufferJSON.cxx:1250
 TBufferJSON.cxx:1251
 TBufferJSON.cxx:1252
 TBufferJSON.cxx:1253
 TBufferJSON.cxx:1254
 TBufferJSON.cxx:1255
 TBufferJSON.cxx:1256
 TBufferJSON.cxx:1257
 TBufferJSON.cxx:1258
 TBufferJSON.cxx:1259
 TBufferJSON.cxx:1260
 TBufferJSON.cxx:1261
 TBufferJSON.cxx:1262
 TBufferJSON.cxx:1263
 TBufferJSON.cxx:1264
 TBufferJSON.cxx:1265
 TBufferJSON.cxx:1266
 TBufferJSON.cxx:1267
 TBufferJSON.cxx:1268
 TBufferJSON.cxx:1269
 TBufferJSON.cxx:1270
 TBufferJSON.cxx:1271
 TBufferJSON.cxx:1272
 TBufferJSON.cxx:1273
 TBufferJSON.cxx:1274
 TBufferJSON.cxx:1275
 TBufferJSON.cxx:1276
 TBufferJSON.cxx:1277
 TBufferJSON.cxx:1278
 TBufferJSON.cxx:1279
 TBufferJSON.cxx:1280
 TBufferJSON.cxx:1281
 TBufferJSON.cxx:1282
 TBufferJSON.cxx:1283
 TBufferJSON.cxx:1284
 TBufferJSON.cxx:1285
 TBufferJSON.cxx:1286
 TBufferJSON.cxx:1287
 TBufferJSON.cxx:1288
 TBufferJSON.cxx:1289
 TBufferJSON.cxx:1290
 TBufferJSON.cxx:1291
 TBufferJSON.cxx:1292
 TBufferJSON.cxx:1293
 TBufferJSON.cxx:1294
 TBufferJSON.cxx:1295
 TBufferJSON.cxx:1296
 TBufferJSON.cxx:1297
 TBufferJSON.cxx:1298
 TBufferJSON.cxx:1299
 TBufferJSON.cxx:1300
 TBufferJSON.cxx:1301
 TBufferJSON.cxx:1302
 TBufferJSON.cxx:1303
 TBufferJSON.cxx:1304
 TBufferJSON.cxx:1305
 TBufferJSON.cxx:1306
 TBufferJSON.cxx:1307
 TBufferJSON.cxx:1308
 TBufferJSON.cxx:1309
 TBufferJSON.cxx:1310
 TBufferJSON.cxx:1311
 TBufferJSON.cxx:1312
 TBufferJSON.cxx:1313
 TBufferJSON.cxx:1314
 TBufferJSON.cxx:1315
 TBufferJSON.cxx:1316
 TBufferJSON.cxx:1317
 TBufferJSON.cxx:1318
 TBufferJSON.cxx:1319
 TBufferJSON.cxx:1320
 TBufferJSON.cxx:1321
 TBufferJSON.cxx:1322
 TBufferJSON.cxx:1323
 TBufferJSON.cxx:1324
 TBufferJSON.cxx:1325
 TBufferJSON.cxx:1326
 TBufferJSON.cxx:1327
 TBufferJSON.cxx:1328
 TBufferJSON.cxx:1329
 TBufferJSON.cxx:1330
 TBufferJSON.cxx:1331
 TBufferJSON.cxx:1332
 TBufferJSON.cxx:1333
 TBufferJSON.cxx:1334
 TBufferJSON.cxx:1335
 TBufferJSON.cxx:1336
 TBufferJSON.cxx:1337
 TBufferJSON.cxx:1338
 TBufferJSON.cxx:1339
 TBufferJSON.cxx:1340
 TBufferJSON.cxx:1341
 TBufferJSON.cxx:1342
 TBufferJSON.cxx:1343
 TBufferJSON.cxx:1344
 TBufferJSON.cxx:1345
 TBufferJSON.cxx:1346
 TBufferJSON.cxx:1347
 TBufferJSON.cxx:1348
 TBufferJSON.cxx:1349
 TBufferJSON.cxx:1350
 TBufferJSON.cxx:1351
 TBufferJSON.cxx:1352
 TBufferJSON.cxx:1353
 TBufferJSON.cxx:1354
 TBufferJSON.cxx:1355
 TBufferJSON.cxx:1356
 TBufferJSON.cxx:1357
 TBufferJSON.cxx:1358
 TBufferJSON.cxx:1359
 TBufferJSON.cxx:1360
 TBufferJSON.cxx:1361
 TBufferJSON.cxx:1362
 TBufferJSON.cxx:1363
 TBufferJSON.cxx:1364
 TBufferJSON.cxx:1365
 TBufferJSON.cxx:1366
 TBufferJSON.cxx:1367
 TBufferJSON.cxx:1368
 TBufferJSON.cxx:1369
 TBufferJSON.cxx:1370
 TBufferJSON.cxx:1371
 TBufferJSON.cxx:1372
 TBufferJSON.cxx:1373
 TBufferJSON.cxx:1374
 TBufferJSON.cxx:1375
 TBufferJSON.cxx:1376
 TBufferJSON.cxx:1377
 TBufferJSON.cxx:1378
 TBufferJSON.cxx:1379
 TBufferJSON.cxx:1380
 TBufferJSON.cxx:1381
 TBufferJSON.cxx:1382
 TBufferJSON.cxx:1383
 TBufferJSON.cxx:1384
 TBufferJSON.cxx:1385
 TBufferJSON.cxx:1386
 TBufferJSON.cxx:1387
 TBufferJSON.cxx:1388
 TBufferJSON.cxx:1389
 TBufferJSON.cxx:1390
 TBufferJSON.cxx:1391
 TBufferJSON.cxx:1392
 TBufferJSON.cxx:1393
 TBufferJSON.cxx:1394
 TBufferJSON.cxx:1395
 TBufferJSON.cxx:1396
 TBufferJSON.cxx:1397
 TBufferJSON.cxx:1398
 TBufferJSON.cxx:1399
 TBufferJSON.cxx:1400
 TBufferJSON.cxx:1401
 TBufferJSON.cxx:1402
 TBufferJSON.cxx:1403
 TBufferJSON.cxx:1404
 TBufferJSON.cxx:1405
 TBufferJSON.cxx:1406
 TBufferJSON.cxx:1407
 TBufferJSON.cxx:1408
 TBufferJSON.cxx:1409
 TBufferJSON.cxx:1410
 TBufferJSON.cxx:1411
 TBufferJSON.cxx:1412
 TBufferJSON.cxx:1413
 TBufferJSON.cxx:1414
 TBufferJSON.cxx:1415
 TBufferJSON.cxx:1416
 TBufferJSON.cxx:1417
 TBufferJSON.cxx:1418
 TBufferJSON.cxx:1419
 TBufferJSON.cxx:1420
 TBufferJSON.cxx:1421
 TBufferJSON.cxx:1422
 TBufferJSON.cxx:1423
 TBufferJSON.cxx:1424
 TBufferJSON.cxx:1425
 TBufferJSON.cxx:1426
 TBufferJSON.cxx:1427
 TBufferJSON.cxx:1428
 TBufferJSON.cxx:1429
 TBufferJSON.cxx:1430
 TBufferJSON.cxx:1431
 TBufferJSON.cxx:1432
 TBufferJSON.cxx:1433
 TBufferJSON.cxx:1434
 TBufferJSON.cxx:1435
 TBufferJSON.cxx:1436
 TBufferJSON.cxx:1437
 TBufferJSON.cxx:1438
 TBufferJSON.cxx:1439
 TBufferJSON.cxx:1440
 TBufferJSON.cxx:1441
 TBufferJSON.cxx:1442
 TBufferJSON.cxx:1443
 TBufferJSON.cxx:1444
 TBufferJSON.cxx:1445
 TBufferJSON.cxx:1446
 TBufferJSON.cxx:1447
 TBufferJSON.cxx:1448
 TBufferJSON.cxx:1449
 TBufferJSON.cxx:1450
 TBufferJSON.cxx:1451
 TBufferJSON.cxx:1452
 TBufferJSON.cxx:1453
 TBufferJSON.cxx:1454
 TBufferJSON.cxx:1455
 TBufferJSON.cxx:1456
 TBufferJSON.cxx:1457
 TBufferJSON.cxx:1458
 TBufferJSON.cxx:1459
 TBufferJSON.cxx:1460
 TBufferJSON.cxx:1461
 TBufferJSON.cxx:1462
 TBufferJSON.cxx:1463
 TBufferJSON.cxx:1464
 TBufferJSON.cxx:1465
 TBufferJSON.cxx:1466
 TBufferJSON.cxx:1467
 TBufferJSON.cxx:1468
 TBufferJSON.cxx:1469
 TBufferJSON.cxx:1470
 TBufferJSON.cxx:1471
 TBufferJSON.cxx:1472
 TBufferJSON.cxx:1473
 TBufferJSON.cxx:1474
 TBufferJSON.cxx:1475
 TBufferJSON.cxx:1476
 TBufferJSON.cxx:1477
 TBufferJSON.cxx:1478
 TBufferJSON.cxx:1479
 TBufferJSON.cxx:1480
 TBufferJSON.cxx:1481
 TBufferJSON.cxx:1482
 TBufferJSON.cxx:1483
 TBufferJSON.cxx:1484
 TBufferJSON.cxx:1485
 TBufferJSON.cxx:1486
 TBufferJSON.cxx:1487
 TBufferJSON.cxx:1488
 TBufferJSON.cxx:1489
 TBufferJSON.cxx:1490
 TBufferJSON.cxx:1491
 TBufferJSON.cxx:1492
 TBufferJSON.cxx:1493
 TBufferJSON.cxx:1494
 TBufferJSON.cxx:1495
 TBufferJSON.cxx:1496
 TBufferJSON.cxx:1497
 TBufferJSON.cxx:1498
 TBufferJSON.cxx:1499
 TBufferJSON.cxx:1500
 TBufferJSON.cxx:1501
 TBufferJSON.cxx:1502
 TBufferJSON.cxx:1503
 TBufferJSON.cxx:1504
 TBufferJSON.cxx:1505
 TBufferJSON.cxx:1506
 TBufferJSON.cxx:1507
 TBufferJSON.cxx:1508
 TBufferJSON.cxx:1509
 TBufferJSON.cxx:1510
 TBufferJSON.cxx:1511
 TBufferJSON.cxx:1512
 TBufferJSON.cxx:1513
 TBufferJSON.cxx:1514
 TBufferJSON.cxx:1515
 TBufferJSON.cxx:1516
 TBufferJSON.cxx:1517
 TBufferJSON.cxx:1518
 TBufferJSON.cxx:1519
 TBufferJSON.cxx:1520
 TBufferJSON.cxx:1521
 TBufferJSON.cxx:1522
 TBufferJSON.cxx:1523
 TBufferJSON.cxx:1524
 TBufferJSON.cxx:1525
 TBufferJSON.cxx:1526
 TBufferJSON.cxx:1527
 TBufferJSON.cxx:1528
 TBufferJSON.cxx:1529
 TBufferJSON.cxx:1530
 TBufferJSON.cxx:1531
 TBufferJSON.cxx:1532
 TBufferJSON.cxx:1533
 TBufferJSON.cxx:1534
 TBufferJSON.cxx:1535
 TBufferJSON.cxx:1536
 TBufferJSON.cxx:1537
 TBufferJSON.cxx:1538
 TBufferJSON.cxx:1539
 TBufferJSON.cxx:1540
 TBufferJSON.cxx:1541
 TBufferJSON.cxx:1542
 TBufferJSON.cxx:1543
 TBufferJSON.cxx:1544
 TBufferJSON.cxx:1545
 TBufferJSON.cxx:1546
 TBufferJSON.cxx:1547
 TBufferJSON.cxx:1548
 TBufferJSON.cxx:1549
 TBufferJSON.cxx:1550
 TBufferJSON.cxx:1551
 TBufferJSON.cxx:1552
 TBufferJSON.cxx:1553
 TBufferJSON.cxx:1554
 TBufferJSON.cxx:1555
 TBufferJSON.cxx:1556
 TBufferJSON.cxx:1557
 TBufferJSON.cxx:1558
 TBufferJSON.cxx:1559
 TBufferJSON.cxx:1560
 TBufferJSON.cxx:1561
 TBufferJSON.cxx:1562
 TBufferJSON.cxx:1563
 TBufferJSON.cxx:1564
 TBufferJSON.cxx:1565
 TBufferJSON.cxx:1566
 TBufferJSON.cxx:1567
 TBufferJSON.cxx:1568
 TBufferJSON.cxx:1569
 TBufferJSON.cxx:1570
 TBufferJSON.cxx:1571
 TBufferJSON.cxx:1572
 TBufferJSON.cxx:1573
 TBufferJSON.cxx:1574
 TBufferJSON.cxx:1575
 TBufferJSON.cxx:1576
 TBufferJSON.cxx:1577
 TBufferJSON.cxx:1578
 TBufferJSON.cxx:1579
 TBufferJSON.cxx:1580
 TBufferJSON.cxx:1581
 TBufferJSON.cxx:1582
 TBufferJSON.cxx:1583
 TBufferJSON.cxx:1584
 TBufferJSON.cxx:1585
 TBufferJSON.cxx:1586
 TBufferJSON.cxx:1587
 TBufferJSON.cxx:1588
 TBufferJSON.cxx:1589
 TBufferJSON.cxx:1590
 TBufferJSON.cxx:1591
 TBufferJSON.cxx:1592
 TBufferJSON.cxx:1593
 TBufferJSON.cxx:1594
 TBufferJSON.cxx:1595
 TBufferJSON.cxx:1596
 TBufferJSON.cxx:1597
 TBufferJSON.cxx:1598
 TBufferJSON.cxx:1599
 TBufferJSON.cxx:1600
 TBufferJSON.cxx:1601
 TBufferJSON.cxx:1602
 TBufferJSON.cxx:1603
 TBufferJSON.cxx:1604
 TBufferJSON.cxx:1605
 TBufferJSON.cxx:1606
 TBufferJSON.cxx:1607
 TBufferJSON.cxx:1608
 TBufferJSON.cxx:1609
 TBufferJSON.cxx:1610
 TBufferJSON.cxx:1611
 TBufferJSON.cxx:1612
 TBufferJSON.cxx:1613
 TBufferJSON.cxx:1614
 TBufferJSON.cxx:1615
 TBufferJSON.cxx:1616
 TBufferJSON.cxx:1617
 TBufferJSON.cxx:1618
 TBufferJSON.cxx:1619
 TBufferJSON.cxx:1620
 TBufferJSON.cxx:1621
 TBufferJSON.cxx:1622
 TBufferJSON.cxx:1623
 TBufferJSON.cxx:1624
 TBufferJSON.cxx:1625
 TBufferJSON.cxx:1626
 TBufferJSON.cxx:1627
 TBufferJSON.cxx:1628
 TBufferJSON.cxx:1629
 TBufferJSON.cxx:1630
 TBufferJSON.cxx:1631
 TBufferJSON.cxx:1632
 TBufferJSON.cxx:1633
 TBufferJSON.cxx:1634
 TBufferJSON.cxx:1635
 TBufferJSON.cxx:1636
 TBufferJSON.cxx:1637
 TBufferJSON.cxx:1638
 TBufferJSON.cxx:1639
 TBufferJSON.cxx:1640
 TBufferJSON.cxx:1641
 TBufferJSON.cxx:1642
 TBufferJSON.cxx:1643
 TBufferJSON.cxx:1644
 TBufferJSON.cxx:1645
 TBufferJSON.cxx:1646
 TBufferJSON.cxx:1647
 TBufferJSON.cxx:1648
 TBufferJSON.cxx:1649
 TBufferJSON.cxx:1650
 TBufferJSON.cxx:1651
 TBufferJSON.cxx:1652
 TBufferJSON.cxx:1653
 TBufferJSON.cxx:1654
 TBufferJSON.cxx:1655
 TBufferJSON.cxx:1656
 TBufferJSON.cxx:1657
 TBufferJSON.cxx:1658
 TBufferJSON.cxx:1659
 TBufferJSON.cxx:1660
 TBufferJSON.cxx:1661
 TBufferJSON.cxx:1662
 TBufferJSON.cxx:1663
 TBufferJSON.cxx:1664
 TBufferJSON.cxx:1665
 TBufferJSON.cxx:1666
 TBufferJSON.cxx:1667
 TBufferJSON.cxx:1668
 TBufferJSON.cxx:1669
 TBufferJSON.cxx:1670
 TBufferJSON.cxx:1671
 TBufferJSON.cxx:1672
 TBufferJSON.cxx:1673
 TBufferJSON.cxx:1674
 TBufferJSON.cxx:1675
 TBufferJSON.cxx:1676
 TBufferJSON.cxx:1677
 TBufferJSON.cxx:1678
 TBufferJSON.cxx:1679
 TBufferJSON.cxx:1680
 TBufferJSON.cxx:1681
 TBufferJSON.cxx:1682
 TBufferJSON.cxx:1683
 TBufferJSON.cxx:1684
 TBufferJSON.cxx:1685
 TBufferJSON.cxx:1686
 TBufferJSON.cxx:1687
 TBufferJSON.cxx:1688
 TBufferJSON.cxx:1689
 TBufferJSON.cxx:1690
 TBufferJSON.cxx:1691
 TBufferJSON.cxx:1692
 TBufferJSON.cxx:1693
 TBufferJSON.cxx:1694
 TBufferJSON.cxx:1695
 TBufferJSON.cxx:1696
 TBufferJSON.cxx:1697
 TBufferJSON.cxx:1698
 TBufferJSON.cxx:1699
 TBufferJSON.cxx:1700
 TBufferJSON.cxx:1701
 TBufferJSON.cxx:1702
 TBufferJSON.cxx:1703
 TBufferJSON.cxx:1704
 TBufferJSON.cxx:1705
 TBufferJSON.cxx:1706
 TBufferJSON.cxx:1707
 TBufferJSON.cxx:1708
 TBufferJSON.cxx:1709
 TBufferJSON.cxx:1710
 TBufferJSON.cxx:1711
 TBufferJSON.cxx:1712
 TBufferJSON.cxx:1713
 TBufferJSON.cxx:1714
 TBufferJSON.cxx:1715
 TBufferJSON.cxx:1716
 TBufferJSON.cxx:1717
 TBufferJSON.cxx:1718
 TBufferJSON.cxx:1719
 TBufferJSON.cxx:1720
 TBufferJSON.cxx:1721
 TBufferJSON.cxx:1722
 TBufferJSON.cxx:1723
 TBufferJSON.cxx:1724
 TBufferJSON.cxx:1725
 TBufferJSON.cxx:1726
 TBufferJSON.cxx:1727
 TBufferJSON.cxx:1728
 TBufferJSON.cxx:1729
 TBufferJSON.cxx:1730
 TBufferJSON.cxx:1731
 TBufferJSON.cxx:1732
 TBufferJSON.cxx:1733
 TBufferJSON.cxx:1734
 TBufferJSON.cxx:1735
 TBufferJSON.cxx:1736
 TBufferJSON.cxx:1737
 TBufferJSON.cxx:1738
 TBufferJSON.cxx:1739
 TBufferJSON.cxx:1740
 TBufferJSON.cxx:1741
 TBufferJSON.cxx:1742
 TBufferJSON.cxx:1743
 TBufferJSON.cxx:1744
 TBufferJSON.cxx:1745
 TBufferJSON.cxx:1746
 TBufferJSON.cxx:1747
 TBufferJSON.cxx:1748
 TBufferJSON.cxx:1749
 TBufferJSON.cxx:1750
 TBufferJSON.cxx:1751
 TBufferJSON.cxx:1752
 TBufferJSON.cxx:1753
 TBufferJSON.cxx:1754
 TBufferJSON.cxx:1755
 TBufferJSON.cxx:1756
 TBufferJSON.cxx:1757
 TBufferJSON.cxx:1758
 TBufferJSON.cxx:1759
 TBufferJSON.cxx:1760
 TBufferJSON.cxx:1761
 TBufferJSON.cxx:1762
 TBufferJSON.cxx:1763
 TBufferJSON.cxx:1764
 TBufferJSON.cxx:1765
 TBufferJSON.cxx:1766
 TBufferJSON.cxx:1767
 TBufferJSON.cxx:1768
 TBufferJSON.cxx:1769
 TBufferJSON.cxx:1770
 TBufferJSON.cxx:1771
 TBufferJSON.cxx:1772
 TBufferJSON.cxx:1773
 TBufferJSON.cxx:1774
 TBufferJSON.cxx:1775
 TBufferJSON.cxx:1776
 TBufferJSON.cxx:1777
 TBufferJSON.cxx:1778
 TBufferJSON.cxx:1779
 TBufferJSON.cxx:1780
 TBufferJSON.cxx:1781
 TBufferJSON.cxx:1782
 TBufferJSON.cxx:1783
 TBufferJSON.cxx:1784
 TBufferJSON.cxx:1785
 TBufferJSON.cxx:1786
 TBufferJSON.cxx:1787
 TBufferJSON.cxx:1788
 TBufferJSON.cxx:1789
 TBufferJSON.cxx:1790
 TBufferJSON.cxx:1791
 TBufferJSON.cxx:1792
 TBufferJSON.cxx:1793
 TBufferJSON.cxx:1794
 TBufferJSON.cxx:1795
 TBufferJSON.cxx:1796
 TBufferJSON.cxx:1797
 TBufferJSON.cxx:1798
 TBufferJSON.cxx:1799
 TBufferJSON.cxx:1800
 TBufferJSON.cxx:1801
 TBufferJSON.cxx:1802
 TBufferJSON.cxx:1803
 TBufferJSON.cxx:1804
 TBufferJSON.cxx:1805
 TBufferJSON.cxx:1806
 TBufferJSON.cxx:1807
 TBufferJSON.cxx:1808
 TBufferJSON.cxx:1809
 TBufferJSON.cxx:1810
 TBufferJSON.cxx:1811
 TBufferJSON.cxx:1812
 TBufferJSON.cxx:1813
 TBufferJSON.cxx:1814
 TBufferJSON.cxx:1815
 TBufferJSON.cxx:1816
 TBufferJSON.cxx:1817
 TBufferJSON.cxx:1818
 TBufferJSON.cxx:1819
 TBufferJSON.cxx:1820
 TBufferJSON.cxx:1821
 TBufferJSON.cxx:1822
 TBufferJSON.cxx:1823
 TBufferJSON.cxx:1824
 TBufferJSON.cxx:1825
 TBufferJSON.cxx:1826
 TBufferJSON.cxx:1827
 TBufferJSON.cxx:1828
 TBufferJSON.cxx:1829
 TBufferJSON.cxx:1830
 TBufferJSON.cxx:1831
 TBufferJSON.cxx:1832
 TBufferJSON.cxx:1833
 TBufferJSON.cxx:1834
 TBufferJSON.cxx:1835
 TBufferJSON.cxx:1836
 TBufferJSON.cxx:1837
 TBufferJSON.cxx:1838
 TBufferJSON.cxx:1839
 TBufferJSON.cxx:1840
 TBufferJSON.cxx:1841
 TBufferJSON.cxx:1842
 TBufferJSON.cxx:1843
 TBufferJSON.cxx:1844
 TBufferJSON.cxx:1845
 TBufferJSON.cxx:1846
 TBufferJSON.cxx:1847
 TBufferJSON.cxx:1848
 TBufferJSON.cxx:1849
 TBufferJSON.cxx:1850
 TBufferJSON.cxx:1851
 TBufferJSON.cxx:1852
 TBufferJSON.cxx:1853
 TBufferJSON.cxx:1854
 TBufferJSON.cxx:1855
 TBufferJSON.cxx:1856
 TBufferJSON.cxx:1857
 TBufferJSON.cxx:1858
 TBufferJSON.cxx:1859
 TBufferJSON.cxx:1860
 TBufferJSON.cxx:1861
 TBufferJSON.cxx:1862
 TBufferJSON.cxx:1863
 TBufferJSON.cxx:1864
 TBufferJSON.cxx:1865
 TBufferJSON.cxx:1866
 TBufferJSON.cxx:1867
 TBufferJSON.cxx:1868
 TBufferJSON.cxx:1869
 TBufferJSON.cxx:1870
 TBufferJSON.cxx:1871
 TBufferJSON.cxx:1872
 TBufferJSON.cxx:1873
 TBufferJSON.cxx:1874
 TBufferJSON.cxx:1875
 TBufferJSON.cxx:1876
 TBufferJSON.cxx:1877
 TBufferJSON.cxx:1878
 TBufferJSON.cxx:1879
 TBufferJSON.cxx:1880
 TBufferJSON.cxx:1881
 TBufferJSON.cxx:1882
 TBufferJSON.cxx:1883
 TBufferJSON.cxx:1884
 TBufferJSON.cxx:1885
 TBufferJSON.cxx:1886
 TBufferJSON.cxx:1887
 TBufferJSON.cxx:1888
 TBufferJSON.cxx:1889
 TBufferJSON.cxx:1890
 TBufferJSON.cxx:1891
 TBufferJSON.cxx:1892
 TBufferJSON.cxx:1893
 TBufferJSON.cxx:1894
 TBufferJSON.cxx:1895
 TBufferJSON.cxx:1896
 TBufferJSON.cxx:1897
 TBufferJSON.cxx:1898
 TBufferJSON.cxx:1899
 TBufferJSON.cxx:1900
 TBufferJSON.cxx:1901
 TBufferJSON.cxx:1902
 TBufferJSON.cxx:1903
 TBufferJSON.cxx:1904
 TBufferJSON.cxx:1905
 TBufferJSON.cxx:1906
 TBufferJSON.cxx:1907
 TBufferJSON.cxx:1908
 TBufferJSON.cxx:1909
 TBufferJSON.cxx:1910
 TBufferJSON.cxx:1911
 TBufferJSON.cxx:1912
 TBufferJSON.cxx:1913
 TBufferJSON.cxx:1914
 TBufferJSON.cxx:1915
 TBufferJSON.cxx:1916
 TBufferJSON.cxx:1917
 TBufferJSON.cxx:1918
 TBufferJSON.cxx:1919
 TBufferJSON.cxx:1920
 TBufferJSON.cxx:1921
 TBufferJSON.cxx:1922
 TBufferJSON.cxx:1923
 TBufferJSON.cxx:1924
 TBufferJSON.cxx:1925
 TBufferJSON.cxx:1926
 TBufferJSON.cxx:1927
 TBufferJSON.cxx:1928
 TBufferJSON.cxx:1929
 TBufferJSON.cxx:1930
 TBufferJSON.cxx:1931
 TBufferJSON.cxx:1932
 TBufferJSON.cxx:1933
 TBufferJSON.cxx:1934
 TBufferJSON.cxx:1935
 TBufferJSON.cxx:1936
 TBufferJSON.cxx:1937
 TBufferJSON.cxx:1938
 TBufferJSON.cxx:1939
 TBufferJSON.cxx:1940
 TBufferJSON.cxx:1941
 TBufferJSON.cxx:1942
 TBufferJSON.cxx:1943
 TBufferJSON.cxx:1944
 TBufferJSON.cxx:1945
 TBufferJSON.cxx:1946
 TBufferJSON.cxx:1947
 TBufferJSON.cxx:1948
 TBufferJSON.cxx:1949
 TBufferJSON.cxx:1950
 TBufferJSON.cxx:1951
 TBufferJSON.cxx:1952
 TBufferJSON.cxx:1953
 TBufferJSON.cxx:1954
 TBufferJSON.cxx:1955
 TBufferJSON.cxx:1956
 TBufferJSON.cxx:1957
 TBufferJSON.cxx:1958
 TBufferJSON.cxx:1959
 TBufferJSON.cxx:1960
 TBufferJSON.cxx:1961
 TBufferJSON.cxx:1962
 TBufferJSON.cxx:1963
 TBufferJSON.cxx:1964
 TBufferJSON.cxx:1965
 TBufferJSON.cxx:1966
 TBufferJSON.cxx:1967
 TBufferJSON.cxx:1968
 TBufferJSON.cxx:1969
 TBufferJSON.cxx:1970
 TBufferJSON.cxx:1971
 TBufferJSON.cxx:1972
 TBufferJSON.cxx:1973
 TBufferJSON.cxx:1974
 TBufferJSON.cxx:1975
 TBufferJSON.cxx:1976
 TBufferJSON.cxx:1977
 TBufferJSON.cxx:1978
 TBufferJSON.cxx:1979
 TBufferJSON.cxx:1980
 TBufferJSON.cxx:1981
 TBufferJSON.cxx:1982
 TBufferJSON.cxx:1983
 TBufferJSON.cxx:1984
 TBufferJSON.cxx:1985
 TBufferJSON.cxx:1986
 TBufferJSON.cxx:1987
 TBufferJSON.cxx:1988
 TBufferJSON.cxx:1989
 TBufferJSON.cxx:1990
 TBufferJSON.cxx:1991
 TBufferJSON.cxx:1992
 TBufferJSON.cxx:1993
 TBufferJSON.cxx:1994
 TBufferJSON.cxx:1995
 TBufferJSON.cxx:1996
 TBufferJSON.cxx:1997
 TBufferJSON.cxx:1998
 TBufferJSON.cxx:1999
 TBufferJSON.cxx:2000
 TBufferJSON.cxx:2001
 TBufferJSON.cxx:2002
 TBufferJSON.cxx:2003
 TBufferJSON.cxx:2004
 TBufferJSON.cxx:2005
 TBufferJSON.cxx:2006
 TBufferJSON.cxx:2007
 TBufferJSON.cxx:2008
 TBufferJSON.cxx:2009
 TBufferJSON.cxx:2010
 TBufferJSON.cxx:2011
 TBufferJSON.cxx:2012
 TBufferJSON.cxx:2013
 TBufferJSON.cxx:2014
 TBufferJSON.cxx:2015
 TBufferJSON.cxx:2016
 TBufferJSON.cxx:2017
 TBufferJSON.cxx:2018
 TBufferJSON.cxx:2019
 TBufferJSON.cxx:2020
 TBufferJSON.cxx:2021
 TBufferJSON.cxx:2022
 TBufferJSON.cxx:2023
 TBufferJSON.cxx:2024
 TBufferJSON.cxx:2025
 TBufferJSON.cxx:2026
 TBufferJSON.cxx:2027
 TBufferJSON.cxx:2028
 TBufferJSON.cxx:2029
 TBufferJSON.cxx:2030
 TBufferJSON.cxx:2031
 TBufferJSON.cxx:2032
 TBufferJSON.cxx:2033
 TBufferJSON.cxx:2034
 TBufferJSON.cxx:2035
 TBufferJSON.cxx:2036
 TBufferJSON.cxx:2037
 TBufferJSON.cxx:2038
 TBufferJSON.cxx:2039
 TBufferJSON.cxx:2040
 TBufferJSON.cxx:2041
 TBufferJSON.cxx:2042
 TBufferJSON.cxx:2043
 TBufferJSON.cxx:2044
 TBufferJSON.cxx:2045
 TBufferJSON.cxx:2046
 TBufferJSON.cxx:2047
 TBufferJSON.cxx:2048
 TBufferJSON.cxx:2049
 TBufferJSON.cxx:2050
 TBufferJSON.cxx:2051
 TBufferJSON.cxx:2052
 TBufferJSON.cxx:2053
 TBufferJSON.cxx:2054
 TBufferJSON.cxx:2055
 TBufferJSON.cxx:2056
 TBufferJSON.cxx:2057
 TBufferJSON.cxx:2058
 TBufferJSON.cxx:2059
 TBufferJSON.cxx:2060
 TBufferJSON.cxx:2061
 TBufferJSON.cxx:2062
 TBufferJSON.cxx:2063
 TBufferJSON.cxx:2064
 TBufferJSON.cxx:2065
 TBufferJSON.cxx:2066
 TBufferJSON.cxx:2067
 TBufferJSON.cxx:2068
 TBufferJSON.cxx:2069
 TBufferJSON.cxx:2070
 TBufferJSON.cxx:2071
 TBufferJSON.cxx:2072
 TBufferJSON.cxx:2073
 TBufferJSON.cxx:2074
 TBufferJSON.cxx:2075
 TBufferJSON.cxx:2076
 TBufferJSON.cxx:2077
 TBufferJSON.cxx:2078
 TBufferJSON.cxx:2079
 TBufferJSON.cxx:2080
 TBufferJSON.cxx:2081
 TBufferJSON.cxx:2082
 TBufferJSON.cxx:2083
 TBufferJSON.cxx:2084
 TBufferJSON.cxx:2085
 TBufferJSON.cxx:2086
 TBufferJSON.cxx:2087
 TBufferJSON.cxx:2088
 TBufferJSON.cxx:2089
 TBufferJSON.cxx:2090
 TBufferJSON.cxx:2091
 TBufferJSON.cxx:2092
 TBufferJSON.cxx:2093
 TBufferJSON.cxx:2094
 TBufferJSON.cxx:2095
 TBufferJSON.cxx:2096
 TBufferJSON.cxx:2097
 TBufferJSON.cxx:2098
 TBufferJSON.cxx:2099
 TBufferJSON.cxx:2100
 TBufferJSON.cxx:2101
 TBufferJSON.cxx:2102
 TBufferJSON.cxx:2103
 TBufferJSON.cxx:2104
 TBufferJSON.cxx:2105
 TBufferJSON.cxx:2106
 TBufferJSON.cxx:2107
 TBufferJSON.cxx:2108
 TBufferJSON.cxx:2109
 TBufferJSON.cxx:2110
 TBufferJSON.cxx:2111
 TBufferJSON.cxx:2112
 TBufferJSON.cxx:2113
 TBufferJSON.cxx:2114
 TBufferJSON.cxx:2115
 TBufferJSON.cxx:2116
 TBufferJSON.cxx:2117
 TBufferJSON.cxx:2118
 TBufferJSON.cxx:2119
 TBufferJSON.cxx:2120
 TBufferJSON.cxx:2121
 TBufferJSON.cxx:2122
 TBufferJSON.cxx:2123
 TBufferJSON.cxx:2124
 TBufferJSON.cxx:2125
 TBufferJSON.cxx:2126
 TBufferJSON.cxx:2127
 TBufferJSON.cxx:2128
 TBufferJSON.cxx:2129
 TBufferJSON.cxx:2130
 TBufferJSON.cxx:2131
 TBufferJSON.cxx:2132
 TBufferJSON.cxx:2133
 TBufferJSON.cxx:2134
 TBufferJSON.cxx:2135
 TBufferJSON.cxx:2136
 TBufferJSON.cxx:2137
 TBufferJSON.cxx:2138
 TBufferJSON.cxx:2139
 TBufferJSON.cxx:2140
 TBufferJSON.cxx:2141
 TBufferJSON.cxx:2142
 TBufferJSON.cxx:2143
 TBufferJSON.cxx:2144
 TBufferJSON.cxx:2145
 TBufferJSON.cxx:2146
 TBufferJSON.cxx:2147
 TBufferJSON.cxx:2148
 TBufferJSON.cxx:2149
 TBufferJSON.cxx:2150
 TBufferJSON.cxx:2151
 TBufferJSON.cxx:2152
 TBufferJSON.cxx:2153
 TBufferJSON.cxx:2154
 TBufferJSON.cxx:2155
 TBufferJSON.cxx:2156
 TBufferJSON.cxx:2157
 TBufferJSON.cxx:2158
 TBufferJSON.cxx:2159
 TBufferJSON.cxx:2160
 TBufferJSON.cxx:2161
 TBufferJSON.cxx:2162
 TBufferJSON.cxx:2163
 TBufferJSON.cxx:2164
 TBufferJSON.cxx:2165
 TBufferJSON.cxx:2166
 TBufferJSON.cxx:2167
 TBufferJSON.cxx:2168
 TBufferJSON.cxx:2169
 TBufferJSON.cxx:2170
 TBufferJSON.cxx:2171
 TBufferJSON.cxx:2172
 TBufferJSON.cxx:2173
 TBufferJSON.cxx:2174
 TBufferJSON.cxx:2175
 TBufferJSON.cxx:2176
 TBufferJSON.cxx:2177
 TBufferJSON.cxx:2178
 TBufferJSON.cxx:2179
 TBufferJSON.cxx:2180
 TBufferJSON.cxx:2181
 TBufferJSON.cxx:2182
 TBufferJSON.cxx:2183
 TBufferJSON.cxx:2184
 TBufferJSON.cxx:2185
 TBufferJSON.cxx:2186
 TBufferJSON.cxx:2187
 TBufferJSON.cxx:2188
 TBufferJSON.cxx:2189
 TBufferJSON.cxx:2190
 TBufferJSON.cxx:2191
 TBufferJSON.cxx:2192
 TBufferJSON.cxx:2193
 TBufferJSON.cxx:2194
 TBufferJSON.cxx:2195
 TBufferJSON.cxx:2196
 TBufferJSON.cxx:2197
 TBufferJSON.cxx:2198
 TBufferJSON.cxx:2199
 TBufferJSON.cxx:2200
 TBufferJSON.cxx:2201
 TBufferJSON.cxx:2202
 TBufferJSON.cxx:2203
 TBufferJSON.cxx:2204
 TBufferJSON.cxx:2205
 TBufferJSON.cxx:2206
 TBufferJSON.cxx:2207
 TBufferJSON.cxx:2208
 TBufferJSON.cxx:2209
 TBufferJSON.cxx:2210
 TBufferJSON.cxx:2211
 TBufferJSON.cxx:2212
 TBufferJSON.cxx:2213
 TBufferJSON.cxx:2214
 TBufferJSON.cxx:2215
 TBufferJSON.cxx:2216
 TBufferJSON.cxx:2217
 TBufferJSON.cxx:2218
 TBufferJSON.cxx:2219
 TBufferJSON.cxx:2220
 TBufferJSON.cxx:2221
 TBufferJSON.cxx:2222
 TBufferJSON.cxx:2223
 TBufferJSON.cxx:2224
 TBufferJSON.cxx:2225
 TBufferJSON.cxx:2226
 TBufferJSON.cxx:2227
 TBufferJSON.cxx:2228
 TBufferJSON.cxx:2229
 TBufferJSON.cxx:2230
 TBufferJSON.cxx:2231
 TBufferJSON.cxx:2232
 TBufferJSON.cxx:2233
 TBufferJSON.cxx:2234
 TBufferJSON.cxx:2235
 TBufferJSON.cxx:2236
 TBufferJSON.cxx:2237
 TBufferJSON.cxx:2238
 TBufferJSON.cxx:2239
 TBufferJSON.cxx:2240
 TBufferJSON.cxx:2241
 TBufferJSON.cxx:2242
 TBufferJSON.cxx:2243
 TBufferJSON.cxx:2244
 TBufferJSON.cxx:2245
 TBufferJSON.cxx:2246
 TBufferJSON.cxx:2247
 TBufferJSON.cxx:2248
 TBufferJSON.cxx:2249
 TBufferJSON.cxx:2250
 TBufferJSON.cxx:2251
 TBufferJSON.cxx:2252
 TBufferJSON.cxx:2253
 TBufferJSON.cxx:2254
 TBufferJSON.cxx:2255
 TBufferJSON.cxx:2256
 TBufferJSON.cxx:2257
 TBufferJSON.cxx:2258
 TBufferJSON.cxx:2259
 TBufferJSON.cxx:2260
 TBufferJSON.cxx:2261
 TBufferJSON.cxx:2262
 TBufferJSON.cxx:2263
 TBufferJSON.cxx:2264
 TBufferJSON.cxx:2265
 TBufferJSON.cxx:2266
 TBufferJSON.cxx:2267
 TBufferJSON.cxx:2268
 TBufferJSON.cxx:2269
 TBufferJSON.cxx:2270
 TBufferJSON.cxx:2271
 TBufferJSON.cxx:2272
 TBufferJSON.cxx:2273
 TBufferJSON.cxx:2274
 TBufferJSON.cxx:2275
 TBufferJSON.cxx:2276
 TBufferJSON.cxx:2277
 TBufferJSON.cxx:2278
 TBufferJSON.cxx:2279
 TBufferJSON.cxx:2280
 TBufferJSON.cxx:2281
 TBufferJSON.cxx:2282
 TBufferJSON.cxx:2283
 TBufferJSON.cxx:2284
 TBufferJSON.cxx:2285
 TBufferJSON.cxx:2286
 TBufferJSON.cxx:2287
 TBufferJSON.cxx:2288
 TBufferJSON.cxx:2289
 TBufferJSON.cxx:2290
 TBufferJSON.cxx:2291
 TBufferJSON.cxx:2292
 TBufferJSON.cxx:2293
 TBufferJSON.cxx:2294
 TBufferJSON.cxx:2295
 TBufferJSON.cxx:2296
 TBufferJSON.cxx:2297
 TBufferJSON.cxx:2298
 TBufferJSON.cxx:2299
 TBufferJSON.cxx:2300
 TBufferJSON.cxx:2301
 TBufferJSON.cxx:2302
 TBufferJSON.cxx:2303
 TBufferJSON.cxx:2304
 TBufferJSON.cxx:2305
 TBufferJSON.cxx:2306
 TBufferJSON.cxx:2307
 TBufferJSON.cxx:2308
 TBufferJSON.cxx:2309
 TBufferJSON.cxx:2310
 TBufferJSON.cxx:2311
 TBufferJSON.cxx:2312
 TBufferJSON.cxx:2313
 TBufferJSON.cxx:2314
 TBufferJSON.cxx:2315
 TBufferJSON.cxx:2316
 TBufferJSON.cxx:2317
 TBufferJSON.cxx:2318
 TBufferJSON.cxx:2319
 TBufferJSON.cxx:2320
 TBufferJSON.cxx:2321
 TBufferJSON.cxx:2322
 TBufferJSON.cxx:2323
 TBufferJSON.cxx:2324
 TBufferJSON.cxx:2325
 TBufferJSON.cxx:2326
 TBufferJSON.cxx:2327
 TBufferJSON.cxx:2328
 TBufferJSON.cxx:2329
 TBufferJSON.cxx:2330
 TBufferJSON.cxx:2331
 TBufferJSON.cxx:2332
 TBufferJSON.cxx:2333
 TBufferJSON.cxx:2334
 TBufferJSON.cxx:2335
 TBufferJSON.cxx:2336
 TBufferJSON.cxx:2337
 TBufferJSON.cxx:2338
 TBufferJSON.cxx:2339
 TBufferJSON.cxx:2340
 TBufferJSON.cxx:2341
 TBufferJSON.cxx:2342
 TBufferJSON.cxx:2343
 TBufferJSON.cxx:2344
 TBufferJSON.cxx:2345
 TBufferJSON.cxx:2346
 TBufferJSON.cxx:2347
 TBufferJSON.cxx:2348
 TBufferJSON.cxx:2349
 TBufferJSON.cxx:2350
 TBufferJSON.cxx:2351
 TBufferJSON.cxx:2352
 TBufferJSON.cxx:2353
 TBufferJSON.cxx:2354
 TBufferJSON.cxx:2355
 TBufferJSON.cxx:2356
 TBufferJSON.cxx:2357
 TBufferJSON.cxx:2358
 TBufferJSON.cxx:2359
 TBufferJSON.cxx:2360
 TBufferJSON.cxx:2361
 TBufferJSON.cxx:2362
 TBufferJSON.cxx:2363
 TBufferJSON.cxx:2364
 TBufferJSON.cxx:2365
 TBufferJSON.cxx:2366
 TBufferJSON.cxx:2367
 TBufferJSON.cxx:2368
 TBufferJSON.cxx:2369
 TBufferJSON.cxx:2370
 TBufferJSON.cxx:2371
 TBufferJSON.cxx:2372
 TBufferJSON.cxx:2373
 TBufferJSON.cxx:2374
 TBufferJSON.cxx:2375
 TBufferJSON.cxx:2376
 TBufferJSON.cxx:2377
 TBufferJSON.cxx:2378
 TBufferJSON.cxx:2379
 TBufferJSON.cxx:2380
 TBufferJSON.cxx:2381
 TBufferJSON.cxx:2382
 TBufferJSON.cxx:2383
 TBufferJSON.cxx:2384
 TBufferJSON.cxx:2385
 TBufferJSON.cxx:2386
 TBufferJSON.cxx:2387
 TBufferJSON.cxx:2388
 TBufferJSON.cxx:2389
 TBufferJSON.cxx:2390
 TBufferJSON.cxx:2391
 TBufferJSON.cxx:2392
 TBufferJSON.cxx:2393
 TBufferJSON.cxx:2394
 TBufferJSON.cxx:2395
 TBufferJSON.cxx:2396
 TBufferJSON.cxx:2397
 TBufferJSON.cxx:2398
 TBufferJSON.cxx:2399
 TBufferJSON.cxx:2400
 TBufferJSON.cxx:2401
 TBufferJSON.cxx:2402
 TBufferJSON.cxx:2403
 TBufferJSON.cxx:2404
 TBufferJSON.cxx:2405
 TBufferJSON.cxx:2406
 TBufferJSON.cxx:2407
 TBufferJSON.cxx:2408
 TBufferJSON.cxx:2409
 TBufferJSON.cxx:2410
 TBufferJSON.cxx:2411
 TBufferJSON.cxx:2412
 TBufferJSON.cxx:2413
 TBufferJSON.cxx:2414
 TBufferJSON.cxx:2415
 TBufferJSON.cxx:2416
 TBufferJSON.cxx:2417
 TBufferJSON.cxx:2418
 TBufferJSON.cxx:2419
 TBufferJSON.cxx:2420
 TBufferJSON.cxx:2421
 TBufferJSON.cxx:2422
 TBufferJSON.cxx:2423
 TBufferJSON.cxx:2424
 TBufferJSON.cxx:2425
 TBufferJSON.cxx:2426
 TBufferJSON.cxx:2427
 TBufferJSON.cxx:2428
 TBufferJSON.cxx:2429
 TBufferJSON.cxx:2430
 TBufferJSON.cxx:2431
 TBufferJSON.cxx:2432
 TBufferJSON.cxx:2433
 TBufferJSON.cxx:2434
 TBufferJSON.cxx:2435
 TBufferJSON.cxx:2436
 TBufferJSON.cxx:2437
 TBufferJSON.cxx:2438
 TBufferJSON.cxx:2439
 TBufferJSON.cxx:2440
 TBufferJSON.cxx:2441
 TBufferJSON.cxx:2442
 TBufferJSON.cxx:2443
 TBufferJSON.cxx:2444
 TBufferJSON.cxx:2445
 TBufferJSON.cxx:2446
 TBufferJSON.cxx:2447
 TBufferJSON.cxx:2448
 TBufferJSON.cxx:2449
 TBufferJSON.cxx:2450
 TBufferJSON.cxx:2451
 TBufferJSON.cxx:2452
 TBufferJSON.cxx:2453
 TBufferJSON.cxx:2454
 TBufferJSON.cxx:2455
 TBufferJSON.cxx:2456
 TBufferJSON.cxx:2457
 TBufferJSON.cxx:2458
 TBufferJSON.cxx:2459
 TBufferJSON.cxx:2460
 TBufferJSON.cxx:2461
 TBufferJSON.cxx:2462
 TBufferJSON.cxx:2463
 TBufferJSON.cxx:2464
 TBufferJSON.cxx:2465
 TBufferJSON.cxx:2466
 TBufferJSON.cxx:2467
 TBufferJSON.cxx:2468
 TBufferJSON.cxx:2469
 TBufferJSON.cxx:2470
 TBufferJSON.cxx:2471
 TBufferJSON.cxx:2472
 TBufferJSON.cxx:2473
 TBufferJSON.cxx:2474
 TBufferJSON.cxx:2475
 TBufferJSON.cxx:2476
 TBufferJSON.cxx:2477
 TBufferJSON.cxx:2478
 TBufferJSON.cxx:2479
 TBufferJSON.cxx:2480
 TBufferJSON.cxx:2481
 TBufferJSON.cxx:2482
 TBufferJSON.cxx:2483
 TBufferJSON.cxx:2484
 TBufferJSON.cxx:2485
 TBufferJSON.cxx:2486
 TBufferJSON.cxx:2487
 TBufferJSON.cxx:2488
 TBufferJSON.cxx:2489
 TBufferJSON.cxx:2490
 TBufferJSON.cxx:2491
 TBufferJSON.cxx:2492
 TBufferJSON.cxx:2493
 TBufferJSON.cxx:2494
 TBufferJSON.cxx:2495
 TBufferJSON.cxx:2496
 TBufferJSON.cxx:2497
 TBufferJSON.cxx:2498
 TBufferJSON.cxx:2499
 TBufferJSON.cxx:2500
 TBufferJSON.cxx:2501
 TBufferJSON.cxx:2502
 TBufferJSON.cxx:2503
 TBufferJSON.cxx:2504
 TBufferJSON.cxx:2505
 TBufferJSON.cxx:2506
 TBufferJSON.cxx:2507
 TBufferJSON.cxx:2508
 TBufferJSON.cxx:2509
 TBufferJSON.cxx:2510
 TBufferJSON.cxx:2511
 TBufferJSON.cxx:2512
 TBufferJSON.cxx:2513
 TBufferJSON.cxx:2514
 TBufferJSON.cxx:2515
 TBufferJSON.cxx:2516
 TBufferJSON.cxx:2517
 TBufferJSON.cxx:2518
 TBufferJSON.cxx:2519
 TBufferJSON.cxx:2520
 TBufferJSON.cxx:2521
 TBufferJSON.cxx:2522
 TBufferJSON.cxx:2523
 TBufferJSON.cxx:2524
 TBufferJSON.cxx:2525
 TBufferJSON.cxx:2526
 TBufferJSON.cxx:2527
 TBufferJSON.cxx:2528
 TBufferJSON.cxx:2529
 TBufferJSON.cxx:2530
 TBufferJSON.cxx:2531
 TBufferJSON.cxx:2532
 TBufferJSON.cxx:2533
 TBufferJSON.cxx:2534
 TBufferJSON.cxx:2535
 TBufferJSON.cxx:2536
 TBufferJSON.cxx:2537
 TBufferJSON.cxx:2538
 TBufferJSON.cxx:2539
 TBufferJSON.cxx:2540
 TBufferJSON.cxx:2541
 TBufferJSON.cxx:2542
 TBufferJSON.cxx:2543
 TBufferJSON.cxx:2544
 TBufferJSON.cxx:2545
 TBufferJSON.cxx:2546
 TBufferJSON.cxx:2547
 TBufferJSON.cxx:2548
 TBufferJSON.cxx:2549
 TBufferJSON.cxx:2550
 TBufferJSON.cxx:2551
 TBufferJSON.cxx:2552
 TBufferJSON.cxx:2553
 TBufferJSON.cxx:2554
 TBufferJSON.cxx:2555
 TBufferJSON.cxx:2556
 TBufferJSON.cxx:2557
 TBufferJSON.cxx:2558
 TBufferJSON.cxx:2559
 TBufferJSON.cxx:2560
 TBufferJSON.cxx:2561
 TBufferJSON.cxx:2562
 TBufferJSON.cxx:2563
 TBufferJSON.cxx:2564
 TBufferJSON.cxx:2565
 TBufferJSON.cxx:2566
 TBufferJSON.cxx:2567
 TBufferJSON.cxx:2568
 TBufferJSON.cxx:2569
 TBufferJSON.cxx:2570
 TBufferJSON.cxx:2571
 TBufferJSON.cxx:2572
 TBufferJSON.cxx:2573
 TBufferJSON.cxx:2574
 TBufferJSON.cxx:2575
 TBufferJSON.cxx:2576
 TBufferJSON.cxx:2577
 TBufferJSON.cxx:2578
 TBufferJSON.cxx:2579
 TBufferJSON.cxx:2580
 TBufferJSON.cxx:2581
 TBufferJSON.cxx:2582
 TBufferJSON.cxx:2583
 TBufferJSON.cxx:2584
 TBufferJSON.cxx:2585
 TBufferJSON.cxx:2586
 TBufferJSON.cxx:2587
 TBufferJSON.cxx:2588
 TBufferJSON.cxx:2589
 TBufferJSON.cxx:2590
 TBufferJSON.cxx:2591
 TBufferJSON.cxx:2592
 TBufferJSON.cxx:2593
 TBufferJSON.cxx:2594
 TBufferJSON.cxx:2595
 TBufferJSON.cxx:2596
 TBufferJSON.cxx:2597
 TBufferJSON.cxx:2598
 TBufferJSON.cxx:2599
 TBufferJSON.cxx:2600
 TBufferJSON.cxx:2601
 TBufferJSON.cxx:2602
 TBufferJSON.cxx:2603
 TBufferJSON.cxx:2604
 TBufferJSON.cxx:2605
 TBufferJSON.cxx:2606
 TBufferJSON.cxx:2607
 TBufferJSON.cxx:2608
 TBufferJSON.cxx:2609
 TBufferJSON.cxx:2610
 TBufferJSON.cxx:2611
 TBufferJSON.cxx:2612
 TBufferJSON.cxx:2613
 TBufferJSON.cxx:2614
 TBufferJSON.cxx:2615
 TBufferJSON.cxx:2616
 TBufferJSON.cxx:2617
 TBufferJSON.cxx:2618
 TBufferJSON.cxx:2619
 TBufferJSON.cxx:2620
 TBufferJSON.cxx:2621
 TBufferJSON.cxx:2622
 TBufferJSON.cxx:2623
 TBufferJSON.cxx:2624
 TBufferJSON.cxx:2625
 TBufferJSON.cxx:2626
 TBufferJSON.cxx:2627
 TBufferJSON.cxx:2628
 TBufferJSON.cxx:2629
 TBufferJSON.cxx:2630
 TBufferJSON.cxx:2631
 TBufferJSON.cxx:2632
 TBufferJSON.cxx:2633
 TBufferJSON.cxx:2634
 TBufferJSON.cxx:2635
 TBufferJSON.cxx:2636
 TBufferJSON.cxx:2637
 TBufferJSON.cxx:2638
 TBufferJSON.cxx:2639
 TBufferJSON.cxx:2640
 TBufferJSON.cxx:2641
 TBufferJSON.cxx:2642
 TBufferJSON.cxx:2643
 TBufferJSON.cxx:2644
 TBufferJSON.cxx:2645
 TBufferJSON.cxx:2646
 TBufferJSON.cxx:2647
 TBufferJSON.cxx:2648
 TBufferJSON.cxx:2649
 TBufferJSON.cxx:2650
 TBufferJSON.cxx:2651
 TBufferJSON.cxx:2652
 TBufferJSON.cxx:2653
 TBufferJSON.cxx:2654
 TBufferJSON.cxx:2655
 TBufferJSON.cxx:2656
 TBufferJSON.cxx:2657
 TBufferJSON.cxx:2658
 TBufferJSON.cxx:2659
 TBufferJSON.cxx:2660
 TBufferJSON.cxx:2661
 TBufferJSON.cxx:2662
 TBufferJSON.cxx:2663
 TBufferJSON.cxx:2664
 TBufferJSON.cxx:2665
 TBufferJSON.cxx:2666
 TBufferJSON.cxx:2667
 TBufferJSON.cxx:2668
 TBufferJSON.cxx:2669
 TBufferJSON.cxx:2670
 TBufferJSON.cxx:2671
 TBufferJSON.cxx:2672
 TBufferJSON.cxx:2673
 TBufferJSON.cxx:2674
 TBufferJSON.cxx:2675
 TBufferJSON.cxx:2676
 TBufferJSON.cxx:2677
 TBufferJSON.cxx:2678
 TBufferJSON.cxx:2679
 TBufferJSON.cxx:2680
 TBufferJSON.cxx:2681
 TBufferJSON.cxx:2682
 TBufferJSON.cxx:2683
 TBufferJSON.cxx:2684
 TBufferJSON.cxx:2685
 TBufferJSON.cxx:2686
 TBufferJSON.cxx:2687
 TBufferJSON.cxx:2688
 TBufferJSON.cxx:2689
 TBufferJSON.cxx:2690
 TBufferJSON.cxx:2691
 TBufferJSON.cxx:2692
 TBufferJSON.cxx:2693
 TBufferJSON.cxx:2694
 TBufferJSON.cxx:2695
 TBufferJSON.cxx:2696
 TBufferJSON.cxx:2697
 TBufferJSON.cxx:2698
 TBufferJSON.cxx:2699
 TBufferJSON.cxx:2700
 TBufferJSON.cxx:2701
 TBufferJSON.cxx:2702
 TBufferJSON.cxx:2703
 TBufferJSON.cxx:2704
 TBufferJSON.cxx:2705
 TBufferJSON.cxx:2706
 TBufferJSON.cxx:2707
 TBufferJSON.cxx:2708
 TBufferJSON.cxx:2709
 TBufferJSON.cxx:2710
 TBufferJSON.cxx:2711
 TBufferJSON.cxx:2712
 TBufferJSON.cxx:2713
 TBufferJSON.cxx:2714
 TBufferJSON.cxx:2715
 TBufferJSON.cxx:2716
 TBufferJSON.cxx:2717
 TBufferJSON.cxx:2718
 TBufferJSON.cxx:2719
 TBufferJSON.cxx:2720
 TBufferJSON.cxx:2721
 TBufferJSON.cxx:2722
 TBufferJSON.cxx:2723
 TBufferJSON.cxx:2724
 TBufferJSON.cxx:2725
 TBufferJSON.cxx:2726
 TBufferJSON.cxx:2727
 TBufferJSON.cxx:2728
 TBufferJSON.cxx:2729
 TBufferJSON.cxx:2730
 TBufferJSON.cxx:2731
 TBufferJSON.cxx:2732
 TBufferJSON.cxx:2733
 TBufferJSON.cxx:2734
 TBufferJSON.cxx:2735
 TBufferJSON.cxx:2736
 TBufferJSON.cxx:2737
 TBufferJSON.cxx:2738
 TBufferJSON.cxx:2739
 TBufferJSON.cxx:2740
 TBufferJSON.cxx:2741
 TBufferJSON.cxx:2742
 TBufferJSON.cxx:2743
 TBufferJSON.cxx:2744
 TBufferJSON.cxx:2745
 TBufferJSON.cxx:2746
 TBufferJSON.cxx:2747
 TBufferJSON.cxx:2748
 TBufferJSON.cxx:2749
 TBufferJSON.cxx:2750
 TBufferJSON.cxx:2751
 TBufferJSON.cxx:2752
 TBufferJSON.cxx:2753
 TBufferJSON.cxx:2754
 TBufferJSON.cxx:2755
 TBufferJSON.cxx:2756
 TBufferJSON.cxx:2757
 TBufferJSON.cxx:2758
 TBufferJSON.cxx:2759
 TBufferJSON.cxx:2760
 TBufferJSON.cxx:2761
 TBufferJSON.cxx:2762
 TBufferJSON.cxx:2763
 TBufferJSON.cxx:2764
 TBufferJSON.cxx:2765
 TBufferJSON.cxx:2766
 TBufferJSON.cxx:2767
 TBufferJSON.cxx:2768
 TBufferJSON.cxx:2769
 TBufferJSON.cxx:2770
 TBufferJSON.cxx:2771
 TBufferJSON.cxx:2772
 TBufferJSON.cxx:2773
 TBufferJSON.cxx:2774
 TBufferJSON.cxx:2775
 TBufferJSON.cxx:2776
 TBufferJSON.cxx:2777
 TBufferJSON.cxx:2778
 TBufferJSON.cxx:2779
 TBufferJSON.cxx:2780
 TBufferJSON.cxx:2781
 TBufferJSON.cxx:2782
 TBufferJSON.cxx:2783
 TBufferJSON.cxx:2784
 TBufferJSON.cxx:2785
 TBufferJSON.cxx:2786
 TBufferJSON.cxx:2787
 TBufferJSON.cxx:2788
 TBufferJSON.cxx:2789
 TBufferJSON.cxx:2790
 TBufferJSON.cxx:2791
 TBufferJSON.cxx:2792
 TBufferJSON.cxx:2793
 TBufferJSON.cxx:2794
 TBufferJSON.cxx:2795
 TBufferJSON.cxx:2796
 TBufferJSON.cxx:2797
 TBufferJSON.cxx:2798
 TBufferJSON.cxx:2799
 TBufferJSON.cxx:2800
 TBufferJSON.cxx:2801
 TBufferJSON.cxx:2802
 TBufferJSON.cxx:2803
 TBufferJSON.cxx:2804
 TBufferJSON.cxx:2805
 TBufferJSON.cxx:2806
 TBufferJSON.cxx:2807
 TBufferJSON.cxx:2808
 TBufferJSON.cxx:2809
 TBufferJSON.cxx:2810
 TBufferJSON.cxx:2811
 TBufferJSON.cxx:2812
 TBufferJSON.cxx:2813
 TBufferJSON.cxx:2814
 TBufferJSON.cxx:2815
 TBufferJSON.cxx:2816
 TBufferJSON.cxx:2817
 TBufferJSON.cxx:2818
 TBufferJSON.cxx:2819
 TBufferJSON.cxx:2820
 TBufferJSON.cxx:2821
 TBufferJSON.cxx:2822
 TBufferJSON.cxx:2823
 TBufferJSON.cxx:2824
 TBufferJSON.cxx:2825
 TBufferJSON.cxx:2826
 TBufferJSON.cxx:2827
 TBufferJSON.cxx:2828
 TBufferJSON.cxx:2829
 TBufferJSON.cxx:2830
 TBufferJSON.cxx:2831
 TBufferJSON.cxx:2832
 TBufferJSON.cxx:2833
 TBufferJSON.cxx:2834
 TBufferJSON.cxx:2835
 TBufferJSON.cxx:2836
 TBufferJSON.cxx:2837
 TBufferJSON.cxx:2838
 TBufferJSON.cxx:2839
 TBufferJSON.cxx:2840
 TBufferJSON.cxx:2841
 TBufferJSON.cxx:2842
 TBufferJSON.cxx:2843
 TBufferJSON.cxx:2844
 TBufferJSON.cxx:2845
 TBufferJSON.cxx:2846
 TBufferJSON.cxx:2847
 TBufferJSON.cxx:2848
 TBufferJSON.cxx:2849
 TBufferJSON.cxx:2850
 TBufferJSON.cxx:2851
 TBufferJSON.cxx:2852
 TBufferJSON.cxx:2853
 TBufferJSON.cxx:2854
 TBufferJSON.cxx:2855
 TBufferJSON.cxx:2856
 TBufferJSON.cxx:2857
 TBufferJSON.cxx:2858
 TBufferJSON.cxx:2859
 TBufferJSON.cxx:2860
 TBufferJSON.cxx:2861
 TBufferJSON.cxx:2862
 TBufferJSON.cxx:2863
 TBufferJSON.cxx:2864
 TBufferJSON.cxx:2865
 TBufferJSON.cxx:2866
 TBufferJSON.cxx:2867
 TBufferJSON.cxx:2868
 TBufferJSON.cxx:2869
 TBufferJSON.cxx:2870
 TBufferJSON.cxx:2871
 TBufferJSON.cxx:2872
 TBufferJSON.cxx:2873
 TBufferJSON.cxx:2874
 TBufferJSON.cxx:2875
 TBufferJSON.cxx:2876
 TBufferJSON.cxx:2877
 TBufferJSON.cxx:2878
 TBufferJSON.cxx:2879
 TBufferJSON.cxx:2880
 TBufferJSON.cxx:2881
 TBufferJSON.cxx:2882
 TBufferJSON.cxx:2883
 TBufferJSON.cxx:2884
 TBufferJSON.cxx:2885
 TBufferJSON.cxx:2886
 TBufferJSON.cxx:2887
 TBufferJSON.cxx:2888
 TBufferJSON.cxx:2889
 TBufferJSON.cxx:2890
 TBufferJSON.cxx:2891
 TBufferJSON.cxx:2892
 TBufferJSON.cxx:2893
 TBufferJSON.cxx:2894
 TBufferJSON.cxx:2895
 TBufferJSON.cxx:2896