From 44a7b478dfd014d3c4da8717898187a204708baf Mon Sep 17 00:00:00 2001 From: moneta Date: Wed, 30 May 2018 11:11:21 +0200 Subject: [PATCH 001/344] Fix the protected function Th1::IsEmpty used in TH1Merger for the case when both fTSumw=0 and fEntries=0, but in reality the bin contents are not zero. Add in this case a check to all bin contents, including underflow/overflows Fix also TH1::GetStats() for the case of labels histograms. In this case when you have fTSumw=0 and fEntries !=0 (for example after calling SetBinContent) you want to compute the correct fTsumw and fTsumw2 values --- hist/hist/inc/TH1.h | 2 +- hist/hist/src/TH1.cxx | 43 ++++++++++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/hist/hist/inc/TH1.h b/hist/hist/inc/TH1.h index 68bdc6d33c658..8acf0c3663f30 100644 --- a/hist/hist/inc/TH1.h +++ b/hist/hist/inc/TH1.h @@ -135,7 +135,7 @@ class TH1 : public TNamed, public TAttLine, public TAttFill, public TAttMarker { virtual void SavePrimitiveHelp(std::ostream &out, const char *hname, Option_t *option = ""); static Bool_t RecomputeAxisLimits(TAxis& destAxis, const TAxis& anAxis); static Bool_t SameLimitsAndNBins(const TAxis& axis1, const TAxis& axis2); - Bool_t IsEmpty() const { return fTsumw == 0 && GetEntries() == 0; } //need to use GetEntries() in case of buffer histograms + Bool_t IsEmpty() const; inline static Double_t AutoP2GetPower2(Double_t x, Bool_t next = kTRUE); inline static Int_t AutoP2GetBins(Int_t n); diff --git a/hist/hist/src/TH1.cxx b/hist/hist/src/TH1.cxx index aa2477b4d77aa..2d15e07d6abb8 100644 --- a/hist/hist/src/TH1.cxx +++ b/hist/hist/src/TH1.cxx @@ -1646,8 +1646,7 @@ bool TH1::CheckConsistency(const TH1* h1, const TH1* h2) if (dim > 2) ret &= CheckBinLimits(h1->GetZaxis(), h2->GetZaxis()); // check labels if histograms are both not empty - if ( (h1->fTsumw != 0 || h1->GetEntries() != 0) && - (h2->fTsumw != 0 || h2->GetEntries() != 0) ) { + if ( !h1->IsEmpty() && !h2->IsEmpty() ) { ret &= CheckBinLabels(h1->GetXaxis(), h2->GetXaxis()); if (dim > 1) ret &= CheckBinLabels(h1->GetYaxis(), h2->GetYaxis()); if (dim > 2) ret &= CheckBinLabels(h1->GetZaxis(), h2->GetZaxis()); @@ -4889,6 +4888,25 @@ Double_t TH1::Interpolate(Double_t, Double_t, Double_t) return 0; } +/////////////////////////////////////////////////////////////////////////////// +/// Check if an histogram is empty +/// (this a protected method used mainly by TH1Merger ) + +Bool_t TH1::IsEmpty() const +{ + // if fTsumw or fentries are not zero histogram is not empty + // need to use GetEntries() instead of fEntries in case of bugger histograms + // so we will flash the buffer + if (fTsumw != 0) return kFALSE; + if (GetEntries() != 0) return kFALSE; + // case fTSumw == 0 amd entries are also zero + // this should not really happening, but if one sets content by hand + // it can happen. a call to ResetStats() should be done in such cases + double sumw = 0; + for (int i = 0; i< GetNcells(); ++i) sumw += RetrieveBinContent(i); + return (sumw != 0) ? kFALSE : kTRUE; +} + //////////////////////////////////////////////////////////////////////////////// /// Return true if the bin is overflow. @@ -7202,15 +7220,11 @@ void TH1::GetStats(Double_t *stats) const Int_t bin, binx; Double_t w,err; Double_t x; - // case of labels with extension of axis range - // statistics in x does not make any sense - set to zero - if ((const_cast(fXaxis)).GetLabels() && CanExtendAllAxes() ) { - stats[0] = fTsumw; - stats[1] = fTsumw2; - stats[2] = 0; - stats[3] = 0; - } - else if ((fTsumw == 0 && fEntries > 0) || fXaxis.TestBit(TAxis::kAxisRange)) { + // identify the case of labels with extension of axis range + // in this case the statistics in x does not make any sense + Bool_t labelHist = ((const_cast(fXaxis)).GetLabels() && CanExtendAllAxes() ); + // fTsumw == 0 && fEntries > 0 is a special case when uses SetBinContent or calls ResetStats before + if ((fTsumw == 0 && fEntries > 0) || ( fXaxis.TestBit(TAxis::kAxisRange) && !labelHist) ) { for (bin=0;bin<4;bin++) stats[bin] = 0; Int_t firstBinX = fXaxis.GetFirst(); @@ -7228,8 +7242,11 @@ void TH1::GetStats(Double_t *stats) const err = TMath::Abs(GetBinError(binx)); stats[0] += w; stats[1] += err*err; - stats[2] += w*x; - stats[3] += w*x*x; + // statistics in x makes sense only for not labels histograms + if (!labelHist) { + stats[2] += w*x; + stats[3] += w*x*x; + } } // if (stats[0] < 0) { // // in case total is negative do something ?? From bba2615cb340951a143a1c524c784aafb41f7216 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 29 May 2018 12:29:09 +0200 Subject: [PATCH 002/344] [DF][DOC] Small amendments to user guide --- tree/dataframe/src/RDataFrame.cxx | 49 ++++++++++++++++--------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/tree/dataframe/src/RDataFrame.cxx b/tree/dataframe/src/RDataFrame.cxx index e7cd76ddc7ca5..ac20d6bb993e9 100644 --- a/tree/dataframe/src/RDataFrame.cxx +++ b/tree/dataframe/src/RDataFrame.cxx @@ -19,7 +19,7 @@ /** * \class ROOT::RDataFrame * \ingroup dataframe -* \brief ROOT's RDataFrame offers a high level interface for analyses of data stored in `TTree`s. +* \brief ROOT's RDataFrame offers a high level interface for analyses of data stored in `TTree`s, CSV's and other data formats. In addition, multi-threading and other low-level optimisations allow users to exploit all the resources available on their machines completely transparently.
@@ -28,28 +28,32 @@ Skip to the [class reference](#reference) or keep reading for the user guide. In a nutshell: ~~~{.cpp} ROOT::EnableImplicitMT(); // Tell ROOT you want to go parallel -ROOT::RDataFrame d("myTree", "file.root"); // Interface to TTree and TChain +ROOT::RDataFrame d("myTree", "file_*.root"); // Interface to TTree and TChain auto myHisto = d.Histo1D("Branch_A"); // This happens in parallel! myHisto->Draw(); ~~~ Calculations are expressed in terms of a type-safe *functional chain of actions and transformations*, `RDataFrame` takes care of their execution. The implementation automatically puts in place several low level optimisations such as -multi-thread parallelisation and caching. The namespace containing the RDataFrame is ROOT. +multi-thread parallelisation and caching. \htmlonly DOI \endhtmlonly -## Cheat sheet -These are the operations which can be performed with RDataFrame - -Here is a quick overview of what actions are present and what they do. Each one is described in more detail in the -reference guide. +## Table of Contents +- [Cheat sheet](#cheatsheet) +- [Introduction](#introduction) +- [Crash course](#crash-course) +- [More features](#more-features) +- [Transformations](#transformations) -- manipulating data +- [Actions](#actions) -- getting results +- [Parallel execution](#parallel-execution) -- how to use it and common pitfalls +- [Class reference](#reference) -- most methods are implemented in the RInterface base class -In the following, whenever we say an action "returns" something, we always mean it returns a smart pointer to it. Also -note that all actions are only executed for events that pass all preceding filters. +## Cheat sheet +These are the operations which can be performed with RDataFrame ### Transformations Transformations are a way to manipulated the data. @@ -63,9 +67,16 @@ Transformations are a way to manipulated the data. | [Range](classROOT_1_1RDF_1_1RInterface.html#a1b36b7868831de2375e061bb06cfc225) | Creates a node that filters entries based on range of entries | ### Actions -Actions are a way to get a result out of the data. +Actions are a way to produce a result out of the data. Each one is described in more detail in the reference guide. + +In the following, whenever we say an action "returns" something, we always mean it returns a smart pointer to it. Also +note that all actions are only executed for events that pass all preceding filters. + +Lazy actions only trigger the event loop when one of the results is accessed for the first time, making it easy to +produce several different results in one event loop. Instant actions trigger the event loop instantly. + -| **Lazy actions** | **Description** | +| **Lazy action** | **Description** | |------------------|-----------------| | [Aggregate](classROOT_1_1RDF_1_1RInterface.html#ae540b00addc441f9b504cbae0ef0a24d) | Execute a user-defined accumulation operation on the processed column values. | | [Book](classROOT_1_1RDF_1_1RInterface.html#a9b2f61f3333d1669e57055b9ae8be9d9) | Book execution of a custom action using a user-defined helper object. | @@ -82,7 +93,7 @@ Actions are a way to get a result out of the data. | [Sum](classROOT_1_1RDF_1_1RInterface.html#a61d03407459120df6749af43ed506891) | Return the sum of the values in the column. If the type of the column is inferred, the return type is `double`, the type of the column otherwise. | | [Take](classROOT_1_1RDF_1_1RInterface.html#a4fd694773a2931b6b07737ddcd1e73b4) | Extract a column from the dataset as a collection of values. If the type of the column is a C-style array, the type stored in the return container is a `ROOT::VecOps::RVec` to guarantee the lifetime of the data involved. | -| **Instant actions** | **Description** | +| **Instant action** | **Description** | |---------------------|-----------------| | [Foreach](classROOT_1_1RDF_1_1RInterface.html#ad2822a7ccb8a9afdf3e5b2ea321886ca) | Execute a user-defined function on each entry. Users are responsible for the thread-safety of this lambda when executing with implicit multi-threading enabled. | | [ForeachSlot](classROOT_1_1RDF_1_1RInterface.html#a3650ca30aae1ccd0d92bf3d680314129) | Same as `Foreach`, but the user-defined function must take an extra `unsigned int slot` as its first parameter. `slot` will take a different value, `0` to `nThreads - 1`, for each thread of execution. This is meant as a helper in writing thread-safe `Foreach` actions when using `RDataFrame` after `ROOT::EnableImplicitMT()`. `ForeachSlot` works just as well with single-thread execution: in that case `slot` will always be `0`. | @@ -91,22 +102,12 @@ Actions are a way to get a result out of the data. ### Other Operations -| **Operations** | **Description** | +| **Operation** | **Description** | |---------------------|-----------------| | [Alias](classROOT_1_1RDF_1_1RInterface.html#a31ca327e4a192dcc05a4aac240e1a725) | Introduce an alias for a particular column name | | [GetColumnNames](classROOT_1_1RDF_1_1RInterface.html#a951fe60b74d3a9fda37df59fd1dac186) | Get all the available columns of the dataset | - -## Table of Contents -- [Introduction](#introduction) -- [Crash course](#crash-course) -- [More features](#more-features) -- [Transformations](#transformations) -- manipulating data -- [Actions](#actions) -- getting results -- [Parallel execution](#parallel-execution) -- how to use it and common pitfalls -- [Class reference](#reference) -- most methods are implemented in the RInterface base class - ## Introduction Users define their analysis as a sequence of operations to be performed on the data-frame object; the framework takes care of the management of the loop over entries as well as low-level details such as I/O and parallelisation. From e538ae588deba5f773d9a3ff781a55739f83fcd2 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 13:18:57 +0200 Subject: [PATCH 003/344] [MT] Let TThreadExecutor::Foreach accept const vectors --- core/imt/inc/ROOT/TThreadExecutor.hxx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/imt/inc/ROOT/TThreadExecutor.hxx b/core/imt/inc/ROOT/TThreadExecutor.hxx index 3358047c7d197..1b0a5f6c6099e 100644 --- a/core/imt/inc/ROOT/TThreadExecutor.hxx +++ b/core/imt/inc/ROOT/TThreadExecutor.hxx @@ -51,6 +51,8 @@ namespace ROOT { /// \endcond template void Foreach(F func, std::vector &args); + template + void Foreach(F func, const std::vector &args); using TExecutor::Map; template> @@ -143,6 +145,14 @@ namespace ROOT { ParallelFor(0U, nToProcess, 1, [&](unsigned int i){func(args[i]);}); } + ////////////////////////////////////////////////////////////////////////// + /// Execute func in parallel, taking an element of a std::vector as argument. + template + void TThreadExecutor::Foreach(F func, const std::vector &args) { + unsigned int nToProcess = args.size(); + ParallelFor(0U, nToProcess, 1, [&](unsigned int i){func(args[i]);}); + } + ////////////////////////////////////////////////////////////////////////// /// Execute func (with no arguments) nTimes in parallel. /// A vector containg executions' results is returned. From 38de2b33b078d65f46c3184dee2eed266d41e035 Mon Sep 17 00:00:00 2001 From: moneta Date: Thu, 31 May 2018 14:13:04 +0200 Subject: [PATCH 004/344] Add a new test in stressHistogram for bug-9336 ( testMerge1DLabelSameStatsBug() ). The test merging histogram with labels, which have been filled using SetBinContent() and ResetStats to compute the entry, fails in older ROOT versions --- test/stressHistogram.cxx | 63 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/test/stressHistogram.cxx b/test/stressHistogram.cxx index cd0917b38f8e5..9c394ad4a4b1d 100644 --- a/test/stressHistogram.cxx +++ b/test/stressHistogram.cxx @@ -3678,6 +3678,7 @@ bool testMerge1DLabelSame() h4->Fill(labels[i], 1.0); } + TList *list = new TList; list->Add(h2); list->Add(h3); @@ -3694,6 +3695,65 @@ bool testMerge1DLabelSame() return ret; } +bool testMerge1DLabelSameStatsBug() +{ + // Tests the merge with some equal labels method for 1D Histograms + // number of labels used = number of bins + // This test uses SetBinCOntent instead of Fill and ResetStats after to + // test th ebug in TH1::Merge reported in ROOT-9336 + + // since we do not set bin errors + // make sure we have not stored Sumw2 otherwise all bin errors + // will be zero. This needs to be done before constructing the histograms + bool globalSumw2 = TH1::GetDefaultSumw2(); + if (globalSumw2) TH1::SetDefaultSumw2(false); + + + TH1D* h1 = new TH1D("h1", "h1-Title", numberOfBins, minRange, maxRange); + TH1D* h2 = new TH1D("h2", "h2-Title", numberOfBins, minRange, maxRange); + TH1D* h3 = new TH1D("h3", "h3-Title", numberOfBins, minRange, maxRange); + TH1D* h4 = new TH1D("h4", "h4-Title", numberOfBins, minRange, maxRange); + + const char labels[10][5] = {"aaa","bbb","ccc","ddd","eee","fff","ggg","hhh","iii","lll"}; + + for (Int_t i = 0; i < numberOfBins; ++i) { + h1->GetXaxis()->SetBinLabel(i+1, labels[i]); + h2->GetXaxis()->SetBinLabel(i+1, labels[i]); + h3->GetXaxis()->SetBinLabel(i+1, labels[i]); + h4->GetXaxis()->SetBinLabel(i+1, labels[i]); + double val1 = r.Uniform(0,10); + double val2 = r.Uniform(0,10); + h2->SetBinContent(i, val1); + h3->SetBinContent(i, val2); + h4->SetBinContent(i, val1+val2); + } + + + TList *list = new TList; + list->Add(h2); + list->Add(h3); + + h1->SetCanExtend(TH1::kAllAxes); + + // reset the stats to get correct entries + // the reset was causing the histogram to be flagged as empty + // see bug ROOT-9336 + h2->ResetStats(); + h3->ResetStats(); + h4->ResetStats(); + + h1->Merge(list); + + bool ret = equals("MergeLabelSame1DStatsBug", h1, h4, cmpOptStats, 1E-10); + if (cleanHistos) delete h1; + if (cleanHistos) delete h2; + if (cleanHistos) delete h3; + + if (globalSumw2) TH1::SetDefaultSumw2(true); + + return ret; +} + bool testMerge2DLabelSame() { // Tests the merge with some equal labels method for 2D Histograms @@ -10061,7 +10121,8 @@ int stressHistogram() testMerge3DLabelAll, testMergeProf3DLabelAll, testMerge1DLabelAllDiff, testMergeProf1DLabelAllDiff, testMerge2DLabelAllDiff, testMergeProf2DLabelAllDiff, - testMerge3DLabelAllDiff, testMergeProf3DLabelAllDiff + testMerge3DLabelAllDiff, testMergeProf3DLabelAllDiff, + testMerge1DLabelSameStatsBug }; std::vector mergeDiffTestPointer = { testMerge1DDiff, testMergeProf1DDiff, testMerge2DDiff, testMergeProf2DDiff, From b9a212ac5a9ee6da33b41446d2da50b66b320985 Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Wed, 23 May 2018 15:31:07 +0200 Subject: [PATCH 005/344] Removing obsolete code from TFile(compression algorithm and level of StreamerInfo should the same as in TFile) --- io/io/src/TFile.cxx | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 4f86182b869dc..408a1ce88d030 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -3709,11 +3709,7 @@ void TFile::WriteStreamerInfo() // Only add the list of rules if we have something to say. list.Add(&listOfRules); } - - // always write with compression on - Int_t compress = fCompress; - fCompress = 1; - + //free previous StreamerInfo record if (fSeekInfo) MakeFree(fSeekInfo,fSeekInfo+fNbytesInfo-1); //Create new key @@ -3723,10 +3719,7 @@ void TFile::WriteStreamerInfo() fNbytesInfo = key.GetNbytes(); SumBuffer(key.GetObjlen()); key.WriteFile(0); - fClassIndex->fArray[0] = 0; - fCompress = compress; - list.RemoveLast(); // remove the listOfRules. } From 430e56b36c3512aa9b314bd5a3bee9468fcd660c Mon Sep 17 00:00:00 2001 From: Oksana Shadura Date: Wed, 30 May 2018 16:52:14 +0200 Subject: [PATCH 006/344] Modifing tolerance values for test files for SMatrix write unit tests --- math/mathcore/test/stress/testSMatrix.cxx | 2 +- test/stressMathCore.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/math/mathcore/test/stress/testSMatrix.cxx b/math/mathcore/test/stress/testSMatrix.cxx index 2f1af1f7b1418..68304fecdaeac 100644 --- a/math/mathcore/test/stress/testSMatrix.cxx +++ b/math/mathcore/test/stress/testSMatrix.cxx @@ -104,7 +104,7 @@ TYPED_TEST_P(SMatrixTest, TestSMatrix) name = name0 + "," + this->GetRepSName() + ">"; typeName = "ROOT::Math::" + name0 + "," + this->GetRepName32() + ">"; - estSize = this->fNGen * 4 * this->fDim + 10000; + estSize = this->fNGen * 4 * this->fDim + 60158; scale = 0.1 / std::numeric_limits::epsilon(); fsize32 = this->fVectorTest.TestWrite(this->v1, typeName); EXPECT_TRUE(IsNear(name + " write", fsize32, estSize, scale)); diff --git a/test/stressMathCore.cxx b/test/stressMathCore.cxx index a4a9e17870246..6bd50920ba270 100644 --- a/test/stressMathCore.cxx +++ b/test/stressMathCore.cxx @@ -1366,7 +1366,7 @@ int testSMatrix(int ngen, bool testio=false) { typeName = "ROOT::Math::"+name0+ "," + Rep::name32() + ">"; - estSize = ngen* 4 * Dim + 10000; + estSize = ngen* 4 * Dim + 60158; scale = 0.1 / std::numeric_limits::epsilon(); fsize32 = a.testWrite(v1,typeName); iret |= a.check(name+" write",fsize32,estSize,scale); ir = a.testRead(v1); iret |= a.check(name+" read",ir,0); From c27a4eaee1ca818ebf4408f275e6ab124390e356 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Thu, 31 May 2018 21:06:56 -0500 Subject: [PATCH 007/344] Update expected size in stress following StreamerInfo record compression update --- test/stress.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stress.cxx b/test/stress.cxx index 9e5d317e7e744..f00ed33633180 100644 --- a/test/stress.cxx +++ b/test/stress.cxx @@ -357,7 +357,7 @@ void stress2() //Long64_t lastgood = 9789; // changes for new TFormula //Long64_t lastgood = 9797; // changes for TH1 v8 ROOT-9173 on 32-bits #ifdef R__HAS_DEFAULT_LZ4 - Long64_t lastgood = 11579; + Long64_t lastgood = 10733; if (last < lastgood - 200 || last > lastgood + 200 || comp < 1.5 || comp > 2.1) OK = kFALSE; #else From 9cbb83d210ab192c3e133862cd8a53ba681bd551 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 1 Jun 2018 10:18:31 +0200 Subject: [PATCH 008/344] Harmonise "auto" as suggested here: https://root-forum.cern.ch/t/harmonise-auto-and-auto-in-the-tutorials/29202 --- tutorials/hist/h2proj.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/hist/h2proj.C b/tutorials/hist/h2proj.C index cb26121b7c05a..dabbacefef333 100644 --- a/tutorials/hist/h2proj.C +++ b/tutorials/hist/h2proj.C @@ -17,7 +17,7 @@ TPad *right_pad, *top_pad; void h2proj() { - auto *c1 = new TCanvas("c1", "c1",900,900); + auto c1 = new TCanvas("c1", "c1",900,900); gStyle->SetOptStat(0); TPad *center_pad = new TPad("center_pad", "center_pad",0.0,0.0,0.6,0.6); @@ -57,7 +57,7 @@ void h2proj() t->DrawLatex(0.6,0.88,"This example demonstrates how to display"); t->DrawLatex(0.6,0.85,"a histogram and its two projections."); - auto *ex = new TExec("zoom","ZoomExec()"); + auto ex = new TExec("zoom","ZoomExec()"); h2->GetListOfFunctions()->Add(ex); } From d654aca04273248d7484167ec4f36560921fc86c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 1 Jun 2018 11:02:59 +0200 Subject: [PATCH 009/344] [DF] Use auto instead of auto* when it's clear type is a pointer --- tutorials/dataframe/df013_InspectAnalysis.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/dataframe/df013_InspectAnalysis.C b/tutorials/dataframe/df013_InspectAnalysis.C index b00e140f3d6c1..019f1031cd7b6 100644 --- a/tutorials/dataframe/df013_InspectAnalysis.C +++ b/tutorials/dataframe/df013_InspectAnalysis.C @@ -49,8 +49,8 @@ void df013_InspectAnalysis() // - another callback is responsible of updating a simple progress bar from multiple threads // First off we create a TBrowser that contains a "RDFResults" directory - auto *tdfDirectory = new TMemFile("RDFResults", "RECREATE"); - auto *browser = new TBrowser("b", tdfDirectory); + auto tdfDirectory = new TMemFile("RDFResults", "RECREATE"); + auto browser = new TBrowser("b", tdfDirectory); // The global pad should now be set to the TBrowser's canvas, let's store its value in a local variable auto browserPad = gPad; From 5b3e3fb43c9233054b2a6e94f7e224ebd248cee3 Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Wed, 30 May 2018 11:15:15 +0200 Subject: [PATCH 010/344] [cxxmodules] Autoload less libraries In previous allmodules&autoloading patch, we used callback from DeserializationListener to get Decl and loaded corresponding libraries. It worked, but the performance was bad because ROOT was loading excessive libraries. In this patch, we use TCling::LazyFunctionCreatorAutoloadForModule. This function gets callback when "mangled_name" was not found in loaded libraries thus we have to the load corresponding library and lookup again. I used unordered_map to store mangled identifier and library pair. I'm doing an optimization by hashing mangled name and storing library not by name but by uint8 and hold uint8-name information in another vector. Also tried std::map but unorderd_map was more performant. There are better hash table like: https://probablydance.com/2018/05/28/a-new-fast-hash-table-in-response-to-googles-new-fast-hash-table/ we can try to use them if this part gets crucial. With this patch: ``` Processing tutorials/hsimple.C... hsimple : Real Time = 0.04 seconds Cpu Time = 0.03 seconds (TFile *) 0x562b37a14fe0 Processing /home/yuka/CERN/ROOT/memory.C... cpu time = 0.362307 seconds sys time = 0.039741 seconds res memory = 278.215 Mbytes vir memory = 448.973 Mbytes ``` W/o this patch: ``` Processing tutorials/hsimple.C... hsimple : Real Time = 0.08 seconds Cpu Time = 0.07 seconds (TFile *) 0x5563018a1d30 Processing /home/yuka/CERN/ROOT/memory.C... cpu time = 1.524314 seconds sys time = 0.157075 seconds res memory = 546.867 Mbytes vir memory = 895.184 Mbytes ``` So it improves time by 4x times and memory by 2x. --- core/clingutils/src/TClingUtils.cxx | 5 - core/metacling/src/TCling.cxx | 129 ++++++++++++++---- core/metacling/src/TClingBaseClassInfo.cxx | 13 +- core/metacling/src/TClingCallbacks.cxx | 24 ---- core/metacling/src/TClingCallbacks.h | 7 - core/metacling/src/TClingClassInfo.cxx | 4 - core/metacling/src/TClingDataMemberInfo.cxx | 3 - core/metacling/src/TClingTypeInfo.cxx | 4 - .../cling/Interpreter/InterpreterCallbacks.h | 7 - .../include/cling/Interpreter/Transaction.h | 17 --- .../cling/lib/Interpreter/DeclCollector.cpp | 13 -- .../cling/lib/Interpreter/DeclCollector.h | 9 +- .../lib/Interpreter/IncrementalParser.cpp | 8 -- .../cling/lib/Interpreter/Interpreter.cpp | 3 - .../cling/lib/Interpreter/LookupHelper.cpp | 2 +- .../MultiplexInterpreterCallbacks.h | 6 - .../include/clang/Serialization/ASTReader.h | 4 - 17 files changed, 104 insertions(+), 154 deletions(-) diff --git a/core/clingutils/src/TClingUtils.cxx b/core/clingutils/src/TClingUtils.cxx index b4043a4f3d5bb..83990b1cc7e7f 100644 --- a/core/clingutils/src/TClingUtils.cxx +++ b/core/clingutils/src/TClingUtils.cxx @@ -3383,11 +3383,6 @@ void ROOT::TMetaUtils::GetFullyQualifiedTypeName(std::string &typenamestr, const clang::QualType &qtype, const cling::Interpreter &interpreter) { - // We need this barrior because GetFullyQualifiedTypeName is triggering deserialization - // This calling the same name function GetFullyQualifiedTypeName, but this should stay here because - // callee doesn't have an interpreter pointer - cling::Interpreter::PushTransactionRAII RAII(const_cast(&interpreter)); - GetFullyQualifiedTypeName(typenamestr, qtype, interpreter.getCI()->getASTContext()); diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 27014324c6183..ba5fafe01d9ff 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -113,6 +113,9 @@ clang/LLVM technology. #include "llvm/Support/raw_ostream.h" #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" +#include "llvm/Object/ObjectFile.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Object/SymbolicFile.h" #include #include @@ -129,6 +132,7 @@ clang/LLVM technology. #include #include #include +#include #ifndef R__WIN32 #include @@ -430,10 +434,6 @@ static void TCling__UpdateClassInfo(const NamedDecl* TD) void TCling::UpdateEnumConstants(TEnum* enumObj, TClass* cl) const { const clang::Decl* D = static_cast(enumObj->GetDeclId()); if(const clang::EnumDecl* ED = dyn_cast(D)) { - - // clang::EnumDecl::enumerator_begin can triggering deserialization - cling::Interpreter::PushTransactionRAII deserRAII(fInterpreter); - // Add the constants to the enum type. for (EnumDecl::enumerator_iterator EDI = ED->enumerator_begin(), EDE = ED->enumerator_end(); EDI != EDE; ++EDI) { @@ -632,27 +632,6 @@ extern "C" int TCling__AutoLoadCallback(const char* className) return ((TCling*)gCling)->AutoLoad(className); } -extern "C" int TCling__AutoLoadLibraryForModules(const char* StemName) -{ - // FIXME: We're excluding some libraries from autoloading. Adding annotations to - // pcms from LinkDef files would fix this workaround. - static constexpr std::array excludelibs = { {"RooStats", - "RooFitCore", "RooFit", "HistFactory"} }; - for (const char* exLibs : excludelibs) - if (strcmp(exLibs, StemName) == 0) - return -1; - - // Add lib prefix - TString LibName("lib" + std::string(StemName)); - // Construct the actual library name from the stem name. - // Eg. FindDynamicLibrary("libCore") returns "/path/to/libCore.so" - const char *Name = gSystem->FindDynamicLibrary(LibName, kTRUE); - - if (!Name || ((TCling*)gCling)->IsLoaded(Name)) return 1; - - return ((TCling*)gCling)->Load(Name); -} - extern "C" int TCling__AutoParseCallback(const char* className) { return ((TCling*)gCling)->AutoParse(className); @@ -1969,10 +1948,7 @@ void TCling::RegisterModule(const char* modulename, } } - // Don't do "PCM" optimization with runtime modules because we are loading libraries - // at decl deserialization time and it triggers infinite deserialization chain. - // In short, this optimization leads to infinite loop. - if (!hasCxxModule && gIgnoredPCMNames.find(modulename) == gIgnoredPCMNames.end()) { + if (gIgnoredPCMNames.find(modulename) == gIgnoredPCMNames.end()) { if (!LoadPCM(pcmFileName, headers, triggerFunc)) { ::Error("TCling::RegisterModule", "cannot find dictionary module %s", ROOT::TMetaUtils::GetModuleFileName(modulename).c_str()); @@ -5891,11 +5867,106 @@ Int_t TCling::AutoParse(const char *cls) return nHheadersParsed > 0 ? 1 : 0; } +static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_name, + cling::Interpreter *fInterpreter) { + using namespace llvm::object; + using namespace llvm::sys::path; + using namespace llvm::sys::fs; + + static constexpr std::hash hash_fn; + // size_t is a hashed mangled_name and libs[(uint8_t)mname_lib_table.second] = library's + // name in string. + static std::unordered_map mname_lib_table; + static std::vector libs; + // Initialize library table at first run + static bool fFirstRun = true; + + R__LOCKGUARD(gInterpreterMutex); + + // Initialize the table + if (fFirstRun) { + clang::Preprocessor &PP = fInterpreter->getCI()->getPreprocessor(); + const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); + auto ModulePaths(HSOpts.PrebuiltModulePaths); + + // sort and eliminate dupicate path + std::sort(ModulePaths.begin(), ModulePaths.end()); + auto last = std::unique(ModulePaths.begin(), ModulePaths.end()); + ModulePaths.erase(last, ModulePaths.end()); + + cling::DynamicLibraryManager* dyLibManager = fInterpreter->getDynamicLibraryManager(); + + int cur_lib = 0; + // Take path here eg. "/home/foo/module-release/lib/" + for (auto Path : ModulePaths) { + StringRef DirPath(Path); + if (DirPath.empty() || !is_directory(DirPath) || Path == ".") + continue; + + // Check this not a random system directory (should contain pcm) + std::error_code EC; + bool is_build = false; + for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; + DirIt != DirEnd && !EC; DirIt.increment(EC)) { + std::string FileName(DirIt->path()); + if (extension(FileName) == ".pcm") { + is_build = true; + break; + } + } + + if (!is_build) + continue; + + // Iterate over files under this path. We want to get each ".so" files + for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; + DirIt != DirEnd && !EC; DirIt.increment(EC)) { + std::string LibName(DirIt->path()); + if (llvm::sys::fs::is_directory(LibName) || extension(LibName) != ".so") + continue; + + // TCling::IsLoaded is incredibly slow! + if (dyLibManager->isLibraryLoaded(LibName.c_str())) + continue; + + libs.push_back(LibName); + auto SoFile = ObjectFile::createObjectFile(LibName); + if (SoFile) { + auto RealSoFile = SoFile.get().getBinary(); + auto Symbols = RealSoFile->symbols(); + for (auto S : Symbols) { + // DO NOT insert to table if symbol was weak or undefined + if (S.getFlags() == SymbolRef::SF_Weak || S.getFlags() == SymbolRef::SF_Undefined) continue; + + // Put into map + mname_lib_table.insert(std::make_pair(hash_fn(S.getName().get()), cur_lib)); + } + } + cur_lib++; + } + } + fFirstRun = false; + } + + auto key = mname_lib_table.find(hash_fn(mangled_name)); + if (key != mname_lib_table.end()) { + std::string LoadedLibName = libs[key->second]; + if (!LoadedLibName.empty() && (gSystem->Load(LoadedLibName.c_str(), "", false) < 0)) + Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", LoadedLibName.c_str()); + } + + void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); + return addr; +} //////////////////////////////////////////////////////////////////////////////// /// Autoload a library based on a missing symbol. void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { +#ifdef R__USE_CXXMODULES + return LazyFunctionCreatorAutoloadForModule(mangled_name, fInterpreter); +#endif + // First see whether the symbol is in the library that we are currently // loading. It will have access to the symbols of its dependent libraries, // thus checking "back()" is sufficient. diff --git a/core/metacling/src/TClingBaseClassInfo.cxx b/core/metacling/src/TClingBaseClassInfo.cxx index 9991a9682e626..1bba75265638c 100644 --- a/core/metacling/src/TClingBaseClassInfo.cxx +++ b/core/metacling/src/TClingBaseClassInfo.cxx @@ -110,8 +110,6 @@ TClingBaseClassInfo::TClingBaseClassInfo(cling::Interpreter* interp, //CRD->isDerivedFrom(BaseCRD, Paths); // Check that base derives from derived. clang::CXXBasePaths Paths; - // isDerivedFrom can trigger deserialization - cling::Interpreter::PushTransactionRAII RAII(fInterp); if (!CRD->isDerivedFrom(BaseCRD, Paths)) { //Not valid fBaseInfo = 0. return; @@ -260,11 +258,6 @@ int TClingBaseClassInfo::InternalNext(int onlyDirect) (fIter == llvm::dyn_cast(fDecl)->bases_end())) { return 0; } - - // getASTRecordLayout() can trigger deserialization, and this should stay here - // instead of inside the while loop - cling::Interpreter::PushTransactionRAII RAII(fInterp); - // Advance to the next valid base. while (1) { // Advance the iterator. @@ -276,6 +269,8 @@ int TClingBaseClassInfo::InternalNext(int onlyDirect) // We previously processed a base class which itself has bases, // now we process the bases of that base class. + // At least getASTRecordLayout() might deserialize. + cling::Interpreter::PushTransactionRAII RAII(fInterp); fDescend = false; const clang::RecordType *Ty = fIter->getType()-> getAs(); @@ -509,10 +504,6 @@ long TClingBaseClassInfo::Property() const clang::CXXBasePaths Paths(/*FindAmbiguities=*/false, /*RecordPaths=*/true, /*DetectVirtual=*/true); - - // isDerivedFrom can trigger deserialization - cling::Interpreter::PushTransactionRAII RAII(fInterp); - if (!CRD->isDerivedFrom(BaseCRD, Paths)) { // Error really unexpected here, because construction / iteration guarantees //inheritance; diff --git a/core/metacling/src/TClingCallbacks.cxx b/core/metacling/src/TClingCallbacks.cxx index 9b18677c242ee..5a034cc5bdcac 100644 --- a/core/metacling/src/TClingCallbacks.cxx +++ b/core/metacling/src/TClingCallbacks.cxx @@ -50,7 +50,6 @@ extern "C" { Decl* TCling__GetObjectDecl(TObject *obj); int TCling__AutoLoadCallback(const char* className); int TCling__AutoParseCallback(const char* className); - void TCling__AutoLoadLibraryForModules(const char* StemName); const char* TCling__GetClassSharedLibs(const char* className); // int TCling__IsAutoLoadNamespaceCandidate(const char* name); int TCling__IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl* name); @@ -750,29 +749,6 @@ void TClingCallbacks::TransactionCommitted(const Transaction &T) { TCling__UpdateListsOnCommitted(T, m_Interpreter); } -// Collect modules and put them into fPendingCxxModules at first run. Interpreter is not yet initialized at first run -// but we need to use interpreter services when loading libraries. -void TClingCallbacks::beforeExecuteTransaction(const Transaction &T) { - - const std::vector &modules = T.getClangModules(); - - if (fFirstRun) { - for (auto M : modules) - fPendingCxxModules.push_back(M); - return; - } - - if (!fPendingCxxModules.empty()) { - for (auto M : fPendingCxxModules) - TCling__AutoLoadLibraryForModules(M->Name.c_str()); - fPendingCxxModules.clear(); - return; - } - - for (auto M : modules) - TCling__AutoLoadLibraryForModules(M->Name.c_str()); -} - // The callback is used to update the list of globals in ROOT. // void TClingCallbacks::TransactionUnloaded(const Transaction &T) { diff --git a/core/metacling/src/TClingCallbacks.h b/core/metacling/src/TClingCallbacks.h index 55caae110e87f..a4524e4fdd29d 100644 --- a/core/metacling/src/TClingCallbacks.h +++ b/core/metacling/src/TClingCallbacks.h @@ -12,7 +12,6 @@ #include "cling/Interpreter/InterpreterCallbacks.h" #include -#include namespace clang { class Decl; @@ -28,7 +27,6 @@ namespace clang { namespace cling { class Interpreter; class Transaction; - class Module; } namespace llvm { @@ -47,9 +45,6 @@ class TClingCallbacks : public cling::InterpreterCallbacks { bool fIsAutoParsingSuspended; bool fPPOldFlag; bool fPPChanged; - // This vector holds a clang cxxmodules where corresponding library should be loaded in Transaction - // afterwards. - std::vector fPendingCxxModules; public: TClingCallbacks(cling::Interpreter* interp); @@ -88,8 +83,6 @@ class TClingCallbacks : public cling::InterpreterCallbacks { // virtual void TransactionCommitted(const cling::Transaction &T); - virtual void beforeExecuteTransaction(const cling::Transaction &T); - // The callback is used to update the list of globals in ROOT. // virtual void TransactionUnloaded(const cling::Transaction &T); diff --git a/core/metacling/src/TClingClassInfo.cxx b/core/metacling/src/TClingClassInfo.cxx index 8d8e3cbac6d22..35845964922e1 100644 --- a/core/metacling/src/TClingClassInfo.cxx +++ b/core/metacling/src/TClingClassInfo.cxx @@ -1267,10 +1267,6 @@ const char *TClingClassInfo::Name() const if (const NamedDecl* ND = llvm::dyn_cast(fDecl)) { PrintingPolicy Policy(fDecl->getASTContext().getPrintingPolicy()); llvm::raw_string_ostream stream(buf); - - // getNameForDiagnostic can trigger deserialization - cling::Interpreter::PushTransactionRAII RAII(fInterp); - ND->getNameForDiagnostic(stream, Policy, /*Qualified=*/false); } return buf.c_str(); diff --git a/core/metacling/src/TClingDataMemberInfo.cxx b/core/metacling/src/TClingDataMemberInfo.cxx index 21c6a82f670b2..9c8fa9980f42f 100644 --- a/core/metacling/src/TClingDataMemberInfo.cxx +++ b/core/metacling/src/TClingDataMemberInfo.cxx @@ -308,9 +308,6 @@ long TClingDataMemberInfo::Offset() const Decl *D = GetDecl(); ASTContext& C = D->getASTContext(); if (const FieldDecl *FldD = dyn_cast(D)) { - // getASTRecordLayout can trigger deserialization - cling::Interpreter::PushTransactionRAII RAII(fInterp); - // The current member is a non-static data member. const clang::RecordDecl *RD = FldD->getParent(); const clang::ASTRecordLayout &Layout = C.getASTRecordLayout(RD); diff --git a/core/metacling/src/TClingTypeInfo.cxx b/core/metacling/src/TClingTypeInfo.cxx index f718dbd54b2e3..10e5cc58465dd 100644 --- a/core/metacling/src/TClingTypeInfo.cxx +++ b/core/metacling/src/TClingTypeInfo.cxx @@ -168,10 +168,6 @@ long TClingTypeInfo::Property() const // Note: Now we have class, struct, union only. const clang::CXXRecordDecl *CRD = llvm::dyn_cast(TD); - - // isAbstract can trigger deserialization - cling::Interpreter::PushTransactionRAII RAII(fInterp); - if (CRD->isClass()) { property |= kIsClass; } diff --git a/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h b/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h index 2103d5a335b88..602bd016d657d 100644 --- a/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h +++ b/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h @@ -132,13 +132,6 @@ namespace cling { /// virtual void TransactionCommitted(const Transaction&) {} - ///\brief This callback is invoked before a transaction is executed. - /// This event happens after a transaction was committed and LLVM IR was produced. - /// - ///\param[in] - The transaction to be executed. - /// - virtual void beforeExecuteTransaction(const Transaction&) {} - ///\brief This callback is invoked whenever interpreter has reverted a /// transaction that has been fully committed. /// diff --git a/interpreter/cling/include/cling/Interpreter/Transaction.h b/interpreter/cling/include/cling/Interpreter/Transaction.h index 680543d021991..454ec7986e6e8 100644 --- a/interpreter/cling/include/cling/Interpreter/Transaction.h +++ b/interpreter/cling/include/cling/Interpreter/Transaction.h @@ -31,7 +31,6 @@ namespace clang { class Preprocessor; struct PrintingPolicy; class Sema; - class Module; } namespace llvm { @@ -116,11 +115,6 @@ namespace cling { typedef llvm::SmallVector DeclQueue; typedef llvm::SmallVector NestedTransactions; - ///\brief The list of cxxmodules, which is collected by DeserializationListener - /// and will be used to load corresponding libraries. - /// - std::vector m_CxxModules; - ///\brief All seen declarations, except the deserialized ones. /// If we collect the declarations by walking the clang::DeclContext we /// will miss the injected onces (eg. template instantiations). @@ -274,17 +268,6 @@ namespace cling { return const_reverse_nested_iterator(0); } - void addClangModule(clang::Module* M) { - assert(M && "addClangModules: passed clang::Module pointer is null"); - - if (std::find(m_CxxModules.rbegin(), m_CxxModules.rend(), M) == m_CxxModules.rend()) - m_CxxModules.push_back(M); - } - - const std::vector &getClangModules() const { - return m_CxxModules; - } - /// Macro iteration typedef MacroDirectiveInfoQueue::iterator macros_iterator; typedef MacroDirectiveInfoQueue::const_iterator const_macros_iterator; diff --git a/interpreter/cling/lib/Interpreter/DeclCollector.cpp b/interpreter/cling/lib/Interpreter/DeclCollector.cpp index 5275feb5ce8ab..24f43aa372c42 100644 --- a/interpreter/cling/lib/Interpreter/DeclCollector.cpp +++ b/interpreter/cling/lib/Interpreter/DeclCollector.cpp @@ -321,17 +321,4 @@ namespace cling { m_Consumer->HandleCXXStaticMemberVarInstantiation(D); } - void DeclCollector::DeclRead(clang::serialization::DeclID, const clang::Decl *D) { - assertHasTransaction(m_CurTransaction); - - assert(D && "Decl doesn't exist!"); - if (!D->hasOwningModule()) return; - - clang::Module *M = D->getOwningModule(); - M = M->getTopLevelModule(); - - // Add interesting module to Transaction's m_cxxmodules; Corresponding library will be loaded. - m_CurTransaction->addClangModule(M); - } - } // namespace cling diff --git a/interpreter/cling/lib/Interpreter/DeclCollector.h b/interpreter/cling/lib/Interpreter/DeclCollector.h index c60c11d039b1e..476f49d5fea54 100644 --- a/interpreter/cling/lib/Interpreter/DeclCollector.h +++ b/interpreter/cling/lib/Interpreter/DeclCollector.h @@ -11,7 +11,6 @@ #define CLING_DECL_COLLECTOR_H #include "clang/AST/ASTConsumer.h" -#include "clang/Serialization/ASTDeserializationListener.h" #include "ASTTransformer.h" @@ -25,7 +24,6 @@ namespace clang { class DeclGroupRef; class Preprocessor; class Token; - class Module; } namespace cling { @@ -42,7 +40,7 @@ namespace cling { /// cling::DeclCollector is responsible for appending all the declarations /// seen by clang. /// - class DeclCollector : public clang::ASTConsumer , public clang::ASTDeserializationListener { + class DeclCollector : public clang::ASTConsumer { /// \brief PPCallbacks overrides/ Macro support class PPAdapter; @@ -118,11 +116,6 @@ namespace cling { // dyn_cast/isa support static bool classof(const clang::ASTConsumer*) { return true; } - static bool classof(const clang::ASTDeserializationListener*) { return true; } - - ///\brief ASTDeserializationListener function which gets callback when a decl is deserialized - void DeclRead(clang::serialization::DeclID, const clang::Decl *D) final; - }; } // namespace cling diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp index ce322cc2de22f..6353f7b558cb6 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp @@ -44,7 +44,6 @@ #include "clang/Sema/Sema.h" #include "clang/Sema/SemaDiagnostic.h" #include "clang/Serialization/ASTWriter.h" -#include "clang/Serialization/ASTReader.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" @@ -227,13 +226,6 @@ namespace cling { Preprocessor& PP = m_CI->getPreprocessor(); DiagnosticsEngine& Diags = m_CI->getSema().getDiagnostics(); - ASTReader* Reader = m_CI->getModuleManager().get(); - assert(isa(m_Consumer)); - ASTDeserializationListener* Listener = cast(m_Consumer); - // FIXME: We should create a multiplexing deserialization listener if there is one already attached. - if (Reader && Listener && !Reader->getDeserializationListener()) - Reader->setDeserializationListener(Listener); - // Pull in PCH. const std::string& PCHFileName = m_CI->getInvocation().getPreprocessorOpts().ImplicitPCHInclude; diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index 56c5c3ecf2d1d..22016dc626067 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -1529,9 +1529,6 @@ namespace cling { assert(!isInSyntaxOnlyMode() && "Running on what?"); assert(T.getState() == Transaction::kCommitted && "Must be committed"); - if (InterpreterCallbacks* callbacks = getCallbacks()) - callbacks->beforeExecuteTransaction(T); - const std::shared_ptr& M = T.getModule(); if (!M) return Interpreter::kExeNoModule; diff --git a/interpreter/cling/lib/Interpreter/LookupHelper.cpp b/interpreter/cling/lib/Interpreter/LookupHelper.cpp index b8fc0cd3eb3ca..4df32ba572a0f 100644 --- a/interpreter/cling/lib/Interpreter/LookupHelper.cpp +++ b/interpreter/cling/lib/Interpreter/LookupHelper.cpp @@ -1452,9 +1452,9 @@ namespace cling { DigestArgsInput inputEval; llvm::SmallVector GivenArgs; - Interpreter::PushTransactionRAII pushedT(Interp); if (!inputEval(GivenArgs,funcArgs,diagOnOff,P,Interp)) return 0; + Interpreter::PushTransactionRAII pushedT(Interp); return findFunction(foundDC, funcName, GivenArgs, objectIsConst, Context, Interp, functionSelector, diff --git a/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h b/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h index 3d98ae0418985..40f6754e60235 100644 --- a/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h +++ b/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h @@ -77,12 +77,6 @@ namespace cling { } } - void beforeExecuteTransaction(const Transaction& T) override { - for (auto&& cb : m_Callbacks) { - cb->beforeExecuteTransaction(T); - } - } - void TransactionUnloaded(const Transaction& T) override { for (auto&& cb : m_Callbacks) { cb->TransactionUnloaded(T); diff --git a/interpreter/llvm/src/tools/clang/include/clang/Serialization/ASTReader.h b/interpreter/llvm/src/tools/clang/include/clang/Serialization/ASTReader.h index f515756bf2901..ab6f4f00436c2 100644 --- a/interpreter/llvm/src/tools/clang/include/clang/Serialization/ASTReader.h +++ b/interpreter/llvm/src/tools/clang/include/clang/Serialization/ASTReader.h @@ -1555,10 +1555,6 @@ class ASTReader void setDeserializationListener(ASTDeserializationListener *Listener, bool TakeOwnership = false); - ASTDeserializationListener *getDeserializationListener() { - return DeserializationListener; - }; - /// \brief Determine whether this AST reader has a global index. bool hasGlobalIndex() const { return (bool)GlobalIndex; } From af4e6cfb4735c6c2ff54d87ee2ab215d7fe49832 Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Thu, 31 May 2018 17:40:15 +0200 Subject: [PATCH 011/344] Incremental Initialization Try to iterate through libraies until we will find a mangled_name; If found, we just break and start from there next time. --- core/metacling/src/TCling.cxx | 151 ++++++++++++++++++++-------------- 1 file changed, 87 insertions(+), 64 deletions(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index ba5fafe01d9ff..eee35d1365721 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5873,88 +5873,111 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam using namespace llvm::sys::path; using namespace llvm::sys::fs; + R__LOCKGUARD(gInterpreterMutex); + static constexpr std::hash hash_fn; - // size_t is a hashed mangled_name and libs[(uint8_t)mname_lib_table.second] = library's + // size_t is a hashed mangled_name and libs[(uint16_t)hashToLibNameIndex.second] = library's // name in string. - static std::unordered_map mname_lib_table; - static std::vector libs; - // Initialize library table at first run - static bool fFirstRun = true; + static std::unordered_map hashToLibNameIndex; + // vector of library which are in table, with full path + static std::vector LoadableLibs; + + // If library information was already loaded to the table, just search and return that. + auto iter = hashToLibNameIndex.find(hash_fn(mangled_name)); + if (iter != hashToLibNameIndex.end()) { + std::string LoadedLibName = LoadableLibs[iter->second]; + if (!LoadedLibName.empty() && (gSystem->Load(LoadedLibName.c_str(), "", false) < 0)) + Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", LoadedLibName.c_str()); + void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); + return addr; + } + + static const clang::Preprocessor &PP = fInterpreter->getCI()->getPreprocessor(); + static const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); + static const auto ModulePaths(HSOpts.PrebuiltModulePaths); + static cling::DynamicLibraryManager* dyLibManager = fInterpreter->getDynamicLibraryManager(); + + // Store the information of path so that we don't have to iterate over the same path again and again. + static std::unordered_set AlreadyLookedPath; + // This is different from LoadableLibs. AlreadyLookedLibraries contains filename like "libfoo.so", so that + // we can avoid the same library in different path loaded twice. + static std::unordered_set AlreadyLookedLibraries; + static int cur_lib = 0; + + // Take path here eg. "/home/foo/module-release/lib/" + for (auto Path : ModulePaths) { + // Already searched? + if (AlreadyLookedPath.find(Path) != AlreadyLookedPath.end()) + continue; - R__LOCKGUARD(gInterpreterMutex); + StringRef DirPath(Path); + if (!is_directory(DirPath)) { + AlreadyLookedPath.insert(Path); + continue; + } - // Initialize the table - if (fFirstRun) { - clang::Preprocessor &PP = fInterpreter->getCI()->getPreprocessor(); - const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); - auto ModulePaths(HSOpts.PrebuiltModulePaths); + // We don't want to do directory_iterator several times because it contains HDD access + std::vector Libraries; - // sort and eliminate dupicate path - std::sort(ModulePaths.begin(), ModulePaths.end()); - auto last = std::unique(ModulePaths.begin(), ModulePaths.end()); - ModulePaths.erase(last, ModulePaths.end()); + // Check this not a random system directory (should contain pcm) + std::error_code EC; + bool dirHasPCM = false; + for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; + DirIt != DirEnd && !EC; DirIt.increment(EC)) { + std::string FileName(DirIt->path()); + if (extension(FileName) == ".pcm") + dirHasPCM = true; - cling::DynamicLibraryManager* dyLibManager = fInterpreter->getDynamicLibraryManager(); + if (!llvm::sys::fs::is_directory(FileName) && extension(FileName) == ".so") + Libraries.push_back(FileName); + } - int cur_lib = 0; - // Take path here eg. "/home/foo/module-release/lib/" - for (auto Path : ModulePaths) { - StringRef DirPath(Path); - if (DirPath.empty() || !is_directory(DirPath) || Path == ".") - continue; + if (!dirHasPCM) { + AlreadyLookedPath.insert(Path); + continue; + } - // Check this not a random system directory (should contain pcm) - std::error_code EC; - bool is_build = false; - for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; - DirIt != DirEnd && !EC; DirIt.increment(EC)) { - std::string FileName(DirIt->path()); - if (extension(FileName) == ".pcm") { - is_build = true; - break; - } - } + std::string lib_found = ""; - if (!is_build) + // Iterate over files under this path. We want to get each ".so" files + for (std::string LibName : Libraries) { + // Is it already searched? + if (AlreadyLookedLibraries.find(filename(LibName)) != AlreadyLookedLibraries.end()) continue; - // Iterate over files under this path. We want to get each ".so" files - for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; - DirIt != DirEnd && !EC; DirIt.increment(EC)) { - std::string LibName(DirIt->path()); - if (llvm::sys::fs::is_directory(LibName) || extension(LibName) != ".so") - continue; + AlreadyLookedLibraries.insert(filename(LibName)); - // TCling::IsLoaded is incredibly slow! - if (dyLibManager->isLibraryLoaded(LibName.c_str())) - continue; + // TCling::IsLoaded is incredibly slow! + if (dyLibManager->isLibraryLoaded(LibName.c_str())) + continue; - libs.push_back(LibName); - auto SoFile = ObjectFile::createObjectFile(LibName); - if (SoFile) { - auto RealSoFile = SoFile.get().getBinary(); - auto Symbols = RealSoFile->symbols(); - for (auto S : Symbols) { - // DO NOT insert to table if symbol was weak or undefined - if (S.getFlags() == SymbolRef::SF_Weak || S.getFlags() == SymbolRef::SF_Undefined) continue; - - // Put into map - mname_lib_table.insert(std::make_pair(hash_fn(S.getName().get()), cur_lib)); - } + LoadableLibs.push_back(LibName); + auto SoFile = ObjectFile::createObjectFile(LibName); + if (SoFile) { + auto RealSoFile = SoFile.get().getBinary(); + auto Symbols = RealSoFile->symbols(); + for (auto S : Symbols) { + // DO NOT insert to table if symbol was weak or undefined + if (S.getFlags() == SymbolRef::SF_Weak || S.getFlags() == SymbolRef::SF_Undefined) continue; + + // Put into map + hashToLibNameIndex.insert(std::make_pair(hash_fn(S.getName().get()), cur_lib)); + if (S.getName().get() == mangled_name) + lib_found = LibName; } - cur_lib++; + } + cur_lib++; + if (!lib_found.empty()) { + if (gSystem->Load(lib_found.c_str(), "", false) < 0) + Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", lib_found.c_str()); + void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); + return addr; } } - fFirstRun = false; - } - - auto key = mname_lib_table.find(hash_fn(mangled_name)); - if (key != mname_lib_table.end()) { - std::string LoadedLibName = libs[key->second]; - if (!LoadedLibName.empty() && (gSystem->Load(LoadedLibName.c_str(), "", false) < 0)) - Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", LoadedLibName.c_str()); + AlreadyLookedPath.insert(Path); } + // This means there is not library containing this mangled_name! void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); return addr; } From 7e0ed17389e800862553d10c5dcf5334abc1a66b Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Thu, 31 May 2018 20:32:11 +0200 Subject: [PATCH 012/344] Cache library names, not identifiers This is perfomant than caching identifiers, more extensive to experiments, and code is simpler. --- core/metacling/src/TCling.cxx | 153 +++++++++++++--------------------- 1 file changed, 58 insertions(+), 95 deletions(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index eee35d1365721..43f23321c584f 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5875,111 +5875,74 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam R__LOCKGUARD(gInterpreterMutex); - static constexpr std::hash hash_fn; - // size_t is a hashed mangled_name and libs[(uint16_t)hashToLibNameIndex.second] = library's - // name in string. - static std::unordered_map hashToLibNameIndex; - // vector of library which are in table, with full path - static std::vector LoadableLibs; - - // If library information was already loaded to the table, just search and return that. - auto iter = hashToLibNameIndex.find(hash_fn(mangled_name)); - if (iter != hashToLibNameIndex.end()) { - std::string LoadedLibName = LoadableLibs[iter->second]; - if (!LoadedLibName.empty() && (gSystem->Load(LoadedLibName.c_str(), "", false) < 0)) - Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", LoadedLibName.c_str()); - void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); - return addr; - } - - static const clang::Preprocessor &PP = fInterpreter->getCI()->getPreprocessor(); - static const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); - static const auto ModulePaths(HSOpts.PrebuiltModulePaths); - static cling::DynamicLibraryManager* dyLibManager = fInterpreter->getDynamicLibraryManager(); - - // Store the information of path so that we don't have to iterate over the same path again and again. - static std::unordered_set AlreadyLookedPath; - // This is different from LoadableLibs. AlreadyLookedLibraries contains filename like "libfoo.so", so that - // we can avoid the same library in different path loaded twice. - static std::unordered_set AlreadyLookedLibraries; - static int cur_lib = 0; - - // Take path here eg. "/home/foo/module-release/lib/" - for (auto Path : ModulePaths) { - // Already searched? - if (AlreadyLookedPath.find(Path) != AlreadyLookedPath.end()) - continue; - - StringRef DirPath(Path); - if (!is_directory(DirPath)) { - AlreadyLookedPath.insert(Path); - continue; - } - - // We don't want to do directory_iterator several times because it contains HDD access - std::vector Libraries; - - // Check this not a random system directory (should contain pcm) - std::error_code EC; - bool dirHasPCM = false; - for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; - DirIt != DirEnd && !EC; DirIt.increment(EC)) { - std::string FileName(DirIt->path()); - if (extension(FileName) == ".pcm") - dirHasPCM = true; - - if (!llvm::sys::fs::is_directory(FileName) && extension(FileName) == ".so") - Libraries.push_back(FileName); - } + static bool sFirstRun = true; + // We don't want to do directory_iterator several times because it contains HDD access + static std::set sLibraries; + + if (sFirstRun) { + // Store the information of path so that we don't have to iterate over the same path again and again. + std::unordered_set alreadyLookedPath; + const clang::Preprocessor &PP = fInterpreter->getCI()->getPreprocessor(); + const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); + const auto ModulePaths(HSOpts.PrebuiltModulePaths); + cling::DynamicLibraryManager* dyLibManager = fInterpreter->getDynamicLibraryManager(); + + // Take path here eg. "/home/foo/module-release/lib/" + for (auto Path : ModulePaths) { + // Already searched? + auto it = alreadyLookedPath.insert(Path); + if (!it.second) + continue; + StringRef DirPath(Path); + if (!is_directory(DirPath)) + continue; - if (!dirHasPCM) { - AlreadyLookedPath.insert(Path); - continue; + std::error_code EC; + for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; + DirIt != DirEnd && !EC; DirIt.increment(EC)) { + + std::string FileName(DirIt->path()); + if (!llvm::sys::fs::is_directory(FileName) && extension(FileName) == ".so") { + // TCling::IsLoaded is incredibly slow! + // No need to check linked libraries, as this function is only invoked + // for symbols that cannot be found (neither by dlsym nor in the JIT). + if (dyLibManager->isLibraryLoaded(FileName.c_str())) + continue; + sLibraries.insert(FileName); + } + } } + sFirstRun = false; + } - std::string lib_found = ""; - - // Iterate over files under this path. We want to get each ".so" files - for (std::string LibName : Libraries) { - // Is it already searched? - if (AlreadyLookedLibraries.find(filename(LibName)) != AlreadyLookedLibraries.end()) - continue; + // Iterate over files under this path. We want to get each ".so" files + for (const std::string& LibName : sLibraries) { + auto SoFile = ObjectFile::createObjectFile(LibName); + if (SoFile) { + auto RealSoFile = SoFile.get().getBinary(); + auto Symbols = RealSoFile->symbols(); + for (auto S : Symbols) { + // DO NOT insert to table if symbol was weak or undefined + if (S.getFlags() == SymbolRef::SF_Weak || S.getFlags() == SymbolRef::SF_Undefined) continue; - AlreadyLookedLibraries.insert(filename(LibName)); + llvm::Expected SymNameErr = S.getName(); + if (!SymNameErr) { + Warning("LazyFunctionCreatorAutoloadForModule", "Failed to read symbol"); + continue; + } - // TCling::IsLoaded is incredibly slow! - if (dyLibManager->isLibraryLoaded(LibName.c_str())) - continue; + if (S.getName().get() == mangled_name) { + if (gSystem->Load(LibName.c_str(), "", false) < 0) + Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", LibName.c_str()); - LoadableLibs.push_back(LibName); - auto SoFile = ObjectFile::createObjectFile(LibName); - if (SoFile) { - auto RealSoFile = SoFile.get().getBinary(); - auto Symbols = RealSoFile->symbols(); - for (auto S : Symbols) { - // DO NOT insert to table if symbol was weak or undefined - if (S.getFlags() == SymbolRef::SF_Weak || S.getFlags() == SymbolRef::SF_Undefined) continue; - - // Put into map - hashToLibNameIndex.insert(std::make_pair(hash_fn(S.getName().get()), cur_lib)); - if (S.getName().get() == mangled_name) - lib_found = LibName; + sLibraries.erase(LibName); + void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); + return addr; } } - cur_lib++; - if (!lib_found.empty()) { - if (gSystem->Load(lib_found.c_str(), "", false) < 0) - Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", lib_found.c_str()); - void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); - return addr; - } } - AlreadyLookedPath.insert(Path); } - - // This means there is not library containing this mangled_name! - void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); - return addr; + return nullptr; } //////////////////////////////////////////////////////////////////////////////// From 0a4aa7bf70905d4da74dd5fee7a1fe587d2b467b Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Fri, 1 Jun 2018 14:03:47 +0200 Subject: [PATCH 013/344] use getLangOpts().Modules to avoid warnings --- core/metacling/src/TCling.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 43f23321c584f..94c1c0b9e9108 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5949,9 +5949,8 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam /// Autoload a library based on a missing symbol. void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { -#ifdef R__USE_CXXMODULES - return LazyFunctionCreatorAutoloadForModule(mangled_name, fInterpreter); -#endif + if (fInterpreter->getCI()->getLangOpts().Modules) + return LazyFunctionCreatorAutoloadForModule(mangled_name, fInterpreter); // First see whether the symbol is in the library that we are currently // loading. It will have access to the symbols of its dependent libraries, From 8bb0a978a34e8f026a98642afe118e15d2356b6c Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Fri, 1 Jun 2018 13:54:34 +0200 Subject: [PATCH 014/344] [cxxmodules] Don't generate rootmap files with cxxmodules --- core/dictgen/src/rootcling_impl.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/dictgen/src/rootcling_impl.cxx b/core/dictgen/src/rootcling_impl.cxx index a049e7a1c1af6..12e2923312a9b 100644 --- a/core/dictgen/src/rootcling_impl.cxx +++ b/core/dictgen/src/rootcling_impl.cxx @@ -5096,7 +5096,7 @@ int RootClingMain(int argc, else return a + " " + b; }); - bool rootMapNeeded = !rootmapFileName.empty() || !rootmapLibName.empty(); + bool rootMapNeeded = (!rootmapFileName.empty() || !rootmapLibName.empty()) && !cxxmodule; std::list classesNames; std::list classesNamesForRootmap; From f5c0c286c103caa53896ae95ac2c5e99c9122c57 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Thu, 31 May 2018 14:01:42 +0200 Subject: [PATCH 015/344] [NFC] Formatting --- core/thread/inc/ROOT/TRWSpinLock.hxx | 39 ++++++++++++++-------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/core/thread/inc/ROOT/TRWSpinLock.hxx b/core/thread/inc/ROOT/TRWSpinLock.hxx index 66f40c0dbfeae..31af74fe90df0 100644 --- a/core/thread/inc/ROOT/TRWSpinLock.hxx +++ b/core/thread/inc/ROOT/TRWSpinLock.hxx @@ -18,27 +18,26 @@ #include #include - namespace ROOT { - class TRWSpinLock { - private: - std::atomic fReaders; /// fReaderReservation; /// fWriterReservation; /// fWriter; /// fReaders; /// fReaderReservation; /// fWriterReservation; /// fWriter; /// Date: Thu, 31 May 2018 15:51:32 +0200 Subject: [PATCH 016/344] [MT] Add TRWSpinLock guards --- core/thread/inc/ROOT/TRWSpinLock.hxx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/core/thread/inc/ROOT/TRWSpinLock.hxx b/core/thread/inc/ROOT/TRWSpinLock.hxx index 31af74fe90df0..32c48b8ede8fd 100644 --- a/core/thread/inc/ROOT/TRWSpinLock.hxx +++ b/core/thread/inc/ROOT/TRWSpinLock.hxx @@ -38,6 +38,25 @@ public: void WriteLock(); void WriteUnLock(); }; + +class TRWSpinLockReadGuard { +private: + TRWSpinLock &fLock; + +public: + TRWSpinLockReadGuard(TRWSpinLock &lock) : fLock(lock) { fLock.ReadLock(); } + ~TRWSpinLockReadGuard() { fLock.ReadUnLock(); } +}; + +class TRWSpinLockWriteGuard { +private: + TRWSpinLock &fLock; + +public: + TRWSpinLockWriteGuard(TRWSpinLock &lock) : fLock(lock) { fLock.WriteLock(); } + ~TRWSpinLockWriteGuard() { fLock.WriteUnLock(); } +}; + } // end of namespace ROOT #endif From 4d8cff28ad3656d71a089006c32a0f9fd243a3f6 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sun, 3 Jun 2018 13:55:47 +0200 Subject: [PATCH 017/344] [MT] Do not inline methods of RWSpinLock guards --- core/thread/inc/ROOT/TRWSpinLock.hxx | 8 ++++---- core/thread/src/TRWSpinLock.cxx | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/core/thread/inc/ROOT/TRWSpinLock.hxx b/core/thread/inc/ROOT/TRWSpinLock.hxx index 32c48b8ede8fd..79d9921e17c5a 100644 --- a/core/thread/inc/ROOT/TRWSpinLock.hxx +++ b/core/thread/inc/ROOT/TRWSpinLock.hxx @@ -44,8 +44,8 @@ private: TRWSpinLock &fLock; public: - TRWSpinLockReadGuard(TRWSpinLock &lock) : fLock(lock) { fLock.ReadLock(); } - ~TRWSpinLockReadGuard() { fLock.ReadUnLock(); } + TRWSpinLockReadGuard(TRWSpinLock &lock); + ~TRWSpinLockReadGuard(); }; class TRWSpinLockWriteGuard { @@ -53,8 +53,8 @@ private: TRWSpinLock &fLock; public: - TRWSpinLockWriteGuard(TRWSpinLock &lock) : fLock(lock) { fLock.WriteLock(); } - ~TRWSpinLockWriteGuard() { fLock.WriteUnLock(); } + TRWSpinLockWriteGuard(TRWSpinLock &lock); + ~TRWSpinLockWriteGuard(); }; } // end of namespace ROOT diff --git a/core/thread/src/TRWSpinLock.cxx b/core/thread/src/TRWSpinLock.cxx index 5aea5b23af4de..37b51c5c6ed1c 100644 --- a/core/thread/src/TRWSpinLock.cxx +++ b/core/thread/src/TRWSpinLock.cxx @@ -110,3 +110,25 @@ void TRWSpinLock::WriteUnLock() fCond.notify_all(); } + +TRWSpinLockReadGuard::TRWSpinLockReadGuard(TRWSpinLock &lock) : fLock(lock) +{ + fLock.ReadLock(); +} + +TRWSpinLockReadGuard::~TRWSpinLockReadGuard() +{ + fLock.ReadUnLock(); +} + +TRWSpinLockWriteGuard::TRWSpinLockWriteGuard(TRWSpinLock &lock) : fLock(lock) +{ + fLock.WriteLock(); +} + +TRWSpinLockWriteGuard::~TRWSpinLockWriteGuard() +{ + fLock.WriteUnLock(); +} + + From 231f47187c48d9605029eb878d7efddde0783383 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sun, 3 Jun 2018 13:57:37 +0200 Subject: [PATCH 018/344] [Core] Add ROOT::Internal::RSha256Hash to ease usage sha256 the code of the class as well as the implementation of the hashing is standalone and platform independent (no external such as openssl is required). The rationale is to have an easy way to transform in hashes blobs of bytes. --- core/foundation/res/ROOT/RSha256.hxx | 317 +++++++++++++++++++++++++++ 1 file changed, 317 insertions(+) create mode 100644 core/foundation/res/ROOT/RSha256.hxx diff --git a/core/foundation/res/ROOT/RSha256.hxx b/core/foundation/res/ROOT/RSha256.hxx new file mode 100644 index 0000000000000..1b2585d292ef7 --- /dev/null +++ b/core/foundation/res/ROOT/RSha256.hxx @@ -0,0 +1,317 @@ +// Author: Danilo Piparo May 2018 +// Inspired by public domain code of Igor Pavlov: https://github.com/jb55/sha256.c + +/************************************************************************* + * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT_RSHA +#define ROOT_RSHA + +#include "Rtypes.h" +#include +#include + +#ifdef _MSC_VER + +#define ROTL32(v, n) _rotl((v), (n)) +#define ROTL64(v, n) _rotl64((v), (n)) + +#define ROTR32(v, n) _rotr((v), (n)) +#define ROTR64(v, n) _rotr64((v), (n)) + +#else + +#define U8V(v) ((uint8_t)(v)&0xFFU) +#define U16V(v) ((uint16_t)(v)&0xFFFFU) +#define U32V(v) ((uint32_t)(v)&0xFFFFFFFFU) +#define U64V(v) ((uint64_t)(v)&0xFFFFFFFFFFFFFFFFU) + +#define ROTL32(v, n) (U32V((uint32_t)(v) << (n)) | ((uint32_t)(v) >> (32 - (n)))) + +// tests fail if we don't have this cast... +#define ROTL64(v, n) (U64V((uint64_t)(v) << (n)) | ((uint64_t)(v) >> (64 - (n)))) + +#define ROTR32(v, n) ROTL32(v, 32 - (n)) +#define ROTR64(v, n) ROTL64(v, 64 - (n)) + +#endif + +#define ROTL8(v, n) (U8V((uint8_t)(v) << (n)) | ((uint8_t)(v) >> (8 - (n)))) + +#define ROTL16(v, n) (U16V((uint16_t)(v) << (n)) | ((uint16_t)(v) >> (16 - (n)))) + +#define ROTR8(v, n) ROTL8(v, 8 - (n)) +#define ROTR16(v, n) ROTL16(v, 16 - (n)) + +#define SHA256_DIGEST_SIZE 32 + +typedef struct sha256_t { + uint32_t state[8]; + uint64_t count; + unsigned char buffer[64]; +} sha256_t; + +void sha256_init(sha256_t *p); +void sha256_update(sha256_t *p, const unsigned char *data, size_t size); +void sha256_final(sha256_t *p, unsigned char *digest); +void sha256_hash(unsigned char *buf, const unsigned char *data, size_t size); + +/* define it for speed optimization */ +#define _SHA256_UNROLL +#define _SHA256_UNROLL2 + +void sha256_init(sha256_t *p) +{ + p->state[0] = 0x6a09e667; + p->state[1] = 0xbb67ae85; + p->state[2] = 0x3c6ef372; + p->state[3] = 0xa54ff53a; + p->state[4] = 0x510e527f; + p->state[5] = 0x9b05688c; + p->state[6] = 0x1f83d9ab; + p->state[7] = 0x5be0cd19; + p->count = 0; +} + +#define S0(x) (ROTR32(x, 2) ^ ROTR32(x, 13) ^ ROTR32(x, 22)) +#define S1(x) (ROTR32(x, 6) ^ ROTR32(x, 11) ^ ROTR32(x, 25)) +#define s0(x) (ROTR32(x, 7) ^ ROTR32(x, 18) ^ (x >> 3)) +#define s1(x) (ROTR32(x, 17) ^ ROTR32(x, 19) ^ (x >> 10)) + +#define blk0(i) (W[i] = data[i]) +#define blk2(i) (W[i & 15] += s1(W[(i - 2) & 15]) + W[(i - 7) & 15] + s0(W[(i - 15) & 15])) + +#define Ch(x, y, z) (z ^ (x & (y ^ z))) +#define Maj(x, y, z) ((x & y) | (z & (x | y))) + +#define a(i) T[(0 - (i)) & 7] +#define b(i) T[(1 - (i)) & 7] +#define c(i) T[(2 - (i)) & 7] +#define d(i) T[(3 - (i)) & 7] +#define e(i) T[(4 - (i)) & 7] +#define f(i) T[(5 - (i)) & 7] +#define g(i) T[(6 - (i)) & 7] +#define h(i) T[(7 - (i)) & 7] + +#ifdef _SHA256_UNROLL2 + +#define R(a, b, c, d, e, f, g, h, i) \ + h += S1(e) + Ch(e, f, g) + K[i + j] + (j ? blk2(i) : blk0(i)); \ + d += h; \ + h += S0(a) + Maj(a, b, c) + +#define RX_8(i) \ + R(a, b, c, d, e, f, g, h, i); \ + R(h, a, b, c, d, e, f, g, (i + 1)); \ + R(g, h, a, b, c, d, e, f, (i + 2)); \ + R(f, g, h, a, b, c, d, e, (i + 3)); \ + R(e, f, g, h, a, b, c, d, (i + 4)); \ + R(d, e, f, g, h, a, b, c, (i + 5)); \ + R(c, d, e, f, g, h, a, b, (i + 6)); \ + R(b, c, d, e, f, g, h, a, (i + 7)) + +#else + +#define R(i) \ + h(i) += S1(e(i)) + Ch(e(i), f(i), g(i)) + K[i + j] + (j ? blk2(i) : blk0(i)); \ + d(i) += h(i); \ + h(i) += S0(a(i)) + Maj(a(i), b(i), c(i)) + +#ifdef _SHA256_UNROLL + +#define RX_8(i) \ + R(i + 0); \ + R(i + 1); \ + R(i + 2); \ + R(i + 3); \ + R(i + 4); \ + R(i + 5); \ + R(i + 6); \ + R(i + 7); + +#endif + +#endif + +static const uint32_t K[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; + +static void sha256_transform(uint32_t *state, const uint32_t *data) +{ + uint32_t W[16]; + unsigned j; +#ifdef _SHA256_UNROLL2 + uint32_t a, b, c, d, e, f, g, h; + a = state[0]; + b = state[1]; + c = state[2]; + d = state[3]; + e = state[4]; + f = state[5]; + g = state[6]; + h = state[7]; +#else + uint32_t T[8]; + for (j = 0; j < 8; j++) + T[j] = state[j]; +#endif + + for (j = 0; j < 64; j += 16) { +#if defined(_SHA256_UNROLL) || defined(_SHA256_UNROLL2) + RX_8(0); + RX_8(8); +#else + unsigned i; + for (i = 0; i < 16; i++) { + R(i); + } +#endif + } + +#ifdef _SHA256_UNROLL2 + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; + state[4] += e; + state[5] += f; + state[6] += g; + state[7] += h; +#else + for (j = 0; j < 8; j++) + state[j] += T[j]; +#endif + + /* Wipe variables */ + /* memset(W, 0, sizeof(W)); */ + /* memset(T, 0, sizeof(T)); */ +} + +#undef S0 +#undef S1 +#undef s0 +#undef s1 + +static void sha256_write_byte_block(sha256_t *p) +{ + uint32_t data32[16]; + unsigned i; + for (i = 0; i < 16; i++) + data32[i] = ((uint32_t)(p->buffer[i * 4]) << 24) + ((uint32_t)(p->buffer[i * 4 + 1]) << 16) + + ((uint32_t)(p->buffer[i * 4 + 2]) << 8) + ((uint32_t)(p->buffer[i * 4 + 3])); + sha256_transform(p->state, data32); +} + +void sha256_update(sha256_t *p, const unsigned char *data, size_t size) +{ + uint32_t curBufferPos = (uint32_t)p->count & 0x3F; + while (size > 0) { + p->buffer[curBufferPos++] = *data++; + p->count++; + size--; + if (curBufferPos == 64) { + curBufferPos = 0; + sha256_write_byte_block(p); + } + } +} + +void sha256_final(sha256_t *p, unsigned char *digest) +{ + uint64_t lenInBits = (p->count << 3); + uint32_t curBufferPos = (uint32_t)p->count & 0x3F; + unsigned i; + p->buffer[curBufferPos++] = 0x80; + while (curBufferPos != (64 - 8)) { + curBufferPos &= 0x3F; + if (curBufferPos == 0) + sha256_write_byte_block(p); + p->buffer[curBufferPos++] = 0; + } + for (i = 0; i < 8; i++) { + p->buffer[curBufferPos++] = (unsigned char)(lenInBits >> 56); + lenInBits <<= 8; + } + sha256_write_byte_block(p); + + for (i = 0; i < 8; i++) { + *digest++ = (unsigned char)(p->state[i] >> 24); + *digest++ = (unsigned char)(p->state[i] >> 16); + *digest++ = (unsigned char)(p->state[i] >> 8); + *digest++ = (unsigned char)(p->state[i]); + } + sha256_init(p); +} + +namespace ROOT { +namespace Internal { + +/// This helper class represents a sha256 hash. Operator == and std::less +/// complete its functionality. +class RSha256Hash { +private: + void Sha256(const unsigned char *data, int len) + { + // Here the final cast is to match the interface of the C code and + // the data member. The lenght is the same! + sha256_init(&fHash); + sha256_update(&fHash, data, len); + sha256_final(&fHash, reinterpret_cast(fDigest)); + } + + sha256_t fHash; + ULong64_t fDigest[4]; + +public: + RSha256Hash(const char *data, int len) + { + // The cast here is because in the TBuffer ecosystem, the type used is char* + Sha256(reinterpret_cast(data), len); + } + ULong64_t const *Get() const { return fDigest; } +}; + +bool operator==(const RSha256Hash &lhs, const RSha256Hash &rhs) +{ + auto l = lhs.Get(); + auto r = rhs.Get(); + return l[0] == r[0] && l[1] == r[1] && l[2] == r[2] && l[3] == r[3]; +} + +} // End NS Internal +} // End NS ROOT + +namespace std { +template <> +struct less { + bool operator()(const ROOT::Internal::RSha256Hash &lhs, const ROOT::Internal::RSha256Hash &rhs) const + { + /// Check piece by piece the 4 64 bits ints which make up the hash. + auto l = lhs.Get(); + auto r = rhs.Get(); + // clang-format off + return l[0] < r[0] ? true : + l[0] > r[0] ? false : + l[1] < r[1] ? true : + l[1] > r[1] ? false : + l[2] < r[2] ? true : + l[2] > r[2] ? false : + l[3] < r[3] ? true : false; + // clang-format on + } +}; +} // End NS std + +#endif From 017d51f3b74e765aca58caf5c1378246d7694eb6 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sun, 3 Jun 2018 14:00:17 +0200 Subject: [PATCH 019/344] [MT] Add RConcurrentHashColl class this helper is in the ROOT::Internal namespace. The hash used is sha256 through the ROOT::Internal::RSha256Hash class. Even if this is technically a container, it's not in core/cont because of dependency issues: we do not want core to depend thread and viceversa. --- core/thread/CMakeLists.txt | 6 ++- core/thread/inc/ROOT/RConcurrentHashColl.hxx | 40 ++++++++++++++++++++ core/thread/src/RConcurrentHashColl.cxx | 38 +++++++++++++++++++ 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 core/thread/inc/ROOT/RConcurrentHashColl.hxx create mode 100644 core/thread/src/RConcurrentHashColl.cxx diff --git a/core/thread/CMakeLists.txt b/core/thread/CMakeLists.txt index 2149ff5d473f8..77801c20ff3d7 100644 --- a/core/thread/CMakeLists.txt +++ b/core/thread/CMakeLists.txt @@ -2,10 +2,12 @@ # CMakeLists.txt file for building ROOT core/thread package ############################################################################ +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../foundation/res) + set(headers TAtomicCount.h TCondition.h TConditionImp.h TMutex.h TMutexImp.h TRWLock.h ROOT/TRWSpinLock.hxx TSemaphore.h TThread.h TThreadFactory.h TThreadImp.h ROOT/TThreadedObject.hxx TThreadPool.h - ThreadLocalStorage.h ROOT/TSpinMutex.hxx ROOT/TReentrantRWLock.hxx) + ThreadLocalStorage.h ROOT/TSpinMutex.hxx ROOT/TReentrantRWLock.hxx ROOT/RConcurrentHashColl.hxx) if(NOT WIN32) set(headers ${headers} TPosixCondition.h TPosixMutex.h TPosixThread.h TPosixThreadFactory.h PosixThreadInc.h) @@ -18,7 +20,7 @@ endif() set(sources TCondition.cxx TConditionImp.cxx TMutex.cxx TMutexImp.cxx TRWLock.cxx TRWSpinLock.cxx TSemaphore.cxx TThread.cxx TThreadFactory.cxx - TThreadImp.cxx TRWMutexImp.cxx TReentrantRWLock.cxx) + TThreadImp.cxx TRWMutexImp.cxx TReentrantRWLock.cxx RConcurrentHashColl.cxx) if(NOT WIN32) set(sources ${sources} TPosixCondition.cxx TPosixMutex.cxx TPosixThread.cxx TPosixThreadFactory.cxx) diff --git a/core/thread/inc/ROOT/RConcurrentHashColl.hxx b/core/thread/inc/ROOT/RConcurrentHashColl.hxx new file mode 100644 index 0000000000000..4161da9f96e7a --- /dev/null +++ b/core/thread/inc/ROOT/RConcurrentHashColl.hxx @@ -0,0 +1,40 @@ +// Author: Danilo Piparo May 2018 + +/************************************************************************* + * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. * + * All rights reserved. * + * * + * For the licensing terms see $ROOTSYS/LICENSE. * + * For the list of contributors see $ROOTSYS/README/CREDITS. * + *************************************************************************/ + +#ifndef ROOT_RConcurrentHashColl +#define ROOT_RConcurrentHashColl + +#include + +namespace ROOT { + +class TRWSpinLock; + +namespace Internal { + +struct RHashSet; + +/// This class is a TS set of unsigned set +class RConcurrentHashColl { +private: + mutable std::unique_ptr fHashSet; + mutable std::unique_ptr fRWLock; + +public: + RConcurrentHashColl(); + ~RConcurrentHashColl(); + /// If the hash is there, return false. Otherwise, insert the hash and return true; + bool Insert(char *buf, int len) const; +}; + +} // End NS Internal +} // End NS ROOT + +#endif diff --git a/core/thread/src/RConcurrentHashColl.cxx b/core/thread/src/RConcurrentHashColl.cxx new file mode 100644 index 0000000000000..216c975afa36d --- /dev/null +++ b/core/thread/src/RConcurrentHashColl.cxx @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include + +#include + +namespace ROOT { +namespace Internal { + +struct RHashSet { + std::set fSet; +}; + +RConcurrentHashColl::RConcurrentHashColl() + : fHashSet(std::make_unique()), fRWLock(std::make_unique()){}; +RConcurrentHashColl::~RConcurrentHashColl() = default; + +/// If the buffer is there, return false. Otherwise, insert the hash and return true +bool RConcurrentHashColl::Insert(char *buffer, int len) const +{ + RSha256Hash hash(buffer, len); + + { + ROOT::TRWSpinLockReadGuard rg(*fRWLock); + if (fHashSet->fSet.end() != fHashSet->fSet.find(hash)) + return false; + } + { + ROOT::TRWSpinLockWriteGuard wg(*fRWLock); + fHashSet->fSet.insert(hash); + return true; + } +} + +} // End NS Internal +} // End NS ROOT \ No newline at end of file From 66dfb08bd74a4822dac7086b04951f18d21a56e7 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sun, 3 Jun 2018 14:02:38 +0200 Subject: [PATCH 020/344] [IO] Do not process the streamerinfo record of a file if we read the si already it is not necessary to deserialise the streamerinfos and interact with the type system if we did all this work already. This is visible for example when opening and closing several small files through a TChain in a MT environment. With this fix we keep track of the blob of bytes representing streamer info records that we read and in case a blob has been already processed, no work is carried out. The hash function used is sha256, therefore collisions do not take place. --- io/io/inc/TFile.h | 13 +++++--- io/io/src/TFile.cxx | 76 ++++++++++++++++++++++++++++++--------------- 2 files changed, 59 insertions(+), 30 deletions(-) diff --git a/io/io/inc/TFile.h b/io/io/inc/TFile.h index 19f2c8adddc51..37ef71cddd053 100644 --- a/io/io/inc/TFile.h +++ b/io/io/inc/TFile.h @@ -29,6 +29,7 @@ #ifdef R__USE_IMT #include "ROOT/TRWSpinLock.hxx" +#include "ROOT/RConcurrentHashColl.hxx" #include #endif @@ -106,8 +107,9 @@ class TFile : public TDirectoryFile { TList *fOpenPhases; /// GetStreamerInfoListImpl(bool readSI); // Creating projects Int_t MakeProjectParMake(const char *packname, const char *filename); diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 408a1ce88d030..8079f83f1f403 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -150,6 +150,7 @@ UInt_t TFile::fgOpenTimeout = TFile::kEternalTimeout; Bool_t TFile::fgOnlyStaged = 0; #ifdef R__USE_IMT ROOT::TRWSpinLock TFile::fgRwLock; +ROOT::Internal::RConcurrentHashColl TFile::fgTsSIHashes; #endif const Int_t kBEGIN = 100; @@ -1318,28 +1319,13 @@ const TList *TFile::GetStreamerInfoCache() } //////////////////////////////////////////////////////////////////////////////// -/// Read the list of TStreamerInfo objects written to this file. -/// -/// The function returns a TList. It is the user's responsibility -/// to delete the list created by this function. -/// -/// Note the list, in addition to TStreamerInfo object, contains sometimes -/// a TList named 'listOfRules' and containing the schema evolution rules -/// related to the file's content. -/// -/// Using the list, one can access additional information, e.g.: -/// ~~~{.cpp} -/// TFile f("myfile.root"); -/// auto list = f.GetStreamerInfoList(); -/// auto info = dynamic_cast(list->FindObject("MyClass")); -/// if (info) auto classversionid = info->GetClassVersion(); -/// delete list; -/// ~~~ -/// +/// See documentation of GetStreamerInfoList for more details. +/// This is an internal method which returns the list of streamer infos and also +/// information about the success of the operation. -TList *TFile::GetStreamerInfoList() +std::pair TFile::GetStreamerInfoListImpl(bool lookupSICache) { - if (fIsPcmFile) return 0; // No schema evolution for ROOT PCM files. + if (fIsPcmFile) return {nullptr, 1}; // No schema evolution for ROOT PCM files. TList *list = 0; if (fSeekInfo) { @@ -1352,8 +1338,15 @@ TList *TFile::GetStreamerInfoList() // ReadBuffer returns kTRUE in case of failure. Warning("GetRecordHeader","%s: failed to read the StreamerInfo data from disk.", GetName()); - return 0; + return {nullptr, 1}; } + + if (lookupSICache) { + if (!fgTsSIHashes.Insert(buf,fNbytesInfo)) { + return {nullptr, 0}; + } + } + key->ReadKeyBuffer(buf); list = dynamic_cast(key->ReadObjWithBuffer(buffer)); if (list) list->SetOwner(); @@ -1363,13 +1356,44 @@ TList *TFile::GetStreamerInfoList() list = (TList*)Get("StreamerInfo"); //for versions 2.26 (never released) } + // Before giving up, try to invoke GetStreamerInfoList, in case we are + // in a call stack which started from an inherited class such as TXMLFile or + // TSQLFile + + if (!list) list = GetStreamerInfoList(); + if (list == 0) { Info("GetStreamerInfoList", "cannot find the StreamerInfo record in file %s", GetName()); - return 0; + return {nullptr, 1}; } - return list; + return {list, 0}; +} + +//////////////////////////////////////////////////////////////////////////////// +/// Read the list of TStreamerInfo objects written to this file. +/// +/// The function returns a TList. It is the user's responsibility +/// to delete the list created by this function. +/// +/// Note the list, in addition to TStreamerInfo object, contains sometimes +/// a TList named 'listOfRules' and containing the schema evolution rules +/// related to the file's content. +/// +/// Using the list, one can access additional information, e.g.: +/// ~~~{.cpp} +/// TFile f("myfile.root"); +/// auto list = f.GetStreamerInfoList(); +/// auto info = dynamic_cast(list->FindObject("MyClass")); +/// if (info) auto classversionid = info->GetClassVersion(); +/// delete list; +/// ~~~ +/// + +TList *TFile::GetStreamerInfoList() +{ + return GetStreamerInfoListImpl(/*lookupSICache*/ false).first; } //////////////////////////////////////////////////////////////////////////////// @@ -3474,9 +3498,11 @@ Int_t TFile::MakeProjectParProofInf(const char *pack, const char *proofinf) void TFile::ReadStreamerInfo() { - TList *list = GetStreamerInfoList(); + auto listRetcode = GetStreamerInfoListImpl(/*lookupSICache*/ true); + TList *list = listRetcode.first; + auto retcode = listRetcode.second; if (!list) { - MakeZombie(); + if (retcode) MakeZombie(); return; } From bc4cb3a5e691a50ea5bf01e1484b6a769708512d Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Mon, 4 Jun 2018 10:45:55 +0200 Subject: [PATCH 021/344] [IO] Fix NO_IMT builds --- io/io/src/TFile.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 8079f83f1f403..1546ec7c5782e 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -1341,12 +1341,15 @@ std::pair TFile::GetStreamerInfoListImpl(bool lookupSICache) return {nullptr, 1}; } +#ifdef R__USE_IMT if (lookupSICache) { - if (!fgTsSIHashes.Insert(buf,fNbytesInfo)) { + if (fgTsSIHashes.Insert(buf,fNbytesInfo)) { return {nullptr, 0}; } } - +#endif + (void) lookupSICache; +#else key->ReadKeyBuffer(buf); list = dynamic_cast(key->ReadObjWithBuffer(buffer)); if (list) list->SetOwner(); From e785bfca5241f9665596d93a188fac4c77463f68 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Mon, 4 Jun 2018 11:06:02 +0200 Subject: [PATCH 022/344] [IO] Remove fatal typo --- io/io/src/TFile.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 1546ec7c5782e..fb3266d9bb2bb 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -1343,7 +1343,7 @@ std::pair TFile::GetStreamerInfoListImpl(bool lookupSICache) #ifdef R__USE_IMT if (lookupSICache) { - if (fgTsSIHashes.Insert(buf,fNbytesInfo)) { + if (!fgTsSIHashes.Insert(buf,fNbytesInfo)) { return {nullptr, 0}; } } @@ -3738,7 +3738,11 @@ void TFile::WriteStreamerInfo() // Only add the list of rules if we have something to say. list.Add(&listOfRules); } - + + // always write with compression on + Int_t compress = fCompress; + fCompress = 1; + //free previous StreamerInfo record if (fSeekInfo) MakeFree(fSeekInfo,fSeekInfo+fNbytesInfo-1); //Create new key @@ -3748,7 +3752,10 @@ void TFile::WriteStreamerInfo() fNbytesInfo = key.GetNbytes(); SumBuffer(key.GetObjlen()); key.WriteFile(0); + fClassIndex->fArray[0] = 0; + fCompress = compress; + list.RemoveLast(); // remove the listOfRules. } From 504849c334059c21a4183d0299dee3f20a5fb551 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Mon, 4 Jun 2018 11:07:04 +0200 Subject: [PATCH 023/344] [IO] Remove fatal typo --- io/io/src/TFile.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index fb3266d9bb2bb..57b3924db6c61 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -1347,9 +1347,9 @@ std::pair TFile::GetStreamerInfoListImpl(bool lookupSICache) return {nullptr, 0}; } } -#endif - (void) lookupSICache; #else + (void) lookupSICache; +#endif key->ReadKeyBuffer(buf); list = dynamic_cast(key->ReadObjWithBuffer(buffer)); if (list) list->SetOwner(); From f457e47f7bcb265ec27c5af1ba574e90007293c8 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Mon, 4 Jun 2018 11:19:20 +0200 Subject: [PATCH 024/344] [IO] remove lines accidentally added by e785bf --- io/io/src/TFile.cxx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 57b3924db6c61..7f58980dbffe1 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -3739,10 +3739,6 @@ void TFile::WriteStreamerInfo() list.Add(&listOfRules); } - // always write with compression on - Int_t compress = fCompress; - fCompress = 1; - //free previous StreamerInfo record if (fSeekInfo) MakeFree(fSeekInfo,fSeekInfo+fNbytesInfo-1); //Create new key @@ -3754,7 +3750,6 @@ void TFile::WriteStreamerInfo() key.WriteFile(0); fClassIndex->fArray[0] = 0; - fCompress = compress; list.RemoveLast(); // remove the listOfRules. } From 8f35586cac02fd22b7340313bbfa6074bd98b1da Mon Sep 17 00:00:00 2001 From: Bertrand Bellenot Date: Mon, 4 Jun 2018 13:57:00 +0200 Subject: [PATCH 025/344] Fix __FILE__ path on Windows --- tutorials/tree/clonesA_Event.C | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tutorials/tree/clonesA_Event.C b/tutorials/tree/clonesA_Event.C index 18d93b5f751c2..53ebf9749c13c 100644 --- a/tutorials/tree/clonesA_Event.C +++ b/tutorials/tree/clonesA_Event.C @@ -17,7 +17,8 @@ #ifndef CLONESA_EVENT_SECOND_RUN void clonesA_Event() { - TString dir = gSystem->UnixPathName(gSystem->DirName(__FILE__)); + std::string s1(__FILE__); + TString dir = gSystem->UnixPathName(s1.substr(0, s1.find_last_of("\\/")).c_str()); gROOT->ProcessLine(TString(".L ")+dir+"/clonesA_Event.cxx+"); #define CLONESA_EVENT_SECOND_RUN yes gROOT->ProcessLine("#include \"" __FILE__ "\""); From 04ecf22675e328c34559e5daff4161f879ff369c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 29 May 2018 17:11:19 +0200 Subject: [PATCH 026/344] [TREEPROCMT][NFC] Clarify usage of stack of entries in TTreeView --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 5 +++-- tree/treeplayer/src/TTreeProcessorMT.cxx | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 595532547cf49..934700f2dad52 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -274,6 +274,7 @@ namespace ROOT { reader->SetEntriesRange(start, end); } + // we need to return the entry list too, as it needs to be in scope as long as the reader is return std::make_pair(std::move(reader), std::move(elist)); } @@ -293,11 +294,11 @@ namespace ROOT { ////////////////////////////////////////////////////////////////////////// /// Push a new loaded entry to the stack. - void PushLoadedEntry(Long64_t entry) { fLoadedEntries.push_back(entry); } + void PushTaskFirstEntry(Long64_t entry) { fLoadedEntries.push_back(entry); } ////////////////////////////////////////////////////////////////////////// /// Restore the tree of the previous loaded entry, if any. - void RestoreLoadedEntry() + void PopTaskFirstEntry() { fLoadedEntries.pop_back(); if (fLoadedEntries.size() > 0) { diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 9bcb0d9d82607..5d3cdf866149e 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -111,14 +111,14 @@ void TTreeProcessorMT::Process(std::function func) auto mapFunction = [this, &func](const ROOT::Internal::TreeViewCluster &c) { // This task will operate with the tree that contains startEntry - treeView->PushLoadedEntry(c.startEntry); + treeView->PushTaskFirstEntry(c.startEntry); auto readerAndEntryList = treeView->GetTreeReader(c.startEntry, c.endEntry); auto &reader = std::get<0>(readerAndEntryList); func(*reader); // In case of task interleaving, we need to load here the tree of the parent task - treeView->RestoreLoadedEntry(); + treeView->PopTaskFirstEntry(); }; // Assume number of threads has been initialized via ROOT::EnableImplicitMT From e8ee1506d03ac6cbe208aa0801eb96871a4c9396 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 29 May 2018 18:42:02 +0200 Subject: [PATCH 027/344] [TREEPROCMT] static instead of dynamic_cast as we know it succeeds --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 934700f2dad52..33127aef82d36 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -188,7 +188,7 @@ namespace ROOT { { static const TClassRef clRefTChain("TChain"); if (clRefTChain == tree.IsA()) { - TObjArray* filelist = dynamic_cast(tree).GetListOfFiles(); + TObjArray* filelist = static_cast(tree).GetListOfFiles(); if (filelist->GetEntries() > 0) { for (auto f : *filelist) fFileNames.emplace_back(f->GetTitle()); From 674ec41b206a4fc8a4f3a10177689f4508da72ce Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 10:54:47 +0200 Subject: [PATCH 028/344] [TREEPROCMT] Rename `TreeViewCluster` to `EntryCluster` --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 10 +++++----- tree/treeplayer/src/TTreeProcessorMT.cxx | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 33127aef82d36..b1d3ff55ed443 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -47,10 +47,10 @@ the threaded object. namespace ROOT { namespace Internal { - /// A cluster of entries as seen by TTreeView - struct TreeViewCluster { - Long64_t startEntry; - Long64_t endEntry; + /// A cluster of entries + struct EntryCluster { + Long64_t start; + Long64_t end; }; class TTreeView { @@ -313,7 +313,7 @@ namespace ROOT { private: ROOT::TThreadedObject treeView; /// MakeClusters(); + std::vector MakeClusters(); public: TTreeProcessorMT(std::string_view filename, std::string_view treename = ""); TTreeProcessorMT(const std::vector& filenames, std::string_view treename = ""); diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 5d3cdf866149e..4d468f5d69e7e 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -59,15 +59,15 @@ TTreeProcessorMT::TTreeProcessorMT(TTree &tree, TEntryList &entries) : treeView( //////////////////////////////////////////////////////////////////////// /// Divide input data in clusters, i.e. the workloads to distribute to tasks -std::vector TTreeProcessorMT::MakeClusters() +std::vector TTreeProcessorMT::MakeClusters() { TDirectory::TContext c; - std::vector clusters; + std::vector clusters; const auto &fileNames = treeView->GetFileNames(); const auto nFileNames = fileNames.size(); const auto &treeName = treeView->GetTreeName(); Long64_t offset = 0; - for (auto i = 0u; i < nFileNames; ++i) { // TTreeViewCluster requires the index of the file the cluster belongs to + for (auto i = 0u; i < nFileNames; ++i) { // EntryCluster requires the index of the file the cluster belongs to std::unique_ptr f(TFile::Open(fileNames[i].c_str())); // need TFile::Open to load plugins if need be TTree *t = nullptr; // not a leak, t will be deleted by f f->GetObject(treeName.c_str(), t); @@ -78,7 +78,7 @@ std::vector TTreeProcessorMT::MakeClusters() while ((start = clusterIter()) < entries) { end = clusterIter.GetNextEntry(); // Add the current file's offset to start and end to make them (chain) global - clusters.emplace_back(ROOT::Internal::TreeViewCluster{start + offset, end + offset}); + clusters.emplace_back(ROOT::Internal::EntryCluster{start + offset, end + offset}); } offset += entries; } @@ -109,11 +109,11 @@ void TTreeProcessorMT::Process(std::function func) auto clusters = MakeClusters(); - auto mapFunction = [this, &func](const ROOT::Internal::TreeViewCluster &c) { - // This task will operate with the tree that contains startEntry - treeView->PushTaskFirstEntry(c.startEntry); + auto mapFunction = [this, &func](const ROOT::Internal::EntryCluster &c) { + // This task will operate with the tree that contains start + treeView->PushTaskFirstEntry(c.start); - auto readerAndEntryList = treeView->GetTreeReader(c.startEntry, c.endEntry); + auto readerAndEntryList = treeView->GetTreeReader(c.start, c.end); auto &reader = std::get<0>(readerAndEntryList); func(*reader); From 9c1a7698e2edd59075e337809de1439012113ca8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 10:52:39 +0200 Subject: [PATCH 029/344] [TREEPROCMT] More explicit handling of GetTreeReader return value --- tree/treeplayer/src/TTreeProcessorMT.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 4d468f5d69e7e..fc6bb7315a333 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -113,8 +113,9 @@ void TTreeProcessorMT::Process(std::function func) // This task will operate with the tree that contains start treeView->PushTaskFirstEntry(c.start); - auto readerAndEntryList = treeView->GetTreeReader(c.start, c.end); - auto &reader = std::get<0>(readerAndEntryList); + std::unique_ptr reader; + std::unique_ptr elist; + std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end); func(*reader); // In case of task interleaving, we need to load here the tree of the parent task From 3d695ecb1f7ef62125424bf5a04242c0e60baeb5 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 11:58:52 +0200 Subject: [PATCH 030/344] [TREEPROCMT][NFC] Refactor TreeView::GetTreeReader --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index b1d3ff55ed443..65adcd0a24c58 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -20,6 +20,7 @@ #include "TError.h" #include "TEntryList.h" #include "TFriendElement.h" +#include "ROOT/RMakeUnique.hxx" #include "ROOT/TThreadedObject.hxx" #include @@ -55,6 +56,8 @@ namespace ROOT { class TTreeView { private: + using TreeReaderEntryListPair = std::pair, std::unique_ptr>; + typedef std::pair NameAlias; // NOTE: fFriends must come before fChain to be deleted after it, see ROOT-9281 for more details @@ -62,7 +65,7 @@ namespace ROOT { std::unique_ptr fChain; ///< Chain on which to operate std::vector fFileNames; ///< Names of the files std::string fTreeName; ///< Name of the tree - TEntryList fEntryList; ///< Entry numbers to be processed + TEntryList fEntryList; ///< User-defined selection of entry numbers to be processed, empty if none was provided std::vector fLoadedEntries; /// fFriendNames; ///< pairs of the friends of the tree/chain std::vector> fFriendFileNames; ///< Names of the files where friends are stored @@ -149,6 +152,29 @@ namespace ROOT { } } + TreeReaderEntryListPair MakeReaderWithEntryList(Long64_t start, Long64_t end) + { + // TEntryList and SetEntriesRange do not work together (the former has precedence). + // We need to construct a TEntryList that contains only those entry numbers in our desired range. + auto elist = std::make_unique(); + Long64_t entry = fEntryList.GetEntry(0); + do { + if (entry >= start && entry < end) // TODO can quit this loop early when entry >= end + elist->Enter(entry); + } while ((entry = fEntryList.Next()) >= 0); + + auto reader = std::make_unique(fChain.get(), elist.get()); + return std::make_pair(std::move(reader), std::move(elist)); + } + + std::unique_ptr MakeReader(Long64_t start, Long64_t end) + { + auto reader = std::make_unique(fChain.get()); + fChain->LoadTree(start - 1); + reader->SetEntriesRange(start, end); + return reader; + } + public: ////////////////////////////////////////////////////////////////////////// /// Constructor based on a file name. @@ -250,28 +276,14 @@ namespace ROOT { ////////////////////////////////////////////////////////////////////////// /// Get a TTreeReader for the current tree of this view. - using TreeReaderEntryListPair = std::pair, std::unique_ptr>; TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end) { std::unique_ptr reader; std::unique_ptr elist; if (fEntryList.GetN() > 0) { - // TEntryList and SetEntriesRange do not work together (the former has precedence). - // We need to construct a TEntryList that contains only those entry numbers - // in our desired range. - elist.reset(new TEntryList); - Long64_t entry = fEntryList.GetEntry(0); - do { - if (entry >= start && entry < end) // TODO can quit this loop early when entry >= end - elist->Enter(entry); - } while ((entry = fEntryList.Next()) >= 0); - - reader.reset(new TTreeReader(fChain.get(), elist.get())); + std::tie(reader, elist) = MakeReaderWithEntryList(start, end); } else { - // If no TEntryList is involved we can safely set the range in the reader - reader.reset(new TTreeReader(fChain.get())); - fChain->LoadTree(start - 1); - reader->SetEntriesRange(start, end); + reader = MakeReader(start, end); } // we need to return the entry list too, as it needs to be in scope as long as the reader is From 4cfc37f88433c860bb51e5fc5759a31b4f8bd2ed Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 12:51:25 +0200 Subject: [PATCH 031/344] [TREEPROCMT] Construct thread-local chain at event-loop time, not before At event-loop time we will already have the list of clusters of entries, and we will be able to generate thread-local chains more efficiently, or even switch to thread-local trees if we can/wish to. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 65adcd0a24c58..d1519b699c91a 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -71,8 +71,8 @@ namespace ROOT { std::vector> fFriendFileNames; ///< Names of the files where friends are stored //////////////////////////////////////////////////////////////////////////////// - /// Initialize TTreeView. - void Init() + /// Construct fChain, also adding friends if needed + void MakeChain() { // If the tree name is empty, look for a tree in the file if (fTreeName.empty()) { @@ -185,7 +185,6 @@ namespace ROOT { TTreeView(std::string_view fn, std::string_view tn) : fTreeName(tn) { fFileNames.emplace_back(fn); - Init(); } ////////////////////////////////////////////////////////////////////////// @@ -199,7 +198,6 @@ namespace ROOT { if (fns.size() > 0) { for (auto& fn : fns) fFileNames.emplace_back(fn); - Init(); } else { auto msg = "The provided list of file names is empty, cannot process tree " + fTreeName; @@ -219,7 +217,6 @@ namespace ROOT { for (auto f : *filelist) fFileNames.emplace_back(f->GetTitle()); StoreFriends(tree, false); - Init(); } else { auto msg = "The provided chain of files is empty, cannot process tree " + fTreeName; @@ -231,7 +228,6 @@ namespace ROOT { if (f) { fFileNames.emplace_back(f->GetName()); StoreFriends(tree, true); - Init(); } else { auto msg = "The specified TTree is not linked to any file, in-memory-only trees are not supported. Cannot process tree " + fTreeName; @@ -270,14 +266,14 @@ namespace ROOT { fileNames.emplace_back(name); } } - - Init(); } ////////////////////////////////////////////////////////////////////////// /// Get a TTreeReader for the current tree of this view. TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end) { + MakeChain(); + std::unique_ptr reader; std::unique_ptr elist; if (fEntryList.GetN() > 0) { From d75c56ad66e457f1e3234ec43147d8f8f4f1289a Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 13:17:07 +0200 Subject: [PATCH 032/344] [TREEPROCMT] Let MakeClusters take the list of files as argument The new signature will come in handy to let different tasks generate clusters for different files or sets of files in the future. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 4 +- tree/treeplayer/src/TTreeProcessorMT.cxx | 57 +++++++++---------- 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index d1519b699c91a..bed164adfa176 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -54,6 +54,9 @@ namespace ROOT { Long64_t end; }; + std::vector + MakeClusters(const std::string &treename, const std::vector &filenames); + class TTreeView { private: using TreeReaderEntryListPair = std::pair, std::unique_ptr>; @@ -321,7 +324,6 @@ namespace ROOT { private: ROOT::TThreadedObject treeView; /// MakeClusters(); public: TTreeProcessorMT(std::string_view filename, std::string_view treename = ""); TTreeProcessorMT(const std::vector& filenames, std::string_view treename = ""); diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index fc6bb7315a333..af70a03145f7f 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -30,6 +30,33 @@ objects. using namespace ROOT; +//////////////////////////////////////////////////////////////////////// +/// Return a vector of cluster boundaries for the given tree and files. +std::vector +ROOT::Internal::MakeClusters(const std::string &treeName, const std::vector &fileNames) +{ + TDirectory::TContext c; + std::vector clusters; + const auto nFileNames = fileNames.size(); + Long64_t offset = 0; + for (auto i = 0u; i < nFileNames; ++i) { // EntryCluster requires the index of the file the cluster belongs to + std::unique_ptr f(TFile::Open(fileNames[i].c_str())); // need TFile::Open to load plugins if need be + TTree *t = nullptr; // not a leak, t will be deleted by f + f->GetObject(treeName.c_str(), t); + auto clusterIter = t->GetClusterIterator(0); + Long64_t start = 0, end = 0; + const Long64_t entries = t->GetEntries(); + // Iterate over the clusters in the current file + while ((start = clusterIter()) < entries) { + end = clusterIter.GetNextEntry(); + // Add the current file's offset to start and end to make them (chain) global + clusters.emplace_back(ROOT::Internal::EntryCluster{start + offset, end + offset}); + } + offset += entries; + } + return clusters; +} + //////////////////////////////////////////////////////////////////////// /// Constructor based on a file name. /// \param[in] filename Name of the file containing the tree to process. @@ -57,34 +84,6 @@ TTreeProcessorMT::TTreeProcessorMT(TTree &tree) : treeView(tree) {} /// \param[in] entries List of entry numbers to process. TTreeProcessorMT::TTreeProcessorMT(TTree &tree, TEntryList &entries) : treeView(tree, entries) {} -//////////////////////////////////////////////////////////////////////// -/// Divide input data in clusters, i.e. the workloads to distribute to tasks -std::vector TTreeProcessorMT::MakeClusters() -{ - TDirectory::TContext c; - std::vector clusters; - const auto &fileNames = treeView->GetFileNames(); - const auto nFileNames = fileNames.size(); - const auto &treeName = treeView->GetTreeName(); - Long64_t offset = 0; - for (auto i = 0u; i < nFileNames; ++i) { // EntryCluster requires the index of the file the cluster belongs to - std::unique_ptr f(TFile::Open(fileNames[i].c_str())); // need TFile::Open to load plugins if need be - TTree *t = nullptr; // not a leak, t will be deleted by f - f->GetObject(treeName.c_str(), t); - auto clusterIter = t->GetClusterIterator(0); - Long64_t start = 0, end = 0; - const Long64_t entries = t->GetEntries(); - // Iterate over the clusters in the current file and generate a task for each of them - while ((start = clusterIter()) < entries) { - end = clusterIter.GetNextEntry(); - // Add the current file's offset to start and end to make them (chain) global - clusters.emplace_back(ROOT::Internal::EntryCluster{start + offset, end + offset}); - } - offset += entries; - } - return clusters; -} - ////////////////////////////////////////////////////////////////////////////// /// Process the entries of a TTree in parallel. The user-provided function /// receives a TTreeReader which can be used to iterate on a subrange of @@ -107,7 +106,7 @@ void TTreeProcessorMT::Process(std::function func) // Enable this IMT use case (activate its locks) Internal::TParTreeProcessingRAII ptpRAII; - auto clusters = MakeClusters(); + const auto clusters = ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()); auto mapFunction = [this, &func](const ROOT::Internal::EntryCluster &c) { // This task will operate with the tree that contains start From 157d83e7df2593a80af31b0b14897856ef4860d8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 15:42:16 +0200 Subject: [PATCH 033/344] [TREEPROCMT] Pass per-tree number of entries to thread-local TChains This ensures that each thread-local TChain knows which tree contains which global entry number without having to open all intermediate files to check how many entries they contain, resulting in much less contention in TTreeProcessorMT when multiple threads are loading the right file to process. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 17 +++++----- tree/treeplayer/src/TTreeProcessorMT.cxx | 33 ++++++++++++------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index bed164adfa176..1f5321e445efc 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -54,8 +54,8 @@ namespace ROOT { Long64_t end; }; - std::vector - MakeClusters(const std::string &treename, const std::vector &filenames); + using ClustersAndEntries = std::pair, std::vector>; + ClustersAndEntries MakeClusters(const std::string &treename, const std::vector &filenames); class TTreeView { private: @@ -74,8 +74,8 @@ namespace ROOT { std::vector> fFriendFileNames; ///< Names of the files where friends are stored //////////////////////////////////////////////////////////////////////////////// - /// Construct fChain, also adding friends if needed - void MakeChain() + /// Construct fChain, also adding friends if needed and injecting knowledge of offsets if available. + void MakeChain(const std::vector &nEntries) { // If the tree name is empty, look for a tree in the file if (fTreeName.empty()) { @@ -96,8 +96,9 @@ namespace ROOT { } fChain.reset(new TChain(fTreeName.c_str())); - for (auto &fn : fFileNames) { - fChain->Add(fn.c_str()); + const auto nFiles = fFileNames.size(); + for (auto i = 0u; i < nFiles; ++i) { + fChain->Add(fFileNames[i].c_str(), nEntries[i]); } fChain->ResetBit(TObject::kMustCleanup); @@ -273,9 +274,9 @@ namespace ROOT { ////////////////////////////////////////////////////////////////////////// /// Get a TTreeReader for the current tree of this view. - TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end) + TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::vector &nEntries) { - MakeChain(); + MakeChain(nEntries); std::unique_ptr reader; std::unique_ptr elist; diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index af70a03145f7f..04394a8791e92 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -30,31 +30,40 @@ objects. using namespace ROOT; +namespace ROOT { +namespace Internal { //////////////////////////////////////////////////////////////////////// /// Return a vector of cluster boundaries for the given tree and files. -std::vector -ROOT::Internal::MakeClusters(const std::string &treeName, const std::vector &fileNames) +ClustersAndEntries +MakeClusters(const std::string &treeName, const std::vector &fileNames) { + // Note that as a side-effect of opening all files that are going to be used in the + // analysis once, all necessary streamers will be loaded into memory. TDirectory::TContext c; - std::vector clusters; + std::vector clusters; + std::vector nEntries; const auto nFileNames = fileNames.size(); - Long64_t offset = 0; - for (auto i = 0u; i < nFileNames; ++i) { // EntryCluster requires the index of the file the cluster belongs to + Long64_t offset = 0ll; + for (auto i = 0u; i < nFileNames; ++i) { std::unique_ptr f(TFile::Open(fileNames[i].c_str())); // need TFile::Open to load plugins if need be TTree *t = nullptr; // not a leak, t will be deleted by f f->GetObject(treeName.c_str(), t); auto clusterIter = t->GetClusterIterator(0); - Long64_t start = 0, end = 0; + Long64_t start = 0ll, end = 0ll; const Long64_t entries = t->GetEntries(); + nEntries.emplace_back(entries); // Iterate over the clusters in the current file while ((start = clusterIter()) < entries) { end = clusterIter.GetNextEntry(); // Add the current file's offset to start and end to make them (chain) global - clusters.emplace_back(ROOT::Internal::EntryCluster{start + offset, end + offset}); + clusters.emplace_back(EntryCluster{start + offset, end + offset}); } offset += entries; } - return clusters; + + return std::make_pair(std::move(clusters), std::move(nEntries)); +} +} } //////////////////////////////////////////////////////////////////////// @@ -106,15 +115,17 @@ void TTreeProcessorMT::Process(std::function func) // Enable this IMT use case (activate its locks) Internal::TParTreeProcessingRAII ptpRAII; - const auto clusters = ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()); + const auto clustersAndEntries = ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()); + const auto &clusters = clustersAndEntries.first; + const auto &entries = clustersAndEntries.second; - auto mapFunction = [this, &func](const ROOT::Internal::EntryCluster &c) { + auto mapFunction = [this, &func, &entries](const ROOT::Internal::EntryCluster &c) { // This task will operate with the tree that contains start treeView->PushTaskFirstEntry(c.start); std::unique_ptr reader; std::unique_ptr elist; - std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end); + std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, entries); func(*reader); // In case of task interleaving, we need to load here the tree of the parent task From 6ed691c8623984484706f9289fec22cb93ce5a23 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 31 May 2018 09:49:50 +0200 Subject: [PATCH 034/344] [TREEPROCMT] Add routine to get number of entries in friend trees --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 13 +++++++++-- tree/treeplayer/src/TTreeProcessorMT.cxx | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 1f5321e445efc..9c928c16a8113 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -60,8 +60,7 @@ namespace ROOT { class TTreeView { private: using TreeReaderEntryListPair = std::pair, std::unique_ptr>; - - typedef std::pair NameAlias; + using NameAlias = std::pair; // NOTE: fFriends must come before fChain to be deleted after it, see ROOT-9281 for more details std::vector> fFriends; ///< Friends of the tree/chain @@ -317,6 +316,16 @@ namespace ROOT { fChain->LoadTree(fLoadedEntries.back()); } } + + const std::vector &GetFriendNames() const + { + return fFriendNames; + } + + const std::vector> &GetFriendFileNames() const + { + return fFriendFileNames; + } }; } // End of namespace Internal diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 04394a8791e92..7d7b119453a50 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -63,6 +63,29 @@ MakeClusters(const std::string &treeName, const std::vector &fileNa return std::make_pair(std::move(clusters), std::move(nEntries)); } + +//////////////////////////////////////////////////////////////////////// +/// Return a vector containing the number of entries of each file of each friend TChain +std::vector> GetFriendEntries(const std::vector> &friendNames, + const std::vector> &friendFileNames) +{ + std::vector> friendEntries; + const auto nFriends = friendNames.size(); + for (auto i = 0u; i < nFriends; ++i) { + std::vector nEntries; + const auto &thisFriendName = friendNames[i].first; + const auto &thisFriendFiles = friendFileNames[i]; + for (const auto &fname : thisFriendFiles) { + std::unique_ptr f(TFile::Open(fname.c_str())); + TTree *t = nullptr; // owned by TFile + f->GetObject(thisFriendName.c_str(), t); + nEntries.emplace_back(t->GetEntries()); + } + friendEntries.emplace_back(std::move(nEntries)); + } + + return friendEntries; +} } } From 9494757666f306f94020f70116e0ea09ebdd3e26 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 31 May 2018 09:52:48 +0200 Subject: [PATCH 035/344] [TREEPROCMT] Pass number of entries when building friend chains This ensures that the friends of each thread-local TChain know which tree contains which global entry number without having to open all intermediate files to check how many entries they contain, resulting in much less contention in TTreeProcessorMT when multiple threads are loading the right file to process and friend trees are present. This fix partially addresses ROOT-9437. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 30 +++++++++---------- tree/treeplayer/src/TTreeProcessorMT.cxx | 7 +++-- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 9c928c16a8113..621ca3986461b 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -74,7 +74,7 @@ namespace ROOT { //////////////////////////////////////////////////////////////////////////////// /// Construct fChain, also adding friends if needed and injecting knowledge of offsets if available. - void MakeChain(const std::vector &nEntries) + void MakeChain(const std::vector &nEntries, const std::vector> &friendEntries) { // If the tree name is empty, look for a tree in the file if (fTreeName.empty()) { @@ -101,22 +101,21 @@ namespace ROOT { } fChain->ResetBit(TObject::kMustCleanup); - auto friendNum = 0u; - for (auto &na : fFriendNames) { - auto &name = na.first; - auto &alias = na.second; + const auto nFriends = fFriendNames.size(); + for (auto i = 0u; i < nFriends; ++i) { + const auto &friendName = fFriendNames[i]; + const auto &name = friendName.first; + const auto &alias = friendName.second; // Build a friend chain - TChain *frChain = new TChain(name.c_str()); - auto &fileNames = fFriendFileNames[friendNum]; - for (auto &fn : fileNames) - frChain->Add(fn.c_str()); + auto frChain = std::make_unique(name.c_str()); + const auto nFileNames = fFriendFileNames[i].size(); + for (auto j = 0u; j < nFileNames; ++j) + frChain->Add(fFriendFileNames[i][j].c_str(), friendEntries[i][j]); // Make it friends with the main chain - fFriends.emplace_back(frChain); - fChain->AddFriend(frChain, alias.c_str()); - - ++friendNum; + fChain->AddFriend(frChain.get(), alias.c_str()); + fFriends.emplace_back(std::move(frChain)); } } @@ -273,9 +272,10 @@ namespace ROOT { ////////////////////////////////////////////////////////////////////////// /// Get a TTreeReader for the current tree of this view. - TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::vector &nEntries) + TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::vector &nEntries, + const std::vector> &friendEntries) { - MakeChain(nEntries); + MakeChain(nEntries, friendEntries); std::unique_ptr reader; std::unique_ptr elist; diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 7d7b119453a50..bc19575060c08 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -142,13 +142,16 @@ void TTreeProcessorMT::Process(std::function func) const auto &clusters = clustersAndEntries.first; const auto &entries = clustersAndEntries.second; - auto mapFunction = [this, &func, &entries](const ROOT::Internal::EntryCluster &c) { + const auto friendEntries = + ROOT::Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()); + + auto mapFunction = [this, &func, &entries, &friendEntries](const ROOT::Internal::EntryCluster &c) { // This task will operate with the tree that contains start treeView->PushTaskFirstEntry(c.start); std::unique_ptr reader; std::unique_ptr elist; - std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, entries); + std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, entries, friendEntries); func(*reader); // In case of task interleaving, we need to load here the tree of the parent task From f6626516eae43bc56ca068db599b34905859d097 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 4 Jun 2018 11:04:48 +0200 Subject: [PATCH 036/344] [TREEPROCMT] Get tree name in ctor, not at processing time This allows to error out early, as it was before "[TREEPROCMT] Construct thread-local chain at event-loop time". --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 621ca3986461b..ba8271e25b968 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -73,15 +73,15 @@ namespace ROOT { std::vector> fFriendFileNames; ///< Names of the files where friends are stored //////////////////////////////////////////////////////////////////////////////// - /// Construct fChain, also adding friends if needed and injecting knowledge of offsets if available. - void MakeChain(const std::vector &nEntries, const std::vector> &friendEntries) + /// If not treeName was provided to the ctor, use the name of the first TTree in the first file, else throw. + void GetTreeNameIfNeeded() { // If the tree name is empty, look for a tree in the file if (fTreeName.empty()) { ::TDirectory::TContext ctxt(gDirectory); std::unique_ptr f(TFile::Open(fFileNames[0].c_str())); TIter next(f->GetListOfKeys()); - while (TKey *key = (TKey*)next()) { + while (TKey *key = (TKey *)next()) { const char *className = key->GetClassName(); if (strcmp(className, "TTree") == 0) { fTreeName = key->GetName(); @@ -93,7 +93,12 @@ namespace ROOT { throw std::runtime_error(msg); } } + } + //////////////////////////////////////////////////////////////////////////////// + /// Construct fChain, also adding friends if needed and injecting knowledge of offsets if available. + void MakeChain(const std::vector &nEntries, const std::vector> &friendEntries) + { fChain.reset(new TChain(fTreeName.c_str())); const auto nFiles = fFileNames.size(); for (auto i = 0u; i < nFiles; ++i) { @@ -187,6 +192,7 @@ namespace ROOT { TTreeView(std::string_view fn, std::string_view tn) : fTreeName(tn) { fFileNames.emplace_back(fn); + GetTreeNameIfNeeded(); } ////////////////////////////////////////////////////////////////////////// @@ -205,6 +211,7 @@ namespace ROOT { auto msg = "The provided list of file names is empty, cannot process tree " + fTreeName; throw std::runtime_error(msg); } + GetTreeNameIfNeeded(); } ////////////////////////////////////////////////////////////////////////// From fc5d4ce6ba883ad2463d2ceda838cb861bbb04e0 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 4 Jun 2018 14:12:30 +0200 Subject: [PATCH 037/344] Increase tolerance in stressHistogram buffer tests The buffer tests for histograms have slightly different rounding errors between buffered/not buffered histograms which exceed a few epsilons, so the test fails if the tolerances are too strict. --- test/stressHistogram.cxx | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/test/stressHistogram.cxx b/test/stressHistogram.cxx index 9c394ad4a4b1d..137968454d7e9 100644 --- a/test/stressHistogram.cxx +++ b/test/stressHistogram.cxx @@ -6633,16 +6633,9 @@ bool testH1BufferWeights() { h2->Fill(x,w); } - int pr = std::cout.precision(15); - double eps = TMath::Limits::Epsilon(); - - // Adjust the threshold on ARM64 bits. On this RISC architecture, - // there is a difference when incrementing the sumwx with variables - // saved in memory (in the histogram buffer) and passed as function - // arguments (Fill(x,w)). -#ifdef __aarch64__ - eps*=28; -#endif + // We use 30 epsilon below because some platforms (ARM64, x86_64) + // have rounding errors exceedint a few ulps and make the test fail. + double eps = 30 * std::numeric_limits::epsilon(); bool itest = false; @@ -6652,11 +6645,11 @@ bool testH1BufferWeights() { h2->GetStats(s2); std::vector snames = {"sumw","sumw2","sumwx","sumwx2"}; for (unsigned int i =0; i < snames.size(); ++i) { - itest = equals(s1[i],s2[i],eps ); - if (defaultEqualOptions & cmpOptDebug ) { - std::cout << "Statistics " << snames[i] << " = " << s1[i] << " " << s2[i] << " - " << itest << std::endl; - } - iret |= itest; + itest = equals(s1[i],s2[i],eps ); + if (defaultEqualOptions & cmpOptDebug ) { + std::cout << "Statistics " << snames[i] << " = " << s1[i] << " " << s2[i] << " - " << itest << std::endl; + } + iret |= itest; } // another fill will reset the histogram @@ -6673,15 +6666,13 @@ bool testH1BufferWeights() { iret |= equals("testh1bufferweight",h1,h2,cmpOptStats,eps); - std::cout.precision(pr); + std::cout.precision(15); if (cleanHistos) delete h1; if ( defaultEqualOptions & cmpOptPrint ) std::cout << "Buffer Weighted H1:\t" << (iret?"FAILED":"OK") << std::endl; - - return iret; } From 5a9eff4f9a38cc71c1e82b35799f732d59e36b4e Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 4 Jun 2018 15:38:40 +0200 Subject: [PATCH 038/344] [DOC] Minor fixes to RVec docs --- math/vecops/inc/ROOT/RVec.hxx | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/math/vecops/inc/ROOT/RVec.hxx b/math/vecops/inc/ROOT/RVec.hxx index 06edf7f2d73aa..239904b5fd771 100644 --- a/math/vecops/inc/ROOT/RVec.hxx +++ b/math/vecops/inc/ROOT/RVec.hxx @@ -58,7 +58,7 @@ the manipulation and analysis of the data in the RVec. ## Table of Contents - [Example](#example) - [Owning and adopting memory](#owningandadoptingmemory) -- [Usage in combination with TDataFrame](#usagetdataframe) +- [Usage in combination with RDataFrame](#usagetdataframe) ## Example Suppose to have an event featuring a collection of muons with a certain pseudorapidity, @@ -85,18 +85,14 @@ for (size_t i=0; i < size; ++i) { These operations become straightforward with RVec - we just need to *write what we mean*: ~~~{.cpp} -RVec mu_charge {1, 1, -1, -1, -1, 1, 1, -1}; -RVec mu_pt {56, 45, 32, 24, 12, 8, 7, 6.2}; -RVec mu_eta {3.1, -.2, -1.1, 1, 4.1, 1.6, 2.4, -.5}; - -auto goodMuons_pt = mu_pt[ (mu_pt > 10.f && abs(mu_eta) <= 2.f && mu_charge == -1) +auto goodMuons_pt = mu_pt[ (mu_pt > 10.f && abs(mu_eta) <= 2.f && mu_charge == -1) ] ~~~ Now the clean collection of transverse momenta can be used within the rest of the data analysis, for example to fill a histogram. ## Owning and adopting memory RVec has contiguous memory associated to it. It can own it or simply adopt it. In the latter case, -it can be constructed with the address of the memory associated to it and its lenght. For example: +it can be constructed with the address of the memory associated to it and its length. For example: ~~~{.cpp} std::vector myStlVec {1,2,3}; RVec myRVec(myStlVec.data(), myStlVec.size()); @@ -106,8 +102,8 @@ If any method which implies a re-allocation is called, e.g. *emplace_back* or *r memory is released and new one is allocated. The previous content is copied in the new memory and preserved. -## Usage in combination with TDataFrame -TDataFrame leverages internally RVecs. Suppose to have a dataset stored in a +## Usage in combination with RDataFrame +RDataFrame leverages internally RVecs. Suppose to have a dataset stored in a TTree which holds these columns (here we choose C arrays to represent the collections, they could be as well std::vector instances): ~~~{.bash} @@ -120,7 +116,7 @@ Suppose you'd like to plot in a histogram the transverse momenta of all particle for which the energy is greater than 200 MeV. The code required would just be: ~~~{.cpp} -TDataFrame d("mytree", "myfile.root"); +RDataFrame d("mytree", "myfile.root"); using doubles = RVec; auto cutPt = [](doubles &pxs, doubles &pys, doubles &Es) { auto all_pts = sqrt(pxs * pxs + pys * pys); @@ -134,7 +130,7 @@ hpt->Draw(); ~~~ And if you'd like to express your selection as a string: ~~~{.cpp} -TDataFrame d("mytree", "myfile.root"); +RDataFrame d("mytree", "myfile.root"); auto hpt = d.Define("pt", "sqrt(pxs * pxs + pys * pys)[E>200]") .Histo1D("pt"); hpt->Draw(); From 2776f61a2d9b53df14071292be494eef9f972aeb Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 30 May 2018 12:01:38 +0200 Subject: [PATCH 039/344] [TREEPROCMT] Quit loop over TEntryList as soon as we exceed range --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index ba8271e25b968..2ddf2cb5d276a 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -166,7 +166,9 @@ namespace ROOT { auto elist = std::make_unique(); Long64_t entry = fEntryList.GetEntry(0); do { - if (entry >= start && entry < end) // TODO can quit this loop early when entry >= end + if (entry >= end) + break; + else if (entry >= start) elist->Enter(entry); } while ((entry = fEntryList.Next()) >= 0); From c234d719911c96fcad715aae86b069f780f15e06 Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Tue, 5 Jun 2018 09:37:23 +0200 Subject: [PATCH 040/344] [cxxmodules] Fix failing fedora build (#2135) Fedora was calling LazyFunctionCreatorAutoloadForModule from rootcling where fInterpreter was not initialized yet. --- core/metacling/src/TCling.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 94c1c0b9e9108..25165549a8a2f 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5949,7 +5949,11 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam /// Autoload a library based on a missing symbol. void* TCling::LazyFunctionCreatorAutoload(const std::string& mangled_name) { - if (fInterpreter->getCI()->getLangOpts().Modules) + bool useCxxModules = false; +#ifdef R__USE_CXXMODULES + useCxxModules = true; +#endif + if (useCxxModules) return LazyFunctionCreatorAutoloadForModule(mangled_name, fInterpreter); // First see whether the symbol is in the library that we are currently From e80b5b7c26e39e4141b02cb800ca645975bbdf61 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 4 Jun 2018 16:50:28 +0200 Subject: [PATCH 041/344] Update CMake targets for builtin OpenSSL We need to provide a better match to what a call to find_package(OpenSSL) gives, to make the builtin work with CMake 3.9. --- builtins/openssl/CMakeLists.txt | 38 ++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/builtins/openssl/CMakeLists.txt b/builtins/openssl/CMakeLists.txt index 6227416f3c05f..4109e83eb4271 100644 --- a/builtins/openssl/CMakeLists.txt +++ b/builtins/openssl/CMakeLists.txt @@ -1,13 +1,21 @@ include(ExternalProject) +# find_package(OpenSSL) may not have found it, +# clear parent scope variables set to NOTFOUND +foreach(suffix FOUND INCLUDE_DIR INCLUDE_DIRS CRYPTO_LIBRARY SSL_LIBRARY LIBRARY LIBRARIES VERSION) + unset(OPENSSL_${suffix} PARENT_SCOPE) +endforeach() + +set(OPENSSL_FOUND TRUE) set(OPENSSL_VERSION "1.0.2o") set(OPENSSL_URL "http://lcgpackages.web.cern.ch/lcgpackages/tarFiles/sources/openssl-${OPENSSL_VERSION}.tar.gz") set(OPENSSL_URLHASH "SHA256=ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d") set(OPENSSL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/OPENSSL-prefix) foreach(lib ssl crypto) + string(TOUPPER ${lib} libupper) set(libname ${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}) - list(APPEND OPENSSL_LIBRARIES ${OPENSSL_PREFIX}/lib/${libname}) + set(OPENSSL_${libupper}_LIBRARY ${OPENSSL_PREFIX}/lib/${libname}) endforeach() if(APPLE) @@ -23,21 +31,27 @@ ExternalProject_Add(OPENSSL INSTALL_COMMAND make install_sw BUILD_IN_SOURCE 1 LOG_BUILD 1 LOG_CONFIGURE 1 LOG_DOWNLOAD 1 LOG_INSTALL 1 - BUILD_BYPRODUCTS ${OPENSSL_LIBRARIES}) + BUILD_BYPRODUCTS ${OPENSSL_CRYPTO_LIBRARY} ${OPENSSL_SSL_LIBRARY}) set(OPENSSL_VERSION ${OPENSSL_VERSION} CACHE INTERNAL "" FORCE) set(OPENSSL_PREFIX ${OPENSSL_PREFIX} CACHE INTERNAL "" FORCE) # needed by Davix set(OPENSSL_INCLUDE_DIR ${OPENSSL_PREFIX}/include CACHE INTERNAL "" FORCE) set(OPENSSL_INCLUDE_DIRS ${OPENSSL_PREFIX}/include CACHE INTERNAL "" FORCE) -set(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} CACHE INTERNAL "" FORCE) - -add_library(rssl INTERFACE) -target_include_directories(rssl INTERFACE $) -target_link_libraries(rssl INTERFACE $) -add_dependencies(rssl OPENSSL) - -if(NOT TARGET OpenSSL::SSL) - add_library(OpenSSL::SSL ALIAS rssl) -endif() +set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_CRYPTO_LIBRARY} CACHE INTERNAL "" FORCE) +set(OPENSSL_SSL_LIBRARY ${OPENSSL_SSL_LIBRARY} CACHE INTERNAL "" FORCE) +set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} ${CMAKE_DL_LIBS} CACHE INTERNAL "" FORCE) + +add_library(builtin_crypto INTERFACE) +target_include_directories(builtin_crypto INTERFACE $) +target_link_libraries(builtin_crypto INTERFACE $) +add_dependencies(builtin_crypto OPENSSL) + +add_library(builtin_ssl INTERFACE) +target_include_directories(builtin_ssl INTERFACE $) +target_link_libraries(builtin_ssl INTERFACE $) +add_dependencies(builtin_ssl OPENSSL) + +add_library(OpenSSL::Crypto ALIAS builtin_crypto) +add_library(OpenSSL::SSL ALIAS builtin_ssl) set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS OPENSSL) From 807a06a0b3e29358401dbbb346c2bb6b2a70910c Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 4 Jun 2018 17:00:08 +0200 Subject: [PATCH 042/344] Use ${OPENSSL_LIBRARIES} in net/net/CMakeLists.txt We remove ${CMAKE_DL_LIBS} from the dependencies, since it is now in ${OPENSSL_LIBRARIES} for the builtin openssl, as it is required by libssl. It would be nice to also use target_compile_definitions instead of simply add_definitions, but because ROOT_STANDARD_LIBRARY_PACKAGE does dictionary generation when it's called, it doesn't work. --- net/net/CMakeLists.txt | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/net/net/CMakeLists.txt b/net/net/CMakeLists.txt index 333255d8a07f7..2880c901f21ff 100644 --- a/net/net/CMakeLists.txt +++ b/net/net/CMakeLists.txt @@ -5,14 +5,12 @@ ROOT_GLOB_HEADERS(headers RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/inc inc/*.h) ROOT_GLOB_SOURCES(sources RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src src/*.cxx) -if(NOT ssl) - list(REMOVE_ITEM headers TSSLSocket.h) - list(REMOVE_ITEM sources TSSLSocket.cxx) - set(ssllib) -else() - set(ssllib ${OPENSSL_LIBRARIES} ${CMAKE_DL_LIBS}) +if(ssl) add_definitions(-DR__SSL) include_directories(${OPENSSL_INCLUDE_DIR}) +else() + list(REMOVE_ITEM headers TSSLSocket.h) + list(REMOVE_ITEM sources TSSLSocket.cxx) endif() if(NOT ssl OR NOT CRYPTLIBS) @@ -31,6 +29,5 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Net HEADERS ${headers} SOURCES ${sources} DICTIONARY_OPTIONS "-writeEmptyRootPCM" - LIBRARIES ${ssllib} ${CRYPTLIBS} - DEPENDENCIES RIO BUILTINS OPENSSL) - + LIBRARIES ${OPENSSL_LIBRARIES} ${CRYPTLIBS} + DEPENDENCIES RIO) From 3787d16a54f3b626812d0b5c412d002c1784031c Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 4 Jun 2018 17:02:03 +0200 Subject: [PATCH 043/344] Add ${CRYPTLIBS} to rpdutil INTERFACE_LINK_LIBRARIES To link against rpdutil one also needs ${CRYPTLIBS}, so the rpdutil target should propagate that to libraries linking against it via the INTERFACE_LINK_LIBRARIES property, instead of adding ${CRYPTLIBS} to all libraries linking against rpdutil. --- net/rpdutils/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/rpdutils/CMakeLists.txt b/net/rpdutils/CMakeLists.txt index 1c2143651c297..6a66e4aee7f36 100644 --- a/net/rpdutils/CMakeLists.txt +++ b/net/rpdutils/CMakeLists.txt @@ -35,8 +35,10 @@ endif() #---static library needed for rootd and proofd -------------------------------------------- add_library(rpdutil STATIC ${rpdutilsrcs}) +target_link_libraries(rpdutil INTERFACE ${CRYPTLIBS}) set_property(TARGET rpdutil PROPERTY POSITION_INDEPENDENT_CODE ON) add_dependencies(rpdutil move_headers) -ROOT_LINKER_LIBRARY(SrvAuth rpdutils.cxx ssh.cxx LIBRARIES rpdutil rsa ${CRYPTLIBS} ${GLOBUS_LIBRARIES} ${OPENSSL_LIBRARIES} DEPENDENCIES Net BUILTINS OPENSSL) +ROOT_LINKER_LIBRARY(SrvAuth rpdutils.cxx ssh.cxx + LIBRARIES rpdutil rsa ${GLOBUS_LIBRARIES} DEPENDENCIES Net) From 65bbb7652f6294e74d328f3bc8adf6690d1e9967 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 4 Jun 2018 17:00:28 +0200 Subject: [PATCH 044/344] Let rootd inherit dependency on ${CRYPTLIBS} from rpdutil There is also no longer the need to add BUILTINS OPENSSL to targets linking with the builtin version. --- net/rootd/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/rootd/CMakeLists.txt b/net/rootd/CMakeLists.txt index 45887dff1de18..67d1cd05f1ba6 100644 --- a/net/rootd/CMakeLists.txt +++ b/net/rootd/CMakeLists.txt @@ -4,7 +4,6 @@ ############################################################################ ROOT_EXECUTABLE(rootd *.cxx ${CMAKE_SOURCE_DIR}/core/clib/src/strlcpy.c - LIBRARIES rpdutil rsa ${GLOBUS_LIBRARIES} ${OPENSSL_LIBRARIES} ${CRYPTLIBS} - BUILTINS OPENSSL) + LIBRARIES rpdutil rsa ${GLOBUS_LIBRARIES} ${OPENSSL_LIBRARIES}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../rpdutils/res) From 44db597055eea0c0c067f7c1f342136e2da72064 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 4 Jun 2018 17:00:19 +0200 Subject: [PATCH 045/344] Only link RHTTP to ${OPENSSL_LIBRARIES} when ssl is enabled --- net/http/CMakeLists.txt | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/net/http/CMakeLists.txt b/net/http/CMakeLists.txt index dda8f91179169..3262e56fb5fa5 100644 --- a/net/http/CMakeLists.txt +++ b/net/http/CMakeLists.txt @@ -38,12 +38,6 @@ endif() if(ssl) include_directories(${OPENSSL_INCLUDE_DIR}) - if(OPENSSL_VERSION AND (${OPENSSL_VERSION} VERSION_EQUAL "1.1")) - MESSAGE( STATUS "Use SSL API VERSION 1.1 for civetweb" ) - set(_ssl11 "ON") - endif() -else() - set(OPENSSL_LIBRARIES) endif() # look for the realtime extensions library and use it if it exists @@ -55,17 +49,18 @@ endif() ROOT_STANDARD_LIBRARY_PACKAGE(RHTTP HEADERS ${headers} SOURCES ${sources} - LIBRARIES ${SYSLIBS} ZLIB::ZLIB ${RT_LIBRARIES} ${FASTCGI_LIBRARY} - ${OPENSSL_LIBRARIES} ${CMAKE_DL_LIBS} + LIBRARIES ZLIB::ZLIB ${RT_LIBRARIES} ${FASTCGI_LIBRARY} DEPENDENCIES Thread RIO) target_compile_definitions(RHTTP PUBLIC -DUSE_WEBSOCKET) if(ssl) - target_compile_definitions(RHTTP PUBLIC -DNO_SSL_DL) - if (_ssl11) - target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_1_1) - endif() + target_compile_definitions(RHTTP PUBLIC -DNO_SSL_DL) + target_link_libraries(RHTTP ${OPENSSL_LIBRARIES}) + if(OPENSSL_VERSION AND (${OPENSSL_VERSION} VERSION_EQUAL "1.1")) + MESSAGE(STATUS "Use SSL API VERSION 1.1 for civetweb") + target_compile_definitions(RHTTP PUBLIC -DOPENSSL_API_1_1) + endif() endif() if(_nofcgi) From 1c7be5cf827966d6ca94d36b0a9200b4eda5f831 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 5 Jun 2018 09:29:34 +0200 Subject: [PATCH 046/344] Only link Net to ${OPENSSL_LIBRARIES} when ssl is enabled --- net/net/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/net/CMakeLists.txt b/net/net/CMakeLists.txt index 2880c901f21ff..1cbe26faa6555 100644 --- a/net/net/CMakeLists.txt +++ b/net/net/CMakeLists.txt @@ -29,5 +29,8 @@ ROOT_STANDARD_LIBRARY_PACKAGE(Net HEADERS ${headers} SOURCES ${sources} DICTIONARY_OPTIONS "-writeEmptyRootPCM" - LIBRARIES ${OPENSSL_LIBRARIES} ${CRYPTLIBS} DEPENDENCIES RIO) + +if(ssl) + target_link_libraries(Net ${OPENSSL_LIBRARIES} ${CRYPTLIBS}) +endif() From 18c8270370e460a6c5d860153a19e43df6fb8d41 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 5 Jun 2018 13:05:01 +0200 Subject: [PATCH 047/344] Fix typo introduced into test/stressHistogram Introduced by commit fc5d4ce6ba883ad2463d2ceda838cb861bbb04e0. --- test/stressHistogram.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stressHistogram.cxx b/test/stressHistogram.cxx index 137968454d7e9..35b3d38d257eb 100644 --- a/test/stressHistogram.cxx +++ b/test/stressHistogram.cxx @@ -6634,7 +6634,7 @@ bool testH1BufferWeights() { } // We use 30 epsilon below because some platforms (ARM64, x86_64) - // have rounding errors exceedint a few ulps and make the test fail. + // have rounding errors exceeding a few ulps and make the test fail. double eps = 30 * std::numeric_limits::epsilon(); bool itest = false; From 82fa8ae21857fec3f60bd6ce33672d555fe31ede Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 5 Jun 2018 11:22:35 +0200 Subject: [PATCH 048/344] [DF] Use human readable type names in error message --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index d62bc363d644f..14dd7989ab983 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -827,7 +827,7 @@ void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCus if (customColumn->GetTypeId() != typeid(T)) throw std::runtime_error( std::string("TColumnValue: type specified for column \"" + customColumn->GetName() + "\" is ") + - typeid(T).name() + " but temporary column has type " + customColumn->GetTypeId().name()); + TypeID2TypeName(typeid(T)) + " but temporary column has type " + TypeID2TypeName(customColumn->GetTypeId())); if (customColumn->IsDataSourceColumn()) { fColumnKind = EColumnKind::kDataSource; From a2e1e88486d78ddca2f94675e030787ce9530fd3 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 5 Jun 2018 17:33:25 +0200 Subject: [PATCH 049/344] Add back ${CMAKE_DL_LIBS} to RHTTP (needed by civetweb) --- net/http/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/http/CMakeLists.txt b/net/http/CMakeLists.txt index 3262e56fb5fa5..40f095b7e01a3 100644 --- a/net/http/CMakeLists.txt +++ b/net/http/CMakeLists.txt @@ -49,7 +49,7 @@ endif() ROOT_STANDARD_LIBRARY_PACKAGE(RHTTP HEADERS ${headers} SOURCES ${sources} - LIBRARIES ZLIB::ZLIB ${RT_LIBRARIES} ${FASTCGI_LIBRARY} + LIBRARIES ZLIB::ZLIB ${RT_LIBRARIES} ${FASTCGI_LIBRARY} ${CMAKE_DL_LIBS} DEPENDENCIES Thread RIO) target_compile_definitions(RHTTP PUBLIC -DUSE_WEBSOCKET) From da747d9938fd81c704ee877f75b8b6d9a45b21de Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 5 Jun 2018 21:47:17 +0200 Subject: [PATCH 050/344] [DF] No need for shared_from_this anymore Thanks Philippe! --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 3 +-- tree/dataframe/inc/ROOT/RDFNodes.hxx | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 137334e6c94aa..6a2f8a50140c4 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -129,8 +129,7 @@ public: /// \brief Only enabled when building a RInterface template ::value, int>::type = 0> RInterface(const std::shared_ptr &proxied) - : fProxiedPtr(proxied), fImplWeakPtr(proxied->GetSharedPtr()), fValidCustomColumns(), - fDataSource(proxied->GetDataSource()) + : fProxiedPtr(proxied), fImplWeakPtr(proxied), fValidCustomColumns(), fDataSource(proxied->GetDataSource()) { AddDefaultColumns(); } diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 14dd7989ab983..792af6b81b169 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -86,7 +86,7 @@ class RRangeBase; using RangeBasePtr_t = std::shared_ptr; using RangeBaseVec_t = std::vector; -class RLoopManager : public std::enable_shared_from_this { +class RLoopManager { using RDataSource = ROOT::RDF::RDataSource; enum class ELoopType { kROOTFiles, kROOTFilesMT, kNoFiles, kNoFilesMT, kDataSource, kDataSourceMT }; @@ -181,7 +181,6 @@ public: void Run(); RLoopManager *GetLoopManagerUnchecked(); - std::shared_ptr GetSharedPtr() { return shared_from_this(); } const ColumnNames_t &GetDefaultColumnNames() const; const ColumnNames_t &GetCustomColumnNames() const { return fCustomColumnNames; }; TTree *GetTree() const; From 29caf1bcfd086cd18ceac9e19d8cdaed0c3346ae Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 6 Jun 2018 11:29:00 +0200 Subject: [PATCH 051/344] Modernise the macro as suggested here https://root-forum.cern.ch/t/root-tutorial-chapter-5-3-modifications/29266 --- documentation/primer/macros/macro7.C | 45 ++++++++++++++-------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/documentation/primer/macros/macro7.C b/documentation/primer/macros/macro7.C index 262ec00edae36..d29f9a36bb37e 100644 --- a/documentation/primer/macros/macro7.C +++ b/documentation/primer/macros/macro7.C @@ -2,30 +2,31 @@ // together with its profiles and projections void macro7(){ - gStyle->SetPalette(kBird); - gStyle->SetOptStat(0); - gStyle->SetOptTitle(0); + gStyle->SetPalette(kBird); + gStyle->SetOptStat(0); + gStyle->SetOptTitle(0); - TH2F bidi_h("bidi_h","2D Histo;Gaussian Vals;Exp. Vals", - 30,-5,5, // X axis - 30,0,10); // Y axis + auto bidi_h = new TH2F("bidi_h","2D Histo;Gaussian Vals;Exp. Vals", + 30,-5,5, // X axis + 30,0,10); // Y axis - TRandom3 rgen; - for (int i=0;i<500000;i++) - bidi_h.Fill(rgen.Gaus(0,2),10-rgen.Exp(4),.1); + TRandom3 rgen; + for (int i=0;i<500000;i++) { + bidi_h->Fill(rgen.Gaus(0,2),10-rgen.Exp(4),.1); + } - auto c=new TCanvas("Canvas","Canvas",800,800); - c->Divide(2,2); - c->cd(1);bidi_h.DrawClone("Cont1"); - c->cd(2);bidi_h.DrawClone("Colz"); - c->cd(3);bidi_h.DrawClone("lego2"); - c->cd(4);bidi_h.DrawClone("surf3"); + auto c=new TCanvas("Canvas","Canvas",800,800); + c->Divide(2,2); + c->cd(1); bidi_h->Draw("Cont1"); + c->cd(2); bidi_h->Draw("Colz"); + c->cd(3); bidi_h->Draw("Lego2"); + c->cd(4); bidi_h->Draw("Surf3"); - // Profiles and Projections - auto c2=new TCanvas("Canvas2","Canvas2",800,800); - c2->Divide(2,2); - c2->cd(1);bidi_h.ProjectionX()->DrawClone(); - c2->cd(2);bidi_h.ProjectionY()->DrawClone(); - c2->cd(3);bidi_h.ProfileX()->DrawClone(); - c2->cd(4);bidi_h.ProfileY()->DrawClone(); + // Profiles and Projections + auto c2=new TCanvas("Canvas2","Canvas2",800,800); + c2->Divide(2,2); + c2->cd(1); bidi_h->ProjectionX()->Draw(); + c2->cd(2); bidi_h->ProjectionY()->Draw(); + c2->cd(3); bidi_h->ProfileX()->Draw(); + c2->cd(4); bidi_h->ProfileY()->Draw(); } From a9cf52c698a7b5d52a0268f39401f983552d7208 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Wed, 6 Jun 2018 09:08:23 +0200 Subject: [PATCH 052/344] Always fail if Python or its libraries are not found This is necessary to give the user a clear error message, since otherwise the build will go on and fail anyway with a cryptic message. See ROOT-9441. --- cmake/modules/SearchInstalledSoftware.cmake | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 07e5f7fb5c0d6..ac9ba08ece8c1 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -441,18 +441,14 @@ endif() #---Check for Python installation------------------------------------------------------- if(python) - if(fail-on-missing) - find_package(PythonInterp ${python_version} REQUIRED) - find_package(PythonLibs ${python_version} REQUIRED) - if (tmva) + find_package(PythonInterp ${python_version} REQUIRED) + find_package(PythonLibs ${python_version} REQUIRED) + if (tmva) + if(fail-on-missing) find_package(NumPy REQUIRED) else() find_package(NumPy) endif() - else() - find_package(PythonInterp ${python_version}) - find_package(PythonLibs ${python_version}) - find_package(NumPy) endif() endif() From f640cb7aa067ec7214a5c332114960c3bac07996 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 31 May 2018 15:18:28 +0200 Subject: [PATCH 053/344] [TREEPROCMT] Spawn tasks that process clusters from tasks that process files This should decrease the amount of file switches that each thread-local TChain performs during an event loop, as each thread will tend to process clusters that belong to the same file. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 3 +- tree/treeplayer/src/TTreeProcessorMT.cxx | 45 +++++++++++-------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 2ddf2cb5d276a..fa7ec2e6f95ae 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -54,7 +54,8 @@ namespace ROOT { Long64_t end; }; - using ClustersAndEntries = std::pair, std::vector>; + // EntryClusters and number of entries per file + using ClustersAndEntries = std::pair>, std::vector>; ClustersAndEntries MakeClusters(const std::string &treename, const std::vector &filenames); class TTreeView { diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index bc19575060c08..73676cc4d2a40 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -40,8 +40,8 @@ MakeClusters(const std::string &treeName, const std::vector &fileNa // Note that as a side-effect of opening all files that are going to be used in the // analysis once, all necessary streamers will be loaded into memory. TDirectory::TContext c; - std::vector clusters; - std::vector nEntries; + std::vector> clustersPerFile; + std::vector entriesPerFile; const auto nFileNames = fileNames.size(); Long64_t offset = 0ll; for (auto i = 0u; i < nFileNames; ++i) { @@ -51,17 +51,19 @@ MakeClusters(const std::string &treeName, const std::vector &fileNa auto clusterIter = t->GetClusterIterator(0); Long64_t start = 0ll, end = 0ll; const Long64_t entries = t->GetEntries(); - nEntries.emplace_back(entries); // Iterate over the clusters in the current file + std::vector clusters; while ((start = clusterIter()) < entries) { end = clusterIter.GetNextEntry(); // Add the current file's offset to start and end to make them (chain) global clusters.emplace_back(EntryCluster{start + offset, end + offset}); } offset += entries; + clustersPerFile.emplace_back(std::move(clusters)); + entriesPerFile.emplace_back(entries); } - return std::make_pair(std::move(clusters), std::move(nEntries)); + return std::make_pair(std::move(clustersPerFile), std::move(entriesPerFile)); } //////////////////////////////////////////////////////////////////////// @@ -138,27 +140,34 @@ void TTreeProcessorMT::Process(std::function func) // Enable this IMT use case (activate its locks) Internal::TParTreeProcessingRAII ptpRAII; + // Retrieve cluster boundaries and number of entries for each file const auto clustersAndEntries = ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()); - const auto &clusters = clustersAndEntries.first; + const auto &clustersPerFile = clustersAndEntries.first; const auto &entries = clustersAndEntries.second; - + // Retrieve number of entries for each file for each friend tree const auto friendEntries = ROOT::Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()); - auto mapFunction = [this, &func, &entries, &friendEntries](const ROOT::Internal::EntryCluster &c) { - // This task will operate with the tree that contains start - treeView->PushTaskFirstEntry(c.start); + TThreadExecutor pool; + // Parent task, spawns tasks that process each of the entry clusters for each input file + using ROOT::Internal::EntryCluster; + auto processFile = [this, &func, &entries, &friendEntries, &pool](const std::vector &clusters) { + + auto processCluster = [this, &func, &entries, &friendEntries](const ROOT::Internal::EntryCluster &c) { + // This task will operate with the tree that contains start + treeView->PushTaskFirstEntry(c.start); - std::unique_ptr reader; - std::unique_ptr elist; - std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, entries, friendEntries); - func(*reader); + std::unique_ptr reader; + std::unique_ptr elist; + std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, entries, friendEntries); + func(*reader); - // In case of task interleaving, we need to load here the tree of the parent task - treeView->PopTaskFirstEntry(); + // In case of task interleaving, we need to load here the tree of the parent task + treeView->PopTaskFirstEntry(); + }; + + pool.Foreach(processCluster, clusters); }; - // Assume number of threads has been initialized via ROOT::EnableImplicitMT - TThreadExecutor pool; - pool.Foreach(mapFunction, clusters); + pool.Foreach(processFile, clustersPerFile); } From a0f7c12fd9e4b85866486aac5a14c5ea3bb4e056 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 4 Jun 2018 18:42:45 +0200 Subject: [PATCH 054/344] [TREEPROCMT] Avoid preliminary full sweep of input files when possible ...i.e. when no friends and no TEntryList are present, so that we can use local rather than global entry numbers. If this is the case, now TTreeProcessorMT spawns one task per input file which reads the TTree cluster boundaries and spawns one sub-task per cluster. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 17 +++++-- tree/treeplayer/src/TTreeProcessorMT.cxx | 48 +++++++++++++++---- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index fa7ec2e6f95ae..be0e679ba9e2c 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -98,12 +98,13 @@ namespace ROOT { //////////////////////////////////////////////////////////////////////////////// /// Construct fChain, also adding friends if needed and injecting knowledge of offsets if available. - void MakeChain(const std::vector &nEntries, const std::vector> &friendEntries) + void MakeChain(const std::vector &fileNames, const std::vector &nEntries, + const std::vector> &friendEntries) { fChain.reset(new TChain(fTreeName.c_str())); - const auto nFiles = fFileNames.size(); + const auto nFiles = fileNames.size(); for (auto i = 0u; i < nFiles; ++i) { - fChain->Add(fFileNames[i].c_str(), nEntries[i]); + fChain->Add(fileNames[i].c_str(), nEntries[i]); } fChain->ResetBit(TObject::kMustCleanup); @@ -282,10 +283,11 @@ namespace ROOT { ////////////////////////////////////////////////////////////////////////// /// Get a TTreeReader for the current tree of this view. - TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::vector &nEntries, + TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::vector &fileNames, + const std::vector &nEntries, const std::vector> &friendEntries) { - MakeChain(nEntries, friendEntries); + MakeChain(fileNames, nEntries, friendEntries); std::unique_ptr reader; std::unique_ptr elist; @@ -336,6 +338,11 @@ namespace ROOT { { return fFriendFileNames; } + + const TEntryList &GetEntryList() const + { + return fEntryList; + } }; } // End of namespace Internal diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 73676cc4d2a40..f9262a9388b08 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -140,34 +140,62 @@ void TTreeProcessorMT::Process(std::function func) // Enable this IMT use case (activate its locks) Internal::TParTreeProcessingRAII ptpRAII; - // Retrieve cluster boundaries and number of entries for each file - const auto clustersAndEntries = ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()); - const auto &clustersPerFile = clustersAndEntries.first; + // If an entry list or friend trees are present, we need to generate clusters with global entry numbers, + // so we do it here for all files. + const bool hasFriends = !treeView->GetFriendNames().empty(); + const bool hasEntryList = treeView->GetEntryList().GetN() > 0; + const bool shouldRetrieveAllClusters = hasFriends || hasEntryList; + const auto clustersAndEntries = shouldRetrieveAllClusters + ? ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()) + : ROOT::Internal::ClustersAndEntries{}; + const auto &clusters = clustersAndEntries.first; const auto &entries = clustersAndEntries.second; + // Retrieve number of entries for each file for each friend tree const auto friendEntries = - ROOT::Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()); + hasFriends ? ROOT::Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()) + : std::vector>{}; TThreadExecutor pool; // Parent task, spawns tasks that process each of the entry clusters for each input file using ROOT::Internal::EntryCluster; - auto processFile = [this, &func, &entries, &friendEntries, &pool](const std::vector &clusters) { - - auto processCluster = [this, &func, &entries, &friendEntries](const ROOT::Internal::EntryCluster &c) { + auto processFile = [&](std::size_t fileIdx) { + + // If cluster information is already present, build TChains with all input files and use global entry numbers + // Otherwise get cluster information only for the file we need to process and use local entry numbers + const bool shouldUseGlobalEntries = hasFriends || hasEntryList; + // theseFiles contains either all files or just the single file to process + const auto &theseFiles = shouldUseGlobalEntries ? treeView->GetFileNames() + : std::vector({treeView->GetFileNames()[fileIdx]}); + // Evaluate clusters (with local entry numbers) and number of entries for this file, if needed + const auto theseClustersAndEntries = shouldUseGlobalEntries + ? Internal::ClustersAndEntries{} + : Internal::MakeClusters(treeView->GetTreeName(), theseFiles); + + // All clusters for the file to process, either with global or local entry numbers + const auto &thisFileClusters = shouldUseGlobalEntries ? clusters[fileIdx] : theseClustersAndEntries.first[0]; + + // Either all number of entries or just the ones for this file + const auto &theseEntries = + shouldUseGlobalEntries ? entries : std::vector({theseClustersAndEntries.second[0]}); + + auto processCluster = [&](const ROOT::Internal::EntryCluster &c) { // This task will operate with the tree that contains start treeView->PushTaskFirstEntry(c.start); std::unique_ptr reader; std::unique_ptr elist; - std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, entries, friendEntries); + std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, theseFiles, theseEntries, friendEntries); func(*reader); // In case of task interleaving, we need to load here the tree of the parent task treeView->PopTaskFirstEntry(); }; - pool.Foreach(processCluster, clusters); + pool.Foreach(processCluster, thisFileClusters); }; - pool.Foreach(processFile, clustersPerFile); + std::vector fileIdxs(treeView->GetFileNames().size()); + std::iota(fileIdxs.begin(), fileIdxs.end(), 0u); + pool.Foreach(processFile, fileIdxs); } From aec1b8473f5c9fc09381de044479d8c2e655b6db Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 4 Jun 2018 18:56:15 +0200 Subject: [PATCH 055/344] [TREEPROCMT][NFC] Use Internal:: instead of ROOT::Internal --- tree/treeplayer/src/TTreeProcessorMT.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index f9262a9388b08..326b3d9a63c1e 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -146,19 +146,19 @@ void TTreeProcessorMT::Process(std::function func) const bool hasEntryList = treeView->GetEntryList().GetN() > 0; const bool shouldRetrieveAllClusters = hasFriends || hasEntryList; const auto clustersAndEntries = shouldRetrieveAllClusters - ? ROOT::Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()) - : ROOT::Internal::ClustersAndEntries{}; + ? Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()) + : Internal::ClustersAndEntries{}; const auto &clusters = clustersAndEntries.first; const auto &entries = clustersAndEntries.second; // Retrieve number of entries for each file for each friend tree const auto friendEntries = - hasFriends ? ROOT::Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()) + hasFriends ? Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()) : std::vector>{}; TThreadExecutor pool; // Parent task, spawns tasks that process each of the entry clusters for each input file - using ROOT::Internal::EntryCluster; + using Internal::EntryCluster; auto processFile = [&](std::size_t fileIdx) { // If cluster information is already present, build TChains with all input files and use global entry numbers @@ -179,7 +179,7 @@ void TTreeProcessorMT::Process(std::function func) const auto &theseEntries = shouldUseGlobalEntries ? entries : std::vector({theseClustersAndEntries.second[0]}); - auto processCluster = [&](const ROOT::Internal::EntryCluster &c) { + auto processCluster = [&](const Internal::EntryCluster &c) { // This task will operate with the tree that contains start treeView->PushTaskFirstEntry(c.start); From 6ee4741bc4047c535ccc50da12be942ac36ff4c8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 5 Jun 2018 09:42:06 +0200 Subject: [PATCH 056/344] [TREEPROCMT][NFC] Update author list --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 2 +- tree/treeplayer/src/TTreeProcessorMT.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index be0e679ba9e2c..a1a4a59736728 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -1,5 +1,5 @@ // @(#)root/thread:$Id$ -// Author: Enric Tejedor, CERN 12/09/2016 +// Authors: Enric Tejedor, Enrico Guiraud CERN 05/06/2018 /************************************************************************* * Copyright (C) 1995-2016, Rene Brun and Fons Rademakers. * diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 326b3d9a63c1e..91ce6ca3d1b3c 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -1,5 +1,5 @@ // @(#)root/thread:$Id$ -// Author: Enric Tejedor, CERN 12/09/2016 +// Authors: Enric Tejedor, Enrico Guiraud CERN 05/06/2018 /************************************************************************* * Copyright (C) 1995-2016, Rene Brun and Fons Rademakers. * From 17f4edce34a9bd4ce28b3002f6eb20524312b117 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 5 Jun 2018 09:53:38 +0200 Subject: [PATCH 057/344] [TREEPROCMT] Activate locks as late as possible --- tree/treeplayer/src/TTreeProcessorMT.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 91ce6ca3d1b3c..e4d8a062fd22a 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -137,9 +137,6 @@ TTreeProcessorMT::TTreeProcessorMT(TTree &tree, TEntryList &entries) : treeView( /// \param[in] func User-defined function that processes a subrange of entries void TTreeProcessorMT::Process(std::function func) { - // Enable this IMT use case (activate its locks) - Internal::TParTreeProcessingRAII ptpRAII; - // If an entry list or friend trees are present, we need to generate clusters with global entry numbers, // so we do it here for all files. const bool hasFriends = !treeView->GetFriendNames().empty(); @@ -197,5 +194,9 @@ void TTreeProcessorMT::Process(std::function func) std::vector fileIdxs(treeView->GetFileNames().size()); std::iota(fileIdxs.begin(), fileIdxs.end(), 0u); + + // Enable this IMT use case (activate its locks) + Internal::TParTreeProcessingRAII ptpRAII; + pool.Foreach(processFile, fileIdxs); } From 94031e0487bbf8449aeec954b8f1ab19c5afaf5c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 6 Jun 2018 10:21:30 +0200 Subject: [PATCH 058/344] [TREEPROCMT] Add gtest with many input files --- tree/treeplayer/test/CMakeLists.txt | 1 + .../treeprocmt/treeprocessormt_manyfiles.cxx | 73 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 tree/treeplayer/test/treeprocmt/treeprocessormt_manyfiles.cxx diff --git a/tree/treeplayer/test/CMakeLists.txt b/tree/treeplayer/test/CMakeLists.txt index 8e03e1350fce1..31c82efe11434 100644 --- a/tree/treeplayer/test/CMakeLists.txt +++ b/tree/treeplayer/test/CMakeLists.txt @@ -2,3 +2,4 @@ ROOT_ADD_UNITTEST_DIR(TreePlayer) add_custom_command(TARGET treetreeplayertestUnit POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data.h data.h) +ROOT_ADD_GTEST(treeprocessormt_manyfiles treeprocmt/treeprocessormt_manyfiles.cxx LIBRARIES TreePlayer) diff --git a/tree/treeplayer/test/treeprocmt/treeprocessormt_manyfiles.cxx b/tree/treeplayer/test/treeprocmt/treeprocessormt_manyfiles.cxx new file mode 100644 index 0000000000000..bc2ac4d20fd59 --- /dev/null +++ b/tree/treeplayer/test/treeprocmt/treeprocessormt_manyfiles.cxx @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "gtest/gtest.h" + +void WriteFiles(const std::string &treename, const std::vector &filenames) +{ + int v = 0; + for (const auto &f : filenames) { + TFile file(f.c_str(), "recreate"); + TTree t(treename.c_str(), treename.c_str()); + t.Branch("v", &v); + for (auto i = 0; i < 10; ++i) { + ++v; + t.Fill(); + } + t.Write(); + } +} + +void DeleteFiles(const std::vector &filenames) +{ + for (const auto &f : filenames) + gSystem->Unlink(f.c_str()); +} + +TEST(TreeProcessorMT, ManyFiles) +{ + const auto nFiles = 100u; + const std::string treename = "t"; + std::vector filenames; + for (auto i = 0u; i < nFiles; ++i) + filenames.emplace_back("treeprocmt_" + std::to_string(i) + ".root"); + + WriteFiles(treename, filenames); + + std::atomic_int sum(0); + std::atomic_int count(0); + auto sumValues = [&sum, &count](TTreeReader &r) { + TTreeReaderValue v(r, "v"); + std::random_device seed; + std::default_random_engine eng(seed()); + std::uniform_int_distribution<> rand(1, 100); + while (r.Next()) { + std::this_thread::sleep_for(std::chrono::nanoseconds(rand(eng))); + sum += *v; + ++count; + } + }; + + // TTreeProcMT requires a vector + std::vector fnames; + for (const auto &f : filenames) + fnames.emplace_back(f); + + ROOT::TTreeProcessorMT proc(fnames, treename); + proc.Process(sumValues); + + EXPECT_EQ(count.load(), int(nFiles*10)); // 10 entries per file + EXPECT_EQ(sum.load(), 500500); // sum 1..nFiles*10 + + DeleteFiles(filenames); +} From 3caef8b56a51aba415f86ec915e2cb68a203d688 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Thu, 7 Jun 2018 11:02:55 +0200 Subject: [PATCH 059/344] Fix warning about uninitialised variable --- core/foundation/res/ROOT/RSha256.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/foundation/res/ROOT/RSha256.hxx b/core/foundation/res/ROOT/RSha256.hxx index 1b2585d292ef7..cac647492daa0 100644 --- a/core/foundation/res/ROOT/RSha256.hxx +++ b/core/foundation/res/ROOT/RSha256.hxx @@ -150,7 +150,7 @@ static const uint32_t K[64] = { static void sha256_transform(uint32_t *state, const uint32_t *data) { - uint32_t W[16]; + uint32_t W[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U}; unsigned j; #ifdef _SHA256_UNROLL2 uint32_t a, b, c, d, e, f, g, h; From 997e1bd604c2ab6c7a61da73b309c17017757dbc Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 08:13:06 +0200 Subject: [PATCH 060/344] [TREEPROCMT] Do not build test if not an imt build --- tree/treeplayer/test/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tree/treeplayer/test/CMakeLists.txt b/tree/treeplayer/test/CMakeLists.txt index 31c82efe11434..ad3047941f7b2 100644 --- a/tree/treeplayer/test/CMakeLists.txt +++ b/tree/treeplayer/test/CMakeLists.txt @@ -2,4 +2,6 @@ ROOT_ADD_UNITTEST_DIR(TreePlayer) add_custom_command(TARGET treetreeplayertestUnit POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/data.h data.h) -ROOT_ADD_GTEST(treeprocessormt_manyfiles treeprocmt/treeprocessormt_manyfiles.cxx LIBRARIES TreePlayer) +if(imt) + ROOT_ADD_GTEST(treeprocessormt_manyfiles treeprocmt/treeprocessormt_manyfiles.cxx LIBRARIES TreePlayer) +endif() From f2489486082cb80533b69b94bfa2d7cb6c0bec49 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Wed, 6 Jun 2018 12:52:00 -0500 Subject: [PATCH 061/344] Fix RDF interpreted snapshot, ROOT-9236 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current failure in snapshot is due to an ABI incompatibility (or so it seems) that we may have encountered before. The failing line is: {code:c++} auto snapshotRDF = std::make_shared>(std::make_shared(nullptr, validCols)); {code} and one of the component of make_shared is the call to the following shared_ptr constructor {code:c++} // This constructor is non-standard, it is used by allocate_shared. template shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, _Args&&... __args) : __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...) { } {code} Note the use of std::forward. The snapshot test has 2 steps: 1. Do the work, including a call to SnapshotImpl which contains the problem line, with only compiled code 2. Do the same work relying on interpreted code, in which case SnapshotImpl is called via the interpreter. The symptoms of the failure is that **if** the snapshot test is compiled with optimization then a. The compiled version works fine b. In the interpreted version the constructor of the RInterface is wrong because the shared_ptr its constructor sees is **not** initialized. If the snapshot test is compiled without optimization then both steps succeeds. The main difference between the two is the amount of fully realized (i.e. non-inlined) functions emitted by the compiler. In the success fully case we have a stack like {code} interp SnapshotImpl calls compiled std::make_shared(nullptr, validCols); auto snapshotRDF = std::make_shared>(rlm_ptr); {code} In my case, it solves the problem because more of the '2nd' make_shared called are inlined by the compiler (when generating code for the 1st step), including the __shared_ptr constructor ... forcing the interpreter to generate the code and hence side-stepping the issue. [And if the std::forward issue is limited to temporary it would side-step the issue even if the __shared_ptr constructor was still outline. --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 6a2f8a50140c4..8c174b64eb5dd 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -1679,7 +1679,13 @@ private: ::TDirectory::TContext ctxt; // Now we mimic a constructor for the RDataFrame. We cannot invoke it here // since this would introduce a cyclic headers dependency. - auto snapshotRDF = std::make_shared>(std::make_shared(nullptr, validCols)); + + // Keep these two statements separated to work-around an ABI incompatibility + // between clang (and thus cling) and gcc in the way std::forward is handled. + // See https://sft.its.cern.ch/jira/browse/ROOT-9236 for more detail. + auto rlm_ptr = std::make_shared(nullptr, validCols); + auto snapshotRDF = std::make_shared>(rlm_ptr); + auto chain = std::make_shared(fullTreename.c_str()); chain->Add(std::string(filename).c_str()); snapshotRDF->fProxiedPtr->SetTree(chain); From 011aa8200277cd31957e222afd9b37415458b31f Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Thu, 7 Jun 2018 15:48:36 +0200 Subject: [PATCH 062/344] Revert "Add the cwg to the prebuilt module cache path." (#2160) This reverts commit 5298b418eec4129351888f41cb7c3bfc90161e22. This commit was mistakenly committed. PR was opened in #1730, but it was closed and moved to #1761. I didn't notice this and created another PR in #1980. This change was causing 100+ failures in runtime cxxmodules nightlies. (Eg. https://epsft-jenkins.cern.ch/job/root-pullrequests-build/29183/testReport/junit/projectroot/runtutorials/tutorial_fit_FittingDemo/) We want to have **proper** PrebuildModulesPaths which information were extracted from LD_LIBRARY_PATH and DYLD_LIBRARY_PATH, not a random ".". Because of this commit, we were trying to autoload libraries generated by roottest on-demand (for example "./h1analysisTreeReader_C.so") This is not an intentional behavior, these autogenerated libraries are already loaded by roottest and what we want to do is to load **proper** libraries like libHist.so instead. --- interpreter/cling/lib/Interpreter/CIFactory.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp index f97c86032f709..3f233a3abc284 100644 --- a/interpreter/cling/lib/Interpreter/CIFactory.cpp +++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp @@ -1092,7 +1092,6 @@ static void stringifyPreprocSetting(PreprocessorOptions& PPOpts, auto& HS = CI->getHeaderSearchOpts(); addPrebuiltModulePaths(HS, getPathsFromEnv(getenv("LD_LIBRARY_PATH"))); addPrebuiltModulePaths(HS, getPathsFromEnv(getenv("DYLD_LIBRARY_PATH"))); - HS.AddPrebuiltModulePath("."); } // Set up compiler language and target From 0a2fbd18e5ccd78dffcd03324b40a26c04f31fe7 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 6 Jun 2018 10:20:42 +0200 Subject: [PATCH 063/344] [TREE] Only trigger parallel GetEntry if number of branches > 1 --- tree/tree/src/TTree.cxx | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index 8e9b66be1404d..8aad35cd1dde8 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -5451,13 +5451,10 @@ Int_t TTree::GetEntry(Long64_t entry, Int_t getall) }; #ifdef R__USE_IMT - // At most one parallel read with a single branch - unsigned int nSortedBranches(2); - if (nSortedBranches > 1 && ROOT::IsImplicitMTEnabled() && fIMTEnabled && !TTreeCacheUnzip::IsParallelUnzip()) { - if (fSortedBranches.empty()) { - InitializeBranchLists(true); - nSortedBranches = fSortedBranches.size(); - } + const auto nBranches = GetListOfBranches()->GetEntries(); + if (nBranches > 1 && ROOT::IsImplicitMTEnabled() && fIMTEnabled && !TTreeCacheUnzip::IsParallelUnzip()) { + if (fSortedBranches.empty()) + InitializeBranchLists(true); // Count branches are processed first and sequentially for (auto branch : fSeqBranches) { From b33916ce74602138c239ceb78b742428190ffc40 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 16:19:53 +0200 Subject: [PATCH 064/344] [DF] Fix typo in jitted Snapshot --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 8c174b64eb5dd..c76f468962714 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -418,10 +418,10 @@ public: << std::showbase << (size_t)&upcastInterface << ")->Snapshot<"; const auto &customCols = df->GetCustomColumnNames(); - const auto dontCovertVector = false; + const auto dontConvertVector = false; for (auto &c : columnList) { const auto isCustom = std::find(customCols.begin(), customCols.end(), c) != customCols.end(); - snapCall << RDFInternal::ColumnName2ColumnTypeName(c, nsID, tree, fDataSource, isCustom, dontCovertVector) + snapCall << RDFInternal::ColumnName2ColumnTypeName(c, nsID, tree, fDataSource, isCustom, dontConvertVector) << ", "; }; if (!columnList.empty()) From ec5e3b65948cec24e77afb19614b78928616f334 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 17:15:50 +0200 Subject: [PATCH 065/344] [DF][NFC] Mark validated column names as const --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index c76f468962714..d7da15a5c19f9 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -1640,7 +1640,7 @@ private: RDFInternal::CheckSnapshot(sizeof...(BranchTypes), columnList.size()); auto lm = GetLoopManager(); - auto validCols = + const auto validCols = RDFInternal::GetValidatedColumnNames(*lm, columnList.size(), columnList, fValidCustomColumns, fDataSource); if (fDataSource) From 427ada7bf47191f54640e2412e5afccfa2a18f46 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 17:21:48 +0200 Subject: [PATCH 066/344] [DF] Fix Snapshot of aliased custom columns Fixes ROOT-9452 --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index d7da15a5c19f9..4145732fcc8f4 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -419,7 +419,9 @@ public: const auto &customCols = df->GetCustomColumnNames(); const auto dontConvertVector = false; - for (auto &c : columnList) { + const auto validCols = + RDFInternal::GetValidatedColumnNames(*df, columnList.size(), columnList, fValidCustomColumns, fDataSource); + for (auto &c : validCols) { const auto isCustom = std::find(customCols.begin(), customCols.end(), c) != customCols.end(); snapCall << RDFInternal::ColumnName2ColumnTypeName(c, nsID, tree, fDataSource, isCustom, dontConvertVector) << ", "; From 0c33a7349ffad8d7cd90de826542925818ab43c2 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 17:28:55 +0200 Subject: [PATCH 067/344] [DF] Add test for jitted Snapshot of aliased columns --- tree/dataframe/test/dataframe_snapshot.cxx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx index 4002fa042db94..32ccb5e1531b8 100644 --- a/tree/dataframe/test/dataframe_snapshot.cxx +++ b/tree/dataframe/test/dataframe_snapshot.cxx @@ -601,5 +601,21 @@ TEST(RDFSnapshotMore, TreeWithFriendsMT) gSystem->Unlink(outfname); } +TEST(RDFSnapshotMore, JittedSnapshotAndAliasedColumns) +{ + ROOT::RDataFrame df(1); + const auto fname = "out_aliasedcustomcolumn.root"; + // aliasing a custom column + auto df2 = df.Define("x", [] { return 42; }).Alias("y", "x").Snapshot("t", fname, "y"); // must be jitted! + EXPECT_EQ(df2->GetColumnNames(), std::vector({"y", "y.y"})); + EXPECT_EQ(df2->Take("y")->at(0), 42); + + // aliasing a column from a file + const auto fname2 = "out_aliasedcustomcolumn2.root"; + df2->Alias("z", "y").Snapshot("t", fname2, "z"); + + gSystem->Unlink(fname); + gSystem->Unlink(fname2); +} #endif // R__USE_IMT From a92094b00c8addb03fc308bd2e98e3adc5a3e7c7 Mon Sep 17 00:00:00 2001 From: Jakob Blomer Date: Fri, 25 May 2018 18:36:28 +0200 Subject: [PATCH 068/344] Use buf->ResetMap() only if necessary when filling branch --- tree/tree/src/TBranch.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tree/tree/src/TBranch.cxx b/tree/tree/src/TBranch.cxx index ab2c92db7afe4..7e4c0efe5b284 100644 --- a/tree/tree/src/TBranch.cxx +++ b/tree/tree/src/TBranch.cxx @@ -838,7 +838,9 @@ Int_t TBranch::FillImpl(ROOT::Internal::TBranchIMTHelper *imtHelper) basket->SetWriteMode(); } - buf->ResetMap(); + if (!TestBit(kDoNotUseBufferMap)) { + buf->ResetMap(); + } Int_t lnew = 0; Int_t nbytes = 0; From 9a915397adad00527851722c45a390f700e1068b Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 5 Jun 2018 21:48:10 +0200 Subject: [PATCH 069/344] [TREEPROCMT] Refactoring: move dataset info to TTreeProcessorMT Previously all the dataset information was stored in the thread-local TTreeViews, causing data duplication between threads and requiring that TTreeProcessorMT queries it when it needs part of it. Now TTreeProcessorMT stores all the dataset information (tree name, filenames, friend names, friend file names, entry list) as constant thread-global data which is passed down to TTreeView::GetTreeReader. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 263 ++++-------------- tree/treeplayer/src/TTreeProcessorMT.cxx | 151 ++++++++-- 2 files changed, 182 insertions(+), 232 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index a1a4a59736728..2df39a6d95400 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -54,6 +54,16 @@ namespace ROOT { Long64_t end; }; + /// Names, aliases, and file names of a TTree's or TChain's friends + using NameAlias = std::pair; + struct FriendInfo { + /// Pairs of names and aliases of friend trees/chains + std::vector fFriendNames; + /// Names of the files where each friend is stored. fFriendFileNames[i] is the list of files for friend with + /// name fFriendNames[i] + std::vector> fFriendFileNames; + }; + // EntryClusters and number of entries per file using ClustersAndEntries = std::pair>, std::vector>; ClustersAndEntries MakeClusters(const std::string &treename, const std::vector &filenames); @@ -61,64 +71,40 @@ namespace ROOT { class TTreeView { private: using TreeReaderEntryListPair = std::pair, std::unique_ptr>; - using NameAlias = std::pair; // NOTE: fFriends must come before fChain to be deleted after it, see ROOT-9281 for more details std::vector> fFriends; ///< Friends of the tree/chain std::unique_ptr fChain; ///< Chain on which to operate - std::vector fFileNames; ///< Names of the files - std::string fTreeName; ///< Name of the tree - TEntryList fEntryList; ///< User-defined selection of entry numbers to be processed, empty if none was provided std::vector fLoadedEntries; /// fFriendNames; ///< pairs of the friends of the tree/chain - std::vector> fFriendFileNames; ///< Names of the files where friends are stored - - //////////////////////////////////////////////////////////////////////////////// - /// If not treeName was provided to the ctor, use the name of the first TTree in the first file, else throw. - void GetTreeNameIfNeeded() - { - // If the tree name is empty, look for a tree in the file - if (fTreeName.empty()) { - ::TDirectory::TContext ctxt(gDirectory); - std::unique_ptr f(TFile::Open(fFileNames[0].c_str())); - TIter next(f->GetListOfKeys()); - while (TKey *key = (TKey *)next()) { - const char *className = key->GetClassName(); - if (strcmp(className, "TTree") == 0) { - fTreeName = key->GetName(); - break; - } - } - if (fTreeName.empty()) { - auto msg = "Cannot find any tree in file " + fFileNames[0]; - throw std::runtime_error(msg); - } - } - } //////////////////////////////////////////////////////////////////////////////// /// Construct fChain, also adding friends if needed and injecting knowledge of offsets if available. - void MakeChain(const std::vector &fileNames, const std::vector &nEntries, + void MakeChain(const std::string &treeName, const std::vector &fileNames, + const FriendInfo &friendInfo, const std::vector &nEntries, const std::vector> &friendEntries) { - fChain.reset(new TChain(fTreeName.c_str())); + const std::vector &friendNames = friendInfo.fFriendNames; + const std::vector> &friendFileNames = friendInfo.fFriendFileNames; + + fChain.reset(new TChain(treeName.c_str())); const auto nFiles = fileNames.size(); for (auto i = 0u; i < nFiles; ++i) { fChain->Add(fileNames[i].c_str(), nEntries[i]); } fChain->ResetBit(TObject::kMustCleanup); - const auto nFriends = fFriendNames.size(); + fFriends.clear(); + const auto nFriends = friendNames.size(); for (auto i = 0u; i < nFriends; ++i) { - const auto &friendName = fFriendNames[i]; + const auto &friendName = friendNames[i]; const auto &name = friendName.first; const auto &alias = friendName.second; // Build a friend chain auto frChain = std::make_unique(name.c_str()); - const auto nFileNames = fFriendFileNames[i].size(); + const auto nFileNames = friendFileNames[i].size(); for (auto j = 0u; j < nFileNames; ++j) - frChain->Add(fFriendFileNames[i][j].c_str(), friendEntries[i][j]); + frChain->Add(friendFileNames[i][j].c_str(), friendEntries[i][j]); // Make it friends with the main chain fChain->AddFriend(frChain.get(), alias.c_str()); @@ -126,56 +112,21 @@ namespace ROOT { } } - //////////////////////////////////////////////////////////////////////////////// - /// Get and store the names, aliases and file names of the friends of the tree. - void StoreFriends(const TTree &tree, bool isTree) - { - auto friends = tree.GetListOfFriends(); - if (!friends) - return; - - for (auto fr : *friends) { - auto frTree = static_cast(fr)->GetTree(); - - // Check if friend tree has an alias - auto realName = frTree->GetName(); - auto alias = tree.GetFriendAlias(frTree); - if (alias) { - fFriendNames.emplace_back(std::make_pair(realName, std::string(alias))); - } else { - fFriendNames.emplace_back(std::make_pair(realName, "")); - } - - // Store the file names of the friend tree - fFriendFileNames.emplace_back(); - auto &fileNames = fFriendFileNames.back(); - if (isTree) { - auto f = frTree->GetCurrentFile(); - fileNames.emplace_back(f->GetName()); - } else { - auto frChain = static_cast(frTree); - for (auto f : *(frChain->GetListOfFiles())) { - fileNames.emplace_back(f->GetTitle()); - } - } - } - } - - TreeReaderEntryListPair MakeReaderWithEntryList(Long64_t start, Long64_t end) + TreeReaderEntryListPair MakeReaderWithEntryList(TEntryList &globalList, Long64_t start, Long64_t end) { // TEntryList and SetEntriesRange do not work together (the former has precedence). // We need to construct a TEntryList that contains only those entry numbers in our desired range. - auto elist = std::make_unique(); - Long64_t entry = fEntryList.GetEntry(0); + auto localList = std::make_unique(); + Long64_t entry = globalList.GetEntry(0); do { if (entry >= end) break; else if (entry >= start) - elist->Enter(entry); - } while ((entry = fEntryList.Next()) >= 0); + localList->Enter(entry); + } while ((entry = globalList.Next()) >= 0); - auto reader = std::make_unique(fChain.get(), elist.get()); - return std::make_pair(std::move(reader), std::move(elist)); + auto reader = std::make_unique(fChain.get(), localList.get()); + return std::make_pair(std::move(reader), std::move(localList)); } std::unique_ptr MakeReader(Long64_t start, Long64_t end) @@ -187,132 +138,30 @@ namespace ROOT { } public: - ////////////////////////////////////////////////////////////////////////// - /// Constructor based on a file name. - /// \param[in] fn Name of the file containing the tree to process. - /// \param[in] tn Name of the tree to process. If not provided, - /// the implementation will automatically search for a - /// tree in the file. - TTreeView(std::string_view fn, std::string_view tn) : fTreeName(tn) - { - fFileNames.emplace_back(fn); - GetTreeNameIfNeeded(); - } - - ////////////////////////////////////////////////////////////////////////// - /// Constructor based on a collection of file names. - /// \param[in] fns Collection of file names containing the tree to process. - /// \param[in] tn Name of the tree to process. If not provided, - /// the implementation will automatically search for a - /// tree in the collection of files. - TTreeView(const std::vector& fns, std::string_view tn) : fTreeName(tn) - { - if (fns.size() > 0) { - for (auto& fn : fns) - fFileNames.emplace_back(fn); - } - else { - auto msg = "The provided list of file names is empty, cannot process tree " + fTreeName; - throw std::runtime_error(msg); - } - GetTreeNameIfNeeded(); - } + TTreeView() {} - ////////////////////////////////////////////////////////////////////////// - /// Constructor based on a TTree. - /// \param[in] tree Tree or chain of files containing the tree to process. - TTreeView(TTree& tree) : fTreeName(tree.GetName()) - { - static const TClassRef clRefTChain("TChain"); - if (clRefTChain == tree.IsA()) { - TObjArray* filelist = static_cast(tree).GetListOfFiles(); - if (filelist->GetEntries() > 0) { - for (auto f : *filelist) - fFileNames.emplace_back(f->GetTitle()); - StoreFriends(tree, false); - } - else { - auto msg = "The provided chain of files is empty, cannot process tree " + fTreeName; - throw std::runtime_error(msg); - } - } - else { - TFile *f = tree.GetCurrentFile(); - if (f) { - fFileNames.emplace_back(f->GetName()); - StoreFriends(tree, true); - } - else { - auto msg = "The specified TTree is not linked to any file, in-memory-only trees are not supported. Cannot process tree " + fTreeName; - throw std::runtime_error(msg); - } - } - } - - ////////////////////////////////////////////////////////////////////////// - /// Constructor based on a TTree and a TEntryList. - /// \param[in] tree Tree or chain of files containing the tree to process. - /// \param[in] entries List of entry numbers to process. - TTreeView(TTree& tree, TEntryList& entries) : TTreeView(tree) - { - Long64_t numEntries = entries.GetN(); - for (Long64_t i = 0; i < numEntries; ++i) { - fEntryList.Enter(entries.GetEntry(i)); - } - } - - ////////////////////////////////////////////////////////////////////////// - /// Copy constructor. - /// \param[in] view Object to copy. - TTreeView(const TTreeView &view) : fTreeName(view.fTreeName), fEntryList(view.fEntryList) - { - for (auto& fn : view.fFileNames) - fFileNames.emplace_back(fn); - - for (auto &fn : view.fFriendNames) - fFriendNames.emplace_back(fn); - - for (auto &ffn : view.fFriendFileNames) { - fFriendFileNames.emplace_back(); - auto &fileNames = fFriendFileNames.back(); - for (auto &name : ffn) { - fileNames.emplace_back(name); - } - } - } + // no-op, we don't want to copy the local TChains + TTreeView(const TTreeView &) {} ////////////////////////////////////////////////////////////////////////// /// Get a TTreeReader for the current tree of this view. - TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::vector &fileNames, - const std::vector &nEntries, + TreeReaderEntryListPair GetTreeReader(Long64_t start, Long64_t end, const std::string &treeName, + const std::vector &fileNames, const FriendInfo &friendInfo, + TEntryList entryList, const std::vector &nEntries, const std::vector> &friendEntries) { - MakeChain(fileNames, nEntries, friendEntries); + MakeChain(treeName, fileNames, friendInfo, nEntries, friendEntries); std::unique_ptr reader; - std::unique_ptr elist; - if (fEntryList.GetN() > 0) { - std::tie(reader, elist) = MakeReaderWithEntryList(start, end); + std::unique_ptr localList; + if (entryList.GetN() > 0) { + std::tie(reader, localList) = MakeReaderWithEntryList(entryList, start, end); } else { reader = MakeReader(start, end); } // we need to return the entry list too, as it needs to be in scope as long as the reader is - return std::make_pair(std::move(reader), std::move(elist)); - } - - ////////////////////////////////////////////////////////////////////////// - /// Get the filenames for this view. - const std::vector &GetFileNames() const - { - return fFileNames; - } - - ////////////////////////////////////////////////////////////////////////// - /// Get the name of the tree of this view. - std::string GetTreeName() const - { - return fTreeName; + return std::make_pair(std::move(reader), std::move(localList)); } ////////////////////////////////////////////////////////////////////////// @@ -328,37 +177,29 @@ namespace ROOT { fChain->LoadTree(fLoadedEntries.back()); } } - - const std::vector &GetFriendNames() const - { - return fFriendNames; - } - - const std::vector> &GetFriendFileNames() const - { - return fFriendFileNames; - } - - const TEntryList &GetEntryList() const - { - return fEntryList; - } }; } // End of namespace Internal - class TTreeProcessorMT { private: + const std::vector fFileNames; ///< Names of the files + const std::string fTreeName; ///< Name of the tree + /// User-defined selection of entry numbers to be processed, empty if none was provided + const TEntryList fEntryList; + const Internal::FriendInfo fFriendInfo; + ROOT::TThreadedObject treeView; ///& filenames, std::string_view treename = ""); - TTreeProcessorMT(TTree& tree); - TTreeProcessorMT(TTree& tree, TEntryList& entries); - - void Process(std::function func); + TTreeProcessorMT(const std::vector &filenames, std::string_view treename = ""); + TTreeProcessorMT(TTree &tree, const TEntryList &entries); + TTreeProcessorMT(TTree &tree); + void Process(std::function func); }; } // End of namespace ROOT diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index e4d8a062fd22a..07efe42a88204 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -91,13 +91,93 @@ std::vector> GetFriendEntries(const std::vector friendNames; + std::vector> friendFileNames; + + const auto friends = tree.GetListOfFriends(); + if (!friends) + return Internal::FriendInfo{}; + + for (auto fr : *friends) { + const auto frTree = static_cast(fr)->GetTree(); + + // Check if friend tree has an alias + const auto realName = frTree->GetName(); + const auto alias = tree.GetFriendAlias(frTree); + if (alias) { + friendNames.emplace_back(std::make_pair(realName, std::string(alias))); + } else { + friendNames.emplace_back(std::make_pair(realName, "")); + } + + // Store the file names of the friend tree + friendFileNames.emplace_back(); + auto &fileNames = friendFileNames.back(); + const bool isChain = tree.IsA() == TClassRef("TChain"); + if (isChain) { + const auto frChain = static_cast(frTree); + for (auto f : *(frChain->GetListOfFiles())) { + fileNames.emplace_back(f->GetTitle()); + } + } else { + const auto f = frTree->GetCurrentFile(); + fileNames.emplace_back(f->GetName()); + } + } + + return Internal::FriendInfo{std::move(friendNames), std::move(friendFileNames)}; +} + +//////////////////////////////////////////////////////////////////////////////// +/// Retrieve the name of the first TTree in the first input file, else throw. +std::string TTreeProcessorMT::GetTreeName() +{ + std::string treeName; + + if (fFileNames.empty()) + throw std::runtime_error("Empty list of files and no tree name provided"); + + ::TDirectory::TContext ctxt(gDirectory); + std::unique_ptr f(TFile::Open(fFileNames[0].c_str())); + TIter next(f->GetListOfKeys()); + while (TKey *key = (TKey *)next()) { + const char *className = key->GetClassName(); + if (strcmp(className, "TTree") == 0) { + treeName = key->GetName(); + break; + } + } + if (treeName.empty()) + throw std::runtime_error("Cannot find any tree in file " + fFileNames[0]); + + return treeName; +} + //////////////////////////////////////////////////////////////////////// /// Constructor based on a file name. /// \param[in] filename Name of the file containing the tree to process. /// \param[in] treename Name of the tree to process. If not provided, /// the implementation will automatically search for a /// tree in the file. -TTreeProcessorMT::TTreeProcessorMT(std::string_view filename, std::string_view treename) : treeView(filename, treename) {} +TTreeProcessorMT::TTreeProcessorMT(std::string_view filename, std::string_view treename) + : fFileNames({std::string(filename)}), fTreeName(treename.empty() ? GetTreeName() : treename) {} + +std::vector CheckAndConvert(const std::vector & views) +{ + if (views.empty()) + throw std::runtime_error("The provided list of file names is empty"); + + std::vector strings; + strings.reserve(views.size()); + for (const auto &v : views) + strings.emplace_back(v); + return strings; +} //////////////////////////////////////////////////////////////////////// /// Constructor based on a collection of file names. @@ -105,18 +185,47 @@ TTreeProcessorMT::TTreeProcessorMT(std::string_view filename, std::string_view t /// \param[in] treename Name of the tree to process. If not provided, /// the implementation will automatically search for a /// tree in the collection of files. -TTreeProcessorMT::TTreeProcessorMT(const std::vector &filenames, std::string_view treename) : treeView(filenames, treename) {} +TTreeProcessorMT::TTreeProcessorMT(const std::vector &filenames, std::string_view treename) + : fFileNames(CheckAndConvert(filenames)), fTreeName(treename.empty() ? GetTreeName() : treename) {} -//////////////////////////////////////////////////////////////////////// -/// Constructor based on a TTree. -/// \param[in] tree Tree or chain of files containing the tree to process. -TTreeProcessorMT::TTreeProcessorMT(TTree &tree) : treeView(tree) {} +std::vector GetFilesFromTree(TTree &tree) +{ + std::vector filenames; + + const bool isChain = tree.IsA() == TClassRef("TChain"); + if (isChain) { + TObjArray *filelist = static_cast(tree).GetListOfFiles(); + const auto nFiles = filelist->GetEntries(); + if (nFiles == 0) + throw std::runtime_error("The provided chain of files is empty"); + filenames.reserve(nFiles); + for (auto f : *filelist) + filenames.emplace_back(f->GetTitle()); + } else { + TFile *f = tree.GetCurrentFile(); + if (!f) { + const auto msg = "The specified TTree is not linked to any file, in-memory-only trees are not supported."; + throw std::runtime_error(msg); + } + + filenames.emplace_back(f->GetName()); + } + + return filenames; +} //////////////////////////////////////////////////////////////////////// /// Constructor based on a TTree and a TEntryList. /// \param[in] tree Tree or chain of files containing the tree to process. /// \param[in] entries List of entry numbers to process. -TTreeProcessorMT::TTreeProcessorMT(TTree &tree, TEntryList &entries) : treeView(tree, entries) {} +TTreeProcessorMT::TTreeProcessorMT(TTree &tree, const TEntryList &entries) + : fFileNames(GetFilesFromTree(tree)), fTreeName(tree.GetName()), fEntryList(entries), + fFriendInfo(GetFriendInfo(tree)) {} + +//////////////////////////////////////////////////////////////////////// +/// Constructor based on a TTree. +/// \param[in] tree Tree or chain of files containing the tree to process. +TTreeProcessorMT::TTreeProcessorMT(TTree &tree) : TTreeProcessorMT(tree, TEntryList()) {} ////////////////////////////////////////////////////////////////////////////// /// Process the entries of a TTree in parallel. The user-provided function @@ -137,21 +246,22 @@ TTreeProcessorMT::TTreeProcessorMT(TTree &tree, TEntryList &entries) : treeView( /// \param[in] func User-defined function that processes a subrange of entries void TTreeProcessorMT::Process(std::function func) { + const std::vector &friendNames = fFriendInfo.fFriendNames; + const std::vector> &friendFileNames = fFriendInfo.fFriendFileNames; + // If an entry list or friend trees are present, we need to generate clusters with global entry numbers, // so we do it here for all files. - const bool hasFriends = !treeView->GetFriendNames().empty(); - const bool hasEntryList = treeView->GetEntryList().GetN() > 0; + const bool hasFriends = !friendNames.empty(); + const bool hasEntryList = fEntryList.GetN() > 0; const bool shouldRetrieveAllClusters = hasFriends || hasEntryList; - const auto clustersAndEntries = shouldRetrieveAllClusters - ? Internal::MakeClusters(treeView->GetTreeName(), treeView->GetFileNames()) - : Internal::ClustersAndEntries{}; + const auto clustersAndEntries = + shouldRetrieveAllClusters ? Internal::MakeClusters(fTreeName, fFileNames) : Internal::ClustersAndEntries{}; const auto &clusters = clustersAndEntries.first; const auto &entries = clustersAndEntries.second; // Retrieve number of entries for each file for each friend tree const auto friendEntries = - hasFriends ? Internal::GetFriendEntries(treeView->GetFriendNames(), treeView->GetFriendFileNames()) - : std::vector>{}; + hasFriends ? Internal::GetFriendEntries(friendNames, friendFileNames) : std::vector>{}; TThreadExecutor pool; // Parent task, spawns tasks that process each of the entry clusters for each input file @@ -162,12 +272,10 @@ void TTreeProcessorMT::Process(std::function func) // Otherwise get cluster information only for the file we need to process and use local entry numbers const bool shouldUseGlobalEntries = hasFriends || hasEntryList; // theseFiles contains either all files or just the single file to process - const auto &theseFiles = shouldUseGlobalEntries ? treeView->GetFileNames() - : std::vector({treeView->GetFileNames()[fileIdx]}); + const auto &theseFiles = shouldUseGlobalEntries ? fFileNames : std::vector({fFileNames[fileIdx]}); // Evaluate clusters (with local entry numbers) and number of entries for this file, if needed - const auto theseClustersAndEntries = shouldUseGlobalEntries - ? Internal::ClustersAndEntries{} - : Internal::MakeClusters(treeView->GetTreeName(), theseFiles); + const auto theseClustersAndEntries = + shouldUseGlobalEntries ? Internal::ClustersAndEntries{} : Internal::MakeClusters(fTreeName, theseFiles); // All clusters for the file to process, either with global or local entry numbers const auto &thisFileClusters = shouldUseGlobalEntries ? clusters[fileIdx] : theseClustersAndEntries.first[0]; @@ -182,7 +290,8 @@ void TTreeProcessorMT::Process(std::function func) std::unique_ptr reader; std::unique_ptr elist; - std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, theseFiles, theseEntries, friendEntries); + std::tie(reader, elist) = treeView->GetTreeReader(c.start, c.end, fTreeName, theseFiles, fFriendInfo, + fEntryList, theseEntries, friendEntries); func(*reader); // In case of task interleaving, we need to load here the tree of the parent task @@ -192,7 +301,7 @@ void TTreeProcessorMT::Process(std::function func) pool.Foreach(processCluster, thisFileClusters); }; - std::vector fileIdxs(treeView->GetFileNames().size()); + std::vector fileIdxs(fFileNames.size()); std::iota(fileIdxs.begin(), fileIdxs.end(), 0u); // Enable this IMT use case (activate its locks) From 9ccf84a38bfce8a06b878b2d39120ffd2431fa09 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 6 Jun 2018 18:07:03 +0200 Subject: [PATCH 070/344] [TREEPROCMT] Avoid needless reconstruction of TChains ...when we are using global entry numbers and therefore each thread-local TChain has already been constructed with all files. --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 2df39a6d95400..b1744ee1e11d0 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -150,7 +150,9 @@ namespace ROOT { TEntryList entryList, const std::vector &nEntries, const std::vector> &friendEntries) { - MakeChain(treeName, fileNames, friendInfo, nEntries, friendEntries); + const bool usingLocalEntries = friendInfo.fFriendNames.empty() && entryList.GetN() == 0; + if (usingLocalEntries || fChain == nullptr) + MakeChain(treeName, fileNames, friendInfo, nEntries, friendEntries); std::unique_ptr reader; std::unique_ptr localList; From 80de1a16435d4744e91ca21c373dec8afc2cd8f6 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 15:44:09 +0200 Subject: [PATCH 071/344] [TREEPROC][NFC] Rename GetTreeName -> FindTreeName --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 2 +- tree/treeplayer/src/TTreeProcessorMT.cxx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index b1744ee1e11d0..7e31a7ac69a73 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -193,7 +193,7 @@ namespace ROOT { ROOT::TThreadedObject treeView; /// CheckAndConvert(const std::vector & views) { @@ -186,7 +186,7 @@ std::vector CheckAndConvert(const std::vector & v /// the implementation will automatically search for a /// tree in the collection of files. TTreeProcessorMT::TTreeProcessorMT(const std::vector &filenames, std::string_view treename) - : fFileNames(CheckAndConvert(filenames)), fTreeName(treename.empty() ? GetTreeName() : treename) {} + : fFileNames(CheckAndConvert(filenames)), fTreeName(treename.empty() ? FindTreeName() : treename) {} std::vector GetFilesFromTree(TTree &tree) { From c254d5095eafa3e7285bb877eecee2e4f12fa6e1 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 15:44:28 +0200 Subject: [PATCH 072/344] [TREEPROCMT][NFC] Add comment on support for friends of friends --- tree/treeplayer/src/TTreeProcessorMT.cxx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 5b241556e631f..52a75afe5ba24 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -94,6 +94,8 @@ std::vector> GetFriendEntries(const std::vector friendNames; From 71d45463f4522f97e11ef5a40bb2a126b24f2bbb Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 15:47:02 +0200 Subject: [PATCH 073/344] [TREEPROCMT] Faster check for TTree/TChain --- tree/treeplayer/src/TTreeProcessorMT.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 52a75afe5ba24..62852f1341e03 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -120,7 +120,7 @@ Internal::FriendInfo TTreeProcessorMT::GetFriendInfo(TTree &tree) // Store the file names of the friend tree friendFileNames.emplace_back(); auto &fileNames = friendFileNames.back(); - const bool isChain = tree.IsA() == TClassRef("TChain"); + const bool isChain = tree.IsA() == TChain::Class(); if (isChain) { const auto frChain = static_cast(frTree); for (auto f : *(frChain->GetListOfFiles())) { @@ -194,7 +194,7 @@ std::vector GetFilesFromTree(TTree &tree) { std::vector filenames; - const bool isChain = tree.IsA() == TClassRef("TChain"); + const bool isChain = tree.IsA() == TChain::Class(); if (isChain) { TObjArray *filelist = static_cast(tree).GetListOfFiles(); const auto nFiles = filelist->GetEntries(); From c000cad8c5ea22ff18cfec5ac4844df8e2c06b10 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 7 Jun 2018 22:21:15 +0200 Subject: [PATCH 074/344] [TREEPROCMT][NFC] Avoid "missing initializer" warnings on gcc4.8 --- tree/treeplayer/src/TTreeProcessorMT.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index 62852f1341e03..b0fd0b31aaf22 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -103,7 +103,7 @@ Internal::FriendInfo TTreeProcessorMT::GetFriendInfo(TTree &tree) const auto friends = tree.GetListOfFriends(); if (!friends) - return Internal::FriendInfo{}; + return Internal::FriendInfo(); for (auto fr : *friends) { const auto frTree = static_cast(fr)->GetTree(); From 096f91305abf41451c055e65cde731ceb0771620 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 8 Jun 2018 09:31:41 +0200 Subject: [PATCH 075/344] TPad.hxx is not needed --- graf2d/primitives/v7/inc/ROOT/TLine.hxx | 1 - graf2d/primitives/v7/inc/ROOT/TMarker.hxx | 1 - graf2d/primitives/v7/inc/ROOT/TText.hxx | 1 - 3 files changed, 3 deletions(-) diff --git a/graf2d/primitives/v7/inc/ROOT/TLine.hxx b/graf2d/primitives/v7/inc/ROOT/TLine.hxx index 1f038590c8f4a..6bdd4705b2f5a 100644 --- a/graf2d/primitives/v7/inc/ROOT/TLine.hxx +++ b/graf2d/primitives/v7/inc/ROOT/TLine.hxx @@ -20,7 +20,6 @@ #include #include #include -#include #include #include diff --git a/graf2d/primitives/v7/inc/ROOT/TMarker.hxx b/graf2d/primitives/v7/inc/ROOT/TMarker.hxx index 32c28ca8b612a..8a58f10adf967 100644 --- a/graf2d/primitives/v7/inc/ROOT/TMarker.hxx +++ b/graf2d/primitives/v7/inc/ROOT/TMarker.hxx @@ -20,7 +20,6 @@ #include #include #include -#include #include #include diff --git a/graf2d/primitives/v7/inc/ROOT/TText.hxx b/graf2d/primitives/v7/inc/ROOT/TText.hxx index d75f0d85dcd13..7d77580ed41fa 100644 --- a/graf2d/primitives/v7/inc/ROOT/TText.hxx +++ b/graf2d/primitives/v7/inc/ROOT/TText.hxx @@ -20,7 +20,6 @@ #include #include #include -#include #include #include From f8233f67e86eaf55dc418625136c4ba05d38e730 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 8 Jun 2018 12:58:31 +0200 Subject: [PATCH 076/344] Prevent GCC8 warnings. Fix suggested by Timur. --- graf3d/gl/src/TGLPadUtils.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/graf3d/gl/src/TGLPadUtils.cxx b/graf3d/gl/src/TGLPadUtils.cxx index 31ee96759a97e..86dbcf0926d25 100644 --- a/graf3d/gl/src/TGLPadUtils.cxx +++ b/graf3d/gl/src/TGLPadUtils.cxx @@ -1170,6 +1170,11 @@ Tesselator::Tesselator(Bool_t dump) if (!tess) throw std::runtime_error("tesselator creation failed"); +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + if (!dump) { gluTessCallback(tess, (GLenum)GLU_BEGIN, (tess_t) glBegin); gluTessCallback(tess, (GLenum)GLU_END, (tess_t) glEnd); @@ -1180,6 +1185,10 @@ Tesselator::Tesselator(Bool_t dump) gluTessCallback(tess, (GLenum)GLU_VERTEX, (tess_t) Vertex); } +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + gluTessProperty(tess, GLU_TESS_TOLERANCE, 1e-10); fTess = tess; } From 08c12c77405e809b2ba4490fc444e210359c6ee1 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 8 Jun 2018 15:56:28 +0200 Subject: [PATCH 077/344] [TREEPROCMT] Do not rebuild chain if the processed file is the same --- tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx index 7e31a7ac69a73..4ac58dc44cd2f 100644 --- a/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx +++ b/tree/treeplayer/inc/ROOT/TTreeProcessorMT.hxx @@ -151,7 +151,7 @@ namespace ROOT { const std::vector> &friendEntries) { const bool usingLocalEntries = friendInfo.fFriendNames.empty() && entryList.GetN() == 0; - if (usingLocalEntries || fChain == nullptr) + if (fChain == nullptr || (usingLocalEntries && fileNames[0] != fChain->GetListOfFiles()->At(0)->GetTitle())) MakeChain(treeName, fileNames, friendInfo, nEntries, friendEntries); std::unique_ptr reader; From 019822bcd8f7765cb6b654d7780f1234cfe8aff1 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Fri, 8 Jun 2018 15:10:57 -0500 Subject: [PATCH 078/344] Update release notes --- README/ReleaseNotes/v614/index.md | 112 +++++++++++++++++------------- 1 file changed, 62 insertions(+), 50 deletions(-) diff --git a/README/ReleaseNotes/v614/index.md b/README/ReleaseNotes/v614/index.md index 41230dc8a44b5..98a6ce4fb2832 100644 --- a/README/ReleaseNotes/v614/index.md +++ b/README/ReleaseNotes/v614/index.md @@ -18,23 +18,34 @@ The following people have contributed to this new version: Brian Bockelman, UNL,\ Rene Brun, CERN/SFT,\ Philippe Canal, FNAL,\ - David Clark, ANL (SULI),\ Olivier Couet, CERN/SFT,\ Gerri Ganis, CERN/SFT,\ Andrei Gheata, CERN/SFT,\ Enrico Guiraud, CERN/SFT,\ + Raphael Isemann, Chalmers Univ. of Tech.,\ Sergey Linev, GSI,\ - Timur Pocheptsov, CERN/SFT,\ Pere Mato, CERN/SFT,\ Lorenzo Moneta, CERN/SFT,\ Axel Naumann, CERN/SFT,\ Danilo Piparo, CERN/SFT,\ Fons Rademakers, CERN/SFT,\ Enric Tejedor Saavedra, CERN/SFT,\ - Peter van Gemmeren, ANL,\ - Vassil Vassilev, Princeton/CMS,\ Oksana Shadura, UNL,\ - Wouter Verkerke, NIKHEF/Atlas, RooFit + Vassil Vassilev, Princeton/CMS,\ + Wouter Verkerke, NIKHEF/Atlas, RooFit,\ + Zhe Zhang, UNL + +## Important Notice + +The default compression algorithm used when writing ROOT files has been updated to use LZ4 in particular to improve read (decompression) performance. You can change this default for each file through (for example) the `TFile constructor` or `TFile::SetCompressionAlgorithm`. + +It should be noted that ROOT files written with LZ4 compression can not be read with older release of ROOT. Support for LZ4 was however back-ported to the patch branches of previous releases and the following tags (and later release in the same patch series) can read ROOT files written with LZ4 compression: + +* v5.34/38 +* v6.08/06 [not yet released] +* v6.10/08 +* v6.12/02 + ## Removed interfaces @@ -45,16 +56,29 @@ The following people have contributed to this new version: - In `TClingCallFunc`, support r-value reference parameters. This paves the way for the corresponding support in PyROOT (implemented now in the latest Cppyy). - Included the new TSequentialExecutor in ROOT, sharing the interfaces of TExecutor.This should improve code economy when providing a fallback for TThreadExecutor/TProcessExecutor. +### Thread safety + - Resolved several race conditions, dead-locks, performance and order of initialization/destruction issues still lingering because of or despite the new read-write lock mechanism. + +## Interpreter + + - Enabled use of multi-threaded code from the interpreter. + - Previouslyl multi-threaded code could be run from the interpreter as long as the call starting the threada was the same code that initialized the ROOT global lock, any other uses, including attempting to run the same code a second time in the same session would lead to a dead lock (if any other thread attempted to take on the ROOT lock). + - The interpreter now suspend the ROOT lock (which is taken to protect the interpreter global state) during user code execution. + ## I/O Libraries - LZ4 (with compression level 4) is now the default compression algorithm for new ROOT files (LZ4 is lossless data compression algorithm that is focused on compression and decompression speed, while in ROOT case providing benefit in faster decompression at the price of a bit worse compression ratio comparing to ZLIB) + - Allow writing temporary objects (with same address) in the same TBuffer(s). A new flag to TBuffer*::WriteObject allows to skip the mechanism that prevent the 2nd streaming of an object. This allows the (re)use of temporary objects to store different data in the same buffer. + - Reuse branch proxies internally used by TTreeReader{Value,Array} therewith increasing performance when having multiple readers pointing to the same branch. - Implement reading of objects data from JSON - Provide TBufferJSON::ToJSON() and TBufferJSON::FromJSON() methods - Provide TBufferXML::ToXML() and TBufferXML::FromXML() methods - Converts NaN and Infinity values into null in JSON, there are no other direct equivalent ## TTree Libraries + - Enable the TTreeCache by default of `TTree::Draw`, `TTreeReader` and `RDataFrame` + - Significant enhancement in the `TTreeCache` filling algorithm to increase robustness in case of oddly clustered `TTree` and under provisioned cache size. See the [merge request](https://github.com/root-project/root/pull/1960) for more details. - Proxies are now properly re-used when multiple TTreeReader{Value,Array}s are associated to a single branch. Deserialisation is therefore performed once. This is an advantage for complex TDataFrame graphs. - - Add TBranch::BackFill to allowing the addition of new branches to an existing tree and keep the new basket clustered in the same way as the rest of the TTree. Use with the following pattern, + - Add TBranch::BackFill to allow the addition of new branches to an existing tree and keep the new basket clustered in the same way as the rest of the TTree. Use with the following pattern, make sure to to call BackFill for the same entry for all the branches consecutively: ``` for(auto e = 0; e < tree->GetEntries(); ++e) { // loop over entries. @@ -66,8 +90,16 @@ The following people have contributed to this new version: ``` Since we loop over all the branches for each new entry all the baskets for a cluster are consecutive in the file. -### TDataFrame - - Histograms and profiles returned by TDataFrame (e.g. by a Histo1D action) are now not associated to a ROOT directory (their fDirectory is a nullptr). +### RDataFrame (formerly TDataFrame) +#### Behaviour, interface and naming changes + - `TDataFrame` and `TDataSource` together with their federation of classes have been renamed according to the coding conventions for new interfaces and extracted from the `Experimental` namespace: they can now be found in the ROOT namespace and they are called `ROOT::RDataFrame` and `ROOT::RDataSource`. + - `ROOT::Experimental::TDF::TResultProxy` has been renamed to `ROOT::RDF::RResultPtr`. + - `Report` now behaves identically to all other actions: it executes lazily and returns a `RResultPtr` (see the `New features` section for more details). + - `Snapshot` now returns a `RResultPtr` like all other actions: specifically, this is a pointer to a new `RDataFrame` which will run on the snapshotted dataset. + - `RDataFrame` has been removed from tree/treeplayer and put in its own package, tree/dataframe. The library where this code can be found is `libROOTDataFrame`. This new library is included in the list provided by `root-config --libs`. + - The `TArrayBranch` class has been removed and replaced by the more powerful `RVec` (see the `New features` section for more details). + - All `RDataFrame` tutorials are now prefixed with `df` rather than `tdf`. + - Histograms and profiles returned by RDataFrame (e.g. by a Histo1D action) are now not associated to a ROOT directory (their fDirectory is a nullptr). The following still works as expected: ``` auto h = tdf.Histo1D("x"); @@ -233,48 +265,28 @@ Upgrade JSROOT to v5.4.1. Following new features implemented: ## Build System and Configuration -CMake exported targets now have the `INTERFACE_INCLUDE_DIRECTORIES` property set -([ROOT-8062](https://sft.its.cern.ch/jira/browse/ROOT-8062)). - -The `-fPIC` compile flag is no longer propagated to dependent projects via -`CMAKE_CXX_FLAGS` ([ROOT-9212](https://sft.its.cern.ch/jira/browse/ROOT-9212)). - -Several builtins have updated versions: - -- OpenSSL was updated from 1.0.2d to 1.0.2.o (latest lts release, - [ROOT-9359](https://sft.its.cern.ch/jira/browse/ROOT-9359)) -- Davix was updated from 0.6.4 to 0.6.7 (support for OpenSSL 1.1, - [ROOT-9353](https://sft.its.cern.ch/jira/browse/ROOT-9353)) -- Vdt has been updated from 0.3.9 to 0.4.1 (includes new atan function) -- XRootd has been updated from 4.6.1 to 4.8.2 (for GCC 8.x support) -- Builtin TBB can now be used on Windows -- xxHash and LZ4 have been separated so that a system version of LZ4 - can be used even if it does not include xxHash headers - ([ROOT-9099](https://sft.its.cern.ch/jira/browse/ROOT-9099)) - -In addition, several updates have been made to fix minor build system issues, -such as not checking for external packages if their builtin is turned off, or -checking for packages even when the respective option is disabled -([ROOT-8806](https://sft.its.cern.ch/jira/browse/ROOT-8806), -[ROOT-9190](https://sft.its.cern.ch/jira/browse/ROOT-9190), -[ROOT-9315](https://sft.its.cern.ch/jira/browse/ROOT-9315), -[ROOT-9385](https://sft.its.cern.ch/jira/browse/ROOT-9385)). - -The `python3` option to CMake has been removed -([ROOT-9033](https://sft.its.cern.ch/jira/browse/ROOT-9033), -[ROOT-9143](https://sft.its.cern.ch/jira/browse/ROOT-9143)). Python support is -enabled by default. To configure ROOT to use specific Python versions, there is -a new option called `python_version`. This is how to configure ROOT and Python -for the common use cases: - -* Use the default Python interpreter: - - `-Dpython=ON` (default) -* Search only for Python 2.x or only 3.x: - - `-Dpython_version=2` or `-Dpython_version=3` -* Use a specific version of Python from `$PATH`: - - `-Dpython_version=2.7` or `-Dpython_version=3.5` -* Use a specific Python interpreter, whatever the version: - - `-DPYTHON_EXECUTABLE=/usr/local/bin/python` + - ROOT can now be built against an externally built llvm and clang (llvm can be used unpatched, clang still require ROOT specific patches). The options are builtin_llvm and builtin_clang both defaulting to ON. + - Update RConfigure.h with R__HAS__VDT if the package is found/builtin + - CMake exported targets now have the `INTERFACE_INCLUDE_DIRECTORIES` property set ([ROOT-8062](https://sft.its.cern.ch/jira/browse/ROOT-8062)). + - The `-fPIC` compile flag is no longer propagated to dependent projects via `CMAKE_CXX_FLAGS` ([ROOT-9212](https://sft.its.cern.ch/jira/browse/ROOT-9212)). + - Several builtins have updated versions: + - OpenSSL was updated from 1.0.2d to 1.0.2.o (latest lts release, [ROOT-9359](https://sft.its.cern.ch/jira/browse/ROOT-9359)) + - Davix was updated from 0.6.4 to 0.6.7 (support for OpenSSL 1.1, [ROOT-9353](https://sft.its.cern.ch/jira/browse/ROOT-9353)) + - Vdt has been updated from 0.3.9 to 0.4.1 (includes new atan function) + - XRootd has been updated from 4.6.1 to 4.8.2 (for GCC 8.x support) + - Builtin TBB can now be used on Windows + - xxHash and LZ4 have been separated so that a system version of LZ4 can be used even if it does not include xxHash headers ([ROOT-9099](https://sft.its.cern.ch/jira/browse/ROOT-9099)) + - In addition, several updates have been made to fix minor build system issues, such as not checking for external packages if their builtin is turned off, or checking for packages even when the respective option is disabled ([ROOT-8806](https://sft.its.cern.ch/jira/browse/ROOT-8806), [ROOT-9190](https://sft.its.cern.ch/jira/browse/ROOT-9190), [ROOT-9315](https://sft.its.cern.ch/jira/browse/ROOT-9315), [ROOT-9385](https://sft.its.cern.ch/jira/browse/ROOT-9385)). + - The `python3` option to CMake has been removed ([ROOT-9033](https://sft.its.cern.ch/jira/browse/ROOT-9033), [ROOT-9143](https://sft.its.cern.ch/jira/browse/ROOT-9143)). Python support is enabled by default. To configure ROOT to use specific Python versions, there is a new option called `python_version`. This is how to configure ROOT and Python for the common use cases: + + * Use the default Python interpreter: + - `-Dpython=ON` (default) + * Search only for Python 2.x or only 3.x: + - `-Dpython_version=2` or `-Dpython_version=3` + * Use a specific version of Python from `$PATH`: + - `-Dpython_version=2.7` or `-Dpython_version=3.5` + * Use a specific Python interpreter, whatever the version: + - `-DPYTHON_EXECUTABLE=/usr/local/bin/python` Note: The use of `PYTHON_EXECUTABLE` requires the full path to the interpreter. From 08ea74a76ec1fb61f9feb6c6b1309c966a902535 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sat, 9 Jun 2018 12:03:35 +0200 Subject: [PATCH 079/344] [TREEPROCMT] Explicitly initialize fFriendInfo in ctors This should fix clang's compilation error: "constructor for 'ROOT::TTreeProcessorMT' must explicitly initialize the const member 'fFriendInfo'" --- tree/treeplayer/src/TTreeProcessorMT.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/treeplayer/src/TTreeProcessorMT.cxx b/tree/treeplayer/src/TTreeProcessorMT.cxx index b0fd0b31aaf22..da3e923a152f0 100644 --- a/tree/treeplayer/src/TTreeProcessorMT.cxx +++ b/tree/treeplayer/src/TTreeProcessorMT.cxx @@ -167,7 +167,7 @@ std::string TTreeProcessorMT::FindTreeName() /// the implementation will automatically search for a /// tree in the file. TTreeProcessorMT::TTreeProcessorMT(std::string_view filename, std::string_view treename) - : fFileNames({std::string(filename)}), fTreeName(treename.empty() ? FindTreeName() : treename) {} + : fFileNames({std::string(filename)}), fTreeName(treename.empty() ? FindTreeName() : treename), fFriendInfo() {} std::vector CheckAndConvert(const std::vector & views) { @@ -188,7 +188,7 @@ std::vector CheckAndConvert(const std::vector & v /// the implementation will automatically search for a /// tree in the collection of files. TTreeProcessorMT::TTreeProcessorMT(const std::vector &filenames, std::string_view treename) - : fFileNames(CheckAndConvert(filenames)), fTreeName(treename.empty() ? FindTreeName() : treename) {} + : fFileNames(CheckAndConvert(filenames)), fTreeName(treename.empty() ? FindTreeName() : treename), fFriendInfo() {} std::vector GetFilesFromTree(TTree &tree) { From 431d65ad38b04b6e196784b56d512e410defe4b7 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 10 Jun 2018 15:14:06 +0200 Subject: [PATCH 080/344] [DF] Use different filenames in python and C tutorials Lest they step on each other's feet when running all tutorials e.g. via ctest. --- tutorials/dataframe/df003_profiles.py | 2 +- tutorials/dataframe/df008_createDataSetFromScratch.py | 2 +- tutorials/dataframe/df017_vecOpsHEP.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/dataframe/df003_profiles.py b/tutorials/dataframe/df003_profiles.py index 75ed348151f1c..2f67121c41cb2 100644 --- a/tutorials/dataframe/df003_profiles.py +++ b/tutorials/dataframe/df003_profiles.py @@ -25,7 +25,7 @@ def fill_tree(treeName, fileName): # We prepare an input tree to run on -fileName = "df003_profiles.root" +fileName = "df003_profiles_py.root" treeName = "myTree" fill_tree(treeName, fileName) diff --git a/tutorials/dataframe/df008_createDataSetFromScratch.py b/tutorials/dataframe/df008_createDataSetFromScratch.py index d2ad24528fa7f..df8bf213ccc8b 100644 --- a/tutorials/dataframe/df008_createDataSetFromScratch.py +++ b/tutorials/dataframe/df008_createDataSetFromScratch.py @@ -17,5 +17,5 @@ tdf_1 = tdf.Define("rnd", "gRandom->Gaus()") # And we write out the dataset on disk -tdf_1.Snapshot("randomNumbers", "df008_createDataSetFromScratch.root") +tdf_1.Snapshot("randomNumbers", "df008_createDataSetFromScratch_py.root") diff --git a/tutorials/dataframe/df017_vecOpsHEP.py b/tutorials/dataframe/df017_vecOpsHEP.py index a824ac0cc9f96..619cb9adc0a19 100644 --- a/tutorials/dataframe/df017_vecOpsHEP.py +++ b/tutorials/dataframe/df017_vecOpsHEP.py @@ -11,7 +11,7 @@ import ROOT from math import sqrt -filename = ROOT.gROOT.GetTutorialDir().Data() + "/dataframe/df017_vecOpsHEP.root" +filename = ROOT.gROOT.GetTutorialDir().Data() + "/dataframe/df017_vecOpsHEP_py.root" treename = "myDataset" RDF = ROOT.ROOT.RDataFrame From 09f4a172d9ad039247adc3e6468e07a6575d6a58 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Mon, 11 Jun 2018 10:05:08 +0200 Subject: [PATCH 081/344] Fix gcc8 warnings (see https://sft.its.cern.ch/jira/browse/ROOT-9433) (#2170) --- graf2d/gpad/src/TCanvas.cxx | 2 +- graf2d/graf/src/TCandle.cxx | 16 ++-- graf2d/graf/src/TGaxis.cxx | 13 ++-- graf2d/graf/src/TGraphPolargram.cxx | 4 +- graf3d/gl/src/TGLUtil.cxx | 50 ++++++++++++ hist/hist/src/TF1.cxx | 10 +-- hist/hist/src/THStack.cxx | 20 ++--- hist/hist/src/TMultiGraph.cxx | 6 +- hist/histpainter/src/TGraphPainter.cxx | 12 +-- hist/histpainter/src/THistPainter.cxx | 104 ++++++++++++------------- hist/histpainter/src/TPaletteAxis.cxx | 6 +- 11 files changed, 147 insertions(+), 96 deletions(-) diff --git a/graf2d/gpad/src/TCanvas.cxx b/graf2d/gpad/src/TCanvas.cxx index 599a5b4a4add8..d9d305754322c 100644 --- a/graf2d/gpad/src/TCanvas.cxx +++ b/graf2d/gpad/src/TCanvas.cxx @@ -1771,7 +1771,7 @@ void TCanvas::SaveSource(const char *filename, Option_t *option) } fname = new char[nch+3]; strlcpy(fname,cname,nch+3); - strncat(fname,".C",2); + strncat(fname,".C",3); out.open(fname, std::ios::out); } if (!out.good ()) { diff --git a/graf2d/graf/src/TCandle.cxx b/graf2d/graf/src/TCandle.cxx index d3e59ad8c7724..a13b5b0d82909 100644 --- a/graf2d/graf/src/TCandle.cxx +++ b/graf2d/graf/src/TCandle.cxx @@ -277,11 +277,11 @@ int TCandle::ParseOption(char * opt) { fOption = (CandleOption)(fOption + fallbackCandle); if (preset != ' ' && direction != ' ') - strncpy(l," ",8); + memcpy(l," ",8); else if (preset != ' ' || direction != ' ') - strncpy(l," ",7); + memcpy(l," ",7); else - strncpy(l," ",6); + memcpy(l," ",6); Bool_t useIndivOption = false; @@ -296,7 +296,7 @@ int TCandle::ParseOption(char * opt) { strlcpy(indivOption, brOpen, brClose-brOpen+2); //Now the string "(....)" including brackets is in this array sscanf(indivOption,"(%d)", (int*) &fOption); if (isHorizontal) {fOption = (CandleOption)(fOption + kHorizontal);} - strncpy(brOpen," ",brClose-brOpen+1); //Cleanup + memcpy(brOpen," ",brClose-brOpen+1); //Cleanup sprintf(fOptionStr,"CANDLE%c(%ld)",direction,(long)fOption); } else { @@ -335,11 +335,11 @@ int TCandle::ParseOption(char * opt) { fOption = (CandleOption)(fOption + fallbackCandle); if (preset != ' ' && direction != ' ') - strncpy(l," ",8); + memcpy(l," ",8); else if (preset != ' ' || direction != ' ') - strncpy(l," ",7); + memcpy(l," ",7); else - strncpy(l," ",6); + memcpy(l," ",6); Bool_t useIndivOption = false; @@ -354,7 +354,7 @@ int TCandle::ParseOption(char * opt) { strlcpy(indivOption, brOpen, brClose-brOpen +2); //Now the string "(....)" including brackets is in this array sscanf(indivOption,"(%d)", (int*) &fOption); if (isHorizontal) {fOption = (CandleOption)(fOption + kHorizontal);} - strncpy(brOpen," ",brClose-brOpen+1); //Cleanup + memcpy(brOpen," ",brClose-brOpen+1); //Cleanup sprintf(fOptionStr,"VIOLIN%c(%ld)",direction,(long)fOption); diff --git a/graf2d/graf/src/TGaxis.cxx b/graf2d/graf/src/TGaxis.cxx index 1005a92b233cb..5bc44a3f143a1 100644 --- a/graf2d/graf/src/TGaxis.cxx +++ b/graf2d/graf/src/TGaxis.cxx @@ -1821,11 +1821,12 @@ void TGaxis::PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t yma if2++; } coded = &chcoded[0]; - if (if1 > 14) if1=14; - if (if2 > 14) if2=14; - if (if2>0) snprintf(coded,8,"%%%d.%df",if1,if2); - else { - if (if1 < -100) if1 = -100; // Silence a warning with gcc + if (if1 > 14) if1 = 14; + if (if2 > 14) if2 = 14; + if (if1 < 0) if1 = 0; + if (if2 > 0) { + snprintf(coded,8,"%%%d.%df",if1,if2); + } else { snprintf(coded,8,"%%%d.%df",if1+1,1); } @@ -1965,7 +1966,7 @@ void TGaxis::PaintAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t yma if (!optionY || (x0 == x1)) { if (!optionText) { if (first > last) strncpy(chtemp, " ", 256); - else strncpy(chtemp, &label[first], 256); + else strncpy(chtemp, &label[first], 255); if (fNModLabs) ChangeLabelAttributes(k+1, nlabels, textaxis, chtemp); typolabel = chtemp; if (!optionTime) typolabel.ReplaceAll("-", "#minus"); diff --git a/graf2d/graf/src/TGraphPolargram.cxx b/graf2d/graf/src/TGraphPolargram.cxx index 2b362a7c90a4c..f44a48e7f3697 100644 --- a/graf2d/graf/src/TGraphPolargram.cxx +++ b/graf2d/graf/src/TGraphPolargram.cxx @@ -648,8 +648,8 @@ void TGraphPolargram::PaintRadialDivisions(Bool_t drawaxis) Int_t ndivminor = 0; chopt[0] = 0; - strncat(chopt, "SDH", 3); - if (fNdivRad < 0) strncat(chopt, "N",1); + strncat(chopt, "SDH", 4); + if (fNdivRad < 0) strncat(chopt, "N",2); if(drawaxis){ // Paint axis. TGaxis axis; diff --git a/graf3d/gl/src/TGLUtil.cxx b/graf3d/gl/src/TGLUtil.cxx index 030512ad11489..16001cb5852dc 100644 --- a/graf3d/gl/src/TGLUtil.cxx +++ b/graf3d/gl/src/TGLUtil.cxx @@ -1478,9 +1478,19 @@ class TGLTesselatorWrap if (!fTess) throw std::bad_alloc(); +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + gluTessCallback(fTess, (GLenum)GLU_BEGIN, (tessfuncptr_t) glBegin); gluTessCallback(fTess, (GLenum)GLU_END, (tessfuncptr_t) glEnd); gluTessCallback(fTess, (GLenum)GLU_VERTEX, vertex_func); + +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + } virtual ~TGLTesselatorWrap() @@ -1498,8 +1508,18 @@ class TGLTesselatorWrap GLUtesselator* TGLUtil::GetDrawTesselator3fv() { + +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex3fv); +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + return singleton.fTess; } @@ -1509,8 +1529,18 @@ GLUtesselator* TGLUtil::GetDrawTesselator3fv() GLUtesselator* TGLUtil::GetDrawTesselator4fv() { + +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex4fv); +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + return singleton.fTess; } @@ -1520,8 +1550,18 @@ GLUtesselator* TGLUtil::GetDrawTesselator4fv() GLUtesselator* TGLUtil::GetDrawTesselator3dv() { + +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex3dv); +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + return singleton.fTess; } @@ -1531,8 +1571,18 @@ GLUtesselator* TGLUtil::GetDrawTesselator3dv() GLUtesselator* TGLUtil::GetDrawTesselator4dv() { + +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-function-type" +#endif + static TGLTesselatorWrap singleton((tessfuncptr_t) glVertex4dv); +#if defined(__GNUC__) && __GNUC__ >= 8 +#pragma GCC diagnostic pop +#endif + return singleton.fTess; } diff --git a/hist/hist/src/TF1.cxx b/hist/hist/src/TF1.cxx index 8684a391176ba..0a192eaebeb78 100644 --- a/hist/hist/src/TF1.cxx +++ b/hist/hist/src/TF1.cxx @@ -2502,8 +2502,8 @@ Double_t TF1::IntegralOneDim(Double_t a, Double_t b, Double_t epsrel, Double_t TF1_EvalWrapper wf1(this, 0, fgAbsValue); Double_t result = 0; Int_t status = 0; - if (epsrel <= 0) epsrel = ROOT::Math::IntegratorOneDimOptions::DefaultRelTolerance(); - if (epsabs <= 0) epsabs = ROOT::Math::IntegratorOneDimOptions::DefaultAbsTolerance(); + if (epsrel <= 0) epsrel = ROOT::Math::IntegratorOneDimOptions::DefaultRelTolerance(); + if (epsabs <= 0) epsabs = ROOT::Math::IntegratorOneDimOptions::DefaultAbsTolerance(); if (ROOT::Math::IntegratorOneDimOptions::DefaultIntegratorType() == ROOT::Math::IntegrationOneDim::kGAUSS) { ROOT::Math::GaussIntegrator iod(epsabs, epsrel); iod.SetFunction(wf1); @@ -2864,9 +2864,9 @@ void TF1::Paint(Option_t *choptin) char *l3 = strstr(option,"PMC"); // Automatic Marker Color if (l1 || l2 || l3) { Int_t i = gPad->NextPaletteColor(); - if (l1) {strncpy(l1," ",3); fHistogram->SetFillColor(i);} - if (l2) {strncpy(l2," ",3); fHistogram->SetLineColor(i);} - if (l3) {strncpy(l3," ",3); fHistogram->SetMarkerColor(i);} + if (l1) {memcpy(l1," ",3); fHistogram->SetFillColor(i);} + if (l2) {memcpy(l2," ",3); fHistogram->SetLineColor(i);} + if (l3) {memcpy(l3," ",3); fHistogram->SetMarkerColor(i);} } // set the optimal minimum and maximum diff --git a/hist/hist/src/THStack.cxx b/hist/hist/src/THStack.cxx index 2d9dfe4901a01..c59d6a1a18988 100644 --- a/hist/hist/src/THStack.cxx +++ b/hist/hist/src/THStack.cxx @@ -708,9 +708,9 @@ void THStack::Paint(Option_t *choptin) char *l3 = strstr(option,"pmc"); // Automatic Marker Color if (l1 || l2 || l3) { TString opt1 = option; - if (l1) strncpy(l1," ",3); - if (l2) strncpy(l2," ",3); - if (l3) strncpy(l3," ",3); + if (l1) memcpy(l1," ",3); + if (l2) memcpy(l2," ",3); + if (l3) memcpy(l3," ",3); TString ws = option; if (ws.IsWhitespace()) strncpy(option,"\0",1); TObjOptLink *lnk = (TObjOptLink*)fHists->FirstLink(); @@ -789,7 +789,7 @@ void THStack::Paint(Option_t *choptin) if (h->GetYaxis()->GetXmax() > ymax) ymax = h->GetYaxis()->GetXmax(); } - char loption[32]; + char loption[40]; snprintf(loption,31,"%s",opt.Data()); char *nostack = strstr(loption,"nostack"); char *nostackb = strstr(loption,"nostackb"); @@ -903,14 +903,14 @@ void THStack::Paint(Option_t *choptin) Double_t bw = (1.-(2*bo))/nhists; for (Int_t i=0;iGetOption(),"same")) { - if (nostackb) snprintf(loption,31,"%s%s b",noption,lnk->GetOption()); - else snprintf(loption,31,"%s%s",noption,lnk->GetOption()); + if (nostackb) snprintf(loption,34,"%s%s b",noption,lnk->GetOption()); + else snprintf(loption,32,"%s%s",noption,lnk->GetOption()); } else { TString indivOpt = lnk->GetOption(); indivOpt.ToLower(); - if (nostackb) snprintf(loption,31,"%ssame%s b",noption,lnk->GetOption()); + if (nostackb) snprintf(loption,38,"%ssame%s b",noption,lnk->GetOption()); else if (candle && (indivOpt.Contains("candle") || indivOpt.Contains("violin"))) snprintf(loption,31,"%ssame",lnk->GetOption()); - else snprintf(loption,31,"%ssame%s",noption,lnk->GetOption()); + else snprintf(loption,36,"%ssame%s",noption,lnk->GetOption()); } hAti = (TH1F*)(fHists->At(i)); if (nostackb) { @@ -934,9 +934,9 @@ void THStack::Paint(Option_t *choptin) Int_t h1col, h1fill; for (Int_t i=0;iGetOption(),"same")) { - snprintf(loption,31,"%s%s",noption,lnk->GetOption()); + snprintf(loption,32,"%s%s",noption,lnk->GetOption()); } else { - snprintf(loption,31,"%ssame%s",noption,lnk->GetOption()); + snprintf(loption,36,"%ssame%s",noption,lnk->GetOption()); } h1 = (TH1*)fStack->At(nhists-i-1); if (i>0 && lclear) { diff --git a/hist/hist/src/TMultiGraph.cxx b/hist/hist/src/TMultiGraph.cxx index 0c4921861c26b..759ed15c1581a 100644 --- a/hist/hist/src/TMultiGraph.cxx +++ b/hist/hist/src/TMultiGraph.cxx @@ -1079,9 +1079,9 @@ void TMultiGraph::Paint(Option_t *choptin) char *l3 = strstr(option,"PMC"); // Automatic Marker Color if (l1 || l2 || l3) { TString opt1 = option; opt1.ToLower(); - if (l1) strncpy(l1," ",3); - if (l2) strncpy(l2," ",3); - if (l3) strncpy(l3," ",3); + if (l1) memcpy(l1," ",3); + if (l2) memcpy(l2," ",3); + if (l3) memcpy(l3," ",3); TObjOptLink *lnk = (TObjOptLink*)fGraphs->FirstLink(); TGraph* gAti; Int_t ngraphs = fGraphs->GetSize(); diff --git a/hist/histpainter/src/TGraphPainter.cxx b/hist/histpainter/src/TGraphPainter.cxx index 428c584518f89..c865a561792be 100644 --- a/hist/histpainter/src/TGraphPainter.cxx +++ b/hist/histpainter/src/TGraphPainter.cxx @@ -1148,9 +1148,9 @@ void TGraphPainter::PaintHelper(TGraph *theGraph, Option_t *option) char *l3 = strstr(chopt,"pmc"); // Automatic Marker Color if (l1 || l2 || l3) { Int_t i = gPad->NextPaletteColor(); - if (l1) {strncpy(l1," ",3); theGraph->SetFillColor(i);} - if (l2) {strncpy(l2," ",3); theGraph->SetLineColor(i);} - if (l3) {strncpy(l3," ",3); theGraph->SetMarkerColor(i);} + if (l1) {memcpy(l1," ",3); theGraph->SetFillColor(i);} + if (l2) {memcpy(l2," ",3); theGraph->SetLineColor(i);} + if (l3) {memcpy(l3," ",3); theGraph->SetMarkerColor(i);} } SetBit(TGraph::kClipFrame, theGraph->TestBit(TGraph::kClipFrame)); @@ -1315,9 +1315,9 @@ void TGraphPainter::PaintGraph(TGraph *theGraph, Int_t npoints, const Double_t * // Create a temporary histogram and fill each bin with the // function value. char chopth[8] = " "; - if (strstr(chopt,"x+")) strncat(chopth, "x+",2); - if (strstr(chopt,"y+")) strncat(chopth, "y+",2); - if (optionIAxis) strncat(chopth, "A",1); + if (strstr(chopt,"x+")) strncat(chopth, "x+",3); + if (strstr(chopt,"y+")) strncat(chopth, "y+",3); + if (optionIAxis) strncat(chopth, "A",2); if (!theGraph->GetHistogram()) { // the graph is created with at least as many bins as there are // points to permit zooming on the full range. diff --git a/hist/histpainter/src/THistPainter.cxx b/hist/histpainter/src/THistPainter.cxx index 37696f6e8bd47..54a800abacb60 100644 --- a/hist/histpainter/src/THistPainter.cxx +++ b/hist/histpainter/src/THistPainter.cxx @@ -3962,15 +3962,15 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) char *l3 = strstr(chopt,"PMC"); // Automatic Marker Color if (l1 || l2 || l3) { Int_t i = gPad->NextPaletteColor(); - if (l1) {strncpy(l1," ",3); fH->SetFillColor(i);} - if (l2) {strncpy(l2," ",3); fH->SetLineColor(i);} - if (l3) {strncpy(l3," ",3); fH->SetMarkerColor(i);} + if (l1) {memcpy(l1," ",3); fH->SetFillColor(i);} + if (l2) {memcpy(l2," ",3); fH->SetLineColor(i);} + if (l3) {memcpy(l3," ",3); fH->SetMarkerColor(i);} } l = strstr(chopt,"SPEC"); if (l) { Hoption.Scat = 0; - strncpy(l," ",4); + memcpy(l," ",4); Int_t bs=0; l = strstr(chopt,"BF("); if (l) { @@ -3989,17 +3989,17 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) l = strstr(chopt,"GL"); if (l) { - strncpy(l," ",2); + memcpy(l," ",2); } l = strstr(chopt,"X+"); if (l) { Hoption.AxisPos = 10; - strncpy(l," ",2); + memcpy(l," ",2); } l = strstr(chopt,"Y+"); if (l) { Hoption.AxisPos += 1; - strncpy(l," ",2); + memcpy(l," ",2); } if ((Hoption.AxisPos == 10 || Hoption.AxisPos == 1) && (nch == 2)) Hoption.Hist = 1; if (Hoption.AxisPos == 11 && nch == 4) Hoption.Hist = 1; @@ -4008,19 +4008,19 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) if (l) { if (nch == 5) Hoption.Hist = 1; Hoption.Same = 2; - strncpy(l," ",5); + memcpy(l," ",5); } l = strstr(chopt,"SAME"); if (l) { if (nch == 4) Hoption.Hist = 1; Hoption.Same = 1; - strncpy(l," ",4); + memcpy(l," ",4); } l = strstr(chopt,"PIE"); if (l) { Hoption.Pie = 1; - strncpy(l," ",3); + memcpy(l," ",3); } @@ -4041,21 +4041,21 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) l = strstr(chopt,"LEGO"); if (l) { Hoption.Scat = 0; - Hoption.Lego = 1; strncpy(l," ",4); + Hoption.Lego = 1; memcpy(l," ",4); if (l[4] == '1') { Hoption.Lego = 11; l[4] = ' '; } if (l[4] == '2') { Hoption.Lego = 12; l[4] = ' '; } if (l[4] == '3') { Hoption.Lego = 13; l[4] = ' '; } if (l[4] == '4') { Hoption.Lego = 14; l[4] = ' '; } if (l[4] == '9') { Hoption.Lego = 19; l[4] = ' '; } - l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"0"); if (l) { Hoption.Zero = 1; strncpy(l," ",1); } + l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"0"); if (l) { Hoption.Zero = 1; memcpy(l," ",1); } } l = strstr(chopt,"SURF"); if (l) { Hoption.Scat = 0; - Hoption.Surf = 1; strncpy(l," ",4); + Hoption.Surf = 1; memcpy(l," ",4); if (l[4] == '1') { Hoption.Surf = 11; l[4] = ' '; } if (l[4] == '2') { Hoption.Surf = 12; l[4] = ' '; } if (l[4] == '3') { Hoption.Surf = 13; l[4] = ' '; } @@ -4063,27 +4063,27 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) if (l[4] == '5') { Hoption.Surf = 15; l[4] = ' '; } if (l[4] == '6') { Hoption.Surf = 16; l[4] = ' '; } if (l[4] == '7') { Hoption.Surf = 17; l[4] = ' '; } - l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; strncpy(l," ",2); } + l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; memcpy(l," ",2); } } l = strstr(chopt,"TF3"); if (l) { - l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; strncpy(l," ",2); } + l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; memcpy(l," ",2); } } l = strstr(chopt,"ISO"); if (l) { - l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; strncpy(l," ",2); } + l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; memcpy(l," ",2); } } - l = strstr(chopt,"LIST"); if (l) { Hoption.List = 1; strncpy(l," ",4);} + l = strstr(chopt,"LIST"); if (l) { Hoption.List = 1; memcpy(l," ",4);} l = strstr(chopt,"CONT"); if (l) { - strncpy(l," ",4); + memcpy(l," ",4); if (hdim>1) { Hoption.Scat = 0; Hoption.Contour = 1; @@ -4099,7 +4099,7 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) l = strstr(chopt,"HBAR"); if (l) { Hoption.Hist = 0; - Hoption.Bar = 20; strncpy(l," ",4); + Hoption.Bar = 20; memcpy(l," ",4); if (l[4] == '1') { Hoption.Bar = 21; l[4] = ' '; } if (l[4] == '2') { Hoption.Bar = 22; l[4] = ' '; } if (l[4] == '3') { Hoption.Bar = 23; l[4] = ' '; } @@ -4108,7 +4108,7 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) l = strstr(chopt,"BAR"); if (l) { Hoption.Hist = 0; - Hoption.Bar = 10; strncpy(l," ",3); + Hoption.Bar = 10; memcpy(l," ",3); if (l[3] == '1') { Hoption.Bar = 11; l[3] = ' '; } if (l[3] == '2') { Hoption.Bar = 12; l[3] = ' '; } if (l[3] == '3') { Hoption.Bar = 13; l[3] = ' '; } @@ -4117,7 +4117,7 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) l = strstr(chopt,"ARR" ); if (l) { - strncpy(l," ", 3); + memcpy(l," ", 3); if (hdim>1) { Hoption.Arrow = 1; Hoption.Scat = 0; @@ -4127,7 +4127,7 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) } l = strstr(chopt,"BOX" ); if (l) { - strncpy(l," ", 3); + memcpy(l," ", 3); if (hdim>1) { Hoption.Scat = 0; Hoption.Box = 1; @@ -4140,37 +4140,37 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) } l = strstr(chopt,"COLZ"); if (l) { - strncpy(l," ",4); + memcpy(l," ",4); if (hdim>1) { Hoption.Color = 1; Hoption.Scat = 0; Hoption.Zscale = 1; if (l[4] == '2') { Hoption.Color = 3; l[4] = ' '; } - l = strstr(chopt,"0"); if (l) { Hoption.Zero = 1; strncpy(l," ",1); } - l = strstr(chopt,"1"); if (l) { Hoption.Color = 2; strncpy(l," ",1); } + l = strstr(chopt,"0"); if (l) { Hoption.Zero = 1; memcpy(l," ",1); } + l = strstr(chopt,"1"); if (l) { Hoption.Color = 2; memcpy(l," ",1); } } else { Hoption.Hist = 1; } } l = strstr(chopt,"COL" ); if (l) { - strncpy(l," ", 3); + memcpy(l," ", 3); if (hdim>1) { Hoption.Color = 1; Hoption.Scat = 0; if (l[3] == '2') { Hoption.Color = 3; l[3] = ' '; } - l = strstr(chopt,"0"); if (l) { Hoption.Zero = 1; strncpy(l," ",1); } - l = strstr(chopt,"1"); if (l) { Hoption.Color = 2; strncpy(l," ",1); } + l = strstr(chopt,"0"); if (l) { Hoption.Zero = 1; memcpy(l," ",1); } + l = strstr(chopt,"1"); if (l) { Hoption.Color = 2; memcpy(l," ",1); } } else { Hoption.Hist = 1; } } - l = strstr(chopt,"CHAR"); if (l) { Hoption.Char = 1; strncpy(l," ",4); Hoption.Scat = 0; } - l = strstr(chopt,"FUNC"); if (l) { Hoption.Func = 2; strncpy(l," ",4); Hoption.Hist = 0; } - l = strstr(chopt,"HIST"); if (l) { Hoption.Hist = 2; strncpy(l," ",4); Hoption.Func = 0; Hoption.Error = 0;} - l = strstr(chopt,"AXIS"); if (l) { Hoption.Axis = 1; strncpy(l," ",4); } - l = strstr(chopt,"AXIG"); if (l) { Hoption.Axis = 2; strncpy(l," ",4); } - l = strstr(chopt,"SCAT"); if (l) { Hoption.Scat = 1; strncpy(l," ",4); } + l = strstr(chopt,"CHAR"); if (l) { Hoption.Char = 1; memcpy(l," ",4); Hoption.Scat = 0; } + l = strstr(chopt,"FUNC"); if (l) { Hoption.Func = 2; memcpy(l," ",4); Hoption.Hist = 0; } + l = strstr(chopt,"HIST"); if (l) { Hoption.Hist = 2; memcpy(l," ",4); Hoption.Func = 0; Hoption.Error = 0;} + l = strstr(chopt,"AXIS"); if (l) { Hoption.Axis = 1; memcpy(l," ",4); } + l = strstr(chopt,"AXIG"); if (l) { Hoption.Axis = 2; memcpy(l," ",4); } + l = strstr(chopt,"SCAT"); if (l) { Hoption.Scat = 1; memcpy(l," ",4); } l = strstr(chopt,"TEXT"); if (l) { Int_t angle; @@ -4181,41 +4181,41 @@ Int_t THistPainter::MakeChopt(Option_t *choptin) } else { Hoption.Text = 1; } - strncpy(l," ", 4); + memcpy(l," ", 4); l = strstr(chopt,"N"); if (l && fH->InheritsFrom(TH2Poly::Class())) Hoption.Text += 3000; Hoption.Scat = 0; } - l = strstr(chopt,"POL"); if (l) { Hoption.System = kPOLAR; strncpy(l," ",3); } - l = strstr(chopt,"CYL"); if (l) { Hoption.System = kCYLINDRICAL; strncpy(l," ",3); } - l = strstr(chopt,"SPH"); if (l) { Hoption.System = kSPHERICAL; strncpy(l," ",3); } - l = strstr(chopt,"PSR"); if (l) { Hoption.System = kRAPIDITY; strncpy(l," ",3); } + l = strstr(chopt,"POL"); if (l) { Hoption.System = kPOLAR; memcpy(l," ",3); } + l = strstr(chopt,"CYL"); if (l) { Hoption.System = kCYLINDRICAL; memcpy(l," ",3); } + l = strstr(chopt,"SPH"); if (l) { Hoption.System = kSPHERICAL; memcpy(l," ",3); } + l = strstr(chopt,"PSR"); if (l) { Hoption.System = kRAPIDITY; memcpy(l," ",3); } l = strstr(chopt,"TRI"); if (l) { Hoption.Scat = 0; Hoption.Color = 0; - Hoption.Tri = 1; strncpy(l," ",3); - l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; strncpy(l," ",2); } - l = strstr(chopt,"ERR"); if (l) strncpy(l," ",3); + Hoption.Tri = 1; memcpy(l," ",3); + l = strstr(chopt,"FB"); if (l) { Hoption.FrontBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"BB"); if (l) { Hoption.BackBox = 0; memcpy(l," ",2); } + l = strstr(chopt,"ERR"); if (l) memcpy(l," ",3); } l = strstr(chopt,"AITOFF"); if (l) { - Hoption.Proj = 1; strncpy(l," ",6); //Aitoff projection + Hoption.Proj = 1; memcpy(l," ",6); //Aitoff projection } l = strstr(chopt,"MERCATOR"); if (l) { - Hoption.Proj = 2; strncpy(l," ",8); //Mercator projection + Hoption.Proj = 2; memcpy(l," ",8); //Mercator projection } l = strstr(chopt,"SINUSOIDAL"); if (l) { - Hoption.Proj = 3; strncpy(l," ",10); //Sinusoidal projection + Hoption.Proj = 3; memcpy(l," ",10); //Sinusoidal projection } l = strstr(chopt,"PARABOLIC"); if (l) { - Hoption.Proj = 4; strncpy(l," ",9); //Parabolic projection + Hoption.Proj = 4; memcpy(l," ",9); //Parabolic projection } if (Hoption.Proj > 0) { Hoption.Scat = 0; diff --git a/hist/histpainter/src/TPaletteAxis.cxx b/hist/histpainter/src/TPaletteAxis.cxx index b3391329d528e..84b8d44fb290e 100644 --- a/hist/histpainter/src/TPaletteAxis.cxx +++ b/hist/histpainter/src/TPaletteAxis.cxx @@ -427,15 +427,15 @@ void TPaletteAxis::Paint(Option_t *) Int_t ndiv = fH->GetZaxis()->GetNdivisions() % 100; //take primary divisions only char chopt[6] = "S "; chopt[1] = 0; - strncat(chopt, "+L", 2); + strncat(chopt, "+L", 3); if (ndiv < 0) { ndiv = TMath::Abs(ndiv); - strncat(chopt, "N", 1); + strncat(chopt, "N", 2); } if (gPad->GetLogz()) { wmin = TMath::Power(10., wlmin); wmax = TMath::Power(10., wlmax); - strncat(chopt, "G", 1); + strncat(chopt, "G", 2); } fAxis.ImportAxisAttributes(fH->GetZaxis()); fAxis.PaintAxis(xmax, ymin, xmax, ymax, wmin, wmax, ndiv, chopt); From 8b8b0345d743858978a640186aaa69cf81776623 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 11 Jun 2018 08:39:36 +0200 Subject: [PATCH 082/344] [DF] Fix df017_vecOpsHEP.root --- tutorials/dataframe/df017_vecOpsHEP.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/dataframe/df017_vecOpsHEP.py b/tutorials/dataframe/df017_vecOpsHEP.py index 619cb9adc0a19..a824ac0cc9f96 100644 --- a/tutorials/dataframe/df017_vecOpsHEP.py +++ b/tutorials/dataframe/df017_vecOpsHEP.py @@ -11,7 +11,7 @@ import ROOT from math import sqrt -filename = ROOT.gROOT.GetTutorialDir().Data() + "/dataframe/df017_vecOpsHEP_py.root" +filename = ROOT.gROOT.GetTutorialDir().Data() + "/dataframe/df017_vecOpsHEP.root" treename = "myDataset" RDF = ROOT.ROOT.RDataFrame From a197b3fad1ecfb19334b2cd2c964ff17ec29a534 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 11 Jun 2018 14:15:37 +0200 Subject: [PATCH 083/344] Update build status badges in README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b0ba178d2c778..c97426c7e81b6 100644 --- a/README.md +++ b/README.md @@ -34,8 +34,10 @@ acquisition, simulation and data analysis systems. |--------|------------|---------| | master | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-master)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-master/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-master)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-master/) | | master-noimt | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-master-noimt)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-master-noimt/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-master-noimt)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-master-noimt/) | -| v5-34-00-patches | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-v5-34-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-v5-34-00-patches/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-v5-34-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-v5-34-00-patches/) | +| v6-14-00-patches | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-v6-14-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-v6-14-00-patches/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-v6-14-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-v6-14-00-patches/) | +| v6-12-00-patches | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-v6-12-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-v6-12-00-patches/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-v6-12-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-v6-12-00-patches/) | | v6-10-00-patches | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-v6-10-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-v6-10-00-patches/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-v6-10-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-v6-10-00-patches/) | +| v5-34-00-patches | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-incremental-v5-34-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-incremental-v5-34-00-patches/) | [![Build Status](https://epsft-jenkins.cern.ch/buildStatus/icon?job=root-nightly-v5-34-00-patches)](https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-v5-34-00-patches/) | ## Cite We are [![DOI](https://zenodo.org/badge/10994345.svg)](https://zenodo.org/badge/latestdoi/10994345) From 2e701a47474c7495f7ab7b6457f4e0d992855bd7 Mon Sep 17 00:00:00 2001 From: Xavier Valls Date: Mon, 11 Jun 2018 14:50:36 +0200 Subject: [PATCH 084/344] Update release notes --- README/ReleaseNotes/v614/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v614/index.md b/README/ReleaseNotes/v614/index.md index 98a6ce4fb2832..20d3ee8b99094 100644 --- a/README/ReleaseNotes/v614/index.md +++ b/README/ReleaseNotes/v614/index.md @@ -33,7 +33,8 @@ The following people have contributed to this new version: Oksana Shadura, UNL,\ Vassil Vassilev, Princeton/CMS,\ Wouter Verkerke, NIKHEF/Atlas, RooFit,\ - Zhe Zhang, UNL + Zhe Zhang, UNL,\ + Xavier Valls Pla, UJI, CERN/SFT ## Important Notice @@ -199,6 +200,7 @@ Since we loop over all the branches for each new entry all the baskets for a clu - Make EnableImplicitMT no-op if IMT is already on - Decompress `TTreeCache` in parallel if IMT is on (upgrade of the `TTreeCacheUnzip` class). - In `TTreeProcessorMT` delete friend chains after the main chain to avoid double deletes. + - If IMT is enabled, the multithreaded execution of the fit respects the number of threads IMT has been initialized with. ## Language Bindings From 0b31c07ed663711036a52cf7671c65700ec931e8 Mon Sep 17 00:00:00 2001 From: Xavier Valls Date: Mon, 11 Jun 2018 15:03:46 +0200 Subject: [PATCH 085/344] Order contributors alphabetically --- README/ReleaseNotes/v614/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README/ReleaseNotes/v614/index.md b/README/ReleaseNotes/v614/index.md index 20d3ee8b99094..76e22cdc6905d 100644 --- a/README/ReleaseNotes/v614/index.md +++ b/README/ReleaseNotes/v614/index.md @@ -31,10 +31,10 @@ The following people have contributed to this new version: Fons Rademakers, CERN/SFT,\ Enric Tejedor Saavedra, CERN/SFT,\ Oksana Shadura, UNL,\ + Xavier Valls Pla, UJI, CERN/SFT,\ Vassil Vassilev, Princeton/CMS,\ Wouter Verkerke, NIKHEF/Atlas, RooFit,\ - Zhe Zhang, UNL,\ - Xavier Valls Pla, UJI, CERN/SFT + Zhe Zhang, UNL ## Important Notice From 6a7e1f6d88d052e4f78cd45438e29108bf3bbf4f Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Thu, 31 May 2018 10:22:42 -0500 Subject: [PATCH 086/344] Add missing cling transaction --- core/metacling/src/TCling.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 25165549a8a2f..c5f70fdfac9e0 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -3341,6 +3341,8 @@ Int_t TCling::DeleteVariable(const char* name) } unscopedName += posScope + 2; } + // Could trigger deserialization of decls. + cling::Interpreter::PushTransactionRAII RAII(fInterpreter); clang::NamedDecl* nVarDecl = cling::utils::Lookup::Named(&fInterpreter->getSema(), unscopedName, declCtx); if (!nVarDecl) { @@ -4222,6 +4224,8 @@ TInterpreter::DeclId_t TCling::GetDataMember(ClassInfo_t *opaque_cl, const char LookupResult R(SemaR, DName, SourceLocation(), Sema::LookupOrdinaryName, Sema::ForRedeclaration); + // Could trigger deserialization of decls. + cling::Interpreter::PushTransactionRAII RAII(fInterpreter); cling::utils::Lookup::Named(&SemaR, R); LookupResult::Filter F = R.makeFilter(); @@ -4261,6 +4265,8 @@ TInterpreter::DeclId_t TCling::GetEnum(TClass *cl, const char *name) const } if (dc) { // If it is a data member enum. + // Could trigger deserialization of decls. + cling::Interpreter::PushTransactionRAII RAII(fInterpreter); possibleEnum = cling::utils::Lookup::Named(&fInterpreter->getSema(), name, dc); } else { Error("TCling::GetEnum", "DeclContext not found for %s .\n", name); @@ -4268,6 +4274,8 @@ TInterpreter::DeclId_t TCling::GetEnum(TClass *cl, const char *name) const } } else { // If it is a global enum. + // Could trigger deserialization of decls. + cling::Interpreter::PushTransactionRAII RAII(fInterpreter); possibleEnum = cling::utils::Lookup::Named(&fInterpreter->getSema(), name); } if (possibleEnum && (possibleEnum != (clang::Decl*)-1) From 9b932a02ef84646818938df97ed418c6f5d22d3b Mon Sep 17 00:00:00 2001 From: Saagar Jha Date: Sat, 2 Jun 2018 22:05:44 -0700 Subject: [PATCH 087/344] Fix unfortunate typo --- core/textinput/src/textinput/Text.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/textinput/src/textinput/Text.h b/core/textinput/src/textinput/Text.h index e433114d9a06a..5a03e33f09046 100644 --- a/core/textinput/src/textinput/Text.h +++ b/core/textinput/src/textinput/Text.h @@ -71,7 +71,7 @@ namespace textinput { Text& operator+=(char C) { insert(length(), C); return *this; } Text& operator=(const std::string& S) { - // Assing string S to this, initialize with default colors. + // Assign string S to this, initialize with default colors. fColor.clear(); fColor.resize(S.length()); fString = S; From 0e90d01afe13c12fafd1002a5bf9fd6f8bc2fbb0 Mon Sep 17 00:00:00 2001 From: Saagar Jha Date: Sat, 2 Jun 2018 22:13:54 -0700 Subject: [PATCH 088/344] Handle Control+C and Control+D (mostly) correctly --- .../textinput/src/textinput/SignalHandler.cpp | 5 ---- core/textinput/src/textinput/SignalHandler.h | 1 - core/textinput/src/textinput/TextInput.cpp | 28 +++++++++++++------ core/textinput/src/textinput/TextInput.h | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/core/textinput/src/textinput/SignalHandler.cpp b/core/textinput/src/textinput/SignalHandler.cpp index cd69b29131fae..103ba9dbb7451 100644 --- a/core/textinput/src/textinput/SignalHandler.cpp +++ b/core/textinput/src/textinput/SignalHandler.cpp @@ -22,11 +22,6 @@ namespace textinput { using std::raise; - void - SignalHandler::EmitCtrlC() { - raise(SIGINT); - } - void SignalHandler::EmitCtrlZ() { #ifndef _WIN32 diff --git a/core/textinput/src/textinput/SignalHandler.h b/core/textinput/src/textinput/SignalHandler.h index 3a1a96b3ec289..a096361629130 100644 --- a/core/textinput/src/textinput/SignalHandler.h +++ b/core/textinput/src/textinput/SignalHandler.h @@ -22,7 +22,6 @@ namespace textinput { SignalHandler() {} ~SignalHandler() {} - void EmitCtrlC(); void EmitCtrlZ(); }; } diff --git a/core/textinput/src/textinput/TextInput.cpp b/core/textinput/src/textinput/TextInput.cpp index b06ed3334592b..34dcc9531f8a4 100644 --- a/core/textinput/src/textinput/TextInput.cpp +++ b/core/textinput/src/textinput/TextInput.cpp @@ -152,12 +152,19 @@ namespace textinput { && (Cmd.GetChar() == 3 || Cmd.GetChar() == 26)) { // If there are modifications in the queue, process them now. UpdateDisplay(R); - EmitSignal(Cmd.GetChar(), R); + HandleControl(Cmd.GetChar(), R); } else if (Cmd.GetKind() == Editor::kCKCommand && Cmd.GetCommandID() == Editor::kCmdWindowResize) { std::for_each(fContext->GetDisplays().begin(), fContext->GetDisplays().end(), [](Display *D) { return D->NotifyWindowChange(); }); + } else if (Cmd.GetKind() == Editor::kCKCommand + && Cmd.GetCommandID() == Editor::kCmdDel && + !fContext->GetLine().length()) { + fContext->SetLine(".q"); + Redraw(); + fLastReadResult = kRREOF; + return; } else { if (!in.IsRaw() && in.GetExtendedInput() == InputData::kEIEOF) { fLastReadResult = kRREOF; @@ -228,15 +235,18 @@ namespace textinput { } void - TextInput::EmitSignal(char C, EditorRange& R) { - - ReleaseInputOutput(); - SignalHandler* Signal = fContext->GetSignalHandler(); - - if (C == 3) - Signal->EmitCtrlC(); - else if (C == 26) + TextInput::HandleControl(char C, EditorRange& R) { + if (C == 3) { // Control+C + std::string input = fContext->GetLine().GetText(); + size_t length = input.size(); + fContext->SetLine(input + "^C"); + UpdateDisplay(EditorRange(Range(length), Range::AllText())); + TakeInput(input, true); + } else if (C == 26) { // Control+Z + ReleaseInputOutput(); + SignalHandler* Signal = fContext->GetSignalHandler(); Signal->EmitCtrlZ(); + } GrabInputOutput(); diff --git a/core/textinput/src/textinput/TextInput.h b/core/textinput/src/textinput/TextInput.h index abe6a16938717..d4749c9061e5e 100644 --- a/core/textinput/src/textinput/TextInput.h +++ b/core/textinput/src/textinput/TextInput.h @@ -89,7 +89,7 @@ namespace textinput { void AddHistoryLine(const char* line); private: - void EmitSignal(char c, EditorRange& r); + void HandleControl(char c, EditorRange& r); void ProcessNewInput(const InputData& in, EditorRange& r); void DisplayNewInput(EditorRange& r, size_t& oldCursorPos); From d5600591309ceda58340f9d6a261817d31c5c9bb Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 10:37:50 +0200 Subject: [PATCH 089/344] Update cling readme (cling issue #210). --- interpreter/cling/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/interpreter/cling/README.md b/interpreter/cling/README.md index 78fa27caa11ed..8b5729b8fa3fc 100644 --- a/interpreter/cling/README.md +++ b/interpreter/cling/README.md @@ -80,10 +80,8 @@ or type Jupyter ------- Cling comes with a [Jupyter](http://jupyter.org) kernel. After building cling, -install Jupyter and run `jupyter kernelspec install cling`. It requires a fairly -new Jupyter. Make sure cling is in your PATH when you start jupyter! - -See also the [tools/Jupyter](tools/Jupyter) subdirectory for more information. +install Jupyter and cling's kernel by following the README.mk in +[tools/Jupyter](tools/Jupyter). Make sure cling is in your PATH when you start jupyter! Developers' Corner From 3fc908802a4839f47c002856036b424a948dd2c4 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 12 Jun 2018 11:05:44 +0200 Subject: [PATCH 090/344] Clear cache LZ4 variables to allow switching between builtin_lz4=ON/OFF If we don't clear the cache variables, CMake will keep LZ4_LIBRARY set to $ when switching builtin_lz4 from ON to OFF, which makes ROOT fail to compile. --- cmake/modules/SearchInstalledSoftware.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index ac9ba08ece8c1..9eb2554d7bea9 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -237,6 +237,9 @@ endif() #---Check for LZ4-------------------------------------------------------------------- if(NOT builtin_lz4) message(STATUS "Looking for LZ4") + foreach(suffix FOUND INCLUDE_DIR LIBRARY LIBRARY_DEBUG LIBRARY_RELEASE) + unset(LZ4_${suffix} CACHE) + endforeach() find_package(LZ4) if(NOT LZ4_FOUND) message(STATUS "LZ4 not found. Switching on builtin_lz4 option") From aa55faef1d38179dafe7f42778378ea043108d00 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 12:35:53 +0200 Subject: [PATCH 091/344] cling-travis: update images, less builds, newer comp, log folding. --- interpreter/cling/.travis.yml | 191 +++++++++++----------------------- 1 file changed, 61 insertions(+), 130 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index f69b2a00c9897..4673302e2e355 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -5,13 +5,6 @@ language: cpp addons: &addons apt: packages: timeout - sources: &sources - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.5 - - llvm-toolchain-precise-3.6 - - llvm-toolchain-precise-3.7 - - llvm-toolchain-precise-3.8 - - llvm-toolchain-precise cache: apt: true @@ -49,117 +42,53 @@ matrix: include: # There seems to be a hard limit to how many machines a Travis build will - # across all platforms. By interleaving OS X, the hope is to get in the + # run across all platforms. By interleaving OS X, the hope is to get in the # queue faster while not blocking Linux builds from occuring. - os: linux - env: DIST=pangolin COMPILER=g++-4.8 CCOMPILER=gcc-4.8 NIGHTLY_CRON_SYNC=1 - addons: - apt: - sources: *sources - packages: g++-4.8 + env: COMPILER=g++-4.8 CCOMPILER=gcc-4.8 NIGHTLY_CRON_SYNC=1 compiler: gcc-4.8 - - os: linux - env: DIST=pangolin COMPILER=g++-4.9 CCOMPILER=gcc-4.9 - addons: - apt: - sources: *sources - packages: g++-4.9 - compiler: gcc-4.9 - - os: osx env: COMPILER=clang++ CCOMPILER=clang - osx_image: xcode6.4 + osx_image: xcode8.3 compiler: clang - os: linux - env: DIST=pangolin COMPILER=g++-5 CCOMPILER=gcc-5 + env: COMPILER=g++-5 CCOMPILER=gcc-5 addons: apt: - sources: *sources + sources: ubuntu-toolchain-r-test packages: g++-5 compiler: gcc-5 - os: linux - env: DIST=pangolin COMPILER=g++-6 CCOMPILER=gcc-6 - addons: - apt: - sources: *sources - packages: g++-6 - compiler: gcc-6 - - - os: osx - env: COMPILER=clang++ CCOMPILER=clang - osx_image: xcode7.3 - compiler: clang - - - os: linux - env: DIST=trusty COMPILER=g++-4.8 CCOMPILER=gcc-4.8 - sudo: required - dist: trusty - addons: - apt: - sources: *sources - packages: g++-4.8 - compiler: gcc-4.8 - - - os: linux - env: DIST=trusty COMPILER=g++-4.9 CCOMPILER=gcc-4.9 - sudo: required - dist: trusty - addons: - apt: - sources: *sources - packages: g++-4.9 - compiler: gcc-4.9 - - - os: osx env: COMPILER=g++-6 CCOMPILER=gcc-6 - osx_image: xcode7.3 - compiler: gcc-6 - - - os: linux - env: DIST=trusty COMPILER=g++-5 CCOMPILER=gcc-5 - sudo: required - dist: trusty - addons: - apt: - sources: *sources - packages: g++-5 - compiler: gcc-5 - - - os: linux - env: DIST=trusty COMPILER=g++-6 CCOMPILER=gcc-6 - sudo: required - dist: trusty addons: apt: - sources: *sources + sources: ubuntu-toolchain-r-test packages: g++-6 compiler: gcc-6 - os: osx - env: COMPILER=clang++ CCOMPILER=clang - osx_image: xcode8.3 - compiler: clang + env: COMPILER=g++-7 CCOMPILER=gcc-7 + before_install: + brew install gcc@7 - os: linux - env: DIST=trusty COMPILER=g++-7 CCOMPILER=gcc-7 - sudo: required - dist: trusty + env: COMPILER=g++-7 CCOMPILER=gcc-7 addons: apt: - sources: *sources + sources: ubuntu-toolchain-r-test packages: g++-7 compiler: gcc-7 - os: linux - env: CXXLIB=libstdc++ COMPILER=clang++-3.7 CCOMPILER=clang-3.7 + env: CXXLIB=libstdc++ COMPILER=clang++-3.9 CCOMPILER=clang-3.9 addons: apt: - sources: *sources - packages: ['clang-3.7', 'libstdc++-5-dev'] - compiler: clang-3.7 + sources: llvm-toolchain-trusty-3.9 + packages: clang-3.9 + compiler: clang-3.9 - os: osx env: COMPILER=g++-7 CCOMPILER=gcc-7 @@ -167,48 +96,47 @@ matrix: compiler: gcc-7 - os: linux - env: CXXLIB=libstdc++ COMPILER=clang++-3.8 CCOMPILER=clang-3.8 + env: CXXLIB=libstdc++ COMPILER=clang++-5.0 CCOMPILER=clang-5.0 addons: apt: - sources: *sources - packages: ['clang-3.8', 'libstdc++-6-dev'] - compiler: clang-3.8 + sources: llvm-toolchain-trusty-5.0 + packages: clang-5.0 + compiler: clang-5.0 - allow_failures: - # clang-3.5 crashes compiling clang-3.9 with libc++-3.9 - - env: CXXLIB=libc++ COMPILER=clang++-3.5 CCOMPILER=clang-3.5 +# allow_failures: +# # clang-3.5 crashes compiling clang-3.9 with libc++-3.9 +# - env: CXXLIB=libc++ COMPILER=clang++-3.5 CCOMPILER=clang-3.5 install: # If cmake is not in the cache, download it. - | + @ echo "travis_fold:start:install" CLING_USER_ROOT=`dirname $TRAVIS_BUILD_DIR` export CLING_BUILD_DEPS="$CLING_USER_ROOT/deps" export CLING_LOCAL_BIN="$CLING_USER_ROOT/bin" if [ $TRAVIS_OS_NAME == 'osx' ]; then brew install ccache python coreutils - if [[ "$COMPILER" == g++-* ]]; then - brew install "gcc@${COMPILER##*++-}" - brew link --overwrite "gcc@${COMPILER##*++-}" - if [[ "$COMPILER" == "g++-6" ]]; then - export CXXFLAGS="-D__builtin_unreachable=__builtin_trap" - export CFLAGS="-D__builtin_unreachable=__builtin_trap" - fi - fi - PATH="/usr/local/opt/ccache/libexec:$PATH" +# if [[ "$COMPILER" == g++-* ]]; then +# brew install "gcc@${COMPILER##*++-}" +# brew link --overwrite "gcc@${COMPILER##*++-}" +# if [[ "$COMPILER" == "g++-6" ]]; then +# export CXXFLAGS="-D__builtin_unreachable=__builtin_trap" +# export CFLAGS="-D__builtin_unreachable=__builtin_trap" +# fi +# fi +# PATH="/usr/local/opt/ccache/libexec:$PATH" # This is where timeout is hiding now, is the above still neccessary? - PATH="$PATH:/usr/local/opt/coreutils/libexec/gnubin" +# PATH="$PATH:/usr/local/opt/coreutils/libexec/gnubin" fi - if [ "$COMPILER" == "g++-6" ]; then + if [ "$COMPILER" == "g++-7" ]; then export CLING_BUILD_FLAGS="-DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON" # On OS X force the test to reproduce __float128 issues with libstdc++. if [ $TRAVIS_OS_NAME != 'osx' ]; then export CLING_BUILD_FLAGS="$CLING_BUILD_FLAGS -DCXX_EXTENSIONS=OFF" fi - CMAKEREQ="3.8" - else - CMAKEREQ="3.6" fi + @ echo "travis_fold:end:install" # Containers need to timeout before the buildscript exits TIMEOUT='37m' # Any more and Travis might cancel @@ -217,27 +145,8 @@ install: # Turn this on to get the mapping to the cache.o to delete # export CCACHE_LOGFILE="$CLING_USER_ROOT/ccache.log" - # Get installed CMake version and make sure its at least CMAKEREQ - CMKV=( `cmake --version` ) - CMKV=${CMKV[2]} - if [ "${CMKV:0:1}" -lt "${CMAKEREQ:0:1}" ] || [ "${CMKV:2:1}" -lt "${CMAKEREQ:2:1}" ]; then - if [ $TRAVIS_OS_NAME == 'linux' ]; then - CMAKE_URL="https://cmake.org/files/v${CMAKEREQ}/cmake-${CMAKEREQ}.0-Linux-x86_64.tar.gz" - export CMAKE=$CLING_BUILD_DEPS/cmake/bin/cmake - else - CMAKE_URL="https://cmake.org/files/v${CMAKEREQ}/cmake-${CMAKEREQ}.0-Darwin-x86_64.tar.gz" - export CMAKE=$CLING_BUILD_DEPS/cmake/CMake.app/Contents/bin/cmake - fi - if [ ! -f $CMAKE ]; then - mkdir -pv $CLING_BUILD_DEPS/cmake - travis_retry curl -k $CMAKE_URL | tar --strip-components=1 -xz -C $CLING_BUILD_DEPS/cmake - fi - else - export CMAKE="cmake" - fi - before_script: - - $CMAKE --version + - cmake --version - export CXX="ccache $COMPILER" - export CC="ccache $CCOMPILER" - | @@ -245,6 +154,7 @@ before_script: if [ -n "$NIGHTLY_CRON_SYNC" ] && [ "$TRAVIS_EVENT_TYPE" = "cron" ] \ && [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] \ && [ "$TRAVIS_REPO_SLUG" == "vgvassilev/cling" ] ; then + @ echo "travis_fold:start:sync-vgvassilev" # Override the default travis clone command to enable sync. cd ../../ && rm -fr ${TRAVIS_REPO_SLUG} git clone https://$OAUTH_TOKEN@github.com/${TRAVIS_REPO_SLUG} ${TRAVIS_REPO_SLUG} @@ -263,12 +173,16 @@ before_script: # Some debug output. git remote -v && git branch -a + @ echo "travis_fold:end:sync-vgvassilev" fi script: - | + @ echo "travis_fold:start:cpt-build" if [ -z $TRAVIS_TAG ]; then - timeout -s SIGTERM $TIMEOUT tools/packaging/cpt.py \ + TIMEOUTEXE=timeout; + if ! `which timeout`; then TIMEOUTEXE=gtimeout; fi + $TIMEOUTEXE -s SIGTERM $TIMEOUT tools/packaging/cpt.py \ --current-dev=tar \ --with-cling-url=https://github.com/$TRAVIS_REPO_SLUG \ --with-clang-url=http://root.cern.ch/git/clang.git \ @@ -283,10 +197,13 @@ script: --with-llvm-url=http://root.cern.ch/git/llvm.git \ --with-cmake-flags="$CLING_BUILD_FLAGS" fi + @ echo "travis_fold:end:cpt-build" RESULT="$?" echo "Build Result: $RESULT" + @ echo "travis_fold:start:ccache-s" ccache -s + @ echo "travis_fold:end:ccache-s" if [ $RESULT -ne 124 ]; then return $RESULT fi @@ -310,6 +227,7 @@ notifications: before_deploy: - | + @ echo "travis_fold:start:before_deploy" export RELEASE_TARBALL=$(ls $HOME/ci/build/cling*.tar.bz2) if [[ $TRAVIS_TAG -eq "cling-nightlies" ]]; then NIGHTLY="`dirname $RELEASE_TARBALL`/`date "+%Y-%b-%d-"``basename $RELEASE_TARBALL`" @@ -318,6 +236,7 @@ before_deploy: export RELEASE_TARBALL=$NIGHTLY fi echo "Deploying $RELEASE_TARBALL to GitHub releases" + @ echo "travis_fold:end:before_deploy" deploy: @@ -333,31 +252,40 @@ deploy: after_failure: - | if [ -n "$CCACHE_LOGFILE" ]; then + @ echo "travis_fold:begin:ccache_log" echo "ccache log stored to:" cat "$CCACHE_LOGFILE" | curl -sT - chunk.io + @ echo "travis_fold:end:ccache_log" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then + @ echo "travis_fold:begin:env_dump" echo "Dumping env." find $CLING_LOCAL_BIN -type f -print0 -exec cat {} \; - $CMAKE --version + cmake --version $CC --version $CXX --version ls -al `which ld` && ld -v export + @ echo "travis_fold:end:env_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then + @ echo "travis_fold:begin:cmakeoutputlog_dump" echo "Dumping CMakeOutput.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeOutput.log + @ echo "travis_fold:end:cmakeoutputlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then + @ echo "travis_fold:begin:cmakeerrorlog_dump" echo "Dumping CMakeError.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeError.log + @ echo "travis_fold:end:cmakeerrorlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then + @ echo "travis_fold:begin:clingcompiledata_dump" echo "Dumping cling-compiledata.h..." COMPILE_DATA_H=$HOME/ci/build/builddir/tools/cling/lib/Interpreter/cling-compiledata.h cat $COMPILE_DATA_H @@ -365,10 +293,13 @@ after_failure: echo "Running cling-compiledata compiler..." COMPDATA_CXX=$(cat $COMPILE_DATA_H | cut -c 18- | sed "s,\",,g") eval echo | LC_ALL=C $COMPDATA_CXX -xc++ -E -v - + @ echo "travis_fold:end:clingcompiledata_dump" fi - | - if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then + if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then + @ echo "travis_fold:begin:ccache_stats" echo "Dumping `which ccache`" ccache -s ls -la /usr/lib/ccache/ || ls -la /usr/local/opt/ccache/libexec + @ echo "travis_fold:end:ccache_stats" fi From 80126c666c0872b53ae863598d6153b5ebbc035f Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Thu, 7 Jun 2018 18:28:57 +0200 Subject: [PATCH 092/344] Fix TROOT::LoadClass for C++runtime modules Before, it was calling gSystem->Load even when gSystem->DynamicPathName did not find the library. Changes include: - Try to load library when it exists - If a library doesn't exist and the library doesn't starts with "lib", put "lib" prefix and try again (I do not think this is the best interface but the previous implementation was this) This also fix our runtime cxxmodules(Eg. runautoload.C). --- core/base/src/TROOT.cxx | 68 +++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/core/base/src/TROOT.cxx b/core/base/src/TROOT.cxx index dd62578de7b1f..5392fd29feef8 100644 --- a/core/base/src/TROOT.cxx +++ b/core/base/src/TROOT.cxx @@ -2144,12 +2144,9 @@ TClass *TROOT::LoadClass(const char *requestedname, Bool_t silent) const //////////////////////////////////////////////////////////////////////////////// /// Check if class "classname" is known to the interpreter (in fact, /// this check is not needed anymore, so classname is ignored). If -/// not it will load library "libname". If the library name does -/// not start with "lib", "lib" will be prepended and a search will -/// be made in the DynamicPath (see .rootrc). If not found a search -/// will be made on libname (without "lib" prepended) and if not found -/// a direct try of libname will be made (in case it contained an -/// absolute path). +/// not it will load library "libname". If the library couldn't be found with original +/// libname and if the name was not prefixed with lib, try to prefix with "lib" and search again. +/// If DynamicPathName still couldn't find the library, return -1. /// If check is true it will only check if libname exists and is /// readable. /// Returns 0 on successful loading, -1 in case libname does not @@ -2158,46 +2155,45 @@ TClass *TROOT::LoadClass(const char *requestedname, Bool_t silent) const Int_t TROOT::LoadClass(const char * /*classname*/, const char *libname, Bool_t check) { - Int_t err = -1; + TString lib(libname); - char *path; - TString lib = libname; - if (!lib.BeginsWith("lib")) - lib = "lib" + lib; - if ((path = gSystem->DynamicPathName(lib, kTRUE))) { - if (check) - err = 0; + // Check if libname exists in path or not + if (char *path = gSystem->DynamicPathName(lib, kTRUE)) { + // If check == true, only check if it exists and if it's readable + if (check) { + delete [] path; + return 0; + } + + // If check == false, try to load the library else { - err = gSystem->Load(path, 0, kTRUE); + int err = gSystem->Load(path, 0, kTRUE); + delete [] path; + + // TSystem::Load returns 1 when the library was already loaded, return success in this case. + if (err == 1) + err = 0; + return err; } - delete [] path; } else { + // This is the branch where libname didn't exist if (check) { FileStat_t stat; - if (!gSystem->GetPathInfo(libname, stat)) { - if (R_ISREG(stat.fMode) && - !gSystem->AccessPathName(libname, kReadPermission)) - err = 0; - else - err = -1; - } else - err = -1; - } else { - err = gSystem->Load(libname, 0, kTRUE); + if (!gSystem->GetPathInfo(libname, stat) && (R_ISREG(stat.fMode) && + !gSystem->AccessPathName(libname, kReadPermission))) + return 0; } - } - if (err == -1) { - //Error("LoadClass", "library %s could not be loaded", libname); - } - - if (err == 1) { - //Error("LoadClass", "library %s already loaded, but class %s unknown", - // libname, classname); - err = 0; + // Take care of user who didn't write the whole name + if (!lib.BeginsWith("lib")) { + lib = "lib" + lib; + return LoadClass("", lib.Data(), check); + } } - return err; + // Execution reaches here when library was prefixed with lib, check is false and couldn't find + // the library name. + return -1; } //////////////////////////////////////////////////////////////////////////////// From 3898f23ae18c6c7d995be85e95a10ba5ceea5b0d Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 12 Jun 2018 10:35:35 +0200 Subject: [PATCH 093/344] [DF][TOREVERT] Disable datasource_root gtest while it's being debugged --- tree/dataframe/test/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/test/CMakeLists.txt b/tree/dataframe/test/CMakeLists.txt index e21ac5b346aa1..59e5a43af5a29 100644 --- a/tree/dataframe/test/CMakeLists.txt +++ b/tree/dataframe/test/CMakeLists.txt @@ -19,7 +19,7 @@ ROOT_ADD_GTEST(dataframe_vecops dataframe_vecops.cxx LIBRARIES ROOTDataFrame) ROOT_ADD_GTEST(dataframe_resptr dataframe_resptr.cxx LIBRARIES ROOTDataFrame) ROOT_ADD_GTEST(datasource_more datasource_more.cxx LIBRARIES ROOTDataFrame) -ROOT_ADD_GTEST(datasource_root datasource_root.cxx LIBRARIES ROOTDataFrame) +#ROOT_ADD_GTEST(datasource_root datasource_root.cxx LIBRARIES ROOTDataFrame) ROOT_ADD_GTEST(datasource_trivial datasource_trivial.cxx LIBRARIES ROOTDataFrame) configure_file(RCsvDS_test_headers.csv . COPYONLY) configure_file(RCsvDS_test_noheaders.csv . COPYONLY) From 027ec5510592886cf109b09e01906e7106a858aa Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 14:33:03 +0200 Subject: [PATCH 094/344] cling travis: add mac os ccache ot PATH. --- interpreter/cling/.travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 4673302e2e355..5866d372ed5b8 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -124,7 +124,8 @@ install: # export CFLAGS="-D__builtin_unreachable=__builtin_trap" # fi # fi -# PATH="/usr/local/opt/ccache/libexec:$PATH" + + PATH="/usr/local/opt/ccache/libexec:$PATH" # This is where timeout is hiding now, is the above still neccessary? # PATH="$PATH:/usr/local/opt/coreutils/libexec/gnubin" fi From 70b09230efb0acb068dc4b20b09317db2cc688bb Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Tue, 12 Jun 2018 14:37:53 +0200 Subject: [PATCH 095/344] [RN] Add notes about the hashing of streamer infos --- README/ReleaseNotes/v614/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README/ReleaseNotes/v614/index.md b/README/ReleaseNotes/v614/index.md index 76e22cdc6905d..2ee61c4bf50d5 100644 --- a/README/ReleaseNotes/v614/index.md +++ b/README/ReleaseNotes/v614/index.md @@ -68,6 +68,7 @@ It should be noted that ROOT files written with LZ4 compression can not be read ## I/O Libraries - LZ4 (with compression level 4) is now the default compression algorithm for new ROOT files (LZ4 is lossless data compression algorithm that is focused on compression and decompression speed, while in ROOT case providing benefit in faster decompression at the price of a bit worse compression ratio comparing to ZLIB) + - If two or more files have an identical streamer info record, this is only treated once therewith avoiding to take the global lock. - Allow writing temporary objects (with same address) in the same TBuffer(s). A new flag to TBuffer*::WriteObject allows to skip the mechanism that prevent the 2nd streaming of an object. This allows the (re)use of temporary objects to store different data in the same buffer. - Reuse branch proxies internally used by TTreeReader{Value,Array} therewith increasing performance when having multiple readers pointing to the same branch. - Implement reading of objects data from JSON From f17856e5232889dc304e2e059ed5d7ad049481b6 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 15:57:19 +0200 Subject: [PATCH 096/344] cling travis: indent of comments. --- interpreter/cling/.travis.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 5866d372ed5b8..c732847759a18 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -116,18 +116,8 @@ install: export CLING_LOCAL_BIN="$CLING_USER_ROOT/bin" if [ $TRAVIS_OS_NAME == 'osx' ]; then brew install ccache python coreutils -# if [[ "$COMPILER" == g++-* ]]; then -# brew install "gcc@${COMPILER##*++-}" -# brew link --overwrite "gcc@${COMPILER##*++-}" -# if [[ "$COMPILER" == "g++-6" ]]; then -# export CXXFLAGS="-D__builtin_unreachable=__builtin_trap" -# export CFLAGS="-D__builtin_unreachable=__builtin_trap" -# fi -# fi PATH="/usr/local/opt/ccache/libexec:$PATH" - # This is where timeout is hiding now, is the above still neccessary? -# PATH="$PATH:/usr/local/opt/coreutils/libexec/gnubin" fi if [ "$COMPILER" == "g++-7" ]; then From 3f42e7678295f20beb94438abcd318f0dfe06117 Mon Sep 17 00:00:00 2001 From: Bastian Beischer Date: Sat, 2 Jun 2018 12:35:48 +0200 Subject: [PATCH 097/344] TMVA/DNN/Architectures/Cpu:CpuMatrix.h: Disable debugging macro. This fixes https://sft.its.cern.ch/jira/browse/ROOT-9444. --- tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuMatrix.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuMatrix.h b/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuMatrix.h index 0bef3024eda7d..a298493b3c08f 100644 --- a/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuMatrix.h +++ b/tmva/tmva/inc/TMVA/DNN/Architectures/Cpu/CpuMatrix.h @@ -25,7 +25,7 @@ #include "CpuBuffer.h" #include -#define DEBUG_TMVA_TCPUMATRIX +//#define DEBUG_TMVA_TCPUMATRIX #if defined(DEBUG_TMVA_TCPUMATRIX) #define PrintMatrix(mat, text) \ { \ From 63e1800c5a0f43094a96b2d188785db3b50622d3 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Tue, 12 Jun 2018 17:24:03 +0200 Subject: [PATCH 098/344] Avoid warnings when executed in sequence via gldemos.C --- tutorials/gl/glbox.C | 2 +- tutorials/gl/gltf3.C | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/gl/glbox.C b/tutorials/gl/glbox.C index 707c253e1ceb5..b38c2337ff683 100644 --- a/tutorials/gl/glbox.C +++ b/tutorials/gl/glbox.C @@ -10,7 +10,7 @@ void glbox() { gStyle->SetCanvasPreferGL(kTRUE); - TCanvas *c = new TCanvas("glc","TH3 Drawing", 100, 10, 850, 400); + TCanvas *c = new TCanvas("glbox","TH3 Drawing", 100, 10, 850, 400); TPaveLabel *title = new TPaveLabel(0.04, 0.86, 0.96, 0.98, "\"glbox\" and \"glbox1\" options for TH3."); title->SetFillColor(32); diff --git a/tutorials/gl/gltf3.C b/tutorials/gl/gltf3.C index a7dcd10b06da8..3697e69b7a901 100644 --- a/tutorials/gl/gltf3.C +++ b/tutorials/gl/gltf3.C @@ -17,7 +17,7 @@ void gltf3() { gStyle->SetCanvasPreferGL(1); - TCanvas *cnv = new TCanvas("glc", "TF3: Klein bottle", 200, 10, 600, 600); + TCanvas *cnv = new TCanvas("gltf3", "TF3: Klein bottle", 200, 10, 600, 600); TPaveLabel *title = new TPaveLabel(0.04, 0.86, 0.96, 0.98, "\"gl\" option for TF3. Select plot and press 's' to change the color."); From 9fb79003a830403e00908a555836c5a31c7aa61d Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 20:46:13 +0200 Subject: [PATCH 099/344] cling travis: remove leading "@"; no idea why the example had it. --- interpreter/cling/.travis.yml | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index c732847759a18..7d8df2e32f725 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -110,7 +110,7 @@ matrix: install: # If cmake is not in the cache, download it. - | - @ echo "travis_fold:start:install" + echo "travis_fold:start:install" CLING_USER_ROOT=`dirname $TRAVIS_BUILD_DIR` export CLING_BUILD_DEPS="$CLING_USER_ROOT/deps" export CLING_LOCAL_BIN="$CLING_USER_ROOT/bin" @@ -127,7 +127,7 @@ install: export CLING_BUILD_FLAGS="$CLING_BUILD_FLAGS -DCXX_EXTENSIONS=OFF" fi fi - @ echo "travis_fold:end:install" + echo "travis_fold:end:install" # Containers need to timeout before the buildscript exits TIMEOUT='37m' # Any more and Travis might cancel @@ -145,7 +145,7 @@ before_script: if [ -n "$NIGHTLY_CRON_SYNC" ] && [ "$TRAVIS_EVENT_TYPE" = "cron" ] \ && [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] \ && [ "$TRAVIS_REPO_SLUG" == "vgvassilev/cling" ] ; then - @ echo "travis_fold:start:sync-vgvassilev" + echo "travis_fold:start:sync-vgvassilev" # Override the default travis clone command to enable sync. cd ../../ && rm -fr ${TRAVIS_REPO_SLUG} git clone https://$OAUTH_TOKEN@github.com/${TRAVIS_REPO_SLUG} ${TRAVIS_REPO_SLUG} @@ -164,12 +164,12 @@ before_script: # Some debug output. git remote -v && git branch -a - @ echo "travis_fold:end:sync-vgvassilev" + echo "travis_fold:end:sync-vgvassilev" fi script: - | - @ echo "travis_fold:start:cpt-build" + echo "travis_fold:start:cpt-build" if [ -z $TRAVIS_TAG ]; then TIMEOUTEXE=timeout; if ! `which timeout`; then TIMEOUTEXE=gtimeout; fi @@ -188,13 +188,13 @@ script: --with-llvm-url=http://root.cern.ch/git/llvm.git \ --with-cmake-flags="$CLING_BUILD_FLAGS" fi - @ echo "travis_fold:end:cpt-build" + echo "travis_fold:end:cpt-build" RESULT="$?" echo "Build Result: $RESULT" - @ echo "travis_fold:start:ccache-s" + echo "travis_fold:start:ccache-s" ccache -s - @ echo "travis_fold:end:ccache-s" + echo "travis_fold:end:ccache-s" if [ $RESULT -ne 124 ]; then return $RESULT fi @@ -218,7 +218,7 @@ notifications: before_deploy: - | - @ echo "travis_fold:start:before_deploy" + echo "travis_fold:start:before_deploy" export RELEASE_TARBALL=$(ls $HOME/ci/build/cling*.tar.bz2) if [[ $TRAVIS_TAG -eq "cling-nightlies" ]]; then NIGHTLY="`dirname $RELEASE_TARBALL`/`date "+%Y-%b-%d-"``basename $RELEASE_TARBALL`" @@ -227,7 +227,7 @@ before_deploy: export RELEASE_TARBALL=$NIGHTLY fi echo "Deploying $RELEASE_TARBALL to GitHub releases" - @ echo "travis_fold:end:before_deploy" + echo "travis_fold:end:before_deploy" deploy: @@ -243,14 +243,14 @@ deploy: after_failure: - | if [ -n "$CCACHE_LOGFILE" ]; then - @ echo "travis_fold:begin:ccache_log" + echo "travis_fold:begin:ccache_log" echo "ccache log stored to:" cat "$CCACHE_LOGFILE" | curl -sT - chunk.io - @ echo "travis_fold:end:ccache_log" + echo "travis_fold:end:ccache_log" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - @ echo "travis_fold:begin:env_dump" + echo "travis_fold:begin:env_dump" echo "Dumping env." find $CLING_LOCAL_BIN -type f -print0 -exec cat {} \; cmake --version @@ -258,25 +258,25 @@ after_failure: $CXX --version ls -al `which ld` && ld -v export - @ echo "travis_fold:end:env_dump" + echo "travis_fold:end:env_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - @ echo "travis_fold:begin:cmakeoutputlog_dump" + echo "travis_fold:begin:cmakeoutputlog_dump" echo "Dumping CMakeOutput.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeOutput.log - @ echo "travis_fold:end:cmakeoutputlog_dump" + echo "travis_fold:end:cmakeoutputlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - @ echo "travis_fold:begin:cmakeerrorlog_dump" + echo "travis_fold:begin:cmakeerrorlog_dump" echo "Dumping CMakeError.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeError.log - @ echo "travis_fold:end:cmakeerrorlog_dump" + echo "travis_fold:end:cmakeerrorlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - @ echo "travis_fold:begin:clingcompiledata_dump" + echo "travis_fold:begin:clingcompiledata_dump" echo "Dumping cling-compiledata.h..." COMPILE_DATA_H=$HOME/ci/build/builddir/tools/cling/lib/Interpreter/cling-compiledata.h cat $COMPILE_DATA_H @@ -284,13 +284,13 @@ after_failure: echo "Running cling-compiledata compiler..." COMPDATA_CXX=$(cat $COMPILE_DATA_H | cut -c 18- | sed "s,\",,g") eval echo | LC_ALL=C $COMPDATA_CXX -xc++ -E -v - - @ echo "travis_fold:end:clingcompiledata_dump" + echo "travis_fold:end:clingcompiledata_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - @ echo "travis_fold:begin:ccache_stats" + echo "travis_fold:begin:ccache_stats" echo "Dumping `which ccache`" ccache -s ls -la /usr/lib/ccache/ || ls -la /usr/local/opt/ccache/libexec - @ echo "travis_fold:end:ccache_stats" + echo "travis_fold:end:ccache_stats" fi From 600b3b8a2e71969edc99fc885ae8dd135daa4c69 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 20:52:52 +0200 Subject: [PATCH 100/344] cling travis: help find timeout: Even though timeout existed, the script decided to call gtimeout on Linux - which does not exit. --- interpreter/cling/.travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 7d8df2e32f725..d7dba2d1ef802 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -171,8 +171,8 @@ script: - | echo "travis_fold:start:cpt-build" if [ -z $TRAVIS_TAG ]; then - TIMEOUTEXE=timeout; - if ! `which timeout`; then TIMEOUTEXE=gtimeout; fi + TIMEOUTEXE=`which timeout`; + if [ "x" = "x$TIMEOUTEXE" ] ; then TIMEOUTEXE=gtimeout; fi $TIMEOUTEXE -s SIGTERM $TIMEOUT tools/packaging/cpt.py \ --current-dev=tar \ --with-cling-url=https://github.com/$TRAVIS_REPO_SLUG \ From ee68d37096ab43bc36d532edeb9a63a7319c0287 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 20:55:51 +0200 Subject: [PATCH 101/344] cling travis: Install coreutils; Trusty has no "timeout" apt package. --- interpreter/cling/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index d7dba2d1ef802..cbdfc8523fddb 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -4,7 +4,7 @@ language: cpp addons: &addons apt: - packages: timeout + packages: coreutils cache: apt: true From 4ec6b0783fec0f4965d77a4ec4289acb92ffc783 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 21:03:30 +0200 Subject: [PATCH 102/344] cling travis: oclint is in the way for brew install gcc@7. See https://github.com/travis-ci/travis-ci/issues/8826 --- interpreter/cling/.travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index cbdfc8523fddb..47266dcac4ec6 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -72,7 +72,8 @@ matrix: - os: osx env: COMPILER=g++-7 CCOMPILER=gcc-7 before_install: - brew install gcc@7 + brew cask uninstall oclint + brew install --overwrite gcc@7 - os: linux env: COMPILER=g++-7 CCOMPILER=gcc-7 From 6e86caa05aaa62f0f724561fd18fbf6d77519c7e Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 21:13:17 +0200 Subject: [PATCH 103/344] cling travis: remove stray "--overwrite". --- interpreter/cling/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 47266dcac4ec6..f9b2c65008842 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -73,7 +73,7 @@ matrix: env: COMPILER=g++-7 CCOMPILER=gcc-7 before_install: brew cask uninstall oclint - brew install --overwrite gcc@7 + brew install gcc@7 - os: linux env: COMPILER=g++-7 CCOMPILER=gcc-7 From b0875a27d6f28b1c0bf11143dd8d8c3ec03c19d2 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 21:14:31 +0200 Subject: [PATCH 104/344] cling travis: add "compiler" tag to GCC-7@Mac build. --- interpreter/cling/.travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index f9b2c65008842..1f969f67282ba 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -74,6 +74,7 @@ matrix: before_install: brew cask uninstall oclint brew install gcc@7 + compiler: gcc-7 - os: linux env: COMPILER=g++-7 CCOMPILER=gcc-7 From a52cb9d69348df84a4ebb18c5243f87242f11e8f Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 12 Jun 2018 21:21:26 +0200 Subject: [PATCH 105/344] cling travis: travis_fold:begin: is spelled travis_fold:start:. --- interpreter/cling/.travis.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 1f969f67282ba..235f166f7206a 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -245,14 +245,14 @@ deploy: after_failure: - | if [ -n "$CCACHE_LOGFILE" ]; then - echo "travis_fold:begin:ccache_log" + echo "travis_fold:start:ccache_log" echo "ccache log stored to:" cat "$CCACHE_LOGFILE" | curl -sT - chunk.io echo "travis_fold:end:ccache_log" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:begin:env_dump" + echo "travis_fold:start:env_dump" echo "Dumping env." find $CLING_LOCAL_BIN -type f -print0 -exec cat {} \; cmake --version @@ -264,21 +264,21 @@ after_failure: fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:begin:cmakeoutputlog_dump" + echo "travis_fold:start:cmakeoutputlog_dump" echo "Dumping CMakeOutput.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeOutput.log echo "travis_fold:end:cmakeoutputlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:begin:cmakeerrorlog_dump" + echo "travis_fold:start:cmakeerrorlog_dump" echo "Dumping CMakeError.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeError.log echo "travis_fold:end:cmakeerrorlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:begin:clingcompiledata_dump" + echo "travis_fold:start:clingcompiledata_dump" echo "Dumping cling-compiledata.h..." COMPILE_DATA_H=$HOME/ci/build/builddir/tools/cling/lib/Interpreter/cling-compiledata.h cat $COMPILE_DATA_H @@ -290,7 +290,7 @@ after_failure: fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:begin:ccache_stats" + echo "travis_fold:start:ccache_stats" echo "Dumping `which ccache`" ccache -s ls -la /usr/lib/ccache/ || ls -la /usr/local/opt/ccache/libexec From b646b9bd748654590aecf7794e5900c0e51f8c72 Mon Sep 17 00:00:00 2001 From: Philippe Canal Date: Mon, 11 Jun 2018 16:02:02 -0500 Subject: [PATCH 106/344] Avoid getting confused by out-of-range request to TTreeCache --- tree/tree/src/TTreeCache.cxx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/tree/tree/src/TTreeCache.cxx b/tree/tree/src/TTreeCache.cxx index 5f01df48bb945..779b956768e98 100644 --- a/tree/tree/src/TTreeCache.cxx +++ b/tree/tree/src/TTreeCache.cxx @@ -1185,8 +1185,21 @@ Bool_t TTreeCache::FillBuffer() fEntryCurrentMax = fEntryCurrent; TTree::TClusterIterator clusterIter = tree->GetClusterIterator(entry); - fEntryCurrent = clusterIter(); - fEntryNext = clusterIter.GetNextEntry(); + + auto entryCurrent = clusterIter(); + auto entryNext = clusterIter.GetNextEntry(); + + if (entryNext < fEntryMin || fEntryMax < entryCurrent) { + // There is no overlap betweent the cluster we found [entryCurrent, entryNext[ + // and the authorized range [fEntryMin, fEntryMax] + // so we have nothing to do + return kFALSE; + } + + fEntryCurrent = entryCurrent; + fEntryNext = entryNext; + + auto firstClusterEnd = fEntryNext; if (showMore || gDebug > 6) Info("FillBuffer", "Looking at cluster spanning from %lld to %lld", fEntryCurrent, fEntryNext); From 785ef46e1a485a7cc338c1e6d7c1405a1047433c Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Tue, 5 Jun 2018 16:28:51 +0200 Subject: [PATCH 107/344] [cxxmodules] Fix nightlies by autoload dependency libraries We had test failures in runtime nightlies such as this one: https://epsft-jenkins.cern.ch/view/ROOT/job/root-nightly-runtime-cxxmodules/95/BUILDTYPE=Debug,COMPILER=gcc62,LABEL=slc6/testReport/junit/projectroot.roottest.root.math/smatrix/roottest_root_math_smatrix_testKalman/ Failures were due to what @pcanal commented in #2135, that some so files in roottest doesn't have external linkage. (It means that if you call dlopen(libfoo.so), linux kernel can't find dependency libraries and it emits "undefined symbol" error when they try to initialize global variables in libfoo.so but couldn't find symbol definition) With pch, rootmap files were providing information about the depending library. However we stopped generating rootmap files in #2127 and that's why we got these failures. To fix this issue, I implemented a callback to TCling which gets called when DynamicLibraryManager fails. The callback pass error message to TCling and it handles message if it contains "undefined error". --- core/metacling/src/TCling.cxx | 34 ++++++++++++++++++- core/metacling/src/TCling.h | 1 + core/metacling/src/TClingCallbacks.cxx | 7 ++++ core/metacling/src/TClingCallbacks.h | 2 ++ .../cling/Interpreter/InterpreterCallbacks.h | 6 ++++ .../lib/Interpreter/DynamicLibraryManager.cpp | 6 ++++ .../MultiplexInterpreterCallbacks.h | 9 +++++ 7 files changed, 64 insertions(+), 1 deletion(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index c5f70fdfac9e0..4a04c15f01515 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -366,6 +366,16 @@ extern "C" void TCling__RestoreInterpreterMutex(void *delta) ((TCling*)gCling)->ApplyToInterpreterMutex(delta); } +//////////////////////////////////////////////////////////////////////////////// +/// Lookup libraries in LD_LIBRARY_PATH and DYLD_LIBRARY_PATH with mangled_name, +/// which is extracted by error messages we get from callback from cling. Return true +/// when the missing library was autoloaded. + +extern "C" bool TCling__LibraryLoadingFailed(const std::string& errmessage, const std::string& libStem, bool permanent, bool resolved) +{ + return ((TCling*)gCling)->LibraryLoadingFailed(errmessage, libStem, permanent, resolved); +} + //////////////////////////////////////////////////////////////////////////////// /// Reset the interpreter lock to the state it had before interpreter-related /// calls happened. @@ -5875,6 +5885,25 @@ Int_t TCling::AutoParse(const char *cls) return nHheadersParsed > 0 ? 1 : 0; } +// This is a function which gets callback from cling when DynamicLibraryManager->loadLibrary failed for some reason. +// Try to solve the problem by autoloading. Return true when autoloading success, return +// false if not. +bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::string& libStem, bool permanent, bool resolved) +{ + StringRef errMsg(errmessage); + if (errMsg.contains("undefined symbol: ")) { + std::string mangled_name = std::string(errMsg.split("undefined symbol: ").second); + void* res = ((TCling*)gCling)->LazyFunctionCreatorAutoload(mangled_name); + cling::DynamicLibraryManager* DLM = fInterpreter->getDynamicLibraryManager(); + if (res && DLM && (DLM->loadLibrary(libStem, permanent, resolved) == cling::DynamicLibraryManager::kLoadLibSuccess)) + // Return success when LazyFunctionCreatorAutoload could find mangled_name + return true; + } + + return false; +} + + static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_name, cling::Interpreter *fInterpreter) { using namespace llvm::object; @@ -5902,7 +5931,10 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam if (!it.second) continue; StringRef DirPath(Path); - if (!is_directory(DirPath)) + // Skip current directory, because what we want to autoload is not a random shared libraries but libraries generated + // by ROOT. In fact, some tests were failing because of this as they have their custom shared libraries (which is not supporsed + // to be autoloaded) + if (!is_directory(DirPath) || Path == ".") continue; std::error_code EC; diff --git a/core/metacling/src/TCling.h b/core/metacling/src/TCling.h index 646cf53a46bf3..f10000c267b72 100644 --- a/core/metacling/src/TCling.h +++ b/core/metacling/src/TCling.h @@ -177,6 +177,7 @@ class TCling : public TInterpreter { Int_t AutoLoad(const std::type_info& typeinfo, Bool_t knowDictNotLoaded = kFALSE); Int_t AutoParse(const char* cls); void* LazyFunctionCreatorAutoload(const std::string& mangled_name); + bool LibraryLoadingFailed(const std::string&, const std::string&, bool, bool); Bool_t IsAutoLoadNamespaceCandidate(const char* name); Bool_t IsAutoLoadNamespaceCandidate(const clang::NamespaceDecl* nsDecl); void ClearFileBusy(); diff --git a/core/metacling/src/TClingCallbacks.cxx b/core/metacling/src/TClingCallbacks.cxx index 5a034cc5bdcac..cf3307e4abf37 100644 --- a/core/metacling/src/TClingCallbacks.cxx +++ b/core/metacling/src/TClingCallbacks.cxx @@ -56,6 +56,7 @@ extern "C" { int TCling__CompileMacro(const char *fileName, const char *options); void TCling__SplitAclicMode(const char* fileName, std::string &mode, std::string &args, std::string &io, std::string &fname); + bool TCling__LibraryLoadingFailed(const std::string&, const std::string&, bool, bool); void TCling__LibraryLoadedRTTI(const void* dyLibHandle, llvm::StringRef canonicalName); void TCling__LibraryUnloadedRTTI(const void* dyLibHandle, @@ -124,6 +125,12 @@ void TClingCallbacks::InclusionDirective(clang::SourceLocation sLoc/*HashLoc*/, tryAutoParseInternal(localString, RHeader, SemaR.getCurScope(), FE); } +// TCling__LibraryLoadingFailed is a function in TCling which handles errmessage +bool TClingCallbacks::LibraryLoadingFailed(const std::string& errmessage, const std::string& libStem, + bool permanent, bool resolved) { + return TCling__LibraryLoadingFailed(errmessage, libStem, permanent, resolved); +} + // Preprocessor callbacks used to handle special cases like for example: // #include "myMacro.C+" // diff --git a/core/metacling/src/TClingCallbacks.h b/core/metacling/src/TClingCallbacks.h index a4524e4fdd29d..b9a21bbef7525 100644 --- a/core/metacling/src/TClingCallbacks.h +++ b/core/metacling/src/TClingCallbacks.h @@ -58,6 +58,8 @@ class TClingCallbacks : public cling::InterpreterCallbacks { void SetAutoParsingSuspended(bool val = true) { fIsAutoParsingSuspended = val; } bool IsAutoParsingSuspended() { return fIsAutoParsingSuspended; } + virtual bool LibraryLoadingFailed(const std::string&, const std::string&, bool, bool); + virtual void InclusionDirective(clang::SourceLocation /*HashLoc*/, const clang::Token &/*IncludeTok*/, llvm::StringRef FileName, diff --git a/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h b/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h index 602bd016d657d..5100fc7398ab8 100644 --- a/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h +++ b/interpreter/cling/include/cling/Interpreter/InterpreterCallbacks.h @@ -125,6 +125,12 @@ namespace cling { virtual bool LookupObject(const clang::DeclContext*, clang::DeclarationName); virtual bool LookupObject(clang::TagDecl*); + /// \brief This callback is invoked whenever the interpreter failed to load a library. + /// + /// \param[in] - Error message and parameters passed to loadLibrary + /// \returns true if the error was handled. + virtual bool LibraryLoadingFailed(const std::string&, const std::string&, bool, bool) { return 0; } + ///\brief This callback is invoked whenever interpreter has committed new /// portion of declarations. /// diff --git a/interpreter/cling/lib/Interpreter/DynamicLibraryManager.cpp b/interpreter/cling/lib/Interpreter/DynamicLibraryManager.cpp index 1ac25789366e0..a4ce7998b46d8 100644 --- a/interpreter/cling/lib/Interpreter/DynamicLibraryManager.cpp +++ b/interpreter/cling/lib/Interpreter/DynamicLibraryManager.cpp @@ -206,6 +206,12 @@ namespace cling { std::string errMsg; DyLibHandle dyLibHandle = platform::DLOpen(canonicalLoadedLib, &errMsg); if (!dyLibHandle) { + // We emit callback to LibraryLoadingFailed when we get error with error message. + if (InterpreterCallbacks* C = getCallbacks()) { + if (C->LibraryLoadingFailed(errMsg, libStem, permanent, resolved)) + return kLoadLibSuccess; + } + cling::errs() << "cling::DynamicLibraryManager::loadLibrary(): " << errMsg << '\n'; return kLoadLibLoadError; diff --git a/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h b/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h index 40f6754e60235..7d2bfe0ea3203 100644 --- a/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h +++ b/interpreter/cling/lib/Interpreter/MultiplexInterpreterCallbacks.h @@ -77,6 +77,15 @@ namespace cling { } } + bool LibraryLoadingFailed(const std::string& errmessage, const std::string& libStem, bool permanent, + bool resolved) override { + for (auto&& cb : m_Callbacks) { + if (bool res = cb->LibraryLoadingFailed(errmessage, libStem, permanent, resolved)) + return res; + } + return 0; + } + void TransactionUnloaded(const Transaction& T) override { for (auto&& cb : m_Callbacks) { cb->TransactionUnloaded(T); From 95dd9b3b21c43ddcb1dd0792c2992244b9bf003a Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Mon, 11 Jun 2018 14:54:51 +0200 Subject: [PATCH 108/344] Revert "Revert "Add the cwg to the prebuilt module cache path." (#2160)" This reverts commit 011aa8200277cd31957e222afd9b37415458b31f. This is a revert of revert. I reverted the first commit because adding "." to prebuiltmodulepath was causing failure in runtime modules, but now we're skipping "." in TCling::LazyFunctionCreatorAutoloadForModule so doesn't matter even if we have ".". --- interpreter/cling/lib/Interpreter/CIFactory.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interpreter/cling/lib/Interpreter/CIFactory.cpp b/interpreter/cling/lib/Interpreter/CIFactory.cpp index 3f233a3abc284..f97c86032f709 100644 --- a/interpreter/cling/lib/Interpreter/CIFactory.cpp +++ b/interpreter/cling/lib/Interpreter/CIFactory.cpp @@ -1092,6 +1092,7 @@ static void stringifyPreprocSetting(PreprocessorOptions& PPOpts, auto& HS = CI->getHeaderSearchOpts(); addPrebuiltModulePaths(HS, getPathsFromEnv(getenv("LD_LIBRARY_PATH"))); addPrebuiltModulePaths(HS, getPathsFromEnv(getenv("DYLD_LIBRARY_PATH"))); + HS.AddPrebuiltModulePath("."); } // Set up compiler language and target From 2ba50d56d99e13350272ac107873eb665d587449 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 11:35:43 +0200 Subject: [PATCH 109/344] v6.16 RelNotes: enter date, release number; update URL. --- README/ReleaseNotes/v616/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index 19fa7df446156..5fee06d987f16 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -1,14 +1,14 @@ -% ROOT Version ?.?? Release Notes -% 20??-??-?? +% ROOT Version 6.16 Release Notes +% 2018-06-13 ## Introduction -ROOT version 6.??/00 is scheduled for release in ???. +ROOT version 6.16/00 is scheduled for release end of 2018. For more information, see: -[http://root.cern.ch](http://root.cern.ch) +[http://root.cern](http://root.cern) The following people have contributed to this new version: From e9d5c9a9c7f6f8ddbcc3baf7a597620e56744b9b Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 11:36:10 +0200 Subject: [PATCH 110/344] RelNotes template: use .cern TLD for url. --- README/ReleaseNotes/empty.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/empty.md b/README/ReleaseNotes/empty.md index a204982959ee5..3e0a56b9cfe09 100644 --- a/README/ReleaseNotes/empty.md +++ b/README/ReleaseNotes/empty.md @@ -8,7 +8,7 @@ ROOT version 6.??/00 is scheduled for release in ???. For more information, see: -[http://root.cern.ch](http://root.cern.ch) +[http://root.cern](http://root.cern) The following people have contributed to this new version: From b101e35a36f0387877820bd1eab48e9dd17e6016 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 11:56:13 +0200 Subject: [PATCH 111/344] cling travis: travis merged two lines into one command. --- interpreter/cling/.travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 235f166f7206a..0029cfc06434b 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -72,8 +72,7 @@ matrix: - os: osx env: COMPILER=g++-7 CCOMPILER=gcc-7 before_install: - brew cask uninstall oclint - brew install gcc@7 + brew cask uninstall oclint; brew install gcc@7 compiler: gcc-7 - os: linux From e9542e847eceeab28bca8b1f5cab7685464a784c Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 12:10:25 +0200 Subject: [PATCH 112/344] cling travis: move cpt log fold into cpt.py. --- interpreter/cling/.travis.yml | 2 -- interpreter/cling/tools/packaging/cpt.py | 13 +++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 0029cfc06434b..03d74f1cf0622 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -170,7 +170,6 @@ before_script: script: - | - echo "travis_fold:start:cpt-build" if [ -z $TRAVIS_TAG ]; then TIMEOUTEXE=`which timeout`; if [ "x" = "x$TIMEOUTEXE" ] ; then TIMEOUTEXE=gtimeout; fi @@ -189,7 +188,6 @@ script: --with-llvm-url=http://root.cern.ch/git/llvm.git \ --with-cmake-flags="$CLING_BUILD_FLAGS" fi - echo "travis_fold:end:cpt-build" RESULT="$?" echo "Build Result: $RESULT" diff --git a/interpreter/cling/tools/packaging/cpt.py b/interpreter/cling/tools/packaging/cpt.py index 6f202d3743fa6..7161795bce48c 100755 --- a/interpreter/cling/tools/packaging/cpt.py +++ b/interpreter/cling/tools/packaging/cpt.py @@ -90,6 +90,13 @@ def exec_subprocess_check_output(cmd, cwd): finally: return out +def travis_fold_start(tag): + if TRAVIS_BUILD_DIR: + print('travis_fold:start:cpt-%s:' % (tag)) + +def travis_fold_end(tag): + if TRAVIS_BUILD_DIR: + print('travis_fold:end:cpt-%s:' % (tag)) def box_draw_header(): msg = 'cling (' + platform.machine() + ')' + formatdate(time.time(), tzinfo()) @@ -461,6 +468,7 @@ def make(self, targets, flags=''): LLVM_OBJ_ROOT) def compile(arg, build_libcpp): + travis_fold_start("compile") global prefix, EXTRA_CMAKE_FLAGS prefix = arg PYTHON = sys.executable @@ -553,8 +561,10 @@ def compile(arg, build_libcpp): + ' -v ".I"', shell=True) except Exception as e: print(e) + travis_fold_start("compile") def install_prefix(): + travis_fold_start("install") global prefix set_vars() @@ -579,6 +589,7 @@ def install_prefix(): os.makedirs(os.path.join(prefix, os.path.dirname(f))) shutil.copy(os.path.join(TMP_PREFIX, f), os.path.join(prefix, f)) break + travis_fold_end("install") def runSingleTest(test, Idx = 2, Recurse = True): @@ -1939,6 +1950,7 @@ def make_dmg(): continue if args['current_dev']: + travis_fold_start("git-clone") llvm_revision = urlopen( "https://raw.githubusercontent.com/root-project/cling/master/LastKnownGoodLLVMSVNRevision.txt").readline().strip().decode( 'utf-8') @@ -1968,6 +1980,7 @@ def make_dmg(): print('\n') else: fetch_cling(CLING_BRANCH if CLING_BRANCH else 'master') + travis_fold_end("git-clone") set_version() if args['current_dev'] == 'tar': From 396425d1131bda9269af5d51479e0816c4a60527 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 12:49:52 +0200 Subject: [PATCH 113/344] cling travis: teach travis to do two brew tasks. Again. --- interpreter/cling/.travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 03d74f1cf0622..c1943f2943503 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -72,7 +72,8 @@ matrix: - os: osx env: COMPILER=g++-7 CCOMPILER=gcc-7 before_install: - brew cask uninstall oclint; brew install gcc@7 + - brew cask uninstall oclint + - brew install gcc@7 compiler: gcc-7 - os: linux From e0e1c1b6f69393f4639b26d9db7631b90859ca16 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 15:32:46 +0200 Subject: [PATCH 114/344] cling travis: specify osx image. Fix compiler name for a build. --- interpreter/cling/.travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index c1943f2943503..199144fc2a9b4 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -71,6 +71,7 @@ matrix: - os: osx env: COMPILER=g++-7 CCOMPILER=gcc-7 + osx_image: xcode8.3 before_install: - brew cask uninstall oclint - brew install gcc@7 @@ -93,9 +94,9 @@ matrix: compiler: clang-3.9 - os: osx - env: COMPILER=g++-7 CCOMPILER=gcc-7 - osx_image: xcode8.3 - compiler: gcc-7 + env: COMPILER=clang++ CCOMPILER=clang + osx_image: xcode9.3 + compiler: clang - os: linux env: CXXLIB=libstdc++ COMPILER=clang++-5.0 CCOMPILER=clang-5.0 From c45dd4093b5bcfb8e80a934609cff25be175b879 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 15:33:06 +0200 Subject: [PATCH 115/344] cling travis: convince ccache to kick in. --- interpreter/cling/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 199144fc2a9b4..6fedd390e0c65 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -86,7 +86,7 @@ matrix: compiler: gcc-7 - os: linux - env: CXXLIB=libstdc++ COMPILER=clang++-3.9 CCOMPILER=clang-3.9 + env: CXXLIB=libstdc++ COMPILER="ccache clang++-3.9" CCOMPILER="ccache clang-3.9" addons: apt: sources: llvm-toolchain-trusty-3.9 From 954ec8d941ce3b423be17856000db632cf45cfce Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 17:20:03 +0200 Subject: [PATCH 116/344] cling travis: CMake and travis are uncooperative, cannot use ccache with clang: COMPILER="ccache clang" gets lost in CMake; using ccache does not work as there is no ccache-wrapper for clang-3.9. So just use clang-3.9 without ccache. --- interpreter/cling/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 6fedd390e0c65..199144fc2a9b4 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -86,7 +86,7 @@ matrix: compiler: gcc-7 - os: linux - env: CXXLIB=libstdc++ COMPILER="ccache clang++-3.9" CCOMPILER="ccache clang-3.9" + env: CXXLIB=libstdc++ COMPILER=clang++-3.9 CCOMPILER=clang-3.9 addons: apt: sources: llvm-toolchain-trusty-3.9 From 11bf34593e83ff3662390250de7618841c9c7f4f Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 13 Jun 2018 17:29:39 +0200 Subject: [PATCH 117/344] cling travis: create a new log section when *running*... ... not when echoing what is going to be run. --- interpreter/cling/.travis.yml | 40 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/interpreter/cling/.travis.yml b/interpreter/cling/.travis.yml index 199144fc2a9b4..7951d6e61e2e1 100644 --- a/interpreter/cling/.travis.yml +++ b/interpreter/cling/.travis.yml @@ -113,7 +113,7 @@ matrix: install: # If cmake is not in the cache, download it. - | - echo "travis_fold:start:install" + echo "travis_fold:""start:install" CLING_USER_ROOT=`dirname $TRAVIS_BUILD_DIR` export CLING_BUILD_DEPS="$CLING_USER_ROOT/deps" export CLING_LOCAL_BIN="$CLING_USER_ROOT/bin" @@ -130,7 +130,7 @@ install: export CLING_BUILD_FLAGS="$CLING_BUILD_FLAGS -DCXX_EXTENSIONS=OFF" fi fi - echo "travis_fold:end:install" + echo "travis_fold:""end:install" # Containers need to timeout before the buildscript exits TIMEOUT='37m' # Any more and Travis might cancel @@ -148,7 +148,7 @@ before_script: if [ -n "$NIGHTLY_CRON_SYNC" ] && [ "$TRAVIS_EVENT_TYPE" = "cron" ] \ && [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] \ && [ "$TRAVIS_REPO_SLUG" == "vgvassilev/cling" ] ; then - echo "travis_fold:start:sync-vgvassilev" + echo "travis_fold:""start:sync-vgvassilev" # Override the default travis clone command to enable sync. cd ../../ && rm -fr ${TRAVIS_REPO_SLUG} git clone https://$OAUTH_TOKEN@github.com/${TRAVIS_REPO_SLUG} ${TRAVIS_REPO_SLUG} @@ -167,7 +167,7 @@ before_script: # Some debug output. git remote -v && git branch -a - echo "travis_fold:end:sync-vgvassilev" + echo "travis_fold:""end:sync-vgvassilev" fi script: @@ -193,9 +193,9 @@ script: RESULT="$?" echo "Build Result: $RESULT" - echo "travis_fold:start:ccache-s" + echo "travis_fold:""start:ccache-s" ccache -s - echo "travis_fold:end:ccache-s" + echo "travis_fold:""end:ccache-s" if [ $RESULT -ne 124 ]; then return $RESULT fi @@ -219,7 +219,7 @@ notifications: before_deploy: - | - echo "travis_fold:start:before_deploy" + echo "travis_fold:""start:before_deploy" export RELEASE_TARBALL=$(ls $HOME/ci/build/cling*.tar.bz2) if [[ $TRAVIS_TAG -eq "cling-nightlies" ]]; then NIGHTLY="`dirname $RELEASE_TARBALL`/`date "+%Y-%b-%d-"``basename $RELEASE_TARBALL`" @@ -228,7 +228,7 @@ before_deploy: export RELEASE_TARBALL=$NIGHTLY fi echo "Deploying $RELEASE_TARBALL to GitHub releases" - echo "travis_fold:end:before_deploy" + echo "travis_fold:""end:before_deploy" deploy: @@ -244,14 +244,14 @@ deploy: after_failure: - | if [ -n "$CCACHE_LOGFILE" ]; then - echo "travis_fold:start:ccache_log" + echo "travis_fold:""start:ccache_log" echo "ccache log stored to:" cat "$CCACHE_LOGFILE" | curl -sT - chunk.io - echo "travis_fold:end:ccache_log" + echo "travis_fold:""end:ccache_log" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:start:env_dump" + echo "travis_fold:""start:env_dump" echo "Dumping env." find $CLING_LOCAL_BIN -type f -print0 -exec cat {} \; cmake --version @@ -259,25 +259,25 @@ after_failure: $CXX --version ls -al `which ld` && ld -v export - echo "travis_fold:end:env_dump" + echo "travis_fold:""end:env_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:start:cmakeoutputlog_dump" + echo "travis_fold:""start:cmakeoutputlog_dump" echo "Dumping CMakeOutput.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeOutput.log - echo "travis_fold:end:cmakeoutputlog_dump" + echo "travis_fold:""end:cmakeoutputlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:start:cmakeerrorlog_dump" + echo "travis_fold:""start:cmakeerrorlog_dump" echo "Dumping CMakeError.log" cat /home/travis/ci/build/builddir/CMakeFiles/CMakeError.log - echo "travis_fold:end:cmakeerrorlog_dump" + echo "travis_fold:""end:cmakeerrorlog_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:start:clingcompiledata_dump" + echo "travis_fold:""start:clingcompiledata_dump" echo "Dumping cling-compiledata.h..." COMPILE_DATA_H=$HOME/ci/build/builddir/tools/cling/lib/Interpreter/cling-compiledata.h cat $COMPILE_DATA_H @@ -285,13 +285,13 @@ after_failure: echo "Running cling-compiledata compiler..." COMPDATA_CXX=$(cat $COMPILE_DATA_H | cut -c 18- | sed "s,\",,g") eval echo | LC_ALL=C $COMPDATA_CXX -xc++ -E -v - - echo "travis_fold:end:clingcompiledata_dump" + echo "travis_fold:""end:clingcompiledata_dump" fi - | if [ "$CLING_BUILD_TIMEOUT" != "1" ]; then - echo "travis_fold:start:ccache_stats" + echo "travis_fold:""start:ccache_stats" echo "Dumping `which ccache`" ccache -s ls -la /usr/lib/ccache/ || ls -la /usr/local/opt/ccache/libexec - echo "travis_fold:end:ccache_stats" + echo "travis_fold:""end:ccache_stats" fi From b5279b3a64daaa3e238c41d96a771a99e25b49e7 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Jun 2018 11:23:57 +0200 Subject: [PATCH 118/344] Fix typo --- tutorials/eve/csgdemo.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/eve/csgdemo.C b/tutorials/eve/csgdemo.C index 88941e750c532..e570f29a89c4f 100644 --- a/tutorials/eve/csgdemo.C +++ b/tutorials/eve/csgdemo.C @@ -5,7 +5,7 @@ /// Stripped down to demonstrate EVE shape-extracts. /// 1. `Run root csgdemo.C` /// This will produce csg.root containing the extract. -/// 2. Display the assebly as: +/// 2. Display the assembly as: /// `root show_extract.C("csg.root")` /// /// \image html eve_csgdemo.png From 904f5956dbc6c2e5dce777eb4a00c32e16017ba2 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Jun 2018 11:24:31 +0200 Subject: [PATCH 119/344] Fix undefined variable with ROOT 6 --- tutorials/eve/glplot_geom.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/eve/glplot_geom.C b/tutorials/eve/glplot_geom.C index a799aceaeaf59..487eddabae053 100644 --- a/tutorials/eve/glplot_geom.C +++ b/tutorials/eve/glplot_geom.C @@ -16,7 +16,7 @@ void glplot_geom() TH3F *h31 = new TH3F("h31", "h31", 20, -3, 3, 20, -3, 3, 20, -3, 3); h31->FillRandom("gaus", 20*20*20); h31->SetFillColor(2); - x = new TEvePlot3D("EvePlot - TH3F"); + auto x = new TEvePlot3D("EvePlot - TH3F"); x->SetPlot(h31, "glbox"); x->RefMainTrans().Scale(800, 800, 1000); x->RefMainTrans().RotateLF(1, 3, TMath::PiOver2()); From 8af8dc0641240fd66739ee8489f469a834841904 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Jun 2018 11:31:55 +0200 Subject: [PATCH 120/344] Fix an undefined variable and the filling of the TH3F --- tutorials/eve/glplot.C | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tutorials/eve/glplot.C b/tutorials/eve/glplot.C index 751b51ce07f77..e310215a2fa35 100644 --- a/tutorials/eve/glplot.C +++ b/tutorials/eve/glplot.C @@ -14,15 +14,16 @@ void glplot() TF2 *f2 = new TF2("f2","x**2 + y**2 - x**3 -8*x*y**4", -1., 1.2, -1.5, 1.5); f2->SetFillColor(45); - x = new TEvePlot3D("EvePlot - TF2"); + auto x = new TEvePlot3D("EvePlot - TF2"); x->SetLogZ(kTRUE); x->SetPlot(f2,"glsurf4"); x->RefMainTrans().MoveLF(2, 1); gEve->AddElement(x); - TH3F *h31 = new TH3F("h31", "h31", 10, -1, 1, 10, -1, 1, 10, -1, 1); - h31->FillRandom("gaus"); + TF3 * gxy = new TF3("gaus2","xygaus"); + gxy->SetParameters(1,0,1,0,0.3); + h31->FillRandom("gaus2"); h31->SetFillColor(2); x = new TEvePlot3D("EvePlot - TH3F"); x->SetPlot(h31, "glbox"); From 465785fc6d5cc83b8059a244f63f82e8ba840f95 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Jun 2018 13:51:57 +0200 Subject: [PATCH 121/344] Create a named canvas instead of an unnamed one to avoid crash with the macro tutorials/gl/gviz3d.C (cocoa backend) --- graf3d/gviz3d/src/TStructViewerGUI.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graf3d/gviz3d/src/TStructViewerGUI.cxx b/graf3d/gviz3d/src/TStructViewerGUI.cxx index 440f3b1c1a846..9af36dc80b0e4 100644 --- a/graf3d/gviz3d/src/TStructViewerGUI.cxx +++ b/graf3d/gviz3d/src/TStructViewerGUI.cxx @@ -208,7 +208,7 @@ TStructViewerGUI::TStructViewerGUI(TStructViewer* parent, TStructNode* nodePtr, gGeoManager->SetTopVolume(fTopVolume); gGeoManager->SetNsegments(40); - fCanvas = new TCanvas("", "", 0, 0); + fCanvas = new TCanvas("c", "c", 0, 0); // drawing after creating canvas to avoid drawing in default canvas fGLViewer = new TGLEmbeddedViewer(this, fCanvas); AddFrame(fGLViewer->GetFrame(), new TGLayoutHints(kLHintsExpandX| kLHintsExpandY, 10,10,10,10)); From 6c1e798e5433db5968677da617ad4a059b17a378 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Jun 2018 13:57:52 +0200 Subject: [PATCH 122/344] In ROOT 6 TFormula does not have the Update() method anymore. --- tutorials/eve/SplitGLView.C | 1 - 1 file changed, 1 deletion(-) diff --git a/tutorials/eve/SplitGLView.C b/tutorials/eve/SplitGLView.C index 268ffd16927e2..6d8221eb8edd1 100644 --- a/tutorials/eve/SplitGLView.C +++ b/tutorials/eve/SplitGLView.C @@ -1063,7 +1063,6 @@ void SplitGLView::OnMouseIdle(TGLPhysicalShape *shape, UInt_t posx, UInt_t posy) static TH1F *h1f = 0; TFormula *form1 = new TFormula("form1","abs(sin(x)/x)"); - form1->Update(); // silent warning about unused variable... TF1 *sqroot = new TF1("sqroot","x*gaus(0) + [3]*form1",0,10); sqroot->SetParameters(10,4,1,20); if (h1f == 0) From b8759525a21cd860b485869f6ec0dac009bc4460 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 13 Jun 2018 17:34:37 +0200 Subject: [PATCH 123/344] This macro did not work with ROOT 6 --- tutorials/eve/window_manager.C | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tutorials/eve/window_manager.C b/tutorials/eve/window_manager.C index 45b25a84a7d25..9de490fe8ed5b 100644 --- a/tutorials/eve/window_manager.C +++ b/tutorials/eve/window_manager.C @@ -16,6 +16,10 @@ #include "TCanvas.h" #include "TGTab.h" +void PackTest(); +void DetailTest(); +void TabsTest(); + void window_manager() { TEveManager::Create(); @@ -73,9 +77,11 @@ void PackTest() void DetailTest() { + TEveWindowFrame *frame = 0; + TEveWindowSlot* slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); - pack1 = slot->MakePack(); + TEveWindowPack* pack1 = slot->MakePack(); pack1->SetShowTitleBar(kFALSE); pack1->SetElementName("Detail"); pack1->SetHorizontal(); From ae3d69254e14d162a31e440a46afe5e21ad6912a Mon Sep 17 00:00:00 2001 From: Oliver Evans Date: Wed, 13 Jun 2018 11:45:57 -0400 Subject: [PATCH 124/344] Fix typo in TAxis.cxx (#2191) `"Return an array with the *lod* edge of all bins" -> "Return an array with the *low* edge of all bins"` --- hist/hist/src/TAxis.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hist/hist/src/TAxis.cxx b/hist/hist/src/TAxis.cxx index d20ca3c05e1bc..b58c0c1f1276f 100644 --- a/hist/hist/src/TAxis.cxx +++ b/hist/hist/src/TAxis.cxx @@ -543,7 +543,7 @@ void TAxis::GetCenter(Double_t *center) const } //////////////////////////////////////////////////////////////////////////////// -/// Return an array with the lod edge of all bins +/// Return an array with the low edge of all bins void TAxis::GetLowEdge(Double_t *edge) const { From 77152f24c681a83e9137154f2b83c9e3d063e5f9 Mon Sep 17 00:00:00 2001 From: Stefan Wunsch Date: Wed, 13 Jun 2018 15:25:15 +0200 Subject: [PATCH 125/344] [RDF] Remove unused column in dataframe tutorial --- tutorials/dataframe/df018_customActions.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/dataframe/df018_customActions.C b/tutorials/dataframe/df018_customActions.C index b0069b0be0bc3..0f11fec89828d 100644 --- a/tutorials/dataframe/df018_customActions.C +++ b/tutorials/dataframe/df018_customActions.C @@ -87,7 +87,7 @@ void df018_customActions() {10., 10, 5., 7.}}; // Axes max values // We book the action: it will be treated during the event loop. - auto myTHnT = dd.Book(std::move(helper), {"x0", "x1", "x2", "x3", "x4"}); + auto myTHnT = dd.Book(std::move(helper), {"x0", "x1", "x2", "x3"}); myTHnT->Print(); } From 6688bbf0942f7e0c565bdd7196d59e74d9e977e9 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Wed, 13 Jun 2018 17:17:59 +0200 Subject: [PATCH 126/344] [DF] Check number of template pars and columns when booking custom actions --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 18 ++++++++++-------- tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx | 2 +- tree/dataframe/src/RDFInterfaceUtils.cxx | 4 ++-- tree/dataframe/test/dataframe_utils.cxx | 4 ++-- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 4145732fcc8f4..99abd482c7423 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -1427,6 +1427,8 @@ public: template RResultPtr Book(Helper &&h, const ColumnNames_t &columns = {}) { + RDFInternal::CheckTypesAndPars(sizeof...(ColumnTypes), columns.size()); + // TODO add more static sanity checks on Helper using AH = RDFDetail::RActionImpl; static_assert(std::is_base_of::value && std::is_convertible::value, @@ -1635,19 +1637,19 @@ private: /// since there are no copies, the address of the value passed by reference /// is the address pointing to the storage of the read/created object in/by /// the TTreeReaderValue/TemporaryBranch - template + template RResultPtr> SnapshotImpl(std::string_view treename, std::string_view filename, const ColumnNames_t &columnList, const RSnapshotOptions &options) { - RDFInternal::CheckSnapshot(sizeof...(BranchTypes), columnList.size()); + RDFInternal::CheckTypesAndPars(sizeof...(ColumnTypes), columnList.size()); auto lm = GetLoopManager(); const auto validCols = RDFInternal::GetValidatedColumnNames(*lm, columnList.size(), columnList, fValidCustomColumns, fDataSource); if (fDataSource) - RDFInternal::DefineDataSourceColumns(validCols, *lm, *fDataSource, std::index_sequence_for(), - TTraits::TypeList()); + RDFInternal::DefineDataSourceColumns(validCols, *lm, *fDataSource, std::index_sequence_for(), + TTraits::TypeList()); const std::string fullTreename(treename); // split name into directory and treename if needed @@ -1662,13 +1664,13 @@ private: std::shared_ptr actionPtr; if (!ROOT::IsImplicitMTEnabled()) { // single-thread snapshot - using Helper_t = RDFInternal::SnapshotHelper; - using Action_t = RDFInternal::RAction>; + using Helper_t = RDFInternal::SnapshotHelper; + using Action_t = RDFInternal::RAction>; actionPtr.reset(new Action_t(Helper_t(filename, dirname, treename, validCols, columnList, options), validCols, *fProxiedPtr)); } else { // multi-thread snapshot - using Helper_t = RDFInternal::SnapshotHelperMT; + using Helper_t = RDFInternal::SnapshotHelperMT; using Action_t = RDFInternal::RAction; actionPtr.reset( new Action_t(Helper_t(lm->GetNSlots(), filename, dirname, treename, validCols, columnList, options), @@ -1713,7 +1715,7 @@ private: // We share bits and pieces with snapshot. De facto this is a snapshot // in memory! - RDFInternal::CheckSnapshot(sizeof...(BranchTypes), columnList.size()); + RDFInternal::CheckTypesAndPars(sizeof...(BranchTypes), columnList.size()); if (fDataSource) { auto lm = GetLoopManager(); RDFInternal::DefineDataSourceColumns(columnList, *lm, *fDataSource, s, TTraits::TypeList()); diff --git a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx index d000871f55213..ca328fe6a1ef2 100644 --- a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx @@ -412,7 +412,7 @@ void CheckAggregate(T) /////////////////////////////////////////////////////////////////////////////// /// Check as many template parameters were passed as the number of column names, throw if this is not the case. -void CheckSnapshot(unsigned int nTemplateParams, unsigned int nColumnNames); +void CheckTypesAndPars(unsigned int nTemplateParams, unsigned int nColumnNames); /// Return local BranchNames or default BranchNames according to which one should be used const ColumnNames_t SelectColumns(unsigned int nArgs, const ColumnNames_t &bl, const ColumnNames_t &defBl); diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index 30a73c6dbde60..0903118a44c93 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -232,10 +232,10 @@ void CheckCustomColumn(std::string_view definedCol, TTree *treePtr, const Column } } -void CheckSnapshot(unsigned int nTemplateParams, unsigned int nColumnNames) +void CheckTypesAndPars(unsigned int nTemplateParams, unsigned int nColumnNames) { if (nTemplateParams != nColumnNames) { - std::string err_msg = "The number of template parameters specified for the snapshot is "; + std::string err_msg = "The number of template parameters specified is "; err_msg += std::to_string(nTemplateParams); err_msg += " while "; err_msg += std::to_string(nColumnNames); diff --git a/tree/dataframe/test/dataframe_utils.cxx b/tree/dataframe/test/dataframe_utils.cxx index 2aefa0aba6e34..c360e536cf396 100644 --- a/tree/dataframe/test/dataframe_utils.cxx +++ b/tree/dataframe/test/dataframe_utils.cxx @@ -152,11 +152,11 @@ TEST(RDataFrameUtils, CheckExistingCustomColumnDataSource) EXPECT_EQ(0, ret); } -TEST(RDataFrameUtils, CheckSnapshot) +TEST(RDataFrameUtils, CheckTypesAndPars) { int ret = 1; try { - ROOT::Internal::RDF::CheckSnapshot(5, 4); + ROOT::Internal::RDF::CheckTypesAndPars(5, 4); } catch (const std::runtime_error &e) { ret = 0; } From d7d270d2005a8b565220c0bcb6148edd028b1068 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Wed, 13 Jun 2018 17:20:13 +0200 Subject: [PATCH 127/344] [DF] Remove df018 tutorial from imt veto --- tutorials/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index fe27066b2bdb6..f1b58da3bb583 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -138,7 +138,7 @@ if(NOT TBB_FOUND AND NOT builtin_tbb) endif() if(NOT ROOT_imt_FOUND) - set(imt_veto multicore/imt*.C multicore/mt*.C dataframe/df018_customActions.C) + set(imt_veto multicore/imt*.C multicore/mt*.C) else() if(MSVC) #---Multiproc is not supported on Windows From 46a876c2d55d77c52b3804f315ea00bebf01a62a Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 08:49:24 +0200 Subject: [PATCH 128/344] Make sure quadset.C works with ROOT 6 --- tutorials/eve/quadset.C | 39 +++++++++++++++++++++++++++--- tutorials/eve/quadset_callback.cxx | 25 ------------------- 2 files changed, 35 insertions(+), 29 deletions(-) delete mode 100644 tutorials/eve/quadset_callback.cxx diff --git a/tutorials/eve/quadset.C b/tutorials/eve/quadset.C index ed7401fd53283..084d68b76b3c5 100644 --- a/tutorials/eve/quadset.C +++ b/tutorials/eve/quadset.C @@ -7,6 +7,12 @@ /// /// \author Matevz Tadel +void quadset_callback(TEveDigitSet* ds, Int_t idx, TObject* obj); +TString quadset_tooltip_callback(TEveDigitSet* ds, Int_t idx); +void quadset_set_callback(TEveDigitSet* ds); + +//------------------------------------------------------------------------------ + TEveQuadSet* quadset(Float_t x=0, Float_t y=0, Float_t z=0, Int_t num=100, Bool_t registerSet=kTRUE) { @@ -234,12 +240,13 @@ TEveQuadSet* quadset_hexid(Float_t x=0, Float_t y=0, Float_t z=0, } } - // This show another way of getting notified about - // secondary selection hit. The callback function and the - // setting of it must be done in compiled code. - gROOT->ProcessLine(".L quadset_callback.cxx+"); quadset_set_callback(q); + // With the following you get per digit highlight with tooltip. + //q->SetPickable(1); + //q->SetAlwaysSecSelect(1); + // Otherwise you need to Alt - left click to get info printout. + return q; } @@ -270,3 +277,27 @@ void quadset_hierarchy(Int_t n=4) gEve->Redraw3D(); } + +//------------------------------------------------------------------------------ + +void quadset_callback(TEveDigitSet* ds, Int_t idx, TObject* obj) +{ + printf("dump_digit_set_hit - 0x%lx, id=%d, obj=0x%lx\n", + (ULong_t) ds, idx, (ULong_t) obj); +} + +TString quadset_tooltip_callback(TEveDigitSet* ds, Int_t idx) +{ + // This gets called for tooltip if the following is set: + // q->SetPickable(1); + // q->SetAlwaysSecSelect(1); + + return TString::Format("callback tooltip for '%s' - 0x%lx, id=%d\n", + ds->GetElementName(), (ULong_t) ds, idx); +} + +void quadset_set_callback(TEveDigitSet* ds) +{ + ds->SetCallbackFoo(quadset_callback); + ds->SetTooltipCBFoo(quadset_tooltip_callback); +} diff --git a/tutorials/eve/quadset_callback.cxx b/tutorials/eve/quadset_callback.cxx deleted file mode 100644 index a833bbc1bd594..0000000000000 --- a/tutorials/eve/quadset_callback.cxx +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include - -void quadset_callback(TEveDigitSet* ds, Int_t idx, TObject* obj) -{ - printf("dump_digit_set_hit - 0x%lx, id=%d, obj=0x%lx\n", - (ULong_t) ds, idx, (ULong_t) obj); -} - -TString quadset_tooltip_callback(TEveDigitSet* ds, Int_t idx) -{ - // This gets called for tooltip if the following is set: - // q->SetPickable(1); - // q->SetAlwaysSecSelect(1); - - return TString::Format("callback tooltip for '%s' - 0x%lx, id=%d\n", - ds->GetElementName(), (ULong_t) ds, idx); - -} - -void quadset_set_callback(TEveDigitSet* ds) -{ - ds->SetCallbackFoo(quadset_callback); - ds->SetTooltipCBFoo(TEveDigitSet* ds, Int_t idx) -} From 86c5bba2117f046b1a5450e451c884fd1b34982d Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Thu, 14 Jun 2018 08:57:11 +0200 Subject: [PATCH 129/344] cling README: typo. Thanks, Damien L-G! --- interpreter/cling/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/cling/README.md b/interpreter/cling/README.md index 8b5729b8fa3fc..394609b5b1bb3 100644 --- a/interpreter/cling/README.md +++ b/interpreter/cling/README.md @@ -80,7 +80,7 @@ or type Jupyter ------- Cling comes with a [Jupyter](http://jupyter.org) kernel. After building cling, -install Jupyter and cling's kernel by following the README.mk in +install Jupyter and cling's kernel by following the README.md in [tools/Jupyter](tools/Jupyter). Make sure cling is in your PATH when you start jupyter! From f409295be0ced782909c0b474c7142b657dc3c4d Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Wed, 13 Jun 2018 13:32:40 +0200 Subject: [PATCH 130/344] Revert "[cxxmodules] Don't generate rootmap files with cxxmodules" This reverts commit 8bb0a978a34e8f026a98642afe118e15d2356b6c. With ACLiC, which means if you do "root.exe hsimple.C+", ROOT generates library for hsimple.C and execute this library instead of interpreting it at runtime. This didn't work with our "preloading modules" infrastructure, as it's not even interpreting. We can fix this by 1. Adding NEEDED section when generating so files. This is like a "static linker" solution, which means we'll change rootcling_impl to properly add dependency libraries. 2. Try to get callback from library I think this makes ACLiC slower, so I like the 1st solution However, for now, let's just revert this patch. --- core/dictgen/src/rootcling_impl.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/dictgen/src/rootcling_impl.cxx b/core/dictgen/src/rootcling_impl.cxx index 12e2923312a9b..a049e7a1c1af6 100644 --- a/core/dictgen/src/rootcling_impl.cxx +++ b/core/dictgen/src/rootcling_impl.cxx @@ -5096,7 +5096,7 @@ int RootClingMain(int argc, else return a + " " + b; }); - bool rootMapNeeded = (!rootmapFileName.empty() || !rootmapLibName.empty()) && !cxxmodule; + bool rootMapNeeded = !rootmapFileName.empty() || !rootmapLibName.empty(); std::list classesNames; std::list classesNamesForRootmap; From 1951bb784293d84235c5406e05aa654e82c53de8 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Thu, 14 Jun 2018 09:38:33 +0200 Subject: [PATCH 131/344] cling cpt: make sure TRAVIS_BUILD_DIR is found if set. --- interpreter/cling/tools/packaging/cpt.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interpreter/cling/tools/packaging/cpt.py b/interpreter/cling/tools/packaging/cpt.py index 7161795bce48c..7a3c5803c9697 100755 --- a/interpreter/cling/tools/packaging/cpt.py +++ b/interpreter/cling/tools/packaging/cpt.py @@ -91,11 +91,11 @@ def exec_subprocess_check_output(cmd, cwd): return out def travis_fold_start(tag): - if TRAVIS_BUILD_DIR: + if os.environ.get('TRAVIS_BUILD_DIR', None): print('travis_fold:start:cpt-%s:' % (tag)) def travis_fold_end(tag): - if TRAVIS_BUILD_DIR: + if os.environ.get('TRAVIS_BUILD_DIR', None): print('travis_fold:end:cpt-%s:' % (tag)) def box_draw_header(): From 2c1475703b12fd0f44687ad2e13f0e1f909ef4ce Mon Sep 17 00:00:00 2001 From: Stefan Wunsch Date: Mon, 28 May 2018 11:19:16 +0200 Subject: [PATCH 132/344] [PyROOT] Pretty printing feature based on cling::printValue --- bindings/pyroot/src/Pythonize.cxx | 25 ++++++++++- bindings/pyroot/test/CMakeLists.txt | 1 + bindings/pyroot/test/pretty_printing.py | 55 +++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 bindings/pyroot/test/pretty_printing.py diff --git a/bindings/pyroot/src/Pythonize.cxx b/bindings/pyroot/src/Pythonize.cxx index 8eb4e46da4275..0c4817217f13a 100644 --- a/bindings/pyroot/src/Pythonize.cxx +++ b/bindings/pyroot/src/Pythonize.cxx @@ -48,6 +48,7 @@ #include #include #include +#include #include #include // only needed for Cling TMinuit workaround @@ -2262,6 +2263,23 @@ namespace { return BindCppObject( addr, (Cppyy::TCppType_t)Cppyy::GetScope( "TObject" ), kFALSE ); } + //- Pretty printing with cling::PrintValue + PyObject *ClingPrintValue(ObjectProxy *self) + { + PyObject *cppname = PyObject_GetAttrString((PyObject *)self, "__cppname__"); + if (!PyROOT_PyUnicode_Check(cppname)) + return 0; + std::string className = PyROOT_PyUnicode_AsString(cppname); + Py_XDECREF(cppname); + + std::string pprint; + std::stringstream calcPrintValue; + calcPrintValue << "*((std::string*)" << &pprint << ") = cling::printValue((" << className << "*)" + << self->GetObject() << ");"; + gInterpreter->Calc(calcPrintValue.str().c_str()); + return PyROOT_PyUnicode_FromString(pprint.c_str()); + } + //- Adding array interface to classes --------------- void AddArrayInterface(PyObject *pyclass, PyCFunction func) { @@ -2331,9 +2349,12 @@ Bool_t PyROOT::Pythonize( PyObject* pyclass, const std::string& name ) if ( pyclass == 0 ) return kFALSE; -//- method name based pythonization -------------------------------------------- + // add pretty printing + Utility::AddToClass(pyclass, "__str__", (PyCFunction)ClingPrintValue); + + //- method name based pythonization -------------------------------------------- -// for smart pointer style classes (note fall-through) + // for smart pointer style classes (note fall-through) if ( HasAttrDirect( pyclass, PyStrings::gDeref ) ) { Utility::AddToClass( pyclass, "__getattr__", (PyCFunction) DeRefGetAttr, METH_O ); } else if ( HasAttrDirect( pyclass, PyStrings::gFollow ) ) { diff --git a/bindings/pyroot/test/CMakeLists.txt b/bindings/pyroot/test/CMakeLists.txt index 2da5c0240e398..4530e911d5dc9 100644 --- a/bindings/pyroot/test/CMakeLists.txt +++ b/bindings/pyroot/test/CMakeLists.txt @@ -3,5 +3,6 @@ ROOT_ADD_PYUNITTEST(pyroot_list_initialization list_initialization.py) if(NUMPY_FOUND) ROOT_ADD_PYUNITTEST(pyroot_array_interface array_interface.py) ROOT_ADD_PYUNITTEST(pyroot_ttree_asmatrix ttree_asmatrix.py) + ROOT_ADD_PYUNITTEST(pyroot_pretty_printing pretty_printing.py) endif() diff --git a/bindings/pyroot/test/pretty_printing.py b/bindings/pyroot/test/pretty_printing.py new file mode 100644 index 0000000000000..63addb52e19d1 --- /dev/null +++ b/bindings/pyroot/test/pretty_printing.py @@ -0,0 +1,55 @@ +import unittest +import ROOT + + +class PrettyPrinting(unittest.TestCase): + # Helpers + def _print(self, obj): + print("print({}) -> {}".format(obj.__cppname__, obj)) + + # Tests + def test_RVec(self): + x = ROOT.VecOps.RVec("float")(4) + for i in range(x.size()): + x[i] = i + self._print(x) + self.assertIn("{ 0", x.__str__()) + + def test_STLVector(self): + x = ROOT.std.vector("float")(4) + for i in range(x.size()): + x[i] = i + self._print(x) + self.assertIn("{ 0", x.__str__()) + + def test_STLMap(self): + x = ROOT.std.map("string", "int")() + for i, s in enumerate(["foo", "bar"]): + x[s] = i + self._print(x) + self.assertIn("foo", x.__str__()) + self.assertIn("bar", x.__str__()) + + def test_STLPair(self): + x = ROOT.std.pair("string", "int")("foo", 42) + self._print(x) + self.assertIn("foo", x.__str__()) + + def test_TNamed(self): + x = ROOT.TNamed("name", "title") + self._print(x) + self.assertEqual("Name: name Title: title", x.__str__()) + + def test_TObject(self): + x = ROOT.TObject() + self._print(x) + self.assertEqual("Name: TObject Title: Basic ROOT object", x.__str__()) + + def test_TH1F(self): + x = ROOT.TH1F("name", "title", 10, 0, 1) + self._print(x) + self.assertEqual("Name: name Title: title NbinsX: 10", x.__str__()) + + +if __name__ == '__main__': + unittest.main() From 71ed8351fb91a32cd0cd471703c8ac4b654d3e08 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Thu, 14 Jun 2018 10:05:51 +0200 Subject: [PATCH 133/344] cling cpt travis fold: misspelled "end". --- interpreter/cling/tools/packaging/cpt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/cling/tools/packaging/cpt.py b/interpreter/cling/tools/packaging/cpt.py index 7a3c5803c9697..ede9ecb8f7794 100755 --- a/interpreter/cling/tools/packaging/cpt.py +++ b/interpreter/cling/tools/packaging/cpt.py @@ -561,7 +561,7 @@ def compile(arg, build_libcpp): + ' -v ".I"', shell=True) except Exception as e: print(e) - travis_fold_start("compile") + travis_fold_end("compile") def install_prefix(): travis_fold_start("install") From 414ebabc9dae8c949333f3c9131b43794770bbc4 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 10:31:40 +0200 Subject: [PATCH 134/344] use "auto" --- tutorials/eve/text.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/text.C b/tutorials/eve/text.C index ea4ecc271ea3d..c7842322503bd 100644 --- a/tutorials/eve/text.C +++ b/tutorials/eve/text.C @@ -13,7 +13,7 @@ TEveText* text() TEveManager::Create(); - TEvePointSet* marker = new TEvePointSet(8); + auto marker = new TEvePointSet(8); marker->SetName("Origin marker"); marker->SetMarkerColor(6); marker->SetMarkerStyle(3); @@ -28,7 +28,7 @@ TEveText* text() marker->SetPoint(7, -a, -a, -a); gEve->AddElement(marker); - TEveText* t = new TEveText("DADA"); + auto t = new TEveText("DADA"); t->PtrMainTrans()->RotateLF(1, 3, TMath::PiOver2()); t->SetMainColor(kOrange-2); t->SetFontSize(64); From 8838a580c8590da5452a906fccbe7f382bdbb4a2 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 10:35:38 +0200 Subject: [PATCH 135/344] - spell check - use auto - remove wrong #endif (prevent to execute le macro) --- tutorials/eve/track.C | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/tutorials/eve/track.C b/tutorials/eve/track.C index 8e87dbc0b7196..4c8e8ca6f75b4 100644 --- a/tutorials/eve/track.C +++ b/tutorials/eve/track.C @@ -10,13 +10,13 @@ /// ~~~ /// void track(Int_t mode = 5, Bool_t isRungeKutta = kTRUE) /// Modes are -/// 0. B = 0, no difference btween signed and charge particles; +/// 0. B = 0, no difference between signed and charge particles; /// 1. constant B field (along z, but could have arbitrary direction); /// 2. variable B field, sign change at R = 200 cm; /// 3. magnetic field with a zero-field region; /// 4. CMS magnetic field - simple track; /// 5. CMS magnetic field - track with different path-marks. -/// 6. Concpetual ILC detector, problematic track +/// 6. Conceptual ILC detector, problematic track /// /// \image html eve_track.png /// \macro_code @@ -100,7 +100,7 @@ public: { //inside solenoid if ( R < 300) return TEveVectorD(0,0,field); - // outside solinoid + // outside solenoid if ( m_simpleModel || ( R>461.0 && R<490.5 ) || ( R>534.5 && R<597.5 ) || @@ -142,19 +142,19 @@ TEveTrack* make_track(TEveTrackPropagator* prop, Int_t sign) // Make track with given propagator. // Add to math-marks to test fit. - TEveRecTrackD *rc = new TEveRecTrackD(); + auto rc = new TEveRecTrackD(); rc->fV.Set(0.028558, -0.000918, 3.691919); rc->fP.Set(0.767095, -2.400006, -0.313103); rc->fSign = sign; - TEveTrack* track = new TEveTrack(rc, prop); + auto track = new TEveTrack(rc, prop); track->SetName(Form("Charge %d", sign)); // daughter 0 - TEvePathMarkD* pm1 = new TEvePathMarkD(TEvePathMarkD::kDaughter); + auto pm1 = new TEvePathMarkD(TEvePathMarkD::kDaughter); pm1->fV.Set(1.479084, -4.370661, 3.119761); track->AddPathMark(*pm1); // daughter 1 - TEvePathMarkD* pm2 = new TEvePathMarkD(TEvePathMarkD::kDaughter); + auto pm2 = new TEvePathMarkD(TEvePathMarkD::kDaughter); pm2->fV.Set(57.72345, -89.77011, -9.783746); track->AddPathMark(*pm2); @@ -168,8 +168,8 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) gSystem->IgnoreSignal(kSigSegmentationViolation, true); TEveManager::Create(); - TEveTrackList *list = new TEveTrackList(); - TEveTrackPropagator* prop = g_prop = list->GetPropagator(); + auto list = new TEveTrackList(); + auto prop = g_prop = list->GetPropagator(); prop->SetFitDaughters(kFALSE); prop->SetMaxZ(1000); @@ -188,7 +188,7 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) { case 0: { - // B = 0 no difference btween signed and charge particles + // B = 0 no difference between signed and charge particles prop->SetMagField(0.); list->SetElementName(Form("%s, zeroB", list->GetElementName())); track = make_track(prop, 1); @@ -220,13 +220,13 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) list->SetElementName(Form("%s, gappedB", list->GetElementName())); - TEveRecTrackD *rc = new TEveRecTrackD(); + auto rc = new TEveRecTrackD(); rc->fV.Set(0.028558, -0.000918, 3.691919); rc->fP.Set(0.767095, -0.400006, 2.313103); rc->fSign = 1; track = new TEveTrack(rc, prop); - TEvePointSet* marker = new TEvePointSet(2); + auto marker = new TEvePointSet(2); marker->SetElementName("B field break points"); marker->SetPoint(0, 0., 0., 300.f); marker->SetPoint(1, 0., 0., 600.f); @@ -238,7 +238,7 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) case 4: { // Magnetic field of CMS I. - CmsMagField* mf = new CmsMagField; + auto mf = new CmsMagField; mf->setReverseState(true); prop->SetMagFieldObj(mf); @@ -250,7 +250,7 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) list->SetElementName(Form("%s, CMS field", list->GetElementName())); - TEveRecTrackD *rc = new TEveRecTrackD(); + auto rc = new TEveRecTrackD(); rc->fV.Set(0.027667, 0.007919, 0.895964); rc->fP.Set(3.903134, 2.252232, -3.731366); rc->fSign = -1; @@ -276,7 +276,7 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) case 5: { // Magnetic field of CMS I. - CmsMagField* mf = new CmsMagField; + auto mf = new CmsMagField; mf->setReverseState(true); mf->setSimpleModel(false); @@ -289,7 +289,7 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) prop->RefPMAtt().SetMarkerStyle(4); list->SetElementName(Form("%s, CMS field", list->GetElementName())); - TEveRecTrackD *rc = new TEveRecTrackD(); + auto rc = new TEveRecTrackD(); rc->fV.Set(-16.426592, 16.403185, -19.782692); rc->fP.Set(3.631100, 3.643450, 0.682254); rc->fSign = -1; @@ -332,7 +332,7 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) list->SetElementName(Form("%s, Some ILC Detector field", list->GetElementName())); - TEveRecTrackD *rc = new TEveRecTrackD(); + auto rc = new TEveRecTrackD(); rc->fV.Set(57.1068, 31.2401, -7.07629); rc->fP.Set(4.82895, 2.35083, -0.611757); rc->fSign = 1; @@ -373,6 +373,4 @@ void track(Int_t mode = 1, Bool_t isRungeKutta = kTRUE) gv->CurrentCamera().RotateRad(-0.5, 1.4); gv->RequestDraw(); -} - -#endif +} \ No newline at end of file From 92f417d8a49faa20944677c9c7fc6710666f0529 Mon Sep 17 00:00:00 2001 From: moneta Date: Fri, 1 Jun 2018 12:41:36 +0200 Subject: [PATCH 136/344] Update release notes (copy from 6.14 branch) --- README/ReleaseNotes/v614/index.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v614/index.md b/README/ReleaseNotes/v614/index.md index 2ee61c4bf50d5..6341511c5f79b 100644 --- a/README/ReleaseNotes/v614/index.md +++ b/README/ReleaseNotes/v614/index.md @@ -13,6 +13,7 @@ For more information, see: The following people have contributed to this new version: + Kim Albertsson, CERN/EP-ADP-OS,\ Guilherme Amadio, CERN/SFT,\ Bertrand Bellenot, CERN/SFT,\ Brian Bockelman, UNL,\ @@ -23,6 +24,7 @@ The following people have contributed to this new version: Andrei Gheata, CERN/SFT,\ Enrico Guiraud, CERN/SFT,\ Raphael Isemann, Chalmers Univ. of Tech.,\ + Vladimir Ilievski, GSOC 2017,\ Sergey Linev, GSI,\ Pere Mato, CERN/SFT,\ Lorenzo Moneta, CERN/SFT,\ @@ -31,9 +33,11 @@ The following people have contributed to this new version: Fons Rademakers, CERN/SFT,\ Enric Tejedor Saavedra, CERN/SFT,\ Oksana Shadura, UNL,\ + Saurav Shekhar, GSOC 2017,\ Xavier Valls Pla, UJI, CERN/SFT,\ Vassil Vassilev, Princeton/CMS,\ Wouter Verkerke, NIKHEF/Atlas, RooFit,\ + Stefan Wunsch, CERN/SFT, \ Zhe Zhang, UNL ## Important Notice @@ -144,12 +148,30 @@ Since we loop over all the branches for each new entry all the baskets for a clu ## Histogram Libraries - - Per object statsoverflow flag has been added. This change is required to prevent non reproducible behaviours in a multithreaded environments. For example, if several threads change the `TH1::fgStatOverflows` flag and fill histograms, the behaviour will be undefined. + - Per object statsoverflow flag has been added. This change is required to prevent non reproducible behaviours in a multithreaded environments. For example, if several threads change the + `TH1::fgStatOverflows` flag and fill histograms, the behaviour will be undefined. + - A fix has been added in resetting the statistics of histograms with label. The bug was causing the histogram entries to be set as zero and this was making failing the merging of those + histogram (see ROOT-9336). ## Math Libraries + ## RooFit Libraries +- A fix has been added in the component selection, which is used for plotting simultaneous models. See [PR #2033](https://github.com/root-project/root/pull/2033). + +## TMVA Library + +#### New Deep Learning Module + + - TMVA contains a new set of Deep Learning classes ( `MethodDL` ), with support, in addition to dense layer, also convolutional and recurrent layer. + +#### Other New TMVA Features + +- Support for Parallelization of BDT using Multi-Threads +- Several improvements in Cross Validation including support for Multi-Process cross-validation running. + + ## 2D Graphics Libraries - `TMultiGraph::GetHistogram` now works even if the multigraph is not drawn. Make sure it never returns a null pointer. From 618834a268199861e62bb117faee654f67cf59fb Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:12:55 +0200 Subject: [PATCH 137/344] use auto --- tutorials/eve/glplot.C | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/eve/glplot.C b/tutorials/eve/glplot.C index e310215a2fa35..6e530714b10ce 100644 --- a/tutorials/eve/glplot.C +++ b/tutorials/eve/glplot.C @@ -12,7 +12,7 @@ void glplot() TEveManager::Create(); gEve->GetDefaultGLViewer()->SetCurrentCamera(TGLViewer::kCameraPerspXOY); - TF2 *f2 = new TF2("f2","x**2 + y**2 - x**3 -8*x*y**4", -1., 1.2, -1.5, 1.5); + auto f2 = new TF2("f2","x**2 + y**2 - x**3 -8*x*y**4", -1., 1.2, -1.5, 1.5); f2->SetFillColor(45); auto x = new TEvePlot3D("EvePlot - TF2"); x->SetLogZ(kTRUE); @@ -20,8 +20,8 @@ void glplot() x->RefMainTrans().MoveLF(2, 1); gEve->AddElement(x); - TH3F *h31 = new TH3F("h31", "h31", 10, -1, 1, 10, -1, 1, 10, -1, 1); - TF3 * gxy = new TF3("gaus2","xygaus"); + auto h31 = new TH3F("h31", "h31", 10, -1, 1, 10, -1, 1, 10, -1, 1); + auto gxy = new TF3("gaus2","xygaus"); gxy->SetParameters(1,0,1,0,0.3); h31->FillRandom("gaus2"); h31->SetFillColor(2); From 6b4edd2b04b7833dbc61536b955df9949c718218 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:14:08 +0200 Subject: [PATCH 138/344] - fix error: Function: gaus is not a TF3, is a TF1 - use auto --- tutorials/eve/glplot_geom.C | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/glplot_geom.C b/tutorials/eve/glplot_geom.C index 487eddabae053..a60da6d92bf53 100644 --- a/tutorials/eve/glplot_geom.C +++ b/tutorials/eve/glplot_geom.C @@ -13,8 +13,11 @@ void glplot_geom() TEveUtil::Macro("show_extract.C"); - TH3F *h31 = new TH3F("h31", "h31", 20, -3, 3, 20, -3, 3, 20, -3, 3); - h31->FillRandom("gaus", 20*20*20); + auto h31 = new TH3F("h31", "h31", 20, -3, 3, 20, -3, 3, 20, -3, 3); + auto gxy = new TF3("gaus2","xygaus"); + gxy->SetParameters(1,0,1,0,0.3); + h31->FillRandom("gaus2"); + h31->SetFillColor(2); auto x = new TEvePlot3D("EvePlot - TH3F"); x->SetPlot(h31, "glbox"); From cb18a8a88225ecd0c516a48f30018d74e1ae4e4c Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:14:56 +0200 Subject: [PATCH 139/344] - use auto - spell check - formating --- tutorials/eve/hierarchical_scene.C | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tutorials/eve/hierarchical_scene.C b/tutorials/eve/hierarchical_scene.C index ab14d5f088954..7100a1efbe83e 100644 --- a/tutorials/eve/hierarchical_scene.C +++ b/tutorials/eve/hierarchical_scene.C @@ -13,9 +13,8 @@ void add_blobs(TEveElement* p, Float_t rad, Float_t height, Float_t size, { if (level <= 0) return; - for (Int_t i = 0; i < Ns; ++i) - { - TEveGeoShape* x = new TEveGeoShape("SS"); + for (Int_t i = 0; i < Ns; ++i) { + auto x = new TEveGeoShape("SS"); x->SetShape(new TGeoSphere(0, size)); Double_t phi = TMath::TwoPi() * i / Ns; x->RefMainTrans().SetPos(rad*TMath::Cos(phi), @@ -36,7 +35,7 @@ void hierarchical_scene() TColor::SetPalette(1, 0); gRandom = new TRandom3(0); - TEveScene *s = gEve->SpawnNewScene("Hierachical Scene", "OoogaDooga"); + auto s = gEve->SpawnNewScene("Hierarchical Scene", "OoogaDooga"); s->SetHierarchical(kTRUE); gEve->GetDefaultViewer()->AddScene(s); From 581b36e15ba954bdf94c223d81da0987585c9ed8 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:15:24 +0200 Subject: [PATCH 140/344] - use auto - spell check --- tutorials/eve/jetcone.C | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tutorials/eve/jetcone.C b/tutorials/eve/jetcone.C index 04451c1c2e66c..9772e4b712e12 100644 --- a/tutorials/eve/jetcone.C +++ b/tutorials/eve/jetcone.C @@ -29,26 +29,26 @@ void jetcone() Float_t length = 300.; // -- Define palette - TEveRGBAPalette* pal = new TEveRGBAPalette(0, 500); + auto pal = new TEveRGBAPalette(0, 500); // ----------------------------------------------------------------------- // -- Line sets // ----------------------------------------------------------------------- // -- Define cone center - TEveStraightLineSet* axis = new TEveStraightLineSet("Cone Axis"); + auto axis = new TEveStraightLineSet("Cone Axis"); axis->SetLineColor(kGreen); axis->SetLineWidth(2); - TEveStraightLineSet* tracksXYZ = new TEveStraightLineSet("StraightLinesXYZ"); + auto tracksXYZ = new TEveStraightLineSet("StraightLinesXYZ"); tracksXYZ->SetLineColor(kRed); tracksXYZ->SetLineWidth(2); - TEveStraightLineSet* tracksEtaPhi = new TEveStraightLineSet("StraightLinesEtaPhi"); + auto tracksEtaPhi = new TEveStraightLineSet("StraightLinesEtaPhi"); tracksEtaPhi->SetLineColor(kYellow); tracksEtaPhi->SetLineWidth(2); - TEveStraightLineSet* tracksSeedEtaPhi = new TEveStraightLineSet("StraightLinesEtaPhiSeed"); + auto tracksSeedEtaPhi = new TEveStraightLineSet("StraightLinesEtaPhiSeed"); tracksSeedEtaPhi->SetLineColor(kBlue); tracksSeedEtaPhi->SetLineWidth(2); @@ -98,7 +98,7 @@ void jetcone() Float_t coneEta = r.Uniform(-0.9, 0.9); Float_t conePhi = r.Uniform(0.0, TwoPi() ); - // -- Primary vertx as origin + // -- Primary vertex as origin TEveVector coneOrigin(0.0,0.0,0.0); // -- Get Cone Axis - axis line 10% longer than cone height @@ -108,7 +108,7 @@ void jetcone() axis->AddLine( 0., 0., 0., coneAxis.fX, coneAxis.fY, coneAxis.fZ ); // -- Draw jet cone - TEveJetCone* jetCone = new TEveJetCone("JetCone"); + auto jetCone = new TEveJetCone("JetCone"); jetCone->SetPickable(kTRUE); jetCone->SetCylinder( 250., 250. ); if ( (jetCone->AddCone( coneEta, conePhi, coneRadius ) ) != -1) From 578f57dcc4cac10c224de31c30832724d446bc61 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:15:48 +0200 Subject: [PATCH 141/344] - use auto - formatting --- tutorials/eve/lineset.C | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/tutorials/eve/lineset.C b/tutorials/eve/lineset.C index 6d71a34faf9af..3c326da520145 100644 --- a/tutorials/eve/lineset.C +++ b/tutorials/eve/lineset.C @@ -14,17 +14,14 @@ TEveStraightLineSet* lineset(Int_t nlines = 40, Int_t nmarkers = 4) TRandom r(0); Float_t s = 100; - TEveStraightLineSet* ls = new TEveStraightLineSet(); + auto ls = new TEveStraightLineSet(); - for(Int_t i = 0; iAddLine( r.Uniform(-s,s), r.Uniform(-s,s), r.Uniform(-s,s), r.Uniform(-s,s), r.Uniform(-s,s), r.Uniform(-s,s)); // add random number of markers Int_t nm = Int_t(nmarkers* r.Rndm()); - for(Int_t m = 0; m < nm; m++) { - ls->AddMarker(i, r.Rndm()); - } + for (Int_t m = 0; m < nm; m++) ls->AddMarker(i, r.Rndm()); } ls->SetMarkerSize(1.5); @@ -43,17 +40,14 @@ TEveStraightLineSet* lineset_2d(Int_t nlines = 40, Int_t nmarkers = 4) TRandom r(0); Float_t s = 100; - TEveStraightLineSet* ls = new TEveStraightLineSet(); + auto ls = new TEveStraightLineSet(); - for(Int_t i = 0; iAddLine( r.Uniform(-s,s), r.Uniform(-s,s), 0, r.Uniform(-s,s), r.Uniform(-s,s), 0); // add random number of markers Int_t nm = Int_t(nmarkers* r.Rndm()); - for(Int_t m = 0; m < nm; m++) { - ls->AddMarker(i, r.Rndm()); - } + for (Int_t m = 0; m < nm; m++) ls->AddMarker(i, r.Rndm()); } ls->SetMarkerSize(1.5); From 394777f8b08dd87b4ee4bca2ed4ea49a888bb4c7 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:16:03 +0200 Subject: [PATCH 142/344] use auto --- tutorials/eve/overlay_palette.C | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tutorials/eve/overlay_palette.C b/tutorials/eve/overlay_palette.C index 0737a7cb93d4e..572a17fb68728 100644 --- a/tutorials/eve/overlay_palette.C +++ b/tutorials/eve/overlay_palette.C @@ -8,10 +8,8 @@ void overlay_palette() { TEveManager::Create(); - - TEveRGBAPalette *p = new TEveRGBAPalette(0, 100); - TEveRGBAPaletteOverlay *po = new TEveRGBAPaletteOverlay(p, 0.55, 0.1, 0.4, 0.05); - - TGLViewer* v = gEve->GetDefaultGLViewer(); + auto p = new TEveRGBAPalette(0, 100); + auto po = new TEveRGBAPaletteOverlay(p, 0.55, 0.1, 0.4, 0.05); + auto v = gEve->GetDefaultGLViewer(); v->AddOverlayElement(po); } From c19628f5a2b438d7b34774f2debd24488830eb15 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:16:30 +0200 Subject: [PATCH 143/344] use auto --- tutorials/eve/pack.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/eve/pack.C b/tutorials/eve/pack.C index 42af31630a5ef..95194a916c217 100644 --- a/tutorials/eve/pack.C +++ b/tutorials/eve/pack.C @@ -14,7 +14,7 @@ TGTextButton* b = 0; void pack() { - TGMainFrame* mf = new TGMainFrame(0, 400, 300); + auto mf = new TGMainFrame(0, 400, 300); mf->SetWindowName("Foo"); hp = new TGPack(mf, mf->GetWidth(), mf->GetHeight()); From 8b041c20f6c8ccd1e2cda0f771a1b51705d61e3c Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:16:58 +0200 Subject: [PATCH 144/344] - use auto - formatting --- tutorials/eve/paramlist.C | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tutorials/eve/paramlist.C b/tutorials/eve/paramlist.C index ed4094721ca68..fd30104cab83b 100644 --- a/tutorials/eve/paramlist.C +++ b/tutorials/eve/paramlist.C @@ -26,11 +26,9 @@ public: void OnParamChanged(const char* parameter) { - TEveParamList* pl = dynamic_cast - (reinterpret_cast(gTQSender)); + auto pl = dynamic_cast (reinterpret_cast(gTQSender)); - printf("Change in param-list '%s', parameter '%s'.\n", - pl->GetElementName(), parameter); + printf("Change in param-list '%s', parameter '%s'.\n", pl->GetElementName(), parameter); } ClassDef(TParamFollower, 0); From 29dd2addf611b9a6dc6287dad33794a8e726b7cf Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:17:38 +0200 Subject: [PATCH 145/344] - use auto - formating --- tutorials/eve/pointset.C | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/tutorials/eve/pointset.C b/tutorials/eve/pointset.C index 8e01c26e154ee..d602ddcd9158c 100644 --- a/tutorials/eve/pointset.C +++ b/tutorials/eve/pointset.C @@ -19,13 +19,12 @@ TEvePointSet* pointset(Int_t npoints = 512, TEveElement* parent=0) { TEveManager::Create(); - if (!gRandom) - gRandom = new TRandom(0); + if (!gRandom) gRandom = new TRandom(0); TRandom& r= *gRandom; Float_t s = 100; - TEvePointSet* ps = new TEvePointSet(); + auto ps = new TEvePointSet(); ps->SetOwnIds(kTRUE); for(Int_t i = 0; iSetMarkerSize(r.Uniform(1, 2)); ps->SetMarkerStyle(4); - if (parent) - { + if (parent) { parent->AddElement(ps); - } - else - { + } else { gEve->AddElement(ps); gEve->Redraw3D(); } @@ -51,20 +47,17 @@ TEvePointSet* pointset(Int_t npoints = 512, TEveElement* parent=0) return ps; } -TEvePointSet* -pointset_hierarchy(Int_t level=3, Int_t nps=1, Int_t fac=2, - Int_t npoints=512, TEveElement* parent=0) +TEvePointSet* pointset_hierarchy(Int_t level=3, Int_t nps=1, Int_t fac=2, + Int_t npoints=512, TEveElement* parent=0) { // This only works in compiled mode! TEvePointSet* ps = 0; --level; - for (Int_t i=0; iSetSourceCS(TEvePointSelectorConsumer::kTVT_RPhiZ); l->SetMarkerColor(3); l->SetMarkerStyle(4); // antialiased circle @@ -95,13 +88,11 @@ TEvePointSetArray* pointsetarray() l->GetBin(10)->SetMainColor(kWhite); Double_t rad, phi, z; - for (Int_t i = 0; i < 10000; ++i) - { + for (Int_t i = 0; i < 10000; ++i) { rad = r.Uniform(60, 180); phi = r.Uniform(0, TMath::TwoPi()); z = r.Uniform(-250, 250); - l->Fill(rad*TMath::Cos(phi), rad*TMath::Sin(phi), z, - r.Uniform(0, 110)); + l->Fill(rad*TMath::Cos(phi), rad*TMath::Sin(phi), z, r.Uniform(0, 110)); } l->CloseBins(); From 52632384a7b013139fad847d59570b56c0010d55 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:18:07 +0200 Subject: [PATCH 146/344] - spell check - use auto --- tutorials/eve/projection.C | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/tutorials/eve/projection.C b/tutorials/eve/projection.C index 3c273c1b9af87..e29f2f21aaf87 100644 --- a/tutorials/eve/projection.C +++ b/tutorials/eve/projection.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_eve -/// Demonstates usage of automatic 2D projections - class TEveProjectionManager. +/// Demonstrates usage of automatic 2D projections - class TEveProjectionManager. /// /// \image html eve_projection.png /// \macro_code @@ -16,30 +16,29 @@ void projection() TEveManager::Create(); // camera - TEveScene* s = gEve->SpawnNewScene("Projected Event"); + auto s = gEve->SpawnNewScene("Projected Event"); gEve->GetDefaultViewer()->AddScene(s); - TGLViewer* v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY); TGLOrthoCamera& cam = (TGLOrthoCamera&) v->CurrentCamera(); cam.SetZoomMinMax(0.2, 20); // projections - TEveProjectionManager* mng = - new TEveProjectionManager(TEveProjection::kPT_RPhi); + auto mng = new TEveProjectionManager(TEveProjection::kPT_RPhi); s->AddElement(mng); - TEveProjectionAxes* axes = new TEveProjectionAxes(mng); + auto axes = new TEveProjectionAxes(mng); axes->SetTitle("TEveProjections demo"); s->AddElement(axes); gEve->AddToListTree(axes, kTRUE); gEve->AddToListTree(mng, kTRUE); // Simple geometry - TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); + auto geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); if (!geom) return; - TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); - TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse, 0); + auto gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); + auto gsre = TEveGeoShape::ImportShapeExtract(gse, 0); geom->Close(); delete geom; gsre->SetPickableRecursively(kTRUE); @@ -47,7 +46,7 @@ void projection() gEve->GetGlobalScene()->SetRnrState(kFALSE); mng->ImportElements(gsre); - TEveLine* line = new TEveLine; + auto line = new TEveLine; line->SetMainColor(kGreen); for (Int_t i=0; i<160; ++i) line->SetNextPoint(120*sin(0.2*i), 120*cos(0.2*i), 80-i); From 027d53f053b4d54d75fd3a6f642286fd54833e8e Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:18:27 +0200 Subject: [PATCH 147/344] - spell check - use auto --- tutorials/eve/projection_prescale.C | 33 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/tutorials/eve/projection_prescale.C b/tutorials/eve/projection_prescale.C index 553a322e24a0b..11f04d764858f 100644 --- a/tutorials/eve/projection_prescale.C +++ b/tutorials/eve/projection_prescale.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_eve -/// Demonstates usage pre-scaling for automatic 2D projections. +/// Demonstrates usage pre-scaling for automatic 2D projections. /// /// \image html eve_projection_prescale.png /// \macro_code @@ -15,22 +15,22 @@ void projection_prescale() TFile::SetCacheFileDir("."); TEveManager::Create(); - TEveViewer *pev = gEve->SpawnNewViewer("Projections"); + auto pev = gEve->SpawnNewViewer("Projections"); // camera - TEveScene* s = gEve->SpawnNewScene("Projected Geom"); + auto s = gEve->SpawnNewScene("Projected Geom"); pev->AddScene(s); - TGLViewer* pgv = pev->GetGLViewer(); + auto pgv = pev->GetGLViewer(); pgv->SetCurrentCamera(TGLViewer::kCameraOrthoXOY); TGLOrthoCamera& cam = (TGLOrthoCamera&) pgv->CurrentCamera(); cam.SetZoomMinMax(0.2, 20); // projections - TEveProjectionManager* mng = new TEveProjectionManager(); + auto mng = new TEveProjectionManager(); { mng->SetProjection(TEveProjection::kPT_RPhi); - TEveProjection* p = mng->GetProjection(); + auto p = mng->GetProjection(); p->AddPreScaleEntry(0, 0, 4); // r scale 4 from 0 p->AddPreScaleEntry(0, 45, 1); // r scale 1 from 45 p->AddPreScaleEntry(0, 310, 0.5); @@ -38,7 +38,7 @@ void projection_prescale() } { mng->SetProjection(TEveProjection::kPT_RhoZ); - TEveProjection* p = mng->GetProjection(); + auto p = mng->GetProjection(); // Increase silicon tracker p->AddPreScaleEntry(0, 0, 4); // rho scale 4 from 0 p->AddPreScaleEntry(1, 0, 4); // z scale 4 from 0 @@ -53,24 +53,24 @@ void projection_prescale() mng->SetProjection(TEveProjection::kPT_RPhi); s->AddElement(mng); - TEveProjectionAxes* axes = new TEveProjectionAxes(mng); + auto axes = new TEveProjectionAxes(mng); s->AddElement(axes); gEve->AddToListTree(axes, kTRUE); gEve->AddToListTree(mng, kTRUE); // Simple geometry - TFile* geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); + auto geom = TFile::Open(esd_geom_file_name, "CACHEREAD"); if (!geom) return; - TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); - TEveGeoShape* gsre = TEveGeoShape::ImportShapeExtract(gse, 0); + auto gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); + auto gsre = TEveGeoShape::ImportShapeExtract(gse, 0); geom->Close(); delete geom; gEve->AddGlobalElement(gsre); mng->ImportElements(gsre); - TEveLine* line = new TEveLine; + auto line = new TEveLine; line->SetMainColor(kGreen); for (Int_t i=0; i<160; ++i) line->SetNextPoint(120*sin(0.2*i), 120*cos(0.2*i), 80-i); @@ -83,15 +83,14 @@ void projection_prescale() // Scaled 3D "projection" //------------------------------------------------------------------------- - TEveViewer *sev = gEve->SpawnNewViewer("Scaled 3D"); - TEveProjectionManager* smng = - new TEveProjectionManager(TEveProjection::kPT_3D); - TEveProjection* sp = smng->GetProjection(); + auto sev = gEve->SpawnNewViewer("Scaled 3D"); + auto smng = new TEveProjectionManager(TEveProjection::kPT_3D); + auto sp = smng->GetProjection(); sp->SetUsePreScale(kTRUE); sp->AddPreScaleEntry(2, 0, 1); sp->AddPreScaleEntry(2, 100, 0.2); - TEveScene* ss = gEve->SpawnNewScene("Scaled Geom"); + auto ss = gEve->SpawnNewScene("Scaled Geom"); sev->AddScene(ss); ss->AddElement(smng); From 981415da3a7e585f420e3cf42b35c915a63d3b11 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:18:45 +0200 Subject: [PATCH 148/344] - use auto --- tutorials/eve/show_extract.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/show_extract.C b/tutorials/eve/show_extract.C index a8c4909313271..809686122bb63 100644 --- a/tutorials/eve/show_extract.C +++ b/tutorials/eve/show_extract.C @@ -22,8 +22,8 @@ void show_extract(const char* file="http://root.cern.ch/files/alice_ESDgeometry. { if (xxx == key->GetClassName()) { - TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) key->ReadObj(); - TEveGeoShape* gs = TEveGeoShape::ImportShapeExtract(gse, 0); + auto gse = (TEveGeoShapeExtract*) key->ReadObj(); + auto gs = TEveGeoShape::ImportShapeExtract(gse, 0); gEve->AddGlobalElement(gs); } } From 0e31d7dc4a9f55eed4cdd5eade875d89a7980c58 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:25:52 +0200 Subject: [PATCH 149/344] - fix wrong comment - use auto --- tutorials/eve/geom_lhcb.C | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/eve/geom_lhcb.C b/tutorials/eve/geom_lhcb.C index 52235df471c24..ba501e33f8ad9 100644 --- a/tutorials/eve/geom_lhcb.C +++ b/tutorials/eve/geom_lhcb.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_eve -/// Shows CMS geometry. +/// Shows LHCB geometry. /// /// \image html eve_geom_lhcb.png /// \macro_code @@ -15,7 +15,7 @@ void geom_lhcb() gGeoManager = gEve->GetGeometry("http://root.cern.ch/files/lhcbfull.root"); gGeoManager->DefaultColors(); - TEveGeoTopNode* tn = new TEveGeoTopNode(gGeoManager, gGeoManager->GetTopNode()); + auto tn = new TEveGeoTopNode(gGeoManager, gGeoManager->GetTopNode()); tn->SetVisLevel(4); gEve->AddGlobalElement(tn); @@ -23,7 +23,7 @@ void geom_lhcb() // EClipType not exported to CINT (see TGLUtil.h): // 0 - no clip, 1 - clip plane, 2 - clip box - TGLViewer *v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); v->GetClipSet()->SetClipType(TGLClip::EType(1)); v->ColorSet().Background().SetColor(kMagenta+4); v->SetGuideState(TGLUtil::kAxesEdge, kTRUE, kFALSE, 0); From f07e08cd9a3b76161dc26b4724629b842232f6ac Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:32:47 +0200 Subject: [PATCH 150/344] - spell check - use auto --- tutorials/eve/geom_cms_stereo.C | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tutorials/eve/geom_cms_stereo.C b/tutorials/eve/geom_cms_stereo.C index 808a595202248..ab214c04862ad 100644 --- a/tutorials/eve/geom_cms_stereo.C +++ b/tutorials/eve/geom_cms_stereo.C @@ -2,7 +2,7 @@ /// \ingroup tutorial_eve /// Shows CMS geometry in stereo mode. /// This requires quad-buffer support in the OpenGL hardware / driver, -/// otheriwse a fatal error occurs. +/// otherwise a fatal error occurs. /// /// \image html eve_geom_cms_stereo.png /// \macro_code @@ -17,17 +17,17 @@ void geom_cms_stereo(Bool_t quad_buf=kTRUE) gGeoManager = gEve->GetGeometry("http://root.cern.ch/files/cms.root"); gGeoManager->DefaultColors(); - TGeoVolume* top = gGeoManager->GetTopVolume()->FindNode("CMSE_1")->GetVolume(); + auto top = gGeoManager->GetTopVolume()->FindNode("CMSE_1")->GetVolume(); - TEveGeoTopNode* trk = new TEveGeoTopNode(gGeoManager, top->FindNode("TRAK_1")); + auto trk = new TEveGeoTopNode(gGeoManager, top->FindNode("TRAK_1")); trk->SetVisLevel(6); gEve->AddGlobalElement(trk); - TEveGeoTopNode* calo = new TEveGeoTopNode(gGeoManager, top->FindNode("CALO_1")); + auto calo = new TEveGeoTopNode(gGeoManager, top->FindNode("CALO_1")); calo->SetVisLevel(3); gEve->AddGlobalElement(calo); - TEveGeoTopNode* muon = new TEveGeoTopNode(gGeoManager, top->FindNode("MUON_1")); + auto muon = new TEveGeoTopNode(gGeoManager, top->FindNode("MUON_1")); muon->SetVisLevel(4); gEve->AddGlobalElement(muon); @@ -36,7 +36,7 @@ void geom_cms_stereo(Bool_t quad_buf=kTRUE) TEveWindowSlot* slot = 0; slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); - TEveViewer* sv = new TEveViewer("Stereo GL", "Stereoscopic view"); + auto sv = new TEveViewer("Stereo GL", "Stereoscopic view"); sv->SpawnGLViewer(gEve->GetEditor(), kTRUE, quad_buf); sv->AddScene(gEve->GetGlobalScene()); @@ -55,7 +55,7 @@ void geom_cms_stereo(Bool_t quad_buf=kTRUE) // EClipType not exported to CINT (see TGLUtil.h): // 0 - no clip, 1 - clip plane, 2 - clip box - TGLViewer *v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); v->GetClipSet()->SetClipType(TGLClip::EType(1)); v->ColorSet().Background().SetColor(kMagenta+4); v->SetGuideState(TGLUtil::kAxesEdge, kTRUE, kFALSE, 0); From 9ca988b5e1634abab6ce784140f4f86838374ea2 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:34:40 +0200 Subject: [PATCH 151/344] - spell check - use auto --- tutorials/eve/geom_cms_playback.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/geom_cms_playback.C b/tutorials/eve/geom_cms_playback.C index bf772af87226b..3a02135bac324 100644 --- a/tutorials/eve/geom_cms_playback.C +++ b/tutorials/eve/geom_cms_playback.C @@ -5,7 +5,7 @@ /// /// Script: /// - type: .x geom_cms.C -/// - demonstratate rotation (left-mouse), zoom (right-mouse left-right) +/// - demonstrate rotation (left-mouse), zoom (right-mouse left-right) /// - show GL window Help Window /// - show wireframe (w), smooth (r, default) and outline (t) render modes /// - show flip of background color dark-light-dark (e pressed twice) @@ -21,5 +21,5 @@ void geom_cms_playback() { - TRecorder* r = new TRecorder("http://root.cern.ch/files/geom_cms_recording.root"); + auto r = new TRecorder("http://root.cern.ch/files/geom_cms_recording.root"); } From 7eca657afdfb5c1586333a7b377f194540400a5f Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 11:36:04 +0200 Subject: [PATCH 152/344] use auto --- tutorials/eve/geom_cms.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/eve/geom_cms.C b/tutorials/eve/geom_cms.C index ff5b07369665c..8eb7eb1ac232e 100644 --- a/tutorials/eve/geom_cms.C +++ b/tutorials/eve/geom_cms.C @@ -15,17 +15,17 @@ void geom_cms() gGeoManager = gEve->GetGeometry("http://root.cern.ch/files/cms.root"); gGeoManager->DefaultColors(); - TGeoVolume* top = gGeoManager->GetTopVolume()->FindNode("CMSE_1")->GetVolume(); + auto top = gGeoManager->GetTopVolume()->FindNode("CMSE_1")->GetVolume(); TEveGeoTopNode* trk = new TEveGeoTopNode(gGeoManager, top->FindNode("TRAK_1")); trk->SetVisLevel(6); gEve->AddGlobalElement(trk); - TEveGeoTopNode* calo = new TEveGeoTopNode(gGeoManager, top->FindNode("CALO_1")); + auto calo = new TEveGeoTopNode(gGeoManager, top->FindNode("CALO_1")); calo->SetVisLevel(3); gEve->AddGlobalElement(calo); - TEveGeoTopNode* muon = new TEveGeoTopNode(gGeoManager, top->FindNode("MUON_1")); + auto muon = new TEveGeoTopNode(gGeoManager, top->FindNode("MUON_1")); muon->SetVisLevel(4); gEve->AddGlobalElement(muon); @@ -33,7 +33,7 @@ void geom_cms() // EClipType not exported to CINT (see TGLUtil.h): // 0 - no clip, 1 - clip plane, 2 - clip box - TGLViewer *v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); v->GetClipSet()->SetClipType(TGLClip::EType(1)); v->ColorSet().Background().SetColor(kMagenta+4); v->SetGuideState(TGLUtil::kAxesEdge, kTRUE, kFALSE, 0); From 117657e04b3ea1099f0c7f00598f1ec58a0f6d05 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Wed, 13 Jun 2018 14:24:38 +0200 Subject: [PATCH 153/344] Add operator<< for RSha256Hash, also exploiting ADL --- core/foundation/res/ROOT/RSha256.hxx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/foundation/res/ROOT/RSha256.hxx b/core/foundation/res/ROOT/RSha256.hxx index cac647492daa0..7b513be089de4 100644 --- a/core/foundation/res/ROOT/RSha256.hxx +++ b/core/foundation/res/ROOT/RSha256.hxx @@ -261,6 +261,12 @@ namespace Internal { /// This helper class represents a sha256 hash. Operator == and std::less /// complete its functionality. class RSha256Hash { + friend std::ostream &operator<<(std::ostream &os, const ROOT::Internal::RSha256Hash &h) + { + auto digest = h.Get(); + os << digest[0] << "-" << digest[1] << "-" << digest[2] << "-" << digest[3]; + return os; + } private: void Sha256(const unsigned char *data, int len) { From a15930642d5d3239757b54baafc508e5556d6564 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Wed, 13 Jun 2018 14:25:57 +0200 Subject: [PATCH 154/344] [IO] Add printout about non-treatment of streamer info record in case gDebug is greater than 0. --- io/io/src/TFile.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 7f58980dbffe1..2fec4948cbca9 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -1344,6 +1344,7 @@ std::pair TFile::GetStreamerInfoListImpl(bool lookupSICache) #ifdef R__USE_IMT if (lookupSICache) { if (!fgTsSIHashes.Insert(buf,fNbytesInfo)) { + if (gDebug > 0) Info("GetStreamerInfo", "The streamer info record for file %s has already been treated, skipping it.", GetName()); return {nullptr, 0}; } } From cfd707f30eabb8fad49f5bca75e1adf18075e60b Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Thu, 14 Jun 2018 08:50:13 +0200 Subject: [PATCH 155/344] [DF] Warn the user in case a lazy snapshot was booked but not triggered both in the sequential and MT case. The sequential case has also been fixed since a non-triggered lazy snapshot caused a crash. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index fa8040978ce71..81b6aa465ec05 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -741,8 +741,13 @@ public: void Finalize() { - ::TDirectory::TContext ctxt(fOutputFile->GetDirectory(fDirName.c_str())); - fOutputTree->Write(); + if (fOutputFile && fOutputTree) { + ::TDirectory::TContext ctxt(fOutputFile->GetDirectory(fDirName.c_str())); + fOutputTree->Write(); + } else { + Warning("Snapshot", "A lazy Snapshot action was booked but never triggered."); + } + } }; @@ -839,9 +844,15 @@ public: void Finalize() { + auto fileWritten = false; for (auto &file : fOutputFiles) { - if (file) + if (file) { + fileWritten = true; file->Write(); + } + } + if (!fileWritten) { + Warning("Snapshot", "A lazy Snapshot action was booked but never triggered."); } } }; From 823174661891789d9b46164ce85d68ff494a1d7c Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Thu, 14 Jun 2018 08:51:33 +0200 Subject: [PATCH 156/344] [DF] Add tests for non-triggered lazy snapshot in the sequential and MT cases --- tree/dataframe/test/dataframe_snapshot.cxx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx index 32ccb5e1531b8..3da128a808f66 100644 --- a/tree/dataframe/test/dataframe_snapshot.cxx +++ b/tree/dataframe/test/dataframe_snapshot.cxx @@ -470,6 +470,15 @@ TEST(RDFSnapshotMore, Lazy) gSystem->Unlink(fname1); } +TEST(RDFSnapshotMore, LazyNotTriggered) +{ + { + auto d = ROOT::RDataFrame(1); + ROOT::RDF::RSnapshotOptions opts; + opts.fLazy = true; + d.Snapshot("t", "foo.root", {"tdfentry_"}, opts); + } +} /********* MULTI THREAD TESTS ***********/ #ifdef R__USE_IMT @@ -618,4 +627,15 @@ TEST(RDFSnapshotMore, JittedSnapshotAndAliasedColumns) gSystem->Unlink(fname2); } +TEST(RDFSnapshotMore, LazyNotTriggeredMT) +{ + ROOT::EnableImplicitMT(4); + { + auto d = ROOT::RDataFrame(8); + ROOT::RDF::RSnapshotOptions opts; + opts.fLazy = true; + d.Snapshot("t", "foo.root", {"tdfentry_"}, opts); + } +} + #endif // R__USE_IMT From 18995234822808eba58acfeecc131b3725ac5402 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 14 Jun 2018 21:38:53 +0200 Subject: [PATCH 157/344] [DOC] Uniform doxygen doc for TTree::Write overloads --- tree/tree/src/TTree.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/tree/src/TTree.cxx b/tree/tree/src/TTree.cxx index 8aad35cd1dde8..4eb223f4b5cd0 100644 --- a/tree/tree/src/TTree.cxx +++ b/tree/tree/src/TTree.cxx @@ -9305,7 +9305,7 @@ void TTree::UseCurrentStyle() //////////////////////////////////////////////////////////////////////////////// /// Write this object to the current directory. For more see TObject::Write -/// Write calls TTree::FlushBaskets before writing the tree. +/// If option & kFlushBasket, call FlushBasket before writing the tree. Int_t TTree::Write(const char *name, Int_t option, Int_t bufsize) const { From b420f8f7d5fef438a870730bf89a0ad88ad0878f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 14 Jun 2018 19:22:47 +0200 Subject: [PATCH 158/344] [DF] Clean after test cast --- tree/dataframe/test/dataframe_snapshot.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx index 3da128a808f66..f63e0d7592933 100644 --- a/tree/dataframe/test/dataframe_snapshot.cxx +++ b/tree/dataframe/test/dataframe_snapshot.cxx @@ -630,12 +630,16 @@ TEST(RDFSnapshotMore, JittedSnapshotAndAliasedColumns) TEST(RDFSnapshotMore, LazyNotTriggeredMT) { ROOT::EnableImplicitMT(4); + const auto fname = "lazynottriggeredmt.root"; { auto d = ROOT::RDataFrame(8); ROOT::RDF::RSnapshotOptions opts; opts.fLazy = true; - d.Snapshot("t", "foo.root", {"tdfentry_"}, opts); + d.Snapshot("t", fname, {"tdfentry_"}, opts); } + + gSystem->Unlink(fname); + ROOT::DisableImplicitMT(); } #endif // R__USE_IMT From 2d573beb95909eced0fd64e466c75c069393a543 Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Fri, 1 Jun 2018 14:49:41 +0200 Subject: [PATCH 159/344] [cxxmodules] Implement Bloom Filter Bloom filter in header section of so files is well described by: https://blogs.oracle.com/solaris/gnu-hash-elf-sections-v2 and lld/ELF/SyntheticSections.cpp The point is that the static linker puts bloom filter value to .gnu.hash section in so files. We just have to read this value and compare to the mangled_name hash that we're looking for. Bloom filter is a false posive probability data structure, so it might say "yes" to library which "doesn't" contain mangled_name, but it won't say "no" to library which "do" contain mangled_name. Modules W/O this patch ``` Processing tutorials/hsimple.C... hsimple : Real Time = 0.04 seconds Cpu Time = 0.03 seconds (TFile *) 0x562b37a14fe0 Processing /home/yuka/CERN/ROOT/memory.C... cpu time = 0.362307 seconds sys time = 0.039741 seconds res memory = 278.215 Mbytes vir memory = 448.973 Mbytes ``` Modules With this patch ``` Processing tutorials/hsimple.C... hsimple : Real Time = 0.05 seconds Cpu Time = 0.05 seconds (TFile *) 0x564410677780 Processing /home/yuka/CERN/ROOT/memory.C... cpu time = 0.356471 seconds sys time = 0.079519 seconds res memory = 266.73 Mbytes vir memory = 423.59 Mbytes ``` This difference become bigger when we need to lookup more libraries in experiments. --- core/metacling/src/TCling.cxx | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 4a04c15f01515..124f31fa61b9a 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5903,6 +5903,53 @@ bool TCling::LibraryLoadingFailed(const std::string& errmessage, const std::stri return false; } +// This is a GNU implementation of hash used in bloom filter! +static uint32_t GNUHash(StringRef S) { + uint32_t H = 5381; + for (uint8_t C : S) + H = (H << 5) + H + C; + return H; +} + +static StringRef GetGnuHashSection(llvm::object::ObjectFile *file) { + for (auto S : file->sections()) { + StringRef name; + S.getName(name); + if (name == ".gnu.hash") { + StringRef content; + S.getContents(content); + return content; + } + } + return ""; +} + +// Bloom filter. See https://blogs.oracle.com/solaris/gnu-hash-elf-sections-v2 +// for detailed desctiption. In short, there is a .gnu.hash section in so files which contains +// bloomfilter hash value that we can compare with our mangled_name hash. This is a false positive +// probability data structure and enables us to skip libraries which doesn't contain mangled_name definition! +// PE and Mach-O files doesn't have .gnu.hash bloomfilter section, so this is a specific optimization for ELF. +// This is fine because performance critical part (data centers) are running on Linux :) +static bool LookupBloomFilter(llvm::object::ObjectFile *soFile, uint32_t hash) { + const int bits = 64; + + StringRef contents = GetGnuHashSection(soFile); + if (contents.size() < 16) + return false; + const char* hashContent = contents.data(); + + // See https://flapenguin.me/2017/05/10/elf-lookup-dt-gnu-hash/ for .gnu.hash table layout. + uint32_t maskWords = *reinterpret_cast(hashContent + 8); + uint32_t shift2 = *reinterpret_cast(hashContent + 12); + uint32_t hash2 = hash >> shift2; + uint32_t n = (hash / bits) % maskWords; + + const char *bloomfilter = hashContent + 16; + const char *hash_pos = bloomfilter + n*(bits/8); // * (Bits / 8) + uint64_t word = *reinterpret_cast(hash_pos); + uint64_t bitmask = ( (1ULL << (hash % bits)) | (1ULL << (hash2 % bits))); + return (bitmask & word) == bitmask; +} static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_name, cling::Interpreter *fInterpreter) { @@ -5955,11 +6002,17 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam sFirstRun = false; } + uint32_t hashedMangle = GNUHash(mangled_name); // Iterate over files under this path. We want to get each ".so" files for (const std::string& LibName : sLibraries) { auto SoFile = ObjectFile::createObjectFile(LibName); if (SoFile) { auto RealSoFile = SoFile.get().getBinary(); + + // Check Bloom filter. If false, it means that this library doesn't contain mangled_name defenition + if (!LookupBloomFilter(RealSoFile, hashedMangle)) + continue; + auto Symbols = RealSoFile->symbols(); for (auto S : Symbols) { // DO NOT insert to table if symbol was weak or undefined From 6f236664f6ea2aae1a1076a46496e29af297a918 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Fri, 15 Jun 2018 09:25:45 +0200 Subject: [PATCH 160/344] [DF] Look for branches names only once and cache the result rather than re-creating the full set every time it's needed. This is a performance optimisation. The routine for finding branches names is not lightweight, especially when dealing with trees with tens of branches. The names of the branches is now cached in the RInterface and its ownership shared among the RInterface instances. --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 77 +++++++++++-------- tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx | 7 +- tree/dataframe/src/RDFInterfaceUtils.cxx | 18 ++--- tree/dataframe/test/dataframe_utils.cxx | 32 ++++---- 4 files changed, 74 insertions(+), 60 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 99abd482c7423..d1479ca0e037b 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -111,6 +111,7 @@ class RInterface { ColumnNames_t fValidCustomColumns; ///< Names of columns `Define`d for this branch of the functional graph. /// Non-owning pointer to a data-source object. Null if no data-source. RLoopManager has ownership of the object. RDataSource *const fDataSource = nullptr; + std::shared_ptr fBranchNames; ///< Cache of the chain columns names public: //////////////////////////////////////////////////////////////////////////// @@ -161,15 +162,14 @@ public: auto loopManager = GetLoopManager(); using ColTypes_t = typename TTraits::CallableTraits::arg_types; constexpr auto nColumns = ColTypes_t::list_size; - const auto validColumnNames = - RDFInternal::GetValidatedColumnNames(*loopManager, nColumns, columns, fValidCustomColumns, fDataSource); + const auto validColumnNames = GetValidatedColumnNames(nColumns, columns); if (fDataSource) RDFInternal::DefineDataSourceColumns(validColumnNames, *loopManager, *fDataSource, std::make_index_sequence(), ColTypes_t()); using F_t = RDFDetail::RFilter; auto FilterPtr = std::make_shared(std::move(f), validColumnNames, *fProxiedPtr, name); loopManager->Book(FilterPtr); - return RInterface(FilterPtr, fImplWeakPtr, fValidCustomColumns, fDataSource); + return RInterface(FilterPtr, fImplWeakPtr, fValidCustomColumns, fBranchNames, fDataSource); } //////////////////////////////////////////////////////////////////////////// @@ -220,14 +220,15 @@ public: auto upcastNode = RDFInternal::UpcastNode(fProxiedPtr); RInterface upcastInterface(upcastNode, fImplWeakPtr, - fValidCustomColumns, fDataSource); + fValidCustomColumns, fBranchNames, fDataSource); const auto prevNodeTypeName = upcastInterface.GetNodeTypeName(); const auto jittedFilter = std::make_shared(df.get(), name); RDFInternal::BookFilterJit(jittedFilter.get(), upcastNode.get(), prevNodeTypeName, name, expression, aliasMap, branches, customColumns, tree, fDataSource, df->GetID()); df->Book(jittedFilter); - return RInterface(jittedFilter, fImplWeakPtr, fValidCustomColumns, fDataSource); + return RInterface(jittedFilter, fImplWeakPtr, fValidCustomColumns, + fBranchNames, fDataSource); } // clang-format off @@ -333,7 +334,8 @@ public: RDFInternal::BookDefineJit(name, expression, *lm, fDataSource); - RInterface newInterface(fProxiedPtr, fImplWeakPtr, fValidCustomColumns, fDataSource); + RInterface newInterface(fProxiedPtr, fImplWeakPtr, fValidCustomColumns, + fBranchNames, fDataSource); newInterface.fValidCustomColumns.emplace_back(name); return newInterface; } @@ -356,11 +358,10 @@ public: // If the alias name is a column name, there is a problem RDFInternal::CheckCustomColumn(alias, loopManager->GetTree(), fValidCustomColumns, dsColumnNames); - const auto validColumnName = RDFInternal::GetValidatedColumnNames(*loopManager, 1, {std::string(columnName)}, - fValidCustomColumns, fDataSource)[0]; + const auto validColumnName = GetValidatedColumnNames(1, {std::string(columnName)})[0]; loopManager->AddColumnAlias(std::string(alias), validColumnName); - RInterface newInterface(fProxiedPtr, fImplWeakPtr, fValidCustomColumns, fDataSource); + RInterface newInterface(fProxiedPtr, fImplWeakPtr, fValidCustomColumns, fBranchNames, fDataSource); newInterface.fValidCustomColumns.emplace_back(alias); return newInterface; } @@ -409,7 +410,7 @@ public: std::stringstream snapCall; auto upcastNode = RDFInternal::UpcastNode(fProxiedPtr); RInterface> upcastInterface(fProxiedPtr, fImplWeakPtr, - fValidCustomColumns, fDataSource); + fValidCustomColumns, fBranchNames, fDataSource); // build a string equivalent to // "(RInterface*)(this)->Snapshot(treename,filename,*(ColumnNames_t*)(&columnList), options)" // on Windows, to prefix the hexadecimal value of a pointer with '0x', @@ -419,8 +420,7 @@ public: const auto &customCols = df->GetCustomColumnNames(); const auto dontConvertVector = false; - const auto validCols = - RDFInternal::GetValidatedColumnNames(*df, columnList.size(), columnList, fValidCustomColumns, fDataSource); + const auto validCols = GetValidatedColumnNames(columnList.size(), columnList); for (auto &c : validCols) { const auto isCustom = std::find(customCols.begin(), customCols.end(), c) != customCols.end(); snapCall << RDFInternal::ColumnName2ColumnTypeName(c, nsID, tree, fDataSource, isCustom, dontConvertVector) @@ -518,7 +518,9 @@ public: std::stringstream snapCall; auto upcastNode = RDFInternal::UpcastNode(fProxiedPtr); RInterface> upcastInterface(fProxiedPtr, fImplWeakPtr, - fValidCustomColumns, fDataSource); + fValidCustomColumns, + fBranchNames, + fDataSource); // build a string equivalent to // "(RInterface*)(this)->Cache(*(ColumnNames_t*)(&columnList))" // on Windows, to prefix the hexadecimal value of a pointer with '0x', @@ -579,7 +581,8 @@ public: using Range_t = RDFDetail::RRange; auto RangePtr = std::make_shared(begin, end, stride, *fProxiedPtr); df->Book(RangePtr); - RInterface> tdf_r(RangePtr, fImplWeakPtr, fValidCustomColumns, fDataSource); + RInterface> tdf_r(RangePtr, fImplWeakPtr, fValidCustomColumns, + fBranchNames, fDataSource); return tdf_r; } @@ -635,8 +638,7 @@ public: auto loopManager = GetLoopManager(); using ColTypes_t = TypeTraits::RemoveFirstParameter_t::arg_types>; constexpr auto nColumns = ColTypes_t::list_size; - const auto validColumnNames = - RDFInternal::GetValidatedColumnNames(*loopManager, nColumns, columns, fValidCustomColumns, fDataSource); + const auto validColumnNames = GetValidatedColumnNames(nColumns, columns); if (fDataSource) RDFInternal::DefineDataSourceColumns(validColumnNames, *loopManager, *fDataSource, std::make_index_sequence(), ColTypes_t()); @@ -726,8 +728,7 @@ public: { auto loopManager = GetLoopManager(); const auto columns = column.empty() ? ColumnNames_t() : ColumnNames_t({std::string(column)}); - const auto validColumnNames = - RDFInternal::GetValidatedColumnNames(*loopManager, 1, columns, fValidCustomColumns, fDataSource); + const auto validColumnNames = GetValidatedColumnNames(1, columns); if (fDataSource) RDFInternal::DefineDataSourceColumns(validColumnNames, *loopManager, *fDataSource, std::make_index_sequence<1>(), TTraits::TypeList()); @@ -1353,8 +1354,7 @@ public: auto loopManager = GetLoopManager(); const auto columns = columnName.empty() ? ColumnNames_t() : ColumnNames_t({std::string(columnName)}); constexpr auto nColumns = ArgTypes::list_size; - const auto validColumnNames = - RDFInternal::GetValidatedColumnNames(*loopManager, 1, columns, fValidCustomColumns, fDataSource); + const auto validColumnNames = GetValidatedColumnNames(1, columns); if (fDataSource) RDFInternal::DefineDataSourceColumns(validColumnNames, *loopManager, *fDataSource, std::make_index_sequence(), ArgTypes()); @@ -1532,8 +1532,7 @@ private: { auto lm = GetLoopManager(); constexpr auto nColumns = sizeof...(BranchTypes); - const auto selectedCols = - RDFInternal::GetValidatedColumnNames(*lm, nColumns, columns, fValidCustomColumns, fDataSource); + const auto selectedCols = GetValidatedColumnNames(nColumns, columns); if (fDataSource) RDFInternal::DefineDataSourceColumns(selectedCols, *lm, *fDataSource, std::make_index_sequence(), RDFInternal::TypeList()); @@ -1553,15 +1552,14 @@ private: { auto lm = GetLoopManager(); auto realNColumns = (nColumns > -1 ? nColumns : sizeof...(BranchTypes)); - const auto validColumnNames = - RDFInternal::GetValidatedColumnNames(*lm, realNColumns, columns, fValidCustomColumns, fDataSource); + const auto validColumnNames = GetValidatedColumnNames(realNColumns, columns); const unsigned int nSlots = lm->GetNSlots(); const auto &customColumns = lm->GetCustomColumnNames(); auto tree = lm->GetTree(); auto rOnHeap = RDFInternal::MakeSharedOnHeap(r); auto upcastNode = RDFInternal::UpcastNode(fProxiedPtr); RInterface> upcastInterface( - upcastNode, fImplWeakPtr, fValidCustomColumns, fDataSource); + upcastNode, fImplWeakPtr, fValidCustomColumns, fBranchNames, fDataSource); auto resultProxyAndActionPtrPtr = MakeResultPtr(r, lm); auto &resultProxy = resultProxyAndActionPtrPtr.first; auto actionPtrPtrOnHeap = RDFInternal::MakeSharedOnHeap(resultProxyAndActionPtrPtr.second); @@ -1588,8 +1586,7 @@ private: std::is_same::value, ColTypesTmp_t>::type; constexpr auto nColumns = ColTypes_t::list_size; - const auto validColumnNames = - RDFInternal::GetValidatedColumnNames(*loopManager, nColumns, columns, fValidCustomColumns, fDataSource); + const auto validColumnNames = GetValidatedColumnNames(nColumns, columns); if (fDataSource) RDFInternal::DefineDataSourceColumns(validColumnNames, *loopManager, *fDataSource, std::make_index_sequence(), ColTypes_t()); @@ -1608,7 +1605,7 @@ private: loopManager->Book(std::make_shared(name, std::move(expression), validColumnNames, loopManager.get())); loopManager->AddCustomColumnName(name); - RInterface newInterface(fProxiedPtr, fImplWeakPtr, fValidCustomColumns, fDataSource); + RInterface newInterface(fProxiedPtr, fImplWeakPtr, fValidCustomColumns, fBranchNames, fDataSource); newInterface.fValidCustomColumns.emplace_back(name); return newInterface; } @@ -1644,8 +1641,7 @@ private: RDFInternal::CheckTypesAndPars(sizeof...(ColumnTypes), columnList.size()); auto lm = GetLoopManager(); - const auto validCols = - RDFInternal::GetValidatedColumnNames(*lm, columnList.size(), columnList, fValidCustomColumns, fDataSource); + const auto validCols = GetValidatedColumnNames(columnList.size(), columnList); if (fDataSource) RDFInternal::DefineDataSourceColumns(validCols, *lm, *fDataSource, std::index_sequence_for(), @@ -1744,12 +1740,29 @@ protected: } RInterface(const std::shared_ptr &proxied, const std::weak_ptr &impl, - const ColumnNames_t &validColumns, RDataSource *ds) - : fProxiedPtr(proxied), fImplWeakPtr(impl), fValidCustomColumns(validColumns), fDataSource(ds) + const ColumnNames_t &validColumns, const std::shared_ptr &datasetColumns, + RDataSource *ds) + : fProxiedPtr(proxied), fImplWeakPtr(impl), fValidCustomColumns(validColumns), + fDataSource(ds), fBranchNames(datasetColumns) { } const std::shared_ptr &GetProxiedPtr() const { return fProxiedPtr; } + + /// Prepare the call to the GetValidatedColumnNames routine, making sure that GetBranchNames, + /// which is expensive in terms of runtime, is called at most once. + ColumnNames_t GetValidatedColumnNames(const unsigned int nColumns, const ColumnNames_t &columns) + { + auto loopManager = GetLoopManager(); + auto tree = loopManager->GetTree(); + if (tree && !fBranchNames) { + fBranchNames = std::make_shared(RDFInternal::GetBranchNames(*tree)); + } + return RDFInternal::GetValidatedColumnNames(*loopManager, nColumns, columns, + (tree ? *fBranchNames : ColumnNames_t{}), + fValidCustomColumns, fDataSource); + } + }; template <> diff --git a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx index ca328fe6a1ef2..ab8375703ecad 100644 --- a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx @@ -250,7 +250,8 @@ std::shared_ptr UpcastNode(const std::shared_ptr ptr std::shared_ptr UpcastNode(const std::shared_ptr ptr); ColumnNames_t GetValidatedColumnNames(RLoopManager &lm, const unsigned int nColumns, const ColumnNames_t &columns, - const ColumnNames_t &validCustomColumns, RDataSource *ds); + const ColumnNames_t &datasetColumns, const ColumnNames_t &validCustomColumns, + RDataSource *ds); std::vector FindUndefinedDSColumns(const ColumnNames_t &requestedCols, const ColumnNames_t &definedDSCols); @@ -418,8 +419,8 @@ void CheckTypesAndPars(unsigned int nTemplateParams, unsigned int nColumnNames); const ColumnNames_t SelectColumns(unsigned int nArgs, const ColumnNames_t &bl, const ColumnNames_t &defBl); /// Check whether column names refer to a valid branch of a TTree or have been `Define`d. Return invalid column names. -ColumnNames_t FindUnknownColumns(const ColumnNames_t &requiredCols, TTree *tree, const ColumnNames_t &definedCols, - const ColumnNames_t &dataSourceColumns); +ColumnNames_t FindUnknownColumns(const ColumnNames_t &requiredCols, const ColumnNames_t &datasetColumns, + const ColumnNames_t &definedCols, const ColumnNames_t &dataSourceColumns); bool IsInternalColumn(std::string_view colName); diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index 0903118a44c93..5a5ee707aedfe 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -271,17 +271,14 @@ SelectColumns(unsigned int nRequiredNames, const ColumnNames_t &names, const Col } } -ColumnNames_t FindUnknownColumns(const ColumnNames_t &requiredCols, TTree *tree, const ColumnNames_t &definedCols, - const ColumnNames_t &dataSourceColumns) +ColumnNames_t FindUnknownColumns(const ColumnNames_t &requiredCols, const ColumnNames_t &datasetColumns, + const ColumnNames_t &definedCols, const ColumnNames_t &dataSourceColumns) { ColumnNames_t unknownColumns; for (auto &column : requiredCols) { - if (tree != nullptr) { - const auto branchNames = GetBranchNames(*tree); - const auto isBranch = std::find(branchNames.begin(), branchNames.end(), column) != branchNames.end(); - if (isBranch) - continue; - } + const auto isBranch = std::find(datasetColumns.begin(), datasetColumns.end(), column) != datasetColumns.end(); + if (isBranch) + continue; const auto isCustomColumn = std::find(definedCols.begin(), definedCols.end(), column) != definedCols.end(); if (isCustomColumn) continue; @@ -705,11 +702,12 @@ std::shared_ptr UpcastNode(const std::shared_ptr p /// * check that selected column names refer to valid branches, custom columns or datasource columns (throw if not) /// Return the list of selected column names. ColumnNames_t GetValidatedColumnNames(RLoopManager &lm, const unsigned int nColumns, const ColumnNames_t &columns, - const ColumnNames_t &validCustomColumns, RDataSource *ds) + const ColumnNames_t &datasetColumns, const ColumnNames_t &validCustomColumns, + RDataSource *ds) { const auto &defaultColumns = lm.GetDefaultColumnNames(); auto selectedColumns = SelectColumns(nColumns, columns, defaultColumns); - const auto unknownColumns = FindUnknownColumns(selectedColumns, lm.GetTree(), validCustomColumns, + const auto unknownColumns = FindUnknownColumns(selectedColumns, datasetColumns, validCustomColumns, ds ? ds->GetColumnNames() : ColumnNames_t{}); if (!unknownColumns.empty()) { diff --git a/tree/dataframe/test/dataframe_utils.cxx b/tree/dataframe/test/dataframe_utils.cxx index c360e536cf396..afd7a7059b47a 100644 --- a/tree/dataframe/test/dataframe_utils.cxx +++ b/tree/dataframe/test/dataframe_utils.cxx @@ -4,6 +4,8 @@ #include "gtest/gtest.h" +namespace RDFInt = ROOT::Internal::RDF; + // Thanks clang-format... TEST(RDataFrameUtils, DeduceAllPODsFromTmpColumns) { @@ -70,7 +72,7 @@ TEST(RDataFrameUtils, DeduceAllPODsFromColumns) {"vararrint.a", "ROOT::VecOps::RVec"}}; for (auto &nameType : nameTypes) { - auto typeName = ROOT::Internal::RDF::ColumnName2ColumnTypeName(nameType.first, /*nsID=*/0, &t, /*ds=*/nullptr, + auto typeName = RDFInt::ColumnName2ColumnTypeName(nameType.first, /*nsID=*/0, &t, /*ds=*/nullptr, /*custom=*/false); EXPECT_STREQ(nameType.second, typeName.c_str()); } @@ -98,7 +100,7 @@ TEST(RDataFrameUtils, DeduceTypeOfBranchesWithCustomTitle) {"vararrint.a", "ROOT::VecOps::RVec"}}; for (auto &nameType : nameTypes) { - auto typeName = ROOT::Internal::RDF::ColumnName2ColumnTypeName(nameType.first, /*nsID=*/0, &t, /*ds=*/nullptr, + auto typeName = RDFInt::ColumnName2ColumnTypeName(nameType.first, /*nsID=*/0, &t, /*ds=*/nullptr, /*custom=*/false); EXPECT_STREQ(nameType.second, typeName.c_str()); } @@ -108,14 +110,14 @@ TEST(RDataFrameUtils, CheckNonExistingCustomColumnNullTree) { // CheckCustomColumn(std::string_view definedCol, TTree *treePtr, const ColumnNames_t &customCols, // const ColumnNames_t &dataSourceColumns) - ROOT::Internal::RDF::CheckCustomColumn("Bla", nullptr, {"a", "b"}, {}); + RDFInt::CheckCustomColumn("Bla", nullptr, {"a", "b"}, {}); } TEST(RDataFrameUtils, CheckExistingCustomColumnNullTree) { int ret = 1; try { - ROOT::Internal::RDF::CheckCustomColumn("a", nullptr, {"a", "b"}, {}); + RDFInt::CheckCustomColumn("a", nullptr, {"a", "b"}, {}); } catch (const std::runtime_error &e) { ret = 0; } @@ -130,7 +132,7 @@ TEST(RDataFrameUtils, CheckExistingCustomColumn) int ret = 1; try { - ROOT::Internal::RDF::CheckCustomColumn("a", &t, {"b"}, {}); + RDFInt::CheckCustomColumn("a", &t, {"b"}, {}); } catch (const std::runtime_error &e) { ret = 0; } @@ -145,7 +147,7 @@ TEST(RDataFrameUtils, CheckExistingCustomColumnDataSource) int ret = 1; try { - ROOT::Internal::RDF::CheckCustomColumn("c", &t, {"b"}, {"c"}); + RDFInt::CheckCustomColumn("c", &t, {"b"}, {"c"}); } catch (const std::runtime_error &e) { ret = 0; } @@ -156,7 +158,7 @@ TEST(RDataFrameUtils, CheckTypesAndPars) { int ret = 1; try { - ROOT::Internal::RDF::CheckTypesAndPars(5, 4); + RDFInt::CheckTypesAndPars(5, 4); } catch (const std::runtime_error &e) { ret = 0; } @@ -167,7 +169,7 @@ TEST(RDataFrameUtils, SelectColumnsNNamesDiffersRequiredNames) { int ret = 1; try { - ROOT::Internal::RDF::SelectColumns(3, {"a", "b"}, {}); + RDFInt::SelectColumns(3, {"a", "b"}, {}); } catch (const std::runtime_error &e) { ret = 0; } @@ -178,7 +180,7 @@ TEST(RDataFrameUtils, SelectColumnsTooFewRequiredNames) { int ret = 1; try { - ROOT::Internal::RDF::SelectColumns(3, {}, {"bla"}); + RDFInt::SelectColumns(3, {}, {"bla"}); } catch (const std::runtime_error &e) { ret = 0; } @@ -187,8 +189,8 @@ TEST(RDataFrameUtils, SelectColumnsTooFewRequiredNames) TEST(RDataFrameUtils, SelectColumnsCheckNames) { - ROOT::Internal::RDF::ColumnNames_t cols{"a", "b", "c"}; - auto ncols = ROOT::Internal::RDF::SelectColumns(2, {}, cols); + RDFInt::ColumnNames_t cols{"a", "b", "c"}; + auto ncols = RDFInt::SelectColumns(2, {}, cols); EXPECT_STREQ("a", ncols[0].c_str()); EXPECT_STREQ("b", ncols[1].c_str()); } @@ -199,7 +201,7 @@ TEST(RDataFrameUtils, FindUnknownColumns) TTree t("t", "t"); t.Branch("a", &i); - auto ncols = ROOT::Internal::RDF::FindUnknownColumns({"a", "b", "c", "d"}, &t, {"b"}, {}); + auto ncols = RDFInt::FindUnknownColumns({"a", "b", "c", "d"}, RDFInt::GetBranchNames(t), {"b"}, {}); EXPECT_STREQ("c", ncols[0].c_str()); EXPECT_STREQ("d", ncols[1].c_str()); } @@ -210,7 +212,7 @@ TEST(RDataFrameUtils, FindUnknownColumnsWithDataSource) TTree t("t", "t"); t.Branch("a", &i); - auto ncols = ROOT::Internal::RDF::FindUnknownColumns({"a", "b", "c", "d"}, &t, {"b"}, {"c"}); + auto ncols = RDFInt::FindUnknownColumns({"a", "b", "c", "d"}, RDFInt::GetBranchNames(t), {"b"}, {"c"}); EXPECT_EQ(ncols.size(), 1u); EXPECT_STREQ("d", ncols[0].c_str()); } @@ -226,7 +228,7 @@ TEST(RDataFrameUtils, FindUnknownColumnsNestedNames) DummyStruct s{1, 2}; t.Branch("s", &s, "a/I:b/I"); - auto unknownCols = ROOT::Internal::RDF::FindUnknownColumns({"s.a", "s.b", "s", "s.", ".s", "_asd_"}, &t, {}, {}); + auto unknownCols = RDFInt::FindUnknownColumns({"s.a", "s.b", "s", "s.", ".s", "_asd_"}, RDFInt::GetBranchNames(t), {}, {}); const auto trueUnknownCols = std::vector({"s", "s.", ".s", "_asd_"}); EXPECT_EQ(unknownCols, trueUnknownCols); } @@ -253,6 +255,6 @@ TEST(RDataFrameUtils, FindUnknownColumnsFriendTrees) t1.AddFriend(&t2); t1.AddFriend(&t4); - auto ncols = ROOT::Internal::RDF::FindUnknownColumns({"c2", "c3", "c4"}, &t1, {}, {}); + auto ncols = RDFInt::FindUnknownColumns({"c2", "c3", "c4"}, RDFInt::GetBranchNames(t1), {}, {}); EXPECT_EQ(ncols.size(), 0u) << "Cannot find column in friend trees."; } From 455521749fcb7c119004b874b00556ce4e2171de Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Fri, 15 Jun 2018 11:00:56 +0200 Subject: [PATCH 161/344] Make header standalone, encapsulate better sha related routines. --- core/foundation/res/ROOT/RSha256.hxx | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/core/foundation/res/ROOT/RSha256.hxx b/core/foundation/res/ROOT/RSha256.hxx index 7b513be089de4..081131a22dd6c 100644 --- a/core/foundation/res/ROOT/RSha256.hxx +++ b/core/foundation/res/ROOT/RSha256.hxx @@ -13,9 +13,16 @@ #define ROOT_RSHA #include "Rtypes.h" + +#include #include #include + +namespace ROOT { +namespace Internal { +namespace SHA256 { + #ifdef _MSC_VER #define ROTL32(v, n) _rotl((v), (n)) @@ -255,8 +262,8 @@ void sha256_final(sha256_t *p, unsigned char *digest) sha256_init(p); } -namespace ROOT { -namespace Internal { +} // End NS SHA256 + /// This helper class represents a sha256 hash. Operator == and std::less /// complete its functionality. @@ -272,12 +279,12 @@ private: { // Here the final cast is to match the interface of the C code and // the data member. The lenght is the same! - sha256_init(&fHash); - sha256_update(&fHash, data, len); - sha256_final(&fHash, reinterpret_cast(fDigest)); + SHA256::sha256_init(&fHash); + SHA256::sha256_update(&fHash, data, len); + SHA256::sha256_final(&fHash, reinterpret_cast(fDigest)); } - sha256_t fHash; + SHA256::sha256_t fHash; ULong64_t fDigest[4]; public: From b3cf3ff250820bd54eb0b2e2e6392a665f1b878b Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Fri, 15 Jun 2018 11:03:40 +0200 Subject: [PATCH 162/344] Realease Notes --- README/ReleaseNotes/v616/index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index 5fee06d987f16..fa55249ffb26b 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -37,7 +37,9 @@ The following people have contributed to this new version: ## TTree Libraries - +### RDataFrame + - Optimise the creation of the set of branches names of an input dataset, + doing the work once and caching it in the RInterface. ## Histogram Libraries From 0990957b375a7589e81a40b9a1cdf5196cd3468d Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 12:53:24 +0200 Subject: [PATCH 163/344] - Spell check - use auto --- tutorials/eve/geom_atlas_playback.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/geom_atlas_playback.C b/tutorials/eve/geom_atlas_playback.C index eccfda0d42ac6..c2ac5fd579022 100644 --- a/tutorials/eve/geom_atlas_playback.C +++ b/tutorials/eve/geom_atlas_playback.C @@ -5,7 +5,7 @@ /// /// Script: /// - type: .x geom_atlas.C -/// - demonstratate rotation (left-mouse), zoom (right-mouse left-right) +/// - demonstrate rotation (left-mouse), zoom (right-mouse left-right) /// - show wireframe (w), smooth (r, default) and outline (t) render modes /// - show flip of background color dark-light-dark (e pressed twice) /// - disable clipping plane in GL-viewer panel @@ -20,5 +20,5 @@ void geom_atlas_playback() { - TRecorder* r = new TRecorder("http://mtadel.home.cern.ch/mtadel/geom_atlas_recording.root"); + auto r = new TRecorder("http://mtadel.home.cern.ch/mtadel/geom_atlas_recording.root"); } From c022c715b1233db6ef58934fd166e2093e8d14b4 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 12:54:43 +0200 Subject: [PATCH 164/344] - Use auto --- tutorials/eve/geom_atlas.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/eve/geom_atlas.C b/tutorials/eve/geom_atlas.C index 2d75f1c9e7a22..fd5343f61d2c5 100644 --- a/tutorials/eve/geom_atlas.C +++ b/tutorials/eve/geom_atlas.C @@ -15,15 +15,15 @@ void geom_atlas() gGeoManager = gEve->GetGeometry("http://root.cern.ch/files/atlas.root"); gGeoManager->DefaultColors(); - TGeoNode* node1 = gGeoManager->GetTopVolume()->FindNode("INNE_1"); + auto node1 = gGeoManager->GetTopVolume()->FindNode("INNE_1"); TEveGeoTopNode* inn = new TEveGeoTopNode(gGeoManager, node1); gEve->AddGlobalElement(inn); - TGeoNode* node2 = gGeoManager->GetTopVolume()->FindNode("CENT_1"); + auto node2 = gGeoManager->GetTopVolume()->FindNode("CENT_1"); TEveGeoTopNode* cnt = new TEveGeoTopNode(gGeoManager, node2); gEve->AddGlobalElement(cnt); - TGeoNode* node3 = gGeoManager->GetTopVolume()->FindNode("OUTE_1"); + auto node3 = gGeoManager->GetTopVolume()->FindNode("OUTE_1"); TEveGeoTopNode* out = new TEveGeoTopNode(gGeoManager, node3); gEve->AddGlobalElement(out); @@ -31,7 +31,7 @@ void geom_atlas() // EClipType not exported to CINT (see TGLUtil.h): // 0 - no clip, 1 - clip plane, 2 - clip box - TGLViewer *v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); v->GetClipSet()->SetClipType(TGLClip::EType(1)); v->RefreshPadEditor(v); From 38ae8bcc695c9734dd40f166f22d1dd7dbc95bd3 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 12:56:06 +0200 Subject: [PATCH 165/344] - use auto --- tutorials/eve/geom_alice_tpc.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/geom_alice_tpc.C b/tutorials/eve/geom_alice_tpc.C index d5da1a6b69fde..d3b9a0848b091 100644 --- a/tutorials/eve/geom_alice_tpc.C +++ b/tutorials/eve/geom_alice_tpc.C @@ -13,8 +13,8 @@ void geom_alice_tpc() gGeoManager = gEve->GetGeometry("http://root.cern.ch/files/alice.root"); - TGeoNode* node = gGeoManager->GetTopVolume()->FindNode("TPC_M_1"); - TEveGeoTopNode* tpc = new TEveGeoTopNode(gGeoManager, node); + auto node = gGeoManager->GetTopVolume()->FindNode("TPC_M_1"); + auto tpc = new TEveGeoTopNode(gGeoManager, node); gEve->AddGlobalElement(tpc); gEve->Redraw3D(kTRUE); From c4b5f0ee55768f434522fd4a2ed3ec6c197a7a9d Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 12:59:59 +0200 Subject: [PATCH 166/344] - use auto - formating --- tutorials/eve/geom_alice_its.C | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/tutorials/eve/geom_alice_its.C b/tutorials/eve/geom_alice_its.C index 5722744821edf..c980d0ec4d643 100644 --- a/tutorials/eve/geom_alice_its.C +++ b/tutorials/eve/geom_alice_its.C @@ -58,21 +58,18 @@ TEveGeoNode* descend_extract(TGeoNode* node) TEveGeoNode *res = 0; - TGeoMedium *medium = node->GetVolume()->GetMedium(); - if (medium && material == medium->GetName()) - { + auto medium = node->GetVolume()->GetMedium(); + if (medium && material == medium->GetName()) { // Node of interest - instantiate eve representation and return. res = new TEveGeoNode(node); return res; } Int_t nd = node->GetNdaughters(); - for (Int_t i = 0; i < nd; ++i) - { - TEveGeoNode *ed = descend_extract(node->GetDaughter(i)); + for (Int_t i = 0; i < nd; ++i) { + auto ed = descend_extract(node->GetDaughter(i)); - if (ed) - { + if (ed) { if (res == 0) res = new TEveGeoNode(node); res->AddElement(ed); } @@ -95,12 +92,11 @@ void extract_ssd_modules() return; } - TGeoNode *node = gGeoManager->GetCurrentNode(); + auto node = gGeoManager->GetCurrentNode(); TEveGeoNode *egn = descend_extract(node); - if (egn == 0) - { + if (egn == 0) { Warning(kEH, "No matching nodes found."); return; } From 132ee191b45a321c8f62eafd6b6c1646d029ba8b Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 13:02:48 +0200 Subject: [PATCH 167/344] - spell check - use auto --- tutorials/eve/geom_alias.C | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/tutorials/eve/geom_alias.C b/tutorials/eve/geom_alias.C index 89385980d0f5e..e3cea93237332 100644 --- a/tutorials/eve/geom_alias.C +++ b/tutorials/eve/geom_alias.C @@ -1,6 +1,6 @@ /// \file /// \ingroup tutorial_eve -/// Demonstates usage of geometry aliases - merge ALICE ITS with ATLAS MUON. +/// Demonstrates usage of geometry aliases - merge ALICE ITS with ATLAS MUON. /// /// \image html eve_geom_alias.png /// \macro_code @@ -17,23 +17,21 @@ void geom_alias() gGeoManager = gEve->GetGeometryByAlias("ALICE"); - TGeoNode* node1 = gGeoManager->GetTopVolume()->FindNode("ITSV_1"); - TEveGeoTopNode* its = new TEveGeoTopNode(gGeoManager, node1); + auto node1 = gGeoManager->GetTopVolume()->FindNode("ITSV_1"); + auto its = new TEveGeoTopNode(gGeoManager, node1); gEve->AddGlobalElement(its); - gGeoManager = gEve->GetGeometryByAlias("ATLAS"); - TGeoNode* node2 = gGeoManager->GetTopVolume()->FindNode("OUTE_1"); - TEveGeoTopNode* atlas = new TEveGeoTopNode(gGeoManager, node2); + auto node2 = gGeoManager->GetTopVolume()->FindNode("OUTE_1"); + auto atlas = new TEveGeoTopNode(gGeoManager, node2); gEve->AddGlobalElement(atlas); - gEve->FullRedraw3D(kTRUE); // EClipType not exported to CINT (see TGLUtil.h): // 0 - no clip, 1 - clip plane, 2 - clip box - TGLViewer *v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); v->GetClipSet()->SetClipType(TGLClip::EType(2)); v->RefreshPadEditor(v); From 35702ffe1de79ebe14c025b9752620df8c2827a2 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 13:32:47 +0200 Subject: [PATCH 168/344] - use auto --- tutorials/eve/csgdemo.C | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tutorials/eve/csgdemo.C b/tutorials/eve/csgdemo.C index e570f29a89c4f..7f72aeb768987 100644 --- a/tutorials/eve/csgdemo.C +++ b/tutorials/eve/csgdemo.C @@ -20,27 +20,27 @@ void csgdemo () { gSystem->Load("libGeom"); - TCanvas *c = new TCanvas("composite shape", "A * B - C"); + auto c = new TCanvas("composite shape", "A * B - C"); c->Iconify(); if (gGeoManager) delete gGeoManager; new TGeoManager("xtru", "poza12"); - TGeoMaterial *mat = new TGeoMaterial("Al", 26.98,13,2.7); - TGeoMedium *med = new TGeoMedium("MED",1,mat); - TGeoVolume *top = gGeoManager->MakeBox("TOP",med,100,100,100); + auto mat = new TGeoMaterial("Al", 26.98,13,2.7); + auto med = new TGeoMedium("MED",1,mat); + auto top = gGeoManager->MakeBox("TOP",med,100,100,100); gGeoManager->SetTopVolume(top); // define shape components with names - TGeoBBox *box = new TGeoBBox("box", 20., 20., 20.); - TGeoBBox *box1 = new TGeoBBox("box1", 5., 5., 5.); - TGeoSphere *sph = new TGeoSphere("sph", 5., 25.); - TGeoSphere *sph1 = new TGeoSphere("sph1", 1., 15.); + auto box = new TGeoBBox("box", 20., 20., 20.); + auto box1 = new TGeoBBox("box1", 5., 5., 5.); + auto sph = new TGeoSphere("sph", 5., 25.); + auto sph1 = new TGeoSphere("sph1", 1., 15.); // create the composite shape based on a Boolean expression - TGeoTranslation *tr = new TGeoTranslation(0., 30., 0.); - TGeoTranslation *tr1 = new TGeoTranslation(0., 40., 0.); - TGeoTranslation *tr2 = new TGeoTranslation(0., 30., 0.); - TGeoTranslation *tr3 = new TGeoTranslation(0., 30., 0.); + auto tr = new TGeoTranslation(0., 30., 0.); + auto tr1 = new TGeoTranslation(0., 40., 0.); + auto tr2 = new TGeoTranslation(0., 30., 0.); + auto tr3 = new TGeoTranslation(0., 30., 0.); tr->SetName("tr"); tr1->SetName("tr1"); tr2->SetName("tr2"); @@ -54,7 +54,7 @@ void csgdemo () TGeoCompositeShape *cs = new TGeoCompositeShape ("mir", "(sph * box) + (sph1:tr - box1:tr1)"); - TGeoVolume *vol = new TGeoVolume("COMP4", cs); + auto vol = new TGeoVolume("COMP4", cs); vol->SetLineColor(kMagenta); top->AddNode(vol,1); gGeoManager->CloseGeometry(); @@ -66,8 +66,8 @@ void csgdemo () TGLFaceSet::SetEnforceTriangles(kTRUE); TEveManager::Create(); - TGeoNode* node = gGeoManager->GetTopNode(); - TEveGeoTopNode* en = new TEveGeoTopNode(gGeoManager, node); + auto node = gGeoManager->GetTopNode(); + auto en = new TEveGeoTopNode(gGeoManager, node); en->SetVisLevel(4); en->GetNode()->GetVolume()->SetVisibility(kFALSE); From dd561f68e856c373718d8862e5265d43c5187034 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 13:53:11 +0200 Subject: [PATCH 169/344] Use auto --- tutorials/eve/compound.C | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tutorials/eve/compound.C b/tutorials/eve/compound.C index 229f0b069f114..17de97a2abc71 100644 --- a/tutorials/eve/compound.C +++ b/tutorials/eve/compound.C @@ -9,12 +9,11 @@ TEveLine* random_line(TRandom& rnd, Int_t n, Float_t delta) { - TEveLine* line = new TEveLine; + auto line = new TEveLine; line->SetMainColor(kGreen); Float_t x = 0, y = 0, z = 0; - for (Int_t i=0; iSetNextPoint(x, y, z); x += rnd.Uniform(0, delta); y += rnd.Uniform(0, delta); @@ -28,13 +27,13 @@ void compound() { TEveManager::Create(); - TEveLine* ml = new TEveLine; + auto ml = new TEveLine; ml->SetMainColor(kRed); ml->SetLineStyle(2); ml->SetLineWidth(3); gEve->InsertVizDBEntry("BigLine", ml); - TEveCompound* cmp = new TEveCompound; + auto cmp = new TEveCompound; cmp->SetMainColor(kGreen); gEve->AddElement(cmp); @@ -45,25 +44,25 @@ void compound() cmp->AddElement(random_line(rnd, 20, 10)); cmp->AddElement(random_line(rnd, 20, 10)); - TEveLine* line = random_line(rnd, 20, 12); + auto line = random_line(rnd, 20, 12); line->ApplyVizTag("BigLine"); cmp->AddElement(line); cmp->CloseCompound(); // Projected view - TEveViewer *viewer = gEve->SpawnNewViewer("Projected"); - TEveScene *scene = gEve->SpawnNewScene("Projected Event"); + auto viewer = gEve->SpawnNewViewer("Projected"); + auto scene = gEve->SpawnNewScene("Projected Event"); viewer->AddScene(scene); { - TGLViewer* v = viewer->GetGLViewer(); + auto v = viewer->GetGLViewer(); v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY); } // projections - TEveProjectionManager* mng = new TEveProjectionManager(TEveProjection::kPT_RPhi); + auto mng = new TEveProjectionManager(TEveProjection::kPT_RPhi); scene->AddElement(mng); - TEveProjectionAxes* axes = new TEveProjectionAxes(mng); + auto axes = new TEveProjectionAxes(mng); scene->AddElement(axes); gEve->AddToListTree(axes, kTRUE); gEve->AddToListTree(mng, kTRUE); From 0030a48fad727fab9ad41f65fe3b3f623da978be Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 15:20:13 +0200 Subject: [PATCH 170/344] - use auto - spell check --- tutorials/eve/calorimeters.C | 42 +++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/tutorials/eve/calorimeters.C b/tutorials/eve/calorimeters.C index 8eb66a5cc7571..ddd289e588ac1 100644 --- a/tutorials/eve/calorimeters.C +++ b/tutorials/eve/calorimeters.C @@ -47,10 +47,10 @@ void calorimeters() // event data TFile::SetCacheFileDir("."); - TFile* hf = TFile::Open(histFile, "CACHEREAD"); + auto hf = TFile::Open(histFile, "CACHEREAD"); TH2F* ecalHist = (TH2F*)hf->Get("ecalLego"); TH2F* hcalHist = (TH2F*)hf->Get("hcalLego"); - TEveCaloDataHist* data = new TEveCaloDataHist(); + auto data = new TEveCaloDataHist(); data->AddHistogram(ecalHist); data->RefSliceInfo(0).Setup("ECAL", 0.3, kBlue); data->AddHistogram(hcalHist); @@ -64,34 +64,33 @@ void calorimeters() // first tab - TEveCaloLego* lego = MakeCaloLego(data, 0); + auto lego = MakeCaloLego(data, 0); // // second tab // // frames - TEveWindowSlot* slot = - TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); - TEveWindowPack* packH = slot->MakePack(); + auto slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); + auto packH = slot->MakePack(); packH->SetElementName("Projections"); packH->SetHorizontal(); packH->SetShowTitleBar(kFALSE); slot = packH->NewSlot(); - TEveWindowPack* pack0 = slot->MakePack(); + auto pack0 = slot->MakePack(); pack0->SetShowTitleBar(kFALSE); - TEveWindowSlot* slotLeftTop = pack0->NewSlot(); - TEveWindowSlot* slotLeftBottom = pack0->NewSlot(); + auto slotLeftTop = pack0->NewSlot(); + auto slotLeftBottom = pack0->NewSlot(); slot = packH->NewSlot(); - TEveWindowPack* pack1 = slot->MakePack(); + auto pack1 = slot->MakePack(); pack1->SetShowTitleBar(kFALSE); - TEveWindowSlot* slotRightTop = pack1->NewSlot(); - TEveWindowSlot* slotRightBottom = pack1->NewSlot(); + auto slotRightTop = pack1->NewSlot(); + auto slotRightBottom = pack1->NewSlot(); // viewers ans scenes in second tab - TEveCalo3D* calo3d = MakeCalo3D(data, slotRightTop); + auto calo3d = MakeCalo3D(data, slotRightTop); MakeCalo2D(calo3d, slotLeftTop, TEveProjection::kPT_RPhi); MakeCalo2D(calo3d, slotLeftBottom, TEveProjection::kPT_RhoZ); lego = MakeCaloLego(data, slotRightBottom); @@ -108,8 +107,7 @@ TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot) TEveViewer* v; TEveScene* s; - if (slot) - { + if (slot) { MakeViewerScene(slot, v, s); } else { v = gEve->GetDefaultViewer(); @@ -118,7 +116,7 @@ TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot) v->SetElementName("Viewer - Lego"); s->SetElementName("Scene - Lego"); - TEveCaloLego* lego = new TEveCaloLego(data); + auto lego = new TEveCaloLego(data); s->AddElement(lego); // By the default lego extends is (1x1x1). Resize it to put in 'natural' @@ -128,7 +126,7 @@ TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot) lego->RefMainTrans().SetScale(TMath::TwoPi(), TMath::TwoPi(), TMath::Pi()); // draws scales and axis on borders of window - TGLViewer* glv = v->GetGLViewer(); + auto glv = v->GetGLViewer(); TEveCaloLegoOverlay* overlay = new TEveCaloLegoOverlay(); glv->AddOverlayElement(overlay); overlay->SetCaloLego(lego); @@ -145,14 +143,14 @@ TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot) //______________________________________________________________________________ TEveCalo3D* MakeCalo3D(TEveCaloData* data, TEveWindowSlot* slot) { - // 3D catersian view. + // 3D cartesian view. TEveViewer* v; TEveScene* s; MakeViewerScene(slot, v, s); v->SetElementName("Viewer - 3D"); s->SetElementName("Scene - 3D"); - TEveCalo3D* calo3d = new TEveCalo3D(data); + auto calo3d = new TEveCalo3D(data); calo3d->SetBarrelRadius(129.00); calo3d->SetEndCapPos(268.36); s->AddElement(calo3d); @@ -174,10 +172,10 @@ TEveCalo2D* MakeCalo2D(TEveCalo3D* calo3d, TEveWindowSlot* slot, v->SetElementName("Viewer - 2D"); s->SetElementName("Scene - 2D"); - TEveProjectionManager* mng = new TEveProjectionManager(); + auto mng = new TEveProjectionManager(); mng->SetProjection(t); - TEveProjectionAxes* axes = new TEveProjectionAxes(mng); + auto axes = new TEveProjectionAxes(mng); s->AddElement(axes); TEveCalo2D* calo2d = (TEveCalo2D*) mng->ImportElements(calo3d); s->AddElement(calo2d); @@ -208,7 +206,7 @@ void add_jet(TEveElement* parent, const char* name, Float_t eta, Float_t phi, Float_t deta, Float_t dphi) { - TEveJetCone* jet = new TEveJetCone(name, name); + auto jet = new TEveJetCone(name, name); jet->SetMainTransparency(60); jet->SetLineColor(kRed); jet->SetCylinder(129 - 10, 268.36 - 10); From 59fd30154c8c9e4a8da00d544eab2aac242af567 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 15:28:46 +0200 Subject: [PATCH 171/344] - use auto - spell check - formating --- tutorials/eve/calo_detail.C | 42 ++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/tutorials/eve/calo_detail.C b/tutorials/eve/calo_detail.C index dce8d7c1d5009..01bb926a5fcd2 100644 --- a/tutorials/eve/calo_detail.C +++ b/tutorials/eve/calo_detail.C @@ -17,28 +17,27 @@ void calo_detail() TEveManager::Create(); // data - TEveCaloDataVec* data = MakeVecData(20); + auto data = MakeVecData(20); data->IncDenyDestroy(); // don't delete if zero parent // frames - TEveWindowSlot* slot = - TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); - TEveWindowPack* packH = slot->MakePack(); + auto slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight()); + auto packH = slot->MakePack(); packH->SetElementName("Projections"); packH->SetHorizontal(); packH->SetShowTitleBar(kFALSE); slot = packH->NewSlot(); - TEveWindowPack* pack0 = slot->MakePack(); + auto pack0 = slot->MakePack(); pack0->SetShowTitleBar(kFALSE); - TEveWindowSlot* slotLeftTop = pack0->NewSlot(); - TEveWindowSlot* slotLeftBottom = pack0->NewSlot(); + auto slotLeftTop = pack0->NewSlot(); + auto slotLeftBottom = pack0->NewSlot(); slot = packH->NewSlot(); - TEveWindowPack* pack1 = slot->MakePack(); + auto pack1 = slot->MakePack(); pack1->SetShowTitleBar(kFALSE); - TEveWindowSlot* slotRightTop = pack1->NewSlot(); - TEveWindowSlot* slotRightBottom = pack1->NewSlot(); + auto slotRightTop = pack1->NewSlot(); + auto slotRightBottom = pack1->NewSlot(); // viewers ans scenes in second tab Float_t maxH = 300; @@ -66,21 +65,21 @@ void calo_detail() //______________________________________________________________________________ TEveCaloDataVec* MakeVecData(Int_t ncells) { - // Example how to fill data when bins can be iregular. + // Example how to fill data when bins can be irregular. // If ncells = 0 (default) whole histogram is taken, // otherwise just ncells cells around the maximum. TFile::SetCacheFileDir("."); - TFile* hf = TFile::Open(histFile, "CACHEREAD"); + auto hf = TFile::Open(histFile, "CACHEREAD"); TH2F* h1 = (TH2F*)hf->Get("ecalLego"); TH2F* h2 = (TH2F*)hf->Get("hcalLego"); - TEveCaloDataVec* data = new TEveCaloDataVec(2); + auto data = new TEveCaloDataVec(2); data->RefSliceInfo(0).Setup("ECAL", 0.3, kRed); data->RefSliceInfo(1).Setup("HCAL", 0.1, kBlue); - TAxis *ax = h1->GetXaxis(); - TAxis *ay = h1->GetYaxis(); + auto ax = h1->GetXaxis(); + auto ay = h1->GetYaxis(); Int_t xm = 1, xM = ax->GetNbins(); Int_t ym = 1, yM = ay->GetNbins(); @@ -95,19 +94,14 @@ TEveCaloDataVec* MakeVecData(Int_t ncells) } // Take every second cell and set a random size. - for(Int_t i=xm; i<=xM; i+=2) - { - for(Int_t j=ym; j<=yM; j+=2) - { - if ( (i+j) % 3) - { + for (Int_t i=xm; i<=xM; i+=2) { + for (Int_t j=ym; j<=yM; j+=2) { + if ( (i+j) % 3) { data->AddTower(ax->GetBinLowEdge(i), ax->GetBinUpEdge(i), ay->GetBinLowEdge(j), ay->GetBinUpEdge(j)); data->FillSlice(0, h1->GetBinContent(i, j)); data->FillSlice(1, h2->GetBinContent(i, j)); - } - else - { + } else { data->AddTower(ax->GetBinLowEdge(i), 2 * ax->GetBinWidth(i) + ax->GetBinLowEdge(i), ay->GetBinLowEdge(j), From 7970ab8721c1c28a3ff0e4acc7ef151a538455f6 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 15:44:47 +0200 Subject: [PATCH 172/344] - new picture with the new default palette --- .../doxygen/images/eve_boxset_cones.png | Bin 173551 -> 768717 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/doxygen/images/eve_boxset_cones.png b/documentation/doxygen/images/eve_boxset_cones.png index 10b463c220fc4edc6fc16359e06d23cb848bda61..5da70955c15ac6251cf04152490ddbd8b1ff6e69 100644 GIT binary patch literal 768717 zcmeFZcQ{;M+cu1dAVLsC??jK@hakGq4bh@U@4ZJt^xkXqI(iQhZ7_Ogi0Hld(ca1Z zJn#EH_wWAxaD0Eij$_QW_g-u5>sseJ*LhuQZJ{banHQKOm`F%SFXUvU)R2(S{~#ef z!$LGp{_#$IrQF+B>d(g@#4ML zbE>vrnzng#4EluED9GL5Z?po0Qc_h|eJTWGi8M4cxwB~Rp6)&2DlT6A_$xTgw-3+U zZR8;9F5CIk@A_o%(C>0%(fJ-J#=iFHXANz%03N@>x81Nv3IcLTh$!02pHIlDo>7%4d^S;+V42iLkYK*Y3y1O}i(5zXw!oo&UdD-c>fCVJ!EQ%TXg^SLOERGS= zZInPn} z#Wk0N-)#y6ZuZ1Y_M3hks&+8@mha~iY_UaF`}Nd1RIO8=ez&)lj@LQ9lV(#OoT%C( zid#+MZo_$j-tqezsd4AeqY5>Ux`>Xwa7f&m^X%!JDZ|(6!AoNL?LgAQWv0;6F8b@w ziu`iE@2q0z!~j#ecq4t7iGxE@1`XHE@8VA7%x}bK4B8VRF%l!a zyxBB~SVWR7Lvm>TOp9ke)H}*e`C1%xT%6(!vg_L2*t6cBD6>e<{-B5ia-gFcQIW7d zBa1;D4|r)B#QTx9@7dRnM6=Haei}KTPJTA|gZk+y`5%!cRB)i*Tl9k<+_%^U0dhwa zijptC1ig7lp!S)EO1}@iCLkpSe+}bWl3Io5)pL3YA6e9jKt9Q@D!3YGn&Pgb9HW+7 zA}&u!0uChdMp4hu;8=Mdxma<^etA_f4Svx#5);5OKx6FOc3{tVb{L?rEPwT80VO-6 z@>kFi`YlS91oA74_mY;m5vqy_!ptuTg5KDUO5Qtb__(TvZL)lr}tk#H}Q)EkfCWVfeWc;=W?PlD$%d!G)^-S(G~FCw)21 z9-Rj6JO)4d>KDsg*4TG0biugsp`@V&-O?-XSDvis;)UkFuc3V!?~(r^Uv1oR+-&^K zHoi`jjjS6Z2Yq;-a3Aj)`-%REF6P%<8OQJ4DqKv$Z(I|eC&(m3t7$OdGbOzOS+!|2 zYlKfKm4L=kE%hxy+w0@aXhsroQfgemKpGTnps?RA zxgxoZ=0*{lv50Y#36cnn7p8H4XBQEcYo)$eLbhXWMQ~2zsz<>x5@XTN2qhYzj6aOe z)`(HBQv0UTr}_pYQ1(_ra_sCA>j!3A#(h-VZx^0{^C&Ygh#DW}EmWy8%XQ(t6VV04U z1{Z_1M036LUFDVZhjf*48VvV8&nvj5wS;@scvX89!M~tscF6@5sg^qeR|WM059E~# zlE=Nb;?qjg0BJNsm_vXeOSWLGrfG%>hKi7RDceG~&u-OjjTiY*!N7oFl1#Kr?-o@3 zLc6#Fz@ot-ju%#&Y+Hp_h1baIFf2ma>F_5;BSP=8Sj!qj@yj9{$txNmCHN_dp zxoA6Y4IdhuXPqh^*lTajXs*0wICVSaCk!Se3wH{KCB0JMfSxDWCRJ8Ml&@4^>nv6m zet4#BUw_bWZ)IXlTW499S~XQ2Sugrgcrd{NjkA%P17@_hus02Jo%OA0tRAToGkPcr zs+J6sZ0o9hAMyS;yp%9f&`Pj|oP|s#V+&Xf6cdaTuokM#WXYs#{nYB9U#g$gLej+0 zO5y6eZoa|bV(oVG$L_Fwx()hdeR*H?&)6o@Ch>vJ#&w?plx3{!m-RSo-n-sC8K)OA zV$nGARw1&-XsVjQ*VcCiesL9hCvi7$OL0RAe|`sh@&{=tKol8=aF>09!|nxYVEIqc zK%Ai0@3!Are6IfW?$`P+Wr;z_=`Ux&YLcKY(;@9R&d*`QZen_3dar(yQuE{1?PRpB9JkX8hx*9*MK%I3R%39hQ<&D0LBWG|WmtMW? z)P!E;LN+K5+0DV&JRj>gN_}nV_z4!@sHJa9V5BrYmN37}yVeVTCIx0vR(BSAp&YM|ut1z=&Cl#9oCGI5wD%pBmq)~o{aVzQ z^~cmoKsrvS-gLWt@ulBNe`lwP&1kZKh_w7GmS-X+gC{R0=ccEo%BBx(0!XD^;L9Xa z?2BzUmRF25Rp*9IYj}{65s~}fE9`MdGTs7RvQ4vWL<+oj#JTI6bDmo1OmWSnO$v<@ zF7i3dU%I%rN_w9X$8+XQ*6MK`H&gJu4cxZLE^KhnWbD6wrnxaSZOu3H0jz6ie?JAE*#M-sCy_Sr&%^iO zuxErXTzd)_BODij)Z8Y^G0Q;@yJq-^2-;o`A|eK}m)TH_3wHz81y-W z3rB&X1WP5&fj{%rFx^u|BdJuNuEv`L(jgzM(_YOZRkmNB>e|bTaSK@~}wk zm5&Bo`zG|d5uqEmbF^>kF)c6Hk@UA~+kK?9yF2(-KH4Sji??p0 z9dW>)eKkSP?5yh)M`%|J2U#6wBqT!mzaL~dHM%1tB;;&M4Q&@~B}E|3#my-|95f3U!pXhTwEN4I5^zh-Pzr_+3lSyI5-6b1v%bw zad2_5A?{#v_Ox>`@?f)brv0x<{&zi6X3i!~mJTkK_I6Z%>oqdAcXbh^q50d;|M~f^ z=QQ)M{J$;PIsdm=2m?9(Ug6+mf6MWI>P8e5`FmDK#nQvfMqA3#*38Zs(FTBvi=Rv6 zUj_c-(*JGpe-zdEzePC(-tzp+38I# z847c;c+=Mmx)kBLMLKUkO;Pn)-ufxgMQ%}Vx`%tS!cv2_%boL%GHW+?gVOf`R7l9^ z;z%ej1CUVv-{JrB!~Y);h^C9bAHmMvqE_KUSs*o&3^#cMqH;p;KkY6b;{#CD7{%k> z?Z`T6qatq@;f}ryd=wG`$&lj^crSK&ii}6u@);g1$lz?*^#hzi@E8*UUt}Wn3zNbL z4!)eyTIS+Y*&|85Rptu_?_+x0U=SZel^tgyS?o2EHSXzk%zU0nf12}>8czMl;k1k@ zJBndZt9lmWQLU=Cu^{Kvh8WzBYa0o502t7nQA2w`@gyc@OcX3BnEPiwDTo>H*wzbh zshEm*{1(U4=pyYrb?~0`xGF|qJ$Xd8{T(6Vjnv|5z{ciRJx?W8q#YMp=EHWUr$7P6 zk8OUPR$KyjJ)6|S9ZF{QE3HKxtd8h^^hXlW7ALA~-}XjwSa;NccVH9W;^q8H;>UD4 zqW+vR^q7bV%{AIy`hHpzAd!osXbX~%q{Jf!zSkS%ILDU$ue8f~yBw%9IlGmC94O%M zXiTn0xsHa;*JVWKr|Wj-u0-6snV%uvJ_l7{BbZ8$Dox6TjHkF_sIT2)kr>9%|Dxn$ z#JZ`8MO$^Yf4SUeyvKPUANbKkS$b}EMC=@6-C0)cOSF7TO=RG4uS3-KFy@bUk8*^# zJ53cQU5O3W=B$}>Sa;~j_odNUyHA_y?JUt2kFw?EYz(^1r%)Es`D>T(W@)we@Z|4B z-22)_*pq&ug04L|EN`{)0>jkdQ>2+;lOfqh%#Grn=rLcAK^x*2&H>$lE6eAoZlct^ z`Jj)IB1QRFqalx>v?|V*voG-_ygCKXzr1c;yk$(KzNX(k7;N$O;XBTHRYuP5`Z(Wi zWubbhoyfXJ*SA7uD$J=cULJGExSLIpukJ)~_H>MYdK}z;1_N`18IoNfDQ6;EU`N+7 zLHS&%AJDNy0oM?Z7D=pQFvW*QxaP0vfmf(4lAUty-+nPnFRoOZ>=L@hy~*W}bYGp& zJa(CC8UuwGJkGWN@y(Z8rKkyD68;D)_i#qmVPJB+Hg439)~fA20U_@nM=UYrMF*tR>q%9Fx; z97QdD6?a!a+b;JIvd$>pT_8997FMZ#BkS=AvPiC-ARO#;V_%eNxLfLYnwRtRaaEGC z1cK!WnJ$~wFDNbAT|!>3bn9r5}+^x z0@VIH%Wut9!mzUPJ5uX7Nl>Qy{A%GghmxUcd_!$-XjmZNaZs8)!f?@|kxg68-&QbO zuDk2W&TRoyBAc4--CZF&=EHE&w-H)8n{YTo(!&khG5<88H~8wMUHPo4J3ZwjA7& zd>jJ{1RliH#hPPTUdeZbP-hi#ta6v`?H%VDGg&Y7#{C?f+f1GIu)Nx42Vg3#@vN}& zpxr%gtX3h$Lj+wkPwy5x;0#NaHi?eAq!yxpr_0`}D|NT2rk?Jw7mp+KFZc*{h~(*I>yZJ?rLm|ET=mK<)Nn(>NY$CW zNS#h3EHZUTR$uMr)$R}Gv$*M*P--PX?Popu9ye@qEb!leBxFkb!s`!hgl~3;gd6s0 zfo%xb;VW1Pky>?1T4aJsR$o~gM(A_$dF2vVZvw~bZkzljtlTfJ#)Xt`9|NA3vgzXP z%EhuQ?Z$VnOh6Hl?ckpIR6*6!wqy0;y>ds)p4bl$!6`1II-42;0zLB#^$Mkxj9Q$0 z7hhPXeqXGYCBr)G6-^)4;iK261DW}%r4Pn?@$+<3{GbwTVOztn3Su$foX%=@Xn|?w z3%1nn+`~naoN@EXx`xWR`6jQd@%fCxiNywqoF38b2uROfq35R#szy`}SIG%UtNFT5 zCs-ZAPwRzEu$G!ipnP@RAx_!KO!x8gN$MRL?Y{9m+a3T)Inzv0gSgqzua99Lq`+aA zSx*%^?-*@~FWwzp3*2X*!ajw7JIR)`DCm_;sEN7X7(BItKPSAVlq! zv6?N!PS7U}Be}b=n$wJ_p;v~}3>2xWSU&qGAk4l*chNL{&$P-=uarv(;scIr|oo=G>CC7wBMXA3p924z|mFVl;33xfWoP7x`OV*fC?4`SpRMJRo=qRq< zdK7~r1s+IJ?RQ5Q-_loymXXSEL`Ai$Ii3${DwP_RW>#}(5R!tZJIoFbx8+`}M|5Z} z$?dJ|^p1t+5- z>L>%U%%=81vWVS@t@IjgVG~NtqzU)QCi=_sNz^Y+5dHFpCO6BSp5w%%s4NFZpJx2p z*Q7HcmPOmptNbsIL(72-)sSg~u}@EZXx>b!5L~{Om?JbxSa=2QzQ57{-50YXt3LO# z;*u0xW$$&zOBZOd+{#~;RL&Rh8~mb>Yi$!3WdtM8<=`7OhIC;+CWG>`S30K_|4kS< zN2os8B9F`X(f3VVGBI-lhB3CD-dRHC@X(@|k(!IkZmBO$y?POcO?-}LnA@**X5tHC zfF*b45`-rvXNsvBOS8>pAN=$>>K@5j-nge5%xdZBA{*mV62eJDU}lJsnyTxl3DO zPz~>82NG}oSh-><11ifiyaAQV-Stj!NYtn?=fb1th7Jp_;IAeJIs9kp~zrphakxmj{(H+ov%fivS8L+MC#_PkR35ExQw(B zA>14xQ3XUvqqxwf_=Evm6HdVD?5pw69gad}*j6&Iop`j>{c!01Vtffq!Rgwt-9`QSgKOdWiKtg$sKN>1v z<@};#N1q;=%;tZSW?h-;vs=-4uP<1x&XM^gFS=MNzN-DLC$+yLe0ArO=*_pV{^@XC z#7wo|XtJG37o|O*pOfI`^Y;<)3*z0f_bb)(?Mb-Ad)T+$!6@$XpX<3))6v0Z+F$;;X6I+*s zn!l{O2!v(tx8}EG4ywlGalI}g*H!a(JbR89zai&6iPmj^9nG5omde4`++Kr3GZhoj z!K;tXHs>(DECz!K&jm`wfGKZ{;=>yFqK<5TgY|iQ1cU9Rik2OU4iSk|7w`plBwI)U^ zkEl`cZ)ee-cg6u|B89$l?>EI=h3DzYGM0rjKPL?rw^R-JMWh<5y(T`x0?~I(uL|X2q zcxn3-idiC*K>n)xD1Sd0xloI&N|Z+&oHd_v%1|+Tq%cPDau=c;nZa!_9Iu(Esp~R! zZmj({afj$ldAiYs@!RFuYLiQl9bswm&1+`E8achxsKKJLb@-cx${5=}3!dR5P}Rsq z1l!LB!NS_5a9TTRcP%0DlZMoH#rIY1bSF(M@MHC<9bWVMAJ_hxW=q5EDiO~f%~DpV z)6pcNJGBEay}z6U=hV2sP5QJFe`7iiQu9oR3}qWE+IENL{{;#Hv%6w$!mP`*4M7P6 z6A_Fhl@f5(J0oAYHNfKA)TB#LWd+fo;n8QW+XQ8fb%h||NBd&now#UlsV!7h*H8M| z&#;YTQh_n)Do#N@mMPgFTlGZ3*AZSH<$E>!>p)pec>)yYD7@v?*d58UDz{P=W2fP- zovoaeqft7vpKN>*LB_TnhRP>Ydvy-;w^4j<{Mk)w%~~5f#p_(^_+@0 zL7<$s-{P|qco=9+%=&j6{dsr+SPH6f*i$FZL>lAPM{_2~eM%P+A=#SD7{(YHxHW;_0+(zqSN5 zi2E&BT44X+r#9Cr?`3vf&+NyhG*r`WRKZiB$4E(f&ot-11~Od>7!KvYuy*;UD9iCc zv1J}p{`?IHcftoHt{;4TegDBNb*o(*gVe&52DNptKz*OcWzXn+w$ zcQZTPQ+Knk^UdTA@p`S^q6)p zL{;GAE-7WH@~xJ`l3X9>>`h0jNJ_R~kT8z!w(rHOx=U}$l4s=Zjw)pjt3yIwCouRK z{|Y);8<5F2-=f-{;OOEIC;G)9Uc6$hS9VpQ&31z$sDV9u@@*XD7sJ8!3HuN)#9t}2HO7?Zr zMv6H%+s{Z-efI4Oq?wd{oP4+*)RJu5p&as)2WGof+5k*56|d&sI}P3odz??R`O38W z58xEYZQHv3X?B{%#m_JCYtJ}ebT*ZnUa8{tdn2=7Uq91M*6CJQ@3gOM7o+;bE7|0= z&wnPYTOtAy16E!VCv~;�k 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 z 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 z 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
kZUYFm#ArwLOourLYo*uZc7Y0#WSY0TMo?aA9 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%0AIXFCf;v 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 G`F{flQP#-- literal 173551 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 t;jH4btGlZ!H(WJT`u|t}82|GY%A4{vRVUrb+++ From b40c624f3bce901b59d8a018185b5dfd54416705 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 15:45:20 +0200 Subject: [PATCH 173/344] - Use auto - formating --- tutorials/eve/boxset_cones.C | 173 +++++++++++++++++------------------ 1 file changed, 85 insertions(+), 88 deletions(-) diff --git a/tutorials/eve/boxset_cones.C b/tutorials/eve/boxset_cones.C index 314dedae3acd1..3bdcb80cbd73c 100644 --- a/tutorials/eve/boxset_cones.C +++ b/tutorials/eve/boxset_cones.C @@ -10,110 +10,107 @@ TEveBoxSet* boxset_cones(Float_t x=0, Float_t y=0, Float_t z=0, Int_t num=100, Bool_t register=kTRUE) { - TEveManager::Create(); - - using namespace TMath; - - TEveStraightLineSet* lines = new TEveStraightLineSet("StraightLines"); - lines->SetLineColor(kYellow); - lines->SetLineWidth(2); - - TRandom r(0); - TEveRGBAPalette* pal = new TEveRGBAPalette(0, 500); - TEveBoxSet* cones = new TEveBoxSet("ConeSet"); - cones->SetPalette(pal); - cones->Reset(TEveBoxSet::kBT_Cone, kFALSE, 64); - - Float_t a = 40; // max distance between cones - TEveVector dir, pos; - Float_t theta, phi, height, rad; - for (Int_t i=0; iAddCone(pos, dir, rad); - cones->DigitValue(r.Uniform(0, 500)); - - // draw axis line 30% longer than cone height - TEveVector end = pos + dir*1.3f; - lines->AddLine(pos.fX, pos.fY, pos.fZ, end.fX, end.fY, end.fZ); - } - - // by default cone cap not drawn - if (r.Integer(2)>0) cones->SetDrawConeCap(kTRUE); - - cones->RefitPlex(); - TEveTrans& t = cones->RefMainTrans(); - t.SetPos(x, y, z); - - gEve->AddElement(cones); - gEve->AddElement(lines); - - gEve->Redraw3D(kTRUE); - - return cones; + TEveManager::Create(); + + using namespace TMath; + + auto lines = new TEveStraightLineSet("StraightLines"); + lines->SetLineColor(kYellow); + lines->SetLineWidth(2); + + TRandom r(0); + auto pal = new TEveRGBAPalette(0, 500); + auto cones = new TEveBoxSet("ConeSet"); + cones->SetPalette(pal); + cones->Reset(TEveBoxSet::kBT_Cone, kFALSE, 64); + + Float_t a = 40; // max distance between cones + TEveVector dir, pos; + Float_t theta, phi, height, rad; + for (Int_t i=0; iAddCone(pos, dir, rad); + cones->DigitValue(r.Uniform(0, 500)); + + // draw axis line 30% longer than cone height + TEveVector end = pos + dir*1.3f; + lines->AddLine(pos.fX, pos.fY, pos.fZ, end.fX, end.fY, end.fZ); + } + + // by default cone cap not drawn + if (r.Integer(2)>0) cones->SetDrawConeCap(kTRUE); + + cones->RefitPlex(); + TEveTrans& t = cones->RefMainTrans(); + t.SetPos(x, y, z); + + gEve->AddElement(cones); + gEve->AddElement(lines); + + gEve->Redraw3D(kTRUE); + + return cones; } -TEveBoxSet* -elliptic_boxset_cones(Float_t x=0, Float_t y=0, Float_t z=0, - Int_t num=100, Bool_t register=kTRUE) +TEveBoxSet* elliptic_boxset_cones(Float_t x=0, Float_t y=0, Float_t z=0, + Int_t num=100, Bool_t register=kTRUE) { - TEveManager::Create(); + TEveManager::Create(); - using namespace TMath; + using namespace TMath; - TEveManager::Create(); + TEveManager::Create(); - TEveStraightLineSet* lines = new TEveStraightLineSet("StraightLines"); - lines->SetLineColor(kYellow); - lines->SetLineWidth(2); + auto lines = new TEveStraightLineSet("StraightLines"); + lines->SetLineColor(kYellow); + lines->SetLineWidth(2); - TRandom r(0); + TRandom r(0); - TEveBoxSet* cones = new TEveBoxSet("EllipticConeSet"); - cones->Reset(TEveBoxSet::kBT_EllipticCone, kTRUE, 64); + auto cones = new TEveBoxSet("EllipticConeSet"); + cones->Reset(TEveBoxSet::kBT_EllipticCone, kTRUE, 64); - cones->SetPickable(kTRUE); + cones->SetPickable(kTRUE); - Float_t a = 40; // max distance between cones - TEveVector dir, pos; - Float_t theta, phi, height, rad; - for (Int_t i=0; iAddEllipticCone(pos, dir, rad, 0.5*rad, r.Uniform(0,360)); - cones->DigitColor(r.Uniform(20, 255), r.Uniform(20, 255), + cones->AddEllipticCone(pos, dir, rad, 0.5*rad, r.Uniform(0,360)); + cones->DigitColor(r.Uniform(20, 255), r.Uniform(20, 255), r.Uniform(20, 255), r.Uniform(20, 255)); - // draw axis line 30% longer than cone height - TEveVector end = pos + dir*1.3f; - lines->AddLine(pos.fX, pos.fY, pos.fZ, end.fX, end.fY, end.fZ); - } + // draw axis line 30% longer than cone height + TEveVector end = pos + dir*1.3f; + lines->AddLine(pos.fX, pos.fY, pos.fZ, end.fX, end.fY, end.fZ); + } - // by default cone cap not drawn - if (r.Integer(2)>0) cones->SetDrawConeCap(kTRUE); + // by default cone cap not drawn + if (r.Integer(2)>0) cones->SetDrawConeCap(kTRUE); - cones->RefitPlex(); - TEveTrans& t = cones->RefMainTrans(); - t.SetPos(x, y, z); + cones->RefitPlex(); + TEveTrans& t = cones->RefMainTrans(); + t.SetPos(x, y, z); - gEve->AddElement(cones); - gEve->AddElement(lines); + gEve->AddElement(cones); + gEve->AddElement(lines); - gEve->Redraw3D(kTRUE); + gEve->Redraw3D(kTRUE); - return cones; + return cones; } From de1287551e6ee569a6a8b844f914c98d0c9b1556 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 15:53:58 +0200 Subject: [PATCH 174/344] new image corresponding to the new default palette --- .../doxygen/images/eve_triangleset.png | Bin 117969 -> 605306 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/doxygen/images/eve_triangleset.png b/documentation/doxygen/images/eve_triangleset.png index 88f660d3a4128d2ca2c2c410feb282786b5756c2..5ea75ccac1ff3204366580265cc527d515f85e52 100644 GIT binary patch literal 605306 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

lA#+Dz=Q+3< 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%0DEwAEwbQm&yx0m+~a+bj!-9w56<2S z*MkZ7e>?<{rCohOZ#esJZuj>)`28^V#c40sb9|9+oXthyEF*3BjHq}QV}iyZpX5{G zZvLax@=48m5|eA+bqc4psP4&A-8N99>+J%5X+8TUB2w2}!oKr%%1rn7D|rE%e7>sj zTr(XZjHW%Ek4xuRGmELdy2kOZ^A%>hcu$hX!TD0`Hwjff7OPW`N^(9EJ;}+5b=WV8 zzU*%ly#xG&hb$Q=vSRe91AWafUG0zx)yMgBFAm~}d`9_K0fPGw?wvz`!dM3~6u zjq6>9ZIX2B#PwDl9@+wIe+|)&R=1(lwX$Lqbb1+Y>D{;&n_X5^PtXG{Z-M^2p93Ut z*@ZaH{uQ_{J6ky9^fs}`zX=K6__Dvc-5Y39qr+ii@6ChO8JPd9gT=A=voM9i+Xd#r zLH-uLl^}L(v8D*6q@tJ%Lu=}5Kn)x7r#7D z#`;z+u@7UMt?e}~9PFsgzE*B1$d3v8&fI;vkCB;hU%5nW#((;t)ryU?+)rgh*3TMl zYWv60>AJ9;du{U|C_)FFLE^ylFJ+?9=WtNo92_;WRR9KTVVH>4~NBnU1j_y9KMU%t+sowMC+?vgoIZ{V(*1^UNelKiO8L zixdlAcE0ieF;GZ$Zqzcp*(RV*o>wJuk^DwWD)*taOf0t8yvJWZe-kCl9Sb@ewbzG{ zNHbm{8vE?FI?VGPsJZ+vtVW)+$LRh#(6o&TiWbAElWG#ex4c4@%vz!tZR(oz)8AQ@ zr?_G#DtG?Z0Q~l#!m2tn!~DNjNB{H$%8j10{*1+=yi^_M#ol~BuBa28+vxQtGwWKS z?A;7w;Lq>9y%&as&-q>FU|6gH#^Z)xhUBxD<%9Nh8I#kvl>rjZ#K{H(Vy1dJfCgFij{SsFeRV4mjA&%Mu1|hmgrFwi0 zYO|pq&xoQuB=)7t&!;aCR*p!MXaD|cjDT0u?nQH@Au5`P;1h7riv9S+>~-9WxW9yy z7G~G_IY$OE0q#_)@Ldb_{ex!vy@lIuh(f_N$L>PDnZs3@NxTlkf*uYshKMFUf&Rk3 zLk3J%^4p*Q8hh@?5&Z`&JX4a;L5p=zIMKN-+cdF1>?g!X0+LANBvHb8%ELiMHH6ZG zcC1O_+E8!pSy>1LTVsUd?tnzX~-LE>mVx3gQt8xgoC9@4z8&Vv@Orfcji15L5l&qEGNB+ zxQ}!O9;C11Y-iO|Wb_mJvP%D(Y;-f%^}Qhd`Ji(paqIy9KLzk{?#jm1tu!$OPYyz} zA9kO=)#mk2d*#gI{Rda$DIPoqH4i{8&Zzd-4^GwNphS(tNLJ!)Jh$RvPWR)C$55W3W5C@_|^zQRf zTLzP>cIlD;KN+KKxftXQbw6J?V3+2T{pc- zvWi~)yDj_gBVwK2ae>BPm-#EbW6X2u)j#)PKe2JrV^XCy%S6X`Nw(CJ&d@BIh#NCx zY+W_Z)L28XjOmS1Mq(F^9B;DytOpmia)QTE(;nm3`yf}1RSTv7I_4^5AhxyR7jwD} z?H5wb|D`b;J})h~D)hV1x=Njy)%BZny2%nkf(95EOHyml68dRo*U}4P2_Lyo{Jog+6GM`E zDKN|4(fE3=I|cppbqd2r#~bsYuDG!5mictMaVxgDrz5(&VIDF3EJgCty^ucQMBJbi zRCw;GqIB0MC8ph5H`pz{X9A=P-T!~_|MVB)N#NTKT*Q>jtc{=7F#DgeWqim2|92ls z$1qgl5|_fbTUJEBonMU6FtnY$soDM;-d|--%%6SqpQ;M+8#60y{DM=ZjOvCm&5>U} z*dGgg^8;|epJUMI@WFlAz$gz~Dp1bwxpYJmCQAJvm(*SEm=!35V_B^eDu~ z(NDJ#(@_MqR2{LvBa#z*{YB?27B>JT>$X&Az1JwCS&R{|5cCQya;A%pS-%jbB9-!2 z?5|`~e31X654vhl$w)EUG6Wo1bkqf`nKM?TLwr`BN|RdT6MKJfs_v{qr4=K!pUVE`fuU8fJsCyz)j!3a$Zdu$wZE5}i{7Eq&hnd}E?JJB zPmrMP#q#o!WW*G$CkN*qV1#j&n!I(UH{Wp>?hoSrczopr8>QHlr)>i&i?_SzFZ>=4 z?hQOW!5yFO+zU&&BN_K!2=IS?1t`Zey+kZzDqua(z3zi%=ZAk93>MPw)O@PxDFW>9f8oJw{QAOPmQk9q+Uxw{l&D z4Rt*_2c3SQ{)#IJdCVIBVgFeOCu1!>m;MM3{AX{Yo?18Voe6f!Yh3sY!*5uY`(XAi zbFI0feBDpJ^TAG^2dD&`@u^{p_b@%YNut{ukG z>-r~MY-p=*^0I0s9K*26^M@52HCo=jGd5nGALgxB9+#~eNgbv;5ReK({8z?m)<;`y ziLCIFA$eex+ z6esN=Vg#P_nE+$8_8a_6azZp#=(Zr_M-QzZo4rDVKEknLiPJ1z8tI zSSQyUI5eI1>QNw_8yHBg$U8zbkt7mFiVPJ);)}A1+^0Vrj=N#QWg<@HF;^>~O$qjx zIyS=``LzF(yd!@R``8zEuzs{V-@^=Az?9W-EG=h-4Ivan+6Q&Et+IbMH}Dl45y*V; zrSw+b_aLFPpUQOB+BmaYho5iOQxW(-n0lMPCEC-u_WCe4je)P1lRCWa-dzhRru= zvb-5JvRbNaX9C>=2R0aa=1dZaX+*cXM!TT+`NMT0VHNvaaFgIpj0Zbfyx=}9uj>dM znKYSxLr*;c#U8C#1&dz}&HX@bq?H%+IDYVXnbLs3u$T2PLSi&U{X?59D_y<*>ps%V z@EpI+8%g!G31p3zCbO%&cn#1U=DxRw;rV!z01|p7x`hyXdpS zkE&$uhMa6S_}^jaRrinFs@8>Alc@}lbY2h{er z+!3GOj+x#(u&L#lTdo32eutBLDr&JmBI1^5_D2zf*tb93Mh|K)g(oZ3GkDAexz2%1 zYI5l{TYBTJ*g6z7Lq8DEklu@$BJ2l(0J%Xa0B=a^F$r;0m`WoYKJ8H6IFazNF zyjx~9w=+F5i|OR-Px5pHACb5+-e^7_Qn}M?Ho0~_gvUW5@mwg4phUC$$;eIw*pknG zbCK5~_DzZp*n{MBgy`AR=eZvTH&f-Ik*oYIX)ULl5iVW`x;EwHF=2m<+8kteB<7LJ z149GvLF_LvdF;-CVSN4@YLB~4B5VDJO1GUZkAz*gCcOjUlioq`5Fg0C-i54R8H~lU zE1-(*oZ3!&y%6rNUHW+(m{^yJpx-^$-wQb~$aylPDtz9+SuD=`xkBXpT|qm{HlM{s z3*RtJ&20*fgc;U%*r>HXq5+ujlVAGh&Vyo;l`;EQNvwY-K+RzcP7&)+X=Rt*u%y4&e!)c-@&E=$ZW>V5xj|5^ zZZ}yn;7KA&wzZnwPv<&6fT(=UfJetxl#jp-&+|rkRG`H0tjr+ZH&~>ZU8Enc0{=(%Wp1iaD1d}x@}tn z_O1$5Wsgk}ku9`w(X!BDLHmJpl7xtc2km)7nGOdnWyYD-)1)`7bhOe({5{uIldDt- z-1?A_3V24m@d! zfr7w5S1Karq<@zZm#ZQ(rlK~LQbFC=*$s>prFVTT7fcntBZkm9-{br8^5)Yyj6?tG z`Z8j3R>JLQ&1LOw*@Tt2Po6ahLX++A@jz)y2_3QIK}clP?ig+QwVRA;|JU7QOLaI# zuKT~6l~j3-g-ar=F50d><#F~rqj4Z`x`SxHVQ(*;y8!n=7rWON1Ux(Zvll?f+X?G? zY$tv&viDuXnn*Yr?3L2F`dPaAZp|l)5k&v20|d(=b2w(c>!C2ZuLvWLBO)P$=p`f!mIvDL zqwO0pa7gLYey?J-;Z5_yYIC?ihckH7>Y>r{FQ9&3nRe%D8WToXmX=BQJ8OJlNZ(-; z^dn2m+4hn#+cUlI9yBIqQHoEz8{DirqY?X#zA{PwYGqQsOsEN?a@~cA>vn3LPVGB; zbJ{0pUW2~yNjpW`s0*srN0Z za@-d*u`MI@b|=;_x-?W}7ybi48t*m7)f&P9tM}l2K(XadsqD7~=!a|^Q}dM#IWZHg7c~m9=@9M zoEK?p)1KdBAcm^T^p$?yiLvxPe#xid*TU+7-9#gWNBryV%@&x-ZjDSjXnrnmv1sm2 z+Bx1h7!})oIoh#1f3Loh+oyU&W0tcVKVr~V%b;dOcn=!nHP}!l2d4$S&F}589W_DQ zC{zV=({8E6e^l_3BvWWqnPfp9(VQIyLss|-)KlR97rygx zRu6Vx(@B%TFn674PvfHk1y_9}j#W246H45h^W0w;6zs43W~ahye0}05?L*#eX_mOg zZG0Sl>73+TjMLL$;mx}zxWKpB{LR?riOi)5Y1spuXKR$U7mgN^!S6nqXzc66u!(Ch zc2!2olnU=l6xq_E-BM#5D%k89m->eY?)r5rp85pn@FRmaYTk${sm(Im%~dg&ZZCLI z*ak1pQeW=H-(LV9SeHV?%U)bUeS2Y)QR1AE5skgZv5>*nJ^?I60vA?uTTuBs?SeCj z7cWi!Xipdfv}A_W>_RUm@mE`8q04ET|194{xD+U3h#`BTrFy|eZXx_9ov*8^FVFPe zj5n0SZX-Z!UMuNr>_d*@b$h*EOm09bhunz=Br7q>xBqKM@{qaSHmArX%vW=htvsPder!+8rFUY<|B4@CFvaFkmaH9ROfJhj@IBZQdkE_>AWg61zu1K?>r`BV znHChtSQHe5tOjK>_HU)*#=yqj0llcBv97MjS(aJrS?Tbn%ex-BJol7F%XPzO-zGGb$rO}8M;?j^6U z%se!|;o6bazA})KYvBxwV-ocpij;U39Fy2uFkywex!kYiuB9xMm`V?H%vf?WNt-qh z%o23n)=80CzUZo@OSzo9rYb%zEgSKDviVM!uu|AEVo4&&xm99FIQy^(qWx^JMs!mf z9G(ojiu`7A^?-wIsh_m1uUsUkSlU-K-3^9*lWx%9d}jEIoZ;FXFRLzH$!vxD^*!O2 zFFh80+jiMTwseo6yS!39MGMyKT^2;b{UdJZnvn1)W%R$gn)2E`J$WF=mcMRcwffgY z>xJg)(J?*E&MA4W&|dnlcItnrP*UHuXr+0*&SQKtke2;nxJsEqu+Ho}Jtt6>cu&|A zFwm90er%z%aUF9oilU+24^%bYJR@YUo0fzzGdjO7^|}~8z@ESibvC(={=ma zO_$oL1{eTKjxrHJX3l+#P)L+c)%crln^9z}#w3;q{9(xJ4H4tWKR$4;I4+ zid56FQykM#1|{NzE@e!FIDfmlnA?%?fxt*iXX}b1&J8uJ0Y1o$!?u>IT9AH|Ti*cL ziH-fWC%*FpVkda(w}F%Vob5K~{sbZOUSaB(U~%fz)KO^4WBSjZosCjcCkGnWt!Im1 z>6>ERDB?(GdZ=16Rj9Z_w&F5u-D-&ezgj46A|n~$yVcbpyBV^bv!xXFqjz)8+GRDv z{P0T`0GfFK(2TofH*>H2<=m5eX*b*bh9G@!|!WEe+~TTN$&6EeSP9{6}2NfhF2F zxt#?GgVJ#95;qB0mq2EgE}Jc*L{FF5@$L5>S^E&uV#SRc+s<>j`kvxPKWz11~@e)ZLm;YB3o@dgx$Qr@H^LHRL^~D zz2Id)~FM- zLzHtBi=vMZ#GhQ79T*A{%iNT=*SRAp?sBK<1`$2f__(JWXBb=)09QV&sB+?tN~0;C z!_(oB5k(kwYI$W6MYvz!JX;3C+i{WE*DS^Xi>$$$8vlf=@BONB=3*Vhp?5EN6bQ1< z01QN609>WZifg)$5`YVrP%g%^R+zoTbi(kthrTJcqs3tbJWeum-W_BDJTq3bo)Z9v zKXz669mw&O5BsGu^N$eS=*o zX6(;3==tM;mrXI~miVgKQC$s0I6F=sB8hKXgXbGB_lFuZJm8peC-`U{qw>C|H*7BN8}kpY_&sfZp}*Ko+duPxmn^<%v?u4YMnS|UNf)0t zi1Rt;awqg*n~7+4(DgXaU?8={X`!msgMey zWtE3cd0cTrrRqK8wHm2l97vqcN0zOg@!IfLvxeE6?d>Ws6uk$nNojEH>M!qpYrA?B zEs*^%v%tlU@bjYfR1oZ4L&L}7>2-=)Kl>BI2W4$059-~QD?E%dD+9R)mNoK6?*r#|fX7b%o~5z{TnlE1PI9PDL;ZYP6h zxdnT51*!FoACzdkzi4bjmOPwZYs^#`;}z?1{tk^-_icWnDZz5?e9Mc5N(ToMHF};+ zdJ1uP!)>zUWf&wifv?3+r*D@3OV>q50#KNx0Hx%1UlTcpy84*`Ki`AYqq;z2Fvg;G z=KcAV0G2mt&ow0c!N)CKaYpYK8GY1GW*xDcRhG-wFb=Ql(&-)FPB|$_o~&f95*n3L zM6EBScrGR8c!N&{VFQ#r$q(Au+*$FvP)O*j6uq+7{Xk~XiGEx4cNKWe>j4F)uwwUd zAMyrv!Uk>tVqa_4HJ{KvUs~^D*;%!p;}M%g%eeas3tE?255415)d@_d%|&w%iT9b=j6p z%7&fZc)H$A>EkE5C}I_Hyl9Tyz_yvQjEj_&6whOp4;g4LW4_!%0)AC<+RMX{8PdO* zWWcESJ4-nxbVBRpd-JE$TTNyy-vHU!eg#*vs= zlu;ccXK^-p>QFT$8FEMX@nGwq)uDoVDW%{|eH+1>8OzP_^)8m=10Lc8HChv;dd<8a zt`0QI#8nRhkPN>i{W%crm*kK$QUVLOxi`=Bok+FrAzpRts7dem@@(>TY=*SNhwJK3 zQzvz#pDbi%NCRmLsLYcWNz8|`VWwK-JWBKxX_-gZN+*`Q`i1%-pd^p2imkGrae-e!!d80A#B&8Ow z7uxIAwH}HIM2*KM|S3Eg8=4Fa*Wx=u^$l3Y-t-ZQ)#~$ zbWLRo${Z@A$U)c%T&>^sbuf(0^*-9#2Z*$gQ=gXyt3(x0LVi9+%g)+86Yr}&5xKLH z32lot_{DVP<)+@TnRCH)YJx9Sg`8ADuwo~`j8j(^nsr&4-*o~JG04FYgY(NGB4L!% zRJLuQO#7cvxPUQopetrJ1V0K1n>1mt2Tm-f^IbPUWuWj|?xGL^t~zCeTy}?~7C?$Y zaLvGN-)(O?0ON5;u4YBMYI7llOs(PdhZ%ytt7@R#Y!9d2hGsHuzYqU#DR&cE!c^Y;tP|;~)`-B=*fiLF_ur6K32ZLv2L&Q-e{kO_frEgW_>#ki;V-B~4+IgvedG3*>D`4sLrdVF#JbJs5OV)z zK8a;(^5@mYhvpfro>el6CaW+k zhW>!o*jG9QOd2oAS;v)l*(9n^&xh7c%I49JZIKh%Bm$;IQv9XS^@Eh>*hmu(dI#=tM5URjEk!z zh0o@0%>loYL`j6+E5wfdR&PiA3I5Oaq)O7b@=^_5b=D$;MAVXNegJS z&sYieI2U{@Gb`T@aPg9`(ML?HRE5h(oRc-QA=Wl(p2B$U-mHXk)tbu!iFxzeXDz&w zDi$A8g>%RMlZ&dRg(LXDbfNK43U#yLbK?pe=P|FA%BHWc z73!Ao_av6xinwm$Q;PVc z9Q|}R;VRj==TyCxUtqPr((k%evpnFAz#5rd>KW7oJyy>*egENOh(PV9;%@>z<3r!X zWH1ZS8R5HP4ZGBH*v17a?jOp>OJWEW;w}gA;VCtg8LV>mYC>A`0z22N5axqU;4FW# z>&#}dK+VFXlf8I^x)Ph)<-4m2fhfXZRV3MWu1hog?QXn|6hfO24@^Xz7nIG;P?KMq*||#uKJAt4axE6nDW%F5$zb%T z=vZEzODNO_8p&HxnGx?=j%@qV9y)!yTRC5ppU`*R59m7>O=E!vBV~@h@0HtIhPNN8 z2TK5tG+(i@_jcTZ@nlU0!HgFb+IWrupozL=yY1`ibR3MN^i6;!p@Ba+=(gBBv@|pc zq~&0r`~xLVqwp%%kVN1#53r6TH8nH_1odKRCYTGo-951F*VHezGPzE_42{d0hJrr1cMi&Y`4IINa^^#AX>L_YjH|#HXoaRYpyUPVvSwT4pzy-4pt{r+9n; ze(rZOiA>WK#pcy83qtAM(QNurP;B6Iy}s2JY3AJ9tP1$!ptc`&*|UK!WV4zNVKP=a z=<(topt8LctE3SxMz*p&*$MQg*`{>Tl}bI!fla(76qwl7n*RLxBmEV4nrx>czhm&j zvADI;E^@i`<>OT?i0UvT?+@EEB)Olj&wR13{o1v#5SC3?(9ov@6J){6Ke-M$^4k`o ze|svu54)W^8zVFHg}4*JAIz_U4Vs{u3;mN2=UR4J8*b&923mDrvuF}H5tNe$ax zk24_LtaB;6I4401s(Xd4ltMgcZ?$ZA^t(UAOKa8pF&ImA`qkwjFIkhG`!G<|^lfC^ zXR878GOI>e1J@16&~~8TEavF@8hYD~9mQj3FXco@x`-N2$Qt!9#0BJx`^)IuH z1><%N65rCVI4-hq+c=InAn?v)tlSo?02i!shGtUeVW1A9>0B3tcmyfCbI#cMqYit` zdhxe8Dxo^+;V`jjWp#m?y)NFfic0LBTz6~ybs|l#httR%E7Lh97`9|ZqLCn&V(3*m zO8&Y#$n1Dy=8)N8BahE~lpE2cG~%35&prGZWohFuxJ1XjA0o&{x1wGHQytMyz;0`@ zqE)4RsMT-T*xF_qIMl~B5DwsjQq#LMUdOY6BF=R1JLo1_u+W84gGNBeV zU9FA=>~t99>hU}j`D*(98sI%}3-9~BxQE%hdpunN@;FEY`0Gcd%CA{30i3qrZvF#x z0nZsf^11v+b!O4rGljjr-|cQVBa=MxE?Z3h`&es}TIb=-_N1hXzs>YiFnu zXwe`jV%Zy7z|na?NfHR{bn~mi&JDjEi&HUR2Vz2gVx#{s__Cy)?DEO^vy$+vJk{>o zI0_?}iU|3T2$h_ieL%x2*W|p=v#4Mw&9bjflV=FT0-)+NV-3ED;Y>cYt5r8} zZBqXYWd4j=qvI-JPe|rg$Zp5Zbrr4??3Ur?KK-8~+cHl&*{Pd_#pKP*_rd3`P}J@hb){5g$< zR+SSe82X`tMJ2mqlkia>1s+z#QgZ6(`kPldFIN%QS7AEb=2T~69wf9QY4h1b-|((n z-*~drtvj!hQsnZ-n7rZ_teD4Y&3B6*l1Fd-#n zzR|WBL)()AijP`sUmmFnSRQdE@UAo&6lV`A>D)(XDgB6I)bxrGSVNd>;mUqQL}0IN zlRgO_>w|36jHcq`=T~>C?%?XL5UO=Bkl}yPh@^Ac{xy9n+y0OAsaja)E@25sLuU_a}rM%HvUK zQkG+D@Wj5P^@@`PivWz0LA|4&M5n>@896!k3@*cu|I1iFC(Ed@xBXPyCwmDY)Av=3 zbB$b7#zp~EYG#){a90W4{ZLh;|Lv{))U)8Ka{~`4IBuVzF-M#-1b{e{+cOuZU3Wqq zZE<{Zb0=TIkQ+t{-*4f%Kq-j8Idgdn=>-5pd8`+gqtVQ;N5ZWZ1EafiisaWA?~czC z3EM=oD`kS7A-BPPc`Em-e!exBl3N2Xg$dV3+%kkSiMS$*)h}Uj+!nw}z2{zQ_YDddH7_Ee5=IR~5+xh%+B( z!@Z1aKIwdn*yIN7V0sS=2pTq%Tr(u00WN z8sT#fNH0`(QMoqNaSU~)F=W`MWzkbP2aWGsYo~(0D|7S`Q4x&6bDH`d@Q!;vZx&AB zp9;L!|8eJRbI|O0vJ3a3G&a@Vv)*3WQyCg?&;*2rp5{;qADPR!uWehztEl~NKiuf9 zM3s?mmOU@p*zhSJKXo;6ASpNh?{T@qDY&*sZv;v8Rl_m&@W>KG=9ZF9L*J$g##hw- zkyq=y9f7GbEtppa?tde|VuKWe+gW>6%iE4znhk#U90^%LvdaFzD81!);4Y$!p|CGc zE~90-Wm^~vWC!BHMy|12gjEcDQW`Jqm;9btSfb6md&}UyexOIpy%AL)R?w}uei2&Q zrf>Z{^S>n#x|nUV>7b<+nQlN^2=gM*xu=zOiY*w^Ja6#pcjR0$cUCY9y>CtUK?hoZH7BbBRP7R!0oVnuEoyPWd z?3&pk=$cO!h4?9P#2d?bZE39l9?tvCalFhD8Q!|<fNbfjRff{g=m&NBE?S$MoN7PjZ<74M5`ct(TH5TafQkR=#Mm%73#n zcA2Tw>Ru&m8>%jAL*hH`bzsmB7xxxD-CR64(om@L*LYH29wUDl5~U3OpG8>!L$j~Q zGr_5>hic>n_7U&O4n_d)AH!T;~~>hs_4re1?gS}Pwp~(47yhr z+~WX7e^!1pYY+3VVCF8{p%T3G(W;3zCfR4N)2TbZTM!}r=Afk@>*W`v#uDv!v%(2y z0e!@BNqcgZ-`~Ub8jX5Rlh#vRka^pMll@#!%8i+wKe}ZXf{?uMIyrUK=Dz7^4Rv-i z1RfwJu1^y_wd}7BuEspq=q#f7&WqX!7FEa1I472WKZ>VRuPYj;cAB5-;=Q31{)6TN z8Efy1bB#}Z&j=K}e`8L|NS3e*ZIAW3YDwp)E9i&xuX3F$D!Ib1|AisQ2V0F#93 zK@-AD8S$pmw|twfg?FT0ac~Ndrw;oxSK?%p@ibC00!>K43$H64hk{<+I*L^g=`j|K zOFCu?#>r83{&wwaw~g-0Hpj~UhClGMHKGFs-k?Q2dsq?p_#Qk)^E4Z~_qEukDDPVR zFG=JE^sdcjhTUlx5=LEt|4}3HgS>qxwMx`q^(XUEGMfGB!|_144dIrXtan5)N4dKb z0RzmWfcVSv3m31+CcS~I39MnacIs>o44Fsf$?}WrSw0=jLlovU*7RE3XOG7ZRxsr; zc7}*oH_c_1bzHDq4V=IFZ{8mwWTs8L*89_}V?J_CG~u*2CzQH`cnj~de-P`6Wb_)K zSaJ^(l8u!{q)$_>0z9NlrdMWCeV`A-{{#AnKM3(s)kT&!k;ndwG>3; zUG@p{qREf&ZTqO@6VP%;HkQ7KKLJ2S3xo?y!dwky49UNR816pnw~RoumgM7E$(XsN4PE;chU&eKlvj>_ZiAIh-RVr1NTbyf zUJ3ggJ0=O4${DWu>txQxTE6nX+T_gl5jsRA4#WJgTmiI#A?~|9DMIuj`)_sX+%Cgo znqOU;p6;abX;5NydKCVyrC^ZNeagwnf{D8)>kPeZLSyr!{AnmAOlUkfMCaI4uET_| z7q84UJM6bryI$-ec#N|MxpT-s4+C6x<16wKaSDxe&PW8V8}Vr1g1IIL?|K4|9T$VR zmXlpHL^bIgJqii|BYa{5pmDU@CokxJ+bC75+pasK9{g_b6DoU35y~_A<2%>%>#n5G z-8(Ys=LUFZzCur9TM~9Z6RL{MylLbbF+hTgu1dYYcH<8~Wu2iu_=8@-Z8Dy+QoVYe zP5MBdol@+US`Bc_`&X6X`!@n?m-;b3^G#aT7_VFdVa*=k|Cq~G;eic*5J=SHf4QTz zzjDuV06h6dgXpnkdV07b_b^36$Vxfm{HNg!C2ZDSIzWE$RQ`&QkhW_B;R6l-pRY7 zZ;D(|%S5;^t@8tImfBG8K0Uj4L(5@diVXO0uJJl>=1v;i1ly`^dq!hesdOznNHE=Q z+2tv!FRRi? zZ`T!E)vLO+^>|y>#G{GpKFlsUiyjKRE?xMDBa&Nc_+J6hUu~3*NEc&@oww}(FWuN3 zon^)xDb$D2VE%v8apX_WDjTJ^A+=o4iT`KOXAN2d?-tKqUgzov7O4wv2dJ{&ou-pH=0JBhhJ!!q}t7w(VjuCjKWRA-=X{DX>N?%_Sf3wWnX**~~vVRB%0@R2rma9=+UP`^H`?px&xE z^Qb=v>kl)n5o7^erx;Cg$P0Wf)m9AgXTy?T?+_}S@^uB?{XaG53z7#XpFUnsi>7wo<|8gpA%}8C= zYI^{O-uCmDj-f+-7D!br6O`mG5JTr&$RzNWp6hKDJ@S9h>xbcW+dCc)`Sewk;Ao>B52!!wu;oRhjHa>^yY7wk3~7ft z-k8z$Brf9Pk4*Y*Wg(i!u<)>2V#G3X51asl>f=q;Q%qyg=XtwP7aF#7TnDX(wOA~Q zzpN|t^?W<9TZ4F7q)sl+F^S?cZrFZ`U+Vih{lS^{;fOHr?Q!rOS%~qycnum}rM6a^ z{6;&5#3#hyR1l0g6~x;h#m?RF!Md$(eYL}gw*V!SR(X#fgk-;@-Pl>>zu_+L@y2(% z*FBJq5tWBaVVx|FucQS{%>aga0Hf2#cs5-y0_J^Khk>xLi-efR-{h*W01GygNGKB;_AoMfZk65=#AIIDu!bWLoPZe zcr@~U?dTGVLfs+>?7XQiIvcCh02p4C2HKb`lOL9vWW;puPJ3@ZuB)YT@N8W^{eS^L z7ZmeamO|y3-sS(bKj)@;+3=B5^Pi!KHmP-6zmi_3+6DM%177#XTc)^a13NR<^=r1- zmBnTQ&ruD&=AID1d*qx2wJoj*5UAfDsAgk?N1y>)1vJ%bEl=5XHulXS3PP-Yf05o1 za8#(9oD9UTu%M0=x2E{c(2xSOCAe-jfF;9ZoL$GEghHI-xRHFNlLwXs1cuN~49QbX z?;9W8ZARBOxEkYJ$~o5cNF0L;efUeE>;NEMb~n;o4(k6c8qIv+-s88 zWkzIsBdWy&so6E{#ZqE6!@hCi#Miq)z2^*-?4vch_YHTFZqoLzh-jwY9`BA^W4gfl zc(8XowOHC8;qk@pp4*J}S`)H%(e&^Q(m8?`S4o}$dWs-k5eG|ZUHeX3N6jAuatOK#oMPj$l1iAryNP;xSh9ZJ zanHQ{Z+AOdw|{^8%g?s0+lLvyXZM^-raALK{- z3eXC2D~=eeFHD&5grmILmDj|Abpoa1!S%-lL-Mk88WMl(*UY;ZW1EGRK?0xAf;29K zjO$Wk@|c51KzAxj^G!(g8*lu<$@;Ks6229ox4U z-PVVowYm--H=?v%N#7-E+HGm);0)n(6C8>xgH8e;Lof1mt5Yk8qQp3FG1M2tw-rvCA^SsX=?|PrL zSgx5-@7p<_bN1QSwXc2c$@A7z#E*Q;mapad2!g3=QZHVeCG9bpe7y8n&M8q!7$X^{ zOgl<7{UgQ6!@${k>J!!xG420(BrMH|z49ZmFhhiB-JLau?64yV4K zg8vEZ83magDl&%i0XyI4sEJ`Rd*c)k+f~QGP7Lw^8Ow@|-U7#^!IHBb;L_#oq+4)( z2EL|nfI-{4y>=@?P3F&yyI%!8>5JDt6Y_~Oj|p;_uZn7yS45GQ<4__7*S~*Jeawn# zO23TW^+$BopzBuZs8z4jbcafOyGBYY(AH$2f|OJJxXA2eA(dnKfVJt4Id!k^khp|Y zd*j^Oyl56n*uKTb;0g!bE{C4Pn!J=7G;L}1f(WibyBmWJKbRjG7O&iT!cDWafnX|N zK)5&y^J|s(>TA;~6^}d{&F`!HJ}Tvyy$9np3R`FSUbRI*9!Fi~g0@C5XRdV6r0h>K zkv{>Yz34)91mqxv36L_$Ht>~J4-$(%RNP)KPReeV*_PFN;Ayk5TIRBEJyy88yl;7&5=pH;iz4&Z4(?;Q&a7E9@+N@v#Wn?aQpdB2_ zDRdTd7?;XAm1 z%wDCEp=oo~l^IU7F)Fy2t~RqRk|dkbS7oftD78M^THvxY56>(ts245k#IB%tcA6v(BeMRm&YC|i8&Out6t#vo7>vQL43~tY5%eWD%S(0kytN6}_qfqs_r zoy^+vu+Ee)>ARm^m#~xd`F|TJYvg}dS9Q#A>>Tz}#q-o$O3CB3{^pJ^P*&lP=5JP0 zw{T|IzJrs?!;)UV;GFQ&XVUS#Z1TwQ-MS2N;Sc5+Sw(?E>cSt*XA&$(Sx#g7w|-q8 zFSYHGr@StcR=s4MpXM{oY3Jga98VzB~r%4yshJ1%fX1Pw5XQX97l}SVJqt9 zjnM5*6<49HhBx_eYCX%p4m{&dyjEUFmyI=r$F%yQ@tZeUEp7=;P;ke&@%HvSK-AhL z;Dut&^a(G=jG$H}PULv^A2Kk@@Xn{jl|n3cU7S^3q6FfYMM zDzecG3v>YNsbhQkV|8vLQ!T>(xLcX_rrkQM7las7lbHkqVo=Ap z^O*Fk8J=|6?7iGGY|{l&_HG>1z%a0Zrwl(bp2Av=6OW4PtkA02>O?*LoFB1JyiJzd z>ApdFoOZyu1^-;r(cx(@Fme_K;-$Ka-`$e z%3;lZX#ZJ}y9=9;Nj6Mo--&}m_}Ofl4Eh1!*!n{|o@;Iz)sRNqCzo77=InI2y%N56 zl_Q_Y{d-rPjvAZuQ^bvHqVbTTLK*6$fYJMKajb3=ZOgBTc>oc`q^O3HAuUO zPlIc#&_h*SVV-;Ungese-m$8Q8Lk=f$o(YT$aL9$racu@7pQH1)Zx7a?Se_6u!(?c zx5hPsUhRdicM4q_14cX( zEn?;M^l230v#c)r+cOUa3m!Z_-;<&cruCylmskZ!rRucE+%F`F#H0N5K6*8F=us>} zc zu6*L;32lNCMln>~-eI0hUBtNa$3z}pW4F-Ky$V0UMR}8Q;L3|6Hex&>Mji2>N36sc z7wf9Do$fhxjUVn3ZyDEaOOO1Bx9_OXST2szabB3y8Qiq1h_Ozw66_0_6NTQ;4H6lA z#N_U!j^%CMLfrWM`9J-k|NG`|tM*?Oq{bSa^~($3uM7QO{>uON{#ftF(H|+|efbWq zAAT6$GKaR!fa8SgM}4I=tGTZ(!b2)<;3LIK{tDe^&HLdpO@-1sm%as1oo;V#(;nyu zTr|H>GeE(7Ddi>0f~%Ou$6L|2%rZXp@otO0bI;Y`afmxR)LY&7WQkWNeg08gx8w*{ zF&oa@+>1d4jYLiJdxMDl)XLafGc}ugc`;LIFWKMZe$*dssI$55|3O-?0H^v~q>>Bd6)uzM8tl z!YenT_@2>HRq*GSy0+lKUI>beBN4B*udeA(p=9gwfZVE4fVE_+x44pX#DSMB9ofbK z8o5lh%AIV-BbCLq@mMTwc==RTAJ0#dy`K^dx*&PmiA2uDnVK&4=VIr#&zcV8nT`h; z>=~DA4q7#|jG-A>JBT40_@oI~@HYMil_$QRM==PVsE+X#fT$Y;w$nZt>{KrhB3Q~j-sC@BobiiC0{_OR zm*TWVGtu=NGN~u1LOyLwh;n(TdHGyU&NVfq7@qQtBF!9?XLs^WHf;)L8!$j!7Al6l z%hVO)i^3%=YRpTycYlx6eN|$?phN#;LHDP=C0jP2kDpZH%X^eX1UKPg`X0xFeYwg5 zd8<oien(I>$s!yQ?bxWXCQgbq{r!&>tYBgqy@()-KQ$jEMCapk1MRG03rYDezS-ELY1~ml^eOW=f?Kw_?GKyr>oKzYzAyk+cL{YdN}Q! zugq*x4Qvx)`;f=k!2&(Nw&pkAFiYFU?!TTUk1nkf8d!~ragsFp+rd2Gd#EiVm8fFm zhI*xE)J(14vV!ye3|?=~hH51uY6g2^h<=R+$wOoT=W2OlRhMZ%!)qaEtK)(mjK4Le zt9X4q{p_vX_bu!5mP)%0Mco(G=XLuN4QL|vUf#NLUbHW0C}v9@J9JQD(>v~VGcg~n z*0U5}EJBe`Szlq-&BdIDJ!kbQdacUM%)#u1RR@WZ&o`OL67WkN$1;NthpR6=gTA(hYQdtDX`mr z>mk!JiFkz^6vvo&YGH?N<()i%I^lcau2QlUD$he(snccqR$A*pbaY*LpEf6*-uty@ zAZByH@`KI0?vFWAReW6AJgEWqEwgEhg;(vd+xNEDx$n!Td!XL+xY%84#eMI#eBoGt zzPPw}&2t52dS;hdHl2z)?wJ;#;Z$u)ofD~@V<^`T!suih>wsTF!uVCst7XsiPhEk< zSWRV#0BWD*J#{Kz)Ppo=y}ev?Je6Qd`qKo(!Y@+3~Wn{zJPRbD43u?R0&JBxT0|i z3MNogQRunwCO!0LsFCQSSl(4jtZKK^v>Si;QX@Eh{%u?y(;`LpxHcQjfXvP|*2Li& zA4{=H25WrGmQUZqTzU2JL;YNhT57pxIP?t%3VfsONwHMe^Ga0pWErefM>c`zrd6-P{E{|3Yt7 zThsbltDt{Zih@5jF2SSLRUA`Vk+`zCcX16Kh4AL-PHyjufk+<;X*wuFUIEC3zmm&x zxWra1coT_B;S1y`7qe+ZuE-@HZdCPo~_u@ z{XF5q;-Mk1Us>YET9T@Yx9!mzp0V|lh&@sY=*Z9S=Y>H-p(|Z5)eE!;gL02%jM?6c zJ{$ciXLOXpv3h&oNy0{oP?mc88W$!R=(yjv+6!M!>X54Ki$xjrPL!yES~#-_N&tl>$FjJooL&?o3#(~EXaW&sJ!jYg%UyDzx zOX-2x9h*t=NC^=o0c~ZjTc8}FvZ}1&M?hR&Ph>K=RwGYJ%5uG7riQGDp~@kTS;m2> z=oAKHJyaFMvm)%i`~8R95dy>h7_9?Mz=Ix}#%E-fOpNFQ`S} zI!rAusR5JpD1NU=a1Ij&!sq_V&TGMhuIY`4K2?301X3RD9iqRqox(iG=qJ)@P2v@Uf4D!n6xQ zVm4ZhO_w;WZy*ff)aNDA%pX{5%Rgk%aMn)IM1w<_yC z3jbTq0eejy!7^V7gVbve&*x0twPUM$dd zY1>q|S(Qir%02svl8|QxyvSyKWsMj)v(Il8yP^qi=B;bJz#;~#0e&(ia9pl3WcG|2 zT0~0BXNAQS2cWJtcrLhFmB;8MZB&Sgo2_Rd?4^dLb;c}G?um|#Vzl;4`7MV=cSOhj z@6Z3wR>0sO?^#3VPW2Q4T^@7?sA=tur1FC;skJU;^b2ok}+H}g{ruMsN2 zB=ar|kXn-N#wuU)!aMwNxyH(plP14M&E{AFv#v~Y*q+ng z`-}x0lReF(_i@duK9m0CpMCl~^)b$9&FE|Tn8_bAf!8iZ9NriSn7N6q=GBPFGzRuj zj>(z9o&DGu%%B)%eK{k42770_0=@qVC;mwefq5L?;MKMr)7-qxwcCO^xq-1MjxF zAMyJLGveI!^10BmWoeVM)H^GEG*3I3LtLXL2x2lq)2zP(7jM&)lhrTj|WI}3@JEp>7 zCgpA)zL-8tw2m0cGEiI>uzP)7v#$8Rr*=HZ)iB|!iigiSS(Q3R-K~YJXc*pS5S zF^>oPY@_Y^0l_;KyyVBPRYhNHuuN?&Q$^H`q3UbA8u;ljPH!)}wa}}#L4o?- zjZFT6Y1gWZPlz}lBv=5p1#0>|3WL7o;>Kl9nY)iUR=1od!&nAb`e`?}y;jn&(pWPO zw(@JRl>_dru1Qz~R;jNCW-;h5oYvBOeAILNhQq`}pdGe@9UuR;U&9W^o`9(nbqR+< z7W%2UoIG?47QxlHsx$UzVYSSW*P;Q_y(x}}+{kyQ#a^?RkogcYSsbJvk$)lAy$_?s zKj5D z-XQaloAnz`e1kwBPW)oHR>^&%)1S4Qh?THaut`rHXT^qow9@cOiQ#$L+BqnKvJZmH zZFizWFkD%mmzsCFgoiG!)<4VVZVKCbQROtT`XvPG5KK&E1X`ylSa}_y3`x(2f+skM z4^v?PusNgs2Zes`)g`|-9Ny4V9DUeF;q0M`ts*&BILldo^>hNaCb?kLEpD+h89SZM z*&{m|l^JE-(&=me4N%K@r4TYn;i~ir%*SIBIs^NSO7bsU2VVvHHvV`t0!?^%A!WqD zt?KWTo>>%M?01Ry4r8&|z3sY9;eT=ehSCrDxS#Rrci{T_3&WA)IiB%Bg_pg2mNAWC zEMp&q!`)5BF!q2Ez&cC2IB*C&kcO z1f9P^5tmwLYP(my*(Zh(s}B|9Py0Cp4!0lpl?QKa_2YBCN&Ab~D);tO=BULS_h@Ab zrPlxckNp*We}6tohvOs~E<r@6bd_SoPhYI; z7^Bw{1&)d<@99dMWeY@h~7z?PNfz{d@0k={$IS3Ea*K26x-u(Y;B*5*|e zjS0j9BJDL${9EYxMu_984#&`VsGaY|IWNj~u&rl>v8kG_DU6a8bvs{T{E(kYWc}82 zl@0kEQ=s^)h;la>~Q*K4e6PG+7Y%m*y2Q8=_pi8!0#-(4c z>-#{G}&ejU?rxzTB?@f2*y7fuegwS5y zYK7!dr%`@JM-t~4PV0v(xv$SQf5wpnpv~uxtQ||a|zSQ>W*7$aW9^phP zK=|LH74>D%w)k%k>85Isc@Q?L1{0QhV);$f>=I&1usBC$R`$K26+PIULd+}s*e3!> zms$2EabE7sqAw2|gE>BRBY~5cmrL&!hDceV^XMkD%J^^74`xOZjm znIy!d{7li%a%T-liKo zgRGuS6f_k*{wU%6iZPGF3!l7niiDX#7=i1Nd+#SfWyqke{T&yE?pp&`HP-g3S*7=i zSsQazQ>mL&n|pfM3c^@A zO(;TxAau(H?M^%$I)MBFbpi8p-k+z(mux&;nbYJBLTS$aaZ2pa;4VOB(ZkLi7I(t_mcN^9*VljZl_i^K_vRv>8o?zF1z_SjWD76XYGp`@+FR zli8uHK~1jUpU`a~tZ13|@kD_RuD;4HVVT}|WG78K3Fhw{Tsx*Yv$aTRF z=|PI+w%Ned9SE&(H+E$6UW%>_fn!XnJ? z)CEoX<5o7VI&E2{opbG$qv;wMILvO=<*N+?yhWRQ=sZsh`UeFlR@p#?2*w|F3pODS zq7@(u6tpazdzWh?b&nh$7DeNJkY{!fn;5_H3!LGnX9JKhzj8Q8NIRdL3_@7Cqn~fS9U%vJRb0QTGItG z>qf!QF+X*jgA{sgXHJ)HF}4PRhxRcmJIzp%-Tth4!TdQE#3Z&q$de9b+1d8m-#dY- zvl07R>dpJ~UjSf2ZQ1$aO!gyExFjwRkCjwV;@IsxY4OMLVQhS%SyI^KXT|Zw5dM+8 z7lWMdCV$aj$=eaYR&{lC-D+0d=WdJpp&LJ7*8GAq`+g${{3#hD%{M^K=1hi4G&rR0 z*8q(d!x_F9IYOLx$RuKD(>oPZ;(maRMRJ3!8rnCqgoyCt;}rAXpOB8LNGzQ&5ODy4 z2R|P5ceC?enl5rHA|_4Y?}{rrsSY!H@8V;xP{XfjS+BAnix@HIlVMGHvd*ZNyJ9Es;S{?kAa+ zaMt?xAru%^Kh4v02<6_Y*DK%kp9$M_W7WYFoi38%9x6I4#5!#HWZnI81|qRD&kDHr zL=K#t6n97rd0?=3=laOImLi9hTtmjzsC4lWt_x6zNsRaSta#M5c*hHO{Mj9P)mP_v zb{^owSDE@x*T*_d7lv0onNJwt{gB7sj((+iyMnj1@ujJ=$Mjfh2vlh^lu6<5 zl;ddX1?)OgUjpkI-7TO!r&mWniP|U8Ar4|V@ay|}reFJ`o#_^E|0;&JiPSz_yVjVhR<10wfIn(L3*zqdNZq+28G#F)(ogGNwpxzhultOYv7V0cG9Rb3= zwBb!;rp%TbJI_EUIm=( zt$25*VBB-AcXfuE)ku>xe`JnXv{z&nNI}w~h7eYsB)cLbh+9@ghQnV$(v}XQ4&EtSvH2YhAo$`*QhC+ItiI26F05_iy4xn z{qJeDf}Y#0mzdf?rpWwGC4qrldJ9$l4fJ=A(ds=?qmyv7gqpsh8;uMlR4--f=f(%;9%SnKq@9+6B-}SoP;{i-%v^9A2Ta< z2BjdDUC+hb#+q+s%gk2j44@c^wft;eA|1acZoIWq&)wnV^H_^t`DQ5Vqh z#@P^(9bC?1M21XXE?xOpolT7*N;}5}?(ItfoJXy@9?n|%kTgs9GUlMxUO;zssJ|NU zBF)vPuQw6|)Yl)y4L>D%do;i)!y@#T>rL^%;^yXY%!x-TS3F5S?TX){o?skm<}0dY z(AH6;SiIcK`yPtgJ3p3L40!zZ5moy;uzWI0?L}}vrVPEY2$$I2E1pCpkHnfM(nBqO z3T(~50FuymOD*h)?;r-O^YNEODvb$pIC8QvM?Zx*0oc#%r~wN%&Di* zx$^qB@0D{RD!dB{{_IF^bgG~`Py7267Ix1SAC}27mCE@^#pc|zcon!QSlkjEGy-?u*D901@AyWZ z!n~}IK0}RaJ4L(u;HsAop?_I$DR0r2C3SolWxK4_8nBO2$ZdcIAsiE(rDUh*zU+l- zM0VwZ7W{RMMU3=zvnoOCHi5`gGP85jn9D*|+;J4BFyk5lJxU1rp5v?MA+csF+fy6r zlmq<(w#Gh-ngBA#h!Kj+$`0eQ1?d5`!0Q#@pUd6un18?P&DQm^Q*NL^luQQvmnSmb z1DE%GPSFTDC%NG@Zwfcob|;_fZOQhtul*ZhZG><``LePN@LtZnqP10O_j8@jW1Dtn2DQKL*q@nFitHpk9O z?6+>+|2+G0Alo( zv;5uOL~mp1;VU0US3@8B0zY9tFxF>CtPGM81)q`-ZRcAD$6}hDb!s71$t!<*I*zdX zD#?bEUWDF?Gpq63>}J?jpYWPXykY9Y&*{N*1V z%{cjaNhb#=^tYe9x)5?45^beVeAd*9%{rH@J_FP(_13A~R_T^Hge;^*xt1T&zgXRZ zf|<2sO*8sV@KJ;*;HV$Ja>t^j$hB1dRQ@Dg$;)Tsya;vZCmWkF4r-KSPaYN_TF&iB ztaVNRlE87G?P8zaW4(Tl-KFO*KF#LmJ-{Y6d$kQD1kB*#M0mwM$Z1+glLj3bjoN0$ zo!eiD;WUE!Oiw9TzM1Soa}!R3kk9fglCn>>|B0rp9MY!}a(IWg2{-zJ=4Y{U$TpF+ zz;tl`NI==cYR_%pW)STD-2}~!6kE)xtwDHf@ILkt&Y;l0xB<4=%tp*JA`#*QkDWQl zYo+B^nBus30awMF(0Uo37GBc7nuHU71+H}Z7xn(Pb^rO++u@pF^&bA}uBWqy4MsK^ z)S(U(bss8NvjS zT$;0a^7hTCPww;K{Ygaj;2MucM^*}UE4t%HTB;84zQ5vi8WB@NaQl;+k0c+^)Ir^A zLcm=Y=GwV9kPkNK+76G9m4!u+yK9vsc6*RuC7t~FCd^=8WmJ$)`DVcQ$y<~IO*q(} zrG5-kdnSSfdLK{@jQwh%3uk|!YM(bASlHx_*>^}?th6H)*=maszWmBRF;hm~%jcxg zyVqc#i$632W*kt$B#=jhWW!BD+jfvW9E%`55CKHvu_C)f2Aj5mSFf1mf51%{x*-5A z<0pS`8M_cLS*FsUP`ena(^mmUn>~^Sz{J(3pgQ(B?tca*{y|~KL%kNq7&nWbU~yZF zrf8}v?k1AJS>IMGfu!_)bqEuZy$LeSnaoHNx*V#1mkO1P1}c0?d`_rMZ(`x4P+Tjj z+Go-tNp!%3x+3t&5-~hH=WCSC(`bDc9$nk|lj9)12o!vwBeX-Zb47??LUX(<(L;Nkpw=uThKStL&;pS=(xIo_pj06R1&EBYapLRa-V>f_(PxC{(194*}Uv38<`D)Bv!%t^th`H9snURKV8TF7)Z1)+;lO z#ZoZK<#F}v0i7}o#LmSxd^8MX-i_yuj3>I?+j(%7>K_*tv@zFl|# zEiTC9lUb3?Pmz#1G|bv2ho3?-SY3F3{p9T^);|c>js#2+m!%P@*9C3Kd?q zm0$tma;N7Z=>NG-yigps{RQWZH%@p5*fLI5Zft--p$#7VeQVmRXhxTx!tejVb z9HqA<1YS{tXK5w&)xEx)RV+Fx_+AY4I*IC+=}i4qD!)f~Pyqb$y8!rSvX2gYSZs_@ z4FO}5nctZc)zWpi(ttT%^Aa>AU~gkp_NZa^0QHqx3#iC(hm50Tm^}BWu+#M!m~)ZT?p69YCXXhSuz}PK&aJZBq4X- zr-YI~hK82BRmmpMd_sm55?lZy{=n!m*Z~Iufe^z z9rV~4$?X71J}d%AlAGlf9zE1}B2Zh^nz&U#-o7|C`A+%NiyQ25p`qjzr9yzU+|sU?M1)^E;A%!E z@D{g@VUss>tWGwTB}rzaC(t)Cf~gI|Ki# zF43D{&p(CH2v+64+mg6|=uaP)`vYLKOajk2yg$-2egSNZYL+~+NE?w2Jo{Xj1-V%A0!<4k}s zs>z6)H!I0SYq8)keHVkHkV0l{F`xZoicbByF0^#;CXT`Ab{HO?IN-7!c-5CU3&Ab( zBpzF#DTf1u$^Y`>U3nQvjhfPlcE=>4y_dvdWq5a+^>wK4n9Dew^`bw2vn6b!B0gRB z!wsJNp6P{1H^wiO{aG(dl_RY{dAoWOxb!-dDj%q&LK&u6|y8<2y}MRF(8+dXe&JT(%#t)K#t z0sqYx;!!_0<;vCLO^q{_oOD(1lwyx-_8p1`Ev$pb&VK&XJ(+Y0kW6z=gZ|57KKQL! z2OQFA!84KvOzrVsOs&UXnc5w-u()u_qjcdASIaU$2)`B0j;!`6@5vAj>M7M}F)Q>Y znh814RQ}u@A>pD+efVJFLcBn}ICMZ>ZrVS{4axGcY4jw4OI{Ct{x5vxKP8^B%g4j% z!Gn!D1K|Q#{xziZ`AhEq3Q-d7Z(^_wsoeltH!C3f z-%`7ovLKs%#M`}6c)ETH^}I*fATGfu2=2=L_>>>X*ulS1n){c!^j{QhKX*&=MNo*T zV)eiXb}TQk%-({ek&r|omoy7BZ;dSdW}U4kx>QCR7>-hEJp#%)n`Yv@9)w5FH<_K^ z*W*F}7C8M^8R?UT1_z(CnW-1^lvYgL@;c4&54rxo-N^jy$ty8n7uSht zJKfpLXW!LMK+96*y;FnQNwqX|chY(DH5we|CI9)V5smuCRl|O!8JC~#sITw~sh>a< zz%amTAf(YrmEIC0G3b+qNAz8pE z|Fd9;`^oX*bHXu4>BIrUNOZoaP1-BM{fws(xS=SGeklYO5+OJfG8U1h6v}7>gwjzT zjpGAXlMu;ycymXg^JVHBu)PnP`~H2Fa?ynG4{m5d5_q@1jt)-z1q-1d4Rqe$rI#c) z@tNL4CPRZN?fP<&pM8?O3&CVZ!89s(9h9egZ<08ZeZKmPTODf)17= z<=E9FeBPo;?i&KgRrW^4tY}pvSL-^fJTZj=HHrz|3epDoobs1H9lt02GYw)jY&0i= z3weaG$c!#Y|DVAK&;IC}>S2>_M(>kuIT2kb(%P@7yzX^cWUL&}Ax1&`MMRgM@==sk zF7!IlL8y#xd{S<#4f9w@tH=`WG?yA(b4SOj@Q!)S^QAL!-h>N%`TKQb788A7IuAAQ zzE~*~V0dUu9drFq4kmrP$$9{kX0*1ZKniS~V{6ezSLI;WLl<^`_LmpHmU$z_O2INC z?(=U&^nc2W!R_>~8Gi(nbLjsg=lGvy{Go~4(;(M_pp71#_#=6`!u5pQXfgZ7`dhnD zU0Z=Afkkx8EyInAsj%gG{zC!=%htMQ)V1Z#>osd%TXFXab0PHsNzeg*4fHJ=*Xr^` zi~N5|6Ei&_6j0(|F{}nOM3ks*Benlc6rlYao!RcOavO`HP3`{-2*|Hfg7hhgfQE~I z9&5u|K5*|xlDSBoFKbO)g2HHQ;qn?=9k9D3t4RqvMHL0Ko9({&E*IJ{JEmJJxn9yp4l}e=lyNNf}46ukJO1T;WQKTPEqLh-PrQ#iWwZ}o- z+g_8Ds@*hNk473yulTre>}OE-;tUV#(8h152db*NmqkSpDV-NOZ2reek*egCy+oY& zlFJ1@+ZOH`$y?H)2>K^QSp%p^pkLYR%X=j%l;OKrRrh)ISS)im6fKK%KiX;W zW$g7Cj0u$ktFKkLH={HbDVR9xQXbhJXiT8*FD0KSf2AGC6ILKKVU~pb*7L0?VU37? z!U2#xaAEY(7i9~4Sj_6Q)Uvbca04VGfGl~j5!o)=U!!X?wexGNibrS$hlWH{aBB-5 ze5rvtinCq-7k~q}b%wGNhv{|`)bK8w4^2 z2M0;06(CLdL1#rs!hNVR1pi$bDk8eRCQEwt2sIdnj2abh*TSRbMO`!Dbmk=~JnG7o zuNx!yl9ZXiSQJA&{mE6J-7?>#`M74mJ#!?zsHIlP?zgg9Ac^Sj9)G53+>C#Wf}IWN zy+ZgVwv-;u`W~8g^k(HiYt3j?pk_3(KK&`k!E6*6{-4z-w#<{7-qJYZH3KU1R%|Ou# z^gWl$p0J;I#@*o7mh7W>GnELw(!v|yfm{Z~En*<#swiuRYK=@FHs^i=12P}F><+8Y zA5t$)H>hVtaogWE+wS$^FiCmz)tsS+IxWE1x}caVzZ%@VkDjyJ+6s{eWOpU-qn#F{;Hqa zw?Z7IHeLHq7y70U$qzy0q3w|mVSG&LbVSmg3FLblFGpy33lA0pGz=)qlJTcTz_h?< zGUTE_&I!T=NJ)T$Cjoio)e_2V$$dEcGKf}?92k!gLA5)@GBN`Lsxw%FKu23krNA^E=q)7C2{~fI!NzNdPeL!6k6*0XR^H2W zvg!q@a%vSB^mn2AoypbcVA4%gMKj5jeem9p|A64>ZBg z4Q$m8dBvv5!=|>I9RDn72pn-Ff%j~M#g6@~xc_@dbAY?Q^Wy;BESim-R_DzvV~wIL zpD_92rQk>C?DU0}^lz7EK7wO9+)`(F#4)V`)lG`U@5f*+7&$MWaxnPJz(0i_;RYyD z0-BB1lQAMJ#tSpPoo_&*m9#sLWF+y&zWnTt*L_qKDT^d+94y-Zh7)#G4d8b#Ss zk1LEN?vPPimf+A2)oL2$cR8Dm`v!7Uflf zp-=owc1>*KiLT$C>5WI~^J-?dm7&21MW!6(os+!IoQK+~4q`staAFh2$JBHb5ViGe zmLAT>4r~o|6ngZt3lBtYx8ABALD5#ILh?8?21xWJE|P?W=PzRp^`i13g9IXfuTGXX zoMtK(xNsy)1MR$_c@(HAIXw{(6c7{TF!R5E(EAse!X<`}tmD<}W<_13X69QYXkYyz%1JJU6)Qm7WC$E)qLVm%mr?ao~NLyW%(yC zLvsWU*$L5Gv-)})&fYNCxkU$>0^${CYDfixKgOiaK#oVF4 zo(eY=)0h8rdHwv{@YHcFAy2uz{i?-ntizHeU{zf~Te0v!*>75PiHmt@$}00H)>swd zp`zlEF+BAGE(Gx%KyYT1|4F}DU(Ug3iT8bSQ`~MhTdoAvG*o7z&f2<^(5-p1c~dq9 z>g-`fBtJnB0E>M)FiWp7*6PidEmQMKZ&tz^yf{pftbQUCk&HmGnx>vBgg#=wWd1^TTVfX5S#T_~+mq#U_*oL!HXORLKKEW=B zeglJWIzmO(P#08VK3%1uLLvQGr@PfvBh$4m5!tu$7yDAHz}V~}u9r`fh-z5!8 z;o8y6{ta2K`0yFr9g0V*Xv~56SCPj7;ZlujLv*S4{B_9JCnNBNfrDvLONmMXF!uUu zZ(qY-di(xFW&Mk80c}`BXP=Vo>HsR^!g5ze+FN&3z;xbZ+xN;L0DXT(Q-XUHAl>hm zlUfU}0^?HrAyt3n(+42J6;g-`$F&vq=`+^zetD-%+8Qk=7|+XSQ*L_#&qy@p`Dq23 zc@#AJp=i}CQ4S5nAxviN@$?3#HXw-`i7RXOHh5Gl<~eeq`cT;j=0k2)tzB?mO<@^x zZ;p6khLt4OE+H4s92l$74qWAFHABitfqQ%IDyaqB8yZp#1S)?Ky}|IYpZeZP!Y;yo^xE(dV5FUJ_Q$L z_aZ3Ijo7V$zR>41A~?C&RQL)Q1pZE^3^Y5{(?19gvwEJ|vmtlWS5wz$ z;GdLk`9L;$?Z<)I&fU_Ie9x6bBF}f($sVrpB-1 z$2Bhz&^fsEOx_R|jKF>(L>L4_(9T*yDazp9sJqHpCDhs)si{xDKbN%66Br;+f_efU zFpd5?Ksj%CCyp%dhizeTapM4d?Rq2RVh2*867@-caAkz9JP&i@xDyD&-waEanxZLJ( z=7wg2@>X2w4{_%o*qvy(O$--OZ#9?M9bm!59QHND+;tvrD>MVQOhFzQj3|D=v=Z&U z+G?Ns;YfD$q@wH>= z;BGqPGXQS~PYe!VK?A+#ig*?f6|=P-uBI$e|0;do{ot{f4{bWEW*Xu;f}BOs!U{XI zV^&DkBMDgqFf;>{OP^=!&*@lI z>Ngh)F9nTU|1fm>VD&8x25xDj4ZZzye;3eF*#CG(5H&g8({Bv)YG<+AKd0WnHGA}1 zYg~-)2l`MjDz85+477>*BOMl~`f3;I#nRD z`_3+cIz}hNDl3#?PX5^$Quvk3z6q*;NCwu|o@*+E+J5RicCXOY$N%gdlkYSQBMC{P6YL56viE$R8u?PE^p<5w;? zeLB9lfT)sgk4dr5E}c(@gVMdcQ6~gTi&f`^)!U$n{M#lB|*0)w1%G5Y+2<0Bh0D zE10uxDjbM?uCW4neT|YTs}A6Dy=$_PhM%9eBgKj5dusdqKn?p}0BN}F7(0p>zQ*5H ziRsu!Mv0)NWJ%Z=d4qGM?>Y<5Wu>dw%|ostR?K51Vh%^@G(pQNcXr~qDdfwgN`*q5 zynPCxOQ-K%xN!2eL|D0qMUp`Ifb*2i8$9KgW>Fa%$V|vQ zEEyv6R7$AG5Jjn|WS&ASWgbJBXN3$Q^ZZ=*QtjP7dmo+iJJ0KR{yAqKyVrSXt^59d zuj_MtKJP13sKrQxzHY^j5HC72#@<+Vfmg%F-=k>H7@SY!?eul1Ea)aroM`~3>^o%T z)l$KMx-x%4<;{7+&7++wZLrvf9`*;6Ov5hTYslOOv69$;Kkg#n`Uhas)~&3{ZaAtg zLL|2_HYX=15Q%qP3|A2$b=@6&;hY4VTLaHx?P~Jt$r0O}D&3m5%A&+!B%b_Wm(L{d=_sYc%3)ocg@%W5c*LW{j5Z`fq|Oh(>zd@f(hSH|F{~ zPTg=UMZzd@SDghOuBz+$UFGy|I?+dFhcf*2`<$(htD4mv7mqx#IiEgWXlMPQYfXUd zCzJO+csI;;#o+R!?qB5s7VmYaMiO4=K=dwwt?1hqq(vHJ159BBnNSCkKAC@El9HIn z>G4I$kgQG5QDx`sNsfS{G!4i;c-os>1X9u3#Az5mA4P15`NJI7V=(RnnyTUs^{li6 z**-0{GP&q#9%oMr$7-&qfLeh&=kz2zFMEct0g2&2hGfT8}NPkBO1# zI|_u%99v{fv_j%>xD_<<6wP$+030$p>F*P+kXBKkzIou- z^EKJ$4j^>ITZnJ!SQFCW5B%)#f6q9zp~KLR3~(J3VgM3<9a2X*=-p350rG1Z4fbE| z3T>TbvKNd(W&y}0*KzCkyMlW3xkdKoE+!K6`w@&UKE$V7J&!1S*NR@z+`b@xN_R_j z_Uc$tgfYAEk1_k-zkgsCi~>(Ez;Ko~kbYqc3dU*!k~<5D`_0rE!&(s#^!6a=el`5;h=nh_tXr}!l{*ja4e{DwJKypD} zn;|>Ap|403ivglogikA%UB{Ce|M{g*#6UPBc4TXu{;%!JkDt6b_1D1CR!^;u?Wyhl=&Apkz)};>5C5W;;*X$D zcWZ0p@!43rL$NBjp|_2Gq8vo$&{j^B_wRgF4K=_+_%XW4J>>PCD6RzHd4>iJp1g!;%h+u%de;wzsT z-OUuqzp4wJveyogUe_VO#C;e_`X^T#vX}#&Mi&yE2To@PWOGGU%-Oy_XzGg620OUi z{(ocAj|WB@7K+D+LL0d*beLyplE1Sn>@T8z z;=zx=M0W%3#0}5-drQXt=U{-(lgcR_3$7t#!eZDN*El?|}G!cj$R@nEg zg*roK{O2Y9JGy>JA%IUAejqWl+S6d@SBJvKQorujUu}`9i*viu>Lr79ImRO{$IMZC zW`z)@SW>iRc?|mf9;FU{xw4r~KyFPZIDjV)p?qe9Y~);>A47xZB%qSb`*=fuzliHS zBD3@_)p)oK5VyN+JDZFIpibjb8N3Xfe=W;h7iYDZ|p7 z{Suy8S=!rEBPU+8l((1br#p&x2F}h%bjX^c3;r)k0Xc%ml!(^#`lP(KneCNvWkLk1 zYQCr4G+gB_AquwHz}}3!{(G88PCTqN`0v6dTWaK-BrZRuba8X2 zGHj|lxngm%V{vuF)b}Uo?EiJ3M4it$ZcORbZ1$wuDKI>yr80pl(5_)ih3UVW(#=jc zO9AVWYTqFv=HdES2J>9)Ow&_43Crc@VH*t=J-4yhag6#f@6D9;sFQbv6Oz5ps7q7i z$NP!#TAN;IKN{Td_^V07%7JV4&huSHOWnKLvd4(%)hTwj5)kRtSsR}*)w`E+*Qxq$ zlXuC{Md2jt7pt0muiw@6>o&f7C7z_JabX<;d>PgD+g^Vw~9dN(cAR zZ<*{y81Lf}`#mxV6??W+%5;%{5EU~0Y$gI?3QQ8dDHNz1!SC9Rd7LBR`#K9kg*2LC zyRb8mCR*#X7Zx`&y{0yN0h&OHWZXtYzD8RoEr0sDGWb-j?UBP(menKUhQSW4cYettrJsA6R;Rc!)|t2$s;O}qpgN%WLqMCq_DZ;%X8 z91=6GS!(V+uMrY5n3Z)9zINUy!72xf62{j{v7t<7le z#_QrCVPJd!vx7Eey9CDo?R!QvIuaaxeVbRtKHOkLxAsaxbjwyg-{roV*=)H|e5%~g zTy#E!zT3~payo^kpbX>3TU;`7=SH48^L0udtLK^7n-gTwtrg!lf8zlx8KZt-<1hfc zhhps8$YO9zv5o9!l8<}bmL8tIlaL#Y-3eWFyEs;K6` zei8%gYuYOk*1-(aZavxjG#CLQ)FFsZd(l7#WVF98^Mzm@u<;)ZgMmflm2RF0vII?~ z&}Gups&(rozQj!vhsz_Ls%8=HBEGZ#$(={rQp|S%xdwVWjh-jR1q@2 ztRLTg3YV%EFHp#lq5spK8pHNNz#78uNaVL`Ie0DCwyU!QQ@J4Dezu|K>#)wwpK!-*0i!+78R|hnt%n;HOdw!&6#|so3$W6eJLTJ68GT=Ri$$z? z4Q4;eb0E={2mylQ^=n|>zA}_QDxPfLS3C?h_4L7mOYmKxX9t51jnQ;%fQfF>?c->I zKlZ{-;3J^LiyK{*uvt2MENzvrOCtKht?-$(5&H82GTXI5>YD`VULhRgi*^W5nO2q& zd9vA^CWYD7_7^XWJ^W;Cp?CRw>A@v@y2?A744aCo5I3UwW-2$NIucgEb%! zUd(E-NT4Z^CTJ=4baz()jBR!gIPrbzJ+fe^77O=UEKKD;D#r+xo9*}ONzoQU-0!iH zo-1W7H*km@rBTjcnrpu$S|2Ma3MP}}*JCeU+DrhXz@$NJgr)1Di0ysfc5}EEvlf8# zXHzbVSagvsp~pp;w;txtT(@cZ<hM{qWR}7uqWx+Q-EHIyHT&ZXh59L%Yr6x4l^o4cTHQ~1`|dOKIlQ ziL}kstvE4X+A|U@KfbspsT?9A&)fd3nxCc`rUI>TAZZfmp8ayUg3&x$YIC_!lLr4H z1zDLOPaN8>H1`aE*Mxz3&?Hv}20>Fe$*5*q;x|5+W!(Y5J*J}dtocK?XHFd}?IvMI zAybeq2Hqil(Juj7iUCqI0uC9PRq2SW#J7MG%NnSe)%GrpEKbQnn{cf#Q_hE@I{rVXqcaJnP4FneRzl51q|zJ1APzBeVTO%!j!l znc)9f;NlTg`JI^<9#61?WO-{((e z8RN{3@l97qWspj~{qYhMvkHQJ(&_$QWfx<4Y>4lP;)hPxzCdVq(WG?TA4nJlO@lt) zbi|15#iyyMxyL){q6G*xQE*J>b^vMOl{eIQNA2ItN4_3UEwmwG9zTDmU6P#9`Zggk zMJXM)R-hvYi8=0e*@K1gDmW|d1A?!@tX}3B^MRfHB&68$I{hn2ej^0Irq}kM&`=f51mRusSWHcSE(Kw+%J zC(l0ZEn}@=yE%Z6C<*ZxP0V5*9+UL@qWrOvr(LH@Yqab6NMg+TgS?g47zy`BVlVpI zEsnit9Ztz=$n4^m@xU7(EjvI?&zBw?>cTPq4Im4hUO_rE#24R#`PrBgzNP3BFpV5c zU>BkykXrKP0wUX`d-P)|25&lnX>s)2RPUQt36)d}MeNKpxlIKCuBi|6noE=?NHsKP z^*01I7G#=W_#x zZosT`@);I)7Xc&AEZ%b=;|<`&fObHcn|rzT{UbTV+F>m znDJ0?H;$As*m&gd9xriDUtMeR{5tC$tg1U|m%B~X1LYzP?vDP^dE9j*tWFEa54ab) zPqnGeR_ibREO{oidvC1DZeQ~q#tkj-|Ay-V{V5J*r5O{q}*I4zG)ko(&vinJT$ ze(9a`wV1nN_ANqgg0H7AB*S@+``7OB;b@b-Py$i@I@ob&nV0Z3_jJ{5{EI5jVODCZ zE^p*7LVzl+6TSNKAc^WXGfXMHP9=*Y1=X3erG8@|Q`K`t=@}z%)?K+_x;~hM8Y!t}y^$-%cSO_Gs$(M-jlSvLebw?Z5kChB<)&B^4!?qs4jm0H4 z?3w0gKlsfa63cQy~xw%eFi+=?+8ZdecVH6qYG46btr1;Or5@MZHOBsX2<0iEtT z(e}$^x`G#RX&v?>D>oJH0~NK~>1%g~*{I9{lWDDtCJV_m)6zM(3Br&oL!!}eZID4z z@5xmBr1~KmVdpQ+0A85d#lN#ZUmiO_l3w32Z7UO)1t4e5*YBn}rLXx{&a7w7}af|P_v`TQE3TeP0q6|eGotpYUwn{dXM4SAb|Dez`y z#l%^Um)zl^e46>qTyxZlvIu+!8IzW#63FlkCoy;%;btrblM<6fJHEKHzn%HsB zDViNFU+^rxEqO!c!BOPV+l%+ymh=H9Z$sP2O16Fq|GJwMYjAF(>g*|xll&Y^qOBuW zJdJq>P%A{OH2pipXGzdVEw`&SEmW`~B_)GUEI^1u zC0^2VLel`w$r#JtqSy06_^OoWoe+sZ+8?nipia3-78<7akiR!(&ZEvug5e2|xyZoIY5Cmg%N!ET7V0G>X({6hvSPOMBxm1W>pC<~=!+O`GG zBu9gub?G+lhz~wh5W$|l=v-U7qoDW+Yp}6d^wEB8J=arEZ0b#;{P3*MEG5zC5(Ii! zFIg;?SadzzMWoBKmzP3*KWY#C&K?d%H*V!A!@1rA^ ziPrZ&HO0u7`E9JPUQkOg=m}Ie?L!K@n_68dFJ1^jawELw+8BsIxeir9a3BZg$eck! zJc6L9M$eZ(Rc!{g?a);Q0X+){o$Q}o8BdFaQlqUK*yRp}a1z@{Tyr#lKGqGo!Fq(v z+*nP7Erq3fXm0aAHg#F{(^vN4ocTJd2wMWa7a9Lt$nATNCe6oV(Pq1i1o*-cq0!fF zh^P=g>RyUs*Do#37IAy%@=mDJ9y@Ij&~Rth$hf0tr$B4u#_^oc6J6#>%ljms(C-Lg z9-l3g%z#Cv(;`7;AIQ<)_LfWBBb4l;KRFu)I zK0R#>PCC_~X`;^iwuNCg0z`T1-z?fPk(z79!kSmzfqJ0WO&oCuwVNSDSA?=!1GA5r zxd0YT`LijvB&p@evY;TJcX4%ZneXn33#WJVFAdKugVM`33#QDKf)smTP92_lv-r@~ z5Wrr;-~#g(r6;QdG98A@WcppMdE>)jaAoH)I-=iz8}pSLi2SznEHMe^0p6w5%340*HN#Xc}`JdN3q>pWtw!M{};Uu9MUg7XuRe~hVF$cq7QZxLsc1(zeqU?sufg9@ARCSPAtr^Cm>GZH%T|$(U6dd zhMKp*?AaZ5n^@IR&x*LI@=PU`bE(Fm?bTv0-$7a4}V_=qb`YelmPXP z16TDtV6V7}98{}4H{@>D{Mc8Ay_8P8i}v}!0{Cv-_~o*CpAHsnlPR!hcQZX0thFli zOg}T%Zq?Y?mQtK^ro(X*Wv@%X)!QJw?ah8{FQ$pyMI1l0*qf%G-41~CoewO6afmr? zfl8sEtL(`<-0=SN$ytp9J3Nlkd{d(2}y*S(bQy(c7HIm4s!r-v#+gyOwco+CH7%(Vvvv=!{k zO^`-bUR{_Bz8O6hOdO_!{DsHKeLJ!^d~F802p$@?kI|ek$2g>ENR3QhP(148Px*p! z5xK*a?ucyH0ZSnw@6_fUzEb)sxyOdfa6HS(C!P>0pfvp#X(y12#ojPkXuED0xy+eA z3t*~c^(~0v&Lk?F&^_UK5x^Lxc~6=h+j8GnG;tvJMj_$7x$-CaHD#A*3G9s);LRgF(Liepch*q(FPPM<)9>6dT+ zUr)04>?C#f#cDS;3|psq5KJV`Uf2_d*HiHZbd~t-D~3gLU&Mt~!)|nmMY;?gvD;QM zWEH?1=;mL>F$Avb*L9_Kni8ZVn49YBGkW>tGJRc$4R7*OQ^*;f?0Blg;6E9aetXm` z|CA}ge&x~G>I`+cfRr1{vm#|O1#>hSC#*h1KbfvZZh}y1#W_2X7fUtfvo`SGn*Z_&K5cCQYHEc z_9i4B!NFrS9gLCkF83408&L@X7P7$!YPJPFxy%>3%oukwf(vLZ#n) z#SdUgbraBLutBmLVb{{&Qb|r*w@NEtSbS>P@~qciI^bLsUQ9t;m%EJ9cY=bnJo{eE zjfZ{ju2E;{bsuUM;7i-hGql{upRDJH#cBSNzYTt#utA#7i0-CX2I5_SpbkZ1SN#0c{zWGlNImfmB zT{m=$zP~O`%rU)T_%TEOoMCM(p5aNNxTS{7t%YCkda7$8&J^?P>0jjROR`AG_=Yui;KCb+6|xU77Oq`?Ti=MPy4>%iH% z$Kj-X=(Fkp$5G>yFFx^AHSV#4_Zce}*P^EIdry7YhR29Yo6LaxMd#hui3?DBw;ojs zh5!Ch?c&9ht~Yz*+V{x@3PqNrLw0vszy9#|VtK!)?x9{x|6XR;lAr&tGQ%?*MVX5~gsRpfTg^LJ-~La_anQRQ<2h;|ONSR%RZW4Cy@pjx z{{8{Q4l9LO@Fa0nJzScmHWQ`N-|Wkj3fb_aTi2yqfA<2D7szBA|6sWGTdiLC*y!zr zXz_+$&pSuuKh8U7?lbgHZ+q73pNH|#S6~8vVG?p0RksGmT#as=$#=ai;W&YZuKGo@ z9sL&fj;*Cq#;1YU_Hc7&|I+^N2i(72M?ZctuLKdaOs_-Z_?I=29tLp=+Tllm1WoYj zk5?{-ETsKj;SO;{&A7D2dCNjA-Idu7;`GShGkoc`j=Zp4O5@Z@8K@w0gK>PAa&iw> zcX`FT*r#K0H5UKJFKRO98_nj3tyH80*l-&%7nF=ie~5)uiBfB(b( zbbKZBlEOvGn*r->L*H=e%+WSiu(R?kejFkH62AL`Hny-jH1CR!7q@N86@a7Im&k+{ zCu^=xf(Bah)nkPpR*tv-j4~#lLd-F|jpmEwxyQ~1+jdK~Bey*Z8`sKqzoZxGNg`-h zl2cNYCv4te_WkiH$mI7K~I7mn^6c*0>!ywwCs>`1c@B0u?4}N>P>^~a8 z-%>8x037%A@veS(`x}Tb`qkQm0oLwjU7fcQGA<(#a$ksgb|N@%VMQ|~IXx#=w67>! z444Wk5Pqx`cuQK13AY{)c8F5$Xl#pl$o>8AMVGu6!$?nxehkSN+lOrMxag{XoDCTs z*hX8$$ob&0ke`qjunSS0xs=l**}ng(O^*4bwPs&u@`RXETpqt4t-X1|Zkp7BH{F0HT7s9hioRH-|MhW?CA7Of zbSLhQR>bT}#9z!X+o;>-H-bQ{ck?&u5I}r;ZAw8GHWu!8eBa7FDWU#-^1?d8iCsp+ zotBbIXFO&;N>sPK&;OL{r=j(BW+8C<$u22wXz>}SrT9L4JVC^=qxa;i#zZ~a2g_y~ zYiTM|y}I{ZCX0_Cdh+$?l(_djIG3mhgr6Yf68EKO`^E6n8EP}9^)sSmbO}; zc)B;+^akqj1ZMSdm%KL*jW2$$eGt~B-4H!iOUnECQckic9h=#mx9xF3#Q;xsq=!#h z{vg@n#!)R@!3GZ)>1!t74XC8)KMW-}*vCj>&moi0k?VdosO1&!1Z7=G#UkizdATuY zsFmrQLdpf-2jQ3xmfbJ|x*0Myl$oU`?*xcdJ#^RRz(czT8*v+zaT`Eks|TFHM8u6- zB!T|y<7#cG`ph3SHIW$ASa8R$!zUSwXlsFcXno8^+duxqeV<(8&t6nSBwoq&K&#d8rU~~HUJ-qBb-w0!Tf>86v5-LLm_;L|3Ph+A+gKW^hd|6j#x5FhL$}Yn z93g2Q>$%WTiA;wm2O`ck4#2!fu#)vk92{S2MMs+Oo4R2?l*sH|(FB4KNH6j@g7u(t z@&nLyUelT-$M4Ol{}j;3MNXO$hHZ=(!Wv~p&2Qkv&Cm3_wdVNM;{BJ;U#pJ%SDH}ZtuGj3Z_fK*4nKQ5*ahi4JO2gT5lc3eGeC8qh> zYDW=!OIT~nSfsY`{S_C z#0+>HO|2T6g2-INzG&te#SLpQwjKQ-a8w|?a5IpMC=A%=S=ksh(%HKJ)nSB7mHYCp zJ8QhrhiEt#v2)UT#INysb7NHn_Q^YG`CEm-G#r-2C6xj=h*5kb&an=%+_nnbriEYN zyUYHlO)TU*c0P93m#jv~ESoz`qd=6}Pi{_zuJOAQ4l?v!#6HkCb@AQx4oAllqe7ku zcdz!en+F=b?PNaFKKaoJ{L?uyuZF4j88WMaVjNKwcK1|-U{wXDKU9UlOR?<&Pq#fe zQ~}niPj^Pa*!R$w{RCbd47Pj7(6?f&(^`4*Wfb@LsyeU9f-e(J%aj<&b@JE_vr<38 z44?8nDbs^wp#LAF$jn1rXyPdr%(}+a)S7&^Wnp=!S};AoA0Y}}_}JHp9uP|Gx2**VZMf^*j1C$iSz?oBt47|7A1GjXqrG4>YCZg8k=# zmZ!j$Xn21Yujc*R{K@HGOU^Y8>T2>E7T2sfS83kCF~4MoO9dZdR=vn;5+m~G0N|(& zWjtaW&;dWH0jE*;m)2LY^>uhh8bA%zbr8)jI085n7@cBec*N>b1fQLz(GdQP#W9yI zTXT5kO|n*s*1pvir|U_Qp)U^@A0`!c{iOje*ezP&xlzbbn)15+M}+R59=Cnzc1Qy( z_U{_t->SeW!J>pOu4TtgKlJHP?xt0lYSY9IeS$0yA`OHL)@Sokcqn8%k!s zSlhz1oTf*sEfb$>FT@fnI`N5ab~Y2A@)#`VjBE@meAbh;s2n zeCd-PV9L+QOZzqs!r)cWI&rNqi;;xPE!gxNgj?sR~?y$%^tSB{>7 z!Irk;hck-W$X*fim4(Tdh1S`d3wb3mFg57wRnv1EZ+%5~#4Rl;8i!}f1M!8p!OK>M z+)kl@@YE4qqAX#`RVuERwtj|A^H5W zn-TpD_BPML3d^O^0$35kMS%L;>37<$)R%aV1z^*T&H{C)0wEa=<{p*jqB&>OwQnbj zd-=^>xgk-IEw5Vx&t9;tu#q9`H68|cUanV=aW|d=QJG}4TGV2nH+Dm1Zp_7Owk}tF z2s|vTdEmue>2<3lGiIlk^*w0`G4EW;i{uSoz&x3oTU6!t5NMmvAVswB@HE>P?B&!s z(*V;GyFiHo>Pc8T*FnJ~yx(PW(R(v*d40;;p70=>_nO1Rp{HkR=0O2I9Wwrr4og~|hoUfCjKd?qnPp`0Jj+kja!w^M1;KDepTJvIjZ!37Ia}41K zc8w0275mZ`#P9mZ{*t1M|12zZw90$40^_%oX+pekDpv8`K}v}4 z4cVbvbB%*nEzRJKsTLnb<{ER5Ga#1mVrPgR?>4=Qbq4Zfj>S1Ph|QqVOLLW>G02E< z_5ufsjyu4VG)INpzL_$Qlc9$jwq|9E%Ze?8h>U-DsES-%m+tUSjgz1dSBSmIQ?FPX)0_j zDXCAG1!`v5aj54mM|V3vZwu$fJfHMHhJ(1PFoJC}+bCVop*iK-2EKG_1Uc#m9{Yna;m7hP=VafOlvXt`pr^>@pR_iu_n z-)nNxt@qxHRp+kn|lW)JN*+eyO`y?=c(aWEgyg&bWyDE_jyz@_sw7=bIVnhR) zO}M3aT`)WcJOlIt^-rp$vfBz3;Yf%L zfY+Rvr7>!r=V8Lh#1G@A==wjnNX7}|QWU~)o=%DvK#uJG6QVR?GI3985#w#3I4g0TV#>l)g*fA4_;n4KJ#cO(7z1>@kN^O~9!i~83G z<0RLn<#>1cwO8=N&^fv1@fTpy2}SAQ`Cf9~agjWgI_8|7OdZUfEQH3O52!3!yF5>S zu}aW?LcGdL=zDcr70J^P#8C~ZgH+f zEjBS!{6&T3)0sQVhxbeoR?l(Lk@!RMqoPX^ z(g^xioIsKxH|E^|_O{;gIO?_t(HE2(-IB*%Pg;L*Ybw?eTRDQWU9{WweIO-MrtHNW zaB2<2QIr=&1!UK12lo?p;mY{5WL^>yau{s4@Xeg#Pv%xhjUi3S)m0x@xpS1jn3_Mu zmo3Htf{%82$#=n&?BQ-vnoQ!>f^6r%fSTA*iqR)Mk^ zcbaQb1Q(Q60ugf%Dw1EvDwY9bVYetnsrrf;8b3D7_CJA z+|!Re9%lr^uN+;Cy_|J$g+{s@%wP-t)P9rvXzE3%_VZ+;&ZbrJVBFxfrXWywIz3a* z5byEG0lCU;M8ThCSg!B7$)U8v72&97NWI!?xD&Hi?SQl1LzBai1Y_YoHaoaR*bURc zF0)TkC5Th1OTHh@Y#Nhal>o{p>Bv!qcxS+tRjS`gv`qi&zxLsU(I4(I5@sj87-C@Y z!M587vFpZ`{`}?u`JKbR?Wp7zncp8|{%)8!eJwbcio;_|evqY)C%d#@Gqa|IG@2t1GZi)SZk8{};#Bkl6>Jv59F zG1{*^qJ0y`9B|c|6A`)dkrK&QWn2;vU+YzLTKX={-f@`<)}kbJSRh?AYbja0JmDM1 zU~1;~p194Qzr5FTQQyCDA6c0ge6bINI4mO%K7sG>+i3R5gaKL_-&=75>5tw`%<2{! zy-SPlqm9x@I=*?#c`QOafb}oE^}Hhcd8fq2!|*}PfS>%Z5Nz@J%a<7}4PSG^UA(w} zbfTB+XPuZO;hTIK!cd~SI_zw6*7mpBq@#qWz(NZ`RFkgp0?Q^nLmx3N6}>=`vcv~k zUkuSxi1N`iFXi6PBn~x@zwOVTls>;x@Y5&^GkPgd&CVIRGsqUX5)12T z1RvxR>MDmY3RUC}Wd`s^%K@tFB>oxN0N(w@{PF$QrAM<{RFz23H%TuYrsCLTLmemx zTOv@2G`Tn4u6Fb6JSdWO2wM2qQU|AJtnI~qb;pnhP6x1?CS8nz4!G!*J<$(SJACfz zGJ4IJP&OIqX^#W+$YneYaglMWOmkKnp5E0QA>QCkKX+I99jCgS58WkdIbR%}sOgH= z!i&p|6eue8`@ekR>R|+@cl1a8My!!`-XX{Uo-+}-Mea^oz zaY1gkGjdyLSk@&9sj1y)U5D{YT@F!=da|^dn z4n9+sDBE)ix>7Xf>_S&d-9(3B%wD-`yGh6~HT;()0eYYAP*n`eu+y|;D81BWZ64>v z-JQwg(ufk!rx2t)In4YejTbbej`N_l1MIj-&-tUq0y>|_v=hk|A_mz>`cs$pBwt9? zvlMq4HG+OfhZA2lGM&)mgbzrRtI-e>rW1%gLfECo56Y?C4QHUf>y&tj!3STD5MpWi z6H1^!cIkS70o=u1+U}E}dJ(E;IM#)LZLjCz8w@}MA?P;M_MN2&+aNr4?_%-L2Zbup+ zP@uhf?75`v=77YPB4d^vgGPd86*C-vNw9zu3TsItree|Zv{}2rzOueGma^XTKYwm_ z;_9c3^ZOHn}s6VnT!vekh6klh%{J#40pls6a@RAO$KmGj!&&(PX9NtCf)efv z*^lW+o}+u=!o1GX+zNEpI3&GAncMj`rw9gQ8T(0apBkv$$4Tm*tuB|=BXFQhoq?R! zuDn-!QSUSjT@4%K#Dtngm^jGL>yJc=(doA_D<|1`@l^+}&g{5t&w7KZWB@S@%{V@e z`lZhpyDM$^IQIVLrV3r}lLzj}?26`$PpM6?FVfYbZ6CMuQ(iV^)F`|+-&JGdme8r7}3(~lyqN`PM&4LhUt z9cS+>V>~}3pZUm>WB@zORsEGuRC(cFY=P8`*>tZ$#S;irbRwg#HOM^(1EV6BNh9kN zuBr<6+-)3Wd?eIaHTya<^RjJZEJyO3E9p~&Pyfrr53vB0jB>AEdF>V`TFm=&cco(B zua12S6agH#arfx^`xiHxLJvmCfBmUOOveY=lOIJw*ioOOUf=xKw0H7|bKH1KZno0% z`DkoTkZ>egGjnAw`aMd5+wQkomIf|NDX~UwzQrxDzmo>?9hmGqA!Sm$sh>k?vc zF1C07x)ks#%SLara#ND~=$_dSkCf{%M@%$c5ug@unu1N=`cgtknox7lnF}L^Op&0h zwWdaL*3qzit}ZvD{sU}?u>_HvDP9veJSjLtl0p2Tk}DRxPBN`gurj$bpYI|$UNZq| z^qs`<&k^TR-V^2SB$2p%Bgs1Avx2=o*E)@Rzc{;v19_Q@KQVQ#EJsfi@@@OS?#i}I zynde#mkRHW+eow0p`&WY&#V`>_#a^qT-O7Y^11QLv#E*%LSW^1Rhrg4J8+fVV->bJ zUJ_!E`IJabpakhPTWulBFUuX=zEk+V{S>Gj6!Gu5Lv|3NEKNs$eK)_+?N1t2Xh>xl zWR6i9qd5{9yNlQ)hEb6u^Ve_r8y##)OzX48r3$Us%J+bYMji4!)LuIcJ)G6P9TgT3 zdtn3%T8Y{hr&qYH`REq8ate8GJkBIRvm5RBY^*uVJP@G>X7rjfoLO~9 z(gZxxl!Da|yAUexHu6gmaFvo_IhXnkHW+odf#7GtyVLbi`IFemI^hVX z8(|hc#pnI@gCo9l;-q%U`S=3-F}>A4g(8e1S9(@Rk87cfTSxm0unc?i8vs_ ztGM{J$F_pi^oTL+M%w=X@mxxjT&GOyd7vDNKA0_dYSIKhQ zuthi?i*sA6C_L9yzWGJ~{WY5(`#5&Gwy!Kwo>MVYI633}7y2Cph%o>Zsv0tGS;6l7 z*?b7`MQ5D|rhf+ZUd@UAiuYR&hL#k`J_1w|*DGw&nudS=Aoi|*diN9Rm*({(EeT!k zhc$__m+4D#Qp-fYHU-~s@X&TROe{2%zwd{WdkZ}x?FD|QN-XjXvJUI<{5?djNRy=U z?Pu8GH!%*7!Uk1I%+;UrQ}(TTEkE}lLdo^EZ<&}24HPJ@q6?R)eMbqq`Vo_M5!|b< zD@Pc8O!&1k%j`NzyNL0YZZBV=N(|l@1x) z#czJ|Xf;fKdT9J^&u)Ha;_Y1*FFiJ2qs9eNjZK3~f_R<-S*J`{QiVyEXRh)8?_X=Vp;nQxX2? zUp%nMG70&k+;dlQjy?-zr99HNCa5^G9tq3X{CVP%_0aHpPWO?` zU)EH(l9&eDS zK2i$(AqM1{yYYM_x83%oen)^BqpBg!KLU1vOX)v2nj!an>V5pv>;mm~Vk5CP^&c@E zdPIt=`pJ}tW$(LRg9LX8noo%4tgu>tW3REg^_JOr#i50#;-Y5UZtCw)h3^d;jWUJ@ zbAwoMlmEsBX5ntthVaUw${e-!!Rh#W|IsbZ5b14P7@@FjW@#%)t8xi8!nX>5CpAKp zyz=`SgISD0B=czi&i@Fj{=H=0cL8r)#|gh-Jb1cd@!_L?El)@grh#@z)I2U@{m+~2 zugTTlbcg<(?=~sm3hMgz-`q^xnoLh^XYb!s*{^VF0z?R^m%#0QR-+)Gjr8VAK+ zl~NBIi2T7~@@OPkLcSddtHY)9+8#r)=yH@coSuHp7e6js)c0w-zJLEPCkB|UIXl*d>+bT8qGozAUGjl~=O3q39EVmUN$s2a zEo7*mFNpZ1_E?gnyG?=0lvLN&j%n{eMiqFw*W<-|Ds-zLyz$NDKSuYc;Hr|^pQrl1 zp3rxNn_XAF+O3LV!WfU`h8o?Vx({c7)}P;4_{8>MKU>RFqxT!z-}3dX^_i8ZNZqW= zTeG{=y&)+of9srb5WYg)tyxd6r0LE-tfT#_Con*iUh!E&h|&S+3Y$D?c{9%(AVE}A z>M_%tG>$D-VSl|##QSag8SuaM+tSo00{}df`kcQ?;IUMhjW z7zZl{IkAX8wV??zvt!n= zT90BI(=8LHuT_)E!qmyy120G~omckYoE28s5gO`o zOKECzyx!Q*$ecHcGjknu&csqT4;2^iEHg1hv1p`|DWQIcPJqnxL~Ee#4lF3B^5J~T z{CwW+gT^XM#VPL>oT5uWDp>6N=-LUa2B17MuUhQ9PkikfHjUkQ!{EDEvw0xt8Tqil+Lm?@O$f`dvS*_Y`@7xMTe2N9qIldnW9li9YHW zxxQYK(pTu6pac%`{Rl=XW@wcV9`&CE-}mjL!tygAB=#7Qv?YbU zu&G#@N}lYd<4*2IdD_n&J4PJI4#<2bV;Fh(rre*uz>^7HB%>546h2nL0-7JM+eF?%I{xy0E$Gt$QCRW6>b* zMd}C8-S;UG>6e>yR>v?2MTZFFs`hvRlIp_NACr z-{k^dMh)0qEdo#I7dRbBio1MznttDBl*q`Ib66`6ODcQMar+h2C3CYSbB+$k$TFhg zF6W=Wd_av)B`ztPvpXppS3uu6I_}c7bKpBez6t~=#8ZMayx@dA zC}}BOhBysiO`v!S=&)Ik;3tAGs{rVFBG3w(efv}mkf`Bj)@`X~FkCtcFaRUWnQ^I4 zAirjg^gfa!&H~=Dvr@>0UuFl(h%;ZozHp(2P9xgNuRua6n1Cig2Hw&G$=g;$nwA<|_dBm~>8c+C(_TZq;UWZ7G(+1t|H(*oQ}$w%%C`Fyw57dQtC zuFVO+Vp|y2)&(*cSV%7Q4PT=PV$sV2OXkO* zz;_a%1g|$fzP!N9SCwn^u?C6hJJ<;-SdrWW^r;v}S1lN;%+sAe`Vo@X!Im;(Wc|(l z*~Yg)=g5U%xnvd?25R3ET}UFm*t`aN7?af45>K413iVf(b{uKQX(Qd+0E?fDSLVkr z3>Cn@%F7Y9c73GT_&}1vbKT26@-msLcLtof!s>WUmH!WIUmg#2`?ifnSz0WiqJ&T+ zNtk4-ND?Ypq9{`&%M7ybMcGx7ouZO#$(DVRrL4(rFpNUh#=g&ce$`#>=lA@c?%(si z@1K2cb(^`a>s*fWIF8e12CC4IkO3PKqoiDg_dxDuyEyLrde;?fgDGQI?cXgB4xggg zbPU+~Mbs~CW9BRDZ6^G1J3>BH*cW}DN1?xKdaYylo3q_8%{yu%6e8w{WXZ+8MrT+Ddjt`>KpZL5DxMbIS&43$Od<4bm(q&yDeG>7diqsiD)8N zHbjeI?j8ZbMJ=qkGVwkJ^k~QU5}xg*$Drbn^e1q`sxz@s}ZE@(MTWP!gbx)jB~_!yg%IgDP&CBGk7rc(#b8AVgPIeg)Xl<78v%) zi%QV?(7K@ee;b&8I!oV_J69oCNS%Ba2vf6X7_C}1JP0h7G%Voa<+4=z%BQ*(3R5`2 z)5F?RHo(5TBEPUs9~k?ddlV&gcQ%w~Hw;XE4F6x*adkTI$mfSYJ#kO3Aetunlhmms zD_#fBHWCcP#YYLE{&I&(0^W3`94;1liQ{U2c+;qvJmb`8F6%Zwq1B&$BF7Jf7H;*W z8t@k_J_t_c56f?Fly18%qzI;t>AM#^@ifPyKo8{H5Coh~WBX$RKuEG?^ePN#@f261 z3+dki%he9YIgsdWU>4N2@km>7itFN#xr#Nt>7=T=Yb$v`681VwD!45@i{_z4@4GT6 z;CWXGpG(VDcNPk|?c5YDpQW@II|+y?$UxQf+21#q@=YMBZeVDT;TkLGJX) zTE8Vr{7H$iFmUip6Vedif~!5d=wY&E<@T^RT;~r9MJZc8Nc^_?_^$%aYH~@=Kboo! zT%$f<(DRpyfg$L|>u zbC1mR++pSU&@l;Sxb3Ma>M~@-DE?K`zBaw#`zJPMkV0c+ojb%3CW9lnoTFBm+x41V zr)9jc9m`_bJ5l(U&A$CGho*y>h2bgXPnHx%isju*T zX;^7GBB^U?w9kHX8@bf^xJRG=R>R&CF!!K>$FeC>VaX+^jzwPTF2F+dx!@z#Fkl$t z)SHkhBN2HKk#OGZiT~jz`?G!bWO}JVR>ORB!Z4I_=3VE-GdsJolYnE6Ti)9Hp}=FU z^jHDI4+GegvISZ2;8Zu#QapW%Gef#gO55f9Z~b$Ns%(b1$sfZOV(7A{b;3h)FolsC z!Bep&VR~`OM>?d}ZAKx~esNa8pg{J$CLn7(J3(i`ByT#wW9O-fF#EN#QX8929iGsN zG5+DwtI+-ya>!Sf9z+utUzZT(j!{P#rxc%6rbx%VMm`)OL?>DU?fe8xqchKYu-*<6+jDjtfye~;en4dL{}v)U zON1x;@$I^x!IR4QG+bS|#lBXEhsx;I-a&h+zW}#YZ-Br+k822bY|nb1)(r{%SJxwO zlmFFQoVi{9OOumDXJLHOs~wzOkr!X+w}y>ui7y0%thMhi+P=}dMmCqXu*kdYSUboQ z!Q_EOG6=>*E87MSJ}YJ z?GvXBw3e~_;R6L{12)PqavVTRXfy6z%D%SaXR|Bj#Sa<3@ag{sG(3Eb28;t$s-4!UtLketi>7UC2$aj% zPaPDbZ&-%r;f)ST4U5v^6#W!7Zeb%VB+4$mws#tO;E^I+FuZPJ)wlDfp~f*}#?>|R zYsNL2(o?Y_^Jkf>8u(_fZwPRrR+oGBHe!O>fE(z;)4s1yn&iA|xj?WJjooK5KhfO( zj`^}`H_+@kuc;k-$FBH`WUs`Cdu^c!`pZ-WCDEE8$4@8wQ9iP}B^zjMMxj{lM;vhV z6|=EK1AD;^;OzZo#Aiq}Yq(9YngJ`ieSQ12XRr#ISX{EZ!VyFsDck5=+pOvJ&y2o) zzj=K;=jGi2^Y6B}U0DWQRooGHK7C_9&lEI@B*#yP0yo-f!_xhC0v5?BS@Wu}TPP}x zRUQ5A*0<06Ri6%vu?u{pHvmU5NeuHLlq`^2Nb0G5i*Z0n*@&>By$`V5a6sL>hTkq- zBUh3Qn;A;{4USb!mcS}jrF)0|ZeP*D?`bPi{E?-*Cx2MWg>`S?gGE+Q^37EoD5Hlg zt+%iA!O^<4^N}ZF%m`2_arXZ$P^zZ``dPPE2X5LkzVh>XZd^W*%=fhXbb8Nv4roPw z5CIKJ*uR{TzbVp|1e;nXkIm6s1t}Dh(T7q&HxHxgeRQ`FZPd{ZkJdG8B*Ef6%{wCp z+j8i)8yQir7ns>c)B*pj4(I4b?CxmsxRC+_KwkATn_8zy}4R2*8!rQN(PHf56*Xsf;WB)_d1HJ`~ zUI#y1x?>UhlOvsnHekfvcU872b*A0!@Js<^3o70{WlEpJ>@G3)D7?M1NP3(F{>m=5 zchhgb4R2J&KHT%|O`r>BUc{}6BiA+4oe!GJhZlJPUgY#Wg-z6TuTOcfveDtJ>9JgU z#wNMzx3jOoAgNhy?1fnBJEo}K5Lj#vyksYH%+@|H@C=QCU|R6EnqL948|jf%|EC`L zAF(&V*uda*<96Ispf}Y9t2^sAeIC=xR=RaZ<=N%B4z?cXJ8M3$U(nNKjr_LW3Xw;o zUqo1h2{-f;P0!gyq}SZ%IZ*=*(SBi$py+x;YR>iMbs-Q5C1-l>Y{@ZV7fE^NK!=4@ z(p%1dbXjLbcPI;yp=$fwNsR?j+>~RgUUpTGH`Ny)A>|zBV2+;}Y}(+qHg>>l=2 zg8R&ptsshbVprr*`!u!<-`wZ|U)MGwy2tzN2gKgQjjDv+mI2qM<{muz5;`1)Y`9y9us89tXLvqZlC%aoIMV^L?8& z4-UP~cNhB}L%BIek_CzpaDu;V&KwU$9FmQ{dHURdOP0i(uoDo%9p)kU1?4LG@brsU-(eDc3iKm!ZG1_u_}uW&mCU4 zH?poxk5=|S^1VK=zqib8-=Cv1LNbgjpfVvEH9Q#NT^A&r)9{00xH|{EJk^*W61fC) zOjX946CI2kIeuP3nySE%a$tI)aN`b*XW+H7AFEvWfY+XY_$fOpOw*8S!43E-k}nHh zJAVz;i3CtYMJWXay%r&eH?m?Jdk=8A-d5P1Hl>N)A~%OeOhEfVEP3i$Ji>M{H|Dyp z@u5ff+4C-%0`O49pz0eu!kNEKFc|y^*dEf~JLO-;JBnFH+datb7Ejj@Hs)x*0XV!OdGVu?{`O4QE%Y7Qu(4t;kB1J ztS^|#h_Jd9ZGP-4;U+!f`!_c@h49B7M}Vm-;l$Kf7l8{@zIMW?@c6ooy|y2`;!%6* z&SVMfk?7M@A>0&F+a03pF$v7w_Gqh$?du6vSN+p~P2G@m;E;Ts4bb;Ul5i&A1*m=H z7UB;f^7bIpMSDbjGT@<*2p|dBrFeaiuSnG!ziXKXmB9Y5J(!!%`%q@Kg~GmSARU2c zYtKMR-3=&9mjZm{DN5>w!C_|^a9*gjLKDxs$FE%W#U6jt?V%E5Qk=A|H?XrhpQ-0V z=O!(m5MWabKc!P16Z-pKIfIycI1b5wDj!D(^<^8;X4oeNb4~xUe%shfcHUZOloy4NwAEn1udNQbG5zFPablcKyIJio7} z;ri&pxBL`d)Vl3vE~VQeRBtl3D=;CAofScE!9`yr^dYqg^aElD_2meVA!|UNABtuV zfR(*XmVsXxaEf$|xmd$Vkdu`6eO_{eSFk*at%Vg-l<<~ReNH;xsd&4NC0;!F`uft3 zqtHf3Mg_6=;Dh(egG;n(*JDO8$I~up8B`nO`@Sk`RGa~qX#7SC}YJE#z{ZM53+C z_q+&a+f(>1yC4E9pe9#l{Gs7^bcf|JT7>NmF|FJBbX)b~3zooh-@?|jw9r~23FO1n zZ=astku`uEbIosuZHe1*jd;Bb=28Y7P4zx_7x6%>iiADT5#WB5ebP8KR9L5D5+)Mg zqzShf2D0EEh(MZ%*e!LcfL;X6xe~N%p}sUea67#6x)8y7C&apb5RJ9odoxPzt0bIJ zM4YLS8U{?I9Rs(GzTAgzDB5npfIHOl+8?!JvnSwEPHtN`Y+xsSQ4V_t{ob6jSe}v`qCfDR2%-7;nsnK!uS+iEUOwF9iKf*YmoV2?uod?Gvjs zo-7b!k?n8@1Hkq-1AyZi=Rfh4i-FCl1v$lxxL2<#PU`6AQ&qBk!KXplSGwa7;xhAq zeuLb8j~CaAkIA0~R*ZZAWw>Oe+R_>2`4RNzL0hjihio-K{5LI&rnQBej&W|czb~d7 zwx3#kALxDv{FfH5hg~)+`=H= zx~pyBVwjO*24JyZ({}aVM;?n9yGwM}K}t)r-NzokgVw*B>98zVDzw1T07T>?yB>88 z-c(RKuqZ9K4DJ_wdzlb)2+{2w0ZWJ4E_>q6+2;~Q)arT)%<^?%u=*KvIj87w@r_$O z%@L`iLROQw{pz&o^uxZjIpe14lLO^aPfIy3ooFwYn%-Ub!1)|E_#xZ5GFY7k(Q#)4 zz4F-ZzXzq0z|DC3W2UT|z#(VLncIv|O4z^uYO($^8lkRe+b}KqZ~Vbc#{@z^2@(#( z$Oy!mrGQrJ$M8u*ciqm?oUUZ=ZN+ZU8!OUvGgjqSkKP$Sm)+&XCC7Z{N4%F^p`*%3#9k}Y$rG=eik$7mF%=u5vNx3O z=GtJi3pWom@#sh`x~e9`6FUpg{#}_rO|e(^_0$Gr0nq3Tc6D!y@!NA_r1T3ERAU%0499hAyz6d$6gv25*_ zM;SQ(+S<^nu{P|2=x8Zp_xWtj6&-&@QHSJ7|Ia!rgzC9n1K62da@umpRUB&dUAZ@)4Np{mq2$Y9f5KyAx8Up;Ivn}2#KWJha-L#>&CW+90! z{nYcs1v(*ur>t?6w)aJS{p4ADK&~&8a{5Oc{05ERKFj=XFG{`kAxvtmRskb<0R_J2C2r3k}svZO(*+vFJ^EHkIc0p-*eewCOvLsr3g42d$?Fb z9_!)jL~JRoi=K5sdw7s@p!#tn2bE|tS%@1iPFEPzl?f9^m>L4*C5|e2^aY#lGKw~( z!;OTGJGXHxKW&xdjov}K{>LFAe;Ln3f660a-kCys`RGP%ys6KP!W$KYyFv>VV*Z53 zuZSNGyAQNTI0qKS?u)q=x2~PL~HX#>PGohhA%y% zs#Fi4taq`c4-C>JzK(lARk>>#6V*`_K@v?xV{ShV(U8lF_K?vFTFJW^Khf>1kvwy2 ziEMvi6cjv>qXfn0D`mX^;3w#~cAYF{@9ei80zTlM(g%X*D?q%7WenjbkY@*yQ0! zFwTe=xEh$9Zhbw81ims?$gt+DkYp-M_+p;p^cisYvs|!Xh^14eZ+rdTI_cq*=(HyI zma7$>xK!KCwY(41d9`TMw<)J6o3pFLHDg)7L*R43EJa+WZt8Nz-;TtFCX=bBM$090 zowt;<>Ctl@37DvCrVY$Nry7s{JT^GN5q27up1FBy%Dg;H^xd-+{#Oev!cI&PjPh@t zpRSsh%&nVE8ZDbrkExcht{i-&`qijr(KTn{gr1?9T@}_pNiH$eN1){eNlZXq!=tb6 z$%+Sun#UxV?-U)Ru7kxg=iB&h8|Sqrq@}_5dgy`9Oz@@7J#=qEFLlr4kVrf3Lqtt$gjqn$OvP z>`DhI3KErbASTr%^Ny0#O5x}=>LB^Li#}EYY&~t{_Jo(_s;OS@h0ts}+`zW_uNYGE zK;g89=6LbaQpwWo(d*CMpDg7SEIB?|%D70apH!;1tSGP5sFi$4U4Ja6JADXKv-qac z)HUwF(f*p;+Mslc;i`GLJlkRoi{KaTH{H4T{t#=NVG3|>xP%`YOmoORk|x^fz~iT` zXQr&dU68~t>Zp?a=EJ9z6GIk;_K(N7Oh2dTw&+!UX2;EC!vlZxxp^0V965L|hk zHyWV%>z^3VRvTSbA7I-&>U{8%Hwlla1iMA!i8BoR_=aU}YIV+iq`y8Z+@MB**IlHj zccoFZ%w2PnS$k=?+-n+H`p%s2z*KtERmSZ!|Mi-wJV*EJrVi>KmymygF`|vW>$7?- z-o_KzSvxKiSr^x)PP*RIzx`19;N1sDPwHG2;=pu|XNGcrUeL?bbkjdGeI!-!aE2sX zu-N=2>Y%vjM${$QcP3%Vd4jI*-5OA6JK2sZsdU#-Gyg5FgD3jyt~-xA6AP}(3w+98 zbF>5yj096CVVFw1eN{0@{Jf9v$qKT`SR#!>J!vsEvv|LFLy)>PZwN;`r9aMjSB7yj z&dqRnpio&)V)o7kxYX-urkC?v#Ae1R3ky!uZ?ttpMZDjPu^BHl#xLHR_M3G_p@aAZ z)L0eGl=9pusn(kp0Ys-Rw4dTJZPKqV0C) z%U4RZk#`rh3G~+lBOh9W;C`QyI7P`RQaK zLt5$4Ses#&xQ@q9o^1}e`X#7AE3B$Ke0I_N>%FYvmXSw9c1>4xVP>@ywQ|gv6>aLE z%j>`TxY4M)KeJPpc$ez~@2bxP+CJpFgj=PrjlW1R>?)aFPcTR*ai1;jf4oSksydC; zVOaBR?>>0IQ>9$0j{!U4ps!Qh?p?|m6W6sD-(XhFOgf|QfmuB1l_0LbxaK23RRvdW z1BBq$|J_?7DDDoi%){Jjer_$+zbvOe&y$)iarA3$`GvT~(~7KSn&fREC0ZWh(*B`T ziG_PM6P?~#88G)81_scN3y|ZDXQ!@PIq#uqDS+R;r;uKmdz>P3TZpRE`)5T3KNr5k zb0>dsdwD#kd#PO}Rb@%t0kO@zTpA3Vzk;U1l?U{@@kw>DiU%^XpBY`YtBJryjTbPt zFLi|yQigWDZ{@e3KmG7y&6Tljmu-_S1vr+}YrCBqHmg;iw-9R{$YN$o6O@dbjq zTWMXoM_+v$JuYPo7TWXVpTZQ1kv^irzM(lZ`FfzSb?!dC)!Wj&{)qPYX)cwnfuNu5zvGqQ<7q0vVcl{1)3LHqJ(u$*)t;o3@S za?+y5L-Yq0n{rV6wpTX(DPM1Z(7#11_^kp&TsC!%AITB_i0)dthvt|lf0pUdjVQFm zHJ=l|D~dCB@Mo#(_9S;lPZis@-g6;@Xe5nxS>B?@PIVMfDQ8?~A-OcRx||X%Ko7T7 zHqB%O>@Dp*ccGED8olP5iuIt!EiDys^yuys?m4V@*kEIy#R)bzuyPC4X6&`d5}V=3 zqLZ;G{*Tv;5B{O(h@#;tK%G=(7woyUd3w{LDbUkk+;P((yMsgIuWMpTvx!>WkJeT^A^wk@%5rJnC4@39~C#cI#xX+>Xi!lh41O1iFqd%EVi?y`Wg10Pg=ifDGj z^*lkTwng~FFA5;FTm~h@hc)4s9 z@P`|SWx#b_B#hETCn#Ikrml>JV>YsJ{(Mj-%s1$8RVP9e>};n$PcUET<2Ea#@Zq<| z@yq^oQ{jV1(r;uYZoE7#z@Og`tLB0sSh_7Wo$U>5(v#c{J*-v^5_Ol4}XDTAtLRj~(sow~*e7c<@Oq+V+6Esu1dh{iD!nq#>BI#A>;Inmb~cWHzVNj+*zuH6&QNzTYo_2?V6 zOV}o;?8Ub}#K&q+X+}m}(U+5(RMsRSDoG(+T2$6@uEaF%8+4s4Ges20Tq@3qNQip1ZdA79%d>XeOUOOZn{)cKMmO{ksM%z`+|p;D>>J~XWItmy7l62Yhz!q2V`_Ny!&bq_Gq;TqeqG`LD64D znEILVro2mk3cQmj^w`FsEe_BpxP6TxU@6DR&je$%z$vP$JTJH?&B>OVQZ|{~vS_&Q zS*3iDNU1MB!R_Q!#1eF(!PG8Q0aIxW1}_|O3r&fB1!MWi2iE$+aooQY7Qiv&=!$7jN;@9acnFyvsrEPxL13rMqj2s?DB{s1kSO{da9< zRCtcIe1k^wt!AOH#>WMzv&jqFCW}X`^oWVoK}RMnGW*O3`PRi6mNDa+goJN#9o&_F zsve45_q8uFZsax*V~VMd0U&t!A@ z*uHLxCssI%r4DSvN>rEii42EXdOE>dtsIQ`^j*HG8V+$EP9T9@+}`fF3MqClUNInN zCCa8+b$8?wG79^4j_*Z4CemYl%Y8`WMgpW`U+mHsL5_OII-8Ds<{yo{g}{9$ROrr! zD73*>OY)%p{%jSGghhZJw(=XT$$_q@{4%K|Evx`@*Pw3vTm{KLf1y?ezHq4^DrHv= zEgx3srkyG-(kpW{+4(}P;KTAOp8=-y?8lq!-*EWAuN3+oNui%!424cwtbUy=kD5Hi z{+Mv+a7$mJ1$u_)71=^_pM2LZHq9h za4+I-S`N$8HJfvm4~hAw-oVgsEpDhQ+wTm11?LY?*MVVM?@j(_SXh{;cNMSwI^vo* zbscB-_q!w*f{B2q8wr-h7Z8`nNZIMG7Gz-Y9L&>a?OpmTx_q8oOI)h`xWtR%x0D7% z+Sze`=`gu+(A!Eb){H-GIb4}wYxKCd{j}2lxWAo98{ruSgbAuu5|*mXmrXtjBCH)J*dq)WtzfE zlsz;XrdXdG$+4ZVmF7>UNHLX&h(g&E=k`2DwC@Rls0dr5$A!nJZD{3Tp#Di z+sUTo_pN1%6wAfj#uDvcT@HllZ>%?1iE~=m7yAkugmte`*Qqmg`y^yHGWE8h{dvnG zo>Nt#Z}=N=DWZ8#tjW>`4^XE<$LrbL++1-RmEzIJgm(}N$lc@)xSh0ClG9h0sDEDQ zhN*i@77-VVpmW?Sr*k=8IVk%4@`)yXd`4+b;W+koDEzmQy>in@_1eOO@bGd0={|N^ zG~%Xe1(ZLIV8-+Q86pE(;N^Tl$zlQNx~TI-t6GWH zt*~Fz9Ak*^MUy)hyJw3}Z<~s!cX{!^5M^=^g-$X{8D2W|Ry@nFHT(;FJM*lc_~Nrn z{w+{Y!E>LbCw$JBJ)U!?;b|94Ud+l|Qj9<$vxZqBKU6n%`AmZFG5TUF00N9|5_~i^MTG_HRXYpa!{wvQg?H( z5G{JPPRV1kz1}TnZkDn_B$y^?f67ok+Xd{{=2xPZfrRoU)YomKF!EDB7$e=1IJq<( zWM7!zK=wDh5QfRKl6KE;qQRq!q13BJ15OB~R3uOJid%g++U4KA~-IJ+IZm|nP_o2d7 zJdNus90QC(R@to(sL4yL_2~vgB;VgG!m@_N%_VYV^^5cl2Xp0>%-u1oi^zj%N^yq! zS^4QC4K14J4YGsBni-_+>a4Z#^NS^vMbbA7cPA^DpKL_{RVy&N*G?B($%lZ^yKzb0|IroWFLYbu)v|)1GmRsG6I=*gM>Dj`Lpq%7J`Q^s) zeTmWM%gt$@$S)+wzuJ|4y)r*1M>{1wog>(Nsn4G{7f5_*P;E$=HssK7`W(Wb|3<`e zMo$F0n4|1qn%NwHpzCZJj#ZkkCT+lzO3QrY0Y=o}9iyM>fxKsLzn3y5Psp$I$sbrj z?i^bte%#y-+T_;7bz1;LWCGEaPMHB7!@c#qE)ayF}N}e}E>2~q&SYoC> z2&Q`2l+sr|CI#4shTdZkE!=0QO@3>W%V1@GN;E4YUt_6JySEN@Cg{qwdeIFP1 zjR8G_emTA}Hl7BqRa=G=c1^!LMiULI%qPqFc9H3vFP2AjPrV>Xq&uoz-?BUn$>_~o z9A(m-9qZD^>0h!`U9x|~O3O|BX(jNt7f3pA(>Uunvmz1q^0_UPUiq!=D+BIh1s7&c za4&o!b(p1##LgBDSbQv6>>5u~6qy+mA((Rmgg$fsp3Jj3Ldi1W^u}w)*;#YSM&l^+ zag3?`-;tw~NQXR(o@ZVU7Z7cTRN7?{Qi2Y3y{?dlIqe=md5W_Js&*>^r z=#D*Q(3116ZOJdA3aKjPD8yVW@noJ_%;Pu;0#_?$iajk<`H(Puq+By2I{IeH=njA; zM;o@P9}46A(-0AXbY|@zP5pUE-LzA`w-Ep@{THXoqV7OUW_Mj zqNr#|hO{s5nUv3SnT(A%IDA#_S!FDN@vNW*8spb)6$GsWK zddnoy6(e#gaUr#wqxie`&Fc}!+2vklbN{}<{Ve@mA(N?U?fi^TZ1LD|ahhIj|3?is zYqGC~OT3r;JEma_Y}!b6c5hO36`|$3Mgh&sdNQTt0V%XPkaYp*gCCtDAD5uJS0;D5nG!jelVpV^+K=30Vc^(Vm@YHxraN*|{Y`B_W5})(oP~UsznUzM%b>mCw*9qy! zng%`J$}+V3q?Eg+Y{x5gfdDJ-!+kTVTr@nuy5OX5E9rAn;_QkWec-robo{6c(J-41 zr+AzFcl3S|>`^A=*33B_(L5yODhy9L*Je7Zi?^`BG0Vf%pacV|6v@lg{7yB`_(QhF$-`u zDv3}6C(6|52|t~}_)DqJ_u(@brA*)sEF)#eg;vK`Zs)0kHkp@lu(mAqa<5$FPkC^o zY=t^o>+(p0rrvx7>gZ#shJfZc;FTf(#R~K+!J`Z8RhY?t>`ntf67TUgHi zs`Z5-?7cDKpPNsLTS!9s=5uc?`SFgQLt-y8^WIvzk=bg-fviNvjGaC-6kf zDu~{YWQ=LAk`QRin{Lr(blwwc0Wx1}+W;USkWY7xoYMuJj}7^~{L=gK%(&$dbLu*z zrU+LMOhbnV<4v7W%@<8#wBm$!Ca1R8z-o9M;5ke|ORtvn%C#jkR?8QA<`bqgHcgFn z#P0Iu_KH!dYurtM$Y%=PFQQR*+&eSwwKB69w2@k!n`dH8WypJlCi>A_#RRYqzW89x zi3A>edtfOiCdnce4u8Oo&dM4N-#nA4_ZbR8D&&68HM##uphqqD;=D7!{BlTR(=bP` zh2?w&DC>Sp{a0>$jY~25ts@c>XHbW}J^lmQrUv6Yngl+7R-AO+`A;J8zy%q`1TP-x z^}_gbVqJ8OYVQd?O>?oSu8cFB!7|tjxS~Rr*UhUDr_@4kyk|5srzC}9M;>Sy zyu<__-ocB{u*wEnooo39x$mB*m#zkz<%817uV7qK?Ap0h0gMqd{naLAz&L3m?h9ti zl9+?{p7Fs5m$YHR%`>fvf#A)abG`<+I$6)7tloZksOkrn2u;H8+7vU(P8~^p-}WR= zxF>wDeAhj;Toqb0f}OmoG@7?kJNv98wcd5iCiF(tfSSj&J7t_AvRXO54)uUo`+_r_ zhwyg!?#LYgtgg(UV1POi=eaz*m>g39gW*#n#Er{G&kjhBQ5JG@)5`y%Q6aMn1(lx8 zNkd}QRdy05;bIV#NjE8~>p&q{(6JlNYqroEeS|mqB2aj;b9{08XFEB%uWtGYy8jq` z>_Cx#jNt78t-#X&8Bs&szq|nA&Q9lu1wve2`i+l2Fi)7N6#GMCP_hqiWunIGS%ET) zhzq5v9CaFcp^YcgfFXgCPF@_D7JcqMX5|_5M!f>~*UD$WaWk-80B@>4Uom7Z{_f*j zn&_KUv(;r%Sf|D)zqmQyxR;MYkc{YOxbWQ2noWrZp0^CfD748qIPZ{^zxFM$hK~r^ ze!=w6%xZVl%V?;JKnSVY*%>Mr{f{5C-+v=m1MAX_?7v#Wbso9|CisHx6N3Io;uh`D z#%ENT7tPmVEdzkH2*{@TNVbo>VAlx~#4^9UakBRQ%4%M>UZuD3O)p2cnOh z#p_21;I;l5J54kfIdIf@7ftkamac7@7Vvl)ic@3m0csCCjYEvg>S0usGrn|{dtd)b zoYZs z#GtZ#ewx~LQKtrfKXC9a&||A;Ycm7Cd;){B`30gR)DuakpdfZHak}t`J|L^TN)BnQ z^n70+(hl!rc53x?8#beMAEc(H$K48US#B?Rr=4adl_AhgsWvIIvlRqh$zOE0*IuZ8 z5&TCsVp~%9b1IXI-clgs)eY&qcKD0+kxCi3ufSjG?l@PwS zBl_XELVNO`VHb?$}WoJe3OWj_oYoif#M)?4k3^?~j` zV^*TwM!aVgM8idq)}>CAvjv<1zwNL2PB+YVtPdCDwkNO_2qHS9wMK!2!68AMO^M0vPA%xR4+-ld$~k6=c~u}vNkA6vWPr~ z=?yIxt5>>bKl23*Y6q??T2?<`m08 zA`Q3H(QZopr6b~xd)5q?_8;*C?EEmdyo90)Ch=NFGI4jIX~`#hKf1~wT*vWf9vUtJ z<*-iaHwiDj9-x@^4QyB%pupUgcZdAbA&V0`U>fi}@z*rK_gjo~nAsor zL2j{Bl`+SbsmIp?Z}>{$&96J09iiS&iQ^bNBZL<_cFzLpEE6al>8+-=B>HM}Xcs3* zhn8f~1kv9_s=tkL7#-i4X;HpY zU#t=f3`isS8H~L464EQiNItD$H28j-RKbbue7Go28K7JUPI%L|vUR6^2OH@*!|t~Q&LMv8ES!?W_rsFQyOM+f`1|` z0=1XbY!3S|JvCKpC7uDdf?W8oRicLb#*R$%J-_m`+n~2rgxlR<+KE3a?`vPZ=<o`z z9G8s4YnIkFOk|c{;6i#@8aqIqC5H6Z%-_s`)9`*dARljaU#fJ!lu9-Awo*22t`hz< z)Yeq#b-3QCB~wVOc9mW5T-4Q+pUY{sfOz>5;H2fRE>JGz@?Pqt>QlDs<}%LL znpP35t6Q9PL&sTr!ab1XKO#u(=9t+l!aCGOyggd2{U)RG%5&`vLvU>cY9t~8LCvK0 zBa#bI2Mu!&uQ-PmgennjEy97ou#)bcxkG6!?L}4f3RFF#OvK&!+uc;g6`6w!%AXlU zkFxac#y4z#wuYwmf#-=g*I}gn*LN$1X%_1<1b-F+c535|{|J9ZrcWU@ksir{b0ZUb zXP?m*D{bv*8xkUtcM{L}Nmo^Nx=zc7(L^u$MOhX<%eNFQ>=9}H@}-tSEJ^slwNQvg7ze9*}yuDTi(Mh74EA5Kssf* zM2LK!MW9Elx7y!eir4#9i{);;ZJ2iFs_ zX@Y|8!9&wkU**%z+ffV*4bv4;(hT&vN^S}zEZUC>2BaZC4(j0XUr+mrFa0fg+>4Bb zS~Q9C=+3@0w>#gB-}pNU`r}4I1BJ`BLn*r$RdE_^!ONwM7b{&G6k-u{XUF6$9ZpEv zVCo@8U(isnZ0%U_AB+`{V->_9L&Zx#1ost19Js8FCT`5%l+!7SU*(wu%dZ6ax<=uF zX3XkOz*5fhr$k)vNC?G^;LT~WEWSn!;j0b7x@2hf2g$$aE>csXDNB>dY*rUSZt~;j z+hJsI`V@u~UNRq5lB7MJHyH2#3SPj%e7IPC?_EwmC?~fHymhP)k3GkD&E;~I+IP(I znG4rxxQ}*Yf-EjcjyUkbRPrG z+&#n(%F)4;hBbt`Ddts%?`y&PbAp7|0GU!D3}4Bb2CVH{3y8hwzqe zDn;m9<~@I{%vfvP$QPcH?OXTOloqj(OL8C(y0zPYz<0hHLCkeKh8KM=u=cctgR6`S zzZ;o?pV@r)4oH*CrZwYJYKn?~1z_aEIle)Kh>V z>m}j#xtnlT9O!6IHU4jhexLbXj=WWyG7`=zoO&)QvO?yjG#nQvm>cE{`DIreumq54 zh&HDqK-Nx0xYMC!D9mpkhrV;5z+fJzk~tYFb)`0OLyfcd5F(KAB-5E+q&Bf|x23dj znseHISWa+qj(AH+Pe}=|_n5li@Tk;Z|I=#g&@YI6$zDn*NxOhY%{Pvh~P*51K+{4Ot zqSO6_@EIIeg^7hT+36xkuO?xj86|#$bV$r+I#>Bnc`cwly!D{QHjtJ32D5a3{!sa` z6%FZc&u(^JO!o+pxp8|ngdF6cfwo`~tZDNis7yM6uMdQFR-ZR(`dtM)UCn6^@v$l? zyEB(boQhH>Z@3ZSeQ}B}R0A?E^K$Jv@jP?wy!?|A6}7sOGH+O$-ua9l0*=`(AM=&5 zDhqAfV1%vkkJyypwkm&hKnExb^(eHqJxJQ;z8`P1>x2#M_)EdI2w8tQg3jbIO~l2Z z7?)$HRo>y1G}LBpA=)-kjx zH#VQHL9@-CHd>`j%5L{Qq$K*XFVYcrjuuT5!a_QO;82y9=@UU}19;5S_s`d)M-PQw zAjiy8id`2aUxv#(TUv_y#ak1Dis^hNFNwvL@Q$QK#XqviXweCo&*ginMN4F2<$n=c z`xWufpddiDj*d>Ij_%~LZQFmrv3D!&=ErY0nT|5`!!mV0t81Dmx4T0J`^J4TLln^| z9+|GK63)MgUPm8z7*baT)idHoCMn<=P+j%ib7Ej@qH-52=Jx%BgjKP@u%B5(o7c(igunVxz*QuNR_|JtkcVPN>@0IeU-T3W&42g_CrutV-qu%J? z_sxc}bY$&ZPZKS9sB8`SH2{AYg>GabwqJeE-J@A&yy-UN3o43|G zRrzZ2NZ;a*ZW2P%;a*q^ZA1M+_D6Qm2;j++v%rxTefZ-_0R#4bONCqm&fZ(ND@()0 z{PgD~u8C6srB`>!Z2EZmW?o2p%8$49-Rh(`qO|s`Vf;Ui!at*lHub><6)Zm{y-iT| zC&W$U9TQylplHq|wew_v|?xL0NR@j;)-$rN=zP=|swZ*DCwy%V0vu zFb|#K@$Cqs_wrFB14^s@$_2`A0{;Q;4upm=V7tC~{ZCcVm3ymvWXu{qviZO8k@1#% z2b1P19N;~R^#)2pI+VQNm9SzV!W$!b=zX6*Z>cG3*PM7xE}?Z^`d$wTBn;jQ3ZBjfP>m8@k&od$j$TWxkbm<=~H z%)ai&;UBdB8|nDne@i;XvoOP~P~3tX_%tquN^sy7@8^$Cv(9C*Dxr_uj%pI_+>9VH zO%c0)*Dbqu(?Fre!jf0k^3czA^&u3GpS(6{uVb0{%6X$!<|l|A=?9)RFb{Li(BTfH->mwnGint0i{Seb6p}#m(JyFNCU8`0 zVO1f@=pF? z*fv0q>)hVNeUOH011;;%8)oufQG@WGsKI?UoZ{UzH~tD2b=_IATGaQ7L1l7aIs0W` zZ$HHnHu1(d`rwTD^L+;r)x0paNagE;i(M=|O5*ALm0PLl_U}XJxF^rKtr)t!n|bqD z{_INU0cRIGcS%OY~CdKr_k_UdSq-HXewM>8>xSun*`Dsay5(*hlhuo+Yqwp@r$`pa21tu z!Y?D5CVd?9?`ab>`94Uc{=%%8^PRdc_L2TwE!>ozplPoDGjSlx+4)-X&dM9_FmTHzpnWsZ8Wy2F}aXCdDlvi}3!pR@@lKy}stRI|OX(paCNfq&Czg?MnRKBH77L{(7ANl*!cQ70WPp!8PGMgLoO{cv`EJpxKn z%3hddYnTNf9j;2uCZpd8=Lr1`TCUnHDQRhvvF7jLaHs>2>gGT!A|!eG{6A~FltG;2 zeflqPk{!aAyv5~or%Moj&NYf@19cGH+Llj|<_IKAf9%LMrk*nKjG~oiyfJdjb?WS0 z4ihl77#2^WgL(WNV877*?y_EY{+%O<$Uyz~Lc4Ss_Zw{aM~bRk2sVfIDo?TE7WlGl zUeU|#I(Gf=Uws+j#9Gecx%ox=@pCzyh|tTa;5($>PRVPdny?!&-k6#m?!_>x$Z#QJXRYB8p$4jbr zux~j|`7Eu%+u!#4!tT}zj_kHas|oD*^S+W!Umttg3H~lFecFHfHHQE>8}C~ zZ_TRUp&8@ud&$U5rTj-oBHHu4nJ*B|z1S>!H(j-Z<XGD8Kke0rM6S%&VT>C#|2pCqr}3*bG%Q-Q2*6IBjAl9+*#R5W~J&u8^jWW|P;;ny$oI8Y&s%H(Ldl=K#;yo?t0MRQbk2BOf9 zPk4ohLiP{IkM#M~m?E9qV9(Q`N%vY}rRX3p-jwco;kF8b9W!uaUoal{HILnOFk5rh z_m63k5w4i3J3h?N%~8gE?$-(VA_74_$$WVP_SLI>F@DzN|4{el@lfvX|2Pvhs)Mnl zqJ&T>(qcx67E#$+Ek!Ctg^Y-@D@9>ciprpZrk>9wVI@R=QoeLx* zU~BpAsL7y}H=RZNya{n>1#OleP4q|mE+{s;Ry8K&=mjsaYpyXbtW3GkShL!w-)cac4;5(sleN(}N6m&cH|{sKN8ZHgLRd9^Q|a z=@j|Tm@S>TaFW|6HT(C}Jb?(wa_=&wm@ZLwxw0f+^~!?QGh4xqiCiV z0)saNF}vh|lcLFLgqcVWXvS0^L{MzL_T&l1EA<&1P=zv{?QLyOnxvi;s8u33#d=jO zCnkpIS*s2^HEYQHFr30=xM+%@DLgaolFD!J_HTfWp)DI-c)~YjF*!;9HHI&DF#);J zr^k1I0G*mYu~jUQt#WPMpEmgauz}&>fKu(}f~!c~O~pDv=UXp-kN=2d z9_D&cxfjk!NLZ4nBX2mhAGaQ>LM)SU9RKdQ9M6qw690Z^lb+I|D4Q(H%X;a_$+R-; z57@crN$<_Eaduk#=dlk5yFTEakLK3#EuSNeW}aHhUJ8LKwk0QUsbXRUcv8$y|M0X} zllI(k!@2?t)v#hkUP5I=%(e9$hd|Y1nVE^pTZOy4jm==PH-0jc=M7S!Oc>zz{>cC@ zyKVQn`-^5$(?TQMj!T6)jyn!0NLPD&0g&Z*I^ zXWYH{!+lkMwxkEpT`VUJe>szQWQi?;C@s(@RXN#`kKh{vjv4p(7i{&C5-1u-yQ>mS zvNOG?x!#kF{C{cBwO@`pGy(cf?3HuKUfIanE3!`=+l=F8+AEh(Vve&nLQqZNw%1-0 zmHemsTY)Ocz95<%`I(k3L26ZzsW5#4w(3PExy5cx;TmwLebj>U#`)tQA$5zr5(B(w zZ(jyZS!cYT>(^9T&Ep2q?8|r1h39==E+)t5=P5U3DF|zJ)*S#2?9kL{0_Aj2Fp^zU zx`NJU@c)l4CLO(uRF&T19ECo&`O%r{HXE8F7?i~PFU;eF6aDE1ct{`QR*ZQJKvn{> z?Ea5*Et>Gv5}n4rCh6xU1iq>*X+nE!S=c+lCU~CJD*mk%(B3P_u)9@yfz3hzE-!#gpdo->*KH1Qwctblnz8T)0tIPrFf= z!7rPut^vx2TF5}fwj-$6c@`@6OSUK=XZ_~gm7h2%Jv(F`YO1&5`etY9c|?vVN$>*Z z7r_Qx^LxfCclE!u<}t*!KMhFa}PAtoH+>{@mgMH!=Y)5$*c8WGd4x>#ev{< z=|pDj1!btBCq%4_d8ooYHCfnq%mtsew!sl5KJjaLHL;MIF#iLF#zh?8)j>RaIY4vo zqTeRj6Vd>G=9J`&s^j!i1NGnBA3(ri zdujG{F5|%wwTb@kB6&zy3Xe)IilF8WKHChrxU@WPCX97Y%JYr)9?$mgwO+Ns6%`fH z*`om6)(=gXODKsJZx|sewOef!UfMN$OKqY!+|X!kw&0IR9CfGX%HIF@+b@6)dIyOf zrRtFCadFRNzvbB>@i`f#+vwBY5n6X)gTNVC#`aalu>F|r$Es08Bj9$4R?vzVabd?Z zD7roV1S!B6l2uM^B%WcERR$a^f3D#_#d<3xBqLL1FeNFCnpztx1OQ*2i1Q7 z&vpWVkt`M?7nd+neLlEM)z!rBlIZ|0wyTtpQBkFsVr`;KkwxO_Ab_Ziv~Z^GYD)3% z31^fXaq5g(iFtPv^0-X*oGx`(2t&8t@w4Ekk6Ki}C|dQwqhm1!xh31k+dUH7FN-D| z$_xaOSsS39=-SRQ{8QKxCVL8l3Qg6JEPo&?xTS06Qzgsn^0ZQ9#` zgxh9S>gwOM0hW}554v!~DvIA?u_SaFn|fKu_OVNU;z_n5H^K?ljqqRPNhDs@aO2SD ze#UI$qD+Xmw8AiPb)lp%t|ZdWq0DR>sWb=V7nS>^tQCB0uu5 zhg~=Ib@V{mA{8~xmfSV*JgWMn=kZ78PxeLMkhDtYq|V~;-%`$-%n`9{pyj$~SQ$8; zXFK<`wjSHhN#1Obn^0PkisHQ-(j#9TDxXsly?9k#f?G|(V)A1I7c5y6#kS40fTF(8 z`4@qv|Asu65~JzCbj^XS+Go%LxF(u2CCBysm6Zpwv#HhSS^?TuG=7Be{vT#rl70#-H1J4V(hw5Kx9Jhi zsV{5~fcy(D6L&2yHa!SoEE%<{5d_MSwx65X`8ljd=nc2*rWSgWh?RmIjd_L^%@te1 z2*5QoFgEK?Zjz679m$xUHezP=FQtuiuFO?_Y;A2F3orzGr@9{rrM$^e82xR{Qdi$6 zN+9Qi(kw7SeLf4s5%Ju~PrcV&pd?5EM;*1#8hw5QE&Nu}*QT$n0P=b0m!M7UWRx4% z*pSel0yn|8KlnhL|JKi5S1#P;5}~i^$F=)n4OTrZ$vFR_RTOc1>Ri=W7b-kce+q6- zJ@Oe;To^U+UE9it=+&3C)CfcclZwjR8&^g-*9iD zIgtFHHU~QpJ}qnMmZrB@2Mx$eeN1k9b>qCln-AC?7hOpRQ7}(m%o|P3PrN#H??cOb zbH`RW>S?!Q7cM0CoD6|40DU-DE5Z!ifL*fT@ZYPqffX||er7*anqoP(NbV_ogspT% ziIt`D*z!|-_}Pve4@~8C6mdmXLStWpXm6nrXW>Y{^~YuJs{9*7Ln~@!^6C{2Zc1dk zxs-Vz&bfI`A0yy);${%hL+YT<%sS}TDh3-M^G@w0e3zy6X`XF4DCn~J@`uw?Hk=f1 zQjjnntQdnf*{@R~e?sO$q*Xd1*6MS3GF8{ZHa#{duy7UWet#QQ8E`()L;+x8vTL}M zGhwi^9To_fg8OA>aXS!ZIWln%TQwfIHH1TR13#izLx8?N#@WcA?%RKyA#OAlMJzD_ zMO>4#Es`YMdxIm&a~6!_W;l@6aHXK}1E6+24{0>Z>UD4<5G+P{=snkX;_8FX&f$4V z^5p@@7OnRu?=YqnH1vX!ccDw>y9nYberjcU^>d_b7+2t7OO|>VfOz?D{ujLb|5jXN zkS~cJdNTdoR)M<8`vCi`&IttrK`v#%&YOv=VI_r}@xfcgoPoYx-3u_VO(D}(6l7t! zj^{!u_HX<$d@I#{DyUI%W0H99s5u6!0YV=1w*Yd@1Gry+Xn%uD<1@CXxQzS{TM|%& zsHp_h%B3h1=uQal>guXgu6|mBG!Q2*N3zb?_Wh`IhOm0!PdIDywajGao)6N2)%NN; zqsj}M_GDt4EGwmImNV$W!Gei@!8L9QQvueFL+8tkABW6O%hGD%`eG%`5ApE7p z;>@nhPVyK^EH}cxvp70B`l^0ntBTN{UBo1`l{ZI}O_^xueWf1%CdV)E4eC-HGP#vM zLIF5@F9>!@NcmY{0I7hD89ipJq;`|yJkSfXEesEFCW%=N{#t(V z-^Rd@XK!0Fd@Bi5mBrqF&xaM!DamriicESfm2?VZQRek@5%}{jp<{*r3Bg zgg)7<#B&lXlxxJdZ5)4HfRKeq@jh;|n_=sS_pc+25I3;OIM>2X(lH};I1s!F9qt0=P_s3zJE z^*q);A2R>`0(&jPrb#rEP&@Iq58k{or15)7O6gIa!hyB#&*EI=Kq*<}#Cv^;3WwuZ z0zq9$|6SDOKdGNG5WIJn!$Pdye=Df3u8*ha+_^IJG^BPlWOp>;w!`%hp~W z>-m6)h&XkGQ?}*RhHbnJA!7SW-G%N_ekAP#k!WM<2^Ol?BnheN;o{xlpx;LZ9U#0)W|6S_QZ@4K#4`(RSGmya}k8&--#fELq``e6iBUyLi8b zy&$DPIO3p|2fyECV)mZ9KqLFy@>THb{!eDKv%-pMN574=+mZ`Dy~%T_u1YEn)-*Mae^ ze?q#q9XpI7Lh`nTC?|QSg2-c&be}`BCT+V|fB0h)A;n@{#7uPm_ZyK4%r>_&bfSZW z0`cs};z0}*t#M$lAoqrn)T7VuY5e%`{HYD1L&OR%es8ZoQ`{~h5Lb@kNprefEFXDZ z50SMJV=Ny?PJ##8=&yq<=j}7yL-Yd=q|Wd86-fpI_coeuNi;pwvu#n)k;a?9gf1Ia+1W|WSlEY z3Ddxer{7%lbj$@5?n-*`NT2>k8`v)?lQ57^|A?7SU(40!vto&N-LXL){6UILK4?6* zv(-rHJm9bHT|lW^1kup#o7y3?XqO2}?4wPK8JPA|E;zToO%>vE9%?QL9lNV(wdp|0 zi2j@1hy_D?c==jZO0OaRpJVH*kQ5sOR*KDkldrg27bnELN+A4P6@E^sY|j1W7uX2p zxS@g(g_^lI*E~_h4v6XJl_2c0N&+Oe$QQ4)PBb@a&AUabphsyeo;{gp4n2un@jetdp>(;2SiUS7`+E!^7s7#KApfx|m zga$2(((z#kCmUPM*p6t%jau>V-l+d^9)lN>=}S{aidK7JBUIkEVU-HbiBRVY*ZKSa zwb;m-On!@J9Gc(0>Po(Qj~FU2>}ZxTD;67%>^RfnRe9$F*+JDi^SQY{l7G}cOf;eRF zD}jeA(sAGFNd7`!n|uiiVX?BO)wW#9D^uJJ z1jk1m5LzXop_jMI+=o4L>qGBT`LU`S7>A$|8+^wN)zJ^rd=HSaOYXBYv=gghBVwYBldN$IB-%x<* z7vaAX-esz<#F%LjKIenDAmMM}^}poPMG{HAu@XrDcQ!Mwp8{UBuWTI->gbO37L{sc zi;NdD$nHs>h>Q;}VAiq}pPX;2vdalDXknvot&!A5LKe&DzMsu(}NYx_#fr zzwuN1mIVHY{{pbV{2-gpciCko@XkS9=^oLt1~Qi)q{1&YQI{aYHJV-C0ayWw5U0di zZZ9`;?MD$u%7Vk`!KN=yaT6Es+Hq3ws^TBo1I<#k_r~XDY7Zc1dcZr=B7iq_1rpB= znZuo@be2pM{KrNZL%gyfspL@Sf`FX2`$J$aK~FHv=6Zf z-+KohycNY)CJ*t|$J=G9Lzm{K$|9c)<)^$L5hNx>_lLCJ{}*16%rHQPtB4I9LUrGT zt)ne!@*5WyK35@`gitb=p-ZVHF3=lPMh49Ds&kL&Kkg*g4 z2e!Pw?Ds2miZj+*}w!lZ8nNT6a?((V~l?P1`;pbbd#yi)!Ms% zPQlt4OgLZ)UnsI_!WIufnmStpe7@LzpD@N-BcO_;Itx^RFn}0tTrb!>t7^_cAq*Sy zY~5~{E>#NgyGU(Pq11H<4~7W?Ar`FyrTd>|XmJaI)J2}fpZ^+QdIZLiExIE$!h@sT zs#Y%J5)XK|Zt?TF3Gj%Q=E%)u2$IuW@?w#iDCO^CnJ1j4ek9aJ47 zx;5fY%g)8yTdC~!0f!JFJMI!gIJk#xOMlz}HJB9a>dB!j^@!^0G&6I~TF_HFqv@~b zmB8pP^7qxCllyrahr|+H0&EacH7B~($_4C>^qbu>Vy;>AV4Kf7xaFDMI(TSh*Fr38 z7RZe3l0f6rezM13vFbgntDMkfdG~{$=MAv#MF5B@YLN}=V%J7u!7Psa8{YH|dU4(8 z*t^?t!zLFtQFx&Y*4T3VTcQ@tJ{*-N^|uqS3G;c2!=?h znaim?fzh!RZY!UT1ThAUBBSEAdNk@CcHu}(&(D}f$KZbRte%UzvZ(5#iu04tX^fOx z4fd4Vd6IzH(oTl?c57(b%R?U7pwM<=I&7NNS}~V_Y05auin}HC^IxR*x%H0chEWRn zz)-Si5;c6So-0)P_AYX5mP1H=s_f?K)=~Ay3x0=9g21yFQ1w9%8IF42^v3g?C&++K za~KduktbD!uAy->I>yn_5qr4E+-g-$?pdJnxmfQw?I@~{pSl`Ei=o+O zaUOQ(@asW~q>GXjCU`N9g<{)g+ zA>_xOHi9{l)?jycf@4MXrFY3Djad1Q5aL>B)f9z{=KG}Z_8{d8GTbf^W{-u#=vB3Y zu5ZB~vW4XjF_-+Dh0;yUh0Xo|-0lL48ki~^suTJXAoN#<3drRNkcYP_M^UB)4!?8- zi9BTxP!a0yA?%mNJ(d^5SOghl)`Ixkmm6|gESrc@eDOW_#Ddf{(G>G*xkr9n%XWat zTW4M=R{r(x6^BYopt5MSsz<5vSJ`%UVZ8Q*;l_iV^xAoS zI4&kf2HuXV;Pwg(r`j#3`|d+Fg6XZer^wP@!9Kl}ILk8)rE4q!7sOVEAvfi~654+4 z;GOy~`0xm0HNRJKau=UrWvB^J(-J`k@tQO#XpiwD0g6+kgR08REY663Snd7_$*i<+ z59*uzKL9yu*>g;nlk7;L`34@p2hq-2{B_@#8()Tt{QP_gasoF_Y0xZ|v82~cThcx# z;t(g~I?S3F93X!W-f%|RE0|hQbGT)+Z-6tvNhV-ljlo~68HU!*(erC=NoNziBuNffru3C*<>gE{98Q|l_$}mGKMFZ;wXA)+~ngHgR;Wz3(oWKd(TmSR~dWAx!_m^uwZn+NBNTqOr?@hg?B>-W%0_x4T= z(VJ#h|2gIJ$jQyslP!IsVNmcMBwAZ;PMdB;mE1L_$>&|-Rn%}G>L>Va2C_kA(WVAZA4RAKURAf+n(GD&h$Y4*MEKZxxqf_ zZBpaRP4{wGUyiKq4M)qSg1nn$K4+gC?e6z}4aRi7qsMBrGHY4JbhR8>l z5f8+>K^p-muDp?pnYO$UWSu(tAdi4K$r7^j<7A z(?sP`R%y#&{}~=2WFp9qU6wUZurdaMEovR&L6)@?+VAGyN22YQkywer|WE8Qqq>53R5pp=7B4wDDZASb2s;84`ypyJ`eXJw~g zOyl^y*s(jvn8x8J_u7syhMF&ciMx>qkK)?Dr!+hL(#4CFL!jzN&u^V9W$t-z9S~;s zoY%mrKxS!bTwlnnWzwur70XHK3y=cW5<~rd@yJzN6l51|Zb8bI5+k+_wqgfFYHrD` z=;g#5<0g7e4GK2B!DG!lg52~^_dR;A@nd0f#%f4C5l_4ujtmN3pDT30RSTKDS_IRh z-ItMi_*(in;@n9vC^%KtHE$^=`S%|oypxLfDsqcMUXGHTm_ zJNcOxgD^o^q@668jqzsB9b7m|BU*v(ers-`rC{Cnh-@WJ0>N3^$8HZNp~w~qqYw+V zp7xRI)Uw4l=W4vup z40dzyi5E7EDVbA+kXSZ9wS8KLaRv<~O3~KA7UaMu`&yqMk0E}#K=u?b`4CbLintL} zx%2OG;VO_Ds{(eKSv(`YNrElD$`$ ze-N`WkY3R`%Xwj}+1IvLFpSmxlfK&?7{&^26Nx{VUId^ z(Df5e>yFFUp^WmCi-tMLu`oN^Mr-evIRk5FSkVedOJOfHGH1d#KF7s{`)4%8jj}t6eKV1@+c{y!7cc7?9oL)sK)~l3r)@mO~u@t7d3~IU?Z?2+O z>A7XRckOB^x77i2T-YiBW>v?5@U{H)3SE6K%x=C5Wo%b=YqeGPpR+%z?GhQgB5&U|D+NQM-Fp=A!8@6-6J7K|wXrK90q%Xys`hqg70IfI z?t2k&`(#i6kiB?eE;x25S@igp!Jb(#SakMe43S)k!drWjQ!rRGC7C?f+QAdxFrr#= z`mYb4)OmOZ#4;XlnoDTmn{pO=US&EpYHMr#^%EC`+~|rw46p&4=QA#ND~w|jZU|YH zm5|u{7Tc`1fNB`^#i1D{5{OXSMdkTJ5-Iql zz~jIu_y>CB$4(8Jh3_3o8CBf&&M}iw)1S5VhY4|+-`Xc8Hgv(nhK(xCpHhpO4Xe*8 zQ=*V(1v%yjY3WQC#%+$m@xA@RB5=R4sW`50?VXFO9bflI=geX>eh=GxUT8>OI&tbs zX7pG9ps*SnjV|o^RAaG>tUQO4tf;OuzTwi522tNrC^1v#xr$_l!@xadDk=a9@(cWH zISKA=kZG>rA&j3rA&rChtCcVo`qhZF`A}x^xk}3xP-@ADUis@2ckB^j;i&!8FblD8 zz*Wbxa0JP&<)_*YcBKZ`U;}*=UN(N(uc+HJPRZUHu!B7h*%;>u5hlC!a~EOiD$l&n z$8Iw5^}#14R>r9l6X8#8ONLxrl?6X`fjBr6i*6(5xCW8c?QDIhzAVl|(BK_%IDcTo zVA#Ob5qcvAhP$Ug#7%Z~pmpE4>P(+u1w{3;(;0?~JUuz0LPEG+IXZ@4Fx{3+KiLQc z26=pS>m=a;I1l+Q=>tQ;w-;XFtSQ?B*mNR##ejAqkWiLyAHCjY&5E zswxa$#Nw3jOCXR$)@`c@^gI(&>3yX~p4^jS<;Ng!)1Mzcus zG+yMaZZVnwfF2<63C*MDq>6Jb(_3DQEX-g5(&zD|#+m7UCF6~}9 z*xl{W``!sQ`IK+iFl=j<8tmXs3Y?y;Co{f&|A4Eana0ogvWxS@8-I{tgxs^zboX`|+f|?xzmGP+b)|&rnfQa!7(I$oDM*ScWcT zw7o)=stfJ-+S{GQS41iYzMONU54^Q46AkwrqzBlj4V+;uEe=n)WiOv`v~ZO8s|kb9 zxx7nK9kuuVnvDrKLJa0T75ZdhdWA#N-6NW#dEEviBwv*5$n#xqs-cZWpSY zFk2-S|_rV~{2{S7wqOIF1St# z<-@nikXi#Woawov9+0Kow{>>J{S|)KbNWA=SR5O4pr{gAl8yoHUyLnZ{x#mD2F0t| zH-q>MwILzi-roLz-S@K;U22}~a?h+31gID9X1F{@Y<#KqM@!s<#cTa(0=wgib4ck2kniIBe+P(sH`fzp_-}mnT z2ZFGxVDF@`%Sb!2?EH&G;1PK;khon+2g`lruUo2FaPH%x=HO|wR5SfDwzLXD7Tbfk zGdCusTAC7{DdCwV9pf|v+bpiFwFuo?-f`ZM?r=-QyaRBP7H+nItJDadlOPwMg0ff> zK2p{I#Fm)W#GMfqgVA_tnEHiRLqZ;K6#le}yKL4t+`%uwD=DTYFomVU{#5WB)a#m4 z+=Zc9#c?YT&LqSJ#+P#6eS7%)i-Z&<5ZqbQpUJK{jh+F9n1d2?CmcoN9d^Tu6PSE) zQ1)bT6q-LAwR7=YV!=wmde81C57t^HNNtzSQI7bo(Fdt3r-_#Q^^nT61S;K*Dsc!E zDpTBvt1ItEakwcxM{*I>LxIPkWcm$q4Gdf4$zNM-4kCt3T zG&Z9_0FOoFsGGBDzvcF$YRsFuD3OV)ztL@MY&55ZVBwXy1_Y?9S7cyXmEU5O znx*IA*Y)`0j%K2xPH~HwB|k=MwmjYG2g!>N>Jz{+*&5G*(?L^{`3RzM0KIJwVK$38 zT<5=+|244b4zo5w-$J;1=5pjz#UI5`=i{l9x2EoPDva^9mL;`9mZi2pomW-isQVyl z%Rwsp{jv^%))tx2nz>*olv?VLMoaJhow$vhge9XJees96aRseHK>v5$104`_HVYM5 zjW2*${8TG)@`RgYqHY|l)d+L1IA46IA6US%V3M4<`10f^RD0PAVIaL0D6weg-e!M3 zrUdNeGEcrP70>q0GBBBoi;H8O2O(jnb!c>~`AOstdRtlfpG@Wemk3aW-eP41YA?1G z0#2eTuj92|CI?etDO^tk2(jf|wKj5J2u@|q!RxBni70<)^wH7LH6Y4@M#izL%e~IX z)Ip76uSRiD3mQJhfOZVm#3d9|p9>C|wClOTaB%ZN;&4ipnAVXsEu%?{Qq9?`baZrv zHh&DBJ3MKKPBFC^lbp;D~6WRW71 zyMSLDf(RR>NQ!eS5_B*WpLfsoUzd!RX-E(d;VHXJlDY|<$Zf=Niq)u6}f4N#$Zck zW~OMY`FbVcKRHQ^WdYUii>Ab=+cy^H11g;ouZ5{kigT07sYsbiR-T8qC&%1fScuT( zo7v0EVZ@K_kOXW%7oAd92cZwWr>GMix8M_t*Ze&QBao5S8=nUFaiOs8RA8Sr*8>Am z>p(D%^`26Qc9Ud_w}P!IJ~otV+~FxNkyG;8^fKB40&NMj2kJP0G5ku9iZVUFqr$z{ zLeYzLeJ{hmMif`!6bQ{&q67`>gj)9oRh(r9xJ^6O zk-L?B@dMx@PK)2^l^73Wtz!=%=(>R-8_C4WR9JcLEkGPQB3cNzYsdt5on>pj&rHqj z^=Kq7hHTMUlje|@>k!5Ti{&}l)v5X;=ki(ldxm|4#%>=WN^x@GilLJsulLnT;-?xn z7&YCSl43*ehxsFG@c>~hNdJ4*Vxi~8xp>`#5r5qu$~W-5Ml_8=*WaS4Vh|y$YiZ04 z0z7+e7DeRwW0?nsgG_HS^awlM2J3+-99a`BzVshqp?H*&d-Tk z3*5H*wNEE9Dayp{k$gHzGkhlYu3__J*C1m`v7gkreA0NBtL7+GO&jg$v0Xnf*)^E| zv#tS!c4;Ei13mT{@apoU5&tX6ZFlhmWWIf_I)-d4M_m}6?1N8{qgMJQ!Ssi5KHH@bqy_hsB+kzN8K9NH^Kv~%E3f#jPtV7hS-tO zFX}kExp1j1R>uL>zsVVG%RW)oSb#IuBeG={$P=#Eq=28(lY?1)C&DyFUwWhbD9NnjA%;;AJG`YeNNGao23s&~sK-V@co^f5ZjB{+D@n@1@GaV))o~bWkn?)NH9K@p1f zi%vg|T6Qt}gpT7d&BOU4bj%3${GcZVrg{7Ud+u0T|2Vz;*k7|!2-PaP3X~~VriI}~ zN$fqsX|Yzy`BId@k}K++jGSL0yLUq#Whz~IUnZ-B1K40<$dE>s?#evnw{6%>=PZli z{?q0pBq-lSTV%j@u@v1-Tr>h8WHPhU;z|;?s%*TY9Q|0%pUZ= zEoH*ZL3L&9b_>?FSL^Zr&5J|!wX(pbyXcm$5Y2Qx4ndKsc7|TZx3BqK@70MDY|N9~ zGKAh}osgP2JC9xx8Gki8{B(2}p*MVJvR@9<)YYP&m#wP!;*i-f7(If7tFXGYu|3Rg z4aV#2Nd0St!uWDd0_{*LmhI)rRoyt`$sGrDnczy_9zB~u> z-0lds1prG4%9KNRdvn@Z+_}*mtt^=2->jwm z+Dju-;{UmRB3FdEdCL~p9tel%<)e;8HT8SI2#*ow2#=RI=3HBnewOxEZTP2&r1th1-qO` zQQzLYsVS137J_>T)iVw=Q8L{r6iQTJ>;6c&#*>5Y*-Lj#%fQ8-M0Mp2fz>Rv&7Z=F z64NttAH63@Ouk{G{=*pQ_U#LvCJ8iD)_iaq%~xUH1oMz|q2eyu9DD1<6PuvKFZH*7 zX%iguFq8e_j&if(=`fGcgV_nnednXpChJ!{RIOGDpQ-yo`*PZ)ZdA?D>JC=;Exo6s zaC-PH+SBpwFq;&8x*?)m-oP4JmxY0F^zdwX;Ml#(CZ=(y(s`gx+_CWj) z!=xtO-35MvMU$E2PZ1m@#+RuWbY=|FGx;jr>V}yh*}y^4_?0uUZV};SU(epP zJd;^FFnY)pNd{y|d)?Tjy>JE1DD8zdZX9o#{l(tq+|s2>l~hqgS9#l!Nr!rj5pw#3xjC?*hlf)B}HNEYeI4aa2<|?u#kinDv?AMty@tR3iTqC1)*ofL(1oJeb z)Vh}QoT@$NFlZxk>3BI3b9IzG=8CYDYO=0b)1+P8L5==+bU1Rkn)_)UPBL_p_72Sg z^~As-jlvvr3>gmXf>S&g@;VTu4Zcq?{qCmP;r7ZsQnj^#eH=sKa-=w*4ufC*H|we9 zWaY;bYn00jk03lviu>2V1sk|#z^kC+Qqxr6!euUp?aqd70*1F98SFtKB(g$sPu^im z?oWrsIs3~MYb1sYrY%+NIM>8$gQ1F%*AhTMFJ_jYkH8ccpAd#e99Nd#2N{GOHW$;- zzV`Fvx`5XDDjFtxY!OcbDAFbIH|QO?)*^_f$`Pc;H)l4Fzj6wq@x0k*TPI;X94Dvi z&N~jVB9&&4h!yOGfcicxP+u&Nl)3hzOWK+q|GSqs3B!eg^Q%>H3|TqO zEpf}w3xFC)=U@WO;xDf+hLH}GY0T@41LZB?1F}Bx&kU#{ zkC6csdJQhqO{bXMR?RPz0KrI*ZU%-n3rEvCRdQe|3*c5YPx&m>9Jcf<-5u1ob8!GE zL3$P`#b|hR@cZg{gY=r3nv!WIb!~}mvakhTdiGGko=6VO+Qv85ZwGAx;5gI=jIlsM zl4!SpTGJKBQcT28ftM@_YmF1omTj{n2MWm%A_f;Es*mXjBkWnBai6!r8 zrARgvR%?5hxvIw6f6X-rKX`T*Q-;HdP7(l=Swi}jmerc)h71vDuWRb97E1CryF;#s zj`0_oH_{~&`?J)^thM!#Z_i-11QzFZ(3Z6EMMlS#` zj8%|&?%??(os)1$8%71t+$4!+XuKhB;Zc=71GLPPErU>|Z9b^d<3 z4uXIk#?Ca>Vd^(rj$qmJ=c9*&@vD(>l;iY{j*b?Sp^u#{A)PHXonUdNbTBl)(Qh}F z8`gB3Pn;Nun639?^eaPIA7XYU8fJ(v{4KxGu(LTtb|^TGOg5eavJ8iaFE~W1*H3qd z9GmM26ERf7b^r{Qc7s^JzUTKH$SW&O-rQTG){b{95rh(lM_AbeVOR};^CE?g~b zw4<@6XnDiDc3k2?zXR#?Ug3kcma!Zo3#Hb|-U3RhECQum9T%K2 z;veO-2a!Cx%M2ugM6$=sy)E>zKRSxz+FIt*tPq%*CNh6wnnKcvH8-UI(l#4d0t8h6)Z0w4Wfkrtl;npz%ru9e(_UBsHsgO6pCUHIni5d}2%PSi z2c%w4>UJL@&D7(Q%u4rv)J!epf5w9!FdEjlQVbw%&j$orXvj7e-HEG^%u&okVoKp?seEGCOsx|+R`dj%+BKkpu}H7yjP zS`GFCy`%rF^{8qzrTuD00X)$vlHv(1L@M6y=+EoC1W=R`)g`>?J#c@beDDIhyqLG@ zRy~mS^u6z-(K~0QggcH0*A`=IAvpO}6zcDs*`N{o1?SnHG-4LvT13@}ck6ixebRK> zDJiWfPy8#LiPSIl(w!6ewV#mj1O&Of`#U@!HLvAG0*&6@k=`*79X?JAu^BfK5?|rG zq+>q-86djQE>4(Bw#~hEmbb@0u2t_;d-V|3gF}|R9GeA-4u*E@nGaLx3$EgoGD*x^ zc+}`oiMNdC3?LXHH6fPHN*m`4H(6R6)`#$qf$=t*Cc6f6DMUGjnNW@`8tv>%)Lrqz zAu-cE^WD5e2Ut(NC=phDKt->Hd)Xuos{67AQQ60~BASWA@nd7AS;LKLV@u>?A>|lE$!2H7G^=^dX*|#XZ~(#88o%eBv--AC!$` zi+*0{DGj%8u7&NjOLjKi;3)-;W!BXVqeQ{$HZk!c)S-m9-F|jfj63U8hh=d(iqPEs z+%L`_C8m`iK$zvlQWHC&4s&W2&*|*!oJ~PSD$bf1sdy3Omx80rJqX@B@ya(d5RSl( zHEw@0IZYW5$UfnH54?{a3xFgrQ-KE1vPrP*IjNUPLj}#Rj&hRQ^0Bh~U%ti#?I%N* zaX_Gch5K(Oh-NqN-KOV|LHVbt4g8(Z| z>NOe{!NuFoY8kntU61k2(BVT5Vivp&8{y6orM6!s%868Hz&5tz3_8n@v!%YHc^vvk zB{_Hc($G`&^>%}3WR5B)Iege6*S)v2%iX>RKG$Aaexl4x0lOwp2ER&>gW&?p4WZ1Er2ik}UZQh@xewj1rzkqXqde{Pjj) zkDi!qoCv+iG<$SiCr0;yS7+^eiyT> z3R%)HO^sF@-?P2)$2|Z8X8V|K5uUR}-77Ldew*L=RCJ56K4~~zt!FH?zr}4hzfHa?q??X6V3H-GAJFeM9;$4D;mwZ}(rEdQ@>oLN@JH z-wUi8?+*d$%MpJy>;>l+Lj@WkP*_`BAfF&A?}ShU>P1N6ro@kV=VC7j6Tz-mkmB%Q zVGBQ}?ry6_3$v7b>A%}CO-dZ3X7V-Q`v?EKeo?!k2+3msK@4v ztPUU`GTPWtADaz7ze$SuI}=V2)75d{6*~zc-gvWl_#|=5!nZik>c?IdRhyL<$x(RX zKH57zV%<6>zG#eP`ua~IzWxYCQ~kg4^}BGhO|2*OV+?(V3f{%<@Gt`;#BGEYptL6U zsDMwN=pjEiU)y4~02$oXXq=A&p6fY}jeQv07d2gO{adbT)IjRYo!KAX;-oprIVVD_ zx&Vf3&`dUTkS)a0&g<;3I<=d|ooI^8by&hkBVO z29n~Q=_x?B6EY&L7By5bkOcO6@v6gbao#uZx@$=HC9`^3%wC`^2*UWW@l*763-{g4 zx2ge9=~#>*-_qrHGj$!|&5@2y_ujvGaX<_t&C~5s?@7MKzUz)#s0TXh;ZhIm2TXYC z`hB_C^P)SLoojQuy1Gi=+dnV4Yx`<6_bA`vD*~+a1`!>qd*zbQ>n-g_$4SJfUI%a3VFwc#r83W8d5XR42oiW zR))r9rZnMSw8a5k*7A{^E<2O;V&x=3`AO%Y^ZSANAADE#&D_~}%1Lxnx(MrY?rln5 z*ph@2gB)`_vfbi-KYUu{li76}tFEX8)Qc!fOk=xTo-)YR`Rn~FwLHwm8Jo?wgECa( zPHXNOucas4Q(JDEbqEhe-1Zgx^1wq+#f4|H!OKAo(Uc1DT43Mil|q6PIT| zO%T&h;In_l^aH-eW#GN&>3pm2)E&hShKt>LZ+Wh4toMI<0laC8&2%KiLQ0=sMRdbK z3n-r?vPy<2njVokcJpk@0hx$|ThmU5`9%E~(D!Y*I=%ZVPOS~tB0Tgr6zL|;nh^?% z|9)11Mx6PV$?gwWKj^w0WdDL{BQ*(hgFfIx%ixZ-!mK+BTkK)7z=(eWWD$gfJjurv zI0I@F5}0z}y6w{&c<>5+TA770gE{Y&m8)cg~3>{!1DA|iQ zJ&Fm*?;P)tRQOblSSRNhPaU%SX@;nME@pGuObwHl4k^CH0f4kD$4K8LQqHCb_N?t0 z#JGxNuN3mv`9vol^+KRBT8mKqr`)+@F~BkR2twhmD8RZL=dj#FwWxyEjJ^? zhy8R`1?D5XYySzNK0F>5u5dw}&vO7>t;8{e{tzvn_3>y6kmN0qkQ9p~O}c3i$1V)B zbW+7buF;S=gs?4|3}H(^cIZ`Bd=lR!&Fxoa5QabwMqA`0VMD|qjNH?hf5^yz4|*>o zzj9|^wL{-hev9k9fp_bRbhqs-DyBR1Qz2!bQTgtW#(EqULuhujQq=WD1NKbb4@t{J zIDZ<8B=YXVOn|5%jU<>r%nD%&)>$?eG9R{1koXfikz2@vaI+qyMy86bORV|V zy2Lsz=%Q5CIoF&bckERp*Q3M)YlmWC>H=hWJI0!ByKuJ0KS9j^5-&_@6!URfbK&5r z^Eo0!HOvCb1#+^Qn3OtfVNeV0H!<~(Wy6+DEpd^Z4y+^DbNI>i{4;ozrZVvlaNby+1A^|g#CGB(m{S@AUaKMT_YYY# zpNJ+Rk-4+ypTfEWVqF?DEJX0_(MjZZa1p2R;A1+ALa?fSQ|LG8GM8#r7uTyy13?E< zHy4+0?X~e9f>DiKy&=JbIC`|f5ypT?^&6~Xj@NSmY`~7rouwswS%>^eTCibsT(UDM^HAl_;UQi~I-Fac1D6velE#Q%)Ju(7cY; zT+U2-g1n6h>kNfr!}s}jiCXtlf7Lbq(sR3;H~#IG@f%MPjJ_ob9^L!=<2Gv@zXKxF zByf}V@l!7@E*@C?7W<&~$ql@{i+7A4;5O}2BqJzPjS*dS&!BL<7_8U*aBOZ@$7y&@ z>3lsu{u3=@gb$>f%v-_aONx7R)&E+HnQH>XaoNZ$H`>Sr_n(SW7_4EC2M>PihEj$a z1ri%hZwyITG(7%dr-zgPGlf>HAv7B&5_d znTO{WwLmzm#*J1f~?#8Q0LE z>(FCKDt_)S3m<*ACT__fm+#z8jOA$ATjC$S0Fix-ROlLY0oeGU1N8CsSqJiQqY$aG zDhqQ(nhV@uKt0pAa9X}L>KF_g4T>LU8L1%7ancCzXTl<+G1O-UE$3bU=1AwvdpL>Y z3`BRMsXnz!J_;h@!qLH+!qkx6`689J=Fb;Kou{|RJ(JwV6hM)KNjY%bHq?elN8^Un zF7!rQ<4`!Lh5FC;D0qbjB%NmJ6sp*~uFf z2_p6247bD74K=R0j&EK-Jslpqo!A;pB_0N9&`Abjhv4Ys0ZJ&G7JF5X~CF@OBnJa@OWITZWgJJ+2#@%xdVpYGfxGgIM~=i z>}3AA_`@!1-VC1;GDB*`zl&^299XLxez9VfYSU7PS5h^azHldJh>nhrtA=U^FE&{u zn@RuCzjf1!ZA>)zRnpx?#)|m)LQ70?~+SA-*@L0>RjAIMs6>z1GTdd$ znIng)U>zbt$aQ=2r@o4ztfv_i7x~3q0V~eOATvyJ;2vImctO3PgSL+uifDP5*1Q*T zfVcD;=v9f0T|>9rzow48ac`&~h2BS@xt|;V&KEo?T0S07lH!9WB%=s~D4D$H@s|^4 zbLzHkdYSrx-qAS+Lm;nbib8+L0NWf!`7!KaUNn*82vct$&Ra;Znu(8@IF(h4Z1@E` z_@B7R-wZZLPqp8e?_I^ULk@IC9oag`O=kRKZc=~uF&-!*)7&3j*vu~tTU`;Fv#0WT z2{&%@w?NXA9oojPu{s~CB+G@vV)w!DkL5XvH82#6Y~lmYN-zxa!kuEsMc2?BYHEJ3 zp4R&OkYUP0i-vzj1TU!BG`uOaZ*}?Y1OCa$i0?l&>xPa>#>~<#+m?prs~i@=>K=_N zk56iZba#No#%gwkS|MD(4y^QVKLN$5qpW<#vbi=^=5}r!2RHA}4i#+d9o`5J*~HID zFkf^PM{kR!8$CZU3Y^QqPoX;+ZokDgxcf^Iwe6*r9(6HOR3ItRi92y1-&D!T{b@iC z+URR_A1y0FT`iGQHAp!Fe{Lm{mtbQtw9}5cb}VG!+q)E@25;TurM6X4%i6 zE)eG= z@G*Nryl}ztr2C)+`Bt7b;!kb?FXGt<(F7j|&eDXOBl01yL_i)BtU!ah!()9#?#F#_ z9iNgEs~Ot!{}J~lU^TAo+qktF7imUm5e=FLLMv1#QxOWyiYP%Ok@Jg@V5 z@mo7k(q_8dcstV-8r`|}r;Ag?O1hoK_IW#v@RkR*f1f;qyqiZW;(m^M~OvN<+0qq?QEa2lM59aCjk7%0zn^UK(1uu4B%XRKIKYxG(< zy&bxjq@UdaCsLvVm>+E&N;iGM9=+>gig?mA-Sx;pYPKEXHFb&o@r0|;^V@DfW3_4) zTE!!RzcXLznY+==1Ixf5?&s?MRa06%(3!Ddp`NleiXkc0@VHwBk@@e<1A%H-3FxxkLch!8mw$45%X?^nkJ*-_m za4z%jmr4i7*c_q0@F)hUmj(;{BTV#m=Gue$BM5fjK@Y> zySs07;-RQL5nAN|Apa(in6`p#$B_O^C-r5~mfCeZlp$%jv82m1n=nTd>`DBe9z`}v zo9z?-E!%qd%Z(5h4D!>BSyRi0W~y@6#V%-{w~P%d2<%!7s1g04L!E zlCfW&AQfhlb6>#o4Q^v1IB(1H)!kp`w)91eCSWlo0OXsSZ7lWsO1QRGI!*qo>|)1uTg&ePD;n~6Y5u@9&hc+O!nA?1 zGG8t*rU7-Yz49D!)-Lp4v;fL#n3n;>k>mnwmw+!!2@2`~zn;}Ann;t22{2rDTYf{881yk;YzZ7O zz~bvmLi7t&R$u~d*rmoF1mxS*V$WTO*a7S%l1U7Ge3IOyOg(d!o}{Yeg##6eFAi`!Dvx%O1fwY z(V3ax$bTL2!_JR{gp?%>U5ZIP|*T);jBk{oyYnlhDUpJ*MG^grttJPht@HD za;66pR&Z3<&ni1e9vzmU0_7FA zkaMFeLr;|Yut#6x-NXo!_&_4VV9^Bzs?dG6Epu$119AgXqvPB|1!rvIg+}TwS2SMU z>-+th^yLv1qrWrM2a^XjfThmT7WfRUvn!<^O*T^N^Qk=$b- zLWvwOA~DmW)zkrM8$U|Yx)>R$cB)m#|3uGPxbXSQp&bxfm0Hh&2L@Pwvs-I; zr?isi2gE#FcN>RHs9gNt+N}&Yt(y3}km61ll-0t$vHBssWo1Q0Ma6rFdN~36=HQS3 zoi&q-rRxDgJl<+M@ZDJUFRbH-xCwyiC_R!U52S=^_zg`RzaeZmk_^#p2F7SbxYI;e zQQjH9R`w0Ms<8{Qj>hlbt3}Ak<8h|mLqQ%bOHLT)z%YX1gXaL{x(n5k?y-l%?LrJ2 zKF{%=QUlORs{VSM{-qnTntJJb>5B!5p}%sQ*BLfiH>W8jNPEuAH1xdbr3MBDhE9L| z*$tWC^q1X`WLf6MOOaD1MSG9w*K_hTooR4;LzvkWR9u%{0szTsPCm4Tz33>S1vu?4 zVv6@z@pF?pfCJW_t%oLv<)8cmPRI}V`#XJKObDp}2b3rfi-JezwxDHAFu^2Q^m+W% zp*^NEd@{dzT%>?__lsLn)MR4JtfLD$%qWT@e=CZEsF(JZRxDf;4_LL*YvM1$iU5}{ znfuyFvS8DftlBk$H#09WyqtXCLooQ0{|WvekhYh0D)+5)r27W-S-ub`X}l|FTLPnT z8#%$HTe2M9DWLv%8wLEe;U5mvRzY`H=y%JlL!qIwzJ(@OyinH{5z^g7?GpJT7l*X- ze^BfASA2bz;NBvU;m1x-YF6z!;9Vq5crriXitPHkg`^KiPOt)W|H!c0^hfUU{3AEn zx|P%IMePD)Axz@V+a|>rd*VyCzE}GEm)7^>0rs3OpVh|G#pjIDVPKDYgxpEIi+0;( zI?xDYEyu43em*@PtT*d-4gu_oQ@PL^?@-^=>X{ASpt4q!>vY>y~ zZs~az4t6WOOfb#>G3*pxi@sjVY|zvu=bFBn^>rJ_@u>u0+GYs0dWoHNUI{$xHQ?oA zy{%p+c_jt@4o~>`V0zx;c3w-qT#rLum4W`=TlvJuzzo<;ux!tqe^K|M zrqv#B5f7Y}0xg5JLUD4&DO=lzaD!*sVC&B0BlqHobXD!CcW)puE7>*EH(g8X%G~G+&%@b07NrY1m`< zT-U6#%U+&&d-!QwPW>f09CAP6m9O4)#5!Qz>&t22yEC#aaZ&p-K6L7UkYf^9ig=A# zB8x2@ei%_%r*6?EXe#xYC9A(bY8DEe1Qj^Xy{KJ;T4@3xJ`P)-(KQVLWlrvZ^Fn@l zDxyZ=HyckydT1G?fjlk4;{VsK&5^bJw$)O6sANWYW;72vRhKwjP(~f!>X8uI-*-ub z1q<<;Trc^0C)>~tr7xs1qcKK z)_`}fna1gQiFzL@`S>>6p+Lz6!TApOMgDLd)SLdo;!t!mRJ9je621v*O{ zF_d2G4z97`uIhoQCWg;W5;tAzy3FRHM;=&WO6AtBj&7Tj@m=&AG5;utoc$GXxMgQu zbDD(!Za(SD&_|;#p&xa3(g6d~PG<{=F5WlFax^XiIOFR!3uSW#NC6!lWQ4Q22^V@3 z$g3fEh4yWOtPSjE9qPH8tX2BwUug^OejupE7{;0Ijo0Qq;`Vb7{s;4J{z;4ZJ}?&0 zsMI$BPpIFVH9W9oGU&zZx89qhR7J^Bch+*wbA~#Hk>m6SYPa{iJm4~Y+=6;O3__@9`Wxo>|3On|1^s4&S=R0pm2mcGv7ArgEz*RW z#xAn6^SS6{=8R&%$p{$Y%I1KJrS4w_6TA`(i7>~g_>t^da`H53r}xl3Gnbd9`WY&k z1a0V**v`qtLyjCC%y1JnpZ(Oz4T}J{gwLdk79TM{CkUj zE*3&>+*-1|qT-wgK}M858NuP+_7UJBdS#xEL|Es5p-F9oxGF=Ypos0mvnr4W?Dbz} zsN^rQ+V310qqYQ*eK{>H-TH+h_gck?-sNj5SW)M;OW9okEMNUwfraQ=e~n7lHETUOFNl@QYCX$0N-8X?I5d zTe}`n=EkfXW`bJVXSU!W9Ab1$ImGtXqCII2IC~0!*IJ<5@pXW7C0{?f>-%lTco?$< zO|=2q@mC|KS830>u(qWovbXco?=szn6W>xiFP&=zo6Z!K=zm{E{{s^%_qm}2xYYmU zPy$bBPbYa7unO$4gm$$f@Yl=GExk8yalmQoPz`T~1p2M5KX2YW+VDguKOa~~9hfe? z8SGW8BT7KA3nhli0q|mmbMBC46T)sK2TN9o1(DwTqtv!`mR6%%j;{V2N;&)=c=yFD zD$#lRdok_sy;aBKCzV7FXMPoAP4~n59yd9JvZUvx)_=`+vo{$oZf~BZwbTc?tz-mJ z4Esi2=M|m%iF_7+d|NZBh@pTE;=m}79vd$41RTYSyjD@hP-3ou%C$#^ir2enQIco_ z46oiTJHJveUP-5B?IJ)&wY3fiwE*F*ajl2e2}sc5Y?OEcXe*^}xt+}ajcyYApA_>W zx;fkUFD=NsmN2#Ia|>i*K5%Klq=) zS*hK_Ly_1bHV-1N`M96nFZd)-rNh%qy0wUHz+b(nJl!LrN9C1Y8q9tH9&7jXeRzIoBoRCa zfAiqDS3F|3IskvQGxbh6261kR`qIpH@^$T_`TWG3J~i=*dty6N=evK$EdPUBKbxFV zIxr?QV!3>v?LoS6H0jTl44`*j+dVriL9qKLuU!1~Yrg5XYlhhn&@X%5TEqaoBO%5u zo;3eTb;=9Q7nsUwu*XnHg+gVoWXZ`l&x+u?KEW+uqsR2Eq2={byOhgQGPCGH&29B` zi%Zbcp3;KS@;y zNsJiAiAS$If8Jv3)t8aLE1$3W{DX43{ri7GF~5hE-oIft)7RUcksT4?H1L6>abIsa ziq`;<$RlH7r2YAwP-7ugU>@)=da5%f?Yiy71BThG7)r>oe4bG7yV)41pI5$sw7_xR9Ap-@^G1JzfJYYw{=a0H>THUKsN zitc;;eELuf4LE2U@WTCN3qd~eKM3c|-SkKM=KQ1mPkfpFZ`iULWBVM}009>YEh+Ud zy1D*M!`-k;?vtrsl`?}#e3wDDwu6Q}>t1c;4aN=6NPWvt7W)K_@WyBWgG}is-ga)zy=gI z;M3B*9J#HcQ&_M(?z&PCaVRmr-LU)I$Cv8{SlN=keNa9hWZR8XeMU?y}T*VMW%={aD4Ui{;e6 zN37sIAID+QMQ*K+5%{!wygTLe*>Kb77!9mo_I+E?pcTX8k8GSOYpKzxSyH#Vwp+jJc$+BIrfpG zqaNVj#`N?V`*q^%kL_2<`cC!=)HVAtY{OFGc!)e~2=Lv*!UM)5l)7(1 zNg>8$74Z(AYR>l-IKugdcI4AGSkB^&M+%!{33`hO0_CG_)D?$iUrqIMSy(8lB zM<5HW{vpvqxTaPR=@#@QdgbVwxmEfcU4h}@p8Ww(K+B#7YqDLGJtqfydTer?wlW0> z2jrGl+pQ{_a3!LBG+t!euC!g-nKfsBoWz>N7v6F8>TYEw1$s<{R%$f2x2&b`%kd#e zLjx&jH&>H-oxX7zEwWPDX6oY}_jsLE8<;3j@04AsChr|>E|+kF@RZt*54+{9bew#7 zr&xk(b(`>%7p?Y9Rc($3tz6k`x>LB1byTSfe@aza23=z=PU4DpZde(@*buT2y8(tR zf<|ptf=kSWIi+L(Y+`0=kp<1KbEys==FG|9!UH-PY#t`Wx}wP-sRQFB6{69 zAl~$p8Q&dwv9@%J1`I&HW2a;KDp}u~8Lu5_Y8FZK;u#6UNi0Wnbq|E@$h#JJM_FQR z({^&fOLv@vIBNc5Y-~p3`57L@c5!=(dG6s7u8g1!jpx#sOmPIc!^Q6v(>e3pUMP}8N$OX*llc${kL{#`U8R>sYeY#8b4<@KmDHd>3S zXNL=?^hL3d^n#~Zt&n&uXJUdbkCg&CC8ZzsykRk+rY6Ly@DEon`(74&Y88PmU8@tthPHhXhV9o(ihGv;{z zUg>GGeTF^hwF*OSAJPqlb?Ywuyg7afY2PNgw?tib4130jJJqfG%HQPpmv)QvuScys zB0jf0S)Hc0zAfnf{WGq%{G;pBU2p{FKL%yw#ZbT8hP1r7!^a_UXd9DG+O55*`+5wq zIye2A=TE|V&&hS&R(U6aRv_FFR?G1eVv(xC+NK|Th~i5r%YxvOta#lz>ow^8_sZv& z*&!P(T0*pqvOduD06u%Tqjsb1Q|V(Ej2 zZ05oUx2LM-Fy8YaLofNugx} zUcf;JX!<%_vYF z9#)&QHVm<_@^;h>u;Bep%HymaL0F2nT24wxe7t4Fc(Hr$H6`RmX#wh0A}x)=rj*mF0Y^iw6`M$BBV%PJNBBw3o-R zoHrPO$+HzVHmSsnZ^*Z^wJj_-Vj8B@q6t=t!tBZ~9?w4?EPR=E0dCKUUI+GXU7~Z2 z70>C&iL=TidL8z^gFKsD`GQ1DaU5smcQ8{G?_l*Fxy4LUz4hEt3sx3!7aG+N#fKK! z^ewgMdWhV<#KE%%%lY>Fe2^BL`7`Y91K8c`7B>bnRC}mV zmwVD2G;aqA zw5GjRzH2*Hw?(#{AJK6e5&F1g6Ra;l47~ja0;S1fBof5u2ROo86QjZoUPN&nJadbG zh31oR&bo&%ljHC@K9saLEnv)MLe+WWEb_#4r1s^;@`Q>nUL{)(n4OJUV7);&LL0{* zi!7#O`{AQ=7jXHyL*+!T4BKoc{v7oTW>UiX;NjppUgX7NOY&O52lD~g1v~0g$ve&( z(*=LPCsN`hdo1T}rHji+9hT(F<@q!-i#25z7B??tJ#UqF=VApZ&-%1HrXBxHh`4nZ z##f@@7J)Y2PCMv$;80us)%U%q059btmNVegK3udWx!{pxldHf|x%uBs;eTvdl&jJPKyc7O?6!BdmD3&GsIDjtk-D)b6dM#V+}-O>tJj^ zS_99h&Fd%Eu$=U~O+@SFjh_LOEDlGW(_I?F7D}>QPP!|II4{!MM`(cyf9ATkQXtVm zdT{CU-02{i>S8%n_77`O(k)jFzjl!(yfztAA}&snANOfbb6t*4NcO&7p-(QTQTu>- zF`o`_doE?ctL3*3VV*#Yl)EvTlbAqG!eev4T+R4lTkWNgEn>HmwHLbMIKoI1UYNXz zYYe%3#HHD+Mw=|?l6Br~E?NobJkCaPP~5kpL;w9Iw5PFoYuzZf1#-bm4w{k|jKT zyld{5YCb-Iek$4%-#!XSyV|iUQZW|dp?lsQj(ZxYBI!_{bos!KP#(69G6TLqD2xGAd5kw@>{o>U7i#L8#PlXwaUwuyDwOf+ZqKFOwgG;Z6 zy&`&95WR;qXam*CP^CpYQ7O0@czaU8L7NaYxO8`;2SoTBhZ_V9X1rflkt4$RlM&fX z0C^-9wKGAsIILXDeFNSgoFY9LK_MCOI}$Y)$6M`s;DmByqCOo?XMf}%iP92D}_PQ{R5&nAF|qgjIZW$uB`Y+#6#n~71iBkD4uJ|u>HkddrqExWR+9R zqU~!?^pV<+KDU+eX<_IIhUK=hm;lxe-{~2(JDi56HKZ>1R7Y=3R!~ z`s0^=J=V9k7t1fOuak$!1*Z?$d{QH}+~Svbq+ssGvg`~aw}(Q5@Cei1n>#UM1Fbf+ zUi|6i8IMbsDzjej&L_a~p5*DTJ4WuN^lldh|!xFhmcw6mU>hiUR z>dyBV{j=l*0+(l47^Wm#ot^O3Ww=t`#^BO?ip7H4=6(eCGTVtSQvn7AR=JGYCH36y zcFS{jIa8JIU{&8g3PQy;GA$na3kU-7*+{8&8^o45{-XSvS zS_Em|voBsu2wFo$L$;j8_zo@&us8sxSm}Ycl4f4PO!9uEB@{>Fit7Y77JRpH3fj*x zpCxHan6uzrXFQ;Ldl$ARa^kHSB%$}|NvK!wzoseiUqwkti5m?TsFsYe0jh^*FnHlF zXIUXiGS*Ju^lacD#Pc-utfF2@-O}unPtzvfP?3_JD=va|q3)M5HNFWQS_wIS?g?H> zjUbX_B@0DR3yvVrVSsDT4IRxNGdrOnk&KK8aX5b9AjEj(G7DPy5gnukmnH=2Ekoj5 zy;>gaCKr^HRLDVy@8Utor@O7`fvS52)J%sz&2KpjKU}TqdcmndQnu0P# zHCqza(6g1aUH@Mc&_Wc;icS34Y7XM)ZEvmlLm}rmxs^Le97P{%i<2%xOf~N{L>g~} zL9Q%?pV^`>xCcvV$_fx^7e%K+JNva}u!04&Y|`7y)RPo51w^699S14 zFr=-ewNXv^=A=M9l#4ls#+R+&MT(F28kx;Khdz9g;h5;UU1D`lM`SS)yLQ{pEj{xH zb~KhrSei<#{Ro?FOEW~Cg+N7BqASw$0ZuxzDHp|;LQHvJm*lG#j47eGd)b$-XW~p3 zl4}=h;aG;qpB)i8&J?|_X{^=`!RP-d#w6|gcE~Q$ zT_WE*Wr9yG(W~kZ&T2Je1D!HWac1O#!^01dVs=7Jgc$zNJU$SlMJ@*`xVJ$7ou2L& z^S%`?+EyQ9aL%pRP0*&gU95hqjcBde=fewJ?0Rf~iZ(C8!EtmhCYzsTHp1#`+PwH> zb+y7#vmKjUlV)ZVFjfTZcm`w;eE^-Y9V_8S6usS3(EX}RoaHBU3WFhSWWT^wHc25? zJhV$1*5gK|x|Ib+@4_+m_;lgs1|2g@yKbuxsZWmw(S>;Sha9@*?&K)*^rsDgE95@V zBIvzSu4#9LU*Bb-wTmPL$9|}&A^F#xS|Wn7;Aw2HcoCzM{tr%AuhRE}c$V|(R~52n zTW3eEe?#6AHQ|(=ge{Yk_cyN?ejavneg4y@nk^2InSse)*$G_2YOXy2mrq&=lWX%I zwlk>#256G;Vh#`{H#1A3{j19+Q{24D@)}UrfP9)hl_%8L)NQ^xu+oOWcFLkvh%5++ zSd|%IuXmn`k;Wkws}6t6fs9*{YF-*G36k|Z%+_quO+UyzvQCY&wvX^L(~B(&0zbli zVA|zs-WmFbTdgfdl7j!(L6w&RdElN%LuC67Mv7u0g254n4Wqv`YhT>(Fm_TcHM!$#4w)r;r_Y1FF@?%rD#5TVcvz#G}@FWx)`n1#k0tfYv zTCo!{Jpg_6_KJD6#j5y5FU?h*+xEzg`Pil;j^uAikoqQs3d*47Lan?M6WBC<0}-5+ zAl&r8)geKP3CXTr@mgfewX;E+N(oU|N)(_AA{1Ebr(Lx0HLK-@09iZ_$HoX=vxhuL zl7wtlE%FTRI@iA6vTk|*MfB1m!{hOim!70hu2)|)Tp&Tf*T=M`3b&ZYX?NOU?&9KGoOF0TB`L!utbCMM2z zzjBDRu*Dx^z6mLY0rYHXCfb)9pC7%t* z|9@F)H)a(z*=`1mDZZW;@iA#O+QT>pYq=qFPv4IzG3vcOx%uR$ofuzw{>CHzW-e1l zNw}%T*KEoU01dsQP0;>8)YyI>c?j>2(+^_$ZyVEL@_#V}&XT7+>r7>q=2XuO6CPuja2borU`` z)L)~nYGjS-e^-A`G=4m@Gk3ug0mY}UgX^N|ZD>*J;hr0_kkjaJ{4xfjxB*)>omD5& zOU=m07*3~yrkaK+p>Pp2IbUSa$q^=##f&&9$d_rhs{Vcoby4N`Vgg|cq-Olc`)@*c zFJ}B9!pzJ2en9?-QSryw&hsG?Z#bfCMZf7RxtGj;pB;yZ|!2B$Hnw9j7A4$rck|k(E zrvAx%{Jp-K>GX{LCATcIkrP=FEYT);1d9^9F^xStm2Lu&M@;ihNs-kvo7HLV1xb zI@CMa(GP*V*fV%wMl5kxVaL|Vr2#KoS@9dtd>QL=OE-#zyI2;>qz zNN)O|tZ3okQ*#n02X@y1t zKgYPjhuQJ$gi)y4jn<$)c9pZ2>q zLElfw&SI;{UACf=)T}(WWA5}IpeKpjy5yg*zif_<0C3H$LD%$E>YJsV_{Cp9gZbED z@wdH=2hcoM7Z>BcuM}d7uSMU`u<@RhnXs+(vsLW?f8`v3>ggcX@6p5AS-`;-#EWFc z{viU>&2%!Hi&`ETk((SNKbNYIFcR;30^$#lJ3^*e_gsuoLZ4DBg#}9%6YkpSYSs@} zz+@wclW!0V+j)(`0W9Uq-K8V*o}iU0B~_%s}-t-D_b?;&^a+7T`&plj3~ z{Ezkae{YJM81hidAN6=FL#GGn<(&PcF-VAHq~^h@+>*#J%T;Cz)v~Qv5X}#;Oud&$ z92<&Gp9jKrGOs~v1Z|u>^78T;kI%V2!PjxdPCC~ma+U~P+=xsYgA6#Tg> z_Ph>0PVP`>L>eRm*Eadxv+KW8IcYXUQoSBowP~^}bxc%{4IA(+bcRI#*I{rD#ec?dGuIz-00aMz+Hdm#Ml4g#C867isN{`keUS8w&TyIZZ5$Q zm=ch92Cl-#Gh6GML9Oqz_V-#J{&;sF;JGP&!i+9MGV67DqUD-6!Z21O=c4rra;RUB zo#F)?VVg(0sc!LjOukonW7-e#q*S8PH7J2V8}QtJq9NbN1A;5?bCGX8>%SIMKz}T= zOK)kg24T=di57tu*=xv1g-9|CN*wtB=YDv1O`cTxUvT2P{t)Yy<#@P&a44PV1p}8h zz{zjFO;3b;HRpGGkX{5|qUAZcB(C=M@aoyK{5>IfG9T<{`HmRRC5jaP?ONmld$mWX zx$j~^!=<3>N;>4=-8oGLLHtPZdw2~-m>vT{DV{<#|3aN0NBr?|!)>z1psGhIwBt|2 zdY(7yJ*T~xUiA`;D$p4xqhIP1^>=Gw#6z?%OvZznKDNU&UkOChiL&l;ed`u;WGpJ{Fo;-T=|Ndhr0O zbZyA2*SenvwH%7+8xM;2df-=4c*hzP0{f+?sQCz%({?eBy@JjiM_*Ri@)L$4`n#1s#?ayC~uNm;f>8A;L`+#zz4YRIV7Bx|T!R>3&l zgO->lx;f+3#5_>16S6&s=;h_2ILIE&ixB+wzLr{nwDH*y^0HV+XIq8*t}MmsbU;3k zXbB&}eMzfO9PDGZ_&dVG-P!J|fpk3krJc4_5~!CUcEYwu6`tt*l zdb$yN@(RMm(fj@CWq1WDDmejap6B8%)|(v`6M)nrcq9|O!Vi~Yl044^YZn^sCfBYm z8p(KI&k6a}YoUP0N60&7xN&S)&WFNZf747N#{izHX=fUt^HuT6c_Rms;#)%cfr+a= zIM2pj>35FqkcnR?0BpdNkapw|#ZdvtdBsd2bEhEEUu82IaCNl(A+ci9x)e1%W30}y zFB}B1NXB`A;Ae(mE1{V$^3GzxbK*oO$H*!H&PDc*Nk)aiJM#)M9qsUkzsg0gqng(M zeI1_bD)>&>z~VX4V$?Ba1H}YOF&SK1ZYbO2cZHLDK))4OoWVhVl}Af8Nx4KN$fi_B z0TiMf!h!nYMl7Q`auDIh5y}RR+Ks|N3Ws#n8&~Yefx#z ztyxz7Pe{Sd#Pi~eQ234cN#f%|9ZA%nbd^1Ix2zGsh5(gHJbC(PF0mkO@mvc~^*Bc6 zTB|OWVmZX8KG0{IH`Pi@LQEW<9gsplNKlDHW|B&x7YvFOrq{y+HIQJ>v>ou&)rOpqR`ky@BC+c3iNf#(iREdl9VZlYa0 zL&AHH=S**T<#KykUT$uDhMU{8uK4?quid@Wbr%kmeTAG6kLoh?r4(@Y!x6acGF`_@ zJ?!+S>p52aLDC`z>*rw}Su7!x=S@5I4MhqfgKsYkF0CRNfjfN`kU{5g?U|sIX?)&} zY5Q?dya}&I9?$P;8AsXr>}DnsGloxVlGb85ed_iAlx87+i~(k&aqQc!j6ENoI*!$G zyV4WdaCghGmzQ&PKQY)R>~N?p9W=JD+`jOw<7d|Xd)nGjo1EPKeLK1KlGdN)qe*~^ zktb8=DT38$A*yfsECVJfwQi09i`FssgAB>zBNG{bZG!L|teulOJdGRgNZF41~q{0S=Vn?ds)lHyq<@W&K47WBXJZ(xH;ucIi+2 zRj&IlLj)oqU6Mx4FGkUs&v5N|?8FvYpE)DAOw7zO@@jX3c$QgUvbeg+-jJR&YfH{2 z&0#zD@d+GSX#XLBH+gO}UppTln(@4`?_cT|L@b)Re_a&g>ph<~W$``+YC}l$<~B*@ zjk!d=8_M|ovS^aiJ{~KM`qMxIsyrhqodQ_QPzfa#HtC8`&Eum$i(2S#*ZvtV^6;)5 zvicPZ{*?a}dHR80&kH6Hls}w{M2SSNYbmH=z=hR3zzljF-dBiWkz*h=F(9=Ac>>Hq z!|HVTC%9Fd@5*#_-MXwLYWX~1`p?o|0EmNjr0tqq6ri9>(o;h#^bdLZET2n`fb8@V zM0y)z`>3v7{)cNPo!TY&MrpCJv6Q0^7?(i=(PD;`ARo9EbGmN9NJumyYe4!gr@n+! z$$%n9=eM50DoJCRlKG?%qUiWKwFp21tJHkJC(o^O1BD+;xjVSDMggvMAQ1nMP^4b; zI_&TcNB9tY>@^*4KO)WxP+8Ns9wQ-a*QBEa0st2OHA?Um=!>W87J>#rzfc<%{tGBj z{Lg>_iGxHe<@P>O#+j?&x1>yK^pcJKWx27NU@X~2VVZs`*WI5DfIEGva3bg?gP;ckx}44 zkhds??S3i)zsTabP1K7xoOfsVeQkIYJ0-p8&oX-SKJHLn z!FmoJ%_kNf+$>JXr(1=(FDjsqD>p6SypZ`}ZS#*4IXSLgqHu$TJVH)`Ok+>hI!uYK zx;XIO-YK>iHmj#URIaMJ#9R@^S#gd(i*PQA{0@{sSj8Ps`IvuEziIZ1E}#&Jv*lq~ zS=q?*{`3Uk`{BwrqIJsI>717TBUf?^L<;jhFDS=^FQPflh76xR(z6c&*Y855Zy*5j zXSeI?*ZBh(phM%=(EE&dC$Ynv6T`+fv&Q~M5erETq>5o&E0FGE&+gi5v5;CI?P&(d zp@vm{f%7mxa!IB>ZO9%AfpQ4bE-<*1_^_NM_KKo}OENqeQ%Dgq`2|{`3e8GGP8@O8S1@vAFx%^}bpZK{&LO|f4 z2Ly4x`GC;a@<}HpAaS7#=>jyDq>o|UTOa68jq5Q=KTQ~;%#C#WZO&0QGc&UzgdV6q z)IIUx0a1gOp#Vl3*g^DMa!lIy{sm`lv60z&uHiC({;8nEX;@sEETV&Jk%D3&R9JaH zU@(fAv@K%O25R=(~1JtB58cXJR3%Vkh>h#sGUV*BUSi#y*|nBJi4j4#;R#>U1u8unGR zL2pfp+SAmoZ=HEuHnIX1=iUv&Lr2#DC$7tC?Q3UMDlm0~u_R$Gjf^nlM+ zRet27lI3!|ZSZL`9*H*-W55*cg#+F-Q3`x3zEx@oVMKP7UU7#giZ{-~q@2KVR^f-^ z76~ERT7?}l)DNPKNRl3o&~QBXx)QL`JkGQCh@rx#}VR~>VGCX&H z0WWZ2WT?PZz8f8NfrZCCaMXj@ElE-Kg!n32zit3@_XKHMTW z(7DG4NF32i&28y2$$2fF-a3>aBd|Nu6KZT+B921anL?0cgj>37SxVQ&;U-!J)%pp~ z(UCiu59{^+rj0}hW@;AsCVpLiu)CXyFj+n5N{$vpns4bHW~}+@A{KmOxbSO2RgZ2 zG&Eo5>pXyJW8%ZW(pZI0?+g-pCqEXStp2)tB;UbpGHzKsfL%fd5Sr^KOMbRS) zAFG|i`xOH`1}JQ<-Ptaq$ESma0j--SE@cmrsS#^YbjHoWfsgZ9XD3Ne;uURZdVA(! zmig`h9dGhyEN9ZT=k6m)=m)t*^FV_DQ5ayHTl-WKFVh5Qk$L`<^9_sd`dZ|UlJgzi zF%U9o4IrWnXuEI!ikX!5RvAr}2iWW-uZ~up;qjb;w@E<1{qPTCVXH?!FSmzKlccXj za9j=m>o(!}_6cxlZ#3bl-)>7S3^24uyR{HeLueDu!(FJY<fjpgixP^)*Y~bs=_{ARM4#Vp>Glky z!P3tKk-fX;5kF}_{0^}OPdd+-59LxPhs*Y;4Jx-a9zH*L7Q=Sd!F}n`^8(L2eLtJ` zwuZ`Q6?G_yqa#ux74N7S7yM*kDloiNQ~x-|m-ZDiTsw6*GB*c2MJIuRPm+IqicUjhWi zp(mDs$lv0-o_BSz7wAOfoL;*LC7=0&SoAOawHBCoBQuXZp+J*VD}3+W3UWHdN8-$M zTCOj(9PX7EFH+ZT;pfM2oBPOUo zGsxIfcsZN%npsS4R$f;M0Q3|8d3KsAwDQ1nr-k4Z;N~Zh04_9y%{6n|3)KOIZgKQS zUS8VOIrwD%ZhAj}@#~-c03$#90qE1Q|Dqp&uoinfui#^Q2*ygGk(-+tFRM+tdJkH; zB2|i^KX(bC;)6TWO1fZ0wX^{q)gxG)3D?mF_Bq6q-H?B8E#n~6@XoYf=$0ka1ej*# zs;3u3R%J8eIcz&Yx9NJ%Y)9ICZ;Mec!8)-f{P2?s3PUf)OmEpt3#V$6V@?=#L_H07 zV7#GsxiG1AZqER-}YP`g71fWNK&3Wi?%eA}f6dx}XFrmdI^HAE&xsAq$F3K0V z*@6mn%VT`UrRW`3xR`m&Z;fI!@!oQ~y|!Thwq*Q(-J}rVR99E4JkWlpY`zW?O?z4#cfTee3frR#{D^mddL^teQ%LYB_kRWuVg0|{9?Q*J8^_tC=H_|U{ z<7pqmavEIOVaY)~W12tR9{cp5<_$*U5PesH#A-_Vx7fiyYkc_MC=4Vt7GXJ;PxYw> zt;gzQITz)EI%ohIa6l_0YN%Bh3>@1BWrH#M&*_^+pgSy?xgY};~4z;br{CBTKxrc?bmEvLlDf& z>dLJbM5YjWV?ft$jRE0L<|_heI(9U1OIb_|!zKpGBS*VNcIT@X(>trT+3mfdRYv$ASA1?{R|(5?Z#53OBVN`D0!JR9Tx2cN>la+)b~ zV#AA(r-F#A_nhlXLW;%-I(Eoro5rt?4KaV1_%IJZM=zf-zQ^Z~%5e z65mE*i3S~!->DlQALmBeptl^zFk<1$QmFp$fCmh;hYl`HzgUaqWdHU}@JEoWc)fwn zYbcA*@6R5wNWh&j9(}@bQcsq??q`o**f1cY^|O%h%v3~q-?Z>|E%MnL8|b}Eq%CwZ zG2~Y>lgqZcvsD8Nl|iQRXg6iK896a$@TR)Qx%p@*tGNgp5cbJuv>oE*Qmd4Xl{ZZz zvS8olyKhJvJOTNFT<-^+=x)1rUq$425p_vWeTD6YkAwjLrRG#H+2UrRW9GrN!b0%(pM}o)S!~S~(-~Y279c96@RW<4pmK5YAw+f8Zi5%X}ct*TxKk zkhX&an(|GPOVxLZ)OKj$2o=fQb)Q#49dsD0QysjeJMguTrD-~-=bgh3Nq@X;bmXC} zg*z@f5%dFs(C-W4)|W3|a#&bsXCJ^3EY6-|G#3(pzX_kv-2621L# zB2g*cS!1UPhE2uc!_^8qIO!+Lu#}t>D*8QoInqXdxK&#P!R&`hq)VzK&43R{7s2?J z^J%e!@K5G-l}j|o>5(zYG9R82MsC#i>?3z*=w!`73rXwdtNe$OMaqeUYw2|RgV)Jp z!x^87ph4O9{INS>={zG37A*9PK|-vB4eSIB5pn@AX06N|vmoihFk3;oM8625ow$ zED+308X4c0_Ug4zg41F+5)+`5*~EF-=WaRwgw{q!NsX$oJ%xfID7v>8z7{kbjF?}W z%~@QaDdqE*2?nA9BPYoNb26cRe;J*ic<_qhu$Oh8w)xTTbhfc6Qpu3&;nv z|8J-Sj_m=qJXk+xEiVrE9cMW|xr3KRLeoI)!NrTbN-WkLXEnYH=h*d`qUMu=2?L*m zt-0PQ$1!ZAxQ$*TkKWkcg13D1#(JU3S99xIgI&T0Zx&O#kgnO2d&wqWNB{7DlaTG- z?a@9lVmNM7lar+LkCZRF$uY+tCk||DI)SG(hjES7IE_MUqCyw6FkNRLMKB2>UtNP- zFg@AUwhq6)vQkA!=OV3r(i4eXJXa7w`fz)@4%rZ{?tNYiTb3T>s**MRC>fg=TbYnS=z~{-a znQoG#@qp;yTZL8(R$!%wC<>;#X~7!;6I2AGIt0SGxaM z&wnC*Q+p%9w9u8;BNr?grL5v~O388=wfzdp2b0O)T7u|QKWKsfE!7|Q01m>`V%h{P{_ZsSaq`e1n1DR8+*yYK9OJFLz?b)6iXTL^9QKE5pEo_)}(bo zqm#8xg4(IDFC#wMglGWGGUK=3YyP;beKWw9m()I`J(-w?%#Q7xb)Xm;U*ro|qmi9% zkI*q=wtwl~b-Q_xb)k0*NNuk6u|)}&$-bqLb$ql!pvnIPGSG?r@Sntf3G$QJZ~ALu z|JZ&|Zr`>`8uJYSNiX!I`dx%dx&?NY{n^Qi|3loHfJ5E?ecu@h$r6>F?36XzSTadj zQYb|vlp-NxU&4$%WyzjBNeWq#U1Lz$Df@0@OLiKJ*`Duoo;v^cb=}w1|9+nPxSr!U zkK;Vg%E<5cT|UeE{rY$vNC!PIo`tKBt}&p7E6kIn?viLxww9o>E2ETk4e6oJt=aK@ z4U-QYEw8So@jEqr4%36$P}&}=V1a!6jv_ZzBv!jqBBqUI0kLiKg3mg5Xw{HbbXe zshdg!cewENk$DFH&{Py|%+7S!@MFqZbi<=vU1$?9fJLw}{_tln0zy|AmDxQufH@uf z0FMTL6$>5{Q;HMy!5w(!ij`(!eP-Xuzr_)Y0-zAD z!H<~-Gz;M9^Ut}z2+gMW9AG^2Ui+s zm@N5A#%n;Li9aNkxcS#5%Rq$Nj5`9B^m;Bm)U8b!^M(_Cra^|pskOp4Gq@bTIJkTt z7{fp#hU3!0U;7{v8V_FWv7&i9bc2%c)K7so7Jsi|=&`^AWYapZKt(8SMdiPxP6o&O zIqu)D6`Wo)e>lBLXj!SQ z>_L!B^sNCfhnnkT`bQ&*)$|)^!E*sCAAi%G*T|-r$0cN3GRRi0luaT(j)1h}8t#Ck z%z2<<4Z_jylDL|@~_IZ)ylo5`0W|I=8z5@`@q5KIkS5^|Xp@_@M*gkS!XAkj{v zyz;i3I|tII+mxX-azKkhIj$X2sOI}X(^cJ$%1&?nfMlsIdf4?50&mACvi%}1-P@U% zQwkcb;liN5DV)705gfQk;iX{b$$kN=e}S+PN}Y|Ic=LuRVr8a(qLAX>m_^3 z2b2E0BZ9!4#-!b&$k62ue6G&v{Rgmd`*8q;bKR8HfL?R*P-?iPHd;X80 zK}Rm6qLF`kA}fF{5ZYE;^%N=bQh(y6RxEDA>w2 zyqm|}(jUnKi)M~EpyP}H62Uy`P>n5meS>kU6o33c|9*CQ=-rZTJygTttS3k}$MrDN z7!a20CVt%vE5ctfMclWtnZ5z!H=qvL-Wepndb9;T4_hQwPet?IA(@9$r0 z*rl|1rX-{#(>2ANF}FP5J}JdC>8C)C~@< zCw|nKl*R6_-px}(lU773B1SEeF|_1`Dn{V}OG|Xa8Sz2k1J}Y+gs8-H^!BXoB_{u* z)B{7xuPUN@7b$JP(0|&15*l*ie{dK@Avf2ing&;%iFs~Or4t=|fVA!qw6nZ;uK^%Q zfvT;3t%Hp!4=uGbcFphL5m?^R>i&MQzmHErxI2Wb)lB!w`>D#sMipi%T5miL0vMFA z9Ra~P052j*#2RzVS8A-;i667-x{RXwXnYJlAUv@almKKo)u(*tp4KYQ?z-YRN4K>< z1TqJ#Ats&Z__GXafpOml1gb+4gEP^=Dy(qVgucD+>L5b7tK|Kf{>!`Sf7p62#P%K3 zhMLlTXxj4A-+glTKIJ$|-EX%G7WiO~4U8A`vP7t8k9?c80MW_vn}bk?1ZOmePsI}? zzivj15hVsq-_@g3Zr~0$ECbOEHGhs_83mp-cEs^YGn%A}ZcxqAefzrV?`qE@^g+74 zJ~>C`Uz_{V|NG4y{(p^kht8*S?+gfTFu<{tT|GB^HWidAlH6Fk)ImSn+;z#HCcW5n z)Q?}u?|p7D(k*h>d7s?^C%nrHMb&N01|K*vffNC$`3TwpvAx;i4@i8Uv!;mcZy42 zU+A}z=CpTR@6SY&Kc!(QNVarMjpqzCM_BjhX3tX2fGXES&GN+MA?2Y@wMvU_yc3fu zP0{~~!~;;k#!#snT;CF1nxy9Hm$rzD1Lp<>Vl1#15m;ZMi3a)ePP;I$sq#b~2e&p*UMKK)DNqA_ zNW+$a4q9bkN%{Hv1f&~1(4A%m{lepUQ&<&op%5llfZ_oD*7p?2#J(?W`4L}ESmRA~2C=KZmH<$0|K&5FECC4&Qp>VY1qOn-j+&(3~Yu@m0!eaOtlHsJjmhJK;!GVQ4PSZEDoi>1*b$GC$6;5B}OP)A8XY@+nBCnPECJwx|02CkzyEa%2>(6?{ymv}@P3}m z$s$^x4*f)PE9S=TbxrRdzS}N0$u%So;-=?!E8cOZ4*?^^{9p|mU)1mkD)tz6oWM$t zZEWj5&H@Zmq5i$THjyS8NaKuv5eIZCCWw;I%`RlTnxzb8s5o;2RO5hz`pAVOu*d;; z2>lS?&EGs$uJfdXe0qRERu~^o$q0y`aNhu@3crDFUKwu(gtf>{N)BJs{p{4<_sRGd z;r-t~`wXQd!65MaXZPP>dvD7Y_4-}R$MXLc%i|AfvZr2G+yjj6^ITa>?Bj2pbIj|B zPy61fynZrCI$9Q-v#2v@So-qCV2mZKN+@+Ujzp~T+P3s3;SO+fzzHyX8LSrfT?bZ! zBh14P$EP^1j#ef&{Ic~Yz6$%jgTM$7RKvzr1sx*B-<$J+0^Mg;iU{fepqo(eJ#wlO z3CJ=7aE)HxIC^zn72lZ)QlV9c!*GL}d&zDaVqTaB(Y>*}@xf84X@-007BC>Ve4E}T zoTaw|EOuE@dMHjl$8s;f=Y>#6@*t8B8Nf&g{wKEaxKQyO%c4KAjVY)-`Kx=Vy=u3l z^J zm0RJ zJCVTzLrn6Xhk_+A@t0zs<$^TooS4loAlZ|fUfjdvF6?sI28E*OzhhiOocq(ANhw_} zf#xRO`2E}Ay4{{p-b*J}OiwMF@JSoKwd%EZk*o77PZSHN3HZ7Dbumxy%dS@gIp@~M zTXiDd#e^I%298g=5y14=N0VxooSNILMWETxoTB;~2Qrbl=moW_-EXbkF25I`HBb^5i_ zZF}D2 zxUu+}06^Q(xo`FYrosr&!HJZ>Dqi*Hvo!E^NA#OaB8lyH9m6+lttqK1i$Qwk8r|0zJ&@Hx2%{h`8E3s~P~ z2ipcB57v^zj}@ASzZesLg|&ekE)YLfe3SU(3TG^-!1KlR!Ck{l^dZ;Ty6AQo$AXSMWEC5;7HlxkZ%I_-fz`u1gy*lJlK>WeX4(LN-pKcuXj2V zJ{J#K(cZB_XfPKG)oFn1f#Bv}bq@ddcDTa>A@CW!yK;e#t{r(Yn7J}(<(TDMQe0eo zgZyebb+^k4RfY?-+6mQeoVp0zQ9bdHcuNgrjK48t>5#zkgHY>AA_Bd648GMooJq7L zQpmB2)Lmu$twk5GsQhtOS5W9*KanwkPVAHtSGz-ggaTyH%2EiwGJ zlv$o2BI?%q^qt^9bd~sa1UDtHT1;pwc0_F?7CVx@$B^!AevJum4^BCj`EaG${1h68 z*!^k0dHk6QY(ofk1tD^fkH)YXlYMHdHFPj5CI|M|<@A<|Kfm3>A946u&uRp}4&unP z@6zovY)Qt5{Uw)&%k~}&~^5-F5j$ABdE{^H;UvW!=?F7T_ z2|tnvSbu_D40dI7MG=>soded{5v4wiQ`mJ}H-dDgZ)!_lKe}FFa^9YZCF3tqHKQ8l zd?c$$&;A!K#Rz?&8Jeor%NeLWO9quEcA$?#kC960ZP5}bxC2e9Bp??1Btj3sBk<4L z?ZAX8@<{pR2~exM&@N3yI|^QPEK)wkyXmWp7zQ4b);WmUBA{FnxP;TeZ&SyIxFz)F zWc=OlJrf4%JnHq;z~@;;*rcMsi5#|=qnJavM|Hma3kVqmJVRz2f5MJ90ka+Y!5tD+ zIxKvu>3SKed)w(Pzk0`MmjGzqs=B}3=JKkaTDm>e;J*F50Y@+BpK0MCZ+1JAb$)VB z?r8fK`IwfRtv40K}^N+mN3V`yK~sywgN75GJ!<=bffBF<@OKb3&BZ+y=HO}*qn3o`eTm5=Z-oRT>mMO@QQJYBZ~0;=_r%JJS*!H!943L zF|TD&Z<7_`@7wJUb$dZrdz$=$(XP7TBGmhPOv-8TNh5X4693j?46a#qCvYez<(&Av z<6*<@;L&dP%Ln@r7f0<;hnpJx9?L56kK#TnS2P-wV+XcUoGUjwGVGMB$e%s&0qPxy z`HZ}N&u_&0gd0=A^NVq~>5=#Hu|tEjyK6@^BVFdwzGDN&#)2Hyuab#q7kffe7r!04 z8WkX+PWEQJ9VUXmb~Ot4dc_fd0d9l&?KmkAu%6{UbOP(4xz#Wm7d#m~KfX#bP#niT zOd4Ak1>hl0?TGgPK^*Su=tqQfnWF*@8a2~_t?;eg)qrZg=OZ_35~vO3-UW^OW#Z_# zb~0cumx=68uitsH9A58SAH{hOMACJLW>r%{UbO-CZ;1esjwcYw4k!F2A5;7#A5)>o z$CCb$kLkRIe5j25cf2E04N!LcJ|;-uvQ4y_U_(*sAyNCs&_O`VN4f{ zsv1z@?ACK>tE83HqFK(5Idb1_t*?@{oUi#CQh465eAh~{P)!usmMAkNhWOE&W;cN? z^7VI|_9Am`Ob+{PeQuX*wyk{kVgGUU9h(m#s?#m9 z1}0fsm-tuzm6pHwLNwJBlLYbaC8l~ zp8>HV{KX41_#8BF=f|6R|qDB*clxb!s?l|4OlVNq(__ypKj zW(EMf2KY;WvzY}9w&gYyQVjgSZ)fP6UvZ|~e-mdqKL{B=|L;OGMbt|GG!qs;cs5m2 zSkqWvSgGfSv9l?3Ahu80@$a0KL_@wlcd%u)go(c$3Zng36>uWnc2h0!OCVxP1NX+z zbWlioK0m^bPO%@6MX;w+8-<2)&74V>h_I<2;;(3;?PUohnUxcpc0B97b8Yb7n`1u9 zkhXS*EpzaL_5S{69-$S32X$IIjD}3^Pc4f57_6^G-?)&jJczlvy2_@=i*C z)S;>Kds>qbz?J>4C6J(hgEtJs)NJ--2nrPfz3rCd#(d(^$QEngu9WaS3kXboXZ9i# zIwv6i5XqLy=}66R`wetgKwd!~YdG3_Av2q!30gTd{oT&$gB78-YLw>=pX4KEO zAm^x+*0<~Nqi-u;tYu)qa3IQd%aMb8M`L~S;~uJL0_7+utG4^WqQ^q(h+K$z+SKxmr;l$-#g0Vp9Y z6f#b8>VEJLk*K|_399(F28f_VDXuiI$xBy6KLbtTH(1W?yYFvi#XF|ujkl&3MgO7A za8nfHo}pr)s{W#A?6uWmmLhnbAQFY$V4$vF=dSN(Fknkz zZvh$XB1+N79O45neJa|wn;HA_uA<>801!dOdx=uO z<<06mQV5hoJ_+SvpcTDQ$J!+atdG}#b#{h>k{>-C+_S;tX;bQwHm^0v#U%9BY(8-h zgWX_E)uDupgQ0k5XIzI(ub9+2ZMFOHmpKiDCwON363*?P)|aZ*s5SUCXD;TeOjYb3 z9^SYFXtz1oO_vPt7+Mtl#Gx{7u={IFR+a~3BIjpEapj*TH#eNt+u7FY{M70zieTOC zm7in`(VH8~gpoWiq7PMgGeh9qCw8kbzx5|pW9r*uZsDvisWt!Ni!wb;-IIJBgor@8 zTxPkgRZ&1})p42u)T5V9Dl>qeo#jWFE^0xmK;0`6DYPy+2hiJdJ-nTI&~)N~8&iP$ z|ILrJD;;8>u*n$nT>(UEK|7pGzxi2@&=){8pQ3Lfssqm7wJeU49}@aX<2t8@qi&1% zcW9=JQU>;T(<=Ru3NA$z&b$a0#O+&IpKc!AeB2(KGoj5CFp4d3Hhp9HUG)6oldKPX z9k~tpMf~_g6JO%@NoLfk{43;uACuid2pB~V|6~qGNC$}9@>#fxr}3TasI}1G;?3!6 zwq)Wj>*&juzkA8&tN~KVcaA&m9T>u<-x;(?3AI#0@)LjqRpAKu(HtsEqIFoh2fq#GXr&{d4@ zV*SsfaN!Aed2rTrig)SKLqY4eZ~;iE23`RmFAE%$EO?>-H^g|48*&`tPyeq%BQQ1L zoJ}t04O&l1Z1eaZ%62%c^}f>AMSJM;E#-=0jOZCPdczv4d!Y>l>0#xB2e-lN_=>h9Sg3VdCivjvbMvlP%Fr=0| zq^X(#W0(Dy%v7O1s(}u)W$yq=cq` zBRl~B2pX@WHM`@=F!v7du>8wO@(+3RS-7B6>*ptOs3?7b$Lp-ESh+k03Tu)X0jZd@ z_=8MA1L$6=uikjijM)(!&&t2(REg^RvU^&XYJIf+wkLaR5&uotr??19m@g3%eJ@FW zcYAtb{2>-M&+TYk(o807b`Rb`tw(*NP5$K(N)*Wd=ZaaU2lILWd=(JTz@2Z)M5#u% zbd~>t%}zf`rktF+a^Q8xn5sPlvcb2Pl-arxAO>#$YC@L*`u#7^^vK?d2kI{Hm3-lp z*BqR8+`^Gp4!q|pi}EY&_i8o7hCO5I;(V(Abftj0?NXPK6y|F3M?lY-?=q|C*4Swm z6;&+{U|tur77zGlDp~Y>SLOI~%KOgS+AWpGoEwy(;rR%hmYtpQ-RixmVLhmQpju?5 zd3WKp^qySiIQ$S*9$@2K0ffPwu`&!8xEK6E8gw!cp2yO$!2L7;eBrVbrZTdlN<<8! zTgUm?1kxq@V6?mt84sGIDG@MXd(YERAwUJt3s_tNKwxF?a!)349CDg6w=D4T|JS)? zd+3lXSemJoZ*7kKC*p-y<84i|Z?F!kQqp0`#T6SL4JkjoFYzjkIazuKp>VM_F%JRj z`Y{cqy_kbBw!$- zn1CMM1c(gM@u@;*;HX(5$^<+pn*%;r?UUd+QN`L*o>v`bH_+o=4|@uC1!5;WxEkPx zrooJfU+CUnjF!B;Yv|l_8H(Vvzq|fQH|;Mfuln-T?ZrnR&P_7Ua1oE}Mf2c6y(klmLP`A@} zYMuki6)e_cV=))1Q5asF{ch2Xzitw3)3IDrn(6N!bD_+ z1HKFxs)k=icl{~kJO+o;FKN&5qo>B?!c^Hco)?VT`fuf3&^Y9Xbs&Zzp6K^K8p8AZ z-S|urDyhIvQkWwRfNL(iLAgx&o&AJ%Fg;@kpZckFJ+y%4-fdrU0OAH*(O?8xIq0_w z0rD&bR*Y{j%_sO@HL3JlodmrGWl^=~cA2OTxVde2f03x0TG%TP@(wMje=dW(dLwtC z?c{OL*4lSPX?8o`vV&uwoQ5oub~Cpg3@M^`ATTV#m^+3qRey{1PW?kJEj?g(wrWWA zHV{kY4%m$)fA#b?c=w@K>EA72fwQI5>57sc6lCG1?`~p`ayVjTWc-N_y$WdG9EEA< zM(u3p%k@SfZUQ}##aJ7EbfAyiVVV1@?s9{+ZAI6+~{UUUmn-BC+ z{{;ar2?28}o(?;|N_0N+S|6?1#RIklh_t{+tGczXWXN%oT6O=qn`uCFqN@aUUS-$;LcH~ zBpRl30so~JSLo`KiP4t-HsJbOXtmaV!~)<*I!vZPJGFslvx(EmGoxDLZM_JFb6xWU zDf>Y}JDsX8Nl5n)DGC9VQ>-B!|P>(yi+@-PKzo z_$37GXUVN}n-00T^hLG#v4^$u+mWraLZ7TA`^DDnBqfWbA@5iG7rW>3YTPbIPx!6c zY!Hiih}XFv(DbY&-!WQP9!2P-wIKr50=!OZNx{gEkXl5;lvC%=vL@5RpzbUKgrx|~ z$;tBoDq5C=Vw#DwAQSuu{>Sa^ifEx(WN8jjfq%W`h0Ka#u7-Ix?Ql?qKa~YjpTi4P z&evz(IShX%XfhPts(j}SJ@lnKD^s?SZ@w3VDb`t>cbJCf>~mRqF<@^DyqQ z2R0Bk0(t1|X`=$=>c8}S6SL)=n_Gp68=O1EvLo-Oz#Nvv5Bn_9avS040zi4WdO@7`GT&38~NO@+z9^Lafx`cS7vDpTrW+LE)Rm?^P#Y;h$up^1$ zQ2WDh=q@An7I;e8&+gEq-~Q5Od*czZ=`F|M@K|waWr%@`_v{Tf8lHT;Cqcc5bkH#e zReCW7s=P7E!vqqIjT6fBpuioH|NBinuN6Sk@c3vP?=D_rcC?$8{}4?cS)ZgL=;R%s z%}H;Q9?sM6b-NMjx^(Kh@d$X3)fN||{d?MKqVHT#(6+iz5U*jj{L;|ElSii6!;Ili z&wJL9hR2UiBf)@$!Q0k;VU4Y{=-C)yb1mLEfktH7aJEiGmawrVlzu8ta7{mreMQDO zpsF#M{cC+0{ici$DHwN-kea7J`=!nQ^L6%g!=`%29r?NQvx?}fLA?^C`(F?c{;%}` zhzmpKA+ZzR+r835V2iBX;TN7Dn_8|vpyPmqAqA}I`lunHbWjCt!2v=w+WMp+Dw_%{ zQX{ZPvyCnSR=?c6qZNrW-0wWkqrZY@t0NRAJt$8Vo-_G{tq(!N!*v&!I{L!1LX00F zje$fg>NScUx~oIhw{J=MwfO&fkp?XA!|-p}0RFc_TcM4PpweTx|4~!V`uW`}HSS~P z=Dedv?rV*xwC|=p>wS$p<-l$4S)}?l-ZlHwAbY(2jT5zZvZ9yEW-h+?S|R;mpw!|i zQj0s8X=&$7^en`U(^Nl+SE8JU+xOszWjkNx^|#Ca@qh9m{4WhauX!!+nf>Lq$64K| z0+N)JRD&O!PI-cTEKAhkJL!E#0Lo(2VR*jT*Qxk!#pW#dFb&v%!$YaE44J_#^DSJd z<)}l-c8aqG7N4;-AK+JAG5D@K1`Gb2<9vJhha~@iLh$Eo)vSt^%L~^Bm+w840$;uN zPm<5%A~CbyY7}>8C1$a_!?#N@a|DGTlL8kqPcI-8Te_PUC+VP(C9}U?40u0h-X3l_ zi^`TeCWyHj?x!Ur5r)*-ntdD;4<-y@%`Y5DFZ}BK+FuC6a?p$|-nnI>=y}`Y)JX&I zpQjk8!j~dLw8Zb|V?lN^!|fZlqKVFq9f%Hz2Zq)oxUkGB1qhQ*lKjDF8HmA(m)VcQ zXga6>)7Jgp3xgK&Q%ys}KcF?Ij1EfA8YSG>a;hQsZdP=*$FN&QN7;y8R#jnr#HXX@ zkG!jhwVluJRh3{r;pQ(_{XX}d{?@{fhJKeYm(ya818+M$BwD?2ni{HM-S^JHG8cBr zX{{9}*UB~9MJ#cfU%||udAHm@59N@3&i^x#E1o31&7o&H-$$*wo~SfF4vuS`olOgG zK5~gK$u|S$kM6_=&4n-*ys;>r&MU?BOua|E`zA9VpJ~O)$cm5B;F}#yq5ddz7)Gxp z(Ota0D!n>cw>rxuF^j8xoV8_z^7DC~s$Q+KI-NYQilm|jrqtk)huhMHtAQu3YA>2c zTfwr%*xwnRY;obF64NYSFTR_VNtw~iP{2N^3BPQ-`XNW3!PpLSO0i#&=%Te zVRcd3>CIA{ziLHyoP31#Xw6UaX4fF3(7YZ$+TM(BKo4eD?Z#bbx$Cs^nXr1MKOn4)u%F z^mjQ0VG_Dk4GzLz=b@1U4HQf)XI{gJ#I%D|e>+OJ=|8XfrCrfurnZuIoP;{NuH|`L zk-j>&d)w7s|8DY9Z>fJ$x}L(wK<=PwlD;TrE&Z6P?$Q`ZvIDy5>K(*ehvT?TXs5Mq zTnq3ymZ3J#R8Pbtm&||p3ZFP?Jhc?>8kusIIIkG?cp%AMc1xS9FR{y6?e16bf&8gdtpZ91ek1&eUqUHCHY#iMKMQ83TINMk$L=T63imZ@x2Z-ZFC) z{d(_4vgP9SE-}oPQ|MzjWUQd(7tz^zq|6ac!Rwg{FODyVh?u4`ZD!rBravb6Ak58> zc!Pj{cY19!k1v>Wlif{ZuCv5*bNS1V+Job-NAYc}9C85xMkw66$unHTbZE>8?dfFm zfcRTC7vC*fFV*Q>b`0uITM54$w;A7%HR>{VcO#khjW3}qz|8CwsamD&EtyB}To=PF zp>6usRxJO$Loh#b%f(Z#H+H3Lhq*#Ndf(F<+)9=eH2lb#A(Ql5ei!P0V+bQ_> z?SvFCQio_jm?}Z^MN=APpb2d~wE&JR9Ko#E&9rvp^GPvIHp{ZU$A3JqG^oTsp{T)s~+muUrhfqL(MXzIN;l<>tkH0o#yMO z{H6%;kU(Z8HS-(RLqpuuD9wkcu3I+c)j zF(qz9$2@lhu^R1EQjkLxtyUzqH0nhc{cy1M`J~*pHB-e`#A_a!>+qk0A%XAxFZXSF zRWwyNk@xd{p^aYbr$_kAi$m8xvP}(5+;2K^?zElJRkBKDmAmjxUgv!58e#p8+QEMB zfT(&NZN=SW;)1I=*&d%c>Vjj#*-oPTW$k-jq8&dyKKdokFiV(T>^^$7+X?R)k=LEo z0>7G^^m87@2JiJN?E2@;<_DfB1#dRaneH& z2va%mQ=b*Mh&_we6Po;@8---M^h|k__8j_+5-u#P7ch?c9+Q1+)1#MX`!d?Ip{rWdwdYEm^dChp3}OPUg}ep*t8&vkCHPnM$lD5qQ; zqGOxMJ22&7XD8-}?;nSEy*wZIVCC`r)ChA1-RXzh2VRJ}FO4(M2314{1^CCbmUCAk zo!(b!(Qfr35nl&ZhcdnQ_g}0F`VoHbD^0=L!F>6hgC|sqwlco#j$T^x%<|HjGKDZTN6~-;$5;(k=+`axo%Z0X>*AVnPY_*sZ03VR?y*{HK6S3xbXSjkIbxQ~ zOT_Veh>y7IGY1Cwr%E||R`ls4-7KU3nGT5e?cQ_`e?(X;pIQGLL=4NwL zm~#OB07pKFMb3ddmeE!F&2aN9>0;!@3d8uDgjsnn$Kd|?SYZ}e$vLued3uTeQ6`o>MYXJu zgu-?ISY6^toc)=Mj~u!CLeu3XsdXArk{5X_06QS;%)V~H$ zQYyzusJNQEBG{VcPQzpMlly)H9W;Q)O;H=&dh7Ci z2?ku)h%`Is2HT%Y-vuegBR{Rpej-R%?(^=?y8g@&J11*BCw@Z;RAC zxzN392IMyfsPxd;o75WhGn+yLe}q!>k_TZhn#_cOsd7G-#U*UQq-q^|9IK`EqsKoJ z-+dU+OKH!Y=@ENdxTyQ;-1KJdd)0;beuLeQcPA@LhmLCr{3$s}KaOcp>7j+2Csm*} zc13!v#|UCUKNd|3!_&H8U!7_yk3Ogk5O55sM~A1@)5|wAF)nX8BNxLg>DKrq7zPk7GBpJvz%v6qgU4h}7Kp*5uWA zw`_IbCM2@@fQg@*bUIAoRou+zj>7v7-UI$hXJwdQQG3La0=r2{RjY_}T82gmmbYq; z*_^|ZS5qLjmIQSC>50zQl^BH>Z_V2rJG=O}6<#MO2KA-Cy7<+Z2PdF;fA$r=NkuA~ zd=7tiV{kLh#|pZ;dhZ5p*6G!JxRdCCG?_61G0(;7kp9*86&JMx%^vkmbFYRoYqwwd zhMJ1C{+_AZ^&b&K>KX{Q_PNP@-vkjNqNk{LQ z-l?&VZ3#g+z+AwP0186B%PcoUf+(+IZJ$q?>(AN z?!ar@*U?4^K%y_&W%`H`Ftjiv${*i&`ShC5FjggdH<|Qq=@T1~+t=u4*)#+)3XDj> z54e24mL2|P>m z)B2E*hHMgo#YI4|EL8I?0+=t43y#p|@#gfQ4z1Qrlbr8bE+)3LYk{omt0D2G-l|Dg z5x+#sM>^<1akjl0M_{Tz3HI&VhU%bIKahXXvodB>z~k=r*bnDz;>s-Ni#*GtOt<{G zH&vl0{+MLl6~G9S1YxPydzO6`G$I|{9A4T7;Y}tW$?0-OWa%ym;t1SZ#o=$7J_j$Z z5{?y4AWbhbBH35d4kVvH6mQ1-4SS7Uw77U=ed&Yjj}7>tOAIEB#NKYu>lhSp3A}gu zQVAD5U*7g?3)}MAjue^K)^EQ2<4)XJAxY9Fau~gkt1!>%jy$V@1tqoC456_SrdAP6 zCTB;R>}-^j9-q!vxGB$HRQHqL+9*q_WRtnL!H_S5wp~~y&qwaPRQf&+9dXXP=RD`c z)$q+YEAqIWYyio4UlfCN)5wD5yTC2yqcm@>=}M{y(U#|UZD03DGicUbc;~UuVu3&| z1m9n2p6|vkrv=b7$y6nMI-XT-Ef>k}#`SZxoVmiu`xsx1O@QG2uZ`tt&#UE{W!vA{ zj0tfke}=xba^255d3Nl^;cf8;#xG7!MAlX=g?p|%~*ya|0uA`ea`kPk8DP43gLKPB+!;4D{x zKD&aj8 zYq-X}CuWfT`~}zH3%oig9JUz2SdZ&;UJI}Dx?}vMz*GjX0m*nMYu9BR-dRWaDPfvn z_IlW*Om!7Yw?+l=9`6Ct5xxYEr6S`)!I|89S_t!{=w`NS^mSI&m)hsk<8R{!hZ35stkz#J=X+#b>B5pl{rta# zACE3ou$3;vuQ0;RS@N}g-#69Zi-HTjv1q%wjE}Pvt5ruw=zfNJcrJx*5joCFH)h=E zz;>s8+qg~C&p=GRe!Of|IlVE6mvqv&Nz&x!xVxwt`R-_4j^yJDQwfn1|mU#{HB=MAdgE|CA;xJiKXYKz{Ebh`;p2 zPiXn|#aOsW;q^d-(;)4mkR0Qr^}MN8QbMsAF&>lFI`kwhsG!*0Y8MxY%sG5&`1f&q zlyV%~h)zA#Uw#A~k4I`f%O&Vifgm`fEhQ3+-BNfWFll6%_!uda^-WjkTVEV99-Ppd z0Gd^Op*me?@@W`7^lFjluX=CQ@4^e3MSMS%Am+;|X_pW;`tH9>_d7!3u3tX;=X+lm z^M&=1_A6%0`;Ks*2%lr5!bxnK*4p~I+w;Vu(S8?u6=m()64zqbGs9qR=c!pddEZLO zIxa;8&TU=OWyyXjzGEBY$lAAzeApZvbR(GQv&}isTsjk}9D> z$L7VtuE?UY`$5g-tKn{LR3ar=Op(!UW<0!h>%D2W8fCFL>C?DRHo}iX*YwqNbHlC> zD~rQ4?JRk*%3OSY3%9C_tPI(vX}|2sYSW}%`bkwMb$`NUttH(}Xi{A3Y_qg*&(9zJ zl0O%DLuFV=7k8jPo(1T>ikpg3&1SWC+E*gImY8m2?a`u*R*^&eTja1_7&+4Nuv6T7_#XoWkBdx9FVrQxy>Us_nyCa- z0dr&roe~9ygnl{klmixpXxqBq-W%Ji3AMg7FIv_($d}UcSvC$KQ8QtB(Afbc39)fN4$Vov3~zJUe=W{i>$FiEFiaJkZv?;JjWo&lz$ zE1UbVU35!lsbElYzeAHMw#u(1wuglsjW$&Y z(DBghe|Jn>_tOdk@5?#mK6=9mACZgZ9NLR|Vl*K;4J&rHM(mTdWaZgbLoaRn@vNB? zeP17)nzC=YrF1RYa$g!>29wHt8eDxw0e=~bl12~D%>wF@TQ~*bN6&?RC}(TThd)?O z!%U>Gqu>4rDE%DaHuab-Gi?84_PUr5<~gJ{zPGkG3=EpR5WhETo7E;D4oqC`Hk5$E4}ADv5= zL7Z#hKf`S~?m6Mk^-yT6e1(h_Gh~SUdH&!?i6fV`cTZJila_IK6VJz5`vz*+{Q(C| zJDU}gbcLq2j$Zd7v6ND|P4m`UOIVDT94M+$nRFJ|RgAYv_>S}6tPf~as1sypRt}&l ztm48X70fjsel~>o8To1LL$N_ieZ`@{&N%MkKwOM=H(T15+!tZ?bVd&Ip+{FKfhW2l1` z699bCJEDkJzVp_Tt%>S|G1mNU?e&f5Vn0#T#)XRNee{oeW1l}mBfg!zJ{}2sXQ?4` zikJGN@@a_Owpz&O8q9iXzBtIbwlyqhgX8)dM%j8dbP8`tEzZ zsS;}QJ#9IqSqz#;d98Q5Jx+Ds7xVw-Iu+kF)OVw0L_0O3z+myE#p@32r6F(CM6B!uAL3zzwg~`mkhLxVv>TEgaRtf@=C`T`_BaZ$4nCbeVbW zv-3a`gJJRc7yGkRX_I7K2M%7}4BgZc@Ew107_NQpFdXDQ`+99426swqcq4f|u5sL@ zWiBRHt-U*b_G7+GRPdW83(o@-3cazHtuwWPs*s0Gv<0lRwlv==DJq_i>NQi0`rDrMHouNFLq+{p>Tu?Ofyq;!|y{msxAo%-BHXXle0 zymH5q#CBciZ_%V*);&TuIA?j?rybV#bLYNPa<}ev!V^R|y^y%zg=gkBUNsI`BV%8< z98##zNPN`hPTbB4Py0MaC%mNZ!*pYxipO^4+`Y#?nb!0#>F(7K5uw6>JoEFMJSv+VQM|`Xq{!<=t^DMQ)^ck>&3J2 zG^DmC^YNSw>RB89(w(q-OhT9rkP*YqW!q1wR@LL)-;v40>2o+eWEIU+q|b~_a5Jro zJl7Zxu^$~7#S|L)pUkg55KwwcaLjXL=c#P+JsOOOAL35X3w}FcjN>_oL6h$@B|nQ7 z8FDt-jmCzdA%`FA&NUA-b+{ScIXuYDy4a}v%xDnGwcXnrK@=W5%N4*yu422ayJ=UZ zkoLaj3K6Tij@7&juQHhHllfrv)IcR-FaAdyybUy8X(f~n8VrJNNHL{)dm;mD zJ=MnXP-K&#HK=0v^C_0sp1uno>S;Qxo zj#1@Z|JX6{`e;HnJ8IXOaxTZ|rte!D6;TZ4z=tPd;Y?!+Q(??A@6LtM zF>f+q5+(4Ztp-r{zI}BNk^49KwY`=?#F8hO;=kSFVY}5o=iI<4==;es5-BeT&^gxE zPHKDWjxmNZ&cATq_nfT#bG4ePIFyrHJK|mqLxfP)p$MTNL;xE!qd!;2AeB*Sw5apvvST+fu)&VNbB@VDj4YGE^fC&9 zfl}wI%;Y$uFFo~%!yZ|9X**46A9BWs&p!#HT^Ek}H* z4;@;X2q|XXWuaMj1x)R0+ZN1rG=oQZkx_;d%w(G@NBs8>>T(wyt~o7+BWMb(>oaJJ zzG$AOelWqFLeH%`@GR_36q2^rU9716@K6kc)V z3(jk}ryS$YuHmv`^wC+2@Pn2tbFs$7 zi4qZHxOA@mA?CeJBX&9!!9@z2)nz$Y)OE1d!E){R*#E=an}AJ73>wfO%{`LL+ z_Z){max^&RGw1m}-{)(4!$0`JXWmkxBA?5(&uiT)2fVm(Nwy6p{}oobz9kPIJSp5tJraVg}zKP`7ZOFR#at+ z#Fw&MK7JajN!IpN;XrvEy`??h7w~PC{fC2=YYSw!)x(mBCz7(+8w-pFN z@c6-Y6MX7seApL^%06x2LdRNY;lWP0E&QRzT+9Xre^G5@W+J0KzzA|$OO`%#`UuVw zc=w);z0wdHA6S>ReI_%hz-8*QS~jU#<;?H=ht>8C^yq($ms~es{Q0mv@MIfM_iX zWoE-YAr#{+oci&{@()03`{vw35K$3y|MfEZ#B1qIx_ldxtJpEES96?BZ@)6Z=Zx8@ zwF|EK*FRd68@aOw7&fC;!7RYmMfS*zgeMa>yCC`o5PB4fr$>MbtXki{Ia4drB+$^> zw@&Zb+hV@ zs9aldfHJvy*LN;Y-=jTP`=StfUpGZSe2#u;UdF^=i#LR`i$3h#^b2JsO%VrQ%B0m% zHh(RK2a_l!xI3Y+@tRRs685Z1)N@G2Z1Ur4XC6peBtU0)v}Kv6?j}Y^;LDw@As4TOJ$l~|L&Y8Vf%RtOtZ>-Jn8mpB37%UH z;zI@rTMh}GVFw`$Z-^@u=tPX#8egFjNWuJh?rAZ-%Kg)&480GJl^jrt5}z^vHC#Uvk?sdCYOK z0h&ZYy<&MtFWcbx`%y65gEI*O@zRo=8B_xD5_3q(VRzU=J^r&O1Vya%thx=mR@6jH zN+_37N<_duo`>%8NT&wpN0GRFW)=y?Ju8(k{NBO>^|vQGs9rFv0^`QK?DPG;E&6px zedJp|o_(YJPmluFSS$n1vV9SPww&2{zq-u!A>y?&k1x+r`=We5woBGVIbGQ1QD%VT zCj;@7D8P{)-*P08?vKQnOdnHUw|LDm_F=!O>_qu%{-dv)sJorH0#Tl|r4bJ>2FV2# zg0Xknx@=Vf+i=bWcV>c;DbHe(y`F4s2^Vrules;R)>`yq?Qaj5^2Ozg^bdN~W$@z% z7tP*v%yToeHpY0enkV|)*N9M!rca=iy%0xR3*QlP;5jK4@)8y+rQggZd*Q%$=1RFq zx_-pQmg9<1gnjK4nYuuW0ZoLyOY1hqrR|?>bXTLmg?ojqxPEIE8%r*~5sH6R;(HVuJb!5X z=GKw%jhq^20RPM8#nj}m_=vP|%0;NddS0Ep=zq!Nh!P+%rgMOa%FW-@$Z}_bJ9K`~ zXcI94*V>yb@F#)lUc^(q0Wj;v9R3!dQBJNAM6I*%CTV0jX|{;~IBJ|%g`CU(neuk( z89NZ{ukJ|BRrv}q1}fB$B;H~6b9K_VV6SKgI%|!-gn9B}om#G}MKKvhF_h z1o&tm{>@l@iN*cd$HUDje%UuP|9Gx*l2G#UKj14C>i28?K6qkFlC0lk+o+j0hzjLy5%l!w2>ickchvER6R+0*Dl%z*kEj{v_*Hsty z{a(3GVST!YgbHRBC1xg#y2sw8-XGvky4q|^xiK6FL96vqP5s4~`>*)Q&Yg&n?bA6& z-PSD-mbbHNzZO0$4r8olOp|fI&%9KqJ4LFdeTlRmU(4GzuvJEflV%G2!hrR0bqO_A zaksUSvfYqcAEj0&BQ@05X@6!$!yAI&@DZn#cf71mwfyrZIS#u0^Sjg+ibROzc4N^h zO*FLIL8Nc5Z6T63d};|>CH{gP#?Dak04Yh}|028q`#jr?T_1YpTu7w~(OE@sTFyra zvZ)2rri$}W>#(&m>}~YcB^wPPYwnAgdwwYTIkiKo@0`V`-5AT+>TpZKTDs)n0jtwlq52Z+y7e}`uw>EFl7{Vd?6S)= z^&Px3@3zXW2D>jm?*&gaZAwd){e$yQl!NbGj?goICrlkYKK$kzZ-{7D5WC@N-@s}g zdbFj&)yZJy{VwDk{WE*rAAILs^wy2uq%q?>vTa`_;17;O28{#<*w$o95X=|Sh~ll} z<2Z#pl@=f<4c3?Ttg%=4n^gdMXCb2Ad0<>rul)y}oU1*iMb!8yHN>n(Zq63y<|wjH zqyVuZKgwYQF0-qw05dCk!9xX6n(K&-F$T_6lWw^Pzda!6F=l0KSKK;EGOIn(ZyGn~^RcV*gp*tN z?1}TV!YS`7PZY|%alR8{@`F+C4BK;lw(lgZQ2If+Q_rEJ4)TuKY5RO$n{z!Rcyr?c z7|%lilERba2?{Dg@2(QK*GGKTB1Q>&jN7r>T__Kg=EYTrfA{Oey{@r6E`@5g;C1A+ zh|G)ZZ|x|UT{Hq%&&&hdrvm`o?a?uw{M+Rhp2l61I~RPsH3;bvl}z^-dN0ao;(*ce znsjt~2;(($03`kR!@FdaP8`#ZzM187;^rBQT8#($Zs`{kV2*xdM5_jR+`JqAM)HYo zANl^`*^E|bpu-LLj-mP46C7*l>FHJ~LuGl)tA1NSR6QJo&n8!?&5M#REaRVZv6z!) zxqF<_R%zSyFo`;g(bc*Xcla%Ntd_1xay(idccKsKAK%mwJo18z(!xM%!^{DeCE@>hon24IJ3h1Wu=gv6LfZBd~Z-mnMi{z4xm z_9AG~xRO{>^1O^L4}9Vzgl4b*e3sj0Y}9mY8L_3f-vO?b*P=Am+zp5Kh7sW}^u+0R zS+@K<5x2kW$Ge6X08Q{eU-nO-48{U5Yg-rOiqq2_qQ2Pd&{3&IxtEfGhZf>Sr_uaC zFjxiOC`Xz^CTRS-zm!o8p@KZx$3$FpZ&`(xWPkmX0{;Yb4EgqnVaCls#8ZNEy9Ii54Dcw>SF*V8j`|v z3y*V08*@zFDtq@K%5mOmy8@YP?M=CdYm!`r$(QXZtJkKeIdibo7qTuw8(+t{6gYrfu=CRjW5N%m70th8h-728SFbvBJcahaSuLOm}xF6Mts*c_eD>| zN}_Kyq*4qo)>j-TN?DIkcNouXvk2$u1eZ5tMdYD#rR6NDbzs6vW|~mf{`S;;8lbY=L4^lG)W-# z1yUk;)(Q;`g?!9(1y`)}7NZn@n9?Qrn1rg;!RcgGY z_7IHTitvKBOU zI!U4D6r=lUb9u{!%WvJs=+7SAD&%c)6ikgd)^V3^8l*Ti5}v^=CXurOpVcexC=lvQQ0koA zF6fx5>(RrqA-wza7P~KaGl*5=g%K$1hm4sS24r8)34XZKpvk(4d`qI_X#`~uuBY4FY~5*Om_L7 zy?RsIYWdEc@L5j3DSk?T(*2Ecz5pmE`X8zMXJL=G1rch0Y}P=Gj|Y)Myuh$r1go3` zxV{{jkQkr0R=PA<@LOz&WEkR`O-7SM`$++Dnlg3kn@Oe}9G?~C+9!=wNZU>a=H-we zaT_I)Hz+b=sE>I*Nxqv_r5;79Rp}7^O>|6+<7qlcyA)8n&lMLQu7l@<;ms~Zg2b2!Gg z5#5(lT?V8HBu{+Mm&e~Fr>iu%q4O_U(tati=Up5Xby=xv6R_$&HtLPB9IwQB`C>o7 z+K`CKxNsOvozTms2(P@ zv6wk=zP5OS*Ozl|*bO~amy4gJo-{J*K9XkM8$Q1lY=e`=PX^{^9nnl+m)Fx#X^#PQZTvWwh&Qy4673E8W`Ait z=C6vfVWV!pc}E4QFYbi-D(qf)d*`vJZmS3-HmX&r5lrn6m|C|1+I#ijdC;KcfCjBk zt^Fb?{TaL8e_+v&3J!=kUeuOeFyKLf+S~KxXWew&V!Paa4AMXQ{nt@h%cq9z@1Olq z=y8?>?pql|8ES5XO}9soPuKmp?JMo~;)4Fi*2eeuIv&MhI;i8Mm^i%nQZQB2{K!() z4eODRkeJqMEZw&(Sqp~g0@_b?BS5)stw7n#rRzdplkOByoZW)?(~#qyof ztB(xXks%>}+K-hK(QxHw`UVq;wGy*r`T`4JD8delb5$(_F)dAWUzB$gu0J?v?;gZ- zFbdxCT6KvO&haA?OO8f3DDWDxw#&BM`8x|>xuhycQE8)Gu025${n(TSZeY+Q^Emx4 zg8;1T+x~!(U>tc2Ng&Q}+;i=5+m60@Zg&c+l-u|?BTP_Cd41D~-RJr~qx|(N?)@|8 z)Z;?721d}5(L5((uV+3yr&(fJmYZb2&{09t?j^ZVRs%;0a}KJRTRe7<;CgNem51)( z(lX51>P0KtcNb-NpfOlj3vE<#CL4QSkc;vp+?5@1UJmaqC`*?dV-Q2B`M}1;qU=Xw z>My^-@uM}w$?|dIPUYlcIEc=n9EUQm+id_*O_suenrW_bCFV|q$>v?)gmCGSXM%Uz@2!5{ICR}SlB=G>%u@Mk zwOW&l{btF4%pSPjaDnpzGdIEjQg?xsq8JAhQzi#``PVDJ;?EaOV}c8EME1@L0>*4d zztvj0L4XNFBV@S)ZT`28Xn^{$98vI`+;~^w{v3dRBR(d&5YWku(cV`4+kDZQ5*-2z zB=whadD;K=1igqX1g8qy)83rryE(r^seWNRqVa#WqHIw^s%a}U{f=p8J_2zom-`jp zr63A&3eHM%Mclt%-u7Y|&*RELn;$1*ou(&_w|uXrmA~wY?LM4v;g5(Sh_} z)_`Fq5dFDVb0lx0!fEz8L_kQwinUNtg*uH?zpK@@R1`Hi>w%oE-8=$jrcYQX0JatmAaq1 zhz#bAf(83rr@8qlh?!&7nLg)gi{_LI$cuX?{u)ON$zk^0L&zY5W{F ze4$A5nv||uYF0~K?#ruil|dpcr)91xgWs*G@I1kkp^@sbpU@oWe)nVPs4A#f0R%16=p`-(KRgN#vbp~cH2}@ znZskQWu@m31nAL(`D69nq2ICbeemZeOltQgzFBq7PoKa&8Ay-H{Wwiw^b9eO5~$nU zL?QEd9rQ;=F-jQC08EvpF(PUncl*G})eFZ_YUNm-w&w-AG-Qo=T2H3iVozp$WX_~FNkzMD13waeZ zTD4oz`9Nv{!CFBUStHUeq#5?AWFvET6ntt*?l-#o@-LS5|5RM_Q zD_1Kzb-Xs{PF^~t`;d6)8wUK4i-niwVSG5eb=h4Ov1~h_$Yk+hG#+N+NqGILY=5{- z8cQ^&*E}>6)`V1eO&FXD(KCuru(6BTH4givK)3Y#yk z)R$t&^j@fRUo>oL$C2HA1cs`~l?d;BA@OycjZb0q? zEidmg+nx2T=zesG5N**4O$PK`%|^5bTHy2TGiUpeWbr~Blt$bMnttYNcbA3k@b6JO}L-p^;S!dT`LWb+<%A*yW&y%b6Xd%NM`yj)rj8-WR zecYlkx%)i&&-#>Y)cf|@qat}3sEo4j>*Og)@DHG$S!{ggoH?rY(H5-^#44CFMk>7D zbDT8la6c4bf8;;7-@EjAUr+d2SrOuEGv>^VO2n!;4D1ucTbnW*Qk$kkABvGqX-qGja;%v6LX`dp}Mk6;A!eMolN~$bwk!of6k$Pv;NJ}&p*yR`lB76oJ5;v z{0Etqh~9gvADTvK1M#t=A0oKLkm6Y0FgaKd7%=>krkwCC!@7TFJwhdkDqm5%zVXP% z3+IaPd-$67%(s0-^u*aJ^d@#Nw%JwiOmc*o2QvCS8`J4x>RU5A%JyAM@Q1LF=+%z> z0cCVCxnQ7+ujdu6r-DhIVH)v#mkjSt)!T_BC`K1fMtn-qIpHT}Mb<5wiF&}*OX+uk z`~Lb)Z-4mv=N1B$YPZ!%4HhS;;&ZVV^td-BCCxA+0q?LaX&OlXhzl?+rtbv9F2iJzB?=-%n>R`q=%99-MWVeEoe^sOk;^M8!4|iZLl6I0GXFwG%f$PGK{2b4&B&_&$tBj+ z;`+MWf*9>NNq2pg)nZ|ki2Oy>>KD{HLcK=JK>m29owY{j$ax3L^2_+NGK67MxqA92 zLxMqA3)r`%F7MAvc0wRY`1wN)?AF#&t-kEvN-5e7yf zg6}~%S&j)uTrUlH5tWFgo-?okn(SN&=6Z^x3+mB45Y4xQ<=j-ZZ?v9?Ioq40&-fZT2- zu>k}j)2JP{pj)Be&sn30zh`=}2^#1)q|_L7#a!mY)>u7VaP=Y$yH}(HoH_jTL;{n1 za|AN=iQlnpzr_+MTle&JsyG7=wvGZ$A=Idfh{!Xjvc%K9NPE0bZCTVe42-T%ROgwrO@}9?F>B*|cR$Ij$M?ZVn(1_AnyL3xB_BsW)Y(FUAeJz*v15}* z+=*xn)5fJP! zwslM&2z_q8!`#bZ{V{tB-R=`iYSO3Pa`D~FO@my+{$k3%+)`0u0;m{_jzpaOvP-x` zwmT2J@%0^(<`cOpnfO%E3`ZD>=#5Mc_!>Y(};hQPg9p%C0HS?zdk2 z$m^)W30>&0tSItJN5GfE+4 zU5hbz?l{G4Dvha3T}LXvJ^vhCuAgo5^hjzgfJgu7A?BV}*_ekp>@I<*DP$3Fr1+Z; z%KJz)0xn6(<_grsK(x#8RN{momLK(!AQ^=pUp8E7h`CG7b-aXqlMc((!vv0q<}>E+ z?|>Ip>F-?W6cHvVW}f40Utb3XD>orTQo5%0qYPnDqW0qY1?u7k@WTA$UqXql-#s5N zmxDwF%ih>7X!914Bhr!fyxso)MjXttfBLNq{YSQ{Is7vfxh8RoGFdZs;LOpLNdLOw z^bB2J;`nT#?d$u6R>z|b2R@g_>F*ERe+1sIbFpZ!!QHui`=Q(5F~=0zI%N~s?RNnI zoQ;FE6jMoftMaiB7F1I)ZFp$c-l;*xI?ccg)pk8g>9~IH@!EN@{jFxh5X&HxGFfzM ztgqLj-Y?I4Yx74 zYIRhQKvXA_o;yAOeI_AGDq4p_=gCAuM9w$^$XW+Vo-BWN%elO)7M}afKY>;2p>8B$ z`E>sSZN;BUzLc0!Hm>1viS5-1;IyfyD#O!9X}5PPl(L&)eCbzGrtRM3V~d)fFn!+A zO+Yv9@CKZvDSHbZe|gp%_+9QiJ=eR+EGphrvG}8Nz?3prh>YHPaj#{bOZnat4PmihF%x)g-1rIUh$D>dMyqw?YDUsbFeZEd>6-de@=9) z_HXoJ1k?pko$!A+{FfI=Yk*kRmd&X1M>DVxHd@mHm7mU|R8A6MPN&C$(*sluiX_oF z`8>Lic@Xgu7pPu$8rbu7jKFtSB|Z?Pv}r05x19ez0N6=`$-!o+OvQZi43-4n0SohQryMdXrt-pm^FvUryU>L8QyNBZ1IH4c=Q{1hmT#fh#tF0@!-L| z3z5)ZuR#5eHtHq>|J>(&#l5-T`cpFzDzA)YbE9mP(Ot`T2MaVE)eT1;2jDiVLKV+P z2m^YH>%GsKT9_e&ux|9%8O&_SIC!vBcm5q}WTp#IJTE;yqXT&ixM=l;0+gp1X;L!q zZAL~c%oL!AaTG~F1gOR}WGQOUoZrjsYjM*4}4R(2>CnZIp~0%=)3JSYm^& zjV<$*=e6s|R*9t2F~enTBA(c8@psno@aaxY#B^qd%tY}n`1+Syd1FP>bT0TGdDpgy z`5LfTdY&rE%qR~t>$8+_&@+O zB|Qhb>7|X!^&j{TyH1?HiwLwINf8)?%_4K5)aKl3r5l(a7%hpmN|Xm~DDU!9oV=5< zOWd;C#HL;7B0r|$ds{fARo_zXW%Xnp$=w;D#ZbS8od@%n*&r+6NksnUB=dL}UjkLA zWVd1a4@>ea=@~ktG7DU%-~Z%eK;D$v01bhMprxuEP^V#Mt~Wg-Dr;Ze-R4xQIn-`V zY1#2)Af-p=ME*Ju{tW^=3JXaJ>A+-6rZd5rJ2@1n(Sp52!<9yuEqma=Tyf$oe`93R z6eV){4<8Vm3|+qKq_P%+!kla|@Eyhltn+O;<#7p#cyvWWA>20S6c|Bd|rfSF6w zq5ga*MxF^B2yopDIC!#V%?P0G5)E}kMbi~sa8XOREdxwAaUCM0Ng6d@G>ERA^S}}P zh8_kQU<7TIk@t%C;>%djczx9z!0`(HB_+E_{_FJclUZQBC(C%0)*Odshx z?r#NN5_p0!Zbm-GdKfv%I(lh0fKO!Op`Y?h*K!0k#L-s2WEP`eHRzS_6vx~LUNFfv zuhE{rCmM{jLDZr#g+Z6Se6=r_nEfta?4&ZeWf+uzVL=9zaemKjPgx0%6`ubnT-!tH`00qa@eHXrI`&^h#!b< zJCL;U-nnXVyFt2iXz5?1=@lyQksN!bE3Qy{<;(NOUfey8irilIG`$#|e>3#$p?AOg z7q@$c7@ep8!RG=ntC^mBGC6}fG+F(Hlr!7bJn!`UKFJ5U+{5GFAJ9T4uQmqEoJ_lL z!~Lk*>Ms9ME<=kS?Cx2Yah%tEe7oF3vWkF1@BOWuclj*Bg+6OOZLwrVAydj7UROWk zoQXQ*`K3zi@>iTA;JPBbE^Y~9qIyTyF<$NDT&tOzSN2+z=AVhQryU^Q=Ukz$099xQ z1MQ_SFa7#A*Ck2*I_$DC6MR4P2%^D35zfW5lFW|4?4dNP7)UH>liq3nFNN-3 zNfSV!i|GEpxSr8)#ddi+{_%QN37oKLos%P=dQ+tx$3i(A1^fPnS6-qle5td+u5F>*bs@Pp!u?qbF~Q@twA#(}4gZKHf=moA|oNhk%D0 zeN1_>5Oo7sh@S9J1GLBR%BbKBSe2cP)nk|wbv=u6cMt57gTO{`K#7A20~YrAq%fkC zj85-wvgERl8hG-XftPbyKzF5Dkk7*TKiq!Ju%Jfzq(8?I$&%8mXv|zTG~yBC4(7MW z(3B-8;pRB)RH^7%lyE0(gy`a0jgWdv%@2c$9>*_EPb6S7ln8Bs{J}uFN9LgS>{k|} z;+W4FJ36p9nKfFUCO8+zQNxGp$vG-q)B13$sxlxH|cf?Kv<}r0Gew8WKn>6U`AZH^9I_? zAY8QM6m>Bxsi92aG~=o7z?LaAJ&?9f1-UUM!)*8*SoEnx9Dl7^^Z&kTTQysOq<5OI z!QdiBYDlXSc2~Vv;F9ChC3A&c-4feOHDZcry=a%wq}87U4E1~@(Xy^&mRs$V?iaR- zPJTMuo8(gCf_Ej~=X+epC5d-+9_IMVDSCsGWbEV(ciMw3!``7UH^1x(7HiVYAnB68 z^pjV~Al<6<*{Bid7>?HgS#Fdd*Qh*VY8?a8##k>4{nxJmrBX95hZ;hzpBiBd1^gPL zo9|2_=(6wjfG9KVSEoQOnY1=32`iAw(kI9(ux0REBRg}D1DjiViRa&HbqL}jVPqU;>7jEvWAbMOu zCqzt#-qHrd^we?H&+gabpx%`#D8n0K$fiaBLVb{%n zI0AOehCz&Q2Mx~~sE+IGcnmM>YrAaE$>$6e^B6v zQHH|WzoHCfue7|e+d`(?ue1?bp@nuN^BX^Y=5jQC@OEc-=SUsqAd{)ooAdJ%zEGtH z@#&F>p9Qwr%DDq9qT_dsra1<3_W+;0wVDZTJzu5HIMy#InP(v%%BG9%Dm8& zWD($c1y9UdB!aLs-X!v@+aPmmSRgw@o&84GueP#wWIL;CP@7x?VATs({(86qXNkLt ziu!jw0^w*UNWrj9B<23Sldk`#D8UcHWuHy|cqz!xZ$-yHy4M6~u0tc2>r-J5aJS4!D3@j`_icBfZ9fBxr0JReIWv3cpX)(BdyOws(h zsRpYRf?0fGXmay&ZNh{H#e)i|GsNi{S{4o_l7! zl~#n_i#;-&n5 zOrbJrjlFjc64G(@?ft{r%K{8@LqgZS^n^oSA#ckP`04w(^EiT|VE1N1OLLXTT?pfN zk!r*y6~yM`O{b$GX81!!jh>U-(c55=KUn!%L*u`_$Yidr>7V^8oUSJOcVs76=``dG zWF*mu)x5Q{!1OSHyAc;L3w(~bia#`q1i&H01n*>yiQBo{oS$z>o`tJFV*u0+Aa$6y zwxqmyNs}ZF=#(|nmy5fTu7gt^WPE{SRTA1=o4;=l?4)P;tjM#DNek8gujzF4Fw?Bj zr~etv!|v3c_~^Ms#dbll?xOJvC2Q^8VH{aCa~*rIB{?%>;^6I(?HcbcK9ovuimh>t z=Tlky8gFWdaVh@CS5f}s6xUow_A?}4JWBO|KF){0QODjK{a_gwC?ry1tc(x3wUS`L zQ^wguz2WbYaJh*O1y;g%fy9RmNuSQ=OQ%wQC_cKjgWy|*AT!6AL^FdX8phj?{0>G{y+dF2_j}s1GVFg z#_JZc>h9ZvTvi8zeO?8S zn+}?U<|~$-x-85O!1;CQ2QmP_v>O+HYsOxRkpkIF523vWNYdUs6U-7MiT0QHuf%SN z$D#*xH3$eJd?^+*jl@Vx9V5V?fHIZj=)dAoaL~<%(g6opAUMFbJFg|PZQaxS8;=J5 zgp;IqroVDzA+Y`Q;79nr3^-B?n+atD;d3r@*=yCw{m}igr zN9G4bzb=ao3C)jg2?tdY)1ZIiYtEMS-}v)k2IS~fy_DWh?|n`9`zji$pcT?BtnZL7 z@kYGh#AvTXm1FYkrcu?H*H4MAqWeQj;+GquCk%tZ&?eP-9f%n2~b!HNB}Xvw#?fu$Z3KQulM>+!5@t#S)geClN_WJ-jD;F0*92|1&CbU z6vHHk3AWj!BM>2ox-UrE&E3jq4DY!M;>>7^77_KVxRyB8^Y(Sydv!L zm{{hH6DsF>Np%rz_tHQ_M0kO6z;4C)jQEXZqz4f-?z!^&`33P2?EwO%$EmfCLXGap4|em+G(WO+cGi`Elx$$N3@8oW}Y_3fgZwEFKn_)ve<%i67jOq-w{fX$~% z^*=V>Hq4^YHTKV&FEvEqg*vf4d~#gV!U$nij@+v;dgg+U$}P>U=1#S=KkOnl0Ncu` zw|Wmj5V!R-IZ5>6Csi$1Pu|quGU8+zGsv0ziNkSAS{>t3@@4d1o8nH0F3WR2d*tUz z&c$}+h1B0YfKzM;aN^IRb5Hxa0J-d9a~<-oWiEK{w(?+k6`*Kan+^5Dt_uT5`Me_2 z&Xwl;Vp&qdv4tt^PH>c)z@H;a)?18+?*Jws3%G)ntC-+J_ES!OpZZ|tK{9BR7NG+& zzwzT^&J)G6J@DUQ>sc#f8RL^?f81VOb ziWxz_G6hyppIoi56t6O?sHkYYVw4*a#Y0DgbNQI*54U{hF!G~l?ziT4zw@+#`ig?I z1~h=k(~)gp1VDGm&^7oFIPL1*Um>c51$zAI%X167-_M@Bv7_I7Mjz{Zta{=)yyx*YinsXWRhtWdSi%4D}RQIi-mJwsK!{vhkp&){|QT@HRkLpK< zRO%y8E(I#*;9ZUN$7=--4EFu>VU+H%zaT4lQPJO4ps36DnO>d+?bWC5s1V=}p922y zyP#g5YxqlNeGW)X)uh3MOOp?1i*!LQA=HQ{HtJqG00f1JFz&!4ah^lPza%ry`F`DO z?b@*KakCaq42bF6#EIqoa&7{5E5h?ST=G-6F`K4>Q|@#b=ZaYs>zdav1@-^ zl#1YzEt+~&z1NvIT;wij@HX=%5*w8Ppu^ZhcDJZOiDgT39Ev{Q7xX z#2rK}VlIj5Q!V1>(YpamGI*Mr8q4+Qm7jQ?T0k{_bk~Q05Zhxr z!1i$x3>Kk^+!W%U0j80h9&i}!fO{g-sfMW6q9#|b9X=WYWF6=lfT6e09hAx!U$4PW zfZLF6c)PU9=YOLrPD%e|;3a@D8vox0-gv@Up_W&F%*Xx(NSz5wjL%Dhe&C@KQ`YLV zO?@p(Y`KhAG9iHKwio#oK@e+swp(r_*ry@v zwIYC5s+CNXXG25Nb$<*!aCY=^F@8zsh`Erl>#Se-=VziyN`K#6p<;@&d^nZ=NcuOS-=o@>uBKYJ~3sQGG5A#?uL`#1b zCdqS5dEqWHzOlN~vWpj6{(JTj`nm_2qEdXm7B8L<3agW4)*WjIq%fL>&Nn_!NoCe|3+gSi13A_deV?DkS zJur{?ry1S9pCL8$0snYGWX(RM#rSr_0t@HT(+Fb%pqdA?+kfx?@EdfOBR>Fz|5A%J zON|MB;ef91Uzp<*QMVGz@PQDxm(Bf)D$5@}|37eS3xb`H%JI$Jwv&!Qe;5SPam={v zFE5$-Zl#!s*&&F!_WV9Z;H$>tZr1H3$@=1qq`j)wBpIk^j`1pBlqFYkrzmHU@@MFm zUOiacKN8x{C?}A7=g9l9RcPHFkUS{lx0wk=khtRCeIF=aBZ2IsR#_Vkzb7Lob?6M@ zKf0kmYPzXSH&c>K5qv68QV7aPy>G~z@N%WF`-xn~r=Q4hCGE(h7OXXIv8mi}#bsCc z4|3EkfOsJp|0y~A2+OKjFjGHGYXc(a#O+|3^_=EGE=pOYwG^`KN5eSnA1g^dsFCDg z#szbn_^sGR*=23oV|iN=6;2c7*62Mvt=r2Tnl%*;JVtn$!Nh>;xbQ}pE<`(wf3f;# z8;TZ9URBLn7mid_NA1?Hg$Ikb=)9YU;#n5JaNWf*$_K?exIvcdZ#J~Q$ys*oG*XO7 z;bp!a8by{{O40gj(?(wZ;^B%ne!p|;%O}Ka3zRw|(1RiCV0AqRlL*}jQOrn+OwRVN z_IXnlcRMk+>v}0Z2xeN3&}~J(wdDqd^)7K!@)z8u)o1mOK&fd{DN|y zEEf@X`+ti*l_4dvvWO~AWf1RtRboCV%oq%`4PJO72%siL8*o!uZ7KGBJbE681^pgo zfRvdOV%Dk2FBh;kq`na4c@~Vd1^1m4FulX_!fz7`ZKw?siV6~#a}j7+lvMhUGe^<_i4&eLpZJZiIAwkW$QD^u6rOX!aYQuTL9LEr6H_T83V{y2oX!KXQdGXTAl7Ehi_hY1jXN zh{Xzjwnv~G3&Qe3lJ|n0S3JJdFTZ(@Y&l$QTAS?p%3BvuUNbgjzqV$Hnete}H`f$* zJf*B@!%diuoqpqES2nQ>tv|A=!)||{$=)p_tY2<`;iLkWIS1vF>24*K(x3q8?{!@HgcHU?X866mGSAj3=(!&3IcU))F{&re1qLKXQ zG{K4P2)lu$48h+SEmF~inGH*q%r)G5hnV>qxgN^v+DUSA3L)M&V+y%HQ`-}+|H^T9 zf9EPkP*AYd4)>mhZT`a~75)Ss`&9GZ{rM-J0cIJV25})CdovVeU#TFv=brwK9XqE; znka-KM*>*y3`hzryJ^I1I1PHdf}d*>$H2smHO@%Q)-xK;x^{rHasn(29Y{ur7ryn? zVTNu@hm`)uC!Kaj(Aei=fE*l15$5*>~4FD3I7<^3?xcy8oetGZj^ONNc$b?RBaLG+*N`3NP-~dY_~@j z%tuNi&PO^R&PM|JlF4HMk0Ll4bg>dBtj=qP`3|+aEw4*1%~mA2xqtsC8aWl`%&~m59HwC@9|c3Oa6k8pIWYY%oDD` zCz}=KRrXU#mLl~QkP!@toXn?H9?-eYz!Ed}3#Ukur~R*HRfO~jBs1Kp22}Z#730p=mR2+HVPkMvq^Yb8^e9Oh)>TX(N zJyN)0MO!Lio$PqTnTZNvq3?Pr4hHBA?Y$#F2zMBuPnyWZSBvUrp7=+%N5Z~x(sM(( zqS}Of5Ae`-d&K^g4~Rjj)yCzZifLH~POL;<%2$)2sFOx*&BbMxHOs?8^zE~^Tgs^5wpn|S1pD-n?njqQ zt096FmAreWZ!&!v8f&@4VDdUA2gE$e-V&R!3IA4p*sHhxbK2jkJ5!=#te+roK^f-`h`K$fRfpp&yLKS~RfFjdbYjHO8pl>vOjOzf6_ zLmwpSd8f!z!7#!Mu!cK1zEb>>A-SiDzfuOkWL9le{0^Y3nfaYw`? zOciRlM_SCk-g`buTnD&L(YPZUlvb=Ba z+o~UCDKv4w@zlAKWKD)@km*=})@eRGsE_3l0MHur>_+a!6p+c@q0 z@aWd=mGc@=R~S@vVX!g#p3=c!mdOzEESi`QDQhJqj}M)TFUvYN-0+-PUL!|v%9JaT zOP_|>y*{uZiiVoG@Kx3y+yy@=@m}~A@vehxT9L{---j`!!K6GQUIi)-Cs)5PeG8e}bmin0|z-P~7H;Hv>Bgi+v~ z(~?Vv30CV4+g?=WHIEOxnV3nkN*< zy!E%uADKnIrQcykXlqBmPZg~0)-z#(YuG85tqHgSD;OY0Vn1ej1}&v64W)u8U{crH zoF%`ZBHGY<`~&BJAh7!C^o@uRb(1m^)~o}KR_hC|b060W0Yi%uFwLKE#p>CC`L*Y< zQ4hh{9Zaz8y|76);Yciv07MI9g5S;zF_r+b=qq5zl3BB=1l<)hZ@XVWMhk%lQzQBO zpBX3H3;_9fP`C9Wy8l(Gm!qA9_NB8EvI93PhnLRZ`Vpj~=vL3uGBURU#+8|Xab^8r zNM8zZ{--b~o+?JahV%`CA$=D~lO`*MBRGHo298up%M)n&IF_?y>pyY%v90&q|3lnc zMn&De?ZT3RN~3fR0tVd(3`#2@3K9|`ARsjY(lB&LiwGzUN(zW{m!vdE!yqwqcg*Z- zydS;&?`OZ;=fhs>U3_6JW)|?9E6(#ckCsNlNBr0ms*=3Sq{4w`eH2^;4_L4 z8DwxKl>wPO6S~hB98C1KRnop-BP50tbO^tQo z*}jnjV;@gIRQpR0WS!(>p{Kscu8jb0>9pgGMT0N+Ujux4+1LSY`jHg2p+b|Ft#e>#jE^GxEjjiG`2^J}WN0qx;et zC*OqxX69-xADRTNwQ~qd9Z*)U%)()&(r|Sj5u;+K*iCU#sa)B{j#q6rAXRN!_prkU zGnMOlb~23%+RzNw6lY@PsA>6F4==8jSPtXMXsl%$-re3w0>ITDr=d4LOD_SoYNI`j zDO3NAmrQK#dBRMl!tya z>^7-wIR}`RE_cW_S}*{dFf$!7ctUW!690oUWkNL>Y*`7w68}2_R>I5-NVaNZa=RpO zG{8jo$ca*a>I3H4^dGnZcktnYQl&R5Tb3$QQvIv$7|+x^kVJ|Jp7XGK9lo~nGl^6R zB$0w5ylrTR4iomH(VgRD)A{9l*iPGA64z+$`M2E_7o`Gl&y7taYzNECynEQ1(c|1@ zh#1s~sFxI+Y1$9qK)XRlRKGz*eU|Z7)2Y(6=--2`&ylRGua1#hY{n*T=kB>V)8RU% zXG_LeX|t}2KE5;W9)|~BqvU2|yKp~Q?aZ0)TfzzZ{oS`5e6IHrVB1%4JgX^wc>ze+ z?eHJ=I-vvJ#^Bk%A8-o~2nSNhC^sva$tR8J`6$n8j4%C%mnZQUwOvJ5$u*cy7ED8X zU(|*4VktgbEH`DR7pv@_hESi)$uP*8QRA2K#NkJ$-KMPYgniD;ueuS}Gc$`Qjdq)1 z>OP@()O%Xyoy;vtO#HDH4|V&7ClLg}jCH;x!goHXbzkqQy*HE9s?V29mLqR*hS>g= z5}pXO#8&!MP?q)^jukg7O^f40#xF$+b26Vch@ZZ{@!)> z`8LBQ35BQ9aMYd=BmCpO?~HhLK{%;xnI-^f>vvpr<%Et0vW zyVH#BVykBCUS1YOnJZJz%V#!=S9^}92vbYBm+$xsDe`AH4V2#A<-8B(?iCn{!Ay|-G$a8syd3;Ip@T}JRYL5(HKmy`Pb%4w8YmnW0 zGRMX+j{NB|>;YVcE4Xp#S+zFt^|iEMCYn>`=jPO<9w&3RpSYJw>7$FM33j@*2@F#q zuOb!gy1E3Oba3OsuO78554;Fr#_mqOzv_Q6%4;W>aNKY1T>cagTLj!yjv*|aVuGrn6b*8d=dXC}_&ys1N_t`pTTjcyQiuZhpsIknB`Pra|!_QsYF40d;&atg)#Ezn7^7Tq2r*r0Mc!9Xf@`BrwmJbEDnBH&4J2eTRDNnWQ4?E4(rBM=2cYL6; z$LTzhVj|3M@YX~c7^t`czFe_x$qlIWo=sEhxIkmZtLNCo#|K9h@1R*=Yo9K|rw$t* z7OI_GaFV%y(lgVix7t%vv)Ge)(|g0=hYUl|eEAVojpw=UhfsNCZW7+$Y4~D~ zGG{byLgyAij?z{aZVS&M-`SAa%D~mVA7A#Cj?+E*ac)HTFOQFp%fO#lZ=cwHO?$B2 zHIzAf#Z|fg?TWkckNx)|wgFXCJkk+1zQ*B+OM~9fFLFYuZ=usSt~~m~Z5}1Z4CZv{ z>B!-XbV=vk83FDPqPFvZ>2~fFROEbQJ4g-(@Ef-pW_m=CXV5qND8f@_2MpbgbEvLP z!E7sS6;29efK)c^`oH&ym>6*QV|j{T`>hA;bcjotF7DWFSt) zneS)gR!`!uW?N93RcveLK4DF@xQCcJtABSw>rr^D!|)qNj4E^Zb*Jz@bsDYl0}vc; zy*<`0tPZNQiN989FIfpivo_PmERI}qFz<+QN~DY z+aoz!&e8*AZg+V4LEPuMjltE5eI7}Y)`UYg355-sbSGcaGJ5h8!uyQF_QzizB0>~2 zM>yQiGA(@J>nn&h2%h_x(hQN2B18KY&X@g_vr3L;$Wpux z=UJCC-RT*NtuN00IN=oEGf~Fb`AazlX-D=%pJoZm!)2u!71h*?Gcv8W&Sl=J-MuKf zqP1I!4?`s^!4_`c4%A$0M|_0_phD->s~VfiRPo8Q@e`oa#e_H9W(KHKyx~ysO`hi+ z*L2|}o^XA4Ci*R*U9;Fy-y3ysPWmq!o4v`gjXGsDmyf^2agM1B^YkUx`Sm5kRIw~> zZU%Heh7&4yoKFw$)#HnT@`#y{XyG@{WRReU8SkLqzg(|^!1L#i2aRMSFS4WId#b_1^lX54 zvjoGTm@o)e8qXMd;nop*vvOdv_F-n1*X<-u(c>M!^P{zh{xyd7=4XzSYfMFUBi!D? ziyQ2->+(Ivbip?8sg-T8P{yTik&A}Kc|`-d=sr#$m|@Ij5`5;DtEVBr@F>8gbLVAF zjB}IZ2QcdWcnQR{T*l&96L_UQKaJOUyWRrijz4=00wuU;$?!OUm;{X4Ui`~L(INY( zqMGjOn+eD|xCw+*p|U@PR3jE*N=TS$AyPd4TNiHzEhL0c8h3G`wIkz2k5v<8T2^L<;tCP&%ZpBpvs4@B zKc}XLsa{6QNboiG;Ze_IQ4!MDsX+!{9J2Ld_z`H9yiMwYj?bD&dpF|I)urxY?uP<10<;8th7$taXT zoUdcep;o>K%H4G$*=^eAR_zO_g!xmNh`QyJl^^3v%TRyRLBh6E@~98aN#4znVoWh@fcm>uz<^>0f82WVs#gcd$kj;b9CN!TO+0 zt{#_WyehFyWeLGGuuQ!$Rkr!s_lGnfiT z{dSU)7@g4kEZ>&C0{$l`w5Y{8|J@TTy;Rt$-GQaz%4Iyb^p);hYzZx|ZK)}hFcgOL z{-ElcxC!2OYEy;4ol%mx4@Se1&oCRH4&&*Rs;PMQHf2HvfoK>|d3SVDNjgN6wN0K`as+$=3&yS(&$qBz< zZG6Ri)2bfgxc>p-2s@1)=VX?RwCOx?8? zxtE)NEPlQ%o79y%bDF;HOP4L_FQ5~K#){yqoEH@(pZ{Qg<<2d6p{2D+!u7|;j8y7b zr7IhX3^JsB=K(Jr(iq+fX)KKMVJgYaP@%>;Pbk`{4rv#(SmQfx(=pnOD&2}P&b{vO zG8K!xaEiS>!?~_)Wf_y_w zofLM9oNzfxAz)==3*C0JTFan0OCT^E`tY4yOR94o?Xkd*GE_WAZ?Yl5w}|%yH)G9q%dvK?jU*6piFA0UH0Rhr-#QoiucDXM4YK1%3bw5FpwdpML;IOS6X)tacXJf2XFOf_^ia zLbV|xiYD=I4LX&?9VwC}hub9z60Im=R<>@a{gFVXEbICrnbgsZspmVIo8Xl61 zx|S1NJX}K0CB5bGR{k!xduL8ntk zg&*Ubo_>s-5i1M1MQKxIPfK4Y$z>n;okjiG4~xWb#J1^#gi~v4#@gX>uWGsh%MQr82#PyY#Oo74S ztJ1Tp{?{l1@z$~=uU3CwxiRf!8V>W`OP2o8lZ~|%c>Lb`tfa)6Xn2wjCtUmBQs~Lz zml4m$<;$;X5FBPVos1=s(99oXnvz&AaFi~&d5}UvPgfZ8Pmc8r<&<7X4hV{l-OCCx zeUCU6xFU+JI(~SGpQsFi-7R<-OTp;d$NTc=VEjP;bsOi36(Q&K?ARxxwpEB*A&Ue` z$2V_7>&4byVt?vew>dNYLUiM8Q*EZyhLy!K@<)^*L>Nz9tdwz^UC$YBijtXG- z)Zy`N4mEeo`u9|54>Mf;vi#lSHLixOXC&Wryim%rT=l5e5jw9nU`sT5>O;Fr>>Zxm;{`EPfTN&`J=7$NITdbA zYEnD66EgOweZj-n0~<%wss1jqMy=jByOuY+lAsOdQ7a|?SvN>MFJR`Y`2_zKnTA7w zAtNbl?xapoM=Mr_qh1r0wr z$LFB`kbj`kXn}tekgsQe9Ukf_0|AVJKlw4rK#1A;Nxtw!;4SBwF_`Mpq@vP`Rly~u z49FtG??>C!jHr&eOi&geFMNADqisM5~dKZH9m;sg@#htZ3~64qT7 znZ_AFlExcxGA0UeiC=iNfNl|>%wE9Ddng-U=qq^2@HpiY)fN5fb5ab9=l7rt8?DB+ z-|Mx|p4U!;T-PSaJY6=Tcva!8b}y;<7B~*-m01zYsf$W%lz6!GYKC{mxu}seV(McDQC2tZC%_%Ag8PwUC^za7m$+F!%Y*Dq(*@uRE`Pws5k%|VS zsy}cWZum&ml%*IW+;DU8f&7G&dRXU?1-?;cw}l}qDT%AF=P7d&9ip?!x55U zKWgUerTlBW!98ggu=HM;6ztQ9JjL-8U`ZzI&_rRz94=pFk!DGF^^TH-i)puJ20~m5 zFTvVRXScNZw~;3aP@GkQgV)f3D*Zj|N8wiFD`kuupM#T+qgT{wn}_y}jnfKCn(7nF!(rWYCvQ{ed)zX2*o(!U^XX8hbSRqmtb(e$&V)9>Ws$cG z zn4C}__63|_?mLYZ++b-duxQM}pUI5P0fCu`RgUHHE$nV-$TVr=V?aQfYNp%Q1p)X;%cHB5G0oy6}iCFANc=f&6=IH}y zAkA5fsI|Cl3%a;Mj_&!J9XQv?&(LPv?8aR3WF$Jp6+uM10gBD>sB|(v#xb`E+cTBV=kx zX#B&OYtA?1nwcow@maa+WHMt!o*$?#7tsXaZXAC zPEnuXR8Pd@aZzgfDyuh9NL2i>-Ps}mYiPOsN#hdP=(RfnQfIGdTgSi4<0i<>kZDvw zSeEL&ILUR?Z@-i#gQY>Tf|}g?!rS*e#Nc6Q9-{AQ$jC+KHC`kw5T zYAS7`baqD4VF(?#<65TsLJbV>$o^Jeaa%G;3naraSMbuk2`OFp3t4)yC+rE|m&VjA zrl}%i>4uT?GHHe?KyQqeN^ov8{Bn3NBgHHNq7s2nxR9&UE_fTlYQ`cN>1XB8_V z1q#oaW`3_w9A(BsWS8S)MY1R#@ z>xtIlmIP|p5=M|>rPD91NGIEcil}~JsK9KW5Zi@Nv=+IypkjphsdBRDWI+fD922pO z16{PYBA`E)X@H6Rexkuby2$2^8@)yOKzj$TT6?9+Fg1l;KQ_&A z0VLY4rm_6rSkxs!uyr5@=jTviWUvW#E}mO!aX-`K#gt+PllH_9_HwPsLGzsR*X9`s zK_J+k(%Fp>^}ck+Ww3tB8NI^C8Z3Y9@>N@OAiymK&=(_4nSB}#oe+E)=fA>}D4KC9 z>qPSEgLpGhe7JZKDS&`{K8W*5xYc&Hs@6uDmU2CejpYT4GrSG!*+J*#(6s|&KTPah%`p?Cw&29-N9YJ5LJw2=^3Eu0!$Rr9VNOc^wVehm!Dp3nVi#>JTmhE!v zVcsG8k9|?}e#EsVDCN+g=+&RyL^N5<$0rVSQrujQTYCj*(1HM!8ec%eYxPHk;?!?V z`I5P)5<#{jmF*?Zpa2+V?6-^ICcWx`ipDPFbVVbb<^n07q6_Qk@*QVkDjD8$}Z zo6{|D-F4HTXi-&UA$#CieTuL<{r%bDqA?}7V* za|hH-2DtP<=eM{>eSPn~+;iLKz>wnc1uV0a*S2j}%Rpo!q#dkxF3>>?Tal}-0H@ZA zwj8J)nflvb8rv1dM$fseSERwzJgn~nucUlEuq8nL#c`Qni08oY%hLVdG8PEwCOEEE z5VMph?@vI^e(uG4*v-DCkIK3q#goGU`1M)k5mSHnq0~Uyp#p>4^zVtg8`^Lne~4qH#EhKy;lTXR9IVUbupKKvPM21up;uH{e0lLQLO0JpZB-n>&#wS&vn!>% zl8f=>1o2s;a*pPR(=7=4nDKC*@JC>$l%65e?W+;1QL~w;&uOITZwoPQ#Zl3>UslcS zm@1h*dad}J@du0}u?=uolG#nKo!IDc78H{H(zH~zcupwY$uhKQl*#>) zhxe(6Te|zXN3uplCOsGXQad{AUgN5#hF=X9#TIUZhiM zb(2G_o@NrA(L~tM30+~Vc*!41eEX9Dlr=9B3Q4u9)`nJ^Wllz@yPC&AX1c#BG+Q=Zj9Nf^nT5&jnB2q>`S13sD76Z3Z{2Y zZfK@+1$zwuW*m;A5}Q zX{CcHXZ00ni)an*%`iHD4V?%v)9-7!yM2uF$pgvrwy|&8y@Y>S{Z^yqblka(NjEp@ z&{ly@hBf%>hJFe|dMd(38kfdc=8dBQQpKBrfl&NuZK6@jRQZtML#k0bLVi_Vc58R>z^{X1hj1-Y3% zahuawNAFwQlDO<)@^-x~FAF!v&d=?K6Ve zKH~i}s&5OnZP0E4T5->asPx5=?2faCETwGR%(5#5-#4OiuQUWM*gA-4Zj>kbL+ip( zr;$5mBF}b_fl+e;7ltKR&qqOfTra)#_w2p(+^hh4-X8yOYVQjeD9%J#`SF(K?i~vz z)7THsXfGa$hbGOZvF9E^u#i>~_-n$|-TqoYRUIrddDb&a63CEW;w$JJk!_xH*X|7e z?nzMZYtngna@ac|v^j<~KWt{FdMjMS*^ngmnx3bwVbRW2G0&emIi{!o>f}1Sq#sez z16{&0l)Ss16>%6Og4K8%m!4azwyfx*_y(L@l?xXjHns$1C{ds1%nEg&>Y>C|{Q~@q zEDV7Yeyt80aPfc{e7t7Hc2rX$P;AYJg``NP#yyxi(P*Jwc|0isX51eN)L~#i;Gs3> z`kQz4F0ei)CU*j*(mw?#q7(RBJVEZgZ%lKB?Ot~eQ?0mz8Fg}^RxFb0f4Uz&Ur}#< z&jwggdFhU>O{)9zH&*tg-V5rllx%pP&#$0TMa@(`kzo?K?b~Hjxd9`b3>UhRC`zpg zwZPSL8Mu)}jSu|_$s%5ueRp35H{lHE0PWoD2=5M#3Xh=5wNFwmtc+d94MZG2mTBb@ zKqwMZ{kW8C2uO3Y+rz2W?g?HvbO!#mNvD?OMVtM5er zZHz&mr&Q*Y{Tp)=vJc;nC&Y}T{53>m#)ovgoS875iKZwE%h{&9 zj!JH=9Q&v_#vxg_eRvfs)AemTtxd93l%C9R#(rjk-Q5`Ve&&t7c{?k=%{q7Zh(UFf%)!d$mwO1xkIgq(;IR7 zlZf*_cF=Cu6I`_Y#h8^8qQ|3xUbsp(N3Km~S(c*)L}tlk6)#|Av4>_rZc9Xl!60O? zB-wjx0}{a|?>e$5bZ1}aAZK6bi#&a~k?Pj4!7~c2QW?>tIYsi2Na0N%M_h)TJbwqJ zXrI$73$X7VrBXd=m3)$^UH>j@Q$Wh|La-5obMpw9Lv!3N(;5+{1xpXzz=a2eJzNlRV^Z{;vC%F$*USwo63nYh!C0 z!325W;Ua9omT*iC+m5uQo@NCEA>f;!0Hy$?@wf?G-hgdK3>s57sV#xpU4Vz)XX*;_ zd59tqb+t{4P9e*#07Eg@7e!GIV3=lpLXHQxd%(z+--jH!y)F z@_A7t2}R15IrD4`1$8}`K$BtB(%=rP_sry$*Z&IH4B^t-;jF6L)c2`$(81`*6bfMf zQ22X;{)56VK}Mm=ezyU4xcczA#6csib2{CgHq>N}cVw0!{mC~12AY6(ZTtDrbFrSS zJk%@4Lj{cjaJ`GRh+qww02`vJ&`GkX+RjqviMM86cEU-^PgkZ_S8RP&dbH1><)c(1 zy}r0lWr(u0a~X=a%c@RaRI@t6@jC8-JA1pP!;rPH=87gKN5sz$3-ZEe)gpM1eZ|v)?fuct z!Yy>HasT1ou2sNQC$9SO45Dx`$7iz5QL_)@(D>-Xle=Q1L+zya(3yAMB zJBp&8?$uwrQ*Bh&3j_kWJRDXRz*I7&P2C)y(Ci+|H0cCRl-EEqnEDqpf(YEqK5%JM zz!ncKB#M_{&$mRwM6rntt7$MICEl?=g@o!q>F*KX80%(eVqp^hZ^zixvmAtw>ivbk zv6Y8#6JReU@aZdMheH&z8rVeU?nG-ZtuLCW!7tj`$ z-xSik#0EATg{?EzGVtC)(JD1A!Le2Qw;n3FktbgI-1Z(A(T0csnE?|hhKk>Eii#f- z?O`nO{_vZ*0X%c)%kG{^XWQqP=)5>q!!43B@_>{SNNTq1M!kH=@=Re}h2Y7nC7hT8p=V}mM0HX}J@Vx<$`U@$ z#g3+#%MlZjM!W1@IM3E_PQo(A^TgxPginJe;VLy~1HD@8D^j&sN>2-#G_|TP-G~g` zx(sM7(ayM<-*|E-h5MUV@ehxW+PLjd!0cgp|y~aM! zo{@&J&AdtWGHzA-%%uI>yz>pwKQ8_0L8uv&Hvl4{%;%aiZw?ea2O17;#1}wfL6$^Y zrxk4s`(^Q)vHVTz0r0Om@g*WrEOC4vWtjD zWIJ>`Eo{wxLD{#5i7o9_96BB?)QoO+)6?bKt>ehoImc8^+v9J4?LIsBt6rA*AKPL` zsB3$MO7+1rAN<9CP=yhuPb|LC*4jM&@5CSs34*vQ{WDvFJTPL!2TL!(Ye4GWhp6{9WmfHdUP{$35EtTgk4qstT!$ z#vz&BC7t*_iZdQ?&T6FmGCh2Z1$IbXSyL2EawC~Lnu5Rp=VCsNJ{7kzM@dQ{(7Mc++}1vAgvhXZJna+^Rwpo5VXRY6h>y zc$7*plnoodF4aTQQIs(8v5rvcRylGxAsKSXV64u0PkvRJ#pkdwGe}B0g~n?lSeXXR zbW7}V;C#MazqGL^;%Ac%@HAHNz^yc~RcV4n{5U?i0$+k2d5})71?mNlAXOiht3u&^ zVAv9Pet-bD_W?dvKP%>F-W=2Yy>5$HvH8JSGA-9b!g1&1ym4#z8U3rCALzY9xBx2i z{O2UzObkT!VX2}ZkDdq2!qx!CS1cW7L-qMG=|hh zVau5JAGEe8U;&hsEM#dQ)8CtN{RinmCbTF1N$1|5_s%HLc+F%m+`fwJqb64s00yoX zY4A7 z9P0&1pPn1_U1TG8@Bj@wWbf}`l65&uvp;qGdy_u+m&~@hn*_9wm~+54>n4Sxu4=zn z0tLn-sMZsh1nHoBBA>@S_-oz%AAGjR;fMdhXM5~MLQ}sPavFQac1;A$ht6h=9yv2U zP&+(o-JnzQyW)uk?2vbJPzRMtPlxauBv%Tcb;h;PyEww{?@tYUp?Q0=l41;>$Oi-N zGJn%22iPtW%(Iz`w0>P^Db)lS;C~%FQ)sjR)9h#MYzYoOXBC3jcU=fXO<$qfLd#+8rxSt~E#r07b6$MdnDYG%w((P+=Uw~lDcBa5iLvEAv8 zW+Q`@X9DmkCeGe1^}2?#<$tki5)Y5Y2L^DQcnlDV5(D9qQ*?L=7`uSX-tG9$znS?Y z1cM=7O)>?Bf(hHCFk0aJzY3CQ+mbwaF+2DYcski&kCvKj6U~fX09rzpDbl1jAT|RL ziMmS$d$lU*@X-nR{3O;(Mg~y$0GVIx?YQzUlpRiGMRxETx%gI1=^_WZd)tuTp1#5|P zbVt}`WLKhxOam01Up_?Jw)J(W)>{aHj(QB-=zE3*oT6uRSV&vJ80>6;OzSfxQ5SHy zom;uxXmJT#GI1Oiz;a7qC`@j0sr>U$0CscO;g3oG!&T54M`d2~QpSIPz7fm2zm!M?&ya0;U zQGIUg`fE3Wje&!0p$>Zv4$y>S)kX_p@NY`OrEFV-fsL|OriP!N3~;$dvJ977@H}S4 zYHbtoc8iJe8hF)AS8GHE0E?ADU%vq$MI3vdLLln$(9A%lc=q5FTZLaa1h@!R)xL&x zsMLR+&E(f>$@$HM^px`=6x~_qayr@Aj&QPga(IG5^159?4;ZdlwV-!l-zgR_YU@ft z$%B}f*{hR69{@o&zO!VmNabhw8Qc>0rhnPw{V%OH{@*U|BCrK=uM-N*85lb<%wBmc zUmrym#^+{s&7iHsx#d9^ore%%%WdNhU`9#HVI8ttrnOs`dWW%z3gWi1+*SyM{^zIy*yiRD8m^l373 z#B=y_Ri)#f7L=y)DP*8GvYl2GJ(H=Yne4eJ#7iJ*8tf?(qEi6L0^4_j)|3rV%zqSc z-x?pxss^+G0?LLU<=?wHGYAAa>bw4a1E4PoyLsaRu|hqKa?5p{T{^s=;NQjS66q6w zHZnz?7=mUi%G|v5zf(ZnN@K~bqpxr8M?FL40xLeVn2K6OZtLvT=x7J4WDYa(u+qJy zlJI$VT>1oAD;d=S<_h8-#o_s=e-1jN>el$rV{Q_Pa)U$&&!eJ9@@n(5JRMI~KOP$n z#Wf%1E)S+Cgi_B0iCBKG4wxIhjfM57*v$US#TL+FY5t(aLLwb6X?_BQaBWF6X4}#T zE^>(=n9j_tMK_(caNi|RfwE=ucw5?Ve7A@daS2#hN7-KYe87&anoD6zF!U_S)*0{Q zPU8~jVLX;H2D30ZsNj+ie65Qi&a&*@{B6Jj+EM~wW33K78EUTp7-Z< zxuT~s?_rAS%srO1YB1c^jr6g_-O1Ty)-1`>ynsVX5S%wFkyI$dE33 zU?0f&YKy?Es32_6!VOg3hC1Vxqr>vcU_kWYQ$gNZ$*Lvf<(L6*t=9SuEPP6$#KAlN z&r>GVaZ8=C;|}oRTHyzoYyVGv%@;|9H%9T+3|MBu7>y5K= z6yKFYfw&b1x1zPB(M$KPaCw#9wuXJ%ji2IlINq5e5G6PL*QVW6E(Mr$zO%PxOL#^K zi*s(e@el}1K0*~m0a?M}l#&A#95mm8w7^Z^kFq5Qu9dIn+g6!K?vMtY|7JRQkQN;( z`+)m^Zu>P%JX-u--*ANALrZYA>tRUJU<76YPAQ;&)83^sc=+eq0TyH~I|~)lCoXWW zRx6-}XQMrWUGKz=1-JX9Pyb$Idxs^=|C1K!8G~*8R@6h?@J9xehYReN*C~F4abLHm zoZtIr;m>{~V|PSrgliNXkhr0R&X;o8?VI!NZDqXP2+CE1Wbz=&OWud+zdSG ztc3|PuYmnNuv4$JjQ@el-^+OJ{qyt7wtyW4oPsI=EZi$(8Rj!^3MwO0jgMS_QzgKC zw{Zzrc!Cz{nVo2j_8-zFa>zez5x>R8f3-!@pe-`Ov_*9Pwne}K1MhFgsvS72KCxfH zXd~vIrCY_8S*_hL@ve?jx&@p7)7vyk*msz~S90w%6xb%s8LW1m0oMFaXng2uG-F|j zk(yeBaU;i(7phtWJ6yikj&^8044!11&kkv&pp5|4)|`?^OC>El4D#J90w2ndK_Q? z@tBQHdDcCnwJ?InV#04yZ{NO0$APcSR;97T9|d1dGHnk?+=gUV8%TE)*5o1I>n)Raey{z( z$D$Zu=&fRhSuhyG?RBOqxLtJdg<3f2j6c(}#LmlBJQISP3+Bo4Me$JE+A8#XTn0LV zn#>CKlYUj{a=+av$c|VY`RwWTD;5BZ)ur1>&DpU6KPIU(W}nC6;MoeG!dS3B>S6|+ zR^V_tqYHp3A=7M-X=SjNfNOi>87Le1C|NK+*5Z;Z0H96&n?Sz-da(WE6&e6s6Y4I* zsq=d`=@NRg0k5KlpW5%W#{b5WGA)^pH;;W3^|!l3ivreo*^UmjNUqQ0C>AymdGE2T z4u=RTL&|n^jA}&m!0Y)Tjb}yh`30yZ!OxcL``JUedNPASPPEch1T#y}YaVgpC4fWC zx~`QBKj}@m{h9ZTMvoF4C4d#X@^4JfCGR5EdaxU&U4`0&?&inFfq*1nFwVIZVD?6( z-l$U^xU&OZ%;7agiuqIfsKKGSRS>Sx0*qI8(lC!IfGYEo!H_!Yx0)dP1m*{LJN%=P<#$;Ujp^Hjx zuJ(t6f9~Bof8A)HkFjgIPhpdBb1h-T|4Z;vjSV>`aF$5=K7~cm^mX%|EOS8gQN$#4 zA7!+`6ePXs!Ll_eGrG5RCIhC>FFnNfUj^Of?g*pBxN^MzX}vvC?IJMYF^p|aH;4~3 zZ7^B-qNv%}DZM;8@nP~nM z>ITLfddxLg7{l#c<@K*$x`(7`bljSHP8B98@noyutEkT>ne{~JAmfxtsa_p8=G-|c zSAWH(kUHgh?i|s$lI(4bF=Ut*#fnPt#@d?qRmJ*Lg?8hQJ<_biKf!Boh^x{w{pS06 z+d+DnzyoYnYrJ-+e(AvN0%iiwFq*Kt_PUi9Dd_fut^o zK0f&2RT9EXF#wffzkAzHAev}Fba8Nx>w+qP1=<=;f<({Me!5YA2B>DG&gd_^g!2Y= z?xTD=Lzd`$V98AZ`Q8?&sq=Au2$(JCH~e{=i~n_%4f}gR&~{0ZjhVCJi6>Sb;*;T~ z0I_S`7e5$1cBo|N1Zwl}wU_HackFQMEe3@fUzq?<;F9A_%&SX>D*!q;u%^8aUTsxi z58j$N{&^L=dc*(;-l|$=JPKa@xuzSuHPHrCkl!q&TD}w-Ld}&jp2m;L<=9uw`ESF!5Ha8OamH%UQ+PsI!q>Dku*}p z$T9B?*cA@n^{3QS~4Rn1C9LPW@$RKLcU)Ss^16Jk`p{RUqyYALq z4@qz=@NWf>34z1&w#%_oSA7u;7~kJ5QE0FL&7M4`lIYpJpG*6HbN#=;EDd%;S6zB~ z6Oq;i0|-DEk;!p?5@Xt^3W}9LdmkW%0)8WTYFxv!vEJ2xaZdp1J{Bqhg^xhr_wBt4 zUjgZwv1`PWHOcp*0fuvM#@OKOZ}4w$L7GMn!GH}zKC>+X%oEz%Os2-lRN9z!P}!bd zq}STFtwx=OAF1|}j9BqMl`SMJc3jhaq-n_cfms{ifsh(t@K?0r2&sL?9Q4 z^)v4@Zjr%g<*HL}JX{7YnXUkz;t2MN2B{z|(iRZZ^!FIrE&fPwFw|aKVA*3vP;Y(o zaft`TUrsTnXc(|}-q3lh<)y@RH3}yF@bTr`o4|Tvp$VL-V0ySriDw4C?hGunB~s#k zW2u~1|9}7k9Pfy>^Dh;H#r3?$HSy$lNI2N8+q$QDU*oTLH9%0Gx?pNv|LihF_><|t zCluuk=4(XI0?YXa?|!0xYWa`9TACcF)t+#Gv=T*O^15P95xwClsqvGeTXu7bi%U!1 zLY6*VBH}(Bu|S{%FiXz(f7g`&wlb(f?vks10ae+gmmipggt1TcYF^t*^rF}uaAH+8 z1lT(rWB!?=U}2DGtNqdfdUS4I## zrYPD4CWw#>SukhC)G`!#p*6oFkUn|;#sh)Sj!D-v{>o#F(C*ToLc3h)zapgnCA14A zUrB7#KYid7UR6~!vtD&Y8km~IiCg275(bX%ID-(8B(hG;Ke4!b%=huJ zRnHBsj=CXsS{|#&eFEnFw2p@9Gl!rT1^#S%bX0iYuJ+q_8~^+&SXV6@JOFO#RrCOj zCIC%k>r(r`374p$jvS-~9qsOrmeWFlTk^i`pwRxE3WX&_fIpn4eE1tv_#g+mC>x7I z7NviasgS?TRR6fhGWxv@@1z3%7JQFh-b z!ve>&7}PF1svbah_v>GOy*L4x=4sE^obRzS3m zdGk9AKBYQUbH3#>D3&S>UVxPhLFjqxt%-IAUs8?U#@P~I*{lPj1l)4{mS2~*IW<`J z@glah%fJo$e9|I&qq{B^mmg6k=VANb8y-yWv^vO--p0_4|Y@~Hv~RCZiR zApfpxzg?CL>mkgI&XZ43kr#|blvruMCVZX3xQXB1NM>MQNMU+rT#KB_+WZhcjN}x- zK!TJ25}ezDyKZElE5cJ6_p8DuV=BvjYb>a-K^qS`+&oCuB9`C4Y<@2w>l%aeElgKY z6r6X0>=yvK1$JoDf%aB40aj~}$mk)62r}ROX^^n0gLM=DG6s3s|6KcgzjPbf{{SJr z{x>NW!JKFd`v@~9a#=HZpS3z_@M?Mc%3nLSpTJ*eWV+THy+E^!mF>3gQ=0o7~PJ@f(Nv74w*K{(W8=%sI82@(i z@4ZVP_}&YW#PgIFsP-NRfmQ)PnO$j|m?Vf-^ia9s*}>TJp6igLGJXu)yj61Z`aD=$ zTkK3ZrtH(3mrN)VT4d{$T+v7}wt2A7;!U*Adwk}^oNEt(OFiX#(7-KSP-NJpr00e>(!K-6dUxA2V3{03uAGp0?E=l&6VUbu{$cxpQbVrOD^lzbxNYYc9HL4wY;`eeSyuJ}Sh%Lxd!$@q-liyJn}Ho!-9s zzi4~Ua5&qpZTK|0L<>R~Mk0w8B?O}mL4@cfQq+hR#AwmYFhUv`8&pNp{z zDQ*7XT>wrv_FhRCy!SEIB~)^DseHC`VtJ<{M)~cL0b|K)9>l{0+vyos&)lxdGj%cL zkxll$VBGAuU5CSw<;;*)?i{(GoRc~vxNNA}VA0s3`AyHkj~{mvKFkyp2=efyT6%Q2 zW^Q$Ftz*^@WH4&G;QFIxhxJ;|uL|VXa&~ix(Vgdq_AyC~cCgZ>?r`PxG$t1_WUl+G zD^Ku@)=fyWF5;s3I%DL>i{bUYlMPv(P|@Tb6~So>!^*PY0-EfT?}$dNL|-<+iYbK( zLR`d~3%8g{F4Q}mI-MRD@h|G53;kfUx?12wFHk~EnjwD zpBJFoeo30&#Q#K-TN4^=yi*^PNHYPl`m-Bw=`V@t2e0!>#G?=mo1*tk zivRkGe|^(#Hb(8Py`38i2lAetp16bBLqAl8v&S7mu<2Q-;mH)aBpyKX60D;f6Ut?8+fVM%sef>P{VdklfOa%WlWXt&=e!lS z3M*$`8H`v-p4mxRhOo$2{xLH)#Mo$#XRQ_G`+{crHZzs!ruCUASLxnT^^YwZVK6^p zzum1loZ|jjpPk~b!WQjV{T8}A;#=-jPl89TL?naDv(#;CcyCU>O(~U(*kF5dzG-a0 zZBg!{!Jh5AI<45xe50TCxx-PTOE&tbps z9$k_~W5VaoH1b|UE5>nCeOZVFI_DP<$=|s@B)VQYR$Q$h=0bC=YZ#UG9ytLj*tl&k zWzX&NK(HUibfAz3S`)G1hnP8or3`jNK0P2q!hJB)!vNIZQTsxr5|NHPBOR%d|3oI5 z64woz@7*FMLPF@MeQz|6wr`a=$55|$#ICU0Ep}D-W0nYA7NtdMEs-)i3>{GJ=?}=jszRYqk^+G{VN1?avjZ;M;dKCg?hPUL-Sk)^)nPwvPU4bU}~o zSaBNBU7rK}MUAY55%L5B$~B(q<&{y~rz;WWkzSz>a&Ju3xK{ODD!NRHNGWPMoHj zZBYjof8XpEkXj8Q8XRtHBWzqG1dV~wIaf9kL6^l~beekryyAl}MKBO=ls1WD@wi~h z0&mXun?2L`{fP*Dh@8~Qiu_7<3jR*Kd?e!|9yAb&mbf1HYO0qFfF26SJ;nzkhb>`W z?-@Xu7sWyy-_t5L*uHdDD=Ihw;%)ZHqGPmxmOw|O3=vYB^zXM`mn_eMRKR=2H$Dx%Vk+Or zN8U)A3xfTOKm6(;s6o(ep1yCziund%)M|M2gGr z2iO1pQUYki?%KL~&$5JzjY{-`|7|HGni1WXET6+^^?u~#u-pLGNVx4$XQ;RhA~Q9M z8hVy1I3a%jFwHvdLEHkqgCo6GspZ`~eEY6#om6l1nTYu{x|K%Dt%0j=MTrimPR^DqMavK#U4BA$*XZfLMemSUtD7^HWikO_1Or}3)x|X=?=Kp6ORl>J+v0EA_}G*B zI1DhfW}IE@r`PXWpx_fPkfa!VpBg9S7b1d#g{ViU>l)+?w3%=Fp8Vi6&BrkCmi}5lL*E(ET!tId@#7+a};{O(@g` zjlgdpaH3gBR7rJv^lxJBK}dyXpRKoSJ1;8|hHlCdc@(&{J~!W!7CLNG zh(hJC9{YubLU3^B?^=Is&Ycf?F&<8jTqnL6Zs-M&tK2!)xL^VVe->4M;-OLcBv5D* zK?R_Wwj6nQ35WZ17Z!SaCo1o~m63mhoD0;7db~>m*_te`Lv?|tn}I04X!7TGb_A37 zO|nMM0+4q6%FlFF?;gO-;e+AtVn#;@9#ZG{30hue`hBC6{7o_ea^$+?*Hq=#@k|wy zC*a~!K&c7QzA5v>DyqpowC))ycRJ^zsR=Ar>!<07)6t8~l7U!p6V2$XLv`KN*Pah0 z+ix8^=?2)So5qcQ){z8o>(cgeXwkN@!S?bsaCZAF3q8`vreXUzNXGhorVm@+q|nEf zAO~3Ircx(WDD@pb`oG$0Il9_fD%MCW;X|FPAIRbtd98+05VmtkU-pHmQYMGOz>f;@ zALBk(=ATSx&si%Dq`5ctN=77n2qhz>?Qp|gY%0$!ppVkD7FIJPui4z%5k}3(24(Se z*3p!KCQNEl>R<@hqm{U zZg#$JMCPxoD{3df8UzA?yd*E#X{ofi$ENN$`I3ZK?l%qBz1=*|_6E;u`9X(NXwPV= zLQ=8oa1Uf0;_21O_eV*p7Bl=SA%kJ_(eEI|sQjZ~V)#3+tJ$XDXi5Kr?2XrCj19b5 z@u@^uE|t*v@`zNTeI3pnk;yeutm?q+Yrk=%{F)AMGTv6`?%B{W9USRnya7O=vb+>o z)?h%qL^DN!#=Ls$a?uA94Zw%9ne8#_)FxNaO|>M=Q%};n_HF>&i{+qW#{1n;gsXyb zTiQw7Sm!K*I*%j9vB=I3&q#d*py9pvH>w(Cgzv8^5b&3lhy4LKQBe@;@vLXfiWO)| z55LT6xyghqwTyZk0IazCqHX^i`ji0Zme9!oy?%y)ThTDM%60GSC*Pt}4-OfBaZ=42 zIcXv56uAWj;`;|;o%DCc#-r+|P<3Y!F>RdjyJQu%y+*=L3H@a>XqR2>z3jMM-=fF8 zGPw56{QFndf4-*n&n%b8n3d5Z?0k4NQKF>0Hg){#p21);0F_G5p?)?2ZZ=%NoZrW= z%2V2VtVS1^g}VUJIXQE)mLpTw!KhhGy?OwTeRYH)ABe8(ek)$uKqHo9xiGs`on_we zxKRyY?e8&m+37KE25vb`jaN@iIBN9hu*Ofl*NnhObtK9%nRr~xZuyWkfu0dn$+?=K z?Y<;)uco1g5S2h(^oY!M;q0?tks-pC$E?OYA4gJlhoT7wk-Tr0rkr6hwsz>&?=Hso zT5J*3`DZ6kvlnpgWmSF%eRY@A6Wnp0!I7ib;=|0)Tcckti7p6^q}*C4T)M-AE*U0A zHo6rP!^^xKN+d&)-FQ*wp?KWqa(=VER;!Zo zP7M@Z{-KG<>PdkM`S-c~*@PN=pboJbd}MLv#_NN^b;TTN+V+=lD$pfa>1V z{o@XWc-CJ%_|js35sLl3AkF#1T3=iajj6p%G_?%{$PJa~GT@6!ybGhm~2_-B& zz+LTaS9WQiY()p4apV@JF>Fd);{`P1CuhF{aHm_vc9!LJS?vP5xit^AXmO9pCUK8Q zvEP>jqC1s;gKoKeAPkLZ`$fOGanMlVG<}zE>)|5e?CaP1a(>xOTin+(PTGq*xLcza zf2KdV=V-Jk;ZUP~V6QuImCx~q`30eP(;+5C8P_2xua7lwb$t>;zFV1pj*IE5((;_QU?mITseL4>qj-N26mg`?Mx z17X1sP4dP|wfzw)?o74&Gq?5^HV=fUj%55uOooGc9&z;hmE=8ZEXxpetxHQIey}G8 z%o$f|Mmu`B3K_Yt+OXX4sc^{;FFwvV7T<3j(0s^ro|I#_gltw*l9-G`nne28Q}SB% zp7Qv4+*J<)W#ZwwK`NaNw=e9MD<%h=>7GlEJ*b@{Pjh$0T zpzOQD!ZX|7e0-ti&BOt@8}6i2nKxx+;db+$jB|#6_Gd$0B>FA}nSv1GoUq{)G2Zf9`_>ADWKF7 zwoP-U!!`)uI@^5!>!<~D6C6k7iYKUPWFoST5P*apS|*1viU3epycrt9`m0&R^m*Kz z@D1hC$*qXjI5p<{iq&_~Q@gL3#*o`r?upFkO7L}r6zwI%rFd}0SuSx@;N$rl6x0KN z&LuYHn+vRg=I0wHFnbEu?J^t3_kolrF+PAw+vwEASl*myEM zH5;yDA3ysMIXL8kZE$JDuIE4bLAe(c|mLZld|XGPvoAu##4L8nJa9V z8Mkp&zt78-T7u}f=_|!N=eu;aRigBq$wX-@>3tx-s(5FR$JmhHn7Aig>LIR-a?T$k z5ZSc$VX)z`HS6Nt>=*FGd7%(U$AdFROrM`S*~zRwhbd&N?isn&ms065nU%DW+7IpT zxJNY&2)gQLq~fj(=pcuV^(^+yVxn%2BQooy0&-Q^6*Bg(3Lpk4Ti1ev+@ckP{b(or z&a~so+*Mwvr`OI~H*y}P5!K?k+{2dZ(@hXWK$d)=DU@MuEn!-1??H%Z^;aVH4%(q# zHy2(qaJ%*=VmTgdNldQIQ1Iz${_Vxf`LIM#BSk$T=5R?gCZdhBalsSld|Y}7pO++x zw52q?enLbi@fJVS$fEcGaU zm|a(s0)rO_b!n74AVL;n9FexF5V+1dbtnidayg^_&^3mP!d$o*`b|yytya1eoXLED)3?ux(Z?Df@3CEKEX@6S?S9`R%KE%HBBS+<^FK8`G8oeK+PbHvxbcIiW?xz=*um16)QWymC$ls;>UQS=?vF~fBMl&G2yiAvs_PtzzU^ZN zG|MI@_GAF^DYhE;SzQ~t7MiKYY((7N`($pnsj%M}>l!{?f&34ve8?nB1l^)_{g+iv z-}t{d)BnyYmx#Z-XAr zsyrP}xs+`LJ`Inop%JjOw0z2skUZQKU4Mkpqmkz+I5YUeaYn_4*Z3iM9RD@eyxZ3Y z!9QLZETt+6iqP8)bx64(go*13LVwG%Ax?{3CVv(7!;{_$d+z@2ogQs(j8tmtK&k42 znm@YeWO}XXPIcmQW>X(hlauL_pmI}>iysRT1f&_|KdW~+EQUNZAMBXR^Wp9{&_sWg z>Q=n4tiR_NS02z)&SmPbDi7#L=*a1~RhDrB+)v(QSJ^jne+x2!4Uvb?8wC4t-7cGBQfF}4U zlGK$RjhRU#p4xs41gq3541j9dT)Gn~FxLuBCxXi59g|HnvSPo_#2t-+Oy;dw>A+2r zNwZjDxPF-JMYH%{K>Qev&B)Q62o9M{K6HNh`_kEhY*TfK^W{JJ&H?OyZi za<^;8UD;BT{8hB8)*TGmk3PP!eKV@^KIvoU=MCp7nE~r?XVdo4R&(*qu!wU?7XPX; zaiG&olHL1!8-ty$A{A+W(Qw#nw49Sy*`kSow-Ir-=I&uLU-9;f$?=|Tq&R!df7qZ1 zHLA;!;`8d&$kYbN7-u}PReS2gm{{uxh5+J~;SB?luV6Xknn$j!bo*tBK&#|Kxy?nz z)1=2z2hfb5ef3#l1)V2!ZYVV#GO}rMicwN!7l%ns?9cNy3 z#BT9$n&uw9bic}L3#5@YHcQMq&cMA$W%e}1)OGiKzW>sld-2IKZYlv53ArdXfggIO z<9Fl3bL~kVn7Z`v5Nb$lP<7#?=*Q$F3d=R-A%Pu)Es3EqzBzd*R?i{t616LF$Bj~j zlIL#HZ2Oma_9Y z6t4F3*zqOYifRsXm;u$A(WE1S<|CYcy(l}&f`*X>F#m{KJJF}{Qd9kn^XN#uq9Nj7 zP6aL%=ax7%FW$gDSwNG;1H+G7r;gfCJJ*;}7#*J|dH}-9t50?~CVBSB4Bu%1!Fl~K zv-q1taHsm=xx=`FL}DCrKgj9=*_4^DoI?C#(72}9jI7TAnpN`>@X(x60G|EI=nvE2 zcoz-CfB5i#fKNQx5G=UkTVJnx#WCk(WB}DNfZE^K42*j;ahIk^lJr z(t2`n@5^8QWsqm)Se_{lY=}D%JlKSi2=)85f->4)%ZFTaEdJMcZcmET-o;`ZOU0Vs zu&1q&$x^i3oX7N9@a1ZJ^3K=)N@i1#NQ;rZ;3{z#{1i1m*?(QvaM2=N?WqUjB1*W0 zl#c~hwC-n9vsV1R@M9HYjSGf;%F^^BsGxXBkIZZ&W7>G^ALX%&A)Cb!091x54Z%-dDC_f8S!_}e$t#=etet+7VRtb?Da3zay*9q;tp$}tyi*t|IGicL!Fq7Z}4G!ikt(Z8WD zn>~~KwveA(i-yOzD|&iG8P6NG1a-A2AjueLehLb}iw z5SMzd4IMT=gQMP0N{=Jpo9B$=W^|`nu9cmr83e|4ynaKNTY>?u`g@6*9B7ML|EWS4 z>XnpAp>oqQeq^uQP0j5A#`l43oF@&beHUu2dw+t!rFf53M9UWDLkRkwg)q6d8#_Np z`moHNXsgNoRVd{e0Z>U^TcBdS%l49HDNOol z{%$nvw~?WFy5pE|08IfV6=x=wM5nn5&~yqjP-GziO-5HtNoE@v&dhjE5nfA)Rrq?D z3iO`78KC!cO97yAeRWjRj1Ulh_Fi$aq{UqpBQ|Jf*$i>B>T{%sWB}iV zeX_w1{AdR9x&|lpkEB=ygJ0) z1(Vc!;7XerGwTK}KYUuw=e%R5`~@eTI-o%o{oFmTY*Nsl*sZ*=@-_RL*(w#2pwYRI z!JXqU&FuP*j0Jw{8kT%|?;eQfa0Teoy)RD+d^smD`1A@BEw*o9@+^coVX-2QveU`X ziUdki8l!z1z~FO2(sEmYDK^0u|~2*u{P|@ucjY`xR~cup`JST+ZctnL(&F{@EkSn z5{+%-j%2>>9UJ$RJ~Ro*0@kJvGFqyfmhzBW2Q;@csaL~(j3a_v3aSjFTP12Jmd>l| zAJ8W6Zl25jGA~{7)L){k5NKY_mYtx8WT+!!r4|XjeTNh|=HGbkBt|xh^nhX=cRl6=30>O-`=e~UB zz%EFxQ!j>7gGFiT6&}?;bk{^ani{+DBTcR|2T>GB0Z-&4`qqpuvWxl@*>S5@dElK^ zm0U%VSkgiLwqEtie+=}tL{OipNADTDI8|o)M_UA_oO9vi4$dGK zq%O;19|j9%!*2LJ0qK?8@a>C;=XE^3uVj72Yw)3=WRE+oweEv;6+Ye zsJJ;9J-pt3>>#X1ujz_-@NA4~PQYdQ$^|bEDOeFl?1sX6LM7@|K^d9#_i5}@o`DbB0V?c~=byzMTS?}# z4{M;VS@g5lKy;ptkzGYw*oCdlacjnRw_DOTN<_8!)H4Gum%?NIs1!_cl z5$cT4c=Pz%@B?C`2&p5o*?gV)$5iBFM(A?aNjY~^uQ3Fdu9xjTuy-D4(Jw8BNFD?@ z{`7n8xENCqFNu!WR&T_yeW<(;`+Ql)R+m$guJI)U5w|4hTHT-ZU$W@8B%U-Yhv2@@ z85;fh?Hq*w5nN16?C>D(U|IeWj)ar-_+s?jhFlz24_~2-Lkw)(_)EzmdSqBPc! zn=la&jL1(TM{YB(TS+44#vqQ9J^L)`_z}LzkK5;mJX_pxYg(|g4k%d)>Jt-k_reNA z*il*nXGIxFfuF z$57g=bD7P&Wn2Oq-9j52O8a1H&n*u3Dspe%PDfq`19_$CCLjaR9R8p()#;c(oE6GS zi5V}g*~HEWPhOM(tPF1w>IH*s(-?Q0m+AT)@&mrQSBUCjyVsj)M~I4?>AJxD#9I3%Ya+Ivt+;+_k{IUhMswelu5omOlUR^ z%sBJ7(#q~)ksndoSvgDt>)#wE4Rm}NANP4uB<}aPn|~!EZwY79%g1RoS! z;9qGs7LvZZ=5pdJpw2QxgBsH#-irQoP=Tdo|IS2$)DOHuNU&?A-sWDN-Cqh8n9R|b z9K&FW{68BCF&}%;6W&b1Rx>SLE+b$xuZ|9<0L_$b(Ti+V&*5?nk~4gKVGbvKJ;D7! zSw6?JN3{Uli1+*Jzw;=6R}g&&fQl05Q{=%8juJpeP=m-Lou3_z@qNK zr9&~SXV943Z&!Y+TDG5&($sltBTgv2pK$`3K>ifW)sv&#|2|DgPt>OaJ$9|>!wqqh zM8x9un+sMycj;%W|5wHqz)tP8o$|E@O;Qt~bEbur9BPI~6=w?1%(j^=)lnmlZQjV- zG?bRfl>cBr())HeeBxv3q|Za;`josaEC-M5o*MZfGDMH*%huIIBgTsTje9U2WY!mQ zcZgqE<4vZHSvjVTTLY!_kTcvJgDsceSsT>88WMF#*ITynm!3-^Km2vsnMa4-mDOln zaa7H$X~MK2;L);ha|V#{fRx7|bHKU`lw`-S4SZcO?3inbjwjzE3zC=Vb9ysH#EzTjr}GZP9P-vf zs~QRG?4_`H7RCOYSi!)o-EnHsVUA^+;grxT53Qs!qv$#Grs>~)4NKm1qY!_+bx2u8 z5tUv`dxs?QrQtb{;}6s+uC+Nq0^AXG*}hjDzA^txe0V7$I>;A$HJG03*8Fl$n#%Xb z8XbGyM96%RmpZ=_viS@uxOH%`q3BN`Hb3@1W5lRDn+f&(;%S1G3+?@E?u zDK}7J9JQ}V22dH?t`+eIQL7dia(~fF>P^IDbVQ%TrqSoO__rIdM$2elMqN8mZpkzd zE_5~oD%x+ovS>U1W#eKzIPKwklSD=4Du5)Zds!0qMdi=epr+CWms81Uo0t@EO?8j` zi?PB8cBL7e;@930d`@WAzf!N^`t@2XfAulBRJ^@gW=M43OpaW{`=h_Iw|A)c_nfSK zgH{p_`kk!U6lrDx=O+f%MG3{70lOND%xw0Il2%85Siv!QOf!}|OOpuxnhC8JoFP)N zA%*tlxM3UdyeMTgxX7$3wCASr;^%4XR*_W?Q_*w9t5tboMLQ!?$Wf*|req5!<-i1q zyD^F=Uo==}da`zl8)-f$WIh6!i{X0%F9EsCcu_{!V;E)*wy#o=+Uj`EAPb0J5CkPa zk3L5(4ix<~spXVaSyNFZwfEf@hu04Uzo@C|R+pCXBwY5r(bt$uZU)YBWZ;9{po<8% zT<`CC`aISeS@eBnegC3I@!=7OJ5ikz+Ij;%9BK(#O%{BRPCioooEK6WadipK>GztZ zbN#MB472S@iMh?Q95jlKgU%#NS!RpetDn}asIVcAmqldf5wCfO21NhJv#82V*csoS z2k~nB^{VhSgrko*Vlic_n_s)uM^0Otvv|pMN}y=2z7Wm3{7i@7KPSn1KiePExI%3LGV7sacKwGZ_LxDA7D+O4)?*5R-~m(5v#ca( zoiQX=zGm@CtDSewsVu7_T&?k)x0n&8xD|h$=4zr_kbAuTs5d#TmImE`(R$vK7EGMv z+d>YLe`w8p77AwxN@`skiXWM<3o1XxGk=hE$iT3lt$1?3irl(~M_sTXjY^0DZS-{E) zFn!$T8go~s)%2AzYTh2B_++gv>{5>RQKb`u86$_eW%aeCF1O=expD&c;Y+_t{PC+1 z1Vv4E@O{EkGEjKJ^DVP1^KO0ZhGgs(!s#b`*=zU0j^I5K=FTIpb@ys%)D{6XR^e1O z`RozH?}QpuDdhnQaInTND425_{+$>OuP)+&$EskzlY3x9+ezvaP&HJvpy^HXOtPV@ zh$nGU-dv#RX=(X8fz17SlIioRpTuz0PCkbHp!Ya5#c=rT=>RxQAj5g0ENdcoY@!@uQ*uOQ|CO@|f`58P`)tZ&M+T7rtG%O5+E7Cl%8!^$@{>6I{Z5rY4f z&Fu*;kRzYm`ONWT;QXQkuF0kAV|7ICBj5wG;@B*Rr1QBB9`_ipJE0ebY6(R+X;neAM zKlgzXHB5nv5Fdt!czs%aU1aiv5=-r+`k&liA;bwR(V3s4)AR$N@d?z8FKNN$JT(om zQ<2nY%nB7)6uAtFdiHts$%G_>T6-=&+$Vdu_Y7#!!JZ5o%WIYanwpb!M{S)v%(UQj zwi?DtR9uEAi99eN>s*kJ2O}VAomvwCHl|c!CE$r51sL!*1!$@x4?umn7n<^8A6*$v z-Lztl+W6_f{`y2Tw{!2+D(2|^7Rmd2{1&X!{|!u`#jE3jqAQaoyjGt;c3;GCtT(OL zI)I%s?FB*24ot^`hB9iDZRCd?p7?bd$aG+*=}0gy=iznXo4Z=ymJs%PEN1cZ+=urk z5mY58P|mksdtT0muKoL?lb@dqDb6qONZdLScvv?7&XWY{!Uxwv74Xr7DkDHK-wG-A zy21NDO#|JdOy5Yb4W+YGQ@=n_>ToQb<_&a&<2;$Ql3^J@Q>I1L=!97Ad4DYjfS=d# zs^Db?6~R9S0jOU!73K6}VjK=JRW;2AB1HioOzST;?9^g#13bYDEZGbBU|h}t!IKyM z#+a${R#Zq3EgqSEwt3g*e}w;cD)cUXPDiu^YUQ$BdIX|A2g2szH=je)fQtBFK|ZtF5SrIJlSeB;|L@g{;2jXAlz)X5LVi~h4N z{*Jd(Zr+5$Gbw+P5XIx0B;dj7K)ih_DBMoZQ>s@G`HYv!eq8WLgu#7w*~{`U=*- z9;{ZM)!eP7{k6Q}!frY;_v}Oo(G%v^L26RKOX^9;th;OfA)R85)xPd; z|JFZmW$t56k=jnqtc!iVLj;+tkhhi^O%BJ)iS@n64AdD%*i%dq2mU>LV`qc zsD%0?C#Mkc;^;IU{y$V`{BJ=g==GR*ijfSw#}@;)zHzB4@DEv(8G?uF6nv6f3sN$h6H()hY`gnT{AjQ!ndUs z-xIZi=jJTohXi^6N%i>zsUBbN9?Jhw1C)GZ+>LGrB_9Ex_xRm@n)rToc;QAb*X zt$igzFp9_I1wRd%tH+VbiTm-{-=~-?!3TQE>s-Iipcw$W{a~}imWPgDwEnDN51wA% zzYOePsBNp<@}IL`I;^?-*VF7bHcu=skv6x!p#1Jv5jF1~tzE7B=vM=(CWy_$cY|R& z8T4%|dpisO@?MwIXvtN7d;Ozq9tnLz6BGKwWADFOisGzqd~xZixs$JhY(GufA^sIdUJ}WJPVT~b^^glxzSzvD5eX=%ASNJyyKz2~VhVR8TRW%cy?K4|WZ=Rl{VRW@!(eNkBx!L-0OsbG z=g3V`97zM4pB+3Tw!=-qn;D6I7ax^Sc0Ks%w_$(B>_8plexwjx799|ZmB4GNnfytL?@&>o)7Gx~ zV#W0GFF(|u$ZrxcsrhKJfx0ztVAA7@MA#*w&)He3Tl`}(ybC~gAhmI;403No{n@-Y z-Pg_R=1qTW?QWZe*}uO8ja(b-ih5y@iIju;wQlJ91lVp4P57K-Ie*C175L2zf&EUp{zhP~hJ;dZ z+XCFsnv{oT#K>&H6HZMz5Cke0(`mXB!(+i24&FnsR1gM&5rPz(lE8>4ZGe-28p0p4 z$2Q-+$%x`FTg7XE+-#C5&_Xuxc2NN!|9CYJQ z{ubBP5Nsn2+4=w3BtL?nLICpA^$Xj-ioK4P!q5ym$vV<~v||rGKPt}A9|=axTZ>2v zIra!~Ql5W&^6i+CSQ!$h?052QZBmACJXUOZCI)6j?5%Z@s*5-WO-db$nXCAzt z!ZAn^YzljiORrC(M1>m2?^F+xO#5sFU@G18u|Ghy^ND=>POF3uW~+@B%|JTwmJih8 zZ)#F~p(I9zqaAN+fz3<>s(ioS?zR{y1$L^7e1A*tuZ}_Rr?)Bu+Clwg+1tO&{V(j)jrAMs0iXJnSPnC;EQqQ-Pzw{dAmxVX2-cGvR7ae$8%=XxIc1i z_kGOT9tb={{#FY48u%Nf;gSV)=uWe;XE^Hdj0%9}fSdRy<2h_Y>>Sk;+*HHOkTKpK zbcb%HvH`htU|oZY1nFU@R|`SvsA(R^vNCco}j2Kw|4?>mW_*Kt$B zRcmkdpWJL7#02A$PeLF+XFbAea*dV-$GCVL`xdN% zLX&Xu&P-5Dp>jJ9E*&HFjUs-Msbq;Y?t)=-QyC5$u91MtLAV_5viBwguxO5?k*O-fJR{E(#thBRm>84L0uxijKjv zd0f7g)uxEQxYzWg%IS9<_yxrqLGNyiZb^+oU-h@pzoAo!9!^|7%{2bL@B~%=SrTTu zoA3o7{#OIr19d@wW``d3h4(UA^iAemW@X6usYVsVHx-5K3I@0L$-q(O@a&s4{Omr8 zwcEdV;FZc)$<(O*4~J_dpY)v?ZoJ$EXuPb5r_8EdIYEq`9sVC@ z`ZfV_6|JbE-LrQB!4(BxQux-4y7%+8V^q(RlAe%Pxm-!Er&vhth}*``{h!GOCTzn> zs@E?NHU8C}uA+NT-tnz+r83gw7YXi$xOiik!)WiVoGD+W87&0CwPNSTL-WQ!N?~xz zif?-J(OUhQSjvX1qW;xK$2uJ~QnqVr9)^rP2;y%_r}-Z~q*Kt7ust?N3lZ8jzdKnB zsqstWj2i)^XNOZRKaZ@xyrB2`kV5}+>;M$UO*e;FNbCORUq)40h!gOHYd3xI9 zw++4Yn)E*@0_cOzVpGJxv<7Xn&P!n|6DAHC@EJR;XQHJ$c87scAu2&BemYG5&3QYm zz4ZgK%9NH;?mA4-{z`p%sc@S1xLXtGOgi4?J{{=kvp*Hgy4*k^UTH*u%QvZIZ4QIc z&c(Zgk|Duy{gQr}7PpVia`-&_!UUGPUasD(Ulb5}d*dp2(D*?uDsIQcWJOHTc+O(d^g- zI~9{6MTi`1$gI>pSb>X1Plbw;%&Dh705bxzKzxCwp!UCviWpf`z-L2pjKc3b zVZX@`lbuCh5Ve{wS@8gOEvWE1cFoZmvlm$tK5B2(BLd77tsD1HMnu!(y8H-gJ6O@t zDsLqkRwrYzsKUMzxht@;>XM8q>Ztxl-m!dlF!g1+wbF!W>&3}{8NdP zg~6UALfuO_9}_%*V~GT-!1Nz{8V1twqw5Q0<#MOh=7e5)%*MRI)^gYs}ku;r7obf)OLyBt$p!Sg@ffxea3kGKF0Ug`dnsr&PN9v|d|4|>9$Up63 z_C8jAeO|K7DG3JlEdffH-0rViHll6jWktJ>B|ruxQ_E)9H<0B4EbG!gvV7zqF&oiN zje(_&&EaBR)dz6*q~pXJ&K@RSyX!p>{VsZ!_fVq$ntx?p5>ZU;dDb$406psO z5ak{r<$AQ-0#$0#eDv;~>6feF1dDNyM}4U+1Uyhad~P5@mpd9l;dsbTV8S` za;*K7WTo;f1gaS78X`d^pk~skfz3XWrcNPgf*KbCiVePz;gV%l!3bSqY@NOK24$Id zyZ?tTKqFv5WqD5h#3jI2)$q5U0wZn&)BkMhB}f1kf(w2F7X?LX$pnk3jMl%$q~ zXnPbbkOej+ns|2{kelkBvr8HR5I&UgDJ6RBj=0=3Z5Z$9jo=-t{hV9fj1h zAhG(eDAKg}V8q_TEgExzN#wBEybxMPHYcx;mN+h=;G_Ai&RV z9a}vCdtBR}>6d{&_scO8Bw;)3RV@F1{pjAmY2SC%Kg(L=!0*j=_|www#cZ9vbzDT> z$iYj8b;KLimeGhX0G=NBcT_;>C*K!1ETj~|$Ba&P1|Ee>8rNNn7xI}>AFA9M+hngQEok4|T+eAKr(TRV7~(92(< zb8gi5Ygka~a{vEf?K`8I+}5oLMT#IzL^?pXuhZVPExP(c$>v@Qt-fdiLbbn8!Q?&WIP} zzI)G3gxQ||6^Bt8ezNeDw;iTA%-qe+L=>q3r5If+MJ88Q*ZV`r1tI$#SwuMJ;LNGm zX<8;50XZYS6%4m+dTL!IJ&V^=)9(vS2O0aKSgwkCart286osBYC-rgOyQd+VwSj z6flBoo0z+_tM(8=r^X?YAjp#`pAWceOQQpA<$`g|*6rWGTM=?rylQZE@==#3`gcBs zAHH1GLW!_l)|^yQf3?u2AM}l4eI6$xdYY?LxFTASdgU^0e1pOL(lvujs1x*l~5N_wggdNrdA0EoDw(@KE~^XLU(tYGxgZy6&lL$=Jo zGU_oDjF2O{a^(vjAgRpfmkOW-AoI}SvlC-rlkqj_sss3KES9CY>q_IjEn(o;Hu1`W z*FedxKzQZ?v}7_KKZw6{SzS)v1fV>pC%}Clq36)}PXFJeVZ21Zn6G7k4*(FEQpk{I zgscpmJ9|9a>T=AggsG+tmhN)h92Ly_FLEM?`K9}>eNpkuH^1D`wWNZkX=D$?AHGL;yxBNWqw6Z^GmmI8Lt3K#9WdFu!dg#W4%$TM}n}kIoSOfs) zj0z3?6H8MmqwD$?4B3n+R_M!wr1PG`w`dYHbK4E|C=TfGP`3(Qr~6-}s7^n7{StBk z?y;HntR>G|^CZQW#ooxBHW_le{n*fNd~3(2&!GDG!E3}ApGshbx-@=>W%$uL<6jnI zw!344<%RhBqRuS!@uyOa5qZ}dTx;3$V`V7WWGL{vCXCj|B(t!pK~@rtti z4ECHufcy^*A>+7PHaicoU4xeKS$cya;&0TQx`o05TO;YwA8`bx7AVI2lTW&eYPs!9mLCUc1wyr z8vm&?p!`q(hG4MN&1*J06h8xSB*-PQ`E*BL%I4sU^T>4(AlyJaNqE@+tQM#k3zcNg z&0VPRh_~PT1_fl{n&-V!$N$kgv2wh7TKtcMB{0~!PUIy%E9-OB3SWF*_9wDs-1X-D z?l!48Cl0_1I4G34Ib-*>wsJ@U1Ro64ewGg(aa;whfH!L#Sf3uJ`&+3P=@D%-!SDJ! z>t(mbwp~KQZyDvLN9NiR76=B`w)Zj4wcJ)^&-$?b7+tK}`|5F$|EML z_h`_kIU*S!msG3^&p493@5uY=lSFJ96Sx4L7Je*2rX3i%l1a{`pAqrvcu9 z8}4{NnZ0kVqD9Ia5w#~y0c#k&qQ$}eQyz2>|2WuGdCkju?v$muEmO*9w3bPmkePQ* zjhNZmhge4EfR$?e4%KUN3A{7cIXamHO&y{WF@eCL?rmADgWrMuobSb_dLP19o@`9! zj+c!Z4yf*|*X5grzP7=ASU#b%YAkaKs6BCnu1u4L4LH1pqsJMEnQzoFy%+a29H8eW zF@cOr#2*VKZ6-WA$(cx7UD>4W*?kf&S_;1ghttE(s1S>DtSL(;2Tk1H6Zn!T!_!_! z(M>}J-SA&x6&l>H3kW9bX2Ax&18{0-!`a9RXkPin-x>tSWow-t75r9G;Km&7UdWqh zQGnr?AM7ThCFKPKnPp@_P%>&FUL~O09~sF+?mqw~syEc})M$_twy%F_Xtw&VgAYl- ziGbYbl?tFv^w$N5gJCK)VL)yzqD#U{dXD|q)BdfTdi)nieSmVpb=2hqJ!mGC6b4jz*gjz!~WG2e8zL2&)KHWsG$_AzvHEd5$f@7GRY4{a$tim~|C+&MA( zz`FKSf(=&-KB=)12FujEi$5bSee<05(OZ9|z;r0q_NwgiE&saSYJ5z^wm*0D@>*tQ zmW~Wjolc+moYBs(QGDB{4QLVFPMv$+vr>ahVzOP%96f%>G!gup2f!|3#-@Y(QU3|Ov z#K=@FZghsOWkb`StrOic8CRvwUKeE~tCIdeqkU-$F&SV?(l zfuYySXkrn@{a7bFUK{iU-q~nSa_V^i!~*VEfc9Ya1qfQ=>n;ma`AD}(i!BK^m^sPfg54|?J5NO1dOSi9^=7b!2B#;K?^UB>#o!k zK+FjgNKf{Sju)@d8mRe7u&gs0Q2(Q36~Ja~sX^==^?}uH*7BAt{3|GuJY5rC?T7$H zjRm={Z9$Y}kt5~}$5kz6A-rujJ_@sw43&$IwtlRMtB_D-*0TYPG5IGu=%DboA+(T>rw4WUozdo{n*0j&udf?4 z8q&X^vU@*g8C-8{PSn)bmbN#LP}M!g>;KE5At{lzfF!NQSGF(_CP!V>8RJ3#_i0H}OX z`cuun!N+QxvzcA#jc2-W)4C_I^H0t=V#Cf5U$XIeXD*+6?+A3O`F>I!d*`L{6EF-- z+?)JZulkp00o+l-pBG*g{L5YKDJ%Rj??1!F0tkP>r#_~NluJ1(;sQq9e09Lz37&7l zZaHB%IN8`%Y~%b>-drsKV2euOmQ@JYvRy0O3$2nmzEObAqYWbs+d84U zdZ)whU5R}W@yhfeo7>L)Zm-s5NxCbyk|<5m+;8`aE{9-)irMTm1%dgw>`D>?VAzg% zUrpeAhOR<>@Hr;wN4mRh*S>g9uE47+z%#@Rn##b$otgu6c>?gvYKnm{w(o^)Ncvac znS0x#QEN_dnude|=TmuJ*>S+fB~M+mz70GxC|O|+eB9`jdm+FxcMzHxc**a2fS=;% zlPX(_un4X7*JbYxn{EZl@k369(7{xo&vY~VM*FKbs8f6X+ujiq0n~rFHL_r5P9#(w zMX=yXkMQU3nRnI#taiYeNOwknMB}M3k!ERZp*ys|<7ET%MR7nY>Ptt{N{SDj1c=~` zr+_;yLGjGJ^L@R~a-LzWoc`uvdG?paBMg@6^l$B2n~+olQ|Gz5vTX9VK7SjsaHPUu z_0Q@nVD^Y|V->{Aa@Qix!9BjJ15!c><;g3!)PTrNgE1a%&r>FeJH3wNRBUyEpBRES z3d-zfzgDtHz9bjIzZ4EJYbVEEybzI2_O!Y|=|DEnWOd!vKg~phL1(?>`lt1)xqX{g zbH9?=I)515w4WjrNrno*%wnf~NA#*6L73z{R-RG%OcsX+y!ThUAFC}ll0_yy95O!| z@oq6F<9QMHCzY`U}oDk0KL=N+*yT|I<P zuDJY>Z{)!I`GjYXR^0EtVYQe{wC>`-mDa8c%^Zc%#Lh2(nfEZ59Dj=_IR6$`c2`E<+PSK#(<;ZtQUY1N`HxIP}j{0GOK86%r6F$wb6E z4aBo~CXP)3sS$}XBs zv`y&PFe|i3CS9#xRQQ+(K=V}suNJP;aFW+Q6uJRi3smE@NRv=?K`DK*#BE*-3>Ou9 zPG6~u=>9>b;dw8y=koQkt}v~(lSNeXII|v~A&Nw+pMii4UJ%ap_^d5#bnJl7XITVr za`0Xr=3C@xLr3Nk3r!xhQIC#IULrQY5f)=%f~Q4}l%q2KA|HE#S6y}!c|Ui`jy;Me zQ>1_4PXL{mae0=)RCA$dnxwC4AgD!ad!1fyKp-jO#ZSEk)(#4Iwp(5Wx!*ni{dHu_ zXIts)yaOTZfltzy&shmQ?4;N6+moYfVIPKbOOAg?TzBK7dMv+$>EgQ*?MUvWp1gYWkQWRC0lhdE|fdJx$RWw`~54Z8MH{X|_*=m1_zw8Gcd)_y7L=`TDK= zm}^MWMVJ1&iVzJcA2hU}@fAv4`ju^Mmc{5}#S`EkDmgRU(aV<2$0J!Z&FIHV0EB z7nF79GDGN?j_x0vK2JHi)`MVs95hufp5xZ*HtyG<^LUgwZ^Fj=;-=?<0Q#fd^;7II zV4EPbfZ%*_^AZX4bO(k$nB&p*zL9)%fO>ZM=gp&ad%Hj@u^IB7yb7=e;8z;HBS9yn z@sQ=-*hf5Oc*0AM(ib$2nkb9V zq1{8doeelv=BA+{s)FtAYtBK;q&0)Zrv?PqslSFolH#FBRTEC=VebLOY_mfY?CvriWEVc74_|Jsw{0k%ZV6@fM{jlwhpBizf_3TAC}mY0nz`k zI~U+|U|=3khKNpatSP@i=;4o2W^By3LyzC81o(F8^D+54x!^tu;$<=N5zBDqw{#RgqTA2pA=ndKnkD)DF=Z&Q9PMbTA_h;L8Py7zyXQV2%qke&T>vV&{4qP4^%cfC#zCSXUOmU3K5aS+Gchr`K zaDr&&fn)_#r7%08FxyiA<>q5tYxm4lI^@yoHfkcUsxv6N*=G!$qkW?6jzPKkakzh3 z{gS{c(J>ESEx=`ddT!>XbVAO~axSX|nfx^*w(>O(w(NQO*OXYqz>4_^)^Gc($FuV4 z<{yo)zwG>pW;p=i)~V=O6$k8lnGB1?NX;A*E%|>YHvvZx$&Y}c zy1Q9K*S9OT^JQy3kdA2vm3YMw5qEM0&sh{GVM?lWS*w|sb!$5A_cfBP zggnNzawiwx?AAlhR%+_P*A1y)t$m zjp5VY6dEYNHOuxSsTSwgAh6T-J-Q`{mjHT6`V4`e$ox)G(&Pwlvwq1Hyf>7sHa|CT zPsq95Q$uQx%i{+w5U?zWyu74EdT>_DoE0X)P&?|CN};cA)pLmmEa2kBe-8KKilMO2 z{#q6J)-p*>hL_y!-S->dP9jfrdJ)&0E)6C29+{LtY|=m;v@vS&0FWv;KNR=`kGYZ( zRdIF=#7soEU=b27rzxijb$lFuj8n&R)MCp0o0I^TE?ZXD`4gBCA*%s~XF$zE{F9zV z`8JhGX8?{`@$)s*iwQ_q2bOr*?*L#bP#0j=Hz8?MYTH1%BdQlBb}kKm6%EHDo`~WL z5Fui+fRZAj{q(;7(d>E>5jGE1C9rxW@aaSe{N*A%H~tw7$z1m-UOjhT0cKe%gtKn{ zGqs1ujB6ewbo59(Su0#A;xVn7ab-e8FHviOaiI(%qWdj?8>S{{FRcmd&(n;23ftnu zO%~3IG8@|7tIJhCrAmk!U4F(QKk&ok9~F^%Ovhx#&0OcNP3&Hz)^fQ)?Zv0PCFX7R z-D6&7ks1{(94dA*AbSo?pOD+{^TEwI-6}|eY@_GrV?E=OaLZ~`ls+_~XWRN@G#AfF z0uj0>PA9fGOM3Apk~Az6D}|LX?NFtCHhIPA^7TZc3u#+k7mSxK=6u8Jvs-C1C5*N$ z4yvhkJR-@@=mP$Dr;AcMlxRFgZnW;}!kThz{e0Z3dPf?bb~eA*hQ9ip>j}47cxN z8?`2Y(S4S(p;Q=r_sHAzGG0fd@_$5!!OiY>qyf?9fXh97DX}vk8I1~u(dx;oos;mh zq{w{*^o1j1Cn9JqLF2uKb4ATgcL%kW+5m0Ra04n)JS#TmA;L3+Sk^dWTia4M2 zOVhk*P~J)1j>Vb$GCk1>yp^h$1Z1n}Hc-m~>~%RR$>r*A@JW$}1m*0P^1bw=)dGmB^e+_uczsFz&D;C&+2d-Bv! zeB7_Dib$}$&1^#bm9_+4udqka4@IHi*6th=gZ12OGL;ehi1`yuJUc)A}KRf+9VjEK=FwPVWP-L#MfgZ$F^S z500K4OJDhBVH^0?)FuBdNt-33VpG4|&bNrTwmgdD>I~4>9=~{Ntu~6&&BjB;=En?P z)3b*~UhcG7G1UQDR{T;mKbLn7?6o!$JIDQf^TZ-_jVSrq%7Zt0kFsqWCGa(p4}y9% zlRo)|PM8EB{!;6>FB}2mUe^@dWh%Kv&#HknLOm`{12k07ZoX`5jU7NRgxM)ykE8;5VC*S zg0y6Z{cjwy|HlxG8{QVx$ebHoRSN(*Z7C*Ei(P&9pw+e;PmFO(ij zJc7P8IkBh za%9=*hCV&ByPN#BSuM0jOlNSMH0V8J`fkcuT0<46DnGA3kob(_!7F^4`$Ao@iVC`|qWEI`&c56xj{AeGdeg8S-oVbV68UmjMq;P}AavVI_Z}D;LT2aRL9psB9 zZd|?@%;i86)|J71%Cqo5ty8>X%DX^%{F_-(#o_kkNwWKou0*rYyY0y?4K76uN0TUN zGZ|Iat3#>M4@TfPt@n`p7htXNs^JVP)az2K37x5G8_5Py#`mdGv1;HoH_^p_T-S%q zqy54317gz?sJ0{<)VNVbU&FHkNM>7vL@LY?$F%k_x7D({(tNQ&tc+S;wF8AcwMM<1 zVuB4wZ{}pKRg9P@@~TT_30qB;Xn8w&&|*6(t*p0uyltGo>+2<59Ye|DeVGg$*Lk$o zjRaS5pT^6SQUs(;1}qmJ9QjBmp{IvY2lirWt^*Tg!A<`^z7g(*la&O6^^Oem#Zsqt ze59F9_ADR|>`Zb|?OMT?c(4APSKl~0!Y=rC-P`XkgLB@Vp75fA5(>n~;*sEi*zpJv zh=}I6yc&8EuyAX8*+NX;s}Y+$RWD*yi&hZG>Lv*otJ1h|Fs@FR{F!TBNN4sM5^9pd zzOXL{3Zk}wkY?8rGB*YZb0u4nfXix}pZ@+>JgSFOgACAb=^{%gT+9C2NHN(mZ`)Z( zoyw^)7wvuH+_;~LuOQR&GyUW}9_m))KUC zb%;KkHOjDO@`M?uRM<2;jKe5A+UhCI?y&!El69FT?BHN?oX5+M1pL!pLP6%0Ef#aI z|2;%-xE{JhO>40z z-Ly!zNfbftUW`jll#~@6c1fLnEKcZt{cWBd>z<6oHCgNq$$pw&$;qoJ52 zMBAGf&R=h6o-lcl;obTjL&87r5m@l>^zYl)px3WyL^tO^!btOnqVLHwE!z9nZyUaH z`C_u}x>k|D;bOt#SMC+-z&S9G53D(T*OU2&xxV^``w6P2Ju&w`d~Qsgoq8|;+>uMF zrD!RREVz~AnW&_@%TV{^666#ru|FsmtX!9vJM;cZVgPEdM{uObsP4tIwa00u;Tk4- z;NyU{VT0qCK`lB3wVLyec4ckr>=FOjiubVDhoa*t$~DUV9P{j8iVq7oRk=6rop{{i zY0V_32$R_j%5ilJMsPr>;0sFA6DCZUe5;V{XY{W6fOD)88Mc_=dnS1qxqI$7;6Uq% zwMqruft|o2ICDh3-udDEYkB?1@D1~1_h~?i%UM#?*>3_y3OB`tU)*BiTqp-v>Mr5WU)QZmP zZ;C$=2UmadJ+o+~Xo6ocI>fRPCSUuaK}m@CwV0;Yu9e8ox-!tHi3=lhIAVKWkAwhc zJ!FrInF?Af-^?Jm#AIyJ@Thr>`#Z&==#?d=pH)VL%pCL3q?ME^|Bx%iiiV+1ccjt+ zL>fuK_Zy#)TUC*9egE^OoL?ijk?aI&!Yy8$A47ZZO{wbyTk&i1$~;}J$iP0G%rK~i zdA652EFF8gjb|NP(_d%es}Sr-Wi1PaCq8*7IzCZmn6%0Vvg!zD5#MNfJ;4O6f5yuM zZEI`$$xO!Aom7R$ES}9UQ;=?dS}uP@t9Zw~d0hZyFL6@(?`BgWMT> zE3&Xe4Q;=65{6&SMVbw4!`W^ar-$470FhK+8|n+vK)u3z+Q4CSpr8{+Vp6M9YUtI( zWhJm#JSeCGD}tl0c`J-W_|SqbS)PaRU+*jZEglJ&lTBQY!kDH8Vgoh4>%@u1{lm#uCj~En8uXWg#TRcbD2Oe+{K@?Ctkn2QT^sC9Iow0{m|HfZQx+5RLaw3@j!+@T zZKre=%Qi~~>LlRFqw4-f82Jxok*|vjyAv$x+AQp}&}!WAN}BpjVzyp3qEh;a=_B}1 zS?b_lf7!20RU&_H5ZHeV#xm5r3at!w_?IFY!L*l1z@eJFz%d4v%j19sluaKj9!hOu zrqsNEGvrosskNzy%UBUoFnb*O4^D|?>^SJ72 z<9ySN%j&Psyj$To?xx)fS%sM&PlPNa1>=gNl+x=#x z#xpHCx4r8MD~mLj2>CuhMU>IHQISO2z{8uv^?@UKM#h+JWSjt;&k zT>y|SWA^#Z)kUu4!zia}!2HUHW42N&Jf0l980phSJIxO~z%wtTW~SP_aJ&3|s|^Gc zq$oPxp|N{)>4tjinhE};()mvNzs1JyBqSikZOTzWRsM)#CPpR+kP((HrZ@Co7b5lm#c2!pnh8VzR_+mt`&`9GJ~-M}j&) zG(3Mc!Q195{trR}M8<&~X6Y-IY|M+?>GY*hbE1LPsy06Jk%$CY)kis9E&j}d+?UvW zeS4i~k0Qdq*is3+n1;}7>9B0uEk*8M0FLJdi#%NqBC|`JSuzQZ#K-?#5y`UP16mX} zvJ>J3O8ZCB20XuYSsgRMMBFv0(Mb=clyqFljcY6N9rZF?;=T$fz`X)UaY$0n1ZQVgtE&A)D4W|RWHincr zT~%NTIigf;Ueh^?Gv^e7p55+nql0rh-a+F(vrDmuyMwFJ5C~ z6O31EU5h0L3oG2Rd%&DRl&wn&?s~KBonH$AYW&cbG|+a*g0=kGD zkM~`#M4W|@Lic^f9)cT`n-`o7Xu{(`idIbv#XD9n*l+!9VX8?sXFiKeLPEA!5a$)n zDg}*zNTp81q&ce;Ja@!GAHovdO=RewYm%z*Un~r8Z8A{eh;O())o0kfQ>v=pTh6va z0IN@&+dMB%{0~Mjs7z9Dm{dri6nuuaLr}l;V^PmHVtZ#P%xWg>ZXmreRkY#M`Eoo> zF#VHVg@NTTU?t6_Ck6Wu(9wibLA?@vIH42anYP5BpeC9;qmC3z@cZEa(JLM5yF%0Q z&50ySOzrtegvl_@IUyOJ14iKBj$S9_Rc@}~EZ^auQ3=s4wgg~6ZI16Gq}f%%$Q^J9 z37CC;buxhbU-=e~b(R|341(oG3^!D=Rkafg`~#J3fMhU66QBD^_s#6nWf&5_vg5neDp& zM#v%!X_;zrOx0(@#7pI!=!WR;-{u7Fm_y!(fkkyBGP96fTAqav!)k)ssdJ|4AW)5VsJ8QHP zW5aXv6yRre8XDgxAV$2Gm=cLqTR$^E0}yQ{vjZ`BfA2uvTr(vF16uk`wqM)DS~xV0 z!6d)KUYI_$X>_f$AT3T@M5z-+x1H5Yrkjwb>6p z^xv%r&wmn(mWt|oKV}!TViM6+bf#-OsZM#?hFx&Lv3spdHbv4n@1wU)&VV*`<24z< z?^X?uaGm;_&K*xKAo(G+Uim%%5hrJtt&VZCtqB zySXnrDD(Sw3SFXlLk(RTmu>E%vh$!_orNrAeiiFJi7=I-yov+ z7r<~{owDLj=P4++uF>K5m(8W;SNg9mMWfbT?$*S#GsdAKVDwM9e-^`G|m`#Y# zApz3{0|lL%Fo9ZAw9{2KD(KZf^c@|pWb~WU_X`UXuiw@;gg3xUCkpPjMv?>P(v`x? zmGEB&(=?d_4_{3m}?)ydrNNgvCt7Tc}4&erZzS<6_*{m@HJ?CkH7yT{UP88?P`a-OqE6{w$gA zw{b4AI&Xf3EAA(BU1ieXf_2C6?H9Q>gz%`oe;`=DbH6;W7ks>X{VvRgYWM9`JRtDz zoN@_LBu)@{euj33vZbaq!eF8xUXkMd`VhXwi7%(9&$_3n@#ZzRcje^dl*AP zk4%^dXm$AS+%Xg*V4Zk{;9UJ%Yw?!)Th`MAu4|Jt5~|HMv0zQC#$|;W%JTy(^lgi4 zLFEB{{{znXo%d^mAS)>jhjUMYw+vzyUG*|ZGM>TTd~YjuiC88o8lS9FThXxtJ4 zfFOM8*6>tBUY7KCw8QgzN+=3M(-o6abEU6MwQwL&CQ=4q+A`u8M1V6+=i>{cgijMi zMFX*R^EyklKXm@7)fk|H?r&PRQcM>X`6_ok^9*!=U@#L+YNyXjypJ5ce$XA~S3ePW zkaFqn5|vk>z*b2)2E++Q}JFz5Q)hT35-K6zyim7kL8BJu!|Br6blH8+ zHtr)QA#*>h&19?xxE1X0aq;>C)0Oa)E}WA6HXdOz`DX>V(5UdD{Xv52@)uORgi+kV z$nD&xXJPUN+6LGEq4Jx%f*+3S@l4!G2qOh2i8*|z`&r8`t{hgbnI(loFRq!fo#>&J zE27szMf%x!mcHGT^xXQ=Zg7aE{gNLF)=rmJdG3Nd_7eMYLgJz4DF%_K&m>eRFxp6^ z*pc5QkMJs`y2VfHiN9gVn;pAYzZM$(C5}Imws=G7)8^h7Zx=A zFF)CR9$8|Xjps#8@ZrYtxtIa4#eMJ=jhcu)wEewL+tK_gwH9rxPn%vv2vDZI5f8m+ zf_;b05+3dzkfH(B7l~eCx>xYYm(u2Aps>R5UC#0@lac?mj)91NL>ov#PG*};B~1pK zX9^QOou|cZQ=T3BQ=fh4|8!bayAr*^?`F|G=rC1`HvG?4&E!w3*3ne)(1#2`!PR}xfz!M>HSPL>>Hgz19`zl^z#?xM6{L$H3DPjoYn-gcX0e!{{(^XmeL;l~IMY1yI|eqyz?la6k|Y=> zawkEWCj6aKHLf1@6Zv6Fx7ebki+6r!tEzl^=;f&`MPm&Q&#+3S91;GXmP7_$rFmid z>>M*x{8joUQoh2-0Vi4#IMJm2)W1(Os;Q!rLY2SgAF_@WDY%|6kF$&ks^cz>((;kW ze}uf+kKiOs=F`j?WO1K~q_Xx2ET#nQM;(rnzy0HOw-2%xMm3I{oK-q z;%fvDuKIH$h&gBzgieeERXG!5ILEDQb|uxc&#RYNz^^HA6|ccN8;s z@dMVkpG{LR68e?|>_c1_1!d$$?%zLTYTPbmfbvKjzy53+h!8Ob;0R!&1I?PVA+XCi zk(YsV#tlT;BjegR#tUs78eRW0RD}IT6pyKLAXK)AyOls@cUk;hPTo4|lVATyW-;A~ zLai65ZpfF8ia)V6IR`0d&xAj{vo0vMsuCM2BV@iK@RFc^y?cyK8isGxeB3VHc#lck zQAHT3k|Gh?cu?px)SD`PSVZ_O-x8 z3terN#eHSie9_Z-w?dP3_X1w0Aj2Dw*%pQ2lu^7pT5j z`gjKiXr6f|GuSI^5z(kI?1hon($VyL@Bl!Wrang>4OF%2aRideWBB+JD}N z! zE~4D-4#d~&eMhZ-O#Baw^gtYTzqu=EvA))F+2o-ZMy`CHI{&0_9wYEx(*2h2=^~rE z5|~DC@$>eXitAUR-*FDlZy7jPtqF*>2|cUUg<=iHruO#%BP5`p?IL{|wI-l(Nkx?c zud$6pyGQ{5`%*kOtM}~=nHZXQ7R*JELLkMWLmKDy_lObju>#cEhVlWUO@{d%g-It& zvjqhCvrlxW@Ibux)Mb#9QT$)yc&8=CkB2|gDQ{UB8};!wQEaVr_xbuqI^_Km)%2*D zlybFCn5CY;_{YADjFb8tS1O>cM z)+8W%J-DXY9Eq#xT}Y$~69TPl0_fvv`$4&F*HadQ$mk2k>BLU8Z*Lhq?u#umC32{> zyRDk*)$ube-{oZcz7(aY`65-Hakc20!*Ok&>)NUP+c;xZxFAw@AJ1OTSDqc|!;O@b z-4GK2WlMa{u(mwqWEvk`w%g*V-Ph8$sd!lta2!IL`o0Ac;t*pMUkf@5_HUws4tG)B z&t8FFUrFF&r95(q$o_tWs;d7Xu>V64p2!o#c?BiB0Il~uqc@u8{X1~-EB&+B(OiQ2 z4xgUa=L%ioFM|5sK^Zxa``x>mFPd)SU+NTprSZu=03q@iz_wMIXrXAP(*OI?k)VbD9d`Hu!^?T?KKR``qwMHjcvUdkz*(u=)3Q&CyM~rz@_< zr}tK4ZM)7{K+l&p`8ni9JifLNyOG+?z8DFfU-XH;JrYedl=N*BnvJe?Tc_ zxsf}rBnv!U9<*`o<+Rz{WgkV5OAewu{d@lLI#;<*fF32XSA4qCLD^WtvNvIY26{;b zjRbmOEVph2oFP2MZIR9MW*tt(!+#pe!Q1#Qq-+K z@Q_$~!`aCM`>u6yfE;lG$7M6EMe@S#2eF998smx^L=O&7tD~A~ot4^QY_nBC3dUqd zqBdlziLTdKu6l-7Ivn4YK4?{b5Tu$FZ7iN-$-MGT`2|M3R4nji8XE(}5mal~(em9r z2H>uuIyvk!MYW8~@SNEneu%G)J7*gV!z#ilsk5jb?Wv31*hfZ|Dj8?A*=Y}h z*kItkBzogCb?G}@0d3pSZpCb4EdVnS-tix?3+TV@2O`?CK6eHz`UvS}@^gk0k!I@y zoUVE%SMshxGw3)ArX3IbC0qb9Aj%5V3xX=GUA)Lnma3pPB3JaG2E6k^7fyS;sssV{ ztf><=;;=u&_OArwxBC_Wv`IL`+!+Cg7uBK;Cm9tMqy);d(wILOTp>JU!SQj{mK{g2 z;QzrhHZX&DXC7F}sSRA{sdrrpw@(>1Q`EQ}sbI{G7Tnr0S#eorDzf@c!6yCn0du2e ze=-9%a&xLe`QRygH~J39>e!$bJFMw~?>-WLD^X6DTM2q)$TvxMXiX_Ay8Je#CEoFa zOA$uPm+7L+LwDTQJNuRT+NHq(gN~TPbvoCD3jPfcqper@i{)8v;$+lA6ZzwY{r)U$u6}sf!4yYx@me8t1Zo1 zcR*uMeiKg&N-$fqgl7aF5-uIGGOCPnJQ;CO%8@$=GwgA!UHpF6^DdR3<`a=GfEVR4l|3I^7WL zcsy7FC65B^QxCb@&SVc*m>lJ~sI!LxMeShw% zC+d^P0^v0RmhuP~R8h}KS8`*kpl7weslKxEl6}(}ri_l;?Mu8DHsk~8Ddq|UCtK$M zb=K`DhCJZ4dsLWKTf6?j`>1Z7r8-$~gjQWD@*Pw-5vo;R@EG8`$-%G4|3+VV5>{%< z-2nxu&T=iR&eJ9}(S~pGkY>{X&8r0`u>BqY+fPA9w({mRAc01I&1b97O*?dz*hKY@ zC~ACK&KraSl+QaSLSkHCwP8HZJTwg;xhD%j>1@9nWYgqp>?a#PakA)YT3jdoO*W|B2{sc!y}Cymb~^Z{Hc5+VA6+uKyCq5VVd7dTkRxcW_Sy zh-ZC1Z2`=U0650FT{a+-WS%gHbqO7tj59uI1+LV*p{PM|lac{?E5&3bt$iCOVN7?;nY_`@j5t^`09*i-co|;Wc4zQSI3jDs|j_8 zWk-)UVmT$0*x94i%!@>6(iv&)@!Pyqp|?^S-X!EdFaBXC{yH;k-9~T?t3yEJyRA^W z91|$|kx^erNOoWj4u7rTVrK2Kdzv|N^CFXu2}8K$-YO(7gZhhMc{seWB-_L~*mpI_11aQdiP6`0u?g=Pe0kH-o6qA$*8M$~7% z^4!E>J3$6@Yhn_>rJVJ31UQ#cw4k0)1gqEeI<=ycsYTbX3>|?nQl6*^j$U2vXd0`q zx+Bc|#~zt%-M1`5QU=HBCfP2nULh6@CDaAt@dU23B_wlI|ndW9HYZK)LClmb3kZVX6R%`Wgq z|Hxu|1~FBZYO-o9KjN-MwqB&6>1UcpD|n%j=94X3b6;l%{sLJ7FW~>Kq6cXJ1aQdg zUh7bkT%{|m4YcYZcnd(4(|e+z-2mOah30Ei^d+PNN`yD?uK@lR>A^`77QZR(137`c zL}aBrKFR#zgCEX5$Vi=Ss1Kb|ZjAJHvVlBcakq?h#>`zmB5nvvz4%WxIaA~uW zvKM~gE$9*90mPV@SfaoHpo7sLSMT`vLb9>%pTL$>4rHe#%Rrueb62FMj=GgGsf3JD zH-~$d%rj3GlCz&RE38x1&YXn?6>qcDQr?@FEUcSg$4t2AxXgiVZD-yVVFI>aX5!g| zN}qf_+wEXekC57Xc>f9*yFU_5pJ0{h`8ui4s2<4Cws&$}*{N7%E|c6)q1L}Fj4bFj zZ_d3_vXa|jGqzW@_WDNrQo+X0%(`N*G&jG!iMMpa!S?~}Y3VeXGo-Kq`t`(c2Ira5 z(X1S4UPI3ogkIp zSg*J{W{3zHM2;Gv+~+eWal^Z=-(vV&t0idKlOQeI(`g>OM(ErdHs(VwywD=_BL#d5 z4|53yh9EOOcN*Y<@7~C$%ugRvKg!_;HB!j=A<6)xT)+PG;yy8bvQmdC!>8?HjGWg% zsqO45*_ay5H^O6vIV~o49#RV<15_TkF*pu0X*@_G@=JG#r*e&vwz*+`6|-KrFWDp| zi98a;rU}9ySzMDy8+SSu?MwM`(HbI+4lY}}R&!PpKQ!TZB7|)X)g2m9KPB)rAF}X^ zxg(Cg%>W<~RmAw0+@T0D_<@1f$&c8Zk^~b4ADgPbKb45%eX)NR(=wYZkSiR2F>YSb z-4|J2VodoVGLo7RhAtjCHoyc1MITEnN#8J35jdezz6*f;OTdP zB++&g6x5f}8=$!(FY6*6{Qyv#jNAgU#B&CqNoEI<1E^f$i$t;Wo%^o(U%5)Tx_K(m z!$l4pM0rR>KSg{KHzU1vn;^Zm{Hywst!WO2wS4($xr`P`ndH0jGRdxrbuxrHo-$dL zOFioo4p=oNXGxu}^+VByXOrz(ZzBg0{fklZo{J_@i?SqdnLd8&X_>eiTabTocgVk@ zPp~v@m6#;Y;*nG-8K?3bW#fGrMYf9((p<-Pj_GQ)%YxYAt>(|Z=)wVq!*z({ve+HD z^`gk&m?DCB$9c^&z(d(hpk*bd-DRhS?-^=U^MsRQRy(QUO>M>Q^Mr_J3H&J+$_4LB zUuRhxD`%pT$l`LujV>gNx2?UxJ*yr{#CZ6Pj3zy-Hbe4NHkE6oA-4gBg?m3HriSOVZSr-XQCoT;6Qgjeo-sEJYYxwI!KvHy zNoAShExG(S9<~-W8+%LZ!LSkF5JOnvZS>p%Ijc7s-uT-0$+PwrR7|jO0#3lXM15O5 z&e>n9%M{O5F8lR zhdX3&IGOL1ggPfqDBTw$d+8(<<1g@A2Y&07S)#;Nbap<#J9WLQ76X zrL_AoivT!QXm=6kp&TH%5;lVS`1doT_fKaAri*J_8xbNM=Di(;-VbXdz#_GYGi@Xz zwSbgf(pRc~`s}hk|8@w~!>?Mp5S+{UM);6G`~3(Cv>fEcbEltpY`I))3lpDGhPbAK zS)uDpJS08e4FD840f}ZM-QN*3X=iq|59? zBVis~8y~A{TndSN>T-%?@_Qon9vh)3JDV^a|CA;BNaqQZ{OLp39sGzgP zOo=d&(7ZZ6b;s~hMz96J&S8r9gkYA!gcj9k^=49hJeghS_X^ibU2g8LrZU=?_^`XN ztE{(m9o!(EinHkbg4k~(9T4~KGvj33ElDXxeFKCnkM;v{xd)Ty$Nx_kLuU+nyM6(<49ghn42$)vS4U7HJO~|w2;jc-Zq6Y^M0X2ba$-? z{o2JbqEP5j{c&arY~^xXPwulqd}SShlAr9nNBQiJGS7B22z?sUK5yROme<*G-ulw= zRFYO86#Z>Kr}-RiQy3wGJdRq5ZSvxF&rNDk2BmYER9O_qb5guH5oMcI-ODlf5cj>c ztVyu(s)W7;@|M+>7Xfyt|22!#GQ@=F-Ep@nF#3IJSud~DMpb2QYqH8glIbS#NI*v! z*jx2Pyk4(c_P~UbcSSW1IOW$I`!d_tC*Ec-kziz#=)rGAbCinJ5#{4TSpM2e)Fdhk zZ2~WJ6ptAC0@y^iE@=`7KF{8Ih4;IXMhwJC!50d&Fht8&B!0 zN1I?3pMTZKaEQkShuU@@rSnW(^a$6um?U|A_hAZwRaB8D*Rd}RvONdBrhuK;Biw;kNgdPnR~ z5^vyup3!EP@=FX-P0t%Xr%3nR;)1M_a+_fczO1?~Rp`5!L-B7T4#Q7c!y5%2IXFDD z8L5aUOxg*ZljElUD&n;Kl|JZ_fDB?Jyk=3PTQ9T722ELuNN1CYW_&kKnHRKR(yiQ~t_v&Q2Ijn{n3?A3n-W=>;^(TI{el ztj{1!G{(5Da=TkNP=M*OXqm!xe&}Q^S~XQ{Tx9XyFNG9~?%M_IACfk~-i@mtgM1CV ziY<*=nVc0kUEH*5y#-2>|rlgg_8aYh!y)J5M;{t6B+DeCxilFwm7UdIeo`~8#h>dJ8+ zd;?7N2QRecKe(Toao)Nnkn{0wrRn#+9;lLLswlhR-CU#MK%u+~<2@-M^g&(1Y!vrn ziZ01YCnpFpvWIMKD9ZCrlV>?)=WHrWa?qm*slYQj~|*Zk|m(HjxY_g-~BG(Ql3 zL`a)Z^G>oJpTfopT!x?T!LE5)ZjU?oIcN}MEWm8oYo?QozC?C;m%8`YIBXW_Xo#jL zoF%`1oAh``N4r7Ye7VcPLLELCrXV%y6#|wWM zJrb!~jBDcstZ8Zvx~#LIN2O3j?v4?Okv$mw)MM!4uMO`EktvOjC4E^G6BQ~U^GNeE z*y~s(@wmGpZQPh~LRltSMQ!m(LS-`a#2gQKayR2@LWpnm)!Q;5aIkU$95QlV0{d3m z9rX}ei7ah{%3{7g&_3P+g7PHCYM8H#cr7v0{nMg$Tmp2`aZL`0OcV>RXs1{#KUz?1 z(YRHf>gvc>bj)9t%3d-1Tpw52T(3cpIMY$rP?cPwlJ}?9 zFxz~{+MQ0(BDd=^)i|OpDu8f`zVRXmF^^nHyP@CK~@(|!^rpH z7GgV;w6T|=D`dYI*~%Wm5mN(Hb>xO+x#0zll_ph*tP(yfuqzijtB>^f0!l z7t*U|lWywvg-^e>E}vb74;;L)V6{v8E0sS4gNiqQfBB>x2QR#_GWffAiC7q-J4F0mU(?@gq zWr;OgtpZ~#C6l~Cw`NZNmk{g(@5ae(j4yIVXB-N&jn4BT$fv3u!SNt zbUn1_J;~Esb=fhx*^yW|k~;DU@<&C_-@Bw}=x>~>+D(7575ee|xRRo(mvF&!z#JZ1 zTXiFDk{TOs(pe9OhtWitk0&Y)6nU3dHJM|!tskqVx=!kh*6tc0hL!}M(jFi0Evj~> zq%%CC%5og$dJB36J>+@BfifRGUKyu4-klM)-sEuTc`d##U$zw1E50jOsjw>_MvymP zG_OdU{YhikXh^$!BolA>39@2|-3HvQvN-z26eGC%>9ubmT>d9V&C4`&5b(!*z-=U2C=84v0#~AO%8W2J& z16Doltq{7lx+Vd)s}a_pYDg(9ub_TA3r;Lg8=oEb`5+&ifgi6#iV?Cz==ONt4V>?K z+RwHXigbH=%FAadL;qBZ0uRn&T~h2IaVeOBupf8Pc**j|M-KWK8*S$?TUp8a=}Y2? z2Qr7(DJarqX+3%GXW&xVI<-6GGfppNjznifU3=BZk;f@IxLKI+hAX)|iGR%VCUxUO zHgg3Cp6`&gmV`a4QR2axezNNNfgy8V*Xx}`fLx7&AE4a{x(Z0NtxyXbh#y5zhAyT0 zUiaD~e4(GBS08lPu{=E<>*f_E=zX%d5EbvWpMqLfCiC-(ir3DLJ2dA;Ne4$bY(4KdSAxILNAUO1Vq~?!<{4XIwU&E>k#+e)EKs zd&=T6#$wChnYGhKtX}b|^UhXWoP^=P{lkU2L+Zm-+@7;Qym0QN@KI&5w5r@Qa2PUT zXD9aawwI-w(&=imXed9f^@hXSF0vf@;4mTv%}x5R;@ju=O)l=b!{;jWV)noNbpiWk zzJrAB040KhjJV%A&YO|KW>>_EJ=u<*R`IIc!YzH(Wv=AJ*5j8ghXYa--^|D~0+eys z8#YZ|me2MeJjOqHk#fZ6U0xrp@F|Qd53h|Z)6llILt6|j7jV{&!bT2MtL{J@^dI~j z$?T3vDKaUwed}JEqI_%#2PQO1)~bc&k*3N2;4fN)U}@A;RGrltr8O2FodR4FUI9b3 z4@_E`)>ExrJG2)&^ig(^2QqcBOD;5o`oP?1Q?Gh@)9(jfaq25ZU#9QyN;cfw7B zTcO+#L;ydEd@g&a?#CG=R-RgJraNb>Kpk~rN|?FRTv#nct@gJ}{qv8K!!>M`stXrz z*YVhrv1A*VNiQ!0Ul-%MEzU$N|2Etnu_KET{P(lfAu_u94!93l#HchK+g9$r*$_C_ z&?{5HrGn2qiC#HySi3Z6ka0~%Y8f?rl^6Y;aj_oATaA+w;_G$vhCb8g6WngcJ{|B+ zbZe7tv|W(xz9uDmt_)%8BU;eui|*ugce2cUIIOQCFjhmKTlaIi05PE@`;E}5(z`qN zwyva8Y*yK>wO6W&DCY-HN$9c_0rFPQuDwO{jS`dD1YY;jg%k_$l`1tuqH<9`{>kNagr58WDp($$EdL<^@M}*F}Hyn5QB^_4*BJerqtt zdB`N?o9mbpX0;WX);^_Aka4L(Pm&<^VLUI+a4&Qmf#o*-)O~RhWy_ar4}YCt; znw>zVlR}=>Gf|N=;rP6Dk#yr|KBwqy2lOF57cobctdpKHE7SgJ7N5_js3gg+9I16l zG_{-060WYHD+?yGm%FQP3zod^GvmPNUfd88Ix5>!d(ruVu-{Vv7NC-P=aozfWj0L9 zU0B!U;VYf!rb}Ki{9aokk=4>}wdWcxle0xhgXC?vE;w(U|)VRsaCdT9XmWE zL3a^(o5(M;;9}u)>Yd{beqR?y!~?BwZ)i7`MUUe)-a&kJl&(>&m0!e{tu;17-$=A9zE9Hq2smtLUip$T zPC0Dv=V}BBxOIy+-qjN1dE*q8U>R2$6Rc=u}qyJlIZo;=0Y zr3(KQffsDQ^(1TXfLgmp>*wbe>9_iK68R7(q4fop+m6o> zT=*fU>NB0{$dCDuSeCQ5%qBk`dd;8ZZzGL9W)FmR@gZ@SQ)s^(ib8^j*}`Z92N!cx_MnsWr%Ql?+-JW?N`s704H zB9}+n=G!c_{4SEhHI zR32H!oAu~hU#}~he6b*~Lx4R)&5gIgzH|6x*|a)8^&(b|;&zWGw-;Qna0@UahA%#R z;50(`9cb+GF*Nj(SEj8e*AG0&$$o8dXK;o5#latfpFUkdQzWo&+&&?tIZaMM*whfbOOH?8OXKee7g##%n76oq%;GkuPZ zZo~n-pT0yA)&gi;p0gY+3&gbYK*{?&_o9H+`Sw=aB-ZztQO2QZ3W*Og6YdK5F}{nL zqmsDF?Kp001ZjAeU}*g0062X54$Rc#`Quc*m<;dd8XM;h`j*`Z0;EqU0%`GxlvS+M4M(V0bFTZBlj`Bz@3n4^fsl*|I+!(EO# zRWi<^5DxmO&e$aOY6(3kjHK)5q8c>qYHX@h>aL#~iu*CFalL=cV4&tz+$Conc>;wK)a(B2Qf`Z;<;qcC&I>&q{=>w#7`Ek6Eo?o zU8Vog6-i(wS85ZPU6>&Zwc+(#X~^iVy?FUor77Nlcg$N>udjARw^#}C6XtwtDV=o3 z2t?aJVR$s@$!o&eqnF(6)qis)q&6r}slkjDOV(ht$1tgwVX`dBA!Fg$3LZq{LaMJC zumgVvyIO4BXG9_Q9HrPaJv8t0F!!mX3lt7qEXDd_SXvMW2|f!!+2k1cje)S2QrPc$ zmD8W}s=tk(@nKexiq`d;`W+qT#x^!Sd@@wn<66q2dB7@rPjtJJ2T?U#6AGdvZ;U?? zrz&NzOyrUNXl<42qXDJ5*eAlutx?X|eud+;oQl3Ml&5eFg1h%=R9H5tN`gF(N}NJ@ z_3c68cho-?`~-So7Vdt#wbik^D+gKu!l7Pk0|I@)xse>QGP>-}(3)3Z26(Dp+;eEZ z6tw?6^4&*s;%Tn>6j+L$hwGcmq6oYM?wuP#>RolaL6c~&>k|lE%Lx>3Z~A%Do{5*H zhdrqZ+a^Z%?3??KxiDr^GXjsWqrGoxKm6hGxGRkCeKVfLPdBm5_E3Yw>Ood-IedtC zxB9yfv`|k!Y+v4k?@^}RH+k4vL@GDOw#7zkrzcI93u~rPgc$}oH7WDmGdN#MG@Xt! zc&m5tM|TGlzrb$`9s0s~-G|B)WHP+bDZ0=sv>W`4ve4F`!&vcCl~1|P(TqK!vhKU< zgtD!^2SUaQPM02f?yg)|w%m3qzpSUJWgSr&9bw#ZV@M%hlQjkNuMXg9Cf^qv@iUxO z?+^(F1b`EFEB(~m!Q3EUe_gl*!rv6mSfp~er4Se^bcCYq4v1#^J>{`Thpp5Q5mZ+a zpc~_>c0|K?t(Ra|ghYi4WH0jo#-mE2I^rPp9d43Jgf*@vNUjF=TVku^1PHu9ew6J|2v6X{Sj?A%9HB|KpZV*Z(Hkq-oV6K=UVSxEi*K zi@0@6{Le0k;-`p9mC3^X1n80pt9iH+t;-aa+vZm?Gd)P@LI7iE_G_|Er;g3zx=@hnC$f(JX25k9YBDlz~#l4-K*Ds zx~M1z*&2LZxU4HE(-3cpn`9MfwembJ09;myZE%;p=x0D;vEOVaWNLyExP_EsFcl1f z@IZzr26o^N#c3w<=jKsi2c z8_lv09i|!~ml$7WQBS)4>0QQz`5S)=^INbagBVAKfNczIb=iAo%*aOnV0M3!SPyu< zaA3L*tsYvb!S�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%0D%W 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 Jzg+m?{{Yz;{Ph3; literal 117969 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 z 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≫a=0A4ZDb6HD)+&?V8D7F4nvA$vwV|YbKBgkyPnmm9Vd=z7?@jXw|n=T zmQ;vfA#>E1s<)f>&s)ep$ng~$`tC@hkgc;1gP(kV@sL)8Iw!>O+<@g&!U?gfEq|*rTz;I`t`%31*?7N9{ zT@nYut3xVIPMS;Z?DHQyBMl1R$;2hr#V4?ki{R-=L5Y69M0Q*lssK0S4}bJv5xkZn z63cwp67-Q+LqqA8!-rD1H+eupZ@~ikt)SH4GN?EJm;1EhGsxk?E z5W^lPk3Yu1wT67UHLQERE~m4swjhgU@YZAkAlrb|?M0|gze>6rOjfv~mPGkB zay$n&7Iwo%nMqxV)M&B5X#neisP$d(8@o)*a!&??Le&U|-NR?gWkY;hYxBJ6|6Y2$ zYmxYbX}fm81qlPpr}_M(sbXP#H|j;{7mHzG48Gkp35bWtY!zoSCJDa>_I~E)M$)}z zQ7#E;lDZc_QdW1M0B2q1K5CADX24gE+g*<|ZCA{8H{HWy@1DR!*5uMP&iRu-QXvos zL}`N;up+F0V328S-s?jlR2F29pCTA`R|ty%#Hf73YU)QJ>N8Yog?y8_&WgF=NxgcM z1C=dpV6ur+92s4ooRl|)^DEnG>YoX5!g(8E(P=D#Sh;>V2PV* zu_s59f4@aq=&p}jMH;LgD0rSx2IJDp>jUsuDX;Ge{_xYQ-i5qw?3releAw*$%ywfm zsdu>CMMXF=91&hUk6}Eaj5VegvkMKo?P~co?HddR98<{MQF)v zv|GVpb8K#ZFCBlRNG#L^+-y;uzC|*PJYqtCr%4t23S!WA-wre+&WU_JLbO-vDA7b1 zTo(1R;LX8qO$~nuww%oh@>O%ERpe$t6yFFtB4Z9S_#uj)XSACPQ(?)NP`1YBEYw2| zp1#%_7WW_~6z_MM$2_R1dUGzyb`eazsf>%D+URI}Yq0q?tp&wNE1$}sy?vDJzN*lU zhoaMldHjYlpWF9CSTzojisFZ$oBS}!gLbL(O7R?u#}5PH{UH{Vv!`KA z#MuyKr@dT&mw4`7KAb4h0&l$qzq_A(wxmZ_SJIiu3Ho9r3|XcT6uh(^6iq3hJZUT% z_)E_94dJcKmOW%CHI8rXD+}H>bU&@zs!uW+k#pD$x4d)L7Po0ThVDQh5lO{rs-7=k zQ0(2%^~&1rI;Vj~Q&M8J2PiMAk<>3Es|o3WVh1(0erio)LLy5iv)2qX({j_6i>A+h zTeF@$>tBhzpBjp^fupI?1zoW&{XQ{G*44;XJVK;0C@Y&^1wv}@99GMz%U_{jkMU>d z11^VZiOlJp=1VhH+*U~eA?0;UXQ6tkoH73fQZrk}#_VH{JJY&4z4no0;<|3Kx;w=( zq!{-dH+>BehZcWgKG1fQ#Ugm0UK6YqCPxb<>$@RcTAJ4&g%4x%$`W0s1d)S}m{+*4 z$1Dn$5~q|u;lINHob|56U!b4JKq0v>Z8)S!pEl*r#flRW8z~!_Unwv8g#-Fw&Ami+ z$UBHE%aiO$W%!2UThlxO2Cey8xv>1Ddmisag7=i*a$#BybMsRtLtUd}V=`ON{M0=4 zUOjg1Hu4q}2dUc;gv<{w1#|V>9dVnx;D94|v0T`u6k2gmIhvtaZyb$GXzC1c=MPYbB!viGSTY zbI7A9<^sORdetJWnmh}z(xv&k_KKg(HJ9kJ#Uj)zy-X!6|J8O5I7k1&p11nvof2t} z^`dCpSWNHxAGRIv}%a$tIqYfKcun2r# z*Sy`E)x@cH!Jgl6ac+aw;_ zB+nIAn+wgw^QvtAvn^%oVnuI16W3^dx*{OIYWM!uY)H>aNH$E_kbBuZl4>_;Y8ige zZoWL8J5QgB0ON<*dy5cHy!k!9CcJ~g*8QvP5$^f-R*4R7(5=Si8V}2Ns6f8=xgj@P zveh?Ei2Rf293;% Date: Thu, 14 Jun 2018 15:54:13 +0200 Subject: [PATCH 175/344] new image corresponding to the new default palette --- documentation/doxygen/images/eve_quadset.png | Bin 143512 -> 649856 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/doxygen/images/eve_quadset.png b/documentation/doxygen/images/eve_quadset.png index a5928901740f615163484db5fffa0daf98b85cdf..61f763d07b03f590c4261a24b26dd4f03ff090d7 100644 GIT binary patch literal 649856 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 !U%yT<6vS4m7# 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 z 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%0A~diw>lj@Kd?*KJ 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%0A5wiX~Q^NVt=vLr$~*IX3w1Zu>T5n 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 literal 143512 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

E|vBHg8`|UdOkMM4e1sYIv1B2-=qy6FoH<7m66u z=}`*@HK^#Q#ES5F@nXZ?-+}X2{`2f|!gvT;lonCcUW!2HU~~>;It#kQ4FCSERc2rO zU_)HcKS7ay`84s=L+isdPaIk2Luo(dK27goOQaA_{zr)RuP&8(Hq@K;11J{7y-yhT zfExOMxYEJPnh3;&#xpBd35KVun=CqTP|M3N8ng>T#6{Q~nEbEUm9y7G?EZ|gVsc}W z#ntXjD(f^Ryt2DgwH&f-ovNi?xJ*_(Ep(oA(I)(3^=#E*-3CL+HW&}ZI)bi{#b1t} z^kM@#!uAKdAd}9nv_prnSr-`a&l*J^Nx}&`3sUN3)0+nBWM6qC(G1l*MS*-yU${Db z{BCuP&OE4Nh%W>ov_&r=0p>W51bS}u>`-Z$Nrz@@Vv%7E%r7ogcsHmP8e;JU?)FvI z|H!F`dT{)2-Sw*~>iQecu zd~o+&qAno3-;)Ngvnw$v-+7D~u z{)MSXJias8-{XbGLTu|agGv(R6atZk^6jKRE#Sp^c=tPOPN(LQ-z zN(G!vjY)3sD4N_)!r;)Txs>JSr+zD3VvT`X@4~`kewp-BTruh(xPNC2O*r)*b$dOR z@Nk>Jo!bLHQww*`_;P_Y1?X^E4@?Mj4`SiSLHB@yA)cD@SpocA`-%Xn3kQ$DLDC+|x_pTxyhL0a!+Yh$%q_k5%bMef5Z# ztv41NaQZ5IEdzCHNFrL;;HwmpSym@xCBfPBx-*{4Z@oF9`|}4>tf5Z+R&DE1$F-n#9X^w4P#ldcrbcGB4S?tXs zhtb8pLT#3p!ioY`-p|!9dfL5()Uby=1O+Khuyx4x;$?NvNEukQcMXp+HfSJlwO*vF zn)uR=54pZqMtBS7(Ls4Imf*faG?m0iDhVj_=!5VR1|4Yq@HMyva?g!aCi8p%@Ey2q zT8LI{J~Do|Y*apl8oeRsxq@*3$ZvZ()!4WO{2cw->Bf~=W+W~N9@>1k$~+}nNJW>h zTceMcbB$+Z;ht}{AM9u241Yjy#!psv7dN+OyOKT#jH3;~!^O;~(nxw$k05$TB7G zrES~mH^2D)?M}(vr_TumLyq-xJQL2`Q7Rb2LAOts_ajaH3!hHl%;=qK%$TsYwPD{* zsaZJ}nz_YjP&A6IxTvGiFa3;tZM8-<>BUZ?pSf}2*lPu$Yk2RAow<29O?oJUKjRvA zQwlS1L0jk{_Gb ze3(rw`Fs)=aM|D#m)4*8rP(&Pn0WNbd)a|*mmEBej|KTT0fX;P zds6hCngb@#<@=eI|T3~|9oBr+CTNQUG|jX!aEOrJwMjjIOcRk?f+`( zDFsW|=SbN1aw}!U$!{9A^5fOjVoccLzpH*2c(cdgC`Lj-_!?|HfB(r<_E@)J^R~tN zL1lPxKWAaFQClqAz1lnLY{1!}%;rat=FfA93>{@@at%o0y^|fiB(EEkc@#*btOQ{G;Z#xV|6WeZ5v4eG;~T_v}{O7U!TG@bTXHFTkR_&9BS7 yh~IGO-*}$(&f#0D9q?L^{D1w!k&{nW))RW3RD&=7@!>k)cji>cN&4}xZ~Zs46>$Fm From fe344ab440481f992a6d8226ad23301cd1ee05f4 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 16:36:06 +0200 Subject: [PATCH 176/344] more "auto" --- tutorials/eve/calorimeters.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/eve/calorimeters.C b/tutorials/eve/calorimeters.C index ddd289e588ac1..6c9072fe82c47 100644 --- a/tutorials/eve/calorimeters.C +++ b/tutorials/eve/calorimeters.C @@ -48,8 +48,8 @@ void calorimeters() // event data TFile::SetCacheFileDir("."); auto hf = TFile::Open(histFile, "CACHEREAD"); - TH2F* ecalHist = (TH2F*)hf->Get("ecalLego"); - TH2F* hcalHist = (TH2F*)hf->Get("hcalLego"); + auto ecalHist = (TH2F*)hf->Get("ecalLego"); + auto hcalHist = (TH2F*)hf->Get("hcalLego"); auto data = new TEveCaloDataHist(); data->AddHistogram(ecalHist); data->RefSliceInfo(0).Setup("ECAL", 0.3, kBlue); From a9810ea2758092120a7edca66c65e5708001ecdb Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Thu, 14 Jun 2018 16:42:31 +0200 Subject: [PATCH 177/344] New version using the new default palette --- documentation/doxygen/images/eve_boxset.png | Bin 109933 -> 599798 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/doxygen/images/eve_boxset.png b/documentation/doxygen/images/eve_boxset.png index 0d45c474795baf5e3cf747caad607f07c3e94766..c9b0c8026fcc4f1915e8474bdf63d5e6b8a37af9 100644 GIT binary patch literal 599798 zcmeFZcQ{;M_cx4)AVLsC??jK@hakGq4bh@U@4ZJt^xkXqI(iQhZ7_Ogi0Hld(ca1Z z`#sO|yTA8)U9ao?`*B@kj&si5`>eG;YwgckYagL1K$#bqB$!A@NH64MrPPp+(ElJI zJ;OprL!3b!v710b!Yr|rlvI(El%!H|vNyN1F+)O<4NXjXrlGDw0y*^FjwJl%BJtwA z*K?}2V4AjhbPW20*C@!{;BT}7gi=yfSbZu4WQjC1G`X{A@1E{G;VLd({rD?5&9@KF z+->9_>n_{*)bILa@zC#bW6}8@DaO9`>1PdXv;ZEz!nfV9ND2aSNr))g%b!oks-9Tc z0E2(>zUiZ+O7p(gKMaYnk!p;vu)4cBe9){}xWd9lQhC|wxPS#D=`4yF`-O|njVz84 z)8yt>_%S#fH;IVm1&y9?S7_}5XP0B`!hg=+JwQC!NnH#HCw;oaazyk~z;& z_{BAsgx_rn1a9`kP4=699jbOP`uvf!^`^8>w;U&!Y-8kh+MDy>Lj}n)B@GohifD>%mK6`t3l{!)2z>(=Ph! z&x-tVzVEDJ=)?e1x_Bdfn2Cc!QU(pz&F|t)<;-u;hB*HOBK<_m7`)0DObuQHVQOJ` zhRUV7fYy4uCv<$G`XySvrV8Q*q~7q~T(%eZc7R^)@A%j_b0bA%8dqNp`V86=Au$po zy}a2piC9FEEkkl>{!EK!KGZwPP5D|JbzGd{4YKRn-Pp6y(SoS>VPEz;u|Gnp)CI_Z7#3fgyPvMi zHYw@>?8FY<9FQF_*pXf0DtB7{VLLLodM!fPfnoT$65_sMzmmODgu#WX|5=ne<|lnQ z%^sZw?mPxR`sx?UT-MlkE_A`T@u8%l1>Mps?^m9z=;DRuzptTv8t;++B42IXaolYD z%{IPHl#Q$#BL{tWpKu@V8vBX_cBvAHNLUQcv6YB?NTgH7<+iw@1f%7OcPmiBBuzk{VaQ^k|J;8gT z9*-WB9)_NGJtOii^vVUV3Kr!n zlm-`rwM28h^j+nZ^oMknavBWxKhG<;rnQ87)p%8V6~VutX?Dp46{(gx0#^m~0}tet z3zEmZx8l=E(*S8SLzqK=AxpMkt)^*)3Wkc1c`4gMx6f|XZjBfDQNh4~VUkR=Oz##{ z{X)CA1HhueB90eUn`~Q!SB2Ne>o6=r+T^jH9y!Wm?$gRMm6IK|0lXhc@?VqjZ1I12 zQSl-k3;M$T^)G2YX_34j=_k)QpYIc%5NWZK@iCCLl2{P)zm85DRlHT=ORY=$!8OGh z$+>7dZw((BoM)XXAJ}Ve&SoVCyVa z7k+rAZC`)TaBpQ|OQFt)H0*$kgn*(OFx3D)2bDj0AX{;Wp6Ek`! z3aXY2lWgm%eIN1uIJ}fFQqW4UhMa{=CSwa&4HOfM6tEVm&1A`>Z2i>gpkJz=)k4z5 z&`ROzyKcV0;9~7|^T+P6eYy?$WPN#G_0QNQ(U_T$7rgW!PnMz27YlBdna)>a7%GR3V(hFd-4ZqDL@n%hj5pDgTw9xYGC}d=!D^DAFVi9IIL^;u#BO4GVtTKBlT(vd^W?Ix zNao9!s;$>o~OaVWys7H^7fhpW zdvT+0Xy4Pylk}vw!NcCNFL{7y1IONV*6Zro8O{$%c!Q1|tYcpnx$%$HcO4_S<>dX0 zeULxTL-m==anu)bUtwD}iutdLJxjcGFi&^eSQ}NlvDvHuQMR75mCq~g-k`lUHDgUD z4@$@EPfM~T{+2Mm%)8bLeCW9w0Cg-N7rpl%dZ30N8Uf|0l zQ|yavIF?t8HC5+^PHT9Okr9#m-z)5KNHX36U9wHHY(xsYcf`5tn{%F8=}d9WrA-Qr z6E5;O%wM{=w@P}S6327%lBbccTM!H%?9sVxxQ30aXQl7pxwMI7d-#=mzrVbDu1aKg ziF$daf7a@89XC_(ybav8$u4Yg&}8htex|uGHEqo|^8u`DXn#KipVB>Uy5!P%ZL?@%&d|Y7zJtWa_F?04KTtr4m9XmT-k}!KS1bW)+N{TyH zHlx%2FgQ&^3&uTFW%VmVLjscrR7zBPz;m>3>oF}a*pc+NYukOKwYxj`S3cS$?u)l> zqaAU;pM5n!&+M%06i0AZ3WXmiBg3fBQ8uws&3zG**X8WSO@_*{$AnWWPi)?zxzfs75RHsNX62_%tl+v($>t*88HTci;JI2 zW-f&!+$5(tkG<;rJ`U{}AcF^!2Z^2!#PKML7Pq@&TAn zLm6%n^Fd}QrL2MYM)^BANJvkD5x?I2*EixAm2Ih&?{_N_k~or_)H@9iF_O#>a)|E zTrw2qV)3T08FVSabBlD|eww1{wY>FHqKn+3-gFQ5W`(5&ZI?Ue9c9*T?gpjr1*nja z(Z!KaUIrkc{@=s@tB3zTAP`L#e?Nkqy+y6Uhq6FwCK+z>2t?(C;D6d(KE?;2sxgYk zz1xv>)J8?#Fv1;u8~7+B29hDiA@E-8@)Q}5vgI>8SdhWlvg-#pgWxeD1ir{b>K7)3 z6C8XwrM1k(r?N+qe5=eC5Z=f1IAahWLzNw8B3bM;k~Qw>bp_9>2x$G`dJTPaV8xJ+6uoSWg}?ZGSC9ypdX54cOTHs^_W1inQZG%Y4}G^b{!I z__4#U(~3&~uV<5bxI@Xzex`MQkg{B+&!+?9xXH}f;Z+vlJvYy?y3QLRb2knt2(4E42pEE2;Q`d^fM zj951{v1qH#_Ai(FjQ2PV)Cf?oo;m zcc-c1q${z(+MG3W4(kp*`MxwdYxikWy`3f6;!(1^oQ*-Z`4q}RI)CjF-Yl*59-jQY zhIZaeQNT6CqeT+y7)=`Tn#MpO29J|1Kz#G%Rw-%%n1nyV$~~Nsbr_f&uZS`^5Pj$K1D^1nvSwmyj;4*Oo)yDdA%v2AyJ zl_!PyI2X0}RoqXwy^2{LXrL(6MNMziMImQ|PJi(a?(#jnDSk6ER+ z@n>h_7zSM1Ew7cJ(OFEE@G#-i7URLD>H=_MH9d~Y#dV>e0ZIG#kr9JYT6@GuzM1$28%PaY=5bCT#j#ci`y}jdHV;O!q zHJ%k#9<;m1+3H_=h@gw+>D^)noMFk*Ced-1)It>SbeUU7CC4Q#vQ0=<6L<2;_80qg ztVF;a2lKzR5h45uBl{z?P9+%l0>DWVPPc!`I%NogS+f@O#<(=NUU)YBdI;t{rt;9g(w5#Aw^rI+3u*)FoMcwVPMFKbX(rre{K_l?1h)_2_$?+2mN@zX3_el=y|$AKD1t z><|ez?9&3<5U|5nuo5D*>Xfv|1eL75vNnv+=j8LsC9vKEj@R8b`At~4UtWz1Dc?Q@ zJTGO_#od*QWm(#d?_QaJA|l(tJ@cu8s-cxBIj+i~MA0C2JTt;;^H3kHF<{9c0 zN-G()IQcHVuulEHST9S4b=WJKK5oKCuTcjw^Hob9jQ8T_>8AKWCECKahG7-NV!%0_ z)$Y&&)65raso%MWizYea=96^|m2>k=URmSw8HE#z4H7v$V%iaqp1nfPPaRZ^s2r}6 z6OvZ*b)QbKI)tCr3!7jqHI+d5>bgUmvXz46A~4r{=RTbv@2GkuXiWl<>+$uCA2JAV@9!;?mkjU zBekKUxO(eR9vms~K$2>|JHq&uzB;swRE8res$I?Td{9%V)UY(OnnQz-6hz%&c6hig z_hLPwLwiYXZ)K-`rW@*JulyP--SkxKB3GU!G5*esO~6mp?SQS?=^4CniN@ zIXL<>oe8ll+J;``e|a2Q4rHi?Oe2hadg?>-W>SUV^1Z|yp;^MhD{%Myl?Ld( zm>pU5xtA4}q~I!huRC74K#S#8{<5TUzJTB07lmAFo46<=7=bPa->@;H3;Qt{l%KuQ zIkot2!pJ#7^~n}_T*i;SZ|ahXnHw;SvGw%M5;BK}7R8LzTwHcbeR1m5i#TlJb3DV` zezh|bUl0Q_pa4F)Tl!(DU^?&(bCS_%!`0P>Ra zSwlwXRvE|lr>@^#!AJ;p`&eICUnsxVv{QNO9J$QhH$G{!_NR_?;5N)6cN)MjkSr?9ZIS%KNp zp*4}av?T`B@LqNx@#c?}E2c7_vOL2ZP`TV)?-WNqNWNo43+l3>WPiR>W^gxEX4n8W zYf;|4vPl#W$c5KQe7}!KzVhnXA#JVVvdb{Kc&u0XfjSN>mEGY0`%$+Q`z;n33e6SD zwN01Jd^or2o31Zs!E?+t)}mgIYVzu(Drv7~(Lk(R-yQMKFB7D`I(6$rj5P77da3%t zSKgn8oLhP(dTEx;{88X&b2*g67F^R!w{O1&-rZbM8tCZE6$Kbh4Iw{{dm{9v)WRCWqxc#w?GO_U9Zwj&yj3na@8I84T?ZB$?tdfEd2>wJ1{-%$kcx-MkgD zBjyE{kv1ZTnS!!9IE{S=gyl$zDAX87ioHi zh8@}^Q)S6=ofrx{81cKRVf!qmWjE)z>tcCh$8E3EqYO^y*N;-gBrqz9^P}+=3a!%I zB6_aEP1I!>OU24L6v4>pfJ`5C=K-c7pOppY;Wn??BO@3;Kd*wix_XR9{7&M}$L1lB zP~PK@h6-3YzbM(!r-vr9`QM~jSEl;xRy5x03zn;MWPZtuE|!X~YJclV?e7R*-T5SX z^DV4@I$RgAQY|=|Y^TyiX%FbbDUy)GixRr7Z|dycT*kn^5I>o&lS=FI?0<=|^> zuR)@jiizmp)kkNWa~NM1gTaL70;OWWl($B4VeX+`yrs$MrYj9YCG?5bt#8vM080L3 zlnr*AaBv%p-31%$S5(&(Cn{uigc6kh_gTK4h416kD$vZdv`v<6)Iiy9PC^j?R#!Kf z2tX0pepHzFH?5bGj=Qy3C;O5jp;l{%`+h~lx?tR+Z~$!7bpnK?uxky zvo6y%1SJqmL@<_AO2Ad`jC|$R0E=%^lP*D(6-0xEN1wfJ6O=jD6@r8xt&4$o;-bN& zwop}FKj~{f!#0vh1;(VSI0gAwreuR`)e{L{M|gdd@73_H17$Vk2~eD)@RnO+cO=iM z+)7!Dorb@5wsKaI;tg?*0j!kVA?wgVQyq_IB%L<0_JN7*u#Ig<0T4IMYmG9}hK8L` zI)&zo=ivolL3~4{DXJ3ks#F_phaY<)E}tVxx6`iF zgp?K@=Y_>FQ75qlyqWnAOF(U2bD{KZixCM8iZ|!i5hNpL1U2>NaXT#ycEZf&pvH1r zLkU@(XIPF|Ze((|1mlrAIJ>9);fdFKXSBs<*aE8?Lz$O)=o7g;L(ez+;SkE$^9Oiq zL@_bd)ZL_trly*z4)K+ZwI!~lU6QLcsi~!Y+u7ni{`loj$pWjjtz3wr@$3hF<+M!^ z)<}hW2HIe){($=(481lMO&^l*54ayDfqF`8YD-lHN#IXOfcor&(&`Yo%CzB7d!suM zPp4)3wI!%Q+;7R!0{aI)wYgS#FSF}rR3DPgO%7cYy^{{KkqG^08m%(#3t+l?l)-IcBX2YzQ05BS(n|eooTlWp7;ei?JP3A^FK&tlm2!_od5Dn?VVKb3`1nu?s``N zjc=o%8a;;Z_n;A;rz0GG@)TL#*&0z>v`^4*5-?fX8*DO~JCt`ubz%8_QzVu;^KU{T zuaowgbv#!UPW6ueBlES4s^x!`mf<>WrdFhJ0f3_j-o-3-C3?#$>%zP|&8MfFpoa#U zxY6-t2Tj_&*jf)vh4E4E?L|1E+iu&>_FGHHyt;|ZR5UllRuI%0>&bukjW@!9oFtLW44+A|XA;BvFy!Zb}zX(YC^e!flrA*}!(-_bqIhG{^39 zO<4{E2N+>=H?z|{bvOGu-%Rc>uJ}{uX0}W1?rc?!+w_};2B>iOHK% zE_1R%k7@TpR0U4%l2Vo`-)cE5$@Ov0-gLBzq+|;Q3FGK)`(C`NyY!|kc}DK;s8aT@ zIwa(E0)wCNub`8)0hxUBEvoGajxG*yqF)^1#Vgi&Wmgs2Y&ST98rZWZ-^NjXk^DPs z#1&D5zONjo`%&SvwSPc+Q5sffWo;c}kcSfs9TAX)r!76BWfN+wJ?Qf9C$?C8BPpY) zFcHwU7N!uDfD9K)>=qzNevm25xP4-&-Vi=*LqD_V(O{!RK9m;&n~VNUH({Roz+GFr z;B@(_WM4OJq?mKF{fso#XWza+nn~%$$%pGfEy=bW${{~_V76PO4Zt*0@oN6P)8M_Z z$N4myuS~oD08WA2wyo=*W~XUf{QMHX_KfpIXH&W9l`3w(H!}P6^)u~coobvsQM8QzH z-)q!o9wT&rG`_LxPMWl7vFWfIk{^>_4;F6sZW5E={v+je-U{`)o|=?9`Kjxbozy9F zUM#uZP!=8M$BD0t>8+@2GWCPVY^8Z-oh-|Dotzot{T(*(s)r^$R4+>*iMS$882m=C z+2mdUr%!O^p6hj+RbTQtggcs@rSW0dPXd^JvHJ0cXjBHxCS|p52)DhuFzDgBfr)Fi z&kHyZ60!zkk%>AdQa@*ivt6Y|Y!KE1$=*%Dr=ckO^|MM>9nIT#oR z255W|CI8d2aFS*AWEn-rchQW?>dK+MHe$Z{J!SJCF0V{iq2)_ezH%EpAPnxxAA!e5O$TLDg!LwBA`IWG!9RkC}%&-D|=uZ(gq0=-x`uJK3_v^TB0> zWqa-IzmrYAPbfmjo79N`&i*k0>a;iHC!WMHcXz|0$AsrM@|E-Y>$)MnYNZk`dg;S9 ztr!Bd7b0?Y0B5mnGe2r9jKXHeP{oIfk`phmSmqk`klTTTJ2>y5rSNH)YF<$pHd)Jq{SwaP*MUWU5n_ehrM!%bq;89!fZHqcAP2 zIVDcqxKH@>y3jL;?oYlPzTrRlC?d}vv1qjiU}nEVXLf%^cB5<2Y6t8}q_+*Z9&?&W z9%Dne(xs~~lCG_8ril}Li*jtCxwNurzq)k6eNT+d!1{3w(^HlAJG=)$ zmtt=Ok&BiY8waWc59PAITX|cFlDGBqABYSElf5bg%b!;|_F(D&+;q1e7S$7K$D<4R z?ULrhX7UeJ&LQnofPHmMMOo(GdVO=tpF5tWi=n5#b}cd31x@zHHR$JGMirUWE3o*% ze=D5;EBQ_TR8fylm-@^dZ@qPOV9?@D2+Naz6q%@ngf>bPXjSO6t2J0JszxndoGCIM z{zLu&sh_}~CB**u3xNG2yHq{=&9g<+jH)%fnVDRFF&c~eKXwWkK$NKUD)rKe3hQ;E zc;&c|jY{>^5`7=Pa<^mRln%)VKgAhG3#F0p&6IHagdq3dtjg2lHEMomL-^}G;zIB2 znm6@I_SM@V7V9r4#;A}PQLy#@@fcK9?_SPY?N;oelHIY@-YM1U&ur>i!8U0_SrtLh zq2=CBYwcX2;E~@+1>4XIQk@aMJIWGu@GuV~YPT%LK)XZPpnR}C+zOE^X!b)*1pd5M zU?M6uTNWv4-N7T~HIEoTQJte~RwU%5bXFe+TgW`8fd(goKra%%a`_+Vl?WcRx zBpl^e*kzUbU*B+l7AUb5H07{-!o5@^YfOJD5CpSKCd}rg z)BK0uAV;6Y5SYrt21O^srOP37_4Vb+Q)Q%+Pa-GPBW|!`-rb$Lt8hN4=c`E6bQPk` zPsSqSDwcFoK5d!eavvtsQJs06at5ZLGijipm4sjNvKuFp<2y(V=EZkrtT9%+t~f#^ zBR}kX8m{rfx_Xm0NQ;_b6`5 zgh;j__EvJ4^{#qSG~Rb^bKT{)O%Yg$O|$!}14TVcx1PnDx#7Vjz#X3YZRI*;m7qi{ z3Zb`*M7*Ta<=XTuMdqU~w{>->%aS?bo}L2Yf&(-S=QQpjKSJlXAfM|S$`ijH`cqL> zSgH7w{-i-bv|al7#$a;64#_s{4oO9sE}M1wt78M-N!L+-^M0}UN_EG( z>))ULGq;9`uYw_vt^UF58QCd1v+bH6sa@l~7qz~je@V?-Z#MoA(!AJKGdP^$@URGA_R&MULuMv5#RrC|Lw z^{Bdu1pdUpCNGSFBt&J}rLB>wqj4n$EfkZP3t&Ig ziUzjwOi+Ldr&gZuncB4rL$P>O$KNtQ0gb|pYo(I?nJm)@4Kc%E_<`Ur+V5^cCp4*E z-Ryyh=78P&!-2y|58l-dhGa5sE%xR=X;gFcOSX|2u5&Kedl%QO6KlI`jaowwA&MfK zrQ%JOV@t^sICH#3Igq<={IpPjQt17q7*M)`+3fbA_ZH?)O@ z{%0i3F4Id1OCOpq82S5(kyG{EuoOi9SSH`8XaN9{2cCX*c0TIFwVSa{%S<8tFGqNF z0GkBOTR$k#1|!;;qFaxwh+8)Vo3DC95{p-P$DI-T6Gd2)7vaxM;y_Uu4qsZN4Wat9 zL#qH+atiF%5$dhCicr|P%pro)zq36X4Hi6YuEt7XKS%P+{7o^`x^HIA{XOylmFH?QiOR=IdsX03yOvH$Ozk?i_+ z)sT5zaMF-gWlY%pK&ISBPO}(MwV%!}_4%YuWj<&&@J>Qk-bofLmBc?6_;z6Dw=X|e zV;&e*DdeqCdLy;O%-l;gXtTKc9+LO4eN=NEA)d-#9{NS8_=^V$q!i8928fd&NSr-v|6j%xU$7 zHM4`~$iK6ovG0C$%3tW1jN^7sqWRt(ZvTO|rVG3NWFwuj*vro;BBR9+h+l>ZSZQp?x?)`SUE(=DGqNN{p z)rw+pEKhyc7GaX@FFDUOBt}K18X>Wp12etF7m2B+iA?;ZoP69Sbpy^~t+IB5PR%|W z6*Y@*&xJiN&|zPDH|$-y2B`6);&n&Fs5pLEZNoV6rrpVYpgFo~d`m>a8n!l}aztm}6a~0f}RB&!^LrEp%1E;6-YODEpOO;xQ8v4Fcw(`jd zZ2coblSNP@G)H_sOu@9fEhR47>Ds`w^o*RZuFoH+A(@$Tk!H8cn|%dKw;DOthu~a% zL*Vs2{Yh%3bm=n^UTEhWM<0FiQX1^V##ISF6j|67ZfdJaVVbQwQ`t=CEt^|>>c;VHKJ^b$Dj z8Ng6|g&cP_b4m3nqUEc&8M_+rD7&^%Wwqu2I5 zOc{Uh@UzEmF9CR)4CZURCIL>@2_~ke)OQ80i}KgdC){hpOKqjCH8S_J&kgSDeK^t; z^9kBLH|U-IFgC{fwR!i~JhdNSTS`wlwPj43b3Uu$2FK-Hkffh;aBVhwumAYim>Kcu zl6E-$dDN{3*#FvlggJ};PG1Z?`pSDsC5agWWn z*A3c+Y`@=@o=X9=Vv$ZvGifMy$$aM&IGNuJ?E(4Q>!^)_)J(g&}&h{X?g96t=KNG-@E_+sgk16COtnj}r}?G{kU zENx>24`<}EM}BX7ptCYOI*}r-J4fFp=(gAoP?tc78t$~zJg)HbFVU-pkcY0kBmPGQ z1rNmy1=tIgF6b^^BZkOr;3~1K?{4Zb8Qx54y*r$zw=X4^C`3E2=x}IJ6tg`1K`wrO z_vgh)(9HwMS+@H=`N^?rP!Qx|!SzJSlPkSy1-585^^Bvh`?L~guT+MdnHvm{M>`vT zz@dj%;hPP&-n*6fxCQGS{}D@6jZ|!1C!G7b6%H_6fui4pi zs3|PgoOh7dxE{C!pj9f}Tz%#z=|;)>W<)v2D`Kj8hf@oFwKhfsZ4TKZn_Ol1(-cZR zKl@w%J)?AwFHcHC=FRvMuIqWjozjf&!`77*!B5Zq7yQ5K5ghf=ZP=*lbBL)$YkR4l z&&$d0CU?-r1MmIbKJ%&WQTSPs$a2tR&_KMv_!{kK&4sW6?iI?Ln=Z$tzd?$rtwo!_r&DcfwY6<#dD0c|w+3I%?LO!p~mpPIoHiDe*L!HJev=%?h& zIBEMx6seipLc#)_m3x>S8=>FTcB>}2&>0gw@i(Ir3(wKmk z#na~Cq=WC^O-d)4+M={&MTkhBh>)&YxRhT#gHRFwKY$hV3q8>fVrZOIV zcipoVzxMrOQPM3$WiC3q2A^mT0>6qA=E`dv$P*J0Ouvok2v^W>aYGqSow?P%DE2dq z0_;Bv?5B{);y|QjWQIk=EKNQy+@JQ>oRzei4rKbP2<`Wi3kH3YcRs~Sg;%Hxi&!xm zphSsz(mu3A#FLuq)97lHWg3}~xfxGx0-L0Oi~cg_0#z4u1j2KLqD(T8$LhSn^MMw} zdyH!lmSWh_C;K+97?C0Cww(sthwlaN7j{2yBmC8y-LLu!M6Q8*yLV=b*P`pKTXsDH}gE6=>TEKF~?dL z%CC`3E7QkSBzjLR_)87lfl>Ej7nCHU!lvD-1vk9vQtOQ0NFIsj)U8Wc$JKBa zD^DmD<$`@DB3(P18BPp~-BHyt^FY;vb(*KvKzVzDgUSCrM;G`R^#otkYQ4_{C&|x? zQFUajm;$k)Q)DM+HjriP*2k0VnZCFg17r&?t0kgx0jjFq8%sz|Fa%9jeveOQJh;b% zm125cM3Jr^{)%EajyFOC_nFR59P z+q8ykPmFEC%Sz(c0vpfT6_)#@g;X~YTrc+Kv%ckg^EJ3Yw6FvgO~xH6*D~_kcQZHL zkEYc|NIc2^C?mt?KC;w3L(hLR^&}i0_}mQ>4i^NKk>~WvwpU(U+xF)EgRLUUuCEk6 zw(d8=l;?WqkRkU$^4j_#xYHI;eNjW-BQBzBKE6y zAZ8V1_A&FC^-e2Ir*Tie@cjcvsHl5VIBnj2wiDRNzkhM49%sykqFgmRRJgt0InXrA?K_-%>u!PU?+b?h- z->sjRYxz_2`fX5w-|(rEaZFAgg@x-~=E-sFbu>NqvD!cQC8FXShd1kYd%=JV`Hd{& z&tey)wlgo2(uM%&jcJ3}qCI8L1u>=Sg*2mGYGLIlr>m8O1-WG;!HjZ(0iwKmFc4Q~ zyI9q-VGmcdg!;Hv5bXuz;W=cDWA;!e`TJ-D-=2?*+e_JQXhF?lUPoI|1S|DW&D-=9 zW+}bVX>|!Lzuns`xFo{ij0$6h5sJ`s?NG+2eK;3mbtRkYPWqWzn(m+^{AP&qnWo~q zDXVm;j28Mb)9Zksd}FBOlX&B$`=+hNlR-G6*%3pRCQ1~hGW{}YNN-XkFDnK_seQ~% z=(l)in+g`OMOjiLY`esOT=c(^$SpgS6t2Y! zZs)3M%^Obyb?Nn3Rcmm)v*`GQM!e<)^1)1FuqYc!&h&5E zMXncg0~dfI)%XCL=Ai|@1hqd@H-s{fY4=@)-(G6KwyR-rk@euznvK}9&!~8@zH7tT z%5m=!6W?V6rQwDMk4hf#(sI=n{!Y}DXBOX^f4?^vo&UfgmMJ1f0g8^t-00fQPHY7N46-!jWDT`ipOTlkJ-6~_ zof&q5`l_4Gt#YreP+?ECTZBzs^zW6g5flEiCW9_cg^QdRaQf6tW$$n8;>JxFs1LE) z?XkT1SNWncg6EWC3KWrLyIKYzAF&|SO&ZGjR$&-s{K2H>7{34?QKW6Hp|jQHF9&<3 z0o3Pfs#@+967F|bn;L(6mF1&mOyg`Ste#JpO{Q=P-AGzQZgEb1mscMuv+&|pwUETd zR0kCdNTrIogU1c*-gE(@NSp44|}42^L)t`x0B z3HuSaWV+w!TUjKNa%pD_{534dV3*uA%Ej=J_r`S$QWDyNGFq!`BbjD7wtVKFhPzF<$J^@-KPCC<@cZ=a^B*nVpIp&QtcUco(6`DWsQ5 zWl?6<*~k1$B>jf@@9rK!9dl4oRw2>+7y>;90r59UVx+-~QR*}14F(wv$}-TiW%z(B z_aR~{CSphKSR^x|sKP7Feod>!Q~=C`$MmZ9DgSHR$iMuWek*unsZPlf+PMP;+dV@p zc;_3s{*%%LWJ;F{)U+FI9KONWLyG>HJa}ZKJX06)4IHFuDk&|@QyskoET-FA6$O`# zjOMNitiRio_$o5kd_zjbZnr%?r`;bnLH?5PuX_MI!q30WHc0BBgDmn!(X=B;Ppk}*w-HsvdLah&Ey!KU zqQzMh3-@FcPx~Tp{zF=RwT>C_3}+Pdo)NVjs2 zFQvYLl5JKKZ0~vjw(Vnkb1qXF%b5 zCOCCz*?hNYG4QfpHzxCzdpZ1B|F{@{P^4j3n8={gm^}4V^69_ZA7b013UlDGaKuCI ziRvdrGz8m}aBVdVv1sht0sl9EjH2UX>pEo432JOF)ta=hx8vfYS|9`=pG3iH0jl9skorE~{?zk}ciL=5bGAI%*=Z zZ(O8Sd~*f1cL?U=QgSA`?^7~s6aKR6%S!OqalRW&V(yk~jkE3eNM)iO3MQBIl-IRJ z4ZM5<3!c^m#zoI3DI~UUWB2l0pRXsm`{nRW5VQK0mT~v<1M#9RBWzv5vZZI65Su7Q z4C#yP+`rp=$OQWQuEzZb6;MIlL(ND#mKi`$B^(N9{Hx&(iXUo)OAk(2srK$Ky+tZ~ zw(>1cGJW0qYOPCeRKNlU<$tPGY4A;Z+v3eUBIq(M=rD1Gk&7xS zs1_p7Y&1<@^WN2-7JVQoY3d|ij`3Nv9vAsVUUS4?0sz=Df1S>FHpUjXd8;5%H6gA8~lCsAK_koyQM(fs_@e?Vtb zFII`G^uNRMjJuo9C!fT!n1ur(#BRx&&(gEGlsq@LTi0&pGUK^AKQ!N7?3%Sw@B29o zX#As)frzW$~kB? z4ioQ|qTk8RHA!@-JEp1V>Y7gZgZjgkmlDF1E|`P}vzM2WL}{bT;a{=9HYGcSx8r-_dFF4`&ESpVCV1v840lc+)i%4xI2xl9n{Xguz zcT`i|);B6x5Ks|8Kn0>8O?nX!BvI)dM5GBw2kBjb1REkCAcAy=^xk_%TIfjcO%Mp7 zLm&x|+#PtH^WN{A_r3Rw@qK^XamN{Rj2-r7ubsWunrqJA{LQ&n!r?ySyv4KoWmO&t zu?q-2*Qx2pTp0@gjkzHuf*v*tBcNboUu?;5)#O-WrxFUd8&q?7pMub);-B)oeE;zp zFO&7B>&-_?9jdQ@Djb#Ir-(o^Pzyd`OtRwt;DafNgqPar9tP4`c~My2*ovxJuA2aOZ#zWcX_UnlkMP5_wt z=gvaREOIM4JA|BeJ#=&Xjn6@qai^accn;OsvA6Kiq3(~&jcaBHx9rV1JS)k?y~w`b zn0@#-vBL}Gi+KY$q0r^Ff$tSVA%gT|l5L9+3ESZ#-}V+)q0s0~;VqH17MjCt?ed54 zH+bDP3r41tThFU&s%6-Q$JS(CE$+lrbb2&Tc>X9tT>N9s_I!NVc5-5&QUayZ6Gq9A z7!~!)d~&r?6jZE6mxb`hGCS_iC^v+0jm|_l{x1Ebf~kHXjCI;%&0cEQdmHb%&R;^u zRG_RpC{%^ZRQ#DTQaZp9TCdS7wP@CRQRJV?8PAZWQI9!iFdgVH1AXTO_H-JX{Tx@# zRrWqBZXj|T{p46*2V~;q054!-=a$R2?>0f0n=5ucT{jE1cuH%^6_xpHRo8i~+3j1q zp&^iTyMLv|FcVn0r${jEhE|1^dSidDfw9l?SQz1l9r)$jJ!TPwboH#mfA6SKlUAWC?AL(kw2^a9tpx@T9zw#yV3R=xBpQ&sQD zG2JOfF7HgGO~1B58ZQ>fQYmQL8{ZIk{o|SLcFaS@@QPF`bpzYDp#pu@9_5j)$8o-@ z;QPt7+iB4He|q!POOzyGWqa#;Mi;ao_lr9VPEcET$SfPT1S_%;i_5vjz-~puFtr%y zk+(k)c)sLMIjSH+r#RH{)#eReM1p&+&&Hsnhr*uCC{ou}Jt8ZNOKgg>#$Gc#LuB*M zZ0DbfW5tf_KT}98iyG?V9UNhIs?OzSFctSW5Rgo3rIr^=fZ4or_4mq;+}e0|jtqi= zIXMp`%#(eVb80$rOZp;~wN2aqV(Xy4MyD!e^0E6_kDJ=wh4V!%>`(K3MNL09!nCTo zG=JdF-tTo;$mJ^5b3fG8=PF_CqAg?Xn$lp(qjz6C{1vKP{alK#1OChm@+!w`=$+8Q zs+q-Gy!YE>>xN!z(J22Lt@SG+_s8m1fGoq;l>LeH5AMhE1s%u?W4ebFof(6*9sv)% z4)R=PK~~G-4x%t)?94bqsa3L}tGDQ=DA;Ap{aTi`TjDM3ypjU0q$F3q^>Scz6HlbV0*suiU4y7EAr=_Po5SB*>m( z2m22^dRiRcB{%u5A2Qvp6P*=W*Equ8q*ExM0)>xUFHl%7oDurrYfO!XuyEfK_GPrQ z)eLz1SJg3(<2NH|4h0k)S-{?AJccgM@V2kfj(1Gmss&QG6u!4Ut1dO1qa^i!ySYGn z+t%h)B>J*#nsclExXl*x4t9dSYw1{m0}OeV`cLIS)t?%xtA~rr)1Kmb!1WSLii_F%d2L^9Qf2c@w{Y`8=?VZVjuF@TeK9 z?(1z=$>LAUs!2l*#<1VxmTRlS<4{=~b1RSc`pcc_OY70G?PQyZsA4vjS5a|u8Z`@h zH}exe)DM>r*dFmc6?AzfH#5G8-c2?AWBXL|Am8iU$h9o%d`cGUoTs6g+4uyxi#<6PO7_bHG%3bl*@! z9EeLWC&?PJbSIa&oYmHHsIY0_zQHU>*9JPgeQ?X_+`OSkV7FdTGLf+r${ z)B5}Ek13cRqbG6-r1B;I{iU2%s?K?gyGNbX-m@fQOyD#%T1r*fQP9moPu1To7BDo} z7;!fMSx%|snAPZ36%D3IewvO-O^k%s3a&4P)P~UBw88Q%a%9hr(#u<-#@vHj9q6;; zU|JLVa+aN$;1sjYsVm}l=dA4*|4AkP$*2A!qw_9NwNa^2P;zdCMyP|uuak4S5?Y>U z;5o_8%sc8osm4Od_z@!jHNmgpE8UHAo$aO3Do^AypO7=zU_usHRS+Bp9eZ38E;Y=< zRw(SMX0bR_4x#fZ21uO?GTkNnmstCMdc|HU>a9}a0|nX5jkhW4?RUSl@TS=LK+Aa? zq?FVTVwzj*CaU*3k{6xr>=T}#3%4o9W%uJ2Lln|jB$d%j2(S|3q(f3Q#lTZf&D<@V zCxOEI+a$}wz74oTmI5lvf3rJCF1pc>*1+sW`ExV?P;M*A6VCIkbZE)X&Mx68D!&fE zSS?>|EM}lWgP`Fk8N>>%Q``)*#$v%f&-yg0z4s{;QA9Pk4P-v-m}>H=$LzJlERtaG z#IWmHui}9FnI+%=o*@?e?{>@&G8)X71E_??$?e-`MOv=1p=V7#V^ELjl}RDPQTeI* zFCO)YPM{U=)Uf9|E~XyW+j`h6X_BF^5?5`kM&k;*M~|2>kj=LQFNzm9pnG|fRd zShoHfz&;+5c6J6F&eM0_-WB~~qLIBRz7I|?wJ0|%a)&2`rRlAni^s2)B>=_3B5h@l z{uSa9-}w4(6y=?R$|JTp#^fe%dE$#bkoTQ;10!;tNxLyLM_$+Rw0AQAEinq^b$h>v zu}?vPC3QHm4YTV;D-y_l^;4tkRSj8J6xt)+28V;T(Z(2z0T}N2?`AHXfWVUUoYtwavc+7 zh~Y}XeNlU+cXB^lC&M%1$yme5RMBUT8g#MnkW`$`Kz05u4>o#cgL4V};k6%Q1>)M4 zFuC&IcgDXSeMC<)<_)i-(!LXYjuGHIz;4B#6&V7wZZeIE=Gre-5BV2~rSS$Cc%p%h zDpxm_)ab0Qs`h|qA^HWYJ@j%D)>EXX@4C6IC_L66zW;3E1+LgDAcL2bk=`w8v+FW*h;@K2DY5QPo^>c6x8yPseew8*H??ldVzFe~&=- zso5)lg%tA>?SVBS>^Jk`TCNcNhN%ytC}6<(P|4<&fz~U=`s%Q%w0_S&n(LL&s&kC) zG~gG%-J2Lmr(@qL359!aRB?QE-dXIJmU#aD-&!N!>&Lfhja7#m!16e|y^@;(+C?-@ zD#@Su)~iP-Y|+I?pR)UYi{?nWI(p}Flkdc#X#B{0ucoIU%U-B2vz$Q7K6 z!TQ0Cbua)@V6;CEV~0*y?M7{xZE3nkcUGUS`Tc%YxR}xIz*Ur*sbup z3#e;^)~gun>U~j-E{K1)R2(*_{*{>Gm1kfpPTxVL7iCQJOg6_UNiwt;fbV;Z`RmmC*)uZ?#cHv>ZR zCP>D^h2R8;%nVCd!W4ukVHFDI90yc@sQ){sT1_1yd_dXPoa&Pq(}78=D9Tknv}|n` zlvN{I?{O_=q>M^Z)PPx=zm2`q_?OO;Y&kt2L;xa#Mt*5^Y#kUkROHRi+=KS;?%^`` zwd(#7i|Tx1!1t{`llvpB-*Iz}3kyObivH z7zsz9=Cj$hw!ZiR13BQZFf7?E8CTeM^|LAMFc}16L#pX|H#-#Dd}M+Lo-~hI6PgP; z6-`^2XCM^WiO3J#q#j1#ex3+*nVbx|2v&F^|7c=Z1&iL4)+X(pzZc>;lw(u}__Q}! zul%dkEw3pjcNT&d__Iq7e~+BxmsL;`{trL~&ohm_sNR8BEq;9;NKUI#tUwyB>--Um z?l9E*R^ER<4NRpamIkb9ur>ft9vC;fm;#5*x8cf-0l3D`;d=gcR^B4e;UN-;J56*< z^y7i~y7*nIk=&XO+tcS5B|p1_^r1H=P*lDc&p){4BQv}pVNHE9#2xI5#TGU1SC88e z6|n<1?%Y$#cB-3rh|m`H=Q0@_w4Wi1kbr}HV8nfS#P@fb{21&zI0%FNSs_%~g~28* zA05rzof`wd6=im~tV)x@v*`?5a|fG4*Tc1PLorc5^J-&IIqbjE47;-nD~kp#yQqne z<;Re`kJ<7b5x==Z?4v_~v}y8$2fTopO&F@E1b2w$QE}jydze`e=tvg-lHw-SNLrA- zHLzI2vt}?=fI}ny(T96fkw!C5V*ynL2p&xsy>F?wBc~&4>$W}N1);YAzval$2t2ai zaZ(;MGV>4*p=wZzg}fmbe+9lk zZq*H0GUn)kY+h?W8ROatIi5SGb2QhWHK*ldIxp1SHzlv~tpvn$`koQn28bw|dDP17 zr_&wveEXjB$#j417_9r`El9mIp9pOP= z%%%wNI`@6OtITt_1)d|7R_+Q~2T0h|Mnc^la?sb9ecycvaB7W_?ico-oc?$$-OQdN^os zL;@$U9BYFG>^FvYGK~!@pvbho@oiM1%il3xT*v^Cj}k7MOm|SKnQd3G!A+HOiyc>& zqQFu$vw4RT_d5fCIZm?PeRt07^+;MGbDKW5*OkMiHlz9CH$Mvuh+u0$xzPk)?#R_~ z+;!ZAvw*f2!90V|lhrIt*}1d1vzE#)!3~(B-@9GzgVEa!INqTx7@Uq?D;HX#D zE9=RP-Qn=|7lwoT-%s2Y?qRpdXj!*CN7xN``W{vY>fH6shZfV%^ZZi6JgeO$_*CS$ zJ5iBhhTlX; zVoa(=>sUdBZ`~GSoF{|qc4f!VC@L*c?fPTQV7baJ%jRyUcDmB{TLEJ(DE15hAWy~0 z`J669??i$Oq%hbZbogIVB2JnMk3kRmfL^i94RI&uty)}r;)WcVF0a3spQvs*8H2x@ zral@eJ4}hLIrL)}@0)4*n070Oy- z$LV>>H5;f3i}HNn;ehhdf>N52vmyD22fFQ;$Auinx2?fWDx|&1vO(|VpSH%Jz)VY! z-3E>xU(YMTzC=*DYZm71N$cQx;#-^uv_@P&N!e1GAANazDq96t z{L=nD%TI@*;Q~s2G#^xA*+WrJct$Qx$jSeDc=291ZL;$20R4bYg*#LN98fc3+2+b5xU2Nq4>8}#A92)m_@Xma0_kxvU zz}EY1JqUmrHmFAWHcDVih786Z&_RH3Z}z@CHa!kJmRBOi14IcrbBd+rc>+g{!*u@a zhWDvkWf%SxBgoDq+uSD(Z9>*5BtuToj(m&JSvNstV8PGW=6nnj5R$7F9*zAO!0pxo zV96MWT4&q8MSu+r(owiy+i}hLwt7kBMZ3s0pd2xI)qzK|nh9sx+k3^M{Kpiy>F96~ z2%J!_*F8=et_=(Y`wo^XS2$GIO9H&ybh%>VjSR54Fu8b;HmTaa!ro8YFS*wa&w-}s z#I*d3aYx-`A>$+&(xf5p3Y0JzeX~slg%rLR1peo&a9lK`8?+RP4eN9LKzsERMF1nM z%l@Q>*g-^jLjReR>F)tO9~tn=VT9^LLVul4esl`5$x!m|ELciwIC4QthrjGd)gE{> z3I?zNmLxWg*L4zXn3qCT(f40EESzpLY4Hr6N3YEf=&+}ax5A(O`Q6QM72A z8Gp}AXZx7^8heAjbzxj}t|ouN+g(cgtKYx=I7Ek46t38WqZ2u(M2;Qbc#Sm|&@6}I z8~byZL2WPgq9F1@p4!3&-&G16LlFq;iAMHmaFu_Iq0w5?%6|KUNBk{4SAUs7U zgINr_NBRa%i4P44i9daGi5dDSNYc5TksE(KGL`IYN5hMTQjAi69{@hp(RD@}oBBSm zkJkzzR(a>*9XZb?yww60o6#DEa%m=ZJ50LUTUDq|NBH4_jp7F~%(~nRL6+T_UO%Ft zCFtNOj-Wv+H;V6?c*^lu+Ar_DG%3bI`#Hb=suwQ@Cjds8BRBu7Fx24&z+_IikIEfj zafVd|_C8qL8k18pjnm$q0JU|fBGuab=w)Ci8v{zts?E?^0Z(1?^Qb2-T=6ClAM)>t zbufh&be%xPa9{PiHm8Gqx5{kC{nTphYzExrJw=aqJyq)YPJt+1DlE12wAErr$LJsY zJRltn9N$U-qzMGS6JHze&PB^>*iar1_-ECu1M^i(r4OjEFA;=#*o+$90t)Y0LxCw> zokuk(%DUa90_TEyq!(!D1==fS-C!>?bu6g#088marrM)otGUn*V!U*1+O;!Vulxs%U;jt~7tL!AUhSA+%gfA@6J|s-JZ$>Bk zyRwda=`~fPmYsO~|c#*ii$ftPYY6JfT<6LkIu)dp5HTcFpj1>GF95Z_p4}9D> zIy&c*>m$@~f42|O$?*XWe;fK;eW}6{kJZJRZ|%}-7438!jdVjm-0(}Vzgos(m(Bi! z|Ljw51e)v`2os1`z+lNSKogkl5*)a~1qg%$XwvQ2bF>RwVQ!gY4rqeSi}C$`{n9^k z84Xm!W(mG{to%Jfy}Smp8js^#IqFJQNUn0tfq^2r88;caDdZ0QVZ6{`kx{XU8DWF)eBQq&`VD&tl< zKtr`fO&fVBBrsB<9GEN11LHvr328<8KkT{E&PZ>G!9`N#+mT*Z^`O%b|**wL!!lWxNWc(cxZJGAbMg^$4L>Zr>v?|zL`DZ#giv9&O5dY%0D^%7u+E8& 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 z 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%0At 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

&RYflv9z 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 literal 109933 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 Date: Thu, 14 Jun 2018 16:42:47 +0200 Subject: [PATCH 178/344] - use auto --- tutorials/eve/boxset.C | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/tutorials/eve/boxset.C b/tutorials/eve/boxset.C index bd1966ddc93d9..5d372bab03830 100644 --- a/tutorials/eve/boxset.C +++ b/tutorials/eve/boxset.C @@ -14,15 +14,15 @@ TEveBoxSet* boxset(Float_t x=0, Float_t y=0, Float_t z=0, TRandom r(0); - TEveRGBAPalette* pal = new TEveRGBAPalette(0, 130); + auto pal = new TEveRGBAPalette(0, 130); - TEveFrameBox* frm = new TEveFrameBox(); + auto frm = new TEveFrameBox(); frm->SetAABoxCenterHalfSize(0, 0, 0, 12, 12, 12); frm->SetFrameColor(kCyan); frm->SetBackColorRGBA(120,120,120,20); frm->SetDrawBack(kTRUE); - TEveBoxSet* q = new TEveBoxSet("BoxSet"); + auto q = new TEveBoxSet("BoxSet"); q->SetPalette(pal); q->SetFrame(frm); q->Reset(TEveBoxSet::kBT_AABox, kFALSE, 64); @@ -56,7 +56,7 @@ TEveBoxSet* boxset_colisval(Float_t x=0, Float_t y=0, Float_t z=0, TRandom r(0); - TEveBoxSet* q = new TEveBoxSet("BoxSet"); + auto q = new TEveBoxSet("BoxSet"); q->Reset(TEveBoxSet::kBT_AABox, kTRUE, 64); for (Int_t i=0; iAddBox(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10), @@ -85,7 +85,7 @@ TEveBoxSet* boxset_single_color(Float_t x=0, Float_t y=0, Float_t z=0, TRandom r(0); - TEveBoxSet* q = new TEveBoxSet("BoxSet"); + auto q = new TEveBoxSet("BoxSet"); q->UseSingleColor(); q->SetMainColor(kCyan-2); q->SetMainTransparency(50); @@ -99,8 +99,7 @@ TEveBoxSet* boxset_single_color(Float_t x=0, Float_t y=0, Float_t z=0, TEveTrans& t = q->RefMainTrans(); t.SetPos(x, y, z); - if (registerSet) - { + if (registerSet) { gEve->AddElement(q); gEve->Redraw3D(kTRUE); } @@ -114,9 +113,9 @@ TEveBoxSet* boxset_freebox(Int_t num=100, Bool_t registerSet=kTRUE) TRandom r(0); - TEveRGBAPalette* pal = new TEveRGBAPalette(0, 130); + auto pal = new TEveRGBAPalette(0, 130); - TEveBoxSet* q = new TEveBoxSet("BoxSet"); + auto q = new TEveBoxSet("BoxSet"); q->SetPalette(pal); q->Reset(TEveBoxSet::kBT_FreeBox, kFALSE, 64); @@ -149,8 +148,7 @@ TEveBoxSet* boxset_freebox(Int_t num=100, Bool_t registerSet=kTRUE) // q->SetPickable(1); // q->SetAlwaysSecSelect(1); - if (registerSet) - { + if (registerSet) { gEve->AddElement(q); gEve->Redraw3D(kTRUE); } From 1c5d12b36fb8060293e65f77257bfd053f2d9722 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 15 Jun 2018 11:32:05 +0200 Subject: [PATCH 179/344] Better picture --- documentation/doxygen/images/eve_assembly.png | Bin 94902 -> 771604 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/doxygen/images/eve_assembly.png b/documentation/doxygen/images/eve_assembly.png index 5e940a30a0f3f08265054197c5d5ea686aa79451..b8d710630fde45da3c2be2a8511ae85f11e3e6d7 100644 GIT binary patch literal 771604 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

5A;d`|y+ntbvZd9b8I=$~yM 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 z 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%0D-cK&x?e_KzebK+rjs7ZkaICq|N2nxA^3K!2bwt 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 #dhfZkb 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�c_K zKUQ)fz*c+Le|Y8I!`VIPyN#{P74&Ijq1NuaF4$HV&RG>(xqT6~Syk%%0pk~*(J(s* zl^C`7yDj$wob*E4f@k*7kUEyWPr!zq0a=`cSoGRaOCFCoh}UeQ(DkrcxfKXp*^@>N zj@i{SXxfpZTd>Gawb_NMt`m#07KtT}M}K3q&;HcjN?A|*>1>LcasjCng*~UDtG=U?l6~lsS`yPhrz=^kW=H$p|8G3h2kk4!u;`Y=IUA^t~vsW z<@u4N?xmyJ?;upw9&A5q>h9wg2XNsQMx*guinD|FVD{|trl(3vk=KofXXMMlo#hB0 z^GF?nhV-+mCMX9wMnNvxT-09T6D>JiYm=iI)4-+ZKCE6>LI}xyoNpZe{{8;H&4B%t=SD#)LM`Q2_2bgSOr9jh+Ee8yser0HK`TH$1l#=IP6Y58 zA*g&Q!YJHI`Zm)4+EhUB6ani2F}%B;n9q+?!0zuEO-ko9d816%q=YJZ*cRE$ZPXoAMm zaO_FASZvosTFd#v(sy>eh%2^~uX)AS@Br3ujgvcfA7qHv(9H>%NejLcN zC+an;J*6N)$*)-Wgj>L}z_2~jOjGN-#GIMT|4q}foe;R65 zF-a+TPAx)d(IGeM%T@DvBD+6>z9V!M(q}lP_bN(wic$_9gzMa69KH6&l@6q{8?Mj^ z3IAORU6n?XG;L?3KT_@IdVusD+Vs$afyniS-{8%oJSot>Ji@G>O$Eksh;p z>g=3zUe0r3$!}(5%EQHM#J}_xH!;?twzBraxTV8ds-kgcw>A~N>0Lpvb~sQs*ldM= zeo80kBU3CJ-H)*{#=m+5!KVqB45mmv$YD+QbAB;1~&xWt) zE0g8@1Df;u{0C4-{F=8Ncwx_JomvTBq=-4br^@|I6R~fRKBPKM)3i2^pxb3i(-ys0 z;2uuc=s0ejeIo*Brg$syEW4cJ9NA2Mb=Zj0+qxPes^56~|Y(s^lJE*?Da;rMJipTBw0)9v?Y;kE$-?)uabGEuMN~4#lBujtZPot_@p8J5n@cm98l8W^<6swl6#_>#d@+~NzlVzg z!9Oe@)EdQ~zeP##;;OM4_(p?6ABCA)RtZlSJanjQ4Boy3-5=^$Z}W!@=&Sd;C}v{I zxW7KsIQ11lw&lUpFG^`fV0I{Q_nPA;6&NyD0{`)kPAVRGI3bE(J`z)4%W zi8eD|S6TW32Bv7!l8ZmyA~wNp;2e!_h)8m$*gZz72#O@6*?aXC4a&adE_}WfS>9Sz z(g?IP3ny^w5sxYyhtiFN2V}X>ur!c&wl@~>7#6ZqI(*y5|Au0kF4B1$>iAy`3i>X) zGpZ-0I3rq%OrL)|^J?@bxpO&YkL9+cXcfazJ5sDuTbAf-QY+N z{e%AqK4|;EqcxFpId~V&ne~rzSZ__e{?i;J#c~peBC7iCW|Rq9OuW3R4ixk(y9hZUok? zoODaho^6H7x*Se9Yq|M)Y=@byfhLIa#pEPGPE}{f{h*HeJp?69ew1{g@f&vwZ(vxp zfyY(K_GHSRk@cM6!BD$ruBfX{W5Y#%(rbSX+P~GX2c+s&IDi}ksj(W%Exar?N2NRh zCK}O-UG-NeRsdrM?Jc4`Y_m)#Ys#6nT4_juy$>pxv|1)3_9y=lk)XVcN2%M;xoA!#bNXoKSns~8J92S|TELGE;A3t(3PJgWFzQmpF>2}VovqIvO zrP?Qq6ho0_V=|w9)WsBFPXGv3_eS$JC9VLi&vnT-6i|I=i)X+ttf)(%pA8QU`N=Mw zMh)IE=0U-?+>!yuqzbn`_|8)qTfaNM_;rw8L`?z2P1ol|moPOiM~E|WE~?xB91Aez zgs9tp8sX$b+U}X=#XyaVhyLXBj#*UC(6{Y&=73PWm(>ZK1LP|5zLaOxcc=PX9 z)^Z(!i|X8mRQp*1sXxuJ<~vC#B`#eUI^|1w`SF?b_5(*eXjlG~Ao>jvC|mxY5P>a# zCY}9o0|K8LNpeA4Dj|iqq`H!BYg}#($IYaEO%ETQl_u7IcHm5n2~3ie+5iovRm7X{ zPUW82{-F38+DOS~03TX)pQOgWs91D8Xz;(SKWggRSjpg|OK&Ifry!0Thmt3&f_{z; zVpMm)fep%6bsEv~o1(PguDDHh;yFT#?iJ?9a2U1A%nzH*&pq-1jst*bNn0OrR%4~^ zI|z;fy*eg1$K$aDEjFG~|GmN+w;I?V#MMrl9nwX`d8#;eELt^`-@T%D4H3j=@qiA$ ztGQ3q<7mkPxlT-7anUd~mmj zx%AVq=Q1PL2oYOn!a>fFtx3xgOce}z5K)JhkY)^i;8lP!}cp1kjA#a3D5P$na>9KB@ADAXargFxASQ{~BMtH=f_(cgjCq zPxrNI`fz+u`b1W%3Tnf!axhEBZ~5ut@v`EE5*?F^_nL68!)Zpx_YEAYN~MY`FYfsc zer!N%``+=ENF*D=Gxjgp?NyRJ(QzL&cDDw%unqS`Dktx?lF&~R_)7P`&G!NH>$bgW zliH6!V8M#j8YCHX#o|DQfplCs8Kfc3+8ScqQo)b^U?iG%(Q^v>2T#xTE+N;FD?-(O zszyWmh>IZ#%$$@?k|?d1ju%XN_84ase)Q7MU~)q&WLARRtuOPT zH=z1u<4nom&-6WFh^{HmayzG(<-ui4xfaS*nLy>z<04an@Y5IZRfkj8x;qqX0iwX{ zmc^b`Vc8oCEdRsX-QT^yb2Crqh+_zhgm5CZ(C%Z6OW0I@99kwa!8M-$CiNrS03SmQOj*vnVswWR9_Y`$9-5qh!!3T$S@ZasmtXNKO z(;pZdSQc7-K9Zp1i7dj|VtD0?l}WfsBr4p!9U97oMST})9^BOwQ#x}ii*oAXZ$!+D z(d-g`TkMJ-_sTPoyz~{2Jz0RpsJEtF4l?flmqEr+8|JwMveKL{geF>UrFYE|;ACVybz_M(lT>Hk2c9T1fTWb9cUQ9RF_)^{ezQ2jX`!Vc z-7(|`*;N?YHF$zqRvHKB+os3?=Y$i`U20FM*VTd48y{wgK6ok|p?2ez(x{}Ad-+Y& z01_9s1yL?&(U6}CBOnSRgsR~8TCpIQB7T?B>^ z>@_WElxGV}_gP*h&2dW$bcOOIzf`*g`i!6c4N7e1jQqR$hTRkm{Xm5h;isa@H3moI z49!yXGgPE^Gmc3mn_bk>mcUc51B%!+JggSmoS$*_b#+7=9Z4UyI$s!YNzXMLG(V^k zyIHH&slSs%IL*HSAN_uDfSQdGi<-{3KVF}(wqaj+Isr4)+@Jo!bHyI1x!|rW1e*MY z_G@nUiCyfQUMw>9yW_pN)+{+!x0lQB>VH1!zn;EBVT9@aHeYyU!1^X{-`H{JE-7YZ z;l{e;R{as_f9MQ{JD_j!A3Kvnp=iLLJJa4m!0VogO`o9C>y-V>De|b4?$;d_-RH?9 zB$!w|U};LuQ*!cWcS2T1kV^T5i5Z|tXkYg7?2Ug67z(79{havw-t`>`+MtXQRp!P{ zS_Oqbr)Td^TnsHWfXtt+*JI`3T$W#>BK2aL!R-klkVjamf8P2+=;5PQdt0p8%t@lA zXz)j>kZko%Nab-shf(n~L9Sbc6pd-9Q%-Ivx%UrNuuG$X6a!qcX-o1BhT`|N4?tt(RTex@(xU?Xxzd)h zQQJZ>Sg!<$2KW(2KDVdG&T;!m9+N6Bff@~bV_tl@nuM9S&~ht{<7g?)2ro07ZH)No zRJBPtWdG+ew%@kg`Uq#KvOW@Wr|atPhWyw)=_b%S?W8FXhj97Od({^tvsIgDkCE(y zNivrtPQm{c$JoC6=j???*cK51e-60|O&iXo>2jF`KjCYx)-?wf!x=meliYT&5Eu48 zx+~2Hq~g0{)NHF8+30&!&^}!^#cenOG|p^4c%+Lgm#Otj{M_FdV@+?pemGgn=X_dM zzHebZzD_q)YwDbNx*2}4!Y96aYlGa~YZ#|{^Tj7hCY>>jnRD^V!_*PNRITZTAN8xZ z`du&T=S-*DZ0p;Nnb+>~`QaM}pD!9s-aN$}KICj@2>U4W)f*k}UOlY#X#d(ZPBsvU zxQE#rI@w8| zq_*=;P8`5>=m#x@K<(mhUk8vUQAc(&H=b&E=F@>zH<`9^XtvbN}CJyjOR3}Lu5I|R^M3F6sKfngl#JA6d9 zXx*FccG9@Y!)Xmln67!@gbXT%#M&n@(~AW3%cc_=>euGoV9X4sroOpPgEcR+<{WUE zUo$8MItg=;F}I)#Vt&|?6|$e&a{D6~3R$Y$0^vpH<1OgOomaMuf47|1-d(CsCbM&g z7vL^;J{C)AA{72T8{~sIA1P<-TBTk(%$J)6@QxK;{kI~{5r#6O)qV{MPn_KRP2X`) zC@%DYP~?ASLlElrm_2LEmI4M2I-^8lYQ4M5FBS{)cg@F1E2~L+#)Z9(A6whIKbHCwy|fmTSjC5(`MB4j}YTeGNxK9I;Q@Rmbq1^1qW_L z3GY0&+ZMRYl>wEkvR{V+N_2=ozrq+?R&<)v)lw2=o z|35ZH|0VV38?Q<#a(=h^YWC%_x5s2f>lPkMB2~(!QBqJvNK8`fAU@XxF-Mg zgT^l<{n`~zS`=s*O~56&^O3Mge$}&CWJ~+a+RrkZNZV9d5SPi=xbica?FZ%Cj@sP` z&fTQ+AHovx5z`1qv%1t4UAC)s1qeqZ1O5kk9Os|<*aDSyQv=K{d) zY_ML*uHAiAejw#Df+W<=6C?T_HlFx`(Kp5c%tuf5WV}A3^OGSCm&=x3_D{=T1^p%3Ih$CG-|OCViY zhUmMGl&A}*dPx3D#TG4>%V@EGiw5Ro zbVJOLshhH9n$f$e{?IFL@{mUBQ{`5D_X$68+o=3$Pe$_|Q`p(oY&ANat|(KFI!Nz07uaPtBlU@4c5p(KRD8@EKG> zWW!MX9M;7B&}Al3nU$ICzDV1uI2O8?U=nVvg0O>$J)zZ!*`~&u@rR zRm1#`SPCK$mMxIn6H$BTO?WvpiVG!6+$1k-In;ZWh>Cc&W^L$(b1Di%I5lOS@OLQd zC$d|c@b9ml%0iu7ecOMVQDuS#+*Wr$m8%7vPa7V_Efe-rjZ4$`tfwb`%)A(&2h%Xl zK7OP?t21m7AKE}Uxf(*SC};f?A*2JRx=oQ+WIMRtzoPm8@dDdtu*IHkwrp{if(%)e z3L(dttY90ye%Az!<T&2`Z4j)rd!r{PG%>B zsR}J+`)=}}+q5Pz%`HIk{KK#H*2py4oz4F9lft5^#-jy>XSCz?zRN6!KlLuU(mZTGSKsc)rs zdunBEqd0p1S&L=8sq}2U%YpNx36(>mcgUo3UyMC6;&@25R&wT|%K|7fHe1fgsG7@uHj-fy z^<5V8C3MPDNj7v#?71YL+0Um|ha8TF{*C*Yr`_3y58P(6PcTWtVQ{MlRva8a6V1Ze z!+MDz#&~yE9S1tA^E&6qg3@mhdgoUWdQTpFY_rbG8ExB#X4D5}lrlKQ`8Kv|&20Yg z0)1>cknlf2tL1zcM`_F1hL{1h<&3|HH5vy+MCk*~Kj~K=Hl$DS0=YaFD2e#Af*`={ zp?o3~;;siYEjbaWBO&LG1W2eL9{OW???HQNT7Cz&#TM~Id5i+)dh5+KWanaBV|h?S zPdX2ZuDqHGAUTahL%N{Ub5;aEaS459N;elX=rK8Z0~ssR6_Ihx4!05Shg|GcEAoO@ zR73vpwl@9@@5^yf%-$fX_Lw{pXP}iCxH4v&wnB$v#yZ6DE4x3o^0MO-Om|!s=JO~yv@mgo3`sd=z=A0 z4CTp>T#hBc&Pk;u*NSMb4C+0JU%Pd!`W~98vbtsJ??{m1Fi$x!Tpm;WSO=p-EM5Xfz5+e%s< zW?ZYBsqbR&nyP+it)zQ85y`q=Y}-jmfS!wBiY z3a{Sw_eWOl>y4N+$(3rYY|J4Ffwa6qF z$fUdyAGY(` z-Y_d);+x~*t()?B8oNHc`wurg7y&MqpF?P*Wa6gz@|y?sKEXtkJ-w3;DLnZ^BIRj^=E!augG z58g&W{;LZ~M4uKN=RmpSo>LSivS^U47y`iEsHAo|1{ z6P#)*uVukF$yB)#LIIrr6tpcnj9kC0aQRWb%Cv|xGo_{E3$+~TX6&*Kt|{Szc+ExV zX7}j~*42BTkXe(bDYk(;`v2(>Q+R&+aZ_ZwdVju_S9=JP5{l@M+GP<`0RNw z9QAx(=3U$`h^WLq7bYmE!~IgAx}tvh<~O&o?-3^DFd^+WBfB+KHe}Dsa56)qA2s%i zIPombRbVC!=!dZE%p46*NXxz~iJxHYE%-Si99uTXR9|5FPwO9;KL0PVR`uUvE%Z2C zQLYHtoIfS8+P_O;SFsH5|BI0Q#~*1KJOJRi(EG0y7&GMw^}Yfqt@4qs(@Ra=R8=(e zl9hf;bZDxs{|)}xPY!#2;+arT)>SIm^F*I1RS!(ebKm>GUEu{rl$8Pk zZ%H!C1#hF*d@~~(N9?sKp8Hg_xjD2rrb8aoEo;wNvaVPUAzQ{1Ca-%L@V&R#o6M zy`ZNZJV(yE#+ap=`*l#-zaYwf4lfe=v{y<8(O%dR8%Vh!1ltj8i|>2=pOPX8)kM)Res4;@S~TeFJd#JIMJ-rw|UrDf74 z*$kai>w$uiq+b2M|1JtR&~bSlXnd9tEu`G?8-zZesP&+|unD0^Ls0X5Mpj0Uj=&hy z_UiFSI3hSLWEkvE%({m`q807U zS6nUC0L>Cq*w`yL0)SyrKDj0nd8xi1ml*a63$R=J^?yjAL3ZOkJ z%fWQ1x(7K3_jfZ{DPx^?uSL(0g3tt@kw5X>`M5V_8D#2n_xw$~}rkFBO+KUr+1H+}N+R>fbs&Se}r^PxIOI@rvJMY9exkiSS zsiVwd1*!s_022jKmoQ43IFQv$2{`VoV=~=IQ7%VP_gQL~Bdjj?nF+v>VB{0eIb-Ll zuw8|u9bKp!2BW~<~oRY1>;M5d@81NSW|4aM~g zCMQj%43nqs61{w^ytX!zCfP*szC!X4)^d#6ZQgMKju+nCRt``4#V^}JKa*xk4~SR) z>xznP@FkYVIqdY4)i8UnM1{T6Jj5JMd;52)4A(yaCo|&50M*kKcvS5r%FP3lA5x&f z^AMwZN6XQGH{(cDqNpd%PROmFLO*lf$G;$%e*=%`_d-j{Rt*+Hrv3e$1EDopg0-Y-$&ct>KC^6We^q$vrOp|Q_iX*X{_`^>O%eVN%|d+Nx$#aMUNRqu(fRAYwbMd0 zy?_cL6}(3cD8{eMGv}jX!*+|azJUy+t=e4Ia2kCzL{3U+&I@JxD8z8?xY!sYx^zay z>$)x7a5*zMYoPk%p+MNtU-u+2^llExNi=IdY9{uMsv0--kYI_umAnYqb|7Tuc=IX~_6 zZyHaPm(#X?p4`~d3_3uZIFW0vI@BCGG80;H+d#_RBr!d43xF%6Rss=Gj5RJZ zEhokj#VG9>p4w zP?oQ_#J|>Be^o=Iz9#&*{mO{N@)#kjj3Gc-+{7^K$HW@AC;Ua}sVyj^3`!GH))RFc z>gH8#?w6KiTK`^IqE7)Z(iuLS4&k?ou5*WZw8}1!?o!|l(z#nK(PORdm6N0^*{|F9 zy)cYqH2I%j^k)E?Dy>a&9bma(ALhje;6%XmjVu^F0x>M!LcnCn%-FKbpam4CYbSf= z`{6#1t%_mMHTdGzOCKsHj`Q6b8v1PJ{Ytk}#))nSehqX=3350(K9c*MZ?4uEe1g!! zZ?kkl{V<{U23P*cE{=dN=NewITQN!R^A z@g8?3LWjC3EiyBl<{Lgx2&pLYm#46w8Ii`;_j!wpGm?O-Il2qK=d<7WNpU|23#>$& zqdZ@xOl-p4llQwl(0zPajZI<2-1Du;k8x)<_BLy^Ce$qzNgv|2I~&Wv6k1(rkKP@N z#(Wm`c@i>`W!M0`C{W>9=&+b)vd)Sw$ZZV<@%v#WEW3ANWKu^;; z)WRe;IrTo<(w`g38j{r{aAcq`eA7_pPK9xmq@_nayzW8JWfNKO6jfK@+2H4v0p0;f zG!!NN)llI-2YP&1YhRYt?6ov#Q$6D^F0kTZyT1A{v*=X7Kudg3X8z%Te{0iQ)QS6o zno9w!F}puthzwYJE*s9=O9Ol{vLN7&ix+vf)p5Z691H$J%`q>KFJeL9n#w!UX3K74 zIP4@MEra5?)Jz7{>T<@Any_IY1aQBP^74gorm#$%x&$Wyt@y3)dw;-i$%z=$Z+Q^- zEV>e9f^g$rUTS_~K6&wi5LEP495VoDeDTODMx2J-V^h?u-x5QiBK~Y(9~ZGnSxfzA z&z~C8&CJ|5`g`n`q^(oF$@yB5bonk~I=8d<>5>LD6$CC|y26bdeI>@T>1vKmF+XJAzn6O@dJ+Vd1o`a)D6JMqF9%prk9Q9= zm~nO4UF3{g8$k96Pfz4|iCqJJ=}M=hD_ZusiiVN+F%?&%IQBP~nPf5&;YC>6#-?)p zLgE|=j%wK;bSAguS+pbI^+sB`4hq*Nt;c7}ivw*svF|>AKgEq2a2o1WkjHjodhp@C*t0tK@ar z-1cTdDjDT!maJT_ZX-R1x*HbE1@*cokdOi~Pi}pVz3A8Da?A7ZnJuV!!Pw!np6rV0 zsV7I-Z`_qLDX&EMP_X7Ik3R_cL8!KTdyl^Pko73uUd4|Yl)hKvu~ zQ@nqm^1!NMNy0l+Iot6g+|ILRq2Wv?e%B(CE~2=Q>xw*hyQnaCcnO#8QLdjH!Pj>_ ztZ*G<8r6%t;)d<6%Q)o5#IE^8Vfyzd=6Jy`ZEkc7(}HAmj%OYVt&G(LI&F**3%MBm zP#mL64*RD3*=2Ks=UBE~wc-Lu+hcGv5?3fgf6X0dh*9IQp8(vB7FHSw1Cod zHb#0j&3l?l$8&V0^6%&3`pY8h>wkUAn>lp880Sh{E-=@-z+aKfeiLKpe)!cg+t7vA zVd2We*BC=_d+%;u;|_EtCCZemHf(j~i;mb5g7|M-Hle|a+Rnd61^l(dQRvFQ9ExFr z3U4WpJNqpmK!ER|15Q)W+tV~GCxM_zICNSYK>(PkJV8Kg-JlcoK0aokq1}?u8qg(k zs)B2oS+@(yP4(Wr5orhp^ zQ*MABHe+3FG9B~SD40j6U*&@ISSbv1@t|>t-*ePYU^h#R}rsU&-s9TJ-9xVMqR$Xk< z#eUPXz9Z{u(3gdhI5(Y%Cwzk4{qwPv5i}h%uEt5>nl`&nPAT z>6oS44;i6!O8}lQj8>G0Wj!>!&)4!m{`dm?d)#Z5{R;TOs`tQ~#Qmx-4L+5Yj`b#E*QHN;V7c{aOcNfIo8`enwNuJxz(_oBYVlP z_JzfscJVe-d4%cSC*+j>tqsTgS=XRz8%*SjgY=NlLyTgI(q~S4vnMUofI#S?LtfRd zv*6`{ERm=tA-p~%KAIL^$l=>l6GdTVznct$^!uqsx_j?04fcGmSew{!*{)paPwU8$_0bENs(d2G5i)uVS0n;xBW z3ylN+DLTL7KL_kTlLTRw<-CkvaZLEBVKCV~kdEA^=>>X<@7rEdbRNe%PwL2d-16wh z3=4$Lx3}>@zl!VUI0kV(6d$8GpNMzkm_||27glqMI+-B7(L%O<4iy=+AREe8zOwp_ z6cV}x>WArxHG)6)-{IR?>TYn^cVPf%^_N#kBxDhv-==TfnuDxFtwuVzQ@$U|fUyI` zH#a7KV8!TeaCZ|eCTiE~C^*JodYUXiQ7w%d0ocrW{cRo@h*UgaDMG?zStWtOXRy8| zqClzWeB>pW0=V8$J*Lsy{XO}1P7@GF>hW~F^N4v@%x7ZIjdYRq!}uli(_6oih*wlf z8QQGjS!J4GS0#i&9N?LilP{otwTavt&Ab)5p1Wm;_6W;e0(=u5PI1?S z$cxsGi(P#y^#?x|Uyio;TRz*bVjkWsp&9MR^6zc<43iNc5xbX7fl3&+-Iho#=dUp= zQfwV9lgKaE2ctUpB{N*mkOgyF9F;y@qiXn^6c$6_iIygrL*?}G{dk-;v>!~YY0F`L zA)zaoSvv8s66U%qf{z?>yV!nz(8i~`to@Ra$_u9n2MyJ~lH&;J9R>XkT2Y7xCZ-%E zXRO8o6!lz9oT&z`;k~i3a(p1j19r(*j+!HhxO)~C60tfEnX63s85>6bUD^y@D6i-GJde;yGLZ0|NYcs)LA{E zKsz0;@Thp!PqiNdRX0Y*HE}RZemJkR?cE73P;+LY;A3Gd0R51 zdeZ%DX;W`Tuz0q=-Kr#Jh*)VR7~QaD`j8z4RAgD9QHnrUe7nAfy8hyCehKkAg50#d z$t4gkc%nIw15H13n=70DaMnLxIGQ)#!8v{EG5O_iRC5?(^ZCXKl6>JPh+1234jzuh z*67QTEJVg4<$0jIq(HD()AuelptLGvw>TPs!S;UbiBS@qGCt2f!cX&OIwpjAX_}QF z2v8W<=Q&2$VhTC6(TU|&pq{;OWmsMEaYsEDeS!?ryE5Wl^qT^5JTeQ6Zy%6EI{1Pa z;o%1L`?|-{CvRI-r>P|vmm9+?B)7Lc62{7x2AUh<-XHipz5hJh7Mp3*;#hEXFCub( zz|CWqIpRoqo88<|*PK|fv*wK`R?QwdR@(Ab$+DXUz_}u6T6+FM`0&m-IMAsnE@5tb zsFH?WW84rBsAr5Xg*x=v7WDCg#X-w&H!+bzI@sS!Wf1*wt6(+CZ=32oO1BbLnI}@_ zahS~#2=gEZi`d+jbM*PS=;+}IOzc7|-0ZdJ#u~3E>J!sHad*H95ODg83qRs<0gfu6 zFC8qqsjei#7q);f3kdjMrgHGzoU#pp>RQD^XA5f3`shx9Icd5YU_&=r7fXU0zGwZZ zO-pfHQ!6C3o0g*T!!mDLtQTnYii_gDf_u+!*9(~7ho(9r} z1()CSAk!H~qzYfb{$4Hg=o#CHtL+l|>t zB{Httta*1W#cekpQOQ;*lRNH2qh2WOEgRJI2HPN{uYge)Qo9XUS!9Z_1k$2kAl<=>~kqvjmLRBR(rIGGW1rKhdDq&;n zg=`b=Ggb`;V?m3wZIk^BAD?p!gIYYuvW@QO? z6;9ZxhE>eLR(M*wpv}YP(tVa&9M1a5kn#QQ`0em`Qimi5wm6@B*$sJ3OGL(R%^<}T zW_lMPE6k>oGxbXLibJuUhG!8?yedoA?Yges%SCH3b>HBrWE_+Hhzf&R?c(1$8Y*P6 z?~jEe+@J4|#gp_4iuq4f@T^rnyd?~6U<}O_&pphmIS@#9H|Kc?@Tkxhx8o=sj^JL3 zeQBSZGTQNXh?>2+LbDpenXVlLi zv@4&)NHen7agi5BcYR+5eMyMs9_D9#uF7*35WB4z{pcS5-h7*Aw7XBXWp*%iYXQM# z$-1Q_Qx@vAk%{RqS=XE;{xo%&qmya`8007SZao{M@v={QprRa!xU!vdfmNjpEF&N}gVHZx%T@-#b9L{BzY zL%KMB%>c;2fyOwB@J4Lk;O2$lo^_*Ygs)Qv{OF;P*&(Pf^60H{&xp zG-3*4dzGTg0m8e9 zY?Nm}a;yN6zSBAD%%qydZ6rEqU20)<1|i;jM6SfR%#opIt3V z1AKtQXhn0QJy!jon~m^jJh54d&p>&C zswn*2*KOozJB%!iOJKx)wl-3uspeDt#X{=Eye@HD&4|U4-$oPMKq2;nA-OQuxai7t zTf}v=MRtP_pL` zEa`$@-pFJ{<8x=MOlx5WNWFeew?y0y{_ouSQ|t>=A0rzw40N5CwqLP9ct{=o`HaRfW8W##Fpmgpvk0fFGHY|V@fDv3&x@+Z4n!@_Kf z-usfb2UW};DEF7;X8bnp`4c+V-U7L;P?1G`Zve&ftHk)$WFdQYQ%&W_L~taoM?#y+ zz_hUk<)Du}f?ovWdcoe*YVVQoQrWL}46P1ANo zM&xqqhLP;Z&9!wmij~!6D{HL~H3#d^FR&RZXIL^c%y^Tz%vxP})lcH~0$^mz3L1Ey zXsuSp-UB!E9F6jqSQa@vELI*atu#LW#t8{D{4wp%#F3>#m+{N z^V*hWze9E`&TOox!@Wle&ylWk^7Nev(IQU{M}wX}O%+>q7-|MNylj=X#WVH(rZZjn zCS6gPB~`+3^G2b?Hq$%Rfzse846C;d^okm&aah#xWnB$(29!RRGQG>CXDU@Uyh3b7 zeEN2ceJulU`k2nF{=gQicFngJFv^C z0A0*+@jn;2Dzjl=JI2VJ{-Ocy={zymIuK@vEZm0<@ zhJ=9cFfkq=U@0R^aP5dEOn&YD3>rNidvzrhhZZ0M2*wl@{2Gp!8& zArW8nBn+2!;zWxCI1vq7%Hi8`y$!9;pH!=q^CTKL{>XlT6bSEY z#U=GUUX@{cD>%?N$S|nk>h-piuT*nS@&8MVZT_1WTe|qhqp@N3Kk z@Yj4d4=P{z3F?y9@4F8EQQQwyN;RvOv(eiV!f?bns)h``!G??h2@H}GoEOW5&Guzn z0V{c6+h8=>yzX~Xmaja1I^6QA?BN({wSGEG0H->;bY-@Wp#~>SGMaCdItX9|P2<-6&<@Hnv_NH&ju!l!s`p zD@c{UZyAZ2=DIZuAV^MZB*4%|-76xsN2H&Kr|d7D`kXg^aviHI4BBH^64|J0NsI7r{nQ_sJD?ZlQk(R|2Rd!URE zB3vosr}*{&FJ)Rdv$@*%4e|)N1TIU4xEPhc#u5Az$PDzA70vazeDH`~spCGvT;kkJ zDa-y9dJ~*>FNsu8!0xay&A*RNk#pa_X+Yf^B!`e^q>|L~=t{dQfJPLO*Fr9yZ-_zk z*egij}p+!*&k{-Ou!{W+tjuI+b9#}7X%;u^+23kIrlkowa>asr-R zj}uP6Sypu%+S*m|-r1+;X^axB5i6KobI(2ft({#G;#{$vE4bO6l|J&@)P}N!LNU(r zn6IVcurO*viRX^5+^`JiYW78W|JgYSEOocEA<_VPe;)FK+GVf<{aO-NB+jAnSbENy zQSTx4*%})_nF@7!U|dYA+h3$P{-QM-r1I&Ze|N?1Ji+#E;Lr!R^+!Z$;`QGo-^2?< z6g;IBe!27cvAMt(l1JE-{TP2qOqMdB#xA#@a{n^wC=g{9H|7&MKqn`h9) zzW2;LCW;ejGhbUk-F8P1=Xw!+(t;(;L=cVzkmchM@1JJip8squGkqgx*hPHY;fA}M zTmPL0Gzn%td47GE1Wm!ESckLy^h#tSG#X-Yr?RcRzRx*%oWM8nbP%li ziD-27cxYK1!@o{0HSQm~|EKbw{Pd^tPe}O1N0sjT{?nEd+~`70U?bdYgNp-JmGmebF*pyVhS1I|IkL@uYb zAL372KOk8TH7>!;>UfD|*n7h%vup&b8oOu2~uP zBMKFu4LK&eXD{C*9_Av@6*@EcqD&eucHCe!lP9SjEzkV?*kk@S(pmfEi4dn=&72N( zgv9Gp(?w`tIUrt4{SCD#8Q&$yqugLY^J*t*d zsutUmT2Z|LHR+G%Xbz9)Ah1_bou|`?u5zGu2&M;{L6F(_P|aRBGKihr90DqEv_`Lb zs6#h;p2o&JNS1Co8foUVG&2930w}lF`YdU3cG)4R8*GHKPpEt^Sa~jcG)Il0RfNNM zrjd5qiV>fv|7jztIT#RecT;RH=&;EQ* zUg+dUf0e9WxW4ZFD78datkAZs>3ssLE^&a9=>6F^kLH|tqCR?q2bFUtz6OA^5fuRG zJ}zZ@caMe1>ipp9{$S7iKpvnvbjn@=XXuqiZAx3S^k4P?z`W;w({bl`fjdo~zgDR( z+FNO*9VIS0Ap0Wa_Y%CPw*aM&1RQsLhBW5Xkz<5XznH`YJnuLoaRVGfL@hRWMa${G zMF0SR5R&VWaZRwPFIryqSk~vL0S)qeJN>zZ%Y(4GGuq6BwXkCa`)JLZzfY+v zbTxWJTMh2=4CqeX6pk>!=q#D-$i@@(gX@$nIsDt8fveEqA6bcke^*Zs4#)qs3;$7; zcnNcUL=f;E7(fx=E+e7nDgzd1zi7hkw5vYie3@1`wsm*dI(>#s=_Lu{GPTBvpy{1- z+@NxLI`X-({eu;ep9j2*z@Y(&oGZgY@X}0ZFYI8S3<`i|z%s-ML3yl+d zoKNR&(Q%~ia`l68VE5v6rt9wZ2beWuRQMxF3CA^_q?fItN>J=d!2@C&ZH_0%19k>O zew5^hF124E(0k(aC0tzoM{^?zQE(f=bl<*FWcwA~H?P(N{kfI4DFkL#%jCV?a1H~w ziEzo#Mw{5#3RDO5p|$YApM;AY?Iwz7vQ?PogU;z^wYV)#-|RE;qb&(1^MN+P%aK^I{@#nc6S5#Y z2w7Nq7;(GggoBX^rB+2ac`MB{}V3q6mEpMrNf@G@w<_gi})LU78V@(xdT zRxx~&{9#`sNi5;|+rEt6@@v%(=h=#>zsdW{&~4yx2>6TEo9LaRws6UzT;SR_;WT&n1jVjdMoX>sM_my0tk$`P&wz;nZb= zJN&ZmTC*l&$q%_oSIS8o*+pCLA~LW24iN;TvM&&65dK<$_EvZs@ZLEV@*-`l8UlOcJ?@0yXl-mS*x_P^Cy`F&)5-sV=4 zhZVn3H<$m4-HH&6gj_B`-M$KK>T=VU?r=5;U+GA51eR;X1q3W%s_dP(StegNgJF;# zJn418lb}ucj&b;U-COTrxoOM*bAkp;04*O-3%13friW#Z z*$Z0o@hJv=^Dl=SfDEb<`?Ky=R1IQ-@ruX;N_WylfO6od-`eJ|(7HQqTF?chsrJ3$ zX$RIP>{PF5(lsJA`;sWt7Sj%zH%L9hIhn%(taYdT8mN_&q=-6T8NWKMEE|S)Y+FR! zQ4%1(4E(HHT_h`k>Qe072_^XZnM46H5rFSE}#`Uph-LfWJu9?7Ao?G92 zq#UqP15{9PF`9pC?|}z`PHqV16p>BC%mV2-HI+7 zMG%Q&W3=6cDowWztg{;P*z0G$JO7~6!}!m^spZ0|**OhWm380cqGk=5CVeC?$&R&0y@JWt9ETj$ zpYIR&tILHcG1xaA!zi*ZlkjN=uU?~bAW(n0GmXpaD85q->8;ERFgU{zim{dbgyC5( zi1gfy?zk&b7_m8U(N45Hpb?*}Kw4A*G?)+4clz2iGNA7M`73s_gek&CwA8(DL}r)t zIq9?;Q^a&x4nYNO(qCY;lL%e67bs}48DEnQB{!pkQKZegT(@3lN_k13KQA;OKGQe- zGC3{mJz(scX|g0Q;#uv)PeVI^k-gOJ1Wp`$q=k|w#9L(+QHP6dAeA~>=gpVwe-&va zFkF0Zb9^pv=q3#2k#S(YPe>%7Im1_rn*LpG{xJR@UT^`Q13}ZV5yk@wVBw#tT%F}PaucQSbT@pSOD{b+jS+C50^a7u->cVx%3u?0*PULS;=53;~Dc_9&fh?`brNqlc%3< z%FMw~GwaMLM$btSFBElLgxT+Y@846oX_RX-`$nd^GA^D5k6W`d8TG%Y-_9!=i$c)g zdhPxRqYRt$9h%hsGz53Fb$2^HKXI%%P~I%sDhzS1TnNa~YYHgIO?N)J`HKFm(s0CMp^YQA>kW`8h9SC-@?r7$RP!6lOoi+2}3 z)cS)IJKxKhTMAB5Bp`9Pxn;GOZ)2u#WXZIPq0W&4#hwr3?+yU_yTiH(=+;D*f=CTg zAo;1MeAOvB_^{Vy<&dD@1PBghzk8E%cxadUt6!H2A9Njr}^g z*y(MHa;B&=RCw(_gb+J^uRqb`aBZ>7guF|Hdx#N5faA+{oMg7v(3Ka|*r$l4P4|x) z0;T3gj-F3fl(4@p+00mx2@7+#L~-!sy+RcaE|b9l`QR98TEr0nQ5EXDgH@!kTITC5 z77Uecb)}_aR3qu}UuoME7|3?qkiPyI6N$UG9jMwfvU{C;T;F!{<^W2Tjo=eRCyO8U zP2Dc~BZQY|L)ew+HQ#IA9^rM2^wx2AM{6=OZziyemGQoqYFOQJY2&~W=lw%Ey-4cd zT6VsV+eNNKY>zoiS;BkqGFNV8P*T0mfo{0|iDxiA5>>Y}T;3=li zO)GV!*FEHHRrPXw=2s1g90in-HPhMqsP_^4_`KKr-ufg+Ma1ew%hFa~ne&Eyy%)SJ z+B2dy)G&%iqKUd#MQ7kwdoe2P^{okAtn4fTT0z-RUAQ4O5ii>jl|+rOt01=6jeI5H zq26dKZCppBNY8UObdg!1%*bkyTMibiS?medgD0+4S=!Rdg(MH_dOPzjmO9Hfl=>cf zGgod}`Jkv}or=1jF89X(d7`s0TTNf>D^^{&E;+Z6TIDy~epIFGW%j1e?K013#?m;E ztanaB4Hhm}Gp+NkZ@vf3_0hX$CSTw!`gXrL)ARuif15o&(3lpcdOny~g2EUkR3&HD z`T-swGJ}SFQ82|r7!!ey$Ls}b^DczP)6svX`I<_{ciC0w^1T%`hxiUJ>gz6XmeR61 z>!;WaH^o^{fkZaa#t&6x)-RJ=tohieh_6?~+;-FwWveL-ncn61SF=?gJxCq9AUNR( zgOlkE2SQ)cooFFvBa%!D*Bcf~*Qkm2u4Aysp#hqSpLACw2u^CA%#%96$xll4Or zj{a~gVEX&;=6}>jHdKLjcuKYG@}|gkgrK|{Z8?h)^lN-Io`9%;log35 zjta~fZKhmawR*yqNE>kBx@>doSnJC-bFr_s6+ zO^llL-Ky{Or|S;;F`s%Ftt%8NN+? zF(4fz5cK$~sLlvvD*O(AmJ**?N#~Clj6Yg?w9{MH$mTkDURU@N@d_1p5YIH4tV2bo zdDuJcvVNG{*R&hS1y7uQMBi7B(&->-D7>&it?c+eyvsDYC!oZ^_0H6|K;<(_1ixEv zaHZpOCf|Z>OpR@GD+u#)vbhEmha;J_J6}4}_%(~cS$^IeaU<*Dmrs5fYT`TvC5jGx z&%g;Tax!1$CT6|^AYinSFeK}PmTNKqK#A<_Ny2Um1Wi^;Jiv8x!xY1 zwlZ0c4eBvM0Xn=>xSfGt1-z@j#v@VnDTLS~yI-%76W zclhnz>2-d$)ZMCNck3DN7f;yIw2MbJMBazM%V!v^TI`qtn|<5;wrMU8XgZAa znV0Om`jUluBAS!YgOSb6F%FHco=2}aMwQZ*-rNzsBX-n2f0TYU*&YcgG9RJMndT+H ze7Ur}@hf50RqgV~O^XvRbUjRCpn(1IQFu<&`J+8D72v`uKE9`RK>~@)gW&BL6c*=I zdG-RxOA_!e8xn~^kn^O)G;tatN7xJ@@MX9uzM+Xi2~O%hQWC=KAq3iyJI59}Azb={ z5H19(TtkUTSF(PR@;hRiWU(j5ecagXa)3!VC;Nb*gOx7x;#q_#7%xeL-6~#x7-~4u z+uXo#Lv%RS(e-SY-UCkPERjVSSFUEs?{Eu zX)v+qzq&4uOWVTm<4g#DBipRIW(-^5Bs)YO)JrX9-0=d8qwKmpblUAhAE6mnD^;51 zSlzux?9*4NKS82C%*lo+O?q$Z2wlIG1bUgjS70_fcxk8`5hX`?0rEKRapB| zpKyDn8lu=}Fv;npVfk76YA>J%fE)(sM~Y^ZPm=V}i9LML`3M#S6;LJal@2zTY1|3X z&k(O=;+aRp8$;V43>NQ^tumo|{Bf4-g`va6XgDJ0!A~r$_tr1d`KERW67tPAWHvtL zGJxkrq;z17hv&<+L4k>6)E_^%@z4SNFebMWcp~0bqf5Z`>Y&Vcc>Q-)C6j zkCxUs7}`8KB5Y!@p%41P@!hJ#-VN9$o_&6I@~!*p0Mq|eNrA4N-f4efDfXd`es?~u zd-PAP=znxzQ+)Td!%TOwuC0Zb+{E(S2IY1|1Y-7IxruZHQ)x>tSH~S(U9_sy{0Mbu z0A<8aJi}*9kq3QG3_WAVGsjox3Z=%@wtlU{6NzyI5(1LZ6rm@)^{_1~LwtbVbM$2W zmMu4CoHztE*K$opv<0qPQK{0a@vRyc&zlv}7=A2wR@z@{Q=ZOn~dHYWI4z6#w`%MMhqS zv;hrou*aeG%AybH0-bnaf=t2KacnU9Xk}>GD1FZ>(@tvgEiSXUmnqO+oW_Fn4@G7k zKa(>WPEEkV*?84zM1lL#k@TkL*lxuWb*&@R`WiFAcHzzZ=MTlp7@DZ+Lwa*BEpZ;R z6IYdFG2JVnFY$<`d1%;7K$z{lK2W!u!$;_ANahG?d|;j_9`MU8TR(N}n0H+rs@oyV z9i%8_g_s7pL_P^auoE`Tbjl^_fLOZMyd1Lg2r?;1ctgC?dV~QyAhpnq=NtQ{Zwmti z1n={)rMBI7%0RHgZz_oEVp&jHFH=?1PtxPDs!JljHr0Ij19bFez(K7<)* zbS_~AK?nhl6ccswM?3zFAGCfpdEeX+L4C^`ALMX4`!As<5iCiAJ^WJm`G{=w3(?c2 z)hV=K`M7~#{yNQqQ?-n9ViVK7ExD&h%epoO6CKTD|MJNu%?gsy=MUE-w3MLli)niv zLng3@p1k(ng=mv!$mQM@E$l=gqIi}i8oQf=m5r;pI9@Bx>QPR;f%(b&-&zB9V{85k&g4e(yxCdT0)@>A&(Xv$Ho8aEpd{hK>n*})QZ-*4Q><_X zgYh}MjO+=&D(=TW(?wPGt712Fp^625JdPEtz11UgQ`6S#kkpxcto>?7nw@En7SfQP z&WkU+6V(^%4-J3_If|eMVt*{pA)d$aRXqNNNGx7I-_Ongo-yT#h z2coIAAYJB{LQY5gXB5O5-;pl%T}4=985)=OHKS~PteA|Cs~VjL9aMF9MOX0LvzspN z39$DXJoJ>t_#V%j{g7-ea<*PhcAq~C=&ZH#gc3C^OHWLaCYq5Q)c@RNk29+XwL85z zuQcu_p7R37nOvgU7oK}+RQorjc6GazoGr6{+ajdiWLtF4_45kHUGTUxYObFvyC3A+ z^`*ZvPsDCPii~vK_o4uL_#Ql|h(KxI5k2)X9#h`^I;#CbtusOZV;8H2H57l&EQeb) zwM5b4Ms~@ML*Ep_MXFu_`#)sz};1An~pP4?RWwK`$(oKDNxT?I*t^=~> zNKVhVM9=>t8e#cuL78mz8O$`}34!C~U@yQ(?A4h?kwIr$LIU?b!NFNl@Z9F+Ax1Hf zI(L3X0*>mTDwznvdm|+T0GO3H&YqcsVXN2`8b*L4;9iUZ3SefPxCuf~tSO8+Cy`;T zpm(-6N>rBL%Sl9-5x!=(-j0&|k5dQSi>K=6B&T65-?6+K`j<~cYGPW4UY?Nx}MNVu~O1y%_wI~ow#iH=Jox{f4{ z9vxu25js1Aquu%Fg7G9t1Xd3$Wy_9u=KLW-o@M%MUs7<)v z%~|rm9)+*nZ=^7pE3WP+v%GgnUa5*HC0i$XdiHu{GpStZB+Yci7qV-LR425R!&25l z`?1qXx1Eg(v)%tc2!KDMr6-Y9_Sx)Z?0fEd@bgNOE{2_D=<-6?YIW^F?J-vF$}LT^ z$p9a}LNW_D`V&c(Jhx#Fq&2ekal_3Q&aqSCGJ6c|?6)trqC96!)PFq`M!ZQWjk^M0 zYLDFXk7_$B`Dv-fo&Lt0Ahe@ z-vR&3HR{AtDG3+SDBsx=ASqI~0uf#2Zqyt=EvLijL(D=A5j-skV15W_i3XgW8HSzF zmR72(-#t6s3S;^HpuHUuifd(_)R}oSPi!Eyjv#Oxy>4+jDvaIxF*#VM#+sRw)7WXJ1!|A-0>1(5Y}O!F!9*s(54FSe^S!ZzX0vBU*F zW=40uIT3OgWVy?K&SG7>EMKZs`@4w1zQp5?cOT#z%x5@&_PoR~Tk3+b`_<4skFAKi zwR`$x{2ZgmawWS7z4JQ+rxA@ssJ@2f?aKXs+MpdqM37#(hA-4z^?U(GA-!6Vz)35) zWfd#xY>?j}`%RnbS0wAdQ6=v!RrhY8?Kdmk;7|d#xlm?TSaY1(d{E80KG%=oSj>;z ze{-zNb!ar;gmx0*oBls#iKG62>Vw|f7hX^-()J$q3}|uehj{-7HTQ?!m(6G}v%$`t z9h3mo;%hNWHe#aBjw1sG8ejddA2@fpPtV^%!H*{YuXu&E%UU_7+J}GP{T{6`w6_y~ ze}l6!=tf44*0Q{wpj(>j^YLOdw?S<_H1LMNQq!*>OI5*=GwDv3sp+#g&4<5t)~ew< zOs<3g`GTEW0p9{-F0KjIO+(*@6`JCem%EAa<6 zDMdkkYEqY+(7?XL*sj(63ox6@gx-bPml$LPB7eF(_6=zs98kW#>UkY-D(C*nE9^R$ z&Wkk`<;^-dWssC-bXt!NnxMNc!ly2P@&&N<|wq9r+`hBkcSy)*O=fzwR+# zf&fBX#+W}hSbTB(`nklzq42jCi6ghSSJ&6EyJ|nk-7fBu$2)OzuJ6tPN?T7`hR1-C z29l7_17agNze8h-|K`<$9N;vO<;wH$_Ekztc#Qof)u@~MzZ4NM|D|>Elgg?p62!)y z84S)$s)Sa&)}#q4^^H0gs5vx~ajEYvHNs%4p%P<6%`^X`&_mvK_F<0Otv5E?CU$MMNoyr|sK*nXVpdDnp&k+GH15 zF&)Q^Vbd7QHjKP8rIS1$rsbPWX~^(yr_1XBnI>jj`BB#opHhc^hKRhUj*m% z)xCRI3{ejvV>C;23Rdgc9EOfHyuAOy?BRf9Ou7XHo@9j%G?ulP!~D1@U9UI*x>lYv zwQ0jS<^Htx63F2B*SFaSG_W=P-Hh+q&j3AWyYFl-QkoTbs-8}q=f#LKSHOt%i1UJI zgqT*uh_i@~h))PqK-%~oEnRu=ExKxCQlG@lJHT`RNBimhm2cjrD5R83+=UPu#!qze z=t|FI@<~|;e(Oz0vEgY(TvC+t@v|TQ13);SfH)u(UvU6LlQ``o8q2`bZ%q`77Sd0H zT;j385Sk0qr{_yDdvX|UhYgFLjj~oaBYe(+SnKJdyPi_-K)VpwM1GV3 zQ7;)9W+O}}!*AAXAy?{ZW$3pbqhaqK02aY#Z|3|U0 z(_uSWO%$!7`x#m&^>+x{#Ghr}8m`~6mJ)~gFE4j7e$MoDEPOZWm?7%8pv`>LRwyY3 z<&PIZfZ;7SOdd@tW23T@(U!jieEY%A-L6rgIoscyuh;V%8H#iO(FH6wZL^ z0=T)d)8=xZHl~|LlYFAf^4?H;P#M9)ESw{tT7Ifq&fq-t1+ zy7zr@=qiQGcz~grjO8ct`+#-R55oQ(^`eIcbQjpXoN?%0bY~?zyInR!-Dt;Oc%Q$^ zxHeE+)zr};xs*A2_49K*XjU^OQnPs_7Hde#wYe_IM7v6ydOevb zpco$>V70xogXfri=5xduUADufCi74*Q^%lldl7>7No_ zNDKzUc@9%q%X|tEt)#{9_3JnR_kid~FY8rg{e%yTEdOf(q~4x~p*VWdzmQ&Wz_Y-x=?VLx;*U(vQi;&?}7!b((Kh=k7!vgcrA!NdPdKm6+zTOTOUXhMSx z8ktv58w*>1l-2L~aa`oNFZ*$v8jOyGsQTF7PFaM=t^bL*9^U759fAX38y$HGo)U0J zD*|FNQ0%GYAR}Bsbfb$wjEpS08#{VhKNgKye<*hHOm8m~@QP4jV7QRF;-ab8{ASJ1 zvDhvBBJ#U{NMW72(Xl`OP?i>$Ovk~oXMd%7udOS{3$D{WgBq;h4^u}DJbv~({58n2 z`!^{nJaXsa_ZFEo@A&e?s!hY5^fxae5c=x)Xq}!VqOs}kmI3+#38`gx8`h;I={h%JS55dOQbYrhoTjp!cdxBfs7N@XGOh13JRK;Ew7!o{MKy6(!N~) zV!+au;bn*kZdj~s<>#2G1`--k7O4d*u5mtm$q$K5w=vdu5`y{_nbOq}ISI9;2Wk4V z5lz|S$S@3kH*Y$X>+boy?(MiAg4l>j$s2SajcG5H>D*|GZ-2|nuMi=@#5hoZ)hg`>- z3mwa=w@!P4%jvd}kC*Y)jT^f5D{ zRmJn!$0HM8G2HJa6OZeuVg+N1Koz6jr?Bsd{?TJ?YU>k*y7erGsEiZDPo37w zfWfGIfKD{4;_60VKcjjG;(!h;9=O2few7hT#j3BZ67vHbU7hL1cPl30y*Y0oDqcyfHw2d_P)Wirb0>Lo-1dRl6qtV#z>1fBz%xbc}{BB8S5FFzI?fHgPlUTHC(pVwN zku{#v^Y6vX@tI{x9E1bnv1+2cZnz_20Ns9oMG|wu+qa4c)Mo;?@Ey|*F5lhNA3Np` zavxV1MKpdw2c=~m(Uis`K_yFs4q}6L7C9D){X>Af6Ap2K)m&Q@gVYEKu-?xoNUh#) zk7uV?_lr|$?R+sd@SNCak0R+8F< zNE7WA7aTf82IOs;5G-A5Plmqp z16sg{0L00E_0Ch2bY-Tz&4NkINVd@7WEn$}dNp z>W)fsF0l3*Q*X3B#D^3b$7pLfntbu)Ub{yg zGoU4v^#vUMQ>JY@S)$GDg!ZnaF{IKCJ^SOwF8`|cgjy551!xOd3P><8mA|F212@WS zU};911UV&g$b-_aZHBW#V364?+M+!_Qj1(chSHZ9@<7R}-=2j-1cI6^z<{c%mLDPW zxi~df{RhgS_M=rs2P|cz5UM_{P1ToL?0|y)!D8F4=b-tr$n)q9w=}{HDAJ+05JKq= zxe@R>L1_{5978&dpTEB~x}4sNu?N)>Z_}+FqXp-nf71boIFXs(=wYd z=}o;eq&pq}uw2@Iuv`QNu*obuc+oeb1}sA9fg$E)KvXn-|4bHM#kB%PKBgbvmtC*D zUd)|iX2te&3W=;J7B2FkikK&C zzlFt^@D9N5XC8{+uD9nZ;edg_7dEdnQv1{M@@UJ4L<>sGFMB@=ni3Fe+SjmJcYO?- z)@$Y8$i{{Sh|s;Qz{a(9h#ba7JQPi~D)XbH4zdie=jle7m>^LJgny}x^5EE&lWP8>pebxiVn11Z-*ukDm$I-s zKnUfrRVuo-jW<9@@g08lV6i*w7lo(*KjEp=Y5e_G3_`^F>MN!D#6N|KlJph@Ro{E93Y{k)D320b>U!) zt?%T(^u{Jm<_8F(2`A(Jpb#t8`EzVi6~=4%z=u45=+Lh&NYZlXp~xL0JWN#aEiKf3 zXwi3lnS;KR_Zq@4#$K_QLz=rPOI{fgx_HZg8ypWl0Et=}o8hqBi9YJ-bS(T+Q0Kf}I)WMe*L!J<(HE?|_@yVGVCvC3c%c2;k zUZzn{rk_zSexjBGXhi-xASqrTu>o*J2hgauka`DXy9f3H3f_lWe;@9RyS5Dfn`O2R zP?~v}KPn{Sq17TL0$B-o^2n8Z@Hg~o`&2)kpC5kzxyR;EzM{|Il9D7iA1K4s^ItlEULc`Xni>B|40s5R1B?I%XI4tp^>+pa75so@y( zw6zBM00s`?(>G?*f#B+kqJpAUs7!o3k>F~CUhQAxSf=PQr4)*aR{g!SX61FiKYYKy z9(H8zI}^>)xPWsNN9Xw`-Ix#1jpid_slwO?2a-S%6~ADZtDYEo$aqIACQ+fdS)k0# zw9uNw0S+bTJxuJbWMrIq8)=D03a6w~pn2dSIZk2BW#px{OxqJ|d%EwGQ*Y_`s$DlA zudRP7Zc~psO^u1;0SZ<>0d^E%=z2hZB=@R^=}M0oe?UoHsO2Mc&L7{VUBLX8fgjA! ziy+uCGLv;p$GgAVOAM3Rsd&wy-yhC=_E!~Gq`P-gY5CP3{69IVxDy-k{=#4TH%uN- z7B{^&L$Y<&n?+S+-%^ms;F`h|l2_WNdc{mYOeJcD^3dVvxPW#&nq}ph!ai-Zi~$Q| z|6BmEK9Ej!(p%jS=3M*fbR9f5u6hfUaq~o!-cJlWg7&vf(yg`)e>)UdAX|yF!FF6Sn&j4M)amDDd(G!u`%%S@MIRX+R~v)WgD7W&R--d;!o| zAnOXOuI++0zK>a?Q^6qe8@2TUp51pBp1~$T^LALEH21RiskF>K_s2e1+=GCsJ(htHNk>{nv3z8A< z#7c-qCD&!kLHec3Y)0Fbp3*BDrK}=-7Z5a(e7E-85)mr( zVgZdqhS_d^$H-g3%7f31Xp1cmS|DkqQ>%FojRrc@jk3y8{2G%XB zXD3(xKFVX*kw~Edr@@$n*^3Pqf@`z%_vDPJ%3`iLWh>u*BWDEamVZ2V!up>Ew7jrG%HMn#MIj_T5{tUytDlc*{r*ZbsjCH>!+%YFV}VX!o{nJTL2KX~Aaz0(MKyk48uq%e+k?oB>p}`-yHp{R*0(?$;P7PH0QMTaW zlr}Om=xsJzIVo^5lzcVNKsAv*$Oa{gXdo6pkeeyxu_iV74uqSl0u{q-J!F4y(||zV zu17>ApbU;n+8^AFj~r_S$Jo)S%JH+qM<)iMV_zV;yIy*A*HIsbNgnQz!hev5FMxK{ zQhB;Ni>`H4;obaFj+>?JEJUT@by1whbo@;Xap;RrjlQkFeG}IQXiZrR434|z(0U-v zJ&iu}>RBszApQ5@`v!eh?qZ?G*)xI1%E*?=%^>+c5m{}8YuTD{qoj||erK0<4r^XZA%6|{eKl^erxDX8!s$Ug0+jRxfgQpJ3Z027~P1zObc-2EYr zY*)X@Fk?}0&|IL)I&tS1z-K!L(d+(H%9LpKZ1T>~A}(}5-lm!_d6Ur{pynCQOf4&a z^vH{@5U^_(9bM%B`*;dy+A$Ha(A=ux4Qm^$rf|_8&E~*RN4xa*P2 zwK7|2&>}SoQVTeG-8;O6!v!-AekuXD>R}J?T}eGf0oA==g04ySLHbs1w|}OCb7C>Y7l~^ z8^N1qYX$)VQC%w)P7zRhAFMpu4b(Ea!>i2K%?%aI=*;UW#Vp^noi&#=!Z|BDG-tGT ztB7t(U8%gi|9UcnJnp@nLxS$TosaKZB6-s@91*^w^2dfEBGGT|)g=iGi4_%ZO1QqN z&H`q5|H;7*|HHxG)JOhrEb~mj@D&QHSqXhT{V8{ZVOB)6{vF1}Wt{JywCqZz{&-mx z*xtDbwCHuz!|2>evh;Gm{di5~d~bdeTmM3$WV;}u0VW=IbbG1lbw{mN{Z6LOS*zqC z?++^e3b^^vX@ARYx0sO_F3<)!4tBbw*g2C-;uT_Jrd!!C;|fg;$#|U=^!j zrJHu{``n~{d8ytr*GH<8zwwyo1X!PZTGg zQ?dZq=>tvHN~A_{GLR1bCtcfv!sqUtp<^hE-4YGkS4*w@4~N@Is6-8hlf6Js;7H>q zY_%N?ff4EzZ>D&lIKPG`8=|?eYz<#@l1D2A$%2>EuHs*MN=7<@y~?h`V)`6r1z7m< zay8*Nx^G$i9yp3@pG|$hX&DwtYOZCY<~3r>B7ITdtfP!uf{6qVcmea(UG6B<`HWUE zY!ln&?EC7YT8(<|uwvh}WpwKI^m?1|mGAQi%d`IfIO_4GK)`}GB2&oCmYQRd1pqe> zqhJ1%UMw98+>F+l|Hd+}pHJaLEYIcmq2x z&HD5o6#W@N8Q5OW_#l)iF~N3qzkgH{!L3+s&rtextDUQHqzBcN0I`)1g6FE#E(4p6 zXYO;Z;Ke{n;PtMu39v5&w@jgSw3;V( zIM`RAL$Bq)(@#o5tpQa0_xl;w;-bYj1Ux6rMykuuG8hBvhqgihd7^kczCXjRwkd%)lKol)bz~P zS#2Ab)@_Mvv)A9Rya-ayKlZj>altK{WJLX`f|wQm*X~dqw+rct^1m{*aUgQu*K0^= z$r|}@6DH9wTeH;T^&}p?;-^~@A@nZsnIf<0jF^syZ%6=7EUtIL4UpiAOfB$ zKl#O6`gH7m1=D~r&33-t1QsO=)mZL~JfGYrU(^S>hA( zxf+9e{57{_eI(!z=L=dVrfFFl%d%Nw<9cU|*UC5K#{(+(vUDg$^veppO$K=`36xsf z+80>*{ka~;e6_x$I?e%3cI^vfdlcmWACZ>eod?L5S{TXp3oKZWY#9{~(Sr5kLn<$F z${y!zpl4d<{4`|IHl~RM>^|S3!c8AgVPCW;z(A5fFHatU3+Ogh(BpK%u_jl3Q}Bb@ z+=o?&#qd_MgsI8LMt=qaKZjAE1+ZHSv^1ni{J5<-niC_aFqjv0m;9XOAZ^!SqH8+g*EjN|X^ z5O0nu{x^-=UnZxIev7lWEHwk2@W2m{_53h3=><=EUnEZ|Px?6?T?|nU&pk3nMf-k$ zK(l)haN69xxt+q-{a9oDPJ#8iNVcsfr5O789{uQIx~)fIibheMuIs*drq>C{?qsRx z?x@o`t*5SZmbEAQ$!xKZjShlocX1zora+@yUqze*Y4+X-1K7P!0Cw-CN}KNly|2Cr zQ{!Q8kK|$3xwge_83S@vK%%wrb0Q&sI(IX-2>8o%i*E_oe?Bjcw5X4&614%;0&fyo zd1uXi5XVA>Hnw_efA_q~s~ELlNYKYxqA>#%5Do~cD%!Br;~r`K-Ya96p=T${&(|1I;n1oL(~)If$?)pke?8OM)>9P$R_Ya)e!5hfArh zkk|3}t*w%E@zqP*(81>7l&#{Cs1_@yrxHXPU%I}V{%SIha_kj%&)iSQDXHQ@38Zu2 znpOWUxi3temjBg=RJl@4%S?09{IJJ<^D}9KAm-+jA=|RU-V>3N5{SoLn105iWn*N! zDK9JD{CY&S>uM~G$kEj^UCIx$-}7?iak|0y>xj^{*Q>%DKOgsOofW8Oxiu3sSVkEv zxXR8xk9}L&9B+U3oe6*vBAuNK`M8Rl`}vRJi0t> zMYa)`s>yXBeKJf{lBK6ba!8Y8ip<({+u;0Lv?H-&>S(N|a`P;8Fpu3eQZno^DdTR~ zZIg;&_SVOFw9eU{ae}CC+iqrnzfc7no^DU+eWJ3p(A40>NDhM7-#xnbPwdn8{WM7h zhHt#nxVqxzU*$FUV@Xc`s6O*Q&A@C?j-YmWD-0CrBSrX7!aX0tyDSX1j!UO7rKUn1 z5c%Bq8;H5HcT*S^D3xb~zZD-+j}_b> z6G|hoV$1@=A<@UbZ(if#x6ONj8j)tm8JtB64q6?ssDOo>r5rtTzhV3;{VR+Xf0o98 zU>(=Mi!}Ebv^n_Aw@HUY5!A?%BXpt)8!;SrNY3orUf`(#kq6?g*Py}063_#Uu3Adp z8Y9^sBxwv>3)?tGe(SGEFe+S6D7Mk$!h!h}v*E4Zxm}d`+4EeW`7nG*V<8(Y&~cwf z*G}d;z}ex5%Cgj1u9$gJom-LlBdsQWH<^9@Z@8=_;xBVV(Q(9k9Bm(%XmT9?#Z))? z9U)kM;zB%74VT-lQl|2;ZpP>Dk=u_w0fV$Qx2NMG7LDItQU;#YJyR&~KDxJ2OVrmb z&qDrJZkJL?+vDJH5*SX)30oA(mXVYqZ_gI-3`c}Ga#?xMI*cC?7+yUzSbD|f zy|~-P0bLYhEK9$dh*`+*~qssbb7Ze#MM>mkK@Sc3tiXgAT%7( zSO2x}911%KVn67ASApQ#3nk-`7P`HhR0I{$8=9cKFi8_46(ylNeo^vO);W~V<^4Sf zd3(KMx1IdAHxB@ub0WC|6T2ctn}zv>d$!H)ZqDyUph@MLOTHDDm?Wbs9U9sFg*F)o zB&@Pj$n;i-@fn)Qp;`lWTo~tH&Cqn*Mb_*&31y!ZhT42D7t@r8<5J)qLhEceq5+Yv zkX=3jGtkaGWedB&j(^~@f3!3+y{09ye{rT&3*uDfB&R@QD2S2#wXcPH>|X5( zO8sT>kj31N3D5dm`|`uETdk>mXv@ChSwqhfF>y>lIoSSSh6y~fk@~z6G7JuMT8`u= za&1*PmhOB3hI3$Z9sgQXTm5C%eit%%;jsMOf+t~e@yo48FpO~sl1oMz38hds21o^srS$4M@mnMHmz zbx)AQ;P5k2gY91HAp?22vDXK99a(V}fWe#E8dbwF4GMs9@gZ8Jm(HWiL)WB>F6r({Db7#_j~qvEnI7N1MqW(o^Z@l9MyGEe zjJ%-LLFJwA#=~U6BxAkVZj|`A1IK^`LgPhJbnpeJc1>Jl1OzE6d5*D8pk|H_<&yxx z5qhUq>8aSkLqa1(3liH}Pi zvu{Zm9eP1GubXuw7hfDgIodOKecclj=eAKi7-Do@GSAv&v!i*DvDVg-Mb-)N+_sL| zjaC_WU!*3xF|}#5pbw6ey}%}7A zHg***)2Rz&ncgx2l03PEplNLHy!;GsMu8%tKBo%+mpCw{r5*ObIOiTNs$w z2N>U~SR-nF3Rydxia6l>^1Q_?)i@;__M z-w_fp_HEVCImb=*-P z>%7Qq(Of){g-0wAHT#W(r#p4%yTg@M*$Bxyp?5cFOHO?hAvFb;s@r$H4YV~jpaHac zPjmMA3ylPswC^whs*wRJ!K~bC*Cg~e&Arb+Y$OpJWOk^MGn10D2 z_kR~|Y)NMs!BY?7*GeXcpxuCxmDlLd0ZPH5qrl21Ge2u48T=;1Hwp5T$2OsA=;F%6|JCm#CF;{^C(kqOCObl5;ET751p z#pqQ3>^Ha#3_^#K;akH9?R$U-jYeb-|7cF|d=u%r0Xu7HP7YccIhF-nvn zoK6C+1He&|2ZVkL!YEznx-X&{ab+PmzmUhEx-VEgoHoe#byA8=LUkguiyt8FYvHfWw;pVOXJxKkrnr{0 zh(uDp`Gx%$58wqsU1IT+8e;}$*j)c9*!2Yf;I+l`o9>n$u78wJ0&mr9clk&6DxBPk z>2SpY_uVR`KDQMM<((VEv?tYv;=<>?A2|KPpaK?HU+MbZhtlQ0S$;N=dLsAC=1nV4 z6I@b7ZfIDfG>QIHP%R2#lq-?&C=oju?djtI4Eib2biGkhP6L0EZy};|kmp&6hg-MB z`vPX^X6d&(P8r9-=a+8#y4OBum6Lj&#ZBjzd)@<18I{d$nXkLGr4!Oi`^GoDm^6R& z0*1QA`XUO9z>*uyaBa0n)Au+pe`pT+PhF_fu}8Vejq8mUjkoEN-9|SZ-j_)|uUN&p zBi9t431ue5{9&y1-a(&e+uL7Sq#u5Yd3aB~Jb$z1hKAqe&Q?v>Tss?kY1SZc;WQk00(LtT&QM}mlb#R9r3 z&j;k{0=LAI#oKG6W1f>Evv?HJZa%wGr0!+%FUz|#-;TganlkRR-!4klyr|7Ui@Zd+ zT`m~J)Du!0JUev=pWE35{A33i;P@`C&O_UF&cjeJa){m)llR32-pKNkKs>KVx0Xxe zVO&V5XhR6D`}yNm4sZB(rIGq=1YgW)*S_z8Ch1}MEb_RG=)6p(?_zB3?ZDku^YF~J z(j=Q7piJO;{skXNv3M;yqMQU8d@!SkT_{U`OKzEzlrZ>r(MafQ4- zd*@9A_Fg&Wf-hU}IZz(>T~U|yTQKZ%ha)m?J3C?2Q?EC+u!w(~oReMFEsO^(W)*~L zs%VA1M-G;i;ggJf%w#_of8(kReBe$e1P|Vp!=MCaDNoHSa4;Z{J-O#Q+Vm*oRBs>i z=@ZvPkr$KyK$&+F-7Ax-RvtRBizNC(Z-=MjxmO(K)AJGifwpFW4zMNmrYUjNI zN!7Cg$yg!beI+I*Cs#%oHTE7Q?WaN}%wU)c?s#k==r>`;Zt|yD9f@1}gW#eLiYoAq-wYd^Nff0a&Ec zTe;(zqQP4Gi}>4J{hBX(3!+1h^HAn}n6&lXDG^O%2}6g=W~h5k6V|z#Mp*mOgUg6t zAA>jB4kt&BVYrVr8HOwLZ@JT5cql)`Prp>ZBYa>d@DXRdSn z>&F&g;CAkeq=?itnVHWN+!&l70eCnz)>i}muN2$OipWa1R7icENAy?M&9}#|9(Omw zGGqi9^$9jaIrcTG_V&Au&>*PIrFXM(&bOPCqLO<8*WZ=6Wf;Bvx@^=!_)B0j_qN7~ zYHxPW=9ih{?VPWtMuw#Wna1syN^=n&5jwuQ3^vAjCCyW$VCk5$vHQmu{4%Q?LroTj z={aAz*dDqUTsnSv&?RD0{P>vic#n|C(9 z$88PWyH-q1{3_hdKjpou9%aYmtw#{P))Bbsynpuf_3~%id2)J+$F9gLsmyfx!stJ} z-aTFw*AkC0qdc$l;_b?`CvWFuH8+eHl-fFtkN=MR4Q-w4Y5-wQ5XgT)xGwC|JKv>J z!}ydu5sG}&Zy)upOwxRMd|qV-ZdQ+mcdPVEaDh)d7lB6pi!}mz zodlDFi;9p)+9l!c+hK7GIso&eT|cKyIOQ}*JAh2luay-(ZSo*HRcW*bdcBh;|3{%<2|yW{kEw}b5zNeD0;v85zA# zvte^NDpJ&iRdaOt;x8^t2p2=>p)0q#pzkUg&Um6A;-T)>H`nz8rnXc@+2w^3mx(Sn zTzC(6rEukDE?YU2Ty)=J0%tkmVCh{_+240{j1ZjY6;SPvqvC^48^r+c-s6v?8&h*6 zr-{w49c-xM+VO$kgkZgXJTh?fI*BEWK?dDX)R>0kXK12&vsg=On;ZQKnOgg~qzR#Y zNq`X^);v9Y!^x6{ivNhZ1mhA-83T-dqy)J`5B!`Z!_LIOtB#G?wcEvI`#5|{qD8ai zDEBL)zu&GuA^0KvyKXd7cZo_?kKUy0{R(7sqU+Iat}?szuY%M z8-o>Wi{0mm}fwGt`hD^^(9RtnDTB=YCzjJTHflfhkOj%j|VBL$__ZIae{#uu>a?* zp7x$0B>qgZQcTx7ps}{)4ExNox(YbWRIq2}-@E(AnCoa~E{w~-lAwe*@5(@3s)k(y z6n;|d-FcA~eo)o2T92hT=h-?sEG+t_qh3_!wo4~N9CM+rLtIEW;Klt*3ld?)gfV`k zgb&yz+G7{@>jt)A`p$mAHKHeUCJ|VV|A60Ctb9nGnu?{{XKIpq8}W_(`wW^dK)Y%_|m|B zDm33c0PIHj=D_R7=ffE;lTZ0tg66sPo1vXPjwW!feT|0A{jM$aw+0Fnh&q3?s1$PJ zz}GpqBOyYic6y4zI<(?ul~zK-eF4-wylV?Z1a z(k8YpOenh{-x!t!{44gV_5tf8uttqZ1#lewaVjZmqv#;v+D1IbriKG2m*wHUkE-VF z>B-jQKBWjz)9Z){lP~XHL#FzF5{tEA?i*m|RUr3wVHM`biH(T2C_ciVUj2*}A7iIn z5N`9$l~i*<_Xy{zWRO|-T-@hz*LMgl)GNT=B?l1tD~~rhCW>MHwi_$gT7@kFUy(5&nPHDc+;sIq=e`PP%joxa{aM{w z@V|;6Nwr{d#FJt3OMcm?Fs^yvjq2Te35bnVzl@%0VAD>Uft}1992Vpv2@@HstHu8tl!Z-XA z-K@VLu5J}Q04!@GvIOjWQQkGIAN52QU9zE}h3MA931Kxh-19S>|9Ti~NA{}2IUIMU zp(gI?d|&DIib@`xqGetBm7@%KqNNvAv%lqMAJlP~;7*abullA4if!8hRrV&KB8!vL zla&;0a}?Jf3Ww7TOX3R_>z%c$s7f#~;)rJ={;xzGJfttSJ>2Z3#b))W#9pGgs+b|@ zEXFwPa{BT5bI<3?{3#d?a3MCpuK0nkmFVv5thg>ZPIfE$dBH$p&B#Z@1z{5(T-jr? zCufu6RH{J3)%Ht2`%dnFA|?95-sM4#JGs;mBx`c3R`6^W`>wg@`!CB!WMWvP;frU z3c3!jE#CUMHs7J0Qhj(vahupRI@Bs|a(B2`lgc?KUy9=;L@_cgj=bo=68VI5w=c(j zWL?QnXL$Z|OquF(=1{?fM0%OrVWQ;SLK(8+161G@4{~eK!~(vl4AvLVL!hH?McPab zZCES?)R&6fKHrB11UvVXt#4j$44nt!VT%wESnySQf4YTHKFPm&(Jr(eaclgZ?q|Aj z|E2)G{R(NC?Re9}x!hHE3ayOGxbe7!l~PPdC=f?NZII}AXHrY3=NaUHg#n2|jO4ZM zDDFU)C*ljdldUS2(+TW#9mhuy0pC0Z!O-O-V7S*^=lZyp8s2SKvXK7lO1C%f3(j2+yn&odyoKO* z|K*1Kql4$q7eDM7->Q($TSbs_V?Z!O7Rz!uGe<d#}A|63|FQy-pAA4Bk|)J5&RNX2b%NIG%7A0I^r-3mHrKwPvogYp9(|W zPpN@f9SR=0KZiD;+s(%?M*^a%mC{M)OMhD>+1Xj6r(FcIb&4;hnNPF6q-_0x`D4lK zttLH?OqDP%G*+ASfX0qO(-p?0QE;4R%*4((ULE6o2~frBGC{AFXRc046pt{Gq9~c& zzytkO+OgQBkcT+;5w=b@q=hxd!jH01$F3(w`v}%iqA|M^>Qg=nBXB%EFSf0~{4E#P zTzJm86G!-cz>NG6IRbb$bPA%LYHDSfFn%YL{&xf>1uVI&PJ`+zF^IhV{@+I%$#W2f zYnEu&SqH0$OB8Uy81q-dF5N2oqbDg8r`HqlH|N^#z40c>Vcknsi)84&(f*I6PnfH54($T;5b-l`547&4SjX&4LjW z4E=fIs`ch=m;BNL%Nqm>KbCp&&3EUk680KbDhca zB)Y=Kvb3Dq(Zz4eW}_uS&!7u5k)+KjVW))aL$Y@wf{2mn-;{ZT7SpQ7<{Ne}nf-<> z#e#^9t7~7Wnlwfyr7)q58nWRx$&x6FRl6e^RM7qu}Vd3xffSC#q&FBd328L!>XR->Ci8Zww^6hI8H9}oj9 z;<{K_b(F%XR>u5xzWbQCG0%qYAn5q&*Z=bdx?hdKTZYcAee$bm^8g_AH(& zch)6eoa;5AEq+CRP2GF6E)B@nwuN~06#5zx2`aGo7cRfM<$ z01S|bWj1~OGjrC&%|e*%*~@=LzHY#CqD3d@Lhy}pM`HL~V|6^@D?7fuVs7eQZOq&G z8_AiLkE&~;GEVH|Uv$mS*_$O8)2a5f9J}0_6$ZU;D&Pf0J5a*0I=dG?C%nh2g8jc9&BtG06^pdhkJdnKvnHCmxRS};gTy5f2i#Z%B7#dDLXBkH}x zCz#>uCX2x4WpD}AP3z%uQ3dNKnS z*i6L_O1Mq2=vaZBIVV9Su-Ebxacw?Md>2*X=;|Un!Jo2+*u>jtT*emV;q)O()af!R zqvc3%FBNF`;|AS&<28V8LuJpT-Cw(!ywym|_!s zhfHz1#E!yuRR8V8j@#EG&x!mgahs(9ys*s&o4$8TApPGj7fM zkVXj(1vGGMD?d>w8I@4O0d{=aI6%Ommi*wG}NmyoX#hje*dLrtN3fa zUd;@0^OS956!J~}JLEf)@fR!!%c5&?{irNablq(ql6vo~*MC=`o?8!g#=nh&(yfq@ zN5aGFD#CK?q{(ibkxR=(EsLnq8Hr zZAYHdcBYE@Q+%U!bjt+|c#Tz*fhZ_CqQUla0TEbb9lYWk_>H5TxK5N`B6D=&V(rvo zd{+ctyMUITMnenA9~|M7&`7jdBsh#M|D3maXHF!1gampxKu2k$LuU+IzROZ;ai~e) zDl`;;m7d!2Q!m232z3RHzZ67jJ~pT-{4db%fgc7KNP1PPa0QWUqqhg+HT!ieI?Qz) zDtr}yJE2F5oVyW?|b80B1hW2D8XMkU@RpY_}aP-yzZ{|v(l zY;-Z6zWk+=K9Kk+uQ5$+R^n`R)ES6^kJnc&DOTFwdaC~zDJtRz15clJWy0A4UxqDe zvcDVUbhl76`7cI~*Uvx1y&V+%s1>koG&vkc#-8OXXyA1)rHldj>U7**x#2yDCdG4@ zf4wH(8GQwj(%shyEIGC^X+>i$Db#h$yG5eB~FZl7K))EJOqbE%3e1l z#V$o=Z+Zl1rcHhe&oplQzBtwO`0}InBfrJ`E>*VNepI&%qn-kDv-^w47pC~T3kOfU z*U~n1*3DgCUcLfa_w0kmYC|l^JwiW=o~gO7sXHSg*GC+r$zSFuK~kzA%Lhu_13B%7 zo*7+B7L>uq*$$AnE(1v(+>{-ZPyLZ*6pwW_e4CF<1?fmtc_3H$CRJynW)3MVmR_Y%(KHVq|8AbWD^%xob*gLwWc~cEy$prXeca90 z9$opx-$j-7ZCLvnI<`$mF9@Tu@2=fO3L8v^)ZLbi#X?+BvAA2;JLyMjqYctigmdK^ zUx9V?WY3lo*8qKMQz&%w^lB8y%|17V`G?(kvZi~Fp>H~%t*wyxiYYCg4qvF7>fXG- ze$&4-*p$lPbE#PkN%d)TV)Z_FO{8z!O!u;xliw>d^7#3VjGpc%mP>Hcp#KVN(B zSz7%?uzU0V;fqrj$*YWSwZRRMsQUQ8Myrj6^D}AttCvyxp+|y#{mbNxRwhqH`#0YK z(!#>{xuHvvNE|g2IZZSsX>?&Bj-yDa+$t6na_^EJJFO4P!?C#3|A)A@jEZs%`$r{| z?h+V6K#&$h7@9#^LQ)!}ks7+YL||y?k`j~-DQW3$kQlnV`~To}?|sfX=RN!Vc0RF| z=(uL)x$o<`eswiqHu?UY1u#whp-=YH8A{Url8AhgZvaxXoLZA3^^P0uU5ZLqrGc|r z7H>CHXbW1|tD+@WndjYF-n>q(2M>ZoV@X>MDHUi#X;bxm zC5r~20{w=e7jwDCCE`sliVTtRg{W}8m}Jj?ZUHX{GYeCI%U_Yz3sJVg)r!4RU7Oqxd>6;KCUdJz4By3Cv_PIeoN%k)J*unZI!L5#&zBx zjUGO8Fe2x$`XW8^en@4eki)rl!%7vb5bgn$l=pqHN962XPo{i_*e;U9`z^tz+-t#z zkHIB)gwDIWAM6ed*5XVxW7YffxWM&GX?7n+;i`_S&e)p~Pc*17~&-$L)!ZbpP- z#ZX@}jHMSPsV^W^A@w6eNv5yI$GYXL(K;k-z21-4OQ#ocasyQ(2L#sG?-QPz5>?7M zQyS%7G+wyZ-Xy$O-)*u--y43xGnvz|p~OMD6sM=Og|;S%oVB&lB|IleOH++BPqAfo zm>(~}kL2rf#7Ykj=qT<8&t=I7w`Z5y7C72&k-jd-WvC{5iEVqw|HboAsy49$5~C;; zWsXjljIH_7f=(yL+x}ozq;YlDH^^?M&dZA=yyh9*aIg2_!&+#-wIs~_SYUXjVHdKyYOjr|u%?#+6ok{`OT=U6vXrdZ8~ zJ=_-NFqZCcXy~OYIi=sf)FN4(ldrXyWF$QGqA8py`4DXbS~9$AsX5pMp9vozrt&CJ z=&cF4x$coSb5I;teJ7e`5;_*iiV)_OPHeQT!I!z{5%sd6fxqc^LAd90^@aJ7-afCO&r=8B1oAICtvuU(V$X%7B`SlQ0ZpQg`@$hSl;=KK*s&}u>Qg56t zN0%*aS3U&pgxDfBC4M|0iP2ajr96CkHBrFm;C1#|n} ztKT_RPrv?V?{<7>skPq!-$rK=OGnW?n)z*$H%84TBA-gDt6n2ih8eS1Ur2$eYaAr1 zE>R4#yXl%f$k8e}Dp0=JT={-&tZ2F{nTrSQCQtRBy!PhZw8vT|gJV!oQuM(;lnBfE z4aCQJBt)0)Z~fwxOjMC$5ig4hDnos=>nI5YqF_+g^a@)R3Jf+dRMf@JqHK1R-6kCw z^q>5CYLh)SaX%e@tq{t4hl-C)%*2&x!?EW36A{LF2WfHj%OYnp6(^T;PP<8R^lmQI zgcMygTsr(B!w4hjUtp$TIKgD1UIKdjjGI?-p2CjlTfgkeDov6ny5?4T-U(f`=&SiH zFXHP}u)-Quncq|6glxug%x{?^dB#0Yf0z<#!0smP-kQ)=s{ZFg(nnQ+`P3o7>RvVA z0m&2um+hiGk00=)=f*T2PQ6b2z2;T@Qyx|6XT<*=kx`&`k8HQcnZFo)JCSFyA8!yD z2^NrOo#PjLmez(G?9Tp}sIxB7%vMRPBB9O+L(X+=&up4wp@^L$)0gBizn*(YRl_+S z7U&S0k7?5G;jRt7li*aPIo8b$@5Ccv?~@{42+}!RM>aQHi2YzXJ7ZgH&U3kx9H~Xp zg{|vNTbgfEU&nQl=lzcOgL1?hk^{F47Zgy+3omcE=|r$I1#6O>Xqj(GoWUIoi_6|f zO2Qx)SMdAwv_64tguUoVH~ZQM+L|}Vpw5r;w+_F8gGjKc%e2o{4jeWF$-z8PdXUOz zUJq5@F(eQqK0A3#kTWTUu)o?cdn`#A?2kePc@+^!wVgTyzW!hhx7EMJicuVYj`v=6 zQgfoGV*m3H;eMX{@{&tfL>4eR^PS!-^m8(lO&vX_kOT&3dD8>?-1PaEiEOn5FLe|Y ztgbLAmhiLn(@>w>hERN59#by3J2>FwhqtwXc3Wwa<44TF1fMgc1;y(qIS@?g37~2v zg&_NmPr(;snhV|**?9GQJe4D*dpIGYZ`nPft@)h;xZcJV?2^Q-C^}4dOY;jit>({u zMFj&oD#A*n{;w9rK#cVv5v8~7Ce`m2t{R9(+^SUUEL9jLE~QNLer zsa+nnWwl~@Tf4{J2(fs@m(I^L*$jN58XC*GlfSqLxjDc7Mh%c5MUR)h&$U?lc0!jA z@C`zj}CV$Uz%TB>S}%w9|=11B2v@HOidyWujew6unE#{eq$ z{c}04KeIJ0qB+LG*oG*uk>UXfOQ*p*^hRlCTQT)^MdC@X&O^0lsXl?%72;o2wYkSj zZN!L?Q7Hn<%DI#l6U0%7?!2V8y^#2SWMGq1O!JPci<{1-3vfDp`{MZEVs-NiUP?>? zjz&O|W{izYl;!c`TgFWuFOYQ8*S?DI^{0--{DZA}tMfSq>K(CEu)*E1(_@Q#fDWp8 zfUoO}ScFpjX&K9WBBK6wtYTy-Rn>+J0VNyxOtTbR@XTVj33>U!lbgy?%&TvuON+fe z7H(?K#;8bu(@c4%+l6O*C=l@z&acmxN4*eRKyq4%Zk=v1CZF$?Y%U+aX`#m3a5Um% zMb&GpK?l+w>@JN$@EnDpf(L8tbH0Zq3hBoD8F4UuyK$jt;N5B8`$LR>nJe1!V7@PJ z!zjb!R4MoOf{srIp~ZFoeT3Bm0jlI=63F7l@x+aq){5i$t zRU+T_*n47}p1oTR6XzTb3}C9i=Gu+tx5fFYB*tNlZS@+8F4-`LZ$dTl=8 zTT8g@<|jN^tkC+>#U*Zp$>F4?&Ce|?Mmz8P>J8sz0k`H64#7uVY1$$P)9n?{a4()I z$})D63yPIyTe0jSryw_4<1?V%s?Ft?I7Tv03(^<3xB6cfv@dWkfeKs_`Zad|dg@HVt4roHp^@TbODh_RSFN6) zN_?9T98L`MXLLI0%mHCHxZwqaO!ap#z5^|Ui0W|{; zhV@6$A>%G<(nHi~o>4-f@@{msDMvH@VwOhH`as^e|0Jy<(7+yk{V}#J1}U$rqaN1m z{Bo`qAhFGA!v+t@(>;uC4XH?Qe#^U7VrotnLqcg>{K7_4npwz`uQ3Q*lhygXNPv+# zW&2nCM>g+y)ggc&`%Gs z!5xzPaKb1KZPR{~+bdhyC(=mES>dum=(i|OXj)xn5LG+q>38ezf=XN#wWsUNWSS!J zuei<-r;I^`GZkU-5xVS8y`=P9O`fDecP&3f125LjI-2ev6}?~XJi_$e)BDyI_xkh& znz@*mXi^_PirlmpNva*Ma1;Ll{T$w!jGN0f8kakgsi~mo*SsGR1QL3LkzcJnT?G5i zf6+Qj7*07~OP66fJ>%nosDCVNX8z)GjUu^3wMDun7iKS;3zsPQ+J7))QMmeTPHIE} zcI%H!F?pvAsLj|A74}c ztp>Sb)|%L3iBkiTNb|W#d8=|wv*~)r&#;kl8+EbQdzLv1H-@T^^%;p!>)NoQgfkZi ziS)h}=l3`mDSs;?~FvB=b!UfF>%#NkVE>sP%WX+}E zTZ5EgRPeLp{sVnjb(K$m@|KV-K_bL3#a!LL#UyFuCAePyc9AT2>mhWG{3VS7B+D}L z0mi*F;*{!KNTSKPiXX-DEcpT1)o+E=z247`ni@I9$*cU~C*c!e_14t%J;R|3XV95# zn+4JS&nvaq-;kDuTmDy-Zn;NR@A(0?h~{nd`*fCjQVGFR7DK~$nxQ!LG-TzyKw;N^ zi8$-yef$-PTK+QfWVQx9@-KAOhmw#PiXv%s%hRQ5y&WoTE@HSo57VnV%6S*@9Bnxi zqT~E+R!mv)2urw=i8i|U_{k*!K+U+X-!?@H_giMxy!8mUy`0QEUX#Smih6Z5=ORm|dWlcPMhCZ!DzO%Tw{5akboKeXG0ici5O+fDtS2dPlFO@z4nTFm5jiN1naCd^)n8q7h*? z6jHIDKjvU<5Kooz>xK~W9&yiML_)NJF)};4Eu|#2Pyl<6HLSIo(Lr)6cq4ns1vKYt zOYLShZC2}>%r-riV~^pvF!=(prL~P0XK7|^`uUXCi&TU-x4*kF8OK5I z^B)jPJ=A1oQ~)+|CF#{Ua+>20woQd@tRA$kS5An|aLAADVevtmo{UlrH1lGTdI?Z? zt|Op*exts4f%%n@X>dtTzDxvIqU9_`Ti&X2pr|#i5wJtLYJeyKKq;OT_bu{$-p z-keNqd=6#%Jb%5)lkfEmyb`NyHdSWK1%)^Hcq}Cg-y5kaVr>sE-1!GXZy+kK^;eKG zx;ubIxuJtd?zP5e1)_Vk2oAYWud`9^Ka$LXfCt3qvp(!4n*npu4G2QaU;_>>l8!y7 zSW`qe#%DrTWLzq?h*>b*x%HiPp{ zuy9>V3E{&aSbdOc2?3^~Dp>NZZG94L+FvrH}<68KZx5Sd+O9j91S+MDeiqN_c;=M_KxFilV4q!IU~yC<#U#m zw_okTrE9DJg^NcH8!i+Y-UQPO<)uLtx;%%pT!_Efyfb^0a$Jd|0D1}si!?!+j<6X;KSVSJu2 z{kL>P3L*lqc%CA~^N$f28m3VEF58uRtP?YKrauVv>Bfhqs0L4F=QikV=ag9Ri}~b1BM}zX8%N>Fu8R^nD64_$`^ z0VvbUN{-A-!=5vLX-= zN{_A`#ItY8BFcZp?-@lxkZX!MmDve+q2Ki2a;x#yg70EECRA6DXf(53uU!xVj|>`C zT1hvF&fjakZL*NTxQnmUKIFvV$|>nxVke_r(Np;}Y$RHEExzY9{|g)J7nbu|4*D3e z64LY(4)4k5Ls%vcC@PvOlPc#&G~vyoo~PbMkMRk35xsH-4O72ExOmj)&c678D%Bgl z9&}c|XbUT`Z7o)})y&@R$BNLh$#DhoAUf4Vm53qBm+E^xlic`<3!Tp5ly?JNJn|e5 zUGJRWL-neq5U}v^GRYn_BBHvGxEj|YM#P>Tn;^i2;z9*oQfSk3sv%VI=Zk!tK3RJp z+Z*yIXEdRhT)Y)+ATYiAsB(O5;fPO9aV@hxi0V9Cowny=D3;?}wE zXLHa=cj^pd)*>OZ_kXI2*9E6j7xy{~7qZ}R;kkT0$j^%eDBv_JZjF4%+tu2R6_~1m z&JXu7{(ew5F?3F@M%Oz~??_abz`;GrTbuz*e5+I6ZxPwt|fphzcPI9so)}HRh*hML@RFtG}HtU2y@x&;#ztG_-;7qAv zLGE)4L9w1h#H^j#(3b4-IYE2M5I@$?y4D7dh3TN;w}>5QJ3aZR1~78U(-)-VVG4i_ z(mh>AszV`xf-Bh8WxJaIzpiTg`T~(}%RTfj3pe$d?vyvst%a`p^u91O!ub<}OxX)a@*>#)4-gb|_)^ozGo+j=&w%V`&%u z_6_iV;oWi|bWD+=q=isG2{)M5BLJF;Wa2r3DW))ivFK!HByLdf%dM*39D?(ypxrz6 zy(HPS`4E(Ov4dR&2uzrd-)#Pt$A1Rm|LA8#Z>2E$tOq>uU}3uMg6pkDCl8`LnP~V> zo{l%9Mfw+-8NbJqsC*t?N6{0G%--(K!XuX&&yl-RAB$|e@4F2@7B93^_E}k!fdq<(ef*a&@ z^QhSKApr^>{FJx7{JnD@8C3V%(Qji?Lq0%kESSspgaYC{*ebK`j=ypYB6eZbo(5 zcE?BuI&(wB$6iHjSps#4d}t|q7C6umi-|{<62qGoAWQHNAa~cE5|14rvlwC2WXE~} z+TJ=tt%AD-JNU{t5+|acwgqwU6kK@~rbHA%y@1I$%q_oA7gXKB@&gHtVSwYKXAa}@ zVF&?BL;u5x^%k=3gb~ye@M=j;yI1$j_>V}7z}GDZ+=bI6{bfRX`>AZ1Q$??a*4fh!LK9t>h)IM=xbjX}m`PO$lb(cf3!6zGoK1 zS+boNDR7+_QlH~Ax?|?w$d_ysCz*xv$h0)^FIz5C*kP~y?DD$N%?dVw(JWkrHH7Fn zA8(XT!n)Y5nVud17|xzHClSsYbO@F3+ng=lvB_BUc;V=3t#kHv}v} z>TmF=(?qU?RiZ$Ngk{b%->vmmdACoo;NnL`f{mX!Oe+fPJ}jAyVf2`7H!GrKv~1*; zy?NRy^xlR-oTnI8LDHYeuvRtv0dlhu$10pRkZP+~qV-076Bk+?vE(llRGdqObSs1G z!;c-|apK0evkn@%s%Y$kC|b9+69RV1p=Z;~fxQ z5k?H<*@l)t@e0JpCq|;-pz@bx-Tb=HB|zT5sXINY*?S+QPrj5WlAbr!h=DecOzDv2 zgiBE#a(z6~^<&9s?EL8bfs^(puM+mfBUK2^_i`zU=*Dm5KjqP~u(-Lc2qj8pw z^le8cwjDB>j=Ud`Cdij|Tg2}IkQf_%97ODXalN}Yx_yHaU7&@Dhm-(ZAvbniz${ib^C}IGr`y30BZ2j&WQK*hLC(;^*H3;*UN@sv1A`o8Ej`7@iQJ1R`W;D#nZ8}5BMB*ZY7BBl z*)e827-z#xRNiU*)iSph7U(zI5%%UPcY}q7t*^N31e~VPTm90laxo-)t)eNoNNIoJ z=a>%DCchmtx2;S)mc26Fm`RS0by6jcF=5YT*LBCH$aT;>UYM_Oq)0u|om!!;#WfeE?MWG*`bzL*7GXr#R$ScEi$c>TB; z;ZosAr(uAlI}aze@ozk%#M!tYY4igMJxe;-bxMHuJJXb!Z)>TxDq3!DDdgxeWKRq8 z#ue9atK}CgzSGdW?I6B9l<6|T zTw%(r13V>3B_34ffySCa4P{<<`WzaHj#iZ=DHaG^^1&l!m3?WKGkdmG_Q-i>`0&S1 zDwnvH?qG;BjLNFTdsF4dBw>|O;eq|VzG#VDe1!BbhFm4cN5H;GVG^2Ir`JgJNY&BN zGgg_g_?y$tn7ec1kR+O`Ms}0vH5+Vx;TduYh6cWe8Edt%s}!}c$!0I!O;!H+8}ZJ|!v#~n^apC8nvJsu|Rw{T=R1U+R($kPB` z{5(4fY9b-AD==G_awb`(9WT;iPKSUpi%=>r#WT#l9_WG8GW#p@8D7bUaB6Ts&GCSV z=J9w(>fBPdj0ZAk6q&Qj0QO@?bFsB-MhEI6m$QK2G&+%7Y)`qi{1W8pY3Mj6`l4^6 zfI@|o$jbN^e4c?Ky_pFoOcT%x>-Cq;y+h^svIfzkDtBA5+4=K%9Md5ip@1}~%*@S0 zc*vV2Q6e!`{!V z*3C2P&&AqjUP)SFEs0V`loyhh!pE=pHfE+2-?k6YlHY|ic(;(!Mfk3M(^MGgpnRf( zHEc@UpKWhijOrLeJcx0YLbVqg{ahvShwKcmE}pYWlw^vS1^4{xW;V`(<2bCX^>mvb zvAf=)j0B6|TDNia%bl4zjJlt)=jc}EbpZ(lQDj`V&o?J8?JuuaNQUs^9bVXSv)0)? z_gwg#?D{rynK>H07_~0R>$Js+OGbD?EXSSa2wXqFkFBTS$nW`OzF-+_sau39C6-LJ zSlajmbT!4Co@JpR461wtiAiqn)0OTi7S#D@m$PuNmzU0dPN>6`_gwKWcoW-O*4pKR z^Lg_psjxMZc4ZUeZ|UF&ZuVO6c-8_;PIlbQTWUP1qqwqG{m1x64D<2MGXj_y;$HS> zuCvnS3eNk{TtpeQUl+SD4!G7(BnRxj^ZJ{OnrhYcjSXJ z!WE^QzmA(-vpNrL4drY9h6DGl!td+l-#tDxUevAk=-t}kT}XID)!uUMx=KGSYAoW9 zm>Ib#&B=;Djai#~r`&b0#bI~jsF5aAeY?2iHBSy$8cYASH1eT#+6V7I9I4?Bj_*q4 zh`a0NW%j0TOui$El_(eZ+>7(p8wrT~O8fv+FIc_Z&?myaEn;}y-obyAy`lD+u|M{8 z%h0Wh<-((Qqoq$-ROdTF0MH|>a$vE|2TSsKL0d+k<8DNd@2)+JiU`xiWPkWLtzI89 ziC16VX6c!|*5$`kXn==bP5!`(Qpm@nRS(!A4nB52IwWh!P=qguCgkz>AHlsChU%Yy6Wjdx=|8`An9ZSY8E)T^aC&tKo&nSXSOBca^# zQh1$HZ|W@%n97RTNm(hAj5ek7HzgP(oO|Pcx6TM3xMTQn-RQxE^k~r6A3H0v10+cs zv0&I@pAyeAsKW!x<4FCtii5=OLsShNM7!&}!s&_3#ja8-2uvA^eXVLbh7O8VxC zO4c8T`8ZQ|2Sr4}@Q2MA@nuAx)jWGbv^~tEX5{d4U zNAO@ja%{l6If@M0jyy0iIuCg!{uvG2*@_Khg|z##EIF!*Hu=uXmV6d_IQ+>X_oiq? z^vPJ0d?(K$QZxc0F;=CHdxn))wA5&ySag+o+VcW~TpnQ8+8QR{;fM~#M8rm-k54=K1*EswiS`Z&hq) z==y(J6*auZe*S+*P>JxvEw)DL__|04pr3s)h~X|W+mki4gX<4#>J7EVTe9+o8@BGy zt)`Fp!pR&}43eMYh$R*@gzBM&Qg~O_$*sQ2Qv3{jx!6Sth=)IZw;H1iYnl{HWkMqBipZ3z3!~Cu%J1mV;lQK)@D_MLez_>;^B7 zp%tZ-=6;70ozDE3?#dc>Y-gYF0{pz=z8y!Ja5?!NVx4lvJ+a(ChIn8I_>Am ziVet;oq0Zfb8-W=t=eHuYAj`ePF#`kVYpEJGq7YY4;u9(kMq{uHDOVp3nUXN3!hMXFaPQTCy_ygz$~% zPs{KaF`plf$|V78%#_+p#$-ie0~AOEW}g3u7wXD;nd1J_i7EtX8p3d5TaZ|*)Ok*k zl_kAytRiUMf<4lIjTDPt?E)oGZRy`Hzfkr+k|aK~LILq^CDA@a$osSgn6O^^Bc1FN z(V&i&dDg=URm^fvUm`FJ6^HptO{zj~+AWHGl%Gq$yer!kyyutR08R#u3^k)aN;3q+ zvJ63%!=Go~=a-DQ_9ZXmoe_0~$M`#WMBX_gKWsQYLXNb-Wm`Zsz|xg`h>wj5jsg2w zQfI~l=7C{E;u5tqS(xJHb(68s*Q}HUG66>AVUEgRKaZss4szEOjbe*(sy4H7aHAx0e96N0Uo(|&@qG?#uMx9Io`rQD6!HX=!R9m=v*`~U%k zjttqeSG3`RYzsmc?PCw={#ZFP4pD8CDDfDMzT);U`rCKs`>X&{s?T zpOa8JHGCbx;kV(V@2Mn%8=F>o)CGx2G)}q_U+chr%vbsRnwAxbrY-~}B-!pM;EVf_ zvep>pj)%aI=lxkObtC6C$tMfvyHwHQK^_c`CrMMy z8-}_?psC1YrCW~uh1to2`orI+T#G`eq4x-R>PEt;5&@6`pfUqjE|6FYN{6H3_oKr! zAe)_K`HrMg;07-iQ$eYRqD|(e8pH@ZWi!go&CLd`f}%F_Hxhu^S7&G~rv4-P5emeM zYwL)e1x@%RS{^AXcztXEG;$egccaO~0*o_lX<`k{w(GX98Yr8;@6VGI1^jr!gIs0v zi*jZ)uMp?HAE(W?VX6!}xYzHJYW-`%xrifUX2Si?Zv#;B%L7Z*vwY7shF1dy#`9iy z3nL1B^Wbabp?pKqSkU?JA2{1Dve#KoVuQ`I#vcPK@0OA+gmg3`Dhp>aDl00My>3!Z zR60mtp;JCt9TA7N4H}|J59ZJL_Iq;)ntKvBI(*N2% zo+HtON5}F9h6WtKqE#2~R8F+6bsq1!011`Kycds%rgwQn7Vu%BO%O_>WIWIS{22nD z0D5%-Eh<pO^XwCG?UikOrN4q4T;K#^Dk^0>FXLQG~iaZCu7TB&gml6+uuXLVsBT&+29J zjieMRzmRpuX<4zrZ(f^16QZX&HoGBY_#lfR>z7+IF-nQATMibq+41{vce5%QCr0L* zWrB|gAx`aR_Bq1$BCuVnB^IC<)cKQIhm&JiO#Mw;bq4#)A)rv+dp8E|f^n$4kU|@m z0LUu&jeVOxQa1i<{Q!NBTK8f0jO9$xWF22BNlmoMmCSM2;Vp-SgCw&(T7zZnGqpC5lYZAm@Af!C^@I17TeJA|3sV7*KHA2`TtgO4cS+C#yiN_Q+xB>6wAC-{E1!}-D z`T5D#*{fSCXRN%k55(gp0JvLFCl0SjS>xK3e~eQqjLM4xy+)Pf=lP zc#OesUZ+TxvND50A=H^jC5aAtHJ2d`UO8VWY}9melYNvg^Gn@Y_2T_U&p00>OyL5b zHiH+G5l?{j=DD!!qQds$a-XFOkgav+*Dpr$Hvx{+i(H&=?TL4}-THVG7bLt5uQtSE z#hpOOol4{DDn;Vqn<$iZr_1{S&bR6V2=Ju&_R_d4WRfj6JZSb!g+mEbq&rH=S8MM$ zji^b>quMY2as_7X7NRkt#R84SN&X0F6kGxkNx4Lc>r0w&kIs{EbLdQr;v{iG@h|mpBkXx%fHz6%aZ0E=F!{4hdwva zTsvZXJMpWF#}CEJXvsvU#gj#UjkPf5ts>BTZmsIJm-ufzK+Dt675}M&*6DQlIOElW zg9ppxxF4R!@7LCnf*c2z1Kg`cHix*wBTv9DKYND1rkyTUOQv499?i#GYhMBV0$16^ z!VTu0;me<2ao3E5Z!5)(za6SGw;`20t7iG*w*H;9@F40RJ+$!cabM9VjyM3fkk3sW z(Cz+fhqGP3@zUfR!+-Z9KyR3}cyDkp-XwDMjHJqT3$*-7(o>c?N83O%W?dy{>*l2> zsOPAcpU!vo(Y3!bg-_WFc{CbwOUxFdph=>V#nI%3a9e4Ig#BEJQ%hK!c#8_Y+}{i3 zY&s@`U6N(#)zAo)XmuPIDSmMf?g2L@g$MYjmf$YW1b+iYktM!;m{f#-XgRKR%N(K5 zi7jEpNsQYI+odhcr4`Wp2RJB0f2~6uTXPKk+#+ z^Zb24Fn#A>0Hka?fqm~7wavDnsSGn;Tpe-X%=uT)x)LJt?Tg5NIz~NYo2II)e${)u z|EcmP!CRi#fA-*H_X94eah$ZE2C!;#m5L@ZP*E*$!So!#_Zx4ts>xBus)AmcuxL{k zpJZ7#6R&rGQI^f;obYd)<~{Kr8)E^1)iq3=vFr~V0c23%BT`QX3{YL3TtOl zFrQo#_pWvj^MT3+_*){3^l2s;{;~m&xIe5c~6J9<0njrNIeT_(rAP6wKNH-VlcY z_Ve-gk+jEeFM&oIy-yH==abuO!LWWNdC(#Y0DY(K^0SH1-82G7pz7^lhvG_sz3POP zH2EYJ!%m#a{9+k1xOS4qfF$LKqVTERCWe2Uolpi*A?(t(@;CsG-re#g=Obf(j9=5&W&=GOE_T|!=m z&_Mr#)jd~1RRL~+OrujX{W!~WQm-W0yj+Q*R5{Dr$!lN}X=7*Yyq;*2bedshsxYv% z@EGP<0gY{jPSNrgi@2HokuHU#Eiul`piJ{5ONI01RFiDQN@wJ6rmO(V-psLqdJuITUzJvQ?PbRhVlAuPvZ zah*Km!jhfN&474pG(HoRRv=ztiOKr+c+r z#%Kql9|}c>t1MM9x_Rzq&D#msQ8vE9})T;`3xJBTdFKcj`I49G!Un^U|6Fs2maW1^UT@puG0Mbw@5Yl$39Qmu*H(qtUc# z4_DJ0-h9SFOZ+xi~8w^zJ!Y=Q73uY?@?crCAL zmS0a8$dlfE6v@Zsi`?Z>oFXH|O0Q|%6^#@A@>1=nn8b#8iYsR%+SrgI{B>*zHX>ETNL_iaxACx(M!LYVx(0U zi|qXkfpCFo>lESY%+z7doT4Lzc`=mWyh}Y5wS|Ma`7^+nO-bF?{#PTJp^Yq3 z0RaLM*M(Eiz!>-e$&m?54DiPn^kRj_d6714_@Otn;D)z^X)37Tq{q;x4z}U~{AjuS zTAq?-v?xVhp0=cbtS5s8N7R zirOBDX9oZIz__i0p5)UNjeMba52xX@;&0li#~Lv>x?xPbqN+i5Ac9U_>IIc@9Bmy{ zKhSGcrXCG6D8x)cpe1c=m4F{wX$rOO8LPpmnnQA1%)Rbjk5_ zaCqBKHUc0U+0}GgsXWOTg_b9M^D$BNsrB4-IUW?4xTb(D%*MC8&Z(sr4ZEqTf51pOp5uWm`$EY_~9aO zWtt=s+HIEq6g|e_ZFoCX^SP*%^;H9L=+uDy55SR1OI#7d;1l3)st z;pR+@A6A$@d*lr4g?VH>FjfSND2U26{XPM-N2-S54{v}|i3eStF(9ysE zp9>sBZ+nKrK_Lu+uq8I?p z-|scbamv=Z;aV*3y>%Iu2?W{D^9uXF(%|(qitIkW2I|ZO?b}E42PZ}oI1i;t%_ase z^@IU7T=yKH!V}TV^g4N2>zNgti>Q7>3I7t}@BMw~;XrXalL$z*Vp%#-mT1_Z+zl?j zdY#7PA%?&L-cze8u_ej$?yP0)ZYR=l|6V_Rfu;S#i$$Pa@%xYXBY*HF72f4!^#|SM zb6Qjo*T%C^u3Z8#`t5c<9|}fX;y~%|y21|+v0BF7DIFe>M+LT5W-F&+JwJ_m1PD=1 z%+3l74*T5PytuLRHT3nQszN?33S@SzPJ46B1ndFMn_%KKu7mPZ&)_H26k^}2jh z*5O|(4s&n=iL_h@gCat@lb#MCr!?@v`Z$TlasI}2fIf!-@z-}N9IwmVLJ9y%xWx;2 zH^ft=>C|I{szW}MH??IKRlbRvJgOo*CiRj@@xLPykr5;#BI+Kj{k7egbUTAtx=RF=V3Wg z889U8kO=<(=q&zZf<8tJzZZdaGJpAtRBI#iT>4^+30%-4T_XRcg7y^Osw?{b{m{p$ zhNu6X1@J#-gc=}X=ORpeA%R1qySchoHd?y*Mjr;1a{{64HdQk*n7T4Gx(D@bdtY8PrjxSQ>c7Y%8yf zcgYc!AB$yB&FXC%8@LIVF2!8&ZJ-B%@rDo{IPR^0RhR>?EDS{^29?&K~HdNm;)&~TH!!-s#I{Vvi18MLPzJ>FJ$vT(kt@Y1Qd>vfs*D@6jU zlB@9R!GSCE$_lsgV~Lq(8AwV?rGb_#Xb31DO#rprf>*WuWIG2X8^PbiU2wa}(p72oFj~U&(hXi-=9&hwD+d z^ra|{aCXo83H*}-7t-I?W`-83ekMQWL&W|c9ty;}F8LNOh4F-IE<$3jP1%pd(5YbThr>H@X=>ZzpU8B99qrqK^6e$u*-e&?qLZIyGG+NJ@Dqwl*VYLDcsreW^uM_;Iu_S;=yX#7<)9n2&f52Z%R@Kz*K7Rh!)f3A8+Q8`(GvsE!#5uR+2(mc58!GcR9OHDACfHLiIi`wzY1U}gS6+{ ztxaW52e?l>Fz!e&012%{~P46kFMMCFt6X)__2?M?65I1ZEH?)!_HuzAin= z3nOUfkmL2{Lg+Y5xPhJJV>e%83{iAkAS-Y z6%8C&Yp;xSXM$Fj1%rpys%5h8cp+hyzPXcxH4)N*SjIPhUOi3ekmtN>IdFjS>E|Vu z^LBsza%`a{QF3bo<~AHOB4-I&x~^7oRBb}B_7~eMH2_6 zqEKyg;opHommw$(#=UjaH zf0q;OVsIpH(%CnHw0@5mS|y)HTz+ZF8xhhx1?Z1y$sQo{O8&}h3Lr?#saWrGuy(SH z0n!8r$=WVI*{F#480?#ED3o>^utY#x4r;5w{A~_^DJhwG{^PW5#@R7YL1U* zZH($~J6j^MdMlpkv;Y_YegnOq%m8fpWr}X`G45TQ;fqM9$cIRuhfp-phUQ(u%c-=v zn@8N>#?#OkhMg^B5EdHo5ncc$)H#7Qi9D*dgC1!05^d}#UmjAw9C`$RqfM@bYxV0r z(tGa=&r;Ys8jB~@$_SLS(7|@PIfU^!pALXZqfwGr`Y#@KOm@FL7X0kTE1|SI94evf zM{0MlB_WuNT^rV@mLmGSpwoCGr$~vBhqNMp2MEUs)s`;s{41dLn1j_Q&OE*TK7{h? z0W!;fCQzzAfwz@s1i-b{nHQp;ao-hv4xB?4dCD1-zQ9nNz{sIm|MTzeYdQi{95sl2<}9LO`*pfxxCbM#IiB2KMnT|8#xfUeuFYtP8cP4@vpp4NcA z49HGz=H^kP2Y<_oXNq5dy?87MV!v+xl6U0rDsKD30OUw0+tQ>gq}{<}G#`76H`1bL z@yl8)Ku1;(B6I+}cRudS&+9_%01G7>y7&6qr5MqZI}x)~rm-F89M*rCcsG;CqFo$h;*TDDsI36#3%OUH$r_$WS_ftdbO_UY!|G{J?L{4}Xjh3{h%+3eWiRecLal zDh6$psGpn%z(QWoZGPB|NogIHHZw8U?z59hrtz!7x@EEOg<^Z!HdzzGJVIXIlV8_@TKTI_YU-;J*ROxIPnOd9GhRPY7;86|*fW!1M3 zY?Tv9fcagC66oQ?a>MBNy8w>2dcYrO6Jj3F$sXo*abZ_0D*>=!ZpcG;);(c(H=DW8 z!DcRu3LY|C@K5>KjA!r`7|9*7?Lin6ajg(8?gwne;>r3!#HYK%1vfLNPp%#xKm5pW z_$Qe+h|mHcC^+SJb5e*F_FxC4NL4yeoLxL8M7ls}@8j_9Qj^l|UO`bx?DPV5K<$8v zqGC;x-@6LwOK#+I_wfj~4bhE!V|9(uB?c3fCRNcJj$*y<&S>3)fRmRf>i!*M0TBQ_ z+I73`FfjGZ$chcOZh`Wi1o)t=R&Flu{j<8fx8Y4`R`yMByVtVvH1`b@gSXt$ZG~GU zsTURo*Dka&a7*3piW5b<>&?M3&Nzgh)DdZAlVVO@iS^@VOg=}?rCVrTH44F~ypRp> z-c__+zwWL-q%5U0^SL7i5jeRZ3aqdJ*ykp|Z=eD%l`Wc3q~q z)eAdxO2i;*gUB;*JL|TBbNfK?f^jlA+5R^u>g&UEDzt=Uvixm$701$Zr60IO?k|h8 zKl8-cU)TM&x!xG9RauS}6KqhnR{!}iYu86^(Ae_hR!sKWb^?s_ACTv1VLcb z%!U%?q3gGB!ae%H{p6(NiGcRV?^gC_Ts@LQ^ZA=I7(>(tQm?LEa9JGihB!d>~f5zRMF~P(%RI_Nj^LwMjJSGND?ErRxIZfmPGbrZ0ReRdf=;a8J z(S4c4b<;Ci$`>6sXPhHVR=afa7+Tcyyw;6Hy*6SteyV*Io8|ST!nYH>Xwp;uA_J*z z0@u6`HyhLDhbwaY;MZ&FnI)9sKtyKKbEu~pJ-$ zU!jk#Zifhd#wuDUPXv@9!lNW)k=r4PT*zX5V!#E|B_l&J7-V}`#F&&5)qnzX8r2I$ z0-a$5jjW&3wOQ7*K}3_sRutR_~HFp$YJG0{<{ zO!Hx*6Te2!@nF^bZ0fShI_u2zrX~kECqzw{_)PF2I#;>U`>avh>-G2_3wy5-f!&Y! z+<-~OcFkR=8B>2BkWoUo5J~f5;^22F0S0Nk4$!wwpv=BMxz24$x_b zpif=-eaphFUNjZ`A&nMHPqGlsN2z00bLI`CLY+Wp<4|6U9QvM9O)S}*&JSswO(AWS zUtRQHmojPidq6x0K{PO|L%~UaQemU~1VZ1zy~Tygnk;A3^O!JR@n(3+Y~qSw?$bYp z3E-^-TbA_rFn3C7+%9~br(*Zj_HZ>h*aJY~2ToWzW-hIF9ugvNeqUL=i!eb`tDkkL ztm@MQ@OtwzJ?aJEaan`(K$8bBKpqp!*kU@+mtFnMXoA9VtJXVoa)s^yn9C%9;Hwk+ zX=VI`RN4MF^OB2~vy-2b_tInkMR`Ib<&;EdWx0lpwvyp{7UXQ!P;-w=Jk#rDc8!;} zhCly!m%$nGjLM>!1k0SK&Ee0nL%NQs) ztrKlDbW|^=vg8f~MhaG69KH1N3$282ws84i${5-CoejitMw=tVPGmJMf%|P2y zB>Lh6tHZ{Y@#}gy;(BA2%C@5~=^>GlEtlBKcx}bzy&#pRP3u|lUg0nLxkwR>Y}e;l z1`|z5_E#fl2~NSuYR_il4a!-U6CTV*`a72SzFPgej6jK?`&(DaL4>jrW?}a{=TJPy zPWpJU&g8;UPc!5l3;ee2>1&h_x`7O>av$uyb4Jsdet3W9;%5faKt;Sacwa?&-7O>d zY%or(+GQi>xo_(x?)WjM$x?WENH^kxj);(sY|^bEsz&8{3Wggf8s&BA04xe2Ub=`r|Bu8~>(54Yq}u1}mpgQ++9%=t2CU zcGmWtrg_g~7pht`GX8Oasg5T5peA#Z!yhJ>@j91)ldOFQ?v3MVG*?kQq5HU< zcCGz(*sHw1CZ4l+Mg6VQFrYxwrAJlKeL1k4UAeQul4z({!wZZ=R;)owNRn!7DKS#K zdtj*blqkT|S=WX$Tk!KT6WDZ#;SjxYZzz>Sg0ohzC;_nd+OZ&`7iXXhbxMFAW_p>R z1*1H0#?q#2C_3m9Zf(Kg!Z?rR!~jR5PcL&nfsybV?uh$q{mpxM{OZL*|AD|;aP3f5=7WQFmM6~(bO3tb?#jF3_N-*Qq<5ouXq5I&?N9k z=AlMWBf;fzZNO&mW^vDKrHkW)rb*DhDxbk;c%ir6P$_iEo6cQCCU8qL#R+M2xK>LX z1EZ*q)Hh#SX5Adw$YbEh;u*0c@87E|+d-6`a(;OGX073Dlltww%jz*vp>S=iLXmH8 zm5gtNzqZ02(M~p&DhOuB_~bw+gnhjkIxAlOAU-1X`Dk&awr))9`@)9}Pb!7YzjCp? zH#d9EMeL8JxaZeAC}Ac;>UeP%aiG~gsDyF zbg4*3zTB#~!oDfKfWwYNgHA&4nkVMt=xXIHg-T$Mj3t=pGS;V!cjj#R>vBA7wZD34 zy?k#~w@B;FogZ#`-qgs*{t^`8dZ}e-WG9EFF9kLb-a{jHrd25wKIqX;2k zAR$vCp?M(T5xbx<1D=-0E7yV;;9J_k*Gq~$F4_eYrCpLo-vZ^MODuWlqh0N5tn@SR zRK-;i2J}te7k~K%lgQOkIa#NQZ-+(*rg@jpMhqG`wT#r3f z!iQ5ET^}AZ34Zk7xa`pvOPw=$1l(jucV?*RUIeLKgl0!A5C=#8XHVgNT~vY=#mOHlC%wA3T-4$pDC|;4y0m!{rpb&7m8FCf z=myauQhVt#?w1tzZ1E*;?Qn^I(G9oFUwkCmyeP;g*3AN*ok-;o8qA?8lmuJdEm00f zb0i|G@w*=DYHCMr`|)*|v}P)$iPcZRe(3&R3;NgZgiJYzizbXlmWzd!fKnoc@XXco z>)D`+7upOYN@menvXNuy(PXPh1qqvw>sbmUR~R-(J#eSa4AGm)_BSB_DFHKmJI=Sp z>74kH>3J=?0P!IKzcV>iGr7|X7VKQ+hwsl0NBu5!ob7R@$g?Uc#-8!|L2?TVpR5OI z9DNk&y^Q>Jl;ANEu3=sRmu&N_ia9~e{X_zXo*erhYPw!;Vt_Zic+}3i^!={t7qcqN zDYs{C!1cVv7id4%6q)kr9Xz}PEc=%d45c|np9tGh>LiIM26zr6l{c<&Gu$VyvK}_z z5VbA?RzZW29bGD3*97vZlKx0`NK8tpI+;qBF6xx6a! zyHAYgiS+k|BLgcP@(4|+SyC=5RL!JIt|YQ+9LfU%MstqN_qbH#9PrpAC_fPXG(ln* zRG7}(zgEUssND74JY%$k`Qj*4_PdT0)zIX-=CdEv0=<|y>cCJq+GyoV)*N8d~l%p0Ak9N z1iP=)KCa`ySod`n>~HX!NzbX)JaHH$DXJ8Mu;_H`a8X!97zTyIA-AbuU-J`Tvn`@t z5PE{4+JYde@jYz;5L=1i@}A=aO#<~XL*BbIKRVcDg?H#$ZRK6MJW7N1)Z77b!7o76 zbzznWq&{z)uVBd_z1ES$Nl<-(Li?`;^=KaQ2k7;^D}>|WYNmJZI4*F7kEdul;?*F# z&d1}>C*LMOtODxi8)Mgs+^Q%~f^)4p#uXl{9je5S=j-lsDQ>)ra&_vY+h@xRH83d{ zFf&af0+fzuQ@6nRo0AN&+0j8fk6X~F5HW4?os7VuDpmd{{KW3`v4@xm6C8tp&R$L& z(r~zAvFTy04rs*+0vyC`#D^q7c<-L;Jeup>B=-wfTok$WDPO|BqE`q5if}9bmp*wl za}FvmqAmCWx&E?)x{sC`JF-8*A&Q(%Sl!g-l+@AZ%hp@`JbUo;bH|S<_$Cz%*>$QzwOz}QXz=wy=i$Ze$j*tf+1JB%_t`1&X@Z}+oLj!; zxmm`inEEdsWtwlQTP6d#2-h^4FcxxIgwCM;B^l#4|nu zVZC4dq;(uBOBcqf;ZhqEJi=YW?0##_&kdu*HsTxHWjyQnvC3s|1W%M+GDWGRiwq;p zL( z$}}#DH(WM1EaOW)<{*kqXhyedlC(5fZkW6E3|U-)A6Ku7IxHr_wqa2i1Dw!#igF>{ zO2W`3X0NtdKFQG~rrCp9YtI-NPk?q8H9-70%woI_e0>QpxFDB&g%C~KR@P5eG2OOF zPH>)aYqYg-R05fQ#@WiPm!*{kkNQmUbSZH6eu>rNPjd0xsXeF zHUReS2%%W%l9Bbj{P22`t>6&%SaBd}cLdoVI;r4V4qMzWvQL!Mky}=ZplGW_40nAg z9lGw(E)7+Z$`eQ{s;sQcaJ|Z0-3&FqWbf!Ew@~wKbkXFcB0Ydf1}IXw?BNz6v?w?bVA?|-#mnb0qNHZLHVJ8DRuIKx zdOJv;_VsXNa`&?5J(?rU{>Ca6iGGWwrgaB7y5MMpW9xf|2_Vr|kPP zSP8HID#DZCccB5~#f2ZD9>5!f(Bypn)fjyenI7ToOYd>*{i0`_KKxrp0RO$>t4Gme zRBSDZ7_==O7~+4*jbR>bN|c+i>KX%DUhlj*%G;t2hiRI5$7ZLP-!FOA{T#sFKZKJ1Y1AQovJ zqNlnoNN%pT?A%F1{o@dI&Dh-@O_1d6n;{vgmr*cw25d9-m%8 ztBJ4EmBV?)xf9)c_ZL+M<@v?e>Ow6XE}e)HWaXM{h;aZX?d)^9h3cjjYhj$3b8C;3 zA<(E1H)63p+{mbjrt!9jc=|+!T8|p2-xTA`>gIRPOvb@aA3d@JBj>6O4@biD-I;;nM3hQb-`wBv`hvZGw-;#B=| zHcHqz*TBeklC=l*bL7|t9ajBjS=m*^>49hSDhqoRAdKTU|3`@CkiMf_!wIp)lJAQ| z216@^4X(!|J?F5wbqfE^dos^Vx>0{V(A-F-?ymIQc#u#_x z`BGc5JATI{^rP&>OCG(^`0`U#L?A_t@h$!#b!?RiN76pyhw-~n!*eC=_!dbP$bIFO zGd#6IbMB1BO}+Gmk>4WV=kZPMGem|5=tR;^iu2`GPx@-N_;^;%toX1bV-?56H%Gu` zR$w_>@HFw9Sgic_ZtZRty_=Vb00Yd|QA^JFs6RM}tsFH(&E8At4Wni`Pf^pEG-yp@B*KDfeVzI@7+dcYz*Z5CNBj6cNG#TOF z%V3Bdl9KPje@8{355&|KP3x+fSv_*#1Nv$lXLTm=cPIF!?H%fbC?V#j@x&gc%I858o; zFH~dO1SgPc1cm#$Q{9ODllb`~5oPl%tN7b#1HnxI9Inf8^}y)_n`^`|TQX4bWVr0~ zNviSA@|?<8qaNV^tao#CVYvS^fc2T=Bc05U6G& zvlt4p|9<4HeX+f8HY1dfzG!2GeyyAcR+aeTCCJgG_{ILAW-?cpCv2}3*ua_{<244E z$%jFQ^t|3vb~Ua$xS9wp_77xk2eH&JL|PBA0?JL{f77#aV|0el$$XvUlBp|{KH_bx+4R(nf??hW$J?&TrvogdL%Bgg=@HWCK~#aPqqS_>Uq(=)(`Z(2ACjkbd2( znIiJ)iwkLW^TutB`ukfzr6Ks$EiUq=yD02sv3(O+)RiGi4)n@IHG-M_jNye4TY+jw zYI<+Bwf0T(_Y6}vSRFYB!6 z4co~)xWIX3zWc&yt(}d-?udcssN?j+7Ll%Ryk=aQsf5|F``h~q11M34U zryoTmM8g{<`YF#f?HpwKomL*a*PBS=vNO$$27J?rdqpGb+Y_*ik$Em(mKd7{nPU%l zU(F!vN6kp)G<*#Y<+$iLRdX%QIKEoGXpnSm;&W7ctNAc;X~KSR(UKCHz8kDQ+HmZQ zNfE6!`WijCJZvqnB|=z^#1M__S|mD z7gw6ca3!vf#D66SBn&b(v~G%*E7aL!B_VNsAX}c@ki0G~IvRyo7wceW{_numgEVAx z3jh#-3nPwgeyZ3-=*md!H%I)*|siI}LrBAnPzhy3Toq7?&bMw9YrNvW2 z6r5cz+Pd%UM|aT@h$9|CwAA2(?Ukcm_Wv18kkD>}kX1mVo2X7#m_Y9On8#w85E_U9dd839*@^pW95ilNcie$bPlOpdamB*c;5y-kn5FC6wRVaG| zMhPJm)q2sNB$UL%{%F(Mr&j!dOq$*l9ZMmkLAZy7H=X#+6%5zk6~Zj>KMlI zkB6|4Fjk&7yRY18CJ zzj1-$!bkGik+=v(b$2)o8_mji|1BHGeA2-L&gsbmoW5Es$JJyp(n@~0T@Wc++qdK4 zbR0+~2}KoOrLS4i&R%C#WG=e(n%@i=g|WI>c-s=litmdU?p8*~eNgs_I*ADVrlg`w zjVHy0u<=}VRc)dV%YYq$6vayBE-%I8i^M8dulKzC$IrRRKzY!TI-N#mj!7|p=wp9$ zM!u|(B!0*y1$^b4ir(@-k8KMRoIm{quKDih1XA7~7c>-%h#FTVNT#cvS{P)x=WMsj zSaWUigo59riGJ8zSYVI!qVsSdF3uKh0MzKFx>}3dKt`I_x<43|=C8r(84d!q2(s7hOShf0CdfI$280)KdM4@s`c`Q(gJd+gUy*A8+9osmtUv* zMf0dXffMa^-3t7w%BJ=w?-U+tvqM=m8`a|d6KBU)F~B>WMD1^Iw;c*uuvb&bElldw zF``-Dj_JNAhreY-bG}DvZYwXu0sX?$)K%Dhy5!#FT?W!{ z3l7Pb;dZYlLqDDOqjTkb;;g?2R>NgG6?)N3Qaa-2_bUV<{hgA*1sI(?TH@m3r4&q? zsKYsRO}Ho_9tt$0lY$h5{VD?Sqi4KcuNS!kvd(cmEIe8~oL!1`I{=k04iF8sIw#4i+W;3P5A@l*%`$Z_jTHFG z(C}$wwl?amyAfw1_q1*8uK$ra1ol#yS$Z?U4VamJM$clS!bdrQTjkvwq>COaN^8Zt zRiMrpKkwWzbtEmjhUaZmm#mhS;5HcMM)xrTZojWPs#;&`2m5DnCMG_F>oEATV&}0Qosl#Z z6&=mqxgfV-M+tGGk=eV9*8-qR+J%Uf9_?zET&c(hO)g5bI6u&@JBf5XL938>)T9Ac z*=CZwO?iQ5TMz>?z=LBwSHy=};|82Am(?65lt;hNcCCDL zGjmpoyJ3!N;*wKKI^E6f59vfY<+#WObe2n|tBn)xE|a1Qx9^7r4$*`MM5ObGN^o9+ zA74`+faZ)_o|3S^K%wF?mat_cxLByruR{G7MbTX1@4-h)U4GO496$?Y?p#4LqNdD` zL;IAYCtWg&H8c|@=8lPd$`xBiCO5fYYQ-DGjr-YbSR3QPO~d0VS)Q8ZxJl6$O)Z{Y-71w^C~zGJggxJzkjb*ygBwe+&wN{0&= z7>s38D6kf@x%W;zSiJW#j5RP!xVZ%TJLW4-E|R98Ap#2&!y1(XYY}f009cA?zS|n* zk1DtT=ajP0%8kTB8L=ZnioYV zURF@Pft+11s^I!C=<;&BC2u}A;Fk%iEO)``Fap>h^>iZX!w!_W>lW`1Od}kW8>g+IAC%!^n?|8uq)P8Uk}3j zV^H`=tiR8#D%5_0DpVYOrJk#Dov}!c+OKb3fZsSfRoM+^^o+1o6u5d$7sceveRBDr zik^7Ua~OVx3`-aFo;ZuQwKJ-J?>PY#qRErCz# z&m63CYHAAs6JTEb)oe9)iU|?E)1{GlwdidhP=ZdV=>~fU@t_cC4x6)z@o3|{*rRd} zpO49-J|SO@PZhMSx8C89FN*^hpQUcLF3jl9>_Jk1ov3Ji?kiBmy#D)R|6y`0Y$!iq zf)7A8e-V&rL3C{fvGm?!BAl_{MgZYpzrkfoXSciVUg7--m)*n!^W9Yoc0vweRfL1~ z4kYpx;C%`d-OBCGR9DoC82_c93 zfi9<{LvTx_OX?6z?p3H-6q^+mo<&G+O)YGMc_1@(=bNAvVyHovf+tLvckQb=1LQc5 zO}2b-GrkyIpc-KXjF*&1`9(nfZ1s_DP-7uV(dMurPY$ zpaoLuxuf_^&6I)Ogc#k?0N|EXxtC)cbK4&e9V+8xcTcj{YjM@&*F_>*W8+L(6;yen z2UiMZ+;Z{XxlGOb4tUQ!=gTTcQEn_}2=HG9O`g1ryK1?ZjYJrQh~LE)cbc+fRexIB zh`tLh9SELUDgrd`jn@+c|+6eneplcYJB-wT1I64VYYF zz_t|qi{Dj~m1#68k`r}{0V|+KL6I&!G{<&?Y|+S`LvSW8!v^limWF-&P4G(b{>?uk zVFZz(?Ht=g60N|^`|wm&Y~|(LW%OuBi{!&eOs;Bi<2>3d`RI0dLBh?8#Er?;>CRn+ zx9LMVb#gGk(DU?cZF;DEY4hRVLwQODyt#NZn4J9_d6|%!^{1JS?$JQwCTkE^%Ag z{kOt%k7Gv%D;;?&66{MwXyx<5oAwt_;wm1=R_`xHuQ%xpaOC0h&xY{KOwY+NiC)z4 z8XN>2u}PPinP#s%qZ?E;-%pU=boX}?7PM~d;&?nmxf+2PzP_advF~$-n1S5c_$jXv z=7sZDxkliETuE*x>Pv=c&IP0C*!}65MWk`{t&4NyfpgS3jXyG`sS~~!>1M}>Vm2Hr zLN6uD`KAa048~SXIf}dP`ap!PANWIi??B=yu6bO~x#ne68~66_q#GVhGRY6>^%|AJ z&Fdws`|H@9gT}>9i3_p6d~~@gu3$@~m^lEe+kGT>?_z!IIywgR$pq?zl=*2|p9~c< z@x+twAwu6C5)?j_H_FZnv3T^0vHn5gGpda_MP+)v?cC}aq7_3=AYfeoNb zo84)8$%_=Gj{V$;FFIAH8lp0sUHVQ><76H;lm456{+Sj&Oj4!Xute_j^^S(1vSZXO z4<*W>r;n`+VoiaJFAUeN0;)bz!qI1(F9$(Oe`Fv4f?u)}U?3(+-W;5WtFEI;&!w}S z#gzF~!klgQOQdt@T?Gea3)lKnIGnHw5$9rYj!`-T)$1zMPNR13haf4XqOtYU^NHo~ z8gm7hrH)~D`MOO=9lEu}S~$o4@JmSvr5@L#Q`4qRir~x;fhwgw=ix->FHVA%ZgTey z_**6Q&R;gxmzJ6BPp+9Vxji3u%x^t}#jIms)NZ za0_u;iK`=Y+?if8Jifn1S6YlHZgK$0HXQV~yN~E-+8-xIcEaN?2IntW-Qy-E4i>OS zIi0n?7vZNH@e-~$KFZk-%+0%J)h$7_5b?yxI4y{xDyZa(#|ZAF4R7iRHo&k?4-~`L zW4r_w>|cM+#ss%m4}`qnLjXkLMLp*ELzAC%o|2Q@;$Oko6W_CW6Lm|Eq{}a#V(X>r zPH{O&o+<{I0NPG^Jp+*zC>0b?((`G!2)O6X4NMYiH8?=ri(9pPhV1YD`XD{$jPr{? zX?)!@2eYngv@c){$;y9Y zTDTo^iGPUrHjUQo9Sv?RY|G<6%8ZE?3W{{F0p-8-J(G*37ua+IX(ohZady(YwzGUp z^oz?Su5~|Je2J7Qr?3@z-cJwN-Rc^NG-}7M82Rj+F`|7Mkk3lDT{*Z)ZaTV5aKMvz z^{sAoFfu<`{*f*;cK!+Oa7HW>f$B(iUpf3dOEjt~sd!eL=vqTc!ce0kcDyei{(Mn) zIMzcro7Cp-mdFprmP#uO@4MO{ z#0Rn?9bMzqTtkRga2nEame|Jna)$TmRVuhNnP+sl{1@e#RVs`kXB5_}UFh#n#G1=g z;7`!}OEGZyO0~1NiOx8Oh!*r#K$R^&3$E>2`Cd%n;M=*$w}QA;Kt5nZ^0JF)v+RDE zQ5@^Ie!kv4TFruix4n6WfYzWeN+H6f1o)3kV`t~b+b;Lx2P)3AT{#V5*8$@t-w%%^ z4@`3pzv(yazG%kR{atLnr1bNk7L6KY5D|@ebt$whlf`JPL}=k-(`Jf=DQ?DnryL}b z=w98$#Ycf>(LL}O<}ta0x#;XC*tg|mW@c3>&A%@`oUvPEAqdo_6F!Y^Cqq#G=NT)- zALL!wlQ?ppU%9xcciwIE!t9DQPI;C!4xr@G2j2xxM5BiFbu>F!9N%Q-rxiUh9;xlT zVziZuHE}ICY|+6a*Aqx2B+a(Aa(ue8)BXn;3@#Qjeex~Z)=JjOVRRz<@kenFhR+4# z#fcis$r5d5Urd)B_mr=8zdRD9Sfubh>Q3Jol43OU>5KbOVmVX0jQ`rief=6TycIzr z43Ig~XUc&;yq=L`uPtayANfYw%yk!xXQ{47_64rri5{6)vinkFA<)o$U#96((sf|` zkF+xApeN{L5aG5;Rck~7OX&)Ux-c}J5&!Y}^u;&Pz{13X&de|5nl#FhPN`)$5Js+7 z7aKK4*QdeuKIy2VhlRzXOC>A#rv^C@N3AnVf*Tau-yofUgi4yUuxVSz%pSD1yO~O_ ztRWppAtAPANA47AH_IC@$Gq*%%3u0{;EB?)?W`Mc=X}Say8$ad915~Nw#^RKJ02rU z@7^C=l4pAC9{o+1Dmy|P#BHvssybYKt$29c!R1Dxvw{OI64q=iP7J*Z-_IZe`8DI7 z?XNWnoShfe?$Ek@U4`89qpkTh3jiQ=r=J`?9~Jd@Veip=HC3uL3zcrCrRdTw3$9p+4tdemuAw<~eT9yaL<3&D+y(rtmr_ zb(f6i5TAQmHeWiT|J2T+|32k^iqQZx4E!1I0}2id5iNUnYZ}?EnK9IWgG8){kNQSR zxwZdWN_m|4Wp*;2DdFqsnU{R0py$0xmvJ7E_)n^i%Pu2ZmHab1aE0uCF^SdTX7hj75LENN-FJeLG* zV1WZb)C=m!J1@4JCTbo# zlS7)XfbNa3g9wnvb#$yJsEyl8S?PHHQP~;hkuDc=qg}x|{%q#@>Wt(TqOmaEV61RL zLEmF#$Yo@0{UqKknXVSfGlf+PvTP62lOe0|Y%D#*iL*(|i?erCxgvRQQ{}JlEYp|b zqIKJ5O0@0HR8z2k`x1I?AxmbgK+~f2Q9RT%3OQQBV20GXF|W8W zXB2Op>BP~fw&d*ibQB9GoZ)P5UhBWFNV@}hjswZ>vg0p=hFP36%H$IbWYxJk^sBsx zN9Y0*M&FuL6d+vrS%)@gQ_syZ^%1&kiTWEe8++A!Elao04?=hi*q89pg-Ud!mX3-{ z*c{t|F(71slvUdw^k|`dRob~y)NKyx@0;@)-K}}R#BM2(^%hFVXK=!yxWF?P8q)nf zTixcE>wFd>(VwzEWD17A8;aMD@E(;0Ew`{^>N8+~qY{P~KDvj~8l(k>nonkK2alUB zy=W{6h}gVj$TRc|wT*Rs@wRB7dlO|}L`#6yxP4Bh6SuMQMPt{Z2T;%c14ICSX;$#} zpk0`(07fTawLiQJIL%w>Z=msP7nI#lv$HxW!#aq~x*r$l0dhR+fXLQD%2$G%~mAPVf^KD88>Hedk&v zVok{<9FUlcgtHXjEp5!q%g!`iIK54F7F%GwwkmAYUi$Qwvjh0NmB6rX%V9#zi`Ns| z5@C1yxj0FH+R_9)q0}We`(L7r=H1DTzhoJl;@vJ+v4BV|)g7==>IoS3C`&b-ZJjnb zixpJ=3lE~c?b$MWOFxB%6l5S=uLYx@Gj77tMhU54v~LongY6-+i+vW^sskiu0|f3p zk(UgQ8!KqgcLmD28d&bPX)#Phj&`lRg-z%l+y#Nx7;zl_LqvlF00{=7NPzdSpc~{} zshd67t-Gm{h?^My-e^~^@%?K@a-M#s|HtjMB>M4?+q0fn|EC2~UtWF%QBW1=sK^?9 zE6LxEfdrleUD7=xlm01or(D=u4+B&XtHnVIgcc9Gl%r)?9)TtxbV{p)ZJ5yEHGhh# zPH%ps9=-M%2qQOZEx6%3(_z^c1@p<81bx%OP_W5L3XQ&1pPka&KpXCyxAb*>sY~R zVmU+B0hnODlC1YRzkr_KuYxCjfCruh4-ZfHv2&f>!p<(MZQFUJbImsCk5K1*kepzj z)Q!;h?Z@caJgEuY;j9oqT^%@^thg5OQ-wVX9aLBy;r?kHSm~EA`{DnmY_~(ZuvbIa zDqFe~{Fl%{E_WU|+ay&GGm0zeJ-c>E4FP=7_x&v;Cr6O?878-02EGN>T1eytRxtu*>nOeNEFbUaCcvYxUfvGRa@14XFAFS zO*8=`69HAg+}97l!T6hM5W_-w14%m%Bavv|{fs*QAJVy-N?`hz192C)AzgywK%810`w1Wn3Ep;@yc~Ux z05m?y>&#aTglSBHe~`~Xs28eV+9TL=eu5Gi7DmZY1=4;6}tBge@G_|JL z_tx99brH{9Hf0`1(TEVvKFV)C_8-7?adQw5^!t9kxLKuFq&c2W8=_v}u&JL2 z)vG(&;=&a|Zh=Pf57zexDd%KW8E6}8MU{&vj( z>#8j4_!1y&&A+fuJLKoTDmDPPS6M|d;L-h!`=<3{4U*l!qaxvkwBV{*E=dyL(VHCQ za)7R-V@wAg0ht>hZRct9fJcDBai~LeEy&fdkf-yepA0>wiSZeIWKLt#|hHKED@)-#CDCw}+R4`!I)68Je*>#_Hyc<22X zL6O5NV91<^?bVI#1ix<^n_ItVCK9^;(OBFY*7S2t9!7-z`Z_^;Xg<0lJGE}<&d2sd zguGT)I&J3<$7)!vXLglT((p`q*j-Z~$tcJ)s8)Dbbc-%buW&7JkWiof4@7C#wQ4x&-3N7u&x|tkLFiYl)MX_ z=N|LS9v1*6``0pj%mEsdl0;lhmkq{7Xvh6Bc3Bwy{%uj>KS@6>fNOydRVqU1EmH~L zlqfy{NC$fOfExxRcbIK7G{c3n-lV>F0-yz7b`QTzhC()3ZLYMgUsE@$@|*`e9g8&- zbuSWxt1Sr+<4et? zs~J;xIGUm~Q6tdPz>*$nPllg6Uk0$p zvL8SH-uZ&vfaQ+czJCCej+{_%r{(HoBp@<+uD}SRob?Ib4o#nSSA=M|j~}u7 zbkX|O{6`1~SSu&8TJj1-2HJy0Q zE6es-Xx+Cpk~!Q!hEN}lf;dps5S(0P+4ixHD;=v{CSR6R4fdl>u3O-ge-`AQ^Puoa zD8Pf-8@Q=Os9^C84R?7jXTHBlDnRECD;Ec2Zd^6wr!oD>KUGY>psP=#;$f|nre92r zRxQHXsYez0QUu#QX*v|v-1=-UU*tnZZ}MQpbH#H_beE4p2+J!mLVdn)1Df7s9^keo z=;DSuBQg}<>+AzcztD6Q3?bb7rp+7U_htqepzYW-;PQXou)vWq^Ny$(3geE|ZS$v_ zF0gmH1NS==YSy~kNjKe>j1vKFaT-L)>bO*3GUk6*pPZZ%)5}2MacHk8zxD) z@a|sf?|fj0F)1!xp^pkCpdkxZKk*OZq-78POjHvcYJMgT5fFAHKs^ZlFMGw`WlV?} zFt*-*7cmge#Y%2b>E=OhfkpGs6>wPu#g2(o-qUoiKeJiSSH6&5$>XKW?23K%|BwOb zyKZ70RIH1yL3dOElMVykjC%-GyLUII+Rfr>;oNY+i!If26Y#*vh$-A%Ci0fzhy>N4 z%B6BfYJNq(_p^mVVu<-wD+Lh)u2X;B`J`jFMkXZ!^N*dMYhE6IH7*f+Ydgy`kq_U= zG@Vtzvmm}j_WQj4)2dk>m)5tfj)w{(}ovC`2D*U?GD}i%SjZUUAud3|% zygX_DD0_TCwQ%oR+||y@wQ{iL6bM(Hr_>8=-TH_67xw)^ZkJ2mF7Mzb%`k`uE>m(} zaxi=o_(xPXH?*6_jV9MGc)03u|~TB2QWI&MEal=Dt1bCtAX3hFP(4f0<_ z0ulZI*Ol8vQZ!(S94V9pP zJMZO=e6ICh-Oi5A4~E0_grB+poJGRSrxh=<&Cr95_t;i0RB&h_{JVAR) z;uA-w&6h2}A4Uy98HXXkk3B_&Ewyewx=X*TND+yWXTRcc&}+0Ed-5up_`0%|JyXwb zv0F1w=&kQM4r#qlC_b{4`*?r{I>>n(_2PeflS@320N=&6yRvd^U7NRKUve&0{Vunm=K(z&v@rTct@i=0sHBR{XK=RUK(EXyT{-S=-GQqF3qTP7|xIhst{tDCTH&R3j?v#@niBuGO*Ed4|0cYV7iOf&4qVAtC?TT_^^M9XeT^2moK+ z9O>o%aik~g`MqA;|KpK5J}?7qfB zg^tP1Y@ud_=g`&s2(Nchnw34lXRH0DB!j2LSB>b%*%nT}^9J$aO(lYxKF3%e-wUZ= z3rA!#2`-o5Mt;KVctRVzUwD^0#-pscK@K1FKYWnCznu7Ulqe4!gg4ME04{SnVCU8X zZgx)o_s$(4-xhrS5tms>F>9RZlTq=G)g! z_<5DXZ+C}egId(pfZHdL#40%(YWTkRaZ5 zbSO!SF>@+E608TVQjlUbUr_e&xeqK$GTunW!?=I{d=vsVZ$d!ji3i4j8Kl3KCd3ISKdA2j<%a~WTf+v@sb$k}EO2{Z zFbdlLH9%8iU?7VZj*46Vrplp|TC-ynV{rRo+Tl+5;uD#@a@ArA``?{}a zG~y$jrJPSr#J$3hv*-f_Aky`*s}&Y^kT4P>^qA&0ynCo;0~jS%{Fx4NJ^6J6i_`d> zUUI4~>0#IlE%mHL`^%f$rIQ{eF5ZDLmom`&{Cfweex66lC#XPFyqFL}u+y&rUb3d@ z->Kr8*J8+N-+tFT-=#ib`lW_q2=q>vH$UgQpj>E~>}Ch!=jZyh^3@!U^U7=IBdKgR zie=YDlIpApH8wbJW>1HM|bbkZ*x%B{Aq890=0nXf=9Q+3g7P0M9?fyp(rJm4t74{hDk*~7)Y|J7ofOUPFMIF=C zUe3SKLH(Ga!;*@tFy?5V3XM2IiCw|B1g^+7JpKrEQDY`P z7*j3Y;>`GrS3h#k=@0(KKboim0NyS7x;}ZrJ7T-!XCF1S{^8$?)uc%LY$xKkmku?R zGVB=T(y1NJ!alK>A376cCW>$d_H|8vxXp_~t^ohd+decs=Ui+AsQZ~>BS(}E1GW=?j=x`k z@%KpSuS@6|S+97L|JkRzU9++6qnrOj1WuWMwX}ZCzy5R=K(rrox$Ig1w1al2C%oG4 zxvDaVkq3x`R3KLREhvjSa@t_a3Wp<1OK_)vUB^GV_xhsu^#HKA%3Oc^wKyjY8vu5T zeyHj{zkY(|S3UmvDz80CyYvWPOw#fHG1C44W*{gdZN@)F+Ho@T=bHCPSr1C~(u>Rg zm+t4Er&2`)^xkC~}OdPL{m^PR)H z+16u~DB-F($BN##Y`A8wL-K9mTzB!_IxhRMb^ZN$B>WZzS{J-lX(kyWWIu)Q*KSO2 z@%^%n=vurwT4-E!?s7exDuRBIVUYpCnLTG+=NGqr32Yg8k>M*rgmc6daD2gP?q-Ac z#xUd~Ogvd)M;U+Z@}>7reo($IAzQo?@w!1J`0=R|fC`riB>W%VzO>RwIz}h+Jphb- zD^c^FGcaa^VrLO0;%>OVTqb&bLa_4CT>EcN<87Lxm1Eq1@6+9_l~ol%uj>UXTu)7b zIagLRGI!IvTF$0Fc#z9$AtT?F_#JVy?Db}ayKqW}A?#wpq>>@X@#7QS{P*|#gf2x_ z$(`v9UND;C*PE)TsmmeM`5G=cf^b)fZ#B|X!BzgkvO${4t6A-ZxA(c{rLM7UT%#lS zgWO}o3;BBvJ$Nj8rhqaxf17s-fk*kz(Ovi1b8oqCoO^n87k<)7fQb?Kvj6ikY%{9{PIsrsew=a5|M zZh}s`!KT^cw>ZS;)D0dOh}O{^dfK%fLW}IpWA0&6*H@V!&oQ}r#b_<*3Ds!uH&&7y zR}E(A6f{q&8{Qs+#p#XT&lDazSIq9|RUv;T(z4*rC0+U2=rhJ=hah8qkPX%I90y3P zNEeg|F$oTwHIGTbE0iJhD6FHcX%!;SxIKq`1@dlc{A?b}8aW003&e9g>WgaM0!~6x zEM>gj%9&*!aG3-u~?uc!cB!`Ho z9FCg<9x1V23_FbMkV{ZW_tK;Mj0&r&t{yD_i#!wnx7ppQCPHN=O|o{lG5%@!V%TLGtEGt#bHI{N8~v=;SE>GfTQ>;uP*Vodo64JTDIdV z$IE{lzkDf24*gj!^`dX<6-MH&f0H?^srcsDukt!T_49LUIQzrx1P%K5=knA<=r0dM z@k9FUZ1LaRl)m@qqyxzJVNi9Lx<;vxZ;@hR*Vxp=44rfb6ZY=SdcGb^s$vWL;`!UD zN|gfb;btqTmVUz}uXYG~(&quis&i&==DWG8&yMjvi;x9AG&$;S7AER$4dr^7x{APZ zd*6_q+HFaw)3*3zbNY)p$OH+KR;N_MA0=^Biv0GucIkVQrOQRJB;RS}DydQyM_p&S8U%TOJo7`^N=P2_BH3GgBiAD?+87%B&I=iAYzEDt4zmM(wVO z{sy?qhXQ?o-|Kn^;b@?`3QJZu!#V5GR`f@_i;e8alGAlKhI!3NEacwqcVW+6%2}|r z%`i&1VXx_SuY=nP8N)@Mw*Bro#+y}!9T-ohSEol61sVX#*z@5gUanuc43?(>!rugE zd4W{e@F<25DMscWUF7)6JtEWXGHPu`-huAzN=&mwTx{(t)ddJB%MwoG%cu{-bBB9@KRmv2*Dr5ZP47w`fj5O#8a~bDmjG~ z@Ws`A`JlcT@B`)H#eLi_W2a#YIc)y(9Qbvq{7aun`9lK})em#20$~%l@F}NC;<*mAeA+nkkfYMEY8tk^^?jb9j|hIrQdRP8C8^P zic*|Ssy+HNl@(bk%WYHet_=$}^F1;9;hmGU5WAzgB)Xj9)5ydUOR))WH>SQ9LgM7{ z_|iTm_|q}r&!RfG(O?G3@NBHUY^)4abcCU^y3x86GBG0-iEmn(HXs?g#-m- zQ5&_jrL{PW`{f7Ln(-Ryg??pM7Ekl?2n@iqs;f`w$)CkmgdV%nIK(ij+2f{o-yg0< zW{ddXkAp?T17>s=6Tss`AM*@>yrO z@-*!bMX#M5eb=soeE3wG?z{Uznx?lSTS7i1L&mN_o-aJu=a<=3yD?^+p*}X$_dR&7 zXkgXfMF!&^$u3o@pak1*Ekt}Nsxeee9Lwh(^Sr%!!DW5=`Y3S#Z#`Oua*(NzCr}fI zOubpy!Ir_^E6gGvED2|_OAE$t!`LCB6Ae2kslE(v$4}XFUvB!A5-Z)SW^$PMzNUE| zUp4ZOfG)}R__`l9cGFZcu`yBUnG%C_vv>5o@OmXVQ5IETC}f_TxMW)mR!4HtumTY( z%^m67u-lGC_&X)C8?{c&n0idtg+zSb{7O3O$)N0?A$hXN;d6ULAeTYAkQ+j*q{&n&_C$Q0=9}KCa5T zW}rroAw5mFmcO;RmM$)gA`9;)HSmpySdE61qDbJBY^!u>dlzZn{+XyG=Rm}XK&|p@ zMw@;OaXx-qXwWh?^QFS2&D=#et+)lXU%f~rVIax+RxlI{OfF9^NSdafZY(Ag8#^>g zc{r%HhY5Z^UkG>^ophQly2um;}s@&ME-4XAqaeZ8FdsobUygXF6HMuNm2zlPFk}U9j zCtSr7(RM=AW&DJw8jt8Uhbs{lw+)H*-uf<|eb1s~i5)(cZ}nmjHNx*4s@x9RoA^jhNC0wG)ZMNv?OoX_uENfMS{HxGancxWP1@FU_`05&tLynd zgij!o2ly*$Q8hw#A^#1+C=l^9q0@&;ao-CSh@aAE?8}5Ir3&a`Ymt}RP9y>LK8H3N z!j$tq(~d7OX0li;wh{OY#V1p=iUL7eH0wyM3xBw`%3<+1-h6SZ-hg?YdGE(}ffE+&b%ni0%6 z%p4grS=lv)ItgxGJ<@?%x(DaxNqs<%`xYm4f6uD2jvCj5D->)yhgT)ZLQ1bo`U8mdMC_SJbC&uH15bkoLEsX6Nt3tPaEW zu!MvKj_U&&NUK|kqnud|X)Ja4DeF%wpCZzct1{G~lQO(jWE*UMe4eY^;JCZ+f~I+U zt(JB7alKwg;vytN)z6I|8ZWPfVqf-~S4t=f#!uc_H66QE(tS=Rj7);KR4*HafAC7c zjNd{liVig8vO9bay*_T_MT+wmi;uYqzr&a?Y|6UJCbi~`Wq&nXG4UApf=2aIxmAT$ zhbQ4-R`14%Rgc%uHnA8aRaaM+8SPKZ}1od!U{Yu`r zzl(c}cs4QLfeiKy6=(@6?B$IV*^Yri@I^% z{u^GN{C~&Gn|WDkL|FzRd`<`o^5m%12Hg!2*Sa6y(Q`!X#${)|31fO|C4rJVmX*eK zqo_*^p!t!(4OjJVeSD{Eo_$g&;oQozb$*?E>1^c`qm!h)sj^l{6@H9-p2o4agkkdb zP~P(t%c~F2`z+QYo$ty-5p1KSSd)aDBfP~z-(EOU90eE=t_gtn8(qxq#GyaUA-ZsJ zI8B`ybiZu%-RPdJ-1O;|E>8)yw_9uA7{TcB8S86LTiA-CqY=hrkmi2ReXy&vZ{6uk zLpBX5xuktJb1mVg1^Dw>$;EYf3CD3?dtm49aGwG;TuotiRSPkO5l2#wWY(Q)9P)X4 zVL51b^n4OzQzjB3l0%S%Ra`gI#?2N{i1NxGuK&Bi!e3hTYryC>%{e_^>#|FpfP8K` zAuV&^P{i@V(4~gu73>ICW+$(xj@y!Spd+=~I+$LNk!3px*wl(mB_gX28ZxXZg8%aa~!*>S4sPHBYF2LzvnVMYWKV zSAVJ?4WhfJc3MyEKPnCizBuh#1$9>QwJEm|8KFX6tYA{}+6P`zRZGd%c7Fl;)F(2w zAKp*)u@rMt#Ol~gMyr=ju09td#RrJH-2V2-dCvP12zHdqYwq^`lBeD&E2%2_fFCDk0NHm#+VjASq_$o=o zLIW3RA_kHXZ-wQ)FP8>?QdBiuxq=}Kx?KZSbJMLC>ZinRJYu8{CDxS;L2lGLPuYKL zXf{-c;&o^3k;POsC~MS*KhnEPZbEhx;z{>#m)fo3gF!$#=;5Ek(S_I!+y>IkQWbqnQMGdSgdry#Gbbrokaxw;%w^2cahVRU$3RdHO2k z%K{uoWnxC&RbPqUQ5?NW;Ra%{02M$cYw(@6mlgTMek`)0PjgZx z-p^*=Rkno@Dy|VLo78krrfp(V^8?C!v z7n7VC~0l?*3R)3*F%yd#JG#K9k-E9%SP#$AXkBD!L5x7i6RZOMpeS@a0=+Xs>E;4|5bO==!rjafe+2xYa z+h96%Cl=OZ7p>^ER*;Lz8K^PrboI)?J6FxS@>Y?sM={;UEBeyuhb*_xv=p}FgKC?; z`c_N!dkZJS7S;8yi$H7`LsZM=eWzSJ`fz&r8uKyuIyL(ehCToc;tgwg<_!jfqPbZ% zrAA6Nvq2udQ3XcOH4>tHWHkpN-fX|@0)~1lv~xY`iuLFnh%Awb*oMFxY>L03_UWHH ztu4u2!!vAgzb;^E3BK4grZWCY6k_K7>CSm<%}1g~gv;Cuo^~1lox$wW`n2 zA3fUYM^PjkOSMo8160@ZN%&u+;il;I@$nD8!{a6$sY8=SasuQlr-i6^B~532(kH2` zyi^4w$lv%>&WhwcgFkJ#zJEkLWeQ4WJdcb!EhGBcqu$fbVdqY|)VPKSGF`6LX*Mak z6gL>w@2xqCX}t(h))UfbyI=!tQs&2T*yz|AmMNE5BX-;)GKEkislw-Rq^;$krBX4C z)U)UNK0-ASGO;EwNrdY`g`M6m*OA7ktKX{~1<_?+IVxT6;SI7 zPMi+RC@t;V9|J2{!F=S|Jpi?0<)(qbR(-CGuM0;S`)+qPzHgO-MS|1Y=(I#(iU@=> zw>8NGfWJNNy(8Q1PO#Zla> z+17@DA>V2(=fT>Q)@y5x#4%r&rT20rElTQ+>FN+7pDfu*Gi~m~TDm&JgvwBURQtGw zLTGP;-1gS$`1D(4`bfzvn~x1BvX-=)7T!Jx)h%*VLyld8FFd=tA;eP#TpV$%vD zP8TGUPwoT5rMF>p4!W=;maL$^Jg&*G0}3Yr#m({Z=jt2lu07*~DTH z18{l#t1tXt`vb}ZKNAE7F~kJ~=`^e)$NY){ zx7e#?IM~ZgP|IDB{%m#-DksEQ^tMm0YQv*?1GY9go4T`9F{r*`_hmV$;> zMy9l{&cPn(GUMy1CAh>MM!if-5{a`I~&s<2^Ly^CRli%3NrZ+BooipKo2oC=DT@I#9A`Kv|R3%<8JC2 zqqZt%ZsHsVtDA`N^c^unknxRJ5x44e@xqU*=mMUWwruuVIaFUYIXGq#x|$L3JYngL zgus&22@;cW$+%Fj20XG{evM-$%EAo{ED<}F(UAc?4nvd29Kt}*(vpyb&CJ{EX~;D^ zm$92w$jjnq2;C~br&W<5^Fy*$X?3+*OYKdiTU1?K*-f2Q7D7Z^mmZhg*SBSk7}Zj* z4ZEtb*sDn0Q37vJHlO!Sj04%bN8yf;UVf{4diZGT%;srgEK_pENYI2?)}pjLCVysx z_?DAH$ZWRn#(sM@mUEh)>n% zQ)~ybn^v7%s>fz{6jD9OcrP{$)tAx|a!I7l>C)A3!=+ap{gu^EUChF0nOrw_ntC6- zBOHFq%V7r)GX?OZb+vfHx$L&x=zS8lsW?B>Kb4wch#VdR}# zEr_KeGn>+}la`28v85{7@g0F01h5KRa$Pe5?_>Dg%(`jSX(3yjqfRSh0m<+kex_>zb*6OxbR&Vpg7+x!;t=iOZr_cKc;8iqT3( z3Yvm%d8b;*`649(5t?4vL)@g!IFG)0EW1Xgl{5-F+s2|*MD9+2wM&0HxXG+R{Nm>i zTJLx#@k$=@gf7*KWJ4WV-eDC`DA>52N+t{oa6l-8@>miYFrx%L86BG1O#-|ZZ!^mN z9){%%`$ysjwEfS-kA|$je&{hNf9FF7OnNjUD1zotp-5kvq~g7lu*}SqGspOywHH83 z8QjS33zM0achOo~=@zl41;)sZrRJN=?_drOHLKU+RF0W!-5>DNx!nq`L4x*TIsI{g zI1gzsq{GVe#nMCORUK(9^G;#w`~)dk74@Ri*%q%t|l?$ z6B`7uEs_(P-_KOxPI(@Ph8G^MaCCRLUN^dM6DAn8LSdz+@$dj7^EWS#X&@bu^| z6Qqk_bZXx$>#4YxMbvqwL;ABBkI_RE$GDdpU+0Zc_N>)e^^S~Uq?ke+G8Co;Psf6* zF2k5Ns26+sz>xO3LLVe-ZaZwGcx1jqB&b5MEmmo-=w&hc{E zrVBlLK~xf}pSM7(NNmNMQd4RY$JIjseJTuh2WzT8*zj=eh5_7k^VS`F`|O1|Alm57 z(*BHOC6ORg&@VGow>3qok2%SgPX5H3z6>YUwQyz~y>p$4`hVhcKzUpdJo#B}dYFCl zIwi>FIrps-LM2_mBe-n3Qoc1{YxdG>zS#H*jQx)XKn8nb4rb`MO$OCnIDDG3(fT$) zD)|Phb!mWPOX^uBl*{W|m`a(8l1j9nm|ZlQ9!7GsL@GW>49(0Qj(i?6ihL&-5ij%p zkk-Ww#T)0p^9<}{42)YtuP+T~)6dylOATgst*@RW`eI0vL_dsyH|E@j`;f5~eauwZ z;O>|$#G7N#ani!xKqRusG;^Rx(A%q%XG6z;lK1o@ljw-_^3L#aX+Z6%ciQi6u>TyO zSJ{x3~d%u zNl8n`OR05xnk=1Rp z0mTQ-$&|zco*=kJE|4&{6{kL%TS`foO9sNadX7lXP}S~SIdqZw+y2*mzT9K4kjPa$VIBV-V;X$r zDGU-ibn7fBLArMrUg!yMtzuhZa24#DP2El-IH|lQm^=heVyQiQe;1%AqGgG^TC$Qc;1n_Cn6f4PUwzbZ(qd2q0j<0%4XYkF%5>dCLG8^OhzEW9U zZc0D3!Dgn{p6QZ9F%LO&L&f22z`e3C?IcQUS!~;EAp(fjQc$pr+~d!uL~BtZh>QWR z8M%w&=FGO=`s19(gI8jfk4k2TGz&@-KGP&s;q<{Z;)g_0(xp1h%8Cb>Nwj_=4|;)! zg4tU~LYM{_l3^YlyMg$+yFQSe?d>u^PTzAv;GK`LTY-?~F&@)J>mKI?rwwMmuaY>= ziWk;QtW$O5utd+Kw2z0Ve|K6OplLn=Y<&9g2ffHlKTPR8)aLssrt~FEfGNFUp(!iV z0CbgTZP$7KH@{^rqtmy*%XY0Ja;>V$is2h=2Su2j#Hn~0)aQ|+d{nsm1g*~tl*+x- z<5;KkfO?Q&ut(0EsO@E%ZS`U<)?L_F6$9@Sdzi1zT-m!rMvmCd@8LW$2VFnq>Kw)kYS`Ju( zqaSLP18VeVrCos3yv3^+(4@zv+5~A#;L(55n|Jc`di^@cD1bof$()_=_gG5Y*;Rdln*k6-0DKy!Ow*Yu zQ3RC8L!gh8Lcez6WVX#)n=plfc8-*kEUvuC*wT{#hs`bUWi2#+N@9A>NQ!Gx0ar!)l(!*!h!V&!Li0YApE^zFejhrKGpE4xtJdICJ0ey# zRu0-#v9>x^7f|)R&mr;q}rd5qGCVKH~EgX5Vry&4I|$ z>hV_tOgtB&MYjzl$;I8_riBr~P1x07P!Ew7yhpV)fLOx5;iE|Xd&^>)5SYy&!dNuG37KYpIYIZ+wNNU??e#j6n2?xGhKb7Pd&`porT z#M%FR=2ITT2}SA$KvB@j%E?XaLhU3+!j0Pe1PpSq5C5T?{&oZm7^b@ zg0iLm#~l}z;Lo{RVaKV-@m#e&J3+*`NK%rdE;Vt>h}#@u6v+0Bj@|A1{jIv)+A!g| zz1iTn^?p?mi^P6pOaKy`qiL8L)#v8SoYC6U%A@-<=he3yhu=x+YqkcbN7UY zMk-65Y2H*7TCWhkQSR41spqvO=%S(=MrStnWZzm5-WjeUDQSv-V)nGUiv>g{{gTGu zZ&U&cMS>1g0fY>Q>OQw+Q``qw?Y868&%FBe1dJSMWi$oobnthYJSiz1@q#4Td>{=J zVJ7*mu%D6!>IFpp)I$9mIxcKwNlouvjE4L7gw0>?Gg0M+cY_uhRYm}<TS*TlO3FbJdDH6Ty&Lh1wCkCXC7$sioo)jhZjez4aKD}<+}JL;GhS@$#^VEjLdIp$eBgSV zbmQyzA|ti>%AHYL)N3Y<6u{%Wukjtz9AKJzFF!;xn)lMC?MV=g_&}Z3##~RCAJJ>H z*n&Raq;}sw-^Fhytv~W*S@E7m6P*9R9>Ecg)N2(Q!QZVVKiRDbp};NQiLo+IBSMbl z`kI{sZq5LIfw`2wb8!OS%Y|w4-D`J*%Plg8A5gqKe)% z^1CVlpcYp5KcE(&+Qm%1;Y2B8Ng4^N%#$r0V&Ry4C_hfEUIsWZth*8<&N(aXree*C zLqX@xT`U-HxWxfP)`&hHDliWDa2E^82z01U_S%0JDkCp%^WxgY#!qpbQ25R$ydRDS zll<$xWTlGgVl%t>8sHz^5{|v7kn{7Q8F+J?^%-?&9(FDatZ1q?>C2KxA{b~CxTu`S z@7@@knr6VHi4bvNsJPF=*oWIm$BrNGvt`QY4^$+;mMUTdQ&M>sOb^Udr|{)&JS-a^7bZ)3P;j$s(3edj?Dl1z5+zOzHg_TA^%vwm-~5O#hv$4pmS6$^Bn|* zXQ65z+xPbWOkMqZ*FB({Cle`$T}Ye6F2g-4-Z7OZ*5<6%bc(jzG6>L?mz%&Pd2(Vg z2})Wn%D?GWf%$7wj*+IC%F2yBF+zb_gI{r(a(mr=WdK-Ks3l5cMUJl zA+ceLX2F#WPQ7Rh8)9d2I(+zW@lk2K3lzN3$TafZ0*V=LyH(yW>D3 zx6rlQdu|2BNU+cg*_bH!0Cq?Q?UKYp`gV2Z0YFM4XG*pwY%J`&DP;osq!^9aaSYx8 z(pp2Q==gsRLpl4`hpx&M6Jv)-z?cANpD{6idE`SWO2L(3-yi;u>0n9(u;erSF6CG_ zJpW>d*=gnIhllpNcB6$BBD!?a3}C_)H&@rC^#`~B7Lycuk(w((b4O);Xrg&|PV-N{ zzU)Z&WFIH#y9)190AEay)j1B{5}(+8bU6r7b4F1AhFHQ?BvAH2uFDaLOF>B3rHc-R zY`KiHBjfXrww@@kZu-*5=gB9+j6o1XDyvc&HhrZ0kT<5b!WF6qg+MUTrJvDtN_+88 z*8xYi=*&9YBD`i!kdUGrC>o=zO@&>b0qn;I`Io*NLth(-iRY^-@%% zuZBG1?K1hkUg-14-_L3?{9L65ZHR@>8Z9oL-}Jnm=FaC$I}_otnuk5Q-0*h%-Q9)_ zC=}|5+7FijpdX0thNnwEcCfgcMegrkT6~u;;tv*k)Qc@b$S~mO9JucD$4Jw$xK92* zOf&$M^I_p{`r|rNI_Ydy5eA?4{*moNijJxG@MVHDNwUmNX`5Y|kbOk3KR|YHR&-PX zvVB`%V2Gl6l61KH+IV(gE>}et#N59?euJ$&>nOc$UkN(qLC%RghJNYy4X?KrY8%wrR1ffvDix{>@fQZ#Tofl<-{%9s##XiIwd}J>8RX zNMFcgpK(K2MiL~IZy(%jA!B2`Og(qQ=C(yjveTy*GH3HOH!VUZzwp84$NUrk_B;dg z@PBWhe*Pp_ga$YZ$fT*Ep;-0KHTD!hzj%w{Wn;Mlj8zuW%D~DE7_3$`feS(f=qGc3 z(_sU_sj4Y5Vw9uFLrim_qc-OF^&c%2akyL%B2JTpgh7%OvGF}80oMh3G;l{=KI!!Q z1c&HFSRxkZ0%QIbd$D%sw6P3&97q|57er=s9RIwb1i=OPdCj7bsNU4fK34Mnd3AhK zrR!*(X^M)8pY#n|X#&`$J!+cw{3MQAp=8x`DOzeW^oiRWTdC-o3>ATxnWAJ zLj88#O{FY4u$j~u>QL=EK4T;kb)TJHkbkPsPqIY{@~a2hc9^0ygqNfVu(k& z@GC;``;~H_R1uiRvk!@;*StPoU>U^sn51%Q#@~d?dMlMD8-8>I&RM*5i&;f)pzy=! z_(FX=XVt7!X!npJh*xT_Vg;T(ftiMd;KRsjfgEDcNxC@=`nlxhxlQbteE;2M(78!< z?;V=W_4#aZx4X|%-nc&?gNaclxQg{8c6UMI=J<((1O=;$W_wnp_GmDoduZ5$i=7-) zf*Q^yxUE3^&fOe6O*$3%G#mr;QNG9T#`&7+3m$?~Q?=-WB{f~!SQKmp7O`G{1%L;-@9I~TVKTdCs@a;BuoM8L=6Q2ux@+5O!R*3 zXu)G~1sCmAPG%%U-)d33hb{#&r!~Vyxa#f-P%@_}d2oP>!~}>^Ak53}i^1%Gz)Yq6 zGOk@)^*bO??Qdl{>B#lWg4K8A{ROpq)9Cp~O?SXlmu5g!q&CX_<+5L?kqxN<{82zt zKZ?nzJm9Fb=kX5@X}yzEC!^u&#NztBMvPQq1JIcq5#$HxtrU&}GZf10TOOY1!Ol*XKF zxI?=#`NR6=hn0pSFjGoaHkkm%K86yM9BW&at5O4Jem7MDKBaZO_%1cUa8<|p4bzT} z!{gJ_DX&i(?20Vkqyew5pqHPr;T}lAXy0w;^FA^I+M{p4ybZK^6lxEf4rZgW+ zvrm{mcD;cCk){$^oQgObS%pr*;?5yc2lr<0Y7%_w(KW)PeYzZ0DX?mX;+0D1anVgS zU;Dmur8#Z6m8*SLsL0H?gTu>t9z3|$NL2qdYx>i1T(EJF4X zL1$B6O!gp^9m~{HKFxHuB&T9!sZEx1g5Y<%Zq3ULI2^n4GMw--M_~GGPntP@3l=!o zfq&(`TGK;V=Y8@iAyGb9@IqOHh$5cEVAc4ZUg)%U8_WLEH5p!f`QBddSUi4HNy@SowGdH3`TI&3cxUqe;8YLu2`fWe0n&5p9-lo&yM1B=Hamz5%qxa&>*(A6z-mNMH&Dv!n{IRQN@-8TjZR+zN z!Vzz$e$$S$qU49(2|EKm>`Z*KU24&B#-P@#th(ECVsk$l`K4PHiI;+qd^QI?qwzyi zC6`X#uY>y59MYRm6YwMYZYg0K>Tvt$EjSscVld@PPgF;gr=T4SumLWcb7|(p(?j^< zTf_OV^w5R|y}{Rd)`+2kjGlssZ9kod7}NGa{QCNp)#qF8ve;RrfcS!HP-+L*^%%QX zqxKU6dOR(t8ruCOYX;7XjZ z7-jo96;qmeJ_M7?y& zceFEQM!NR^_a`G)bUF^_ zcOR^KUq0zA{PdK!;%+{uFSbWQ$BBUA-O#JZ-q_a0k}jHFe6+sHKP|u6%BfGy)D?H9 z96aP%PI@{HR=sr}*2s+UdrAvU)qu6X{N`o4XUihNFDEhN?W}VmaNEzhZgTs+p7*|Y zw%KF7!LA(ju^Z6|v-j`+Y&FRttQBvb-e1n1Lkb3uJ@2OeYAMF#y>LqkY4}4zIYiCfi-`vx$@|kAV>!#B{80~l&(6S~GzBdF3 zm2MLFBSkL3H}MU=rrhfQR$|LJT{`jlmLD2lEtG3<1$R~1J5+%8ZQ(k7d0T9#7P{sC z%NAgNihRAkO%gZnuo3$1FZgGP0&7T!% zKfWW#^KeV!fUu%$HMK{dj+@^2{8&Z@_hxQyw8TpDg?~fzbzn${#}$LR_k^r&oIjy_ z585yP^66Lprzf2V-EXL~AL&MFf8OeDu^#Yb&kt=-Qbe2&tT_DS>&WpZUuV}s9&?gQ zPcqR-#~ubUdDnU>L;Y$z53!H6+ueDUc(4*V8|><2*;*~qQF8sr1nk+RuU|fZeEp6+ zh;J9^-bT+cJMAE4HFdn&k(O&Pz~#84_0~bp88FdR$+4{;`5IvoP_9xSBRSb}pCn zWk#l2P~Pfd?d^K~YYcYA%2?(?<;a%?^IsN&wYl?d&)^J0kcCIonws+LmJfi?bc{F8*37><`u;nCoPzK+vruyY z=@yUocFF6s?H1WWTIx*j|7pDG=l*%?dC;=HK#l&)^#Qr<~YKWBkP)Q-iLj z(@E<`ksG=zQdp_G%YpAV2cQtKbuyq2&(yR4^MIn#g8V%hK#ID3@t_DnyE8 zdr;_QD0f3?a!KWk%-9|B#@@|h3loP-O*)*Bg*4Xx9P9rQCL zuL~LC3we6o9NAJ9G7t5K87+Gs=z;n7TOR@!85pk=4FZd##Un4ccj}69Y%r$Bc2?Jc z<&y^`jJ8KsZ(^o{Rc}#5Q3QT>fF1wC1CZL|ioe_5Z)H%%uuqS>KpxBoDe)tZh6B0~gv z^SD8{d4R6Y^hs*}bCb}z<%>*_F!&;|VJ`&9+wyRxMcSL$>AA6&a*hhf%mDe+2h~&l zjBIGD0}zx>_-QD_`uG=23@@QVm0{^vO&h@#UC`rNFff#w^O`DvYaHO7BeY`0!J73p z3oLC{K2mE$UTDNl_3z?%-YGRlYmT(@-j1_Turi{uIwVxHGxnnC%v*;k!BZ1QU5>Ui zSm=19*~&xCohtTwDD$uf{=sl`Qg3;u!+uVe$!RhNXBZLE8Q2nw^LUdZe<<0)oD|WK zpZo_aA^hck^6>cA(c_WNh0kW*z_dbqe$uHJ|E>DcGo5f5-4@TvCz1bnpOT#~$4!*8 zMwR)yv4GQLhxx{kjhkRcGDnGuPqgkGamm3F!^9;(GF+$ceh>&;Ezv;g>r2wFzOfwe z8G|iZP!8_b=PeIhr2?{FxP9BgwSjEV5G5Y|rCfe0Wn@%)O+yVbdyrAv>Ww-c9}_NH zmeJc3>0xpgSulT9(yD(nb1k(b^e8TXeQ??fhp}!;((FyWe)^I+Fb{H9^bHzvPxu27{$%{YD=)1HUNhuA> ze9eL=F*G%J54E_G*B`=zK3O)1r#8UP%gUmy#pt^s3*?WQzSB&N60Qcy1p&;3p|;p& zkv$w8zs^S_?~IILl!8^bv*&p*Ly!L1ijAbU`;NNJ)+no^J=0#uu8W-Z|?F#dqbPsu@+-?lr=DjR`v0P^w zoeMZSdM=P}Co>W=vcuxqKH@`jp)Vp)3Xu;>j%?HMTiVEN96LKd#5=n(RuNW*g<^W^ z>kk0?nuHAXL?t5>%0CZl{1{q|Nos~}t(l@PXI#rE8ZbFZ|LC=(iHopt{}4=H&wf%# z6)CQZ?1onh={=?BsxZ`=yIz@m3acLfb(f_zUdcWgF`h%7 zQu&qUlD;23J2iJbZZ?IP!X}q^@s)vfzUs93OSW+i<2BJSU3`Nx=Z=$}`rn@b&sUuM zya%ro(XJo)oLp`75r^A&?!m2Hqz&vf=oT=ra3m>0BWl~vQcA&X>X{crGHIR+z(!hQ zL*CDI-D#=2R|1AC`$oJ-*Dh>lAsw^eVU|L6J|LTZ2Hs$KyuIv3C$qk=(3gwyRNiIJ1x(`;LgSRA#3=O z_yh?|#)h}ISIKtfk<{#-9*h*uqMS;1ug%fiEqznx;mxRpd^Sn&?c#78T4uy&z^!_i z4OlcMghz+d`I#ifibEc%hMl3$T*;I+mt&z0|~9AbOtO~N5jVlbRqMyMqeeOI&JDq2^s zUVpvPp=wEQO4YIE;;j#DTgkgC8KmPLeM2BS?YbF7mcr3n9zqH_Zl+wJUB*@K>)eP| zORqVpM=UTwTdN|FH@f3}ou=EqHUe1uq)7caq(Jf4v|$veO*2q3Fb7X-ihJwObw)%NK8{Uaw1UaTCBfj&{C zq_&vKRy?*Ls^JXoqZD0}1f<;08S7d64s8M!oLg_8+~fa`y7vI5`tSe8v$84*Nmf#1 zM?}`Cgk&Y55S6UV?0F6%l@-b!*%dmrY_iG99vKGgg+=VMshYc^Gdqb+H6=4_%5Us12+YuMOSoAJ!fx&eLZ!_9Q{)7tG> zR+dp>V#u=^{P@h15lJVLJ#`_FPHyYWJ+URjwwJyB>U;R&L~%KIA6HuGNH{Y`DlNq6 zDD}O}*`BY*$_cIU3tMTdI+s3?c7idnE!&lhdN#CG3Z^3<6BELqJ9dJj5dn7~R6c3k zvF$=|zq@EXM4#)!EwwV}ES&hPH^8S3yqCHNF)@39uPKRqXGW7>FXv(ZL^vFA(S!xLn|F+7tE@(wI`&^vG& zANBmQtH<>DU6Uq*ebK$Vosp{vEXfl>rp!R4?#b_~>n#IQFI+W3mfoIRuISH&*}v?< z=tw~!MZnis4;M7e#O+bO`^_@d5?H2&4L<~yskwvjkQa-y6-qsQWBbAGXo1Ux26>$= zQSm+VQJ7EU%P@?aJI&*sw^7r}ghHa)wNPD#281brS5?4+>uUMYi z{IGn{A=O|tZ|3<~r{*R|I#N@B<8emCz_o0@st>o2_+sZEtQQVhZbI4#z$t|;u#d>B zWZTE@sW6E9>v`Sg0bP=52_oi%}n zOE~EfEJU|E!SbRb9d5mZaD#cQTOUC|dgO2~ogIO_{H@F!BK6h+VmXEIgu=Tvcob%L zYSNIMN-D@MGuPESZtIF|y}@8NpE-;xe!e5Vv?mMkj@R2w;GSdKa6|Fux#&9 zK;P=4N_i<&L-uxUJHx8sr%`~k5fp!d8~t6_MyL8q5BKmjZ~hvm9Qyl2K-ujpheh{4 ze>$ZOzsCXQH+z_*OJ!JMjtafl$Yx%H>-pHMo>KtzO zNSZ$$c+v0Dm5I~ec}RqX^*jh<*M0vvB-+kK?Q^WGyO^jbn1=DHH8gFG$;KxYMpfPE z8farlVJ_Y79YDa8oGi|zU)bVd-)+z8v1At_RTqG;&4PgTNLi2KVQr!BiSyXcx)=i9 zlsQ1#cYb}BQ?n4Z;THFhU!-W$Ag$?)$Uq_2gmP_tTcJwH?b-*&hE#YHU+1>RUNHa4 z6}Ub<_URV-76?7KZ_*lyLEno z5218E#GZnAP3g^gpIr(x2whuV{xVKIvYJc1GFZU8G<-&R?i@KAyMVl%MueR~qKG`W znbf~>Get;26z{sVbL0-#qSNgK>QQd|n5Du*;_C@}aYDpiDP#Go-d)ybUz+-!3}iZo zEB7uY{D4R|ItJh4OYVGs5*UpVDHIPFukJHUB|;$jz%sXvk%adR+xkV(7UaBLgA8{nNR5uJH_#>kUPsI+!HCi~9H@Pn%cN}2Y`vznsi8wTIF zjoH0>{W1#9pq}gjnSx{^?`@qp8CTm;=`iPWXwjOXSc@jyh_jJ|F(zMVbGHju`boFn z7j_B%e)mlvXY-P=nfC7IcFjhE+U(A7^h6}L!;n9(U+S5jAJ5WY~)q1jlC=JF{Z!I|K@jTfs_C3)>{rFtAB32 zFrJe7C~`IgvbpJ8JPgcs`jHA03945q5<<8f>-a~?Z7ruQ64p)G z4n(ZR*=*C@^!B>oAI#WfmrZ}m+pTo*`i_n{Bm#mRl}~QHAIYPB+IG}F*lSLD&N{J% zV*o9jZ1HR_YW;;->BSnJFrHf@%Ci~7 z)|4!)Y3@}wAH7YH{%iA?AsVTYt3)q>)I)1Cf5X%0jqQZa6{hV2s{=L(e_%@}|C24T z@h&a&F*i?3W}1z2vyPWqEkK;=Dd=NkS(dQ7#(4T|Bk7=WjzhgR**^8i=!|z-lZW*K zleG`2JZ^#Hq1fGL!a=T!IQ1cC;)5vn6e?5C$o;H)vWdnRfy|R&@+pWN6?TMBzLpJS zrEBR{d>eiMi-^>UqD15Ob9y`@L=39w^SXbfTmI)zI+?3X)EXmhO9MK*s`BBc)lY~W zFwZ|bV7xGN_2ZfS7UDo`%zJMqe%q{i+-Lf*=dcee8=I3|ruCu$uN_qZJUd&!vA+Y6 zerLiXhhLPfD>>XGH-RPC*t)zQJ(6@1G8-v>OO(&p9dC=-c{yD4eU!_g)n;o9WXINs z^wEaUjiDyaJuq6*D1KwVR#`khyk#>06;cg0C&SC*{a8wg9E}BTrpQgM8sEz_X|KD! z^O7IG2d;V72DaUrpJ%pkI_RT8yoh68%{5iEwyeFPf|;Oi)r5MM{O?z3$^U^QIY6A+ z{>x8-8OT9evGsptXx*-npFwm-6iFP-D}rWv<-T*`lmP3+2^ z@qfSD8vXNb3ucE(e!=};1mrURudkXj{P!7YuL9dT9_lHc>^lrmO~KPFcZ z&FZEC&rbGrbYZ44_@1jYr{s#sZ?e2whpe|p`Qd%H8F*h>B;-NYv6TkZkg;8z?|X%C zI6TBh+s);U%8X;<`>*XFrmkH2I2MMYsktBT#UiqeGoK(dcgSjd?I!)VhkW4ouK?B& z*W^5o1h+;c@Lw0NH2GT-X!L-YFHRtIpO?+?SX>EYD`h3(+tCl+~KzW-}5w# zf0d`fl-()rTkLk19hF7&GLTCQ*#;&C7@5NmuDk|-rAL~RCuI2gFq8q4LT<~l;ike) z9amHvwUoP)Ck5N@Q+8$FL;n;vKS28D5cZFfzgFtXWh$uxPP^SBH-TwaYEL?g5b|3Q zAh@}X|IbJ4GFF|o7B^rzNTifelApeKccHb=<~B z6rSE82*6v3@J}n!PJ?Z1%O8mnpBHq)(TF7(Di8dRd8HDK*uFCf-wofNDA4$!pU9Sf zg#wMXwoyhF?VGizq%dYgj^9#;bfUSb`{Y07%`JA}6y%Z8LO?c4hyOvt0OJqB&=VZ- zpf0`I?%If=0(6~wn{vjnAQHOv%op)GauOMbTLFbZ9PAKQ8+Vf4jt*rA8Bn}z0=s#=Mw+l zl&w)d+_1L-1U%6;@2AJWUnvV?BXw=+#R2<-hjESCDN}lnKEO(R)n;6aP{?Z29(6u_qOu9tKwWUxn06 z%tQ}cmsL`9X})~KjU05m(NVKe33 zWxn=Td|aZ+DU+)G7Sb{#S?iz9eM#x^q<&Hgm zR=+qO?dQ|8u`PB&VNw2Giq;3f0l7g7L;^qWUR_#BRp)P*Lf0YFl9B-!zX~c&qC7f! zJW-7CyHY+LH6*~}VoJ^yDT3T>xg-|AKfSaohw$~`p8o|B;dv;1H#r-AmjLdd1kd0Y zq211i_9-2MxP2CyR} zTmQvy!=DV8+AZ;J_`LqKj-5oiGs{8%zWou-id18h`sEC-W0Cf3JDXgDdSBM2bE)Vs z5wrJ#i$Z4q(DpR&XK2g*4*>TtQ!5SW+WhCF?-9ix=yxo z@jF(-LEF~S%I!uu=Dn9dBQF=<*+XnxokEH2dZuI1a-+w^#57aTY%j10dFCepHG==A ze?__kz|s*8UgqZJy5UNr&dDRIt>A}^G>lE7w|B}xRbEo5w)xF4?-vS~6E#%xG*Ysv z!$6w=a5m<|?Ko-tFqmCWITV z-Fgw}hJNq16zLV4CTZKoi!L$Nq$FwnCEWtB7Y9=7HH6*mZBvFq&!59Ui%p*>78$_0 zW9bZc+gKP_(%Xx4cv33Ka?)9MUnFo~^kqjg;sSToEU7KJLXg!j%14{n_1pa5AKGd2 zFI?^1@SE5h-~HMwzattaW=d1F*(R{U)rqj9dwi#DjS`}Ab9S16lT>|!^P4tT*)<;Yu$sY zVQy+15TIT@$J7)}+=-sOrXO1~e>Zy$P&1|cKKL*)?wKPHv_O?5zz*cMm+ldP*o%Ce-h4@29Lv~y==)NY{p>HJ|S zyp{XUu6V6*k9nIbLXv!V5O5M_f40SU13Ne`&TaK-?q>JRr@!3%GbwR%L$(C-oZZ+p zaZ|+*bh8RjGG9g|zKPMJ5UxqESh!~+^DA{X8$ow86@2H(FC?EI40b@olf3#rB;v{O zPWn@BnU!f)vY1m#7I2lCG~Zt^9$4y-9j1SMxT72`#%q}kyo5KvDXYS(F^_jHee&zL zBg`{t=($qt^qHEs8yI6bkRAz}zK1~?!1~cvVy{k!9!ZfK_$k1nvA(TuI&|dEn zbr1$2%~q!m!MfPy*Sh`}`|G{IzxUUYrD!S^+gVt)r|A1T8#}>Rz-Nkb| zRer3YWNU`rY%U~xcp}Xk-7AA}zjJH9TPO^?ZX@Vz3tmb*u>2xrtK@=oqKNNPGC9r$ zy+f+;4V%Mh6z3P?#5U50a-92;!W}B*H;{8zLG9c+mC$=Hi9;d5!Sr46FJuAmr1}%7 zMn86W;}CKJImUyj60vLH7;J>OaVNTNPOVmM4aLg7>=N+~UiONxML(U$h+kdmQVXh( z{Ccll)5?kUqQ0Er8A-e5^H7tw>xFZ;_GUAZY3B7v8mX(b;m)1pqH8a6wXMQ(kt3)z z_fT6x6(l2z4w7&LG1^>#pNc5vnXbNMDh)U!z4Kdiuow+FsQ&RZm~81r_SUR~=GQ)L zk#q?9`)TQ`GEW6@CmbtA3?ZW&C>rlo7&J^ndMU_hlrvE?&;*CrO=lN3b!V1?t?uz} zp!YDC5h^K~vS%?Z(dMZ_%B*T&0g*J_#`j$S>u0l>vDAk&`ClF!tXjjBO-z1uaL_q^ z#YlSdMKGXszxM&eb9al=kT4Z$4S5E8B77rEc9Sa6YqRzJ^2LdtBuSJAAvR{cfkE@p zlUpR_;O^wgnq#91&#tVlr3}-;I}QPMkR{r(msNx3+>9v~zstbl#Tz%dJbbGi#scS$ zGs(Ell5ODx=FE@tAjYcZ;0ro&YUYAv{&QV1jLUnDUJ~{<*cx92td5(avEL1As&z=r zbCweJrn${3orSLzl8)=58M7 zS}RsTb6lmc^ImN0pxpV(0&}I>Y|C!CT@efrFkWGJAKTt!fcqBHb;5cmj|<}W7_cy_ zI?HY`au#R4FvE^rAW=4cv(5?rard^<4g-YsyuCGs_1iihrB0F55 z6SndmVkgHtv6979lceoh`PxrCtm{ZNvmbjSKwPTu#eg4?wl4G`P~u2uR0CMjfcwh% zzX31pwy)aXoMG-8+H0G0^wRLpPox0Q(jR|GcFE8=P{htKwgy#+<=1gt-s1o?R~uha z@_#wS{X?UB-|*Baa<<{HXdFo_+wb_VzfK`8P(RuiqfcD)n--m(#oK5zq2)F;Knv4= z4wW5F*7Kf>ONO)q?bGst>9Js{{Q0JiB9Gw&FKNN$g|&<$v0a%qPQ#Q2$`6O9bRI-p z<<#ff!#b~WHi?WwLm<<#Q8ZF%`UvNNeww(G+8c(IpvbQjDF z-Z@>65ah2Wcp7u2ek1H0RF~R1A9rzEuI@t;Wz~9|!!WqKVDtU)AW7CulIGUIu8E}e zF_(m1H(R?&#LVra2YWgfp{-l>uX4Gk^6=A3HSFkTrm#ugnW&Q8H>Fn;j~kE>TSw+gU5^!DkesTk~IMBPB0(RX^XW$fXK1^;Bx zcJZEhAK?q6$10FrF)-{+Ba2Ub1mt;}#*X--9ml7Nq$^<&0dD6fq_3OkX!% z4=^b{NZ2`!>86l0RWK~vQFdyyV^fdJ1UJ@Z`lJF2o~Ke>5gKIOb5P@jZ$2xC6pPY; zEYZ>zv1`{Ad1=Gy$u3X175aU|z~g`i=f^ld%nDlHZcoXc&j%)w>}YCD?gxnuH|`Xc z&LyG&Q~=Dn5Wzwe8!+2@zDplJfab|HA2YDHAqTJgjZb&b`Eron&D!BkUoTgZqm zQ12c>mBYd%ND$A|$x9ECqfx2Lz-4+H&N}qmAK{=2;>GV zwio-)DBom%X!@!rWmeJPj~7pTo6M zq&1|(9veuB-OzQ7k}e8at=y^UZre)|_9>rq{N}Wg-__0Zt*UNZB|f?8#hkc?VH#My zp`^?AAXOU7_wqlyYH#z)UVUrly?|}HL*Z~!^fv!g@Em?233!!07e6`u+ImC8(|EZ0 zQ+gUv<5=`tC}&WwODy+~Ip{({j5YG?5u(cRujI@ipJmu6js(3+G^dD9_yM4;1AWpX zQMcbkjeez18l{%1Jaje8gDjNu7Md2-cl6dUsl{CT!%4~{WJUQ&%dhT4TTYS-Fr*MxQoog4&bGZOY4wu{o5gG`>L97KYcbx!9=N#R$Wwv~I?TynBPL|?%rIC{IC*nFgcvg>>1b{>KH_@SKss?t=>rQBY z+5Da-joRJu*I`;8^zXSXUo%0|Z`LFQ-C4TViYu+TW_9in-b3R(dTC6}w(~c@XRdHIY+WkswqBUhVu3hxw;fdiIy)6R+cpmQZp(AGq0U?9E zfx=~J3r1HbJS@%%VQcfnExUrYzQI4fZMQp`*&(qt&2F4-qA;_*`b`|W8D@zN6h5`% z@(p+59zJD3{6U*j+{sWR3kOGLT{AuykQ=oq(x)JCN94X!#f`D4G}(P9W}V@TS>y=L zb|q(;I91i@j%#ajf1HR!)^-KlLzI8j&W$(DC++MG()_x(>bUT%Hh;>h&Y7;eoC(Q# z12qgdnzw7wF7`lvL7HnaxLX01_gwgKM9-YyLS{T+FKa&9ob84TeyU=4<9_h73J8@asa?7RiS#gO;EM^Jb z8>(za+tsQb8yDw_*1OU@~8;O~p~PKL_&35K=8x5@m`| zGp{!sXOFb9Nwg|$7TE~`)vKCH5mUBb!2I~s)+rwVZowQ>t&Jtij0QJKSq8ELfF31?f0?A}#X8W_ZJd=#y-Q0OLtBSSH z0!a4xx@VHd0_wP{|$VXgdSw6zR;U=eY%VwraX?51^x*p$s1%FO0F%WjDMfs-9 zP+m$d>5*y756WhQ&OOBLm?Iq!VR_W0=#bbxnIcpLs|P9^*BmYC{L*MHB@n)g@t&gfi8<;3;(JNbD)m7tgd ziJncfhap0lAt|Jxf}ZNNcRfapdp~G)>UK@gZwtmM4$7ZA80&Z#XMtp1@SodyR`2L= zWBC$GBTk?Ze#tiH3VtXlnGvc(l_m|yWkqr>YePoQSsO7^CU6w{>!bFdXP)3jv?P28 zh68_0ICJ!j1({ zds=6{J1gLS#D*G>BYRI(j^$bU2+Q?554fQC5Kk`84Z_S5x@WS`IZ3= z>5XNp3)`DA9BB~gnzX4~Z?0Fql&K)gzwZ)xXA+%3$jN;H2oK_OviPK*CxZ-&2kfZIGT6}bXNpjyC&MS@NfTHDe?G*bw z|E-^G-l(~S|HS~BOUWJlGlEB$>{lP(uBAqD&RcOsT+ALW>rE=Ac!zQ47iGv-K z8WN!&<0fXZ%Ni~v-ckJcG=|9`VT6eyPyzWXWs4@ z6}ad==}f^^L3&1a^ye~%iL|pG42N`RyBo+aJ$$)$U8foxS&UEG3u=&)>()ZnhG|%V ztYBfKO6|tO#!PBT+33a~=F*VeHcifS<@o+<$6f7GE25G|o1@0Ft}IpM-P9)_mJrDO?lT%tw1DHT72B2Vu~K--1zqvb z;z$Xr!5f4sy|16M(S`!rBw3O}6+?J;k7e{kR;WEAt8qlK-dO8qH48sNd@jL5!wEWY z7a6$q-bR$TnQGZRx(-y0pe{@J!hcE{4a+EvD$7)Fg@cp(DQX=bxn=WzjmQMLMm+qJ z=TC&FMgm}=5!eERBw>HwkCyYpc?Rn~wU)6j|A#{YvdG#@y}*lW$rY3?FfAf1`# zL%#pqqVja@kKJ!|brUCiw2BPSN$IV`S(MtnJaah;TW_uZmmSn;l0Pr7_C)@$z^VrE zPwN(zqCpus&z+U7c`0HsJyPQ#&wZt#qnxEzYaa}A^W@1@By@=g+e%C+esHybO%L0S z`(!Fax*UgNk2@z`c#2<{;5jGO&MI#C^?}oTN{BzVIsO2G8v0P zn5%;W4`M8$*si=eN*j78ym2GG*TSl8-A?uV!5NuHei7T;^kOa?#NOCEm4%a!n<*)M zq6E;0={sD|*9vDqu!m{o}W7{PR%a`P|Ijl3(5#`61 zd1fQ%ET7D#G68!&SQP8A=W*fn%HEAD$uA;|0Yu#kT1M6?vSlEe41h5Jo4RlYi0rM1 z3>`adLnI}Jala$K^b5676CG&@X=v`NAE=Ug8PUH*&3>1aw1wDx5k3HyivLZ;`!#Oi z1WB{{Eu~hyO#M`#T{z_f2lK`hKvT1+%s-LsRS&He6!i^z>+!QMR=T#QX@?I8!HRuW zEhJMPxy#7!pQFok)!+WILRXIh40#C54SL5ebfq%Hyst&WA&Pn~;?z{7BJX`(b4Gj?aUt&q?9sH`t!p1PBiLRXN54+d@4S5Kh0vGl4;|s<@fV>B zY~LeOP)NEhiLhWA;6H8%ZdqW`p?-_bmA3MVIXv$|P!^|6`M5e@wq)j94}JeAlEHct zk4oe71Riyyt-T26J%kLb?0l{ zJJ!uEpOSUS{jN$$@fxaHA|10WI%jlGs={{r&u+blKiQ1R@vvYO!X40N`kWC;x*6Kp zqr5cs$=xc3?t<%xNGz-(%Txud48JOX{i3Jj9QaN^O&~^ET3SqMXIB~?QlsyBmm;D4 zbGXG~h2rYnfe()_Ihjcw9xF}oKN!Ve2GHL&DWpf>i*lo@8KHE@CvT=`lvNJ52C)+GJ_czwI$+9c2k(@j#?~#w7h=j^^Au*o!D2Gt{)H z-^!fqO>i`oGTa}E=2MHhO6)|S|GpC`YaFxx_9pmm_?bV?`~R`XRQG^K#0so{{5xCR+Wb3`Eyh`&khf`q_JABe>&uT0i65J2lV49em7Wc^9&D~yI z^hO@USW9w>F?}o(Sa`o?d__6H-4rF@pkP#{K=SSdMG(9q9zXLLExv;5wJ4a8^bo?{ zUZAMZeVCkV@`@9YO7+YXCHnl&J5t03qAOW*TpI2~ASFQ{vjp2dj1=kA=Ck`tcvwpD ztX#pb``#=RqJMmZPP7t=d@1hUc+%*yi1r$VTEOom$Pw?2Yp(`i83#uW-LTn!1Ds2x#A)RHb}DzkESS}3;qI~M5sgo><{;w0pEwVm-m02ydekA`MFJ~)I{O|o?- z(*Eu>Ujc5B{{V^p5sLVy4FQnZy;{4lu+XuywlaPNwd;+~-ZB47P?#cAO~J;;#s{s5 za{EH2(ba7u=O10n3Vtvt)24Z^^ebasD9_< zh0yr$Z@2E%@f2&tPy})oT;cnZO8xtdDjKN>ex|EZ$%F!kE?Vik5J_Mw$<^AUso@Rf zHjdzhPd70IgIYg#$wEHzz_a8Gu-J~>+J-XGQz>n2^^RP2mEAdzIFa&Uk^FQ+hA&m! z%(K-HToJZtfnR>IbdPghyRa)uX(i!Vd-m%{@2b9r8mXJzuZ(^C-}GUG$m6%ybZR%A zo9$U84ptLDx2am+V_vy>l01R#;CpY9N69cvFlnP#w}N?5CN}02+RrjsfpCxun$14* zlkQVoK}9K{=8``NLe!Cgam zZ!-LFYP=J@RR=CIuV)+vN^mK9RM}c~0}jaWM2>1zjFZ&-hm_b|xSYZ#?2f!)6+hD1+tE69rEfUNjj0;#!_1ER2tWv}}1BQ>@cE_(G z=Eva#zI)!P7epPuq_o$#uqPs$o;qpiiS+o{dOZFHnBW)Q!_?=)DD}NA*i0@1ZF4yHfLdExSw6HZf4Qy|r$NZ{dgrDBdfAi2^ji1eF05Y10t-nG#AcHqlv9TB;y zqIQ?a)8O8smAq)SU)z#F&IYwd!)N}cwj-e$wpUWluDMl%$*xJ|)6RT^OcH;urIn^p zy~RB(N^QP5)7n6uK+S-n`jB`m!uqVSUykt39jj?qAZz0>my8cE@_ahqU7yvH-<*7n zmrW)_KRItGvZGX5nT~)(6zzo^mEP*+6L%izyJ`&fpp88v60COHJHe@7QCfB4+ehF? zP-@O7MEugc3otgQl1sD5-^f7{)G8l1eEGo+bR0jm%YVroo&SMZ*5OH_B){AO%P_vE z>vz+G!`>nx{yK5FXgP%~r|c9yx9k|5%N#Ngy;VYh6#vAWE!Et1?8?VXK3NOYtS>#tpAMW z_rUu4`Uc0`48Cq9ZQLFKYRa;y`K%WVytjbz%!SK{7DV*ea(=ETY$k9tcjJRQVWJha zA-#v+ttvJ0HF&}Jc$&&3n0 zG`rsvcD7@;%ItcO#`2|C`dCDeUFM_0RQP3gUiie0=6GIkV3&yUjp8c!IM0&u+yv1w zXCj%%70|Hm|NJWhn4c?B!WiE7;}r6mnG>! zZH>a^gCea5(fuAM?7 zbFG_G({dL(RM*~`>m_Pxf7Nn>)?@Om zvd9bkJjHi4UC)niw*T;C2pdF4AGM!xY?uQY*+IcXC~fN^bG66!iM6$fUONb<^F-SdraiN%2cHfCYE~z#Y$^ zBVNfz=AJZekz|9LCUO>zCfrU~74eishrY8aLPiU}GJbmI?JA*yq^7UDPhN;tc&ur8 zM6!Coc>16n?g1TcV|(!HQyiu@Pc~3^%}AxD6w4Mj;1mK!kD^cF?v+40vh1)Pj`TGU zqDaVYGEZ=I;y~CJV`!b3m+}Q*TmTz*12u?GR1H*8Vgf%NlJS7Zzas1< z4a|Bzz22`Q|6#yz?vDlxw#auqy7sdy> zj4;a634H;Sjw^3FJXcY{HIufSW|OR&&x!&<5BAr`~#Ak9>+ymVe=OVk(Eeg=@*WUY3h-v}q1Lqv^*GCdDg_?{Fuj zrjiRiNJumHzoy2c)oh}4;h}X=tQL3p&NVEBO_S2<2b_0t&B%8D2;}e$$;$XZBc0-L zeNXS=?8hs3m+g`5H9|g_M&|Qpxu*j&@0y`w1T#e(Mm?tW)n3CPpI`1oFPxK6;^_j1z1;&bP+ z$S`@FSYF=CH0AV==gHqrK~tCd={I1pFl`czM)c@52Za;``sla31A+%=Yf1m(hgyxi z+Go*{XS(1IyC`q^MDpcKWdVoBIMb-G)`ytWrMZ$H8?T{P+{JmHMzM3#A-3OI7A(=6$hT8lz6<#Kp?rT@S11$~qD96kML%UlufBsGln(gV5Jeg-2GQ~U+<&UCrY zR>N&<`o`<$YLBYE4WPJBa_7Ktpa1ybAe;i&LdvS*D9f=p!hBB}f?~sQiZHhhvqE)I zaIFm*5RbV%vi**tjg+Z_MhG~6TDe!cOEWzsVeaxkAeI}hx%9fxGV!(WZaQy3#kFD4 zO?#u{HO=2q>qOp_hMYpb*nJukU>-n*;L8f$&E8{IDd?CZ>j;xD&LYBWuAV|2;SnBl(BS*~HmsHpx2^*1 ze$NW=aXMr~Yfo|nMj-m>sC|{^tUV$Xd-~+PLur;JiL)jJ4V_0Tw-yFi^>z_oZ{3Wb z<)0Va=P4g1WpnYxd?7yP6?Dkg)rMB?rz~jg+ZNlUN&>2p=g0GFisRSwIF|=+e>p%< zK_)k-e#eO~sJ;wjHiyCcnZLi(w^*#^2HA!gsjUAGNS*E_T3igEP^7cjb8^gO;W;G)qmN=<{ZjQ9beu zD=?Xvs+1S#^*Snq)6owx9ho)}tBbbGc;56-uIvqU^6|+^>}LDmBD?4o8DJ{F+z$+n zjxHIQyDIzm%uxD`4Gs^-&g=A>XABLs`fPK$$5hI*aMMK&QsUw$HmzR|Qts73t$k%V zTbG^^YGE$vgzF?hz|j62I{Az7#C^I)co!Vq+VeLzf9)BoC4JgJdahPQ*q;%IFv%!J zDUZs}p}Wf^RHn_1jLF_Wo;8&fF~0tkcs9VaxuxFSTQ?JZS|5{Lbh5pux%rWwNbilK zA&njm0u1s(wbUdYxrV&Z`{uN^GrnWb4p#-h?!q}ytz=i+-`>?Ro;za`n@F*RR@Bs= zXI}e4vUdqS_+Ew{ONrMmDy02xKHsFNRX2Y>3CA*pg-J3P!}s?ELxv7*~G} zy?NR~rzoU=%!p>v#1f=?_C>(jE+SyAY#ru^s*%7VK8Nov2@yl-Y^!Nb>cs@HOIb}I z#s+X)&vxFl7;Tp2lx-dgAIx%Y`(C7RL-mRZ|A_-yF2S-1gXX4jA^@X%BRgNs(@Tv9 zC6>$Bb0>$lRBY-SDO8q~ea)fHJZ!?Uw~-X@JdPi|ngHy;t{u&EZ0% zPc*x|6Nv^*M~|kcJNZ`HPS*v45#j?Fj#BqN6XrvF0FM&*ij9WvoVbPu%@yP15L$mc zw&vbiK3S;5NwE!O-jBw$N*HH(@}#eO_56IOK##O8WwnklCuG?Cnwt zR~l!TGWgp96E_Usvu{9)wligW0!F~4uPZLNl~oHYlfRs#a=AbRx#Oh z6Wxn{i425x!0y+SQv?$%2xiyr5|}(+!ke(kIKw72r!Qzzwr_1Qf=>ybVV4M5&GZ|| zA3uJ4)OO2E-CU-BukImKWHEE7-hvn*B%sZG(Xu+-=cIp3F z{QVaRaF|3niSA3nr3+{>&sY|h+E&Ja`G+Ue3(EvKBVSm`fn;7HsIim|!fm=A3H?6d z7FtUo<=`E}aqUL!C}~0g#t-zuNMrBq{)P(w<>w}V-jGg4C;JMzwhIlb-h2Z;6F?2G z!Fz1dLtO9$hyY;3?UohGPr0`p2HoQJK+i@mtdve@VDnx=4=rKPR&`z9B(g5jV43j- z{jg%f;fn-5efZW`EJqGfgugbt>u5ZL#=haI#V;lQIx7+bAMP&7nLQXto*WK~;8i0j zN=LxoGUzrB~>s zD=Ee)Ee|B~2qn9vJ#xF_3UYFCPJ1h*Yd0Z8i>DtlL6AT~9nfhTKD2={sJ3=5z%Tgq zq|6Y+U}be2^B9vsLQk6V(phTpU%3IGwj-r&ps|1S_#E*mSO=Pa;vHh`&5uOA!$${L z2Op-&GW%Mu?U#GvY3&#FMBNWC8>a5Q8NZgw+482U8#`G5nt$IV$~c`ZRR~JrX-P>5 zPsLOFDSGBF)?IZJQqe{pd?73so@q!;kz-nv<&TNfYVm&9n$%sOrpD0(&^;9IU;VH% z-Q`TA$P{+TtExr|<7%-9CYmlDx6FjpGk4b3Xg4-_s+i|GOpdV1N9;_%$PWvg;OiHu zZ7fd-L%lDDK60tmS~C99yg4IN4@zG{pF%lA=~4~jV(DZ;jD zdm!CjDJ*T^)l)6PdkDhX#9FR*yuN;}Z3e^mBYp4B|0&|6x26k1VPS=r{+HbQxbgxCGpY37%I zZ?;9Ck5B5T%j}=Xc&m>2=Fv?G!t>pW^n4-%!*=pLU-qZIRib2`T&^MDw+fSS!J%NV zr=(2%cxfQ_40RBvtiyxP44SgxjFK%!q`;ZH$l0pvb{*)>G2!VY%XssAZlWe?F5weQ zXj#AupQ(Mj$e0C(*Bk7HVAl~_10`W!3350#Oy9c%Idyp-q-2MvW*%)~GA@+Xe&FN1 z_+_6$ZXC9iH(4#`9JKlgH**}tv`&#RY|TV`&)@Q_m-lHQOjd>yW+>cU559?xKbS2= zpu1J$i586OYrXq6WYxITUxTg3sl=@AR2&RBbL0B67Hk?A6~zBxP;l0Zjs90EqDh64 zpM!#~S@bh+c^}dQwFdxG8m`bQSm>p8yqCGmrs|0hPn(^lrOzS#eF{|9>m(Xx%053v z1(o9@%EF(D{FssqG&A=kRvu&=Kx9F1e8ojY7H(Wsz+V*eHM;usq#GqWl;VxBTFbHz z19-yaShjOhXhW0KT+eWarBO2+x&G2aRcOI_(p!Ex!`^3VAV2doD-k9??rtk8vD@EQnZei zJ4P(Dh+`m-|D`P5Gk!Z_qSjAB;)FNYL!r(dne?Q^-X zNBC-6E7p&#yHiNHW6HZcZ@$};5TcOMaj6YYv@`PBXiPs4Xnd&=gFPPsZZ(!S$?dc^ zC=XLYSS1&G-=vmq%PBH*$erb@wKT|!h)R&Gex2m=!3)~cvl2Qm@wF;JpU0Ue>(j%2 zY3W@QHdoeV3%zYFps>b|Ky*DJ79H@nAM|~+XAsuyO-G~-Lqx11L_dD?RCWc9^(ousdR3ku1{fs zIdzE05LQ{f^L}j2m#oJ!jC0AQMu#)dORUyq8ai`fq-^;o^?&7B-Cx)D0k3(FKrCk? zcF+fiC0Ngo5^M#OU}s%ICqXAa{;3=SGE0Qv%`4{n%!9g)Pv+6~nVWIe-W~Uj$=aIL zZ|1Ow>W_Y6ZIBLmMVbII?Tc#ctOx`1r2XfU7tGW$4+J76nRwD29pzyo&Hf`K<~PpO z-W|E^qkaA|jMHYMPucSjrwaGZcqC>5BP3V2Q@XWkwAYhAT`y4jOk!)|&V;(AJo4Cz z^E!TOd~G}h2djD06vnQ&pqhGB?1;gcGrdb|qt^^dtTSvp!`_D1lclbydrYC37v7YP zpB=H{l*YD9WQkImXOp9f4XX%V?1|#ji;sdknZkOFu|0J~gX>cb8ahsl_aO7lLbWBM zNu+GU=*;e}U8(>xxCF?f!J8i^Xm`CM<>mG~sj(3i6$@6pk}gU&nyHefI(P}8p^4?E zj;bfXAm8K>{+9xAf1O(1phUA34VdssNV zjmMkvWSpdj>jar)GCgFE&4Ii)mDnRehO&|1Pj)gvy!f z{d&bDG&RjYDS+L7F)#^+GK`nBQ<*L$bZlE1q3T~TAL+h$qd(sDn`m$Jg)*D*ZC9pX z`@BVwHT|S7MepuA<#kPr-)BXdznuD7{cKO7%1^AZ??oL3?TpED9FUz0L)ndR-9*>y zFoit>z40U@#53`X5C70`FAYkPoO)sg!Xp^gX4U1(m|JQ&&$8`vJSf?};{B4_wKoNGaq& z>OEI_AdvYZafRsq{C#szkqjY^tdnBlh*b9HBT~&2Oiw6s*)7a{R!s{(XIpWcimQI5 zTg;%Iq&w>U%;NO7npGF+aLKm|p1x7AX~RWBqY3?MbfePoy4cBE(ivwfv^(M&3oSOW z=WT~_A1PAyNOmP@>Uw@h2U%>CYGkF8r@&>rLRGf)EEgE)h3*V1AOeKs5*EyTDcH82 znqM>I-l6%xzJeh8w!pWYWgjAxl*lsaXK*aFGPL*do{@t{l#j2&y;jt2R zr_toF4EGlX<7(_%4AP#^T&Yx&#~A?vQCfR^CMQp)lx+7fKq{YQc2;Pd332(3F8XdK zt-!X-`lzWT-eW$q1`D&SW4}mB>eP0&Xwi-!z+MAEgmpMAU25)b6d=2_L8I@wSN8e^ zzXUAq)A_B^EL;d_0^bzVZB-RJw&M2)u5wI4;esb!;FI`JYNtjay`HixcI~w(2~Rrx z3NPIut*j_!-4eSrzFy(n-R#P4aoy_st|2wPAN2;}WZI!(1YlvFhOY1IpLQLOEdnA^L+`!!9v~s* zE^zzb`|SOl?f&N6x%183Gi%H&5{gOQJn!@T+WJ`jlKnf)bgu8{%Tvb>#@ObKUxOZz z8Ov@Q%Q(TO`d{Y@HiC0NC92=Sn z%g2*f9Wy=FqOKUfZcs5L?QlTUc5wX`K~>u$TRw2T>AN))DLmbotM%1Z%zz(>UldoQ~~}S zT>heP^}hG)gu8LEy^}Y6AA#v>8;C6izK>TWls9D5r`gkzIay~*k zu$O0WA4TQ7bGbSwRu}Zv_J7cdKUnGIi**Ye=#1PCc#-2jZOc5h`uzcgB)LucH>-!- zu3ITL^*&x;9N(4*z<&wNmmb%2pAaVswDn#f zoT&#av8J8*2mXY12iyKZM`O*DK{Xms0oNUO%$S4idNTz@_V9)1i8Jmn6svpv>D*z+ zn-!;V(T7TW!l-Oj5a4yq6;lsCftJ@9Ze7nGd&6zfhZCRaW0J2>&6~nUBV*^Qz zaBJp|?uKDz6m3x#IBYjuV;}>VKN@xePmB8m_ z+=v-oGWh7}K`f)U~^l+s(rj5G&_4+O+hu;T$#Mek;j?90t(4 zr84cwdg;mDD7TW$^^Kkgkld>fC!a`yPosxO=9j(X{31@eLMY*seIXKVhi`G|R9(3F zaYZxtojybh?!c<#w^yUEAK-Paz1Gy)^9bsdB{R52so8Q_ND9x{y7x2-Nxjpi@BpwI4+aFEc@7-#@m^wG-HXF`xd#=trDV3?tk(J)bh`$86%-+TXI|acFluGr z!off62v@c#!1miA6@*RLchEG__|?VJ2=HwRN>`y^p~_3jJ&vLPAoOoB0vr zVEB)WLwFv*I8@ySWUiqy-{VfCe8e_OtR_Fc%_LFcvoIh%d21aQryU=dWl}jj>X4oR zI7LS8pB>^jUUrjjof8vqo^Mm{XnDScjpgOp^(!PSAUWwKOM0nXg-D{$AfnGy4X3$GRs10Zr(9kf*~VPSN_)RgaiL&T{Gb)v<+Dn6bQlVy20TF_pBt8eaPob-IXMr9QSwVEY_#%?7fc+8Zvba3qE^xS?Aj1edkRIKY za;pye98IafL^-E{%Wh&TJ%4IND zveBofgVIDC9o(d=!4cZu(+Q434iI?tL`X)A|?$s;qM(N@$vmp z+6ht{73^2K@h{Jz|s@b!D;pY7P}>p6E9Ct#5k=W^T}?N^`m z_)6mK(W6)`QR*Ope@DJaAPZt&^LhT#T{vVOCIL zk^qZJ*H}o{l>Be2>wef#hj|_puW*A*`S>j9b>8=*dtSoTuEvpa9G_|2(|vq&PwHh* zXr!E@>E_TvJ+Xa?*uM#{*~a@Gv&cSAnDX1&qpWb|oHF#Ilxw?cyDE(he{T z+cS%+BvCQF-B{@(J#i}vplQD}vEe9r^`6DO$FV12LQbT7RRO0M) zBXfRE>F>Wv?l7I|Q{WJSSq*x3%E`)9Ag_)|zMxpF<*)9y9%p^dtfI~iQPo)<>9y=Y zE}fCGS=BXU(gr9hpWycInBCpAr;AtEil9Y=;ZIa{4?ZiNV?2wyl2R_#r9s-!qWw(R z6nQIO?9Mz+-qJ@BTu|!W+O&Juc`JbtxX$PQaz2kC*6fe71dzwmO*$gs1D?L!PrvMR z1+b+~A096DjVCTnKx;yvn4k8Q(|)V@k(uZW`V#DC9p*q+c2}c8`5QjuKyszl$K@J? zbal7WgKaf&9Jfy5T;(`PJ`1Wnt7^CVra>jo+=PINt`re;^Er3bIFuc5a z@^N9K(fD#RE}Nujn%@P@@3NIp?%fLf6!7B=E)n2U8r1>J->Y*Lu2N4 zS}&;%Zu8|ueX0rkxc0G#OjE^)g1OEXzd2iN{jEfpZpc0O+PjkTH&#>b!#t=JnGv~^ zjgqL)>6DsCIq>_9r5~6YR@a=MRGEZ+uWfChv-4aGBsE!m53y_9xxd`j-~BLng#y1i z2gc<(gZ5}$C@$}*Z^YY|Qr%I#yr{3Ex4qN7wJ+y1yz4As1zIZ}AQib5Q2vJL{e~V^ zX+Rkkums>15kFCuL>NYHBH0&1ALuT5Rj_FUYU zQJ=M-^Auh|sqdM$6idvkyqv_jd}@q@o+W`k06XAzILCS z(Tp*g)pgme`on^p)PnFAo@y)JeOumd1`ONv*~XnBK<9b0kbZKIL|ib69RlllEA;)-YoaUO!9fJa zPJsIz+B}9Ee22{t7y(>F9+!9h`Ju}wYydf|Z5ng67;1+9h8JH)O7ct+&g_FLU=Lb3 z*5R(iphGVD^X;>Hqo52DE}wc1o{r2*TmMhg3AY{VBIi7c9Awp7A+sYC z$yVq!?|R0il@pf*M1Vz8L85|uqV{8&VB}I0UqKQ|MQ6FdvLpyF<_EUzAGiOqGDK_o&2}&`FRU_QQF+E zWj`+zG7^F&&hI)PVl#rbC@krpR%EOsW+uC@bzpHrH78O45DjNVf(&et&e)sSrArm{ zR4aUGxyQfTT@I!S7Ve0_g?tTmu9~#{=p;jH>cU{! z6dz2PtK?LuM*SS*NFOK;vq&9DWhl%CRV`@D)nwb#7b|TOE zr>b>(ESs`Qa{s{gXOZ0tFllMRIE)w|H4`B`de8|?VN_w(4-O$V5WUKXGq?&^LF^Y1 z1`HK&kYN-Tf_O!?Rm5O_VI%DVfRI^Zw5vfK?%aB$N28IU%~H$?=A{k;&!x8h8!oaZSqKp6P4Jqg0z}XpV!d@se zsY*x?Fkv>;D+6t5f!SZekqo#|lc)Cjxy^*BQtedWUvsTkVPa2D{(`lsoi$=|3+F|UP1BjrgkX3uE(n>sGRfDDs7~GB(Gq(rl1$THy9utNjSuMkwu7J!o zRPgic!0oVC+rMC2dE6V+C4<>dDWHm?c?4k@u?QieAxpsGOLv?3(e;X+&lVoAryA~X zX=lA^qdS60_(2<&+}0WF3X-rw7gzcya^|hYh|gY}9N5Lr$}b49v%Asogz#~Ju6l9B zM-`s1#?8EgFnHitExd-RC880q)HL7a554=6a(iQ5km<1qj6-7KhWPZ%0FodYfSX~@ z-I{6YiPtwxGONbuZ_zK#5P~ht-&6bz_`3o-+jin7{3rayRTxkwcV6o-HrOV=7~Q^| zbp7OCpoZ)wJvZw$eqFnJ{=6H;|3+Q?TiV0w;vF-oKrh#=|KxhgPUa^;S=^o1XlZF_ z+WUF|4?mXN>qBkOPi_iU`*K}olLiLI^@Rq8$?rg+c-FpPV<1J8LsRmiDf8}vp(l-+ zI~b_%JH@n&EMc60>5$deeQ+?;{L(w2n_R>d%s)B6(3}~MCDv_y!&w8u-Fwl z`8$IjG8guW;zBXO1%5-Lo3GwUH@GvClgWtJjQp(cGaq=}uPqxR48zELbxOlOp?=ffF7l&W7}&-Cz);HhNB!MyXb;M6iiv+Wd;=O|ZH&M7TJwF?z_>gYR}a+= z)z(gZz(f`pMKE;=N?~=)GPB-EZgg*(#hj`2sIxZ=Fm=#OgoV8Iotr{tf;;l)2TS>l zHPwe%@OHT5gEyqzIF7*Thi&<{s^SRSR_X3H58wiqSk-{(5*YkLx^X?5}Y2E$sRe{Ot;OoZL=iko!1ipelb?KG)=+Cl ze_jb`Pi7jKD+1_6;f{Cg*Y~+c{X!R^Yu#h@eYuGD>tCIGQRZQXiJV#)kiBP3ZwaTCL?(;w=6|YL^ z8mPWo+x_mIyL^<_mJHLxfxAav+G{}L1!xoWD&2(0yvZd_#H6~uT{v+W>H!|V|A9n> zx>p2NL#9wH@$b`#Bb0ij*=;d1pM#^8|jpj-qoM?WP1ueXMi>ONbO6 zY4jtHUwy`54F!Tt7F!{NC-vvPqcAyop1!fSTT6V!nSPX)L6pStPjBqAzvsH z`lCHJmpw&CP556AFyhSC(}yqNg}e0@X>m?5OFhM_3U9Q?kkCnO$x+_d;zfzD}pqf*knHdF9~)qJI6f$PHAu|wf6TK zGDMEJz15coQ`g84ogq#0sV-T!R48e(4u0%_61HFhdFBB;qj}8}G}~l>I1YJJz7%tt zi89SuYMG5|t)USdeH~8{U~s3!rb)^_S(mSBL!%s)x1=px;PEeH{JU0Mog} z-ca8fN{%j^X1yoaK}@a!v|&aZxv=%lE2>&9g?%rSI7Q$SRGCFzg@+ZZx( z3GQz^@9h4qnFi2`F9umrIg23N!bbW*n#!iAi0wPtjFXnG#{2P^8=QkeSU|*rqY~T* zYM|Iy<$xS`FFa1-2f*sU0aL%iQwSlL3q{JN`jZ3xuW|_)4zX=0z_H2$a9t0i+$Ad`FS0D-t>A&D_jeE!(%3Jq)hexxL>C9QKmj4GEp#|{ ze`D2WXi{KT9S&nf@TIuyCrYt{YsJ+^V)7vc^$&3JqaXu#m&_{7VXhk`Q4yDotj((c zuAAKXlf6X?AdXSa=RvrtylQ(jN@ofF(@qc|vrD;td!r^FwoT$hwU!0K`>*-EI}b9x zvNIV?yd48`-dSiw zveMXcXYwPn9N&a8$N-Hz&?TKnkQGD;NA$RxwjrS=X2kDq%NY1f!#Z6f{vx~Y0!sn> z5y*|mA8vj6;#I|3&9&H*iA1uk%+;Vn@Bz&!@4#|3$0VWFxneG>drGvWn~K+~xrqY)BAh-qf_cfn1{6EK%+f zmL1?{`QzdSW;7rN=f^ssj&>gB4og92gN1gy7b3KaHcv3#6v^M;Cs3IL)GfK2tWirF zeA~s8U|&i0^2U>($Ja*$-mA(ukCgU)nGOH$A&Y(FWyF;#<>GU`53)E;$I- zNN)^`A9Ek~etLqfU>e=C0JdGsC7_^9y>!wB3#r zc70T5$^P(mgO=pLs23-GiEY2fO-B#`w|dN7UnR>^-!p^Px#Ut1kvlK^dL_5dixI!* zD@sC~U;>Cdar()#F&G=i9Hur_dQ1j7P7{1H z(S*VD!;Y?Zw$_1c94s1t&;-)T_S`$Y6-PH*fNlC7U2$HStxPSQns}9#v08-E#y(i` za;AX~cOJ&=fLt)5Iat^)h}G#}65}dQ9sRB@G!PCCQefjt3}j`qdGO#_&!q)c3F zgmDn$Cb9D(+_jc~MsRIioe+;=5s#XUcT$3J+lI7$t|NZ*hb8NsyS!_T9P`I3;6$u~ zw@>^c*0;AF#~ghiDK3EkyVklZ=d#4`>_1a8BQwlGwtv9Lk4%iX#$bP@Ym7RUK*8O3 z#&OAxoKL1aO=I6-xPbsX`<#Hiq1@hc;%T+-cq%VJi4b}h^!n6Ny42D$Gu;Oq4#@C{nivY z_Sj?SxVE`XxM;@^M*m9*kq;fRG=SoORW;!_Kst5{BOl(VFW549l~->?i(bGHG6V4N&5 zQ53w1xri==sH{M%Vz6Y66EDu?7B@vScOmAoG!b%O6n?~IDRp0gd$kJ0Duq4GEWG?o z<3gktLA-yz)5X+JJgL+45YHv`q>Y<7ozI0?C))}CZZRIsvWWI-Xj3?g%We44`TTHw z=nZYWT1Z|AQ2@pzY|YVr09>;YD8!Ke<*wq5AukDnl2gwJo37 z0JOA|PQU!L{*Yue9$YG=}(}W}N>2 z(9ZoMWFd4XaP=?CB*gn5k>7a^IVY>Z_7K}rGF7tVL+)ag%;ik&UG@#&Q-7lYo3vi!klP}2(A|6afJrf<~g5ab3>0!TqFo@X<~x*IX%dOYx*G~oGT;+$wf z#OTQd1SZ&;y_)zzUt6={mGAoE&st`Fx|txFwA4LkcRa}Z&_>hYs|gy{T6Li3ch|Fq znHL!C0a#`cRg`ZE`U>lU_hoKjyf)CZ1MCCHrP?$5G)o&W(~e#t09FMwiW4Art$Ve} zA~%|M`A!|HVjE6Ut%F>N=KqWSl^jEh>8ZGT!;be9a7K&ya^dDL$CTQ?Bt5toH*;qd zW&X(wMCIDc`I%fiL0>!Z&B9FaiOc$`XOtjeyfGAP-ex-Hfj2A5`p6QOW=^CW;R$(- z7S?_XH2Cup7df#f;}Wy_{gOO{ZKXB#(cy9MhOU$*i7a7 zFn2DM*OGM*hICFw&7izu*JMGvUZ?|>MPDnEr#6`Aql)f13kHb}s?TjpuV9-kT?u2t z#7XP`K(mJuX9$qb@@R%*#zHrmrR&ZyyMB?n&*=EY(~)()OLqL=JrP}(3m~8^0AniT zNwwz9YoSF5JF&bu3!&S!p^0*12}j`u<54QC@l8La6aS5kxd%|IL!cN#{4EIM=qB0W z`S;Di%WG?zf^Tokrq?FiZl^i<74hYZ@Y2VRD7E6^IMNkRi`k_XcuaAE*2x@*Wn~}M zFwKkbPhNHLH){)+46ZoT&%*VA5;K{hj^YXH%AG(9+jUlRYn$xUk$DdN<)%Q;(#!cCS|~-kNeI(cnx-T9d}>%mee2u-iFM~3VJcTeHT&A(A(U4Fgo?7a|2hxrCHR!8TI>)j) z1Uf`WIqE*SfIcVYLlto19LSMWOAl{(*;BLl?b*x2LJOgCEWEf-{6+mv&?IP!MbC)~ z80T!fn%UQVMT53;kL+t-YPR_HPb8&$)A%l+S@D(xyIy%&SU=AH^&ohnN3=bLJjUlS zz7flEn87`xvdJzEKGveJFEEa1Y=6VPK#Lzdo4Ij>SO0`-nO%Wd^FKQT&w{x${`NYY zR2K7_K4kwTiel1O0d#t?6S166-M+V^+a&;&?eL}W(X#Oh2HH8+{a24I{xb>G_W6#0 z!TL`?V4<-I@Xi7Yxlg_f-G3N(FtmOk=_q0< zpFJ8Wt9DNFOWXEs0}aS*8Tv=*TW+N6lHw`;KV*vplS@qX=}yIK`el(z)VC_}*#j3F zNLW+{-sS)!PFqaI4xmg(|81}jb)?^u>Cu}`2!+;?7u4K@Bd8CJ{0!LkTFal6CeH1Y zhNcl!N!1-|m{);)1z^}cYZFjaP}41Hz~t+jU;|qJvR5XvyTfm`W`*&08k`tz-7bRs z{#C>;M`r%S-)4Ry@CRrP=ZwAq--H?71OXQR2I$`c0K{;p|Fa)`d?du;Dd=jv^?%^& zr^uD@k7ISXxnTk+6x>LTqX^u-qw|9=A3i-O+i3scmb&)>_(EqWeiCFS;eB#Ccgxje zTi>2*HhSzD%-zF-GqKvPhWXk6WFGX?+K<~`qo&+*B+sXhGb;*au#p`-QeFD)uvBiE zD=55d|NIs^PeP$D{y;7o0px5@R4KgoLZBdrZI3{wmO(}A+g$xeTJGp!O|pLQC}>q{ zKl%}|m|%f#!bYRnS71*3-+&XiY&vvxdIG+c`yCsKcCjgh9q-GoW&dJQTv4IEuPv|g zhpF@k4P4=%nVe03H-~eJX=Nu!LDGlCznwTY~8YqP(<2kD@7NRMVA9X)+dDojb$ zIO^E3!MvqYVmfq>*>Q{Gx6>ZrZi^emGg_TAAQs!UiyO?C+>aAsVBmQ%1JBE*@9254 z@3Ti9(tHPtQvJeWufTL$nW;s#DUJ^n4i4SS-%9+CR*|QefsM}M)-26mSvHcc{Oob6 zul;^!QY<~UnRI_yqMdzp>qGU^e-rys`;{bg>`DYT&E&xpi{QnpcjEG6_HPN0_M&N} zaFZ0m1rtL%ThCY}UVw-5{{CR2SjORR$1Hjke_{|*^*@1y~$ohvZ}9SUm~bTb1AzJ>8on+P@?s41{fFB=?%BbuOsBE*403~r=3fXt zOYV)04+oRyv6>8nOj}&RC!2k<`;j@#@#k0DFi%N4_EIK35jo|YX)XOaP%q?Ri?fih zcchF^Q6HL5ARKJ*06A0p6Ed|A8U-~YuxX*Qt>=lGN3I?&kotGOU#s*rXqxF7lH$05 zA;WO|{eci=!W~kroFe5TayAYKjuKLh_=hpWG~rwf!$*gaq6RrULe= z@r{jNV}nV|KO5+3YlBq&gWM?%(x}>dN4Zm?V$pk)uG^bka-QH~L%KITqyd98ggDwO z1f;%R1<)qay&%V0O+Z|s|2uG8>;jGu#z3?|AYq$i>>Ss;d}x2-?RS)}Sq*lwc&C7x-I-6wOhgAUEmOYNvrAz)MfQau4Vzrv zDpwp@E^c?|U%)gMyrOuwzKj3MbC)Ea6Pk!P=F+n+S6UXSl8ZeTvOi*%qE4gb(-DLg z<+H4IvPM3iUrJ4*Fs*{XLa}*zak{De86#g>+W?#KK3GVl?bk-c!^w;552pvuJ8%$y z9}yZvl|QrL1HNn^%KSIK{7lmg%~Xj_WBdUVz)f5xxKIe1&paI9Pp4I}T(kNrb2x`djfl$?d|S4W;X}~uy}+M3#I9fpe@-GdAqNP5 zkL&mE*D4)%xi8_{OdR2Nf6sl^!P}RAZ;hCU7^Q14e^(3{Ag+65dlc+8bQRbP!*>1( zXaY9F`2T1#lmiAH0d06v0Evx{IMXp0WA@{3U<_3N7nAf}xhE|f@E=Wf4w(Yk5#l7m zN?*cFgrNyu{9u8vCWr#|v;8ZAJNtmu+J-wBh|ww)==lV#5Fe{vcb1y(m1H^yree51 z@*Q**@qRgTyfnJ2aG)($I?e9RC&MvC)o%u{5!<4qC+Cv~h<9 zAj56Av8X!(d@Nkjtw0YbY*WUyf=Jajs9pAjuz1Ou_zbGLr>0mw<|-r*8ha~|r?bX1 zXvW-0Q)}+*{ani85;xY!%#toS^4A8ZLkU8sR!u!gH7j-LC-YccKSH5f(nq0Tf}V*C z*hip{X)GzR(12ts{6Gn(CiagG+T$ThB_rK8{I~>vY>Kq~HFqA{aTgjQ+5c*?hGLG^ zRnOm>tTk_4BcF(W+g|~(dOkop6QYm)1D5o%K3^z_rhu-Ci;Hia$kam-3KG!UsoIW? z4$`GB4;)v40Y6$s1HeFH{sF}TlLxPqZ}@?Vf;E<-`x4>qE+@7vip%@S%gdj|%Z)e8;YVIAr2 zt4&6>Cnw~$F8o;WSr^}BhVw;;V`=KWIqbQ1a0`*+jEfTx|6qWxlBHyJ@0?QU>Qaf$ zu%qdK4(nzg$Mtkb6*~@ncE!rxJ4`ieSzIvR#TCZY`~`sZ05h{OpMEH#jFBq` z&8(Q?Vx-(c7k2xb7Tf6-vi6Typ`4QSFEUF7R#Y`xgOv=NvM*H4X0mI#=m8-iJ-JwZK-cB;( zY$9u`t@O#NY#YN^Zz@gpn220yF?2yrzThEcz=ksXJX5INwo@v zGa*gtnF8>au@Bdemc$jT?=3(KsR)I2LhIbyh$82X-`St~XQhOW1Z)R*Y9!L?Y2aKD zkn3>d0_~Y6pFhfY_>NstQdSHBT%lb3-~xDLMCbccE5|Tfdc+aT2Dt}}mruI>8ZS%O zo$S1LGX4N+SCLEjmu5}g7}~l~@guLnUhpNL!JQqm{YjrlA^hOqg;3&@4gMvBa`mpz zGa%azxruc#P-HC8xG@e6Ui9~M$Cu|Rd4`5ve{D+`8`Vs0(#V)=epJd%J3PD?Nx}A$ zF721~p8a(OGeTEQDLzaoS`M6B-n*ARWIn@6|6>O2wZok3(Pr6QdW-f(NjFEdyUn~L zaXr_rqnRT6^XDDgDtk`;rAzSTt{k(bVgqS0DbYUV{C@uQnJ;J!>N{tMZg?$a?sP%z z@?g3330LAU9dj4X?uZqqnQl@huLYf+IMu{PXBiRv%YJ_5jCB#=8ZZS&h1Drj9>r}$ zy}JU8hu2_I&!6LxN=f>oY5eiW!%>K=*1v39*TV05WdDgzNaXu=hW*;k9j#AqOID?} z!|pzGnX8Kc+98FfyE+Ce!^XDulQv8=AtLuXBYc4 zkJCrCmj$qqhcD$*We3e&^Yw4A63LN+8Rb3c()8*{LBU?_`OiQWN4PXv>2@`$7nQN^ zc5*xOY9P6AV=u|}TBwy!F%Q+l?(Q9XrJG}|g6~yROJlFC1DA2THO?rf)G&@?#P)No zd5d>Vv=MZeMRC;FX7rBTo=2%<8UG_C^$uw{rmBSwEo|GUp~3wT&hSN-`4lY*w?Z(H zW%oPlKxePdgt{v&<0!Zs?)6wFyp8KM0%yiee-AGuAsVLw%yLk(-c>F^k^5` zYDe85n8rjhxTE${t-jWv=;HbYgucJWP(d|vDb!V2X zj?h|V56_RCXnr3>RMr0gY}GK&7uAVb*krtPTvX5j*;Dgbv`3|r(=XP!ny6b~gDHNf^>{dW>$UBK8l`9EOdKtQRM zx2WE>{)2xBD0Rut;)l3H!^{5yHrHM!wLyk}=I1wBx$3fJ`6a#}^?vDkCd)Ot6^w>1|w0$$!obrs{B z6E95vHeZL#x^0h|aT>ucHW34E1fVO2rBgmVDoyB+O@mb5EfJ$@OL-{x)(*L}P_h~E zV}ElB3DX4fMs=Vy|+$m zs_^}WqR`ap5cgxx#4Md>%qBs z<(gLN8r5)=R6?wIlSlUqpJ2}IhWghoa>`$#QXft@EnM^6&2G)({Hb$DAq}TrHU9E= zk6zc;kf&Clq}r@-B5ZV;AMiXlY$X5`=l?zb|L^M{@hfrnze45(P7ICzsk8&Rk?yW7 zWD-7BZ{}*k3(<4Y!$4`5>3p-*vYab%g#PfhT^z^goZK}B9e|n7u{}Sqb3DU~;VY%x zZgP$R0gzy<`gn;cbqp}k!6m=Q($(gS8&x^=Rxe+C&;;x8h3sM!FSL$oKYPkW(+}m4 zh3Rp-evlxQBT73|ExuJvZGJP%2vVcUExTSqATjFa&rQ&AxMVWfUE?UAS^381R?PZ} zfjpdf=-^wxSnJ}VYT^wG{?kg*3w`097v(2((!Fif9>`oLm$*!HsIsI;3EZmBFY2H| z)T^x}GJ#*&mE9-K57^>2u(t4MR*g`$5-AP7dW|Ms#3tUryU2KQlxkI7lWf9>6Ju*deca!(>`g|6 z)@v!2vOcj#yq9vGc)kFtMa`fly1HUgXfeVy{$aAQkde>xh~_?2FD&pZFcb6Upp*&E ziC3WYSaM=lvuNi}WXqNI>;3TO6T~7>AX^`7`r-MZcme1UtdCh|7f%W>716InVn7b! zAAXaWF@}?5rpGbZ1?CQ||4iFa)egU0UiuTp3)tVg7#rk(D;g6%%dZ$nJ$$C~a3YFJ zW|u`g|8X4e5w6iJD6NN6E;<^OKP`fa(P}u;;ksp_5DbX;op%_?0NSToZ4h1R&rgCP zZdVJdYGj8isQR@Qr!-8`b6uOs@!?xrAA)gjF%&D8&3YSu4U3pDV()vkT* z>5>@(@1dw^eBWTRwI+8$_W|=F6Y9Dfsr>ozknhyN`U zDE+AdJu}9lY5wor!;sR^SS0si9yM`iMsw_*(3@fN8#=dW z0e5B?M81!K@>zl<)iWV-2{fyNcfstAi;q-5K!N~Nl?qb5)gKa=)?;6_dGisIXD<`P zkNTky@*ZhNPTJvO3aafBa*s#85;XkjG@u$L)570dxXoET>|nRnXWHGg<5HdRu`I5A z%RDqimuvNuyBBKBefwUQZHbFq@!P0WDbQ(V-^lSNZw|nE$ha;g$iYYcT?&1|cXYlr z=@AdSkE(!uN)ToKi`G(B&QtykkpCA9(J7UGAPZ7Q0M7qp;9oitHt$nvq4%itm@mRx z{;ik<$R!@6u73&O6sK8?J0hIQE1j8p&m9;{&7w3mDL;HP% zf2%^Tx5tA)i}?gdmsKt+v*kk20MFLA7_D7nPk9fIaiax#0yp8_U)&R`z))^xt-!7O zRgwPVNqjphMBhlYPNRb_&s`pjUCwRuEX|beTU%GU|(mrDo2lz+InB3San=Gjjg{o zx<7f&oFYZ5_EKTV;+CGfZzZcXN1f;^_ngj;o6EccqpHxFJQFrHDan=tFc5BK8ep9h zdRRUQYuw`aac+%d6*9oKiGCrs3V-xIhK*T(l&FNW-ctmdWF|c$UV&NQTfQqL9p>ti z9)J9@roNq=ra*!w_qpQegf3)UIubQRwINA?oa}r6hd{dmvOY4@LJv@1^99VD zBHDc>nYOY0LBog`L?f1_6V9(jtOz>r!$Q_1iFf2+D5uojB%gGWm(fcD+9)(6E2fyj zD`2eGXZQNYbfcwt2>$I2_DU|NznM}kUsAyit_R?I@1H4zRd09317So6^}B1~Y}vuN z<=5Q}wPWc%2C=&KzL;q{Cm~5LF%+2g6%gcmg*;Bu?tEIsyLiSXoMCcP18}#MRl72l z`ul1Lq1@KQyJV?Qr-Mb77ipwVv)&((zc+tnKoD=7r0_n(c^KjO*#NoC;@&M8ez9{k zJG!SlH^Pqlx-O^?J5PsQ-cLJ|f+UMdnc%K0*pnvJ?P6pdQ-ImdgTICxiIgf}Zy;z+ z-j-jPd=y(cau${`zXeD`1=?x9l}X(2+n?|K5`L%0{2d6IKWPJaf@9PF{*kOm%>Iu& z!9WB_joEM@OS^;dbQBsK7nAS6RjGCoP>%e%#LlH&hD}fZ)`F-0Bf3R|A({jEWiLQj zklQ0Yd3F}}*;*e1T)~tlS=5uVPrNQYEOAsr9VsShWLqD%1ObQJ!0+ym57xd-1B&L} zIdWkmNcFp@JjRcm-^okn_jVR1+b9O_iEDwPK6wWP&n#}hjaB26snyThT~&(@Omfx2 zMsHGnOlWRi`I2=IOrZe@)e~G)rLqp}$N}yzjuX)A@KfSml-xhqq~v7_r;6(3`)n!x zP7@65lsX3Zz4gVG0xgmJ>OXx9cc{cEu(tuhe`(J3v zb%id1(4W{kIh|*jg0V;JLnMEOQu*mn=I(k{k2)kWM`~%(R8emUXr|z?5OqPRgwfxQNdi9L4S zk*#zecY_q-OU!QU+ISW;1N~3{IX&ZK!D$5aK^4aF9JvG#&bG^!=Pl52P6A)UXV-FO zp_kJ1hUwjX;+m5C^b|+lM!WuEA`R}DbzA=0Vx0e*B1J8)!K(|;f|?m72T_f$OE$Sz zErGmXRc~^7b@8rkv!+>o-8L=AooG|ha6{!)RhQaLDr`O&r9E(G<@TT?6(-c z*C~H#GrNF4eFt}T`2bL10whR{-an&BNZAjn|E!@JB*JUFo`1=Z+HRsEpUb{jw|Sn! z(QH6ozV4F#eb5Ekw|5CF92dVxy*OWYKxWl7A*9T~{6g)Si4w>BRZ5}jFcXnlui(3# zFDsp|F>6z#x;4^UJt9}Sbjj>BBz67M`f{ZQc8_)Zfw+0c2dN3EF}y5dFRjwU*fcIc zs(wMWIZXMnXiaZSwfbdO5foTcg_>W7I)5pPwVC;0&jr&Q;8s;SRqNybu1`YO7^{u+Vt)0r}kUsaI z#1Fu2ca$aYt4|C5zx)S;nqoQbDk+hlQcWK?tFX*d&UN=W**SV{yJ0BR%_KC;{NOrc zO!nY{`&%^5_@G07Bxk+UuJ3Wh=9};3=HaRg|=Q02@!vH}jlRtk$RW z$V)XD&IwE3dV-?K{3%OE+SK&%I~&l5Pj}; z6X&_x;|m#qJLX+g!s%yg!XHzxFokgi_P0ewwJ1=e}*BOX$5y?}QLq+TG~)zTdh3f5+>0#yw};G48!%Fkq8pC)sPS^*r;LbFQ_juJ=&~ zWZSI3&n%ZbP9B(kkx9+RDG+BPfXN##yLDcF(ITNWE(@id0krP;#szD`R}#|`6KV@e zgG^8flB>Fjs+HgI*-n{j;h+?v2tJi;0|UZf)qrbjTCYEF;^4P$gjc{h3u;ymfOFPH zMhN!{@24QMg+2r4xY}+2UYW$+qd}%V;GCKYGzfSLE9~08KIbHDAELg?WrpOx4Gn*Vc`C`d3A!fR5I%6kByVZX0XO&7a zqH^$3^YGIdiBjl-?Q%B&r=KZq3URpj(Lzvg_( zXQsN^n_afCGCR~Sb{`)Os#ecKUrOu!qFwm?U1#F-VjM)j9H9ne~(3a_@f_><%MYs ziGm6rg(YxQ%1$S6nf>voh;cY%~w<`#lERs5(HP~;^ zs6CbD{0TXPm}l`MK1pR}(y%-2Bd1cclHzowuvFg$Yar4i7@|Ko+#Y%-^s4ldzPWlAJPSzUvQMupEI@ApBSRIw^ zSSU1dmAD=@aY=$ba)wRtky_)Cec;K2X!g; zL0T-dwW@h(JWzc0f!8YVck6PHcd;Gsgn=(k9F-xh77(rM1|OQgJ$$H`mrVJu)@Qu^ z-ER^DTcxw>d};}^MrDi7ePywodisDp)kA^@<0|7l(502HYhLHv>#$MbK?d1qZ+c~^ z(Y9m`;T5>Kq!&N>A}w+kqT&1{T2Dp5?M5~$SP#`sCB`F^lQ?|PruA9j)xnrkPQ0gB zrv@{$H4U9sK>NYyCGcetcrm|r+Am+eIA@PUX^eV{C)#0I^cKQSSjGMHG38N1fLXwhpv^a6BhYVz0qa}R6~8ZbZ6Wlw9d-=3cG-;d{h`*V2zF*rW)yR2G4TA# zgR7urphp$_>QPw~z@;Fy9wl7Q)p4Ya`Rd7SNcK}{ZzMWou=8tVSIeH3u~KIVe^G}F z>pbe~;$zN|MC0`*k*r`D>~1sD6z4}rxVR&TC6>2=pKY$;ry`wj#n2+lfwtF~6r$D_eeDAehH_K1TcH z0SAdbi)GvvFMhc<UZf!j8+oww}wc(TK{Cvui{{(F3#eo7MP^nVLN8mOCydr7Z3#mrM?b^ZQI ziI%yZdY*A%{BeQAjqeY*!af8B(p~=3ZEXV6ffmx$TyCg#02%2P>f((tX?q_MDX_5$)gn);w4zlj^n-$f5kCk z8I(k@!!H1j+2hN05Do3KY2znW8?bu97zPn=fVZF)<56JRzR-+n+EAm-&F1%>h0nvOoAS6LbWsA$|SgX&*$^-^%iO z*TYWHebUUz@l&P`nCQI$>w(=%a%x?keSz1;u-+RE$17w#v^k*Y#>Uxr&=ugm;kIDx zukQcI{RZkdxfJuo^7kE#3XBHAVh{TPELAueuvspaI{pZa+3ihmGI^u+s^ zJF7L+($TlOIFss;Ryc0Nlm2_BVRG!KzfGQPi@_TELgLX;)w5KPOMN{0)&boIo+O+f z2&#?9r%tRYEfp-w9e!j>z%}5ua3)*h$FU=XZ-hyVK|{%x^xuOtBO=^Kf*ExBri;vc zS37@?*NOJ_?6TkE`LCCbcOVBV3`Qx(DrQ=tR7Z}Ic$fNh)GarN%E4OczLsvuWdSC` zm<3?m#yYBY+L!K?c6V$qZ1*2_@GgizoTj*Xcb=kvPWFdL#oz{S%*fqs&%IJYLftWB z-J-F!#BEuIc==%O=8~OlGSl6cw+;tBmX2EqT|55Z{JjDxaQvYZ8Q)rZ%~WR==c(&I}8-AsPe@~@H2F2LU?%EYU;Q! zuEB_y50@f-*m&h~iZA&$Q*hhE`=d2AMkeAX8ItKYY8a#|UWQAQsU=&6gEsl=U_kyr zHe-SW!%oo`g*Y=?4r-+if(ndQS68prL|HX@IiiYsU`(hY7q}B@=QS;7Al~D1B#gut zU$R0&@dgd`hE@{%%mmgB@TNO7Ogl7%*<(=HIPilBss{zT1k{7ZPLF_G%-7~IkADF9H_%p;{0ef1U zLJU+(2N1DF`(d@r1P}RsNbeLUX4XqM#BusoNGMK&R-uVpceY>q0kZ zdB2HwF4<77i|z57O@!?oNZKga!hG{_IYxU~BYq=(2l(93%lxiHMP?-k)h50rw_`isp{>R z`py2;>H^z;0#KrpL}7`oT+T`D$B$KU*BxzsPl9<)y%(8CY6ajX8g@`^C+(L{B-H2! z8_*GgA%U-AR-Zu0bP9XI5VQCBf$M<&!U=~fb*PXZtrk3zG*d~d>4L-lN{t<0I*HO&zYbw<0k{v zLVTlcg<4u#N)aax5|&P&pLeZx1jg)vr9y$tojmvTT{dHSC+aqme1E`!myaKn;T=&5 zQb}Y9%LTJ_VE2yLI2v4)9zxZ+p^2pc7agaqz?!gZzl2hhQ3JG$F&+p76Y}B6X@k1Q4&%Dpv zMPOKm)!#~w?+$GqrX8$o$wO>Gwjgh4=^=L_jgpG}U&WPDis)I#zi#qF)Wh7rD=mdw z6#4w=>nxxN{|1FKRQ9LX`2K^xuyNIKnd_R{3nS$}1R915Yv5+f$n!N8`}cW#2MWom zFZa4hmeGhQAvNI7zdV@_2W|Yy_SZ;qAsh+(=bU+xd)Q5KjxA>DAP>D!XT?fM7GFUd zW<=YJC&1zew7BtdPbw~KOGeNyg(T889>9#GJ#sjO?nhR$N4P#!bL$-H@F4#Q{*eu;06-bkY7-$)VZgPuqukfwhi)639KSwrx_J z`r4g<8OF-(yi+83-phEGJevpOHlLDhGSq{{_$0 za2DH-KNIzSC$-{~n%X`78<$dZq$%W{cA)so?3%Zko*i?EEZlB}Sw1cr4l!}@ma6XT z9#IWyI!u)vr$k07i;}sVkl>$?=?)!5a-F?V=hv*^R|lJ`lo6k=ODrIcCQW+34%L*R zO-?J}wc&@%9CK)}$Erqa)F~ZR@9y!^abdL8@!)8PkCLsfFFivQwt!jykZX$_+w=BqwBd7STEE|TF8R6ly-`36XG z7HWM@Rj(&a^BCc1{6WZHXKTC4&r;4ZkIwV0M1m#tzIX~8doeO!RH z=&VY8{9n0|QbtN+L!F0zq8tHsYDB^rsMjv!y}Xx4&lZq=Wl1CPSGhI%O#NX?E6trB zc_o@POQzhdJ9z7zdG|OY#PjEmH$!B%wHd*v>1`I!5cL3O!ffYuos1Fp#?`+mmhr;nsFO?3Mu%SX z(g|XgYBd#-cuJJ~pBNP;fMv3{mLK&ZPXG5D;#Rd0mT2vlfA#ceVTBiQe`BH-J+%6k z|Kh@W*!5i=>m-~)rA;+d*muy}_Ux~0GQ||S5|rf*{h?s)>7=9Y0tRZ#7+J*vYk96e zunCJ}L{{kaVWFI!sX$Iv2Wwde^!mvcSOMaB@t)_)#Ckeo0UMTuqAII=blOi`*cEdZ zc)GrtT4wWnAscjv8p6uujz(8xe@ANiV6E$-9US*oPGV~D04QH|*LXF9=NyIR-6*O@ zn6+)%;|BZ^9^$$(y#I+;szd}4LyKG7$<82jD7sFSz<19js565A*5tF5hV)&dbu^-CC?8ZA1! z>77UbmRARMNi^QA+6%eW5)ihM@(QX8lo-fmlb-Z0(caPt03+4r6EJw$mJ^T#ycKp@ zUI;N?G!wDKD+T;c(J@!)REv?Q7HFhu2ZZD`^x>4=Gp; z?>}NJ;fyHt1R@YqHDQq$>`(r=Z+q*(rLH(n*4+zV!j-DIrEBM)~_e*#RFCcXPPtH*E;C$W6-M ztPans_OI~Yhl*5hK9K$+|}3P?TYznxv)WJyk7P6c=_uT7oR{^@}|r--Y2a<&>`lu0>bvXn&jR1 z({T9$VEp^^4!0^_vx1*w$@6_2kQbQ$`qb-xIV+%;6*9&Ge$68thhjyx^-oqhh5;)m z@qglWtX{ezc4R90EtLIDykJET!mMe2+N$Hj&0_bhiDHd|(Vm`Q1b$>UP+G2Zk4 z|A7B@HW7BJ+9k-Bw|e#kEm%YK{%N{mZP7Sb%MrgX6^Fbp5IOk+;(Y53eNX$JO4wv) z_^4Cupk@}~KL+)P%^sirsvmZ_{oU@KUg>rstV3SvTJ!jUwZVn!A zDhgaBSerUvt1Yq(7n3ZzJ~lEt*3n*z1a^H8L;kq*P`-(F85zITz;Hd%V-$i# zwxxgnekC~wVU_0F`YtI21Z?>-7s~A5ZxJa@t}2Zlnq$lZT5l;2v7F}Xg6|kiGbCZK z1y#>51FVU#wHWgacQBpcQrG&|S^x(b;_y*-RmZK$o$n?(wdx5KX%(}* zbwH*(U4td8Av8l@7-|DhPrnqlW2^A{1AlR0oYH)Y@&A%71P-tq8AH3{>D3Eq4a@~O zIZtp8eplnC9n$F1lkx0~<$+zT*1|Lty8okf7KlE(S`{jQBY>>Ym6x#d;IVQiyw>j zxyzJ`XXDVNa@1nLqG?yU6ND&4?8eRJ^{U($*#e{6CmO8WwQ5MPccB z$+0cK3|bpnp}A*L8xHuE{bk*bHgoIrYz{Cw1fCJ&(y0l@SsTz*LTQRmX~k^AuwR4w z-r6@@0q&p`3VH@D$6MhLC+xl{3K`e`gN6fc7I=1^0mIfXgjAlT8Nib%+1068wK;Z;n}~$4N(|HoA!@L-Z%0H%YP(ks{4rA+(-(dX?#SVOotX>jzqo& zJv!trjk3&sgqez|8|Rkhy50{EXl40rK;_}xL}W#wdhX88S9dpuRG4LgYiMMGzO&Xg z>qgojvfnK)F@pl>E6{y=yCTKMWn8NR84N6LdR?FSw@x4eKbIxN@lz$5myefwL}!D) z8B}KF*$(H??>-SDYg4~>zk;OxB2Zwtz#%{1aGSQgr4Jxc#T;zS2T-v2Z%@~jB{mh* z>1HoUq&nKzoLhETxv|IsHe?^XJ_k+;Jg*eeGwbb!FHALHH3V&|eZg6}(6^_ep}GhV z+33v>bXxrcwEVcOm4HX#A1*-E3O4S)xFh_}{7XQJ#pl%qNo|uw3@Q+p)!xej4s>h~ zfA@T5jiq@nW9@8=wmf6}FWz$}`GNaE%pYhN=X4U)p|^k)$odHHI{0Z6Z*E()} zN4mhH($)xq(iuT77`8SKi!Ko$=G{;S3Kn zE8kd}dGTKhj<}I{@v)#jdb!!+3wF`T}YDW(2_Wnm>!Z_7*7{ z$?g*^kpBHc`lN`Xf0WE~%C3)C3heq%+ea(Rx?SV2K*SZ?lPG`9MPBBQgsap$9+2>w zg#-ykmzSbPiz&Kug(X%^u`OomEt{6lq)Q#c`EFi<9bJQ_?HsWb)*n32$<5`-2{e9t zYsp{6_XK{Ya_WnGW4e30>!%|YRxsPFG_{x%aik=#?bbvEb|j{56{PsEH+g&~`gn3O zO=%HkS})Mw@LBg0j_nnJct+6-%YG3%cr>fIA>k&V9Pv+tZ2&HsXvKe_K{?+fg1d1u z9jCA*S!d+tn`f{sns6GeTYU{w|0^-H*Xyd1cmGdt!RV)dhP{NXgpKw87N?`~D~=f< zW;f=!(ID!uE(Vn3>%9PyUdvT~Se>;zeNhwe-Pzy}QE3#>)ZJTeT*@q_QDD`! zvTJpV6}vN$2J?J2(&L@L&US&-x5R$jQ8RLSccnw9O7KKXS`Nm+npw!oB69E~@?4Gs z_x3ht&Qt~Y1;#VIL{`%iZbzX31X)%nTaC$`Q|D%xn*`v>>^8RYcadAD`SQg)d!h(V zqyTgMyfn)FDJw(pe{~Cpe{3bB>W{8b-~Q)>aG*wRPLb^83P<`J9XgWsyJ~T1zR8qM z&&$hWEgU+DOq+zCNGYAlK{dCfhqZ6F zD3gyaisdc{E+xe{Cl%D)b}7YFdGGs{c2=qUl5;zHEed$W|CCcssr`=0fd<9KP1HS8 z?2^a1K1N|Y9p3u){p=@NxjRj?!pulyyDUO%J$V*WmnPr)b#GW+WcS5+<(~jjA`c3psNa*8+n#>M1^T5% zASRehYUzn45B3$cSmv1Rq18dlq}oCR;PFK2cJqAr)uy>t&u#uul-W$X0H#QmM&t4i zSW_p%Cg?}AIoFr`V*X7jr~GpIdH(J6`wt0nz+`5~@Ot~H16)x*<-%3l`2%PJ{md)x z%jKEW{%$p|&y_nBzZ&FPJrd1s^1#C!n{(?WX?dTHqX)@CKDgsN7^cWU-lpQ^89Bhd07<>=Dl7^*h@ZA^REvQAlWP4Zv8Mm|c{z(%A z?1&Q?Z`ywZquIkEyrWDgq#Gn}KAYap76vybm@Kzc?@bYfF>mJKWd#fx&qrtD%Fl`c z`#Rm;U+oW?)#x||-rL{xSK1C_s5g(>%3D!0YC~app57Qk#|R5AQyk}~>axDxBa>`h zTvRJO%$xv<|8KbcgN#Fgj`-LJKpvmTU1(?o?%ngz1zUsGf6%7jjAJxRbJSwk1CN!% zqH^vZu;v)dvz~gH;X9m*05&c5R#w?`|FZgD6Ljy|_qqQmlc4nndp+t5FRIY&ODZoN z+JA`OMXhu6sXjF8qj0_W?3|#M@NkCdGkRm+x%)W@CPb`C-~2}-MElCO-Hr(CK5Qaz zj@`p%`6mC~JL1=cV3j*C@zE8Ua?p4Y+#NJoAsO4OSy5(o#>;q1?GORU#%?!2pT9o7 zt~NTe^=d&Q$Iiu>v7Ve2EOPrqJ*zC)9Td?8rLsRUV!J$zOxrNU=9=*O3-hN1eNqp= zZ%P_Jq7Q^dBMb0SUPewOEToef8{YwO7#2?ruKvjrOI5t|t`9Rqz<3QCb6gEJo$u z-2d1|Kp4G~@ps`7zsgHHiTtCnx`d=RjNMNxi0}n)O;%Hx06M)t8lv zo?;KEgWukRlH9pEZTxiKc1eZ3k&gyMi2oKfBpPXQSF<52}w?Cj`_zIMx6QKd1I`Hh>ed3 zdCSay*7`32S3!AEu6BI|)?^^o^p zd(=UAw92KK{5BjK5@^BeejfDu4W9D5M?&~OYB6pPIA34+)f_Vti8U5B@iiX?0CC)D zBx>t%`O&{U2dZmcEZTpfsdEa>T>~&5L*t9sBhbaWm9SvtLIRcWL*6^=Aga993t^?I zo^~vSTP?{>rK$Jw!}$|KI(RW(#%x)No=aVl?>4+(Vgr@HZWI-UvN3TVLBwsIQ;M>< zT%8Jf+~c!mB*xD7hI53~jTd_~qO=;B%4h6d-o-l^gXKQNxz+8^Hu^diA2q#f{iXkmLj5`(7*iw{>>QPLzP=pU-_VTOs6^_Oc;@W*aE zX>K^u43?dX^xN+agojuCHRHtQlKb2VHPD|a1Iq_#8k-ezshb|&HRrF--NvC0=N7xz zsT|Oex_v}e59o-(Sp2TeLKr9ZYp%hQ!>Glg?hg`$p-LoAU_MMAwsu&+sh&S6^-9cJ z9NggPXT|nTYB9$U9KYkJBObfdTCw2x<2CJvkq5n#(4`Z#xTT6iiA__oh#l$kgq8Al z&T^ee`?c|=o8!`}dytPN8=&@*D1yd>BLsbm@oDtZ`rT5)hS9Xk1ZAs;Ko@Q^*P6Xo z#pdoeSt1DuCFaJLbNl29-mOP4GYVnWkD@qlXKi~^P5JgJ-es!qY?~!mRk?!?>%D+p zke}CdsMDLj^p7x^$l_WLkfwN+FoUit>9K8o+f&tzhm}|b*G2!BHkl2~V6{tr&}?a^ zH1{tx^_Q|7amzA|-wwcHEWYru?}PaMePM^-)>ba-{w(Qo$;;=jfc9LbM3NA@(F%~2xifrG1b@3+#&8Y8W!A1tv0Ha9oNpVYkr=i zuTGIP!A5DHbTz$4z3o91|NKrlY6g0Dsd(81p&5igsWP&;PkBQj!YID%at-4qKXj`2oNxo6INCA|&JTP)PDg?IH zPj+;36|ei5q<0)p`sCr1C$sX4^IIOKE=io}J>Pr!vQQ=9&3N3X+H_3P)p3+2lTq3W z#~PZ6oevQb2p0(Cb6`)=1Ix*x5QS&HBvGHA8=lZ=@huxtTW0vN4tcimG4~NsAXqP@ zQ5BhzCKnm8S;Hh31a?r_a9f1voHnxpu$ zJN5o0m1nVplNPWl;a%YCuo#9R_^RK$w?c`R=HYg5{XQ1y`*>81#W&3KYrXh`$OhZ^ zDQfNuX`#DjIk5a|#Ivb&(5nP2Xl7yMJrhk4-Ev%yv9G}X-p%uXH&N|)=iInTUFmOe zzOFgLI^a}Y6Y+aXeMtcRn_8WjS1I+H zMAn|)_7{Q>b+b)JUA%5|Ub80kj0gFI^VC!|ji`qq+4d#vkt(`8$EwSDdE=^vXV0v< zFm=N`t|#|%PSC!6YP0-PAit>5#DFH5yn;rXc#GjqvxylErC*3N)3SxBKeIq$tOR+N zw&ZT9x9NzAEb=T-L4gyQ1Rd4e$bm2KLf2k|2May-@&wwNGiB(Ea$a`hF7MW-2*FPW ztA;sJ6}6L;^7!ZeUIa#M>&x==P1(GAOlQ@GWk^XT27B%|4Ny3Sxo`*H&JL%z4kc)` zo1Duy$Bcwzd8cO6JoVl8V{}^Yw^p=&Gaf4O3DRQ;Ml}nE2!GUV44fC)nuDr6xzGiNyl@Dz7(Ui z?Oz#>4YPIn3I4*q#psf=H%j`>k%gE6M?O2-Sr|6T5D^p^P2};(=$Rz*iTJG5LFdKM zB+(3GP|>}g&J)?QLc0xXWG)m38xCeL{vD@MNZlne-9(Z|e9{44BEoZGZ_kj_7w z`Zkj;ybz!J;nCdyedm_>BDfwXBbWUznLHY6^SUYPmVH3c*I-*&ceoTpf0Ky}sWB?f9nC6k8%owbn`gNWbTNt`#Gp76z}d zlFX(@;2eF(LJ!%_<$=x(Gk;BPi`X5Cm<{Q7Ky_hwg1l3q#Gwbyw~s+n${OCOGDlKa z-UVn_+uh^{Rk>}{njoXD2&o^t(!7ZWFO%aB8SUK(A>ELqe5zHuA-*j;*ON8N-JkEK z&di-Cn1nfH54f}GgwcYJXtmxzhvYr?LZSZm4!>?4Z+#YJ*xU6aqH!{LwEJSyDkHWPxJOG)x}==ni}Kz0U)3TncW(Z&mxMp%Sn1eb+_TGBHJlMbG4pzLm8b& z4R#rvkl4wjC^;kKsrKh?q(ZO94-@LaGuM$CS?*8jFP3z&&fvTO1#JFX<;(=9!n2Yt z?`6m54PqLIu9dh_hd66M^rqB60HU{B{$oC*hU$ASKs_%oxcMA#dk0={DFp#fWlDE6 zpk<1rhntaTWrrZV`eX51wRFbMJz4inqu1NHo{qxpgH!|8`iGj^jK7^fSvaB5 zfop`nAI%%2H4CnTt&!lo+*&=s^I;~S$l%edobwg(r1D_~$l0Anukfd%c`8;%wF}-4 zBoE~mWei3hZ5iw|)~FbyYu9qlt-{u*QYI^&8qKmYRg*>41(&lvLkDw%KWqB^NU4nQ@%H7 z@w-HZ!LYcU=0tST-MhxjVpln_ZabF?QOPuZ^-;Pb@by+5Fk|Xe^*2lI)#-YYAsJ7y zWMK~RiT-c-GTz4VU5*4(4p+j&&43d@sl+udsl*Q7WZylRWsgnD2{f7z@G*rtEUO}E z{&kKKjZP{kN9?5R3g^}x?+puUZ!JDO0xkSrTiO}Rqucw@hwLa8g^BYJ`Ky66ZQiWl ziwRoI)>zF z$ zATjBDF0}oiEsn3>sl|T$LPE{i<#6!Km3=4Nc}KUdt9qV0QS%>w{re`nxSI0c6^8Qb zDUF&4T3);W6Pkc93o;oeil6f;cd5iO-LCT`HWZBTV*;_^>rS4(o|3*B*ew?BAGFOz zlKp7QC*1!ME-zJ5v#K^X87op}?zE3z1g2(6xB* zgxt0@k^dW*FRh>JdVIQNt$VJ;`@p7EnrY~@QWLpmII?(-KYV|n1^2>Ba_CM1RXkPN z<&*Ra)vPlqC=xKU%n44kiNY=4RMTc5_hz|6^*OF&5hHJGGZ3=7ox$gE^B0 zKYZD~5QJe+3w+o%UoVOmkaEL_G5T^>qqG|H^NY?^c^r1{unWYK-UNrhzc74F&8D=8 z?+)lfLWmWT_n3CKH_xY|sj*~OwG0!uB+4vi{y2&Evu@i+U-3(xDe(itDj_i3nOeB3 zKRxS`gSpC&93d3T)zGJP6nM9(zFocit&RD(W5PMvq8jd7%woqpp4R*R*LLtXm@Ve} zF9PD43_K5ny{uXtj4ZaMOV%7=qINJOQJayu(%MJ$fYEHeD|{ibnzKaU&e=jIA&EId zFJcL=>gbQijzxiWJk#9Z9V(|Z%> zq+P~3XAB75ST#~%8nM6c#@$qzeOva&_->o^lvCUhq;^rituhPC6`$M|z27`m&C=C8e;OqSa1i&5%8K~_T@=13>;WnMp=Qww)^#a-79kK8;TrC z#pmh>ONWtxjp{e*6zNuQnd|cx z)k6_v#E!6dM`rRB6_4{$Y+dDaQI<^$BDo|kVdK|`RfnDi;6@Hjx4*JC2@mg4_DQ|= z(F=*Dk+u3V_hr9LZX&N{Ejl#vfr?iOXh7GU2-Dv z4Q8#lT`XqsGlQ{EgPIe8r}>GeweZ*Klc>8LUGB{)IRN^0>o<{mW89?q_Z%xe>9^FJCohtSdj^U!{#5NV{|QFpv#Q zb%mloj$fLip`jr?jP`PkIcW&oaNdk!Z+GwlTjJHZ!HCJgmc2gC$g?b8S5*!34xrSx zKFm%YEK=6$imX=wWiKp{>Yd+Zc82(@ZL=)NyxWj9zSkRs`*SVzpwly?Z*aR8K1E7My5CZ z#s}rxiW{DJ0)2LdB$C5GkFo#Bf+hv`y(G^ybtU`u`{`u1*mA^iVj4LZ8hv2g^2EC_iL0S2{KpgTWGm?b<5k9|Zd^D8 zmnRcvUHTilQ~b~Qay4!s!Xu)loDVvL!f4U_Ef^01$IMhz6i_;QTN*iTH-Ad`XH*c+ z2$)0H`-#GQrw$z_@7f&9H3rQC`*WJ!Y$;P<_q~7Hu<9bU_~J$S0^cz1!*rinLN2}F z&0!;T_2?7)@5zV19C9(hAbsujxAxROI$ua?5I z=SFr8!#>(^eo4=|>P3}zu8;n(j&v~W;8w9+fn3|CvPW&7IAR#!$^G+L8g(5UEP5Xz zVg~1PYr@RVK$cB=w(%yg!?1aQ@fIgN=6<4Vk469HD2{UuXEREN>W@L5hO(=dFM5eP z1aXBg%}1t+xpF$}?W>AFTGeXV@kj%cux%rWA4%#eDk}bju#c;Hb2i9n*bUR+Kpw{V z<=!VoFhAsw=`0k!qCC#q}fP&AfZ4s+@-e}K@ z5|K@6jtuN&rHODzr;HjMBW54v4~AZq5;+Qih<`uc%;_=0++< zsF=a3lp2lzu1uz0@$5}mV&|{R{;2H?mose)+?G_GZf9--^#YW0mpdjnecHWqh+k9xzBEubAI_ z>y-mjuRXgi=`%(S#~bqPE_}BNc`AV-Vom)MYZV>mqEXxRMKjVETee8stI)%YU1)=^ zVEM^DeN`?2!lMuyu&@)lX3;=4J>hc>TIE6~uY7*vYlg7VO{5p=@aj7AJ9LF%6govq zZx&|iYb583#bs_s^NP9Htx{`7(#~Z?v7SqrDxE23`zYhXoGi%^zTCux)%YNv|mESVgbGhTd+bPW*_!cFecZe)3AB_%h>B zGdup`ptu#0T|JHr3q@)}PS8=w6W15vmuHRTwu{3KVuOl9dh3zwL=W~QK6 z9k^(ny^b^g!sBgmO;q1=x;+TkW6=>Qf7OS&Efp$W`@)Rg zHY<9|sW5b1aA=^$Nr!lkC3-rRRKW{(+D6<}wK+A~$yo4XKLT4PTqp4-p`*nB;M@hve` z*%_B^W{GEaa_VVLDjbQXqPw&=Ji+X}Emk|yR08rCcc&CH6ge`0qyGa&nA~VuWn>ECCc4K5Im|P3=!y<)kT(8pdWM8Z#TGnEt&RD*Oe{t{= zGgk)T?00HYiOGac`6z6yBs&(?ZcF6kQc6;-@win`Ks@faR|894d=j)&nwz`6<3AB# z{JI>u^0$sdc4{+?gui}T+ex%CtZPE$z{5vO4V8fq$oAOQVSs6|g~$)LUcIX4?<=sa z)~@U_p;ky3XbfNFf8vXE^kpqvr4?WKs1`Ia?)msdfD^dP?pxFuAN;qrjKvd^&8YWb z(LGnNSaU`uR)N)IR{j>Z$!U~-QDtDwWgc4l^z*QTbG1#6(mFaTwQO{4IN30h*r(vEXNDX z7>Ty!>fXLS!!T4$pLdVgkY3LJ-3(-kWEb*8Si zJ@YY0qx2aG-uivKn^~~L&#RoY#{SV~kgbfeG3`BuRzN$G+2FY^J|k!`=|}O;KUO8;MIAh>r98D((8i z_oX3JPsUbE!myV6l2mP56JF>rFcnNCBD<&RPZPHe+LpEuX|VbVIXYTO=sT=SBDv`? zM%_BQl4Oc&%`(0HeY=li&0vjp_aw*EHjIzo5<74-dugMl&MoF2>x2MYM8Itdmc!e< zlvZ19wq|ooBxZwIDhW|QNBMYLpO{tBeP15tG)vG%oQJZs!KeP3gukhv;CQ!Id{9VXTtHyK30u2zHAgts-kr6WT$$C)jBbT6~OSVd3TsgaA?T>-9 zLC;%0ez1C-Qh~|AN8Jp^fmUGUKtb#|uuKS|!HEo;qoVKmSh2;?OcN~!r;d7SJ6Uo} z&)9!pYxb3ey>LzTlQh!&Xg=J^LbB7xqRDr6axLStf$~7?r_y7Dz63>b8sOaA9fjfP zXFL}o=9c*KdG5 z0TiFT54TCRHA{8RtFK+3t2=(l=mgAMmH|Aqrp=?{m&*=^mA%T;6tX#t_p*BCqYkr| z#|G;=&}sXbUvoFggqiEL=cZrHq9i#UGboNLNHjEPn-7(~QW`3~!#G}`aCtnuh`vMO z-o?}c-?OSOsV^J!jel2Iv{SbA_3_0U2W>2ETGtx}MBcE{73UsoYWKn(bq1oNoEmqE zUM;j0uP?NU5gU5qwit;DX-7uzM6GSKb056H<-03iJZQ4BF(x9mmn9BJw>ys<1SLI1 zk1walbzZlMzUP9!0AkhWWWK^Xo!T|_T8M!q$wYwf@Y4WpERd$$Ug2*M+y9xgJE4_C23!wwObEbwK8 z2z!Vz2LFEj#oj!dO(OBF(I7w=&tG)- znh9O&5%oCYdcKP_7-@2r3be6Ro_b*~aigk|Rr33zce0WGu&qfx+y*|2To1i%usbmj zKc}W95W1e-JR28A6RhwAw?y;sEBh=itV$a^`B~G{>v9QM>l6teROB)>Jz}8P+}I~r z_ZWRBJN%iSk*!DgJ@YL8G&x{BYm~cIfG#eqPxlV%ljRsLG%LYZzT%WYOdd%QC=s|e zp}UR&wv;EajmaQ^Ua(G-l*FP36(E zp)w|G#H_F>DlgY@BAQ6vAj+z!_Q@&fk++a?+QidPu&3Dmf3WwSK~ZgO+VBBH1c4S1 z5lNC!Bufshq68&~NRrSZS#k~njYJV72bItwA~{ITO>T0|smUOz$qjV+ww`%r=6#-- zb7rdEKVQ{bUA0*oc6Ar4*Sf=XU-z|Ir`kyD?Zny1>|-vQlS1d_8*PQ8&i8^`?LTID zalF`X)b{bA=2l-kiNpP(bIbO)HEHeoL3Hd-H{`v{9hx*m)7)qT~$1mh7*SJ3N z*yV)yrqV?ny5aF?IH(w46SQ7R3-pdq{DZdR`d7b!y_a*f?t6*F zzNFOhM^87#3k{$0RxNrv2pux7OP~Qk0IHRMlysS{ zKGbzp7E+=)=nUPQuD+^t{QZ)5mvhMe`DWDjmUlvPbEOPZd&hyr$ITT}L!bLi*BYN_ zUK$TSZ6NM2^P6~p4*DVX2pyN_$gX5d{&oG4X3Kp1ur1@XBZT2mz?*g^B0>Asarj7a z*aRCZ8H=>(N6lR^H!tao9cuk3ghQx?^dFw^U=30ELDkUHh;6!}5o+G{Y4GBdv=%Z% zWArD}drsQYckW#kE$A@z`^(>U?%7Pdi2UfKdqsriCX0>cByf(@`bov!!B?w=5N>EQ zy4rIQDh%KN??3)g#ms*Y_=4GxT91{D(y?{Qli?NP(-*|3)%a&)yv#=t=IE?nH zxpyJewP`q@XZk@U2N1cFH-=M5H-G;^`CSe*3OL}@dB3~9`f>OahUCik-?okE#=iZJ ziUw8h07(N;M90~vP+k0o;xDO=GHn+_7+E`@SnR~Yw3tlTP0NAkh#YgcPn6{6ua`uR zNIYTbMd@}0-y}ajOR@G!Xy5Q>>HKCredJ7a$LkF4Tq;Yf!4D>pDebHI9x7h4APEi~ z8ksE~j=v;=$JhlRHMdEZAHc}v(rjt#PkQy=eN>&hjJ)vJ{-y~2iz)XV|3!PZcALw7 z7t@L6J~^u8iSk^P0}kSjR8VKyTKtJLx@`76Y+yNR>wNdS_r5dbGKwH(gelBi?(1r@ zd&BbF9ZY9bQgM)bc_GYobR`5;Hj7JT~I9-O+0z zarivEX8ja~DWmcB+P9yq%@klpd8rr+D}^vh$`9wzKdNc->oqZ4ag|39U3?Gm)yL3B z1iN;!huwoI_yG(U&0s@^8g92n)05N(uftwZ(+$WSQrb8{?(xys7*u$Y$dw4TtbvfdE>gcAW9#)7@+%iw5>|^N# zE|mCwZBXp-Ymrh`h=P~j{fB9E)SBb4=YFbpQ$lOAU$%Y9Btg9DB28}Cf~{K@pEhtf zd67qJJpMXJ8LTXFV=x!HmKjk9k+~doIV#Qt^=NS@3aj9I_HCD|h01ex5v@o=W+u3= zpA*853T$+F?}`%IzFu~a5?l2IBf8Gv8yy#=fxS3|(Nvs^ck24Ytu(!iL(tJ!_jD_N zLD-lDjT z;IMeZ|DYEVXl|f$+%5f(HCkNm&Ch=}$=dVTiEjC$H66)CjnGvW0Bu zM%|}LEC$Q(9@;T$u|I>J!@SyB(GJw#W(Y@u*e{;vRtr=@nr}_k=NJ=4gm(SVaJO-K zr(LdfpCtvemqT^nAW>c8&2!&Oy4y6e0wM0=^}aL0QjR{?D>~%$+MVq$?}BxBrwgEG z4pO`IUH!}}hZl@+69XBN@*s!c57=R7i%51P<=#^d`T9z0qi$2{ow%9B;Kh-^gZH1H zflP1Y$r{4cC{`5W8JgLI)Y%}FmR)mB!+U$@ihEvV(wyBbwfn`>{++Ff<%?Th`r&f# z)aCnwu*cY_?@HFzb`(WJwSI42;+6K@Z*kVR`23R^wqRDsq{OBaf5_P+Q5eJGvl^T$ zlq>c5N=lH^`>d(-37S=7+3L#o@^PFEcHs5V5!zPqn&T5tATHSKV$*aK&*NRS&@jT+$l;Yj@6D3Ps`Iw{NGyr30dP?KmF;$$?NPE$kuDbqv z)LMdZ0Hi0e9VOz`z-w!j9d%C8{ZnPIGnShr7C4gSIPB#@YzXT4DJ^Xkzcjl5V!7fX z8NxP;b0-Vc^=R7m?P2ztIf2M>Nq2MU)V;(aC-W;dpjYYMhS@Ow@bdK|H-X&}KZVB3 zUUL*5^*Sa-UTDItK6M@FH-Q&!rLy-h{iRx!49O1?4S9gTqkzRoR)sD3xA~s`%qBy! z2^ky^yKP@rYTW;bK(alP-XRCnF=B5YUb^G&Cpzd>6!~ZWNd)h0wWg(iXfgb+C9)@9 zMT)fltqxHg3wagfuuTjZyYS)+t+?k?!olSZlYVE6L5+H^rfE5uqtQRJM9e zsZ5BLK2X?zGx`Z?iRMaSJOo{aS&8DkZ;?DlrRlfMrw_MDskYlGfM&klS~ z7rk|^DEMtWbiZ~d&@s(THAfcr*lRNi8c1~gbG9??#%a$8x_OU0qwJXz$#wSZi<~P@ zljV+KCFQ*DVc!?OXrPOHW1^UC)@Q3Q7icgy z9-jZ1!*Y5#cH}VH^@7xPNh`3WT`0cP^0|8@XM+}1zKagWvt&`Po3Mg0+hU@(RHQ4v z2#2+7(`N@V*VAx;pa!^G(elPm3{g*hWczr%z%)IS6SOwTxgkNaxmzpj5x7`=6P|T3 z&xewNd)G!sX9COPL03mq^Fj6LypAD6vuBNX{e`|hyGRf{kOE)Ta?Xmtz0 zRSi8-gu^Rod2rP&ZWto{mr=+Pw*4zl{gxz=Xg45!9V3Yt0g?>Uy@h5X3%LVzlV9+2 z6)16HenPiDJt`*|qkaugbbc6b_ib^aGEnnY-79rvO9PAGTe@V3T!1>Qb=mdy;onGG z{}SaYqWx2pO9px6@%}%w02l#d9G7`x^u#lzT`Tx=wOpGzAiUPs5W z3!_o0c5#zL%628WJ|4JgX33oNyc80WjqH7@C#L$vuG;APDXyD`V)#F9EOzCk3xAjK zmyz4eWtQ3Yx?w^YG!RUhh;FJI2?az8_WepQn*RH+(d8av0++*ZTBO6R5B#Rxo*F^2 zoZzfKAfYs7ub)v=uV+ESGB!@>pwG~3wwY@4>-V#BY+|)X5kjpwjqCR}Iykm2TXj}-{nTay|)-8n}Qr)IvDDI#ba+FXl`_q5F_7UM=JENfN&;o zOuMeH=w4es3YuE4$h6JcbjnPd2w5CQTD-h&d+hZYwQC$9W0g~F-8nq=YbAkZWz{*u!`qy|U5blo|(SO#Hla6iX)n&YFf zvk?}5wOFUuS+en(<&w*q)NnZk%WKVW=GV)Y+`Dj!xL4Ol312%^Jub1{7w7d*^KiF1 zhFwk8TpUUx>C};^&#z`V#jU*a^+J>SWqRz8z#oMb+@CB`&%b64pgvw*_Jf|MM++^9 zo?wuq@A1_0Zw+?`WMB5hK{{ejh|~GwJyejMi?K#*W=zK)rgOgZ89!_gm?4=rde{*3 zgAgNT-ua%Bp702T{Lvr3zpuHB9Crsff0y{n8qakSpq(yP3{G&9S`S`U*li=;S;pY| z{Rql$9$7SaB9!l$=&v*!jhzI^N6}6e*q91&`ZIT#@lFAfvq$tp>l=G5=}y z4W&?i@ELmU9gW@e*T?H%FJFUTcLk|43e;i3@}U}Hot$IyDe0E&!U=iM%NNb|l)+o; zYN2dYx1L0KzRn4nDUzc5&hWCwv_l&l=DI+>@y4NAHM}m}tG?Y=ZvHE2+s@_WX4rfK zdEiLn#<{v}Oc>i6ubg|V{_o{t5IVhA_N=LHnb4_NMhU{myZL74PRg$wK2lirpq}J7 zTgs%_|0RYM>tr+qbam4{Z0wrx2V~$(If@%Rz#3L3Qe|CdJ<3U6k&v@Y{PSN@#RD+g z20bs%#AtY}vQr@olMFeje&lx#!qH=?vwY(r@(LOSqkZOC=Xt4j#M$g^EUHI0Q-_8c z@~SmSSZPN2rQUa`$~|CRFd|@JIL^pAUYEPak2)hb$GK3TTiG-Kx^|cKK0RG0$9O_n z4&M*6Cq}Tk%)NM*Cg)?*3l*oW^YI&eS>Mk?gufBEue8N5NwKD9mh(!)cI%Csg34hGGOtGVr991x+ZNp?&An_kRW^o-xC5cFKF2qO-9QB8NqXz@8p}d$lzKuSV^zt+F(HTh&!gvf3S+IrXZ#w z#VG-D6?JsnN^t{>yLv--xV@Q-jbcZ(T$5QTuE)xRFmnFl6onpd{%)W0l8%*SEYF^I z!|wsx#yoqtLRsA|bQ!_FSm>$SY$^96PiLkz<8TP^0Nt;ARZj8Ngy+B^wZg#KskhA1 zAv4T}RY|?%Mgd`g#mjN-`+^=)03=Hh^>dzdnzuP(^8F8%O}$1URN+*lPI+LftY=U< z!XtEi$ib&|8nlqvC;P>Hi`wZqFP7WeEu#SAnXlDai(V+K)tS6V1Db0jM!5aFGV@07 zP64=Vmw5uouw%ns`Jpz4NIpCTbx;nA0F2v_Y6DPScJ#tL@3aSgSzJ!b$n> z%svOBRm<8RF|DH2-5<$A;e5%V}wrD@yP zS`_boqvje*X9bdU(qFKaUCHvr{-Cv63v$?FM@p#^XuF|K*dG*0ctoA z&iL2D5JX@SZx*KwjAY^W0?`)NNT5l<5ouh;%aZkC&KKIW`0vMW%xiH2VkST5lv~5N zf5N?;ZSqw(!e}dmvqk?!Ac7FxfPOoXnb#k}5c8at<32v&N?_}&DXaGSk-#& zAA7iO_sSXKE+v5}t~R4w_!c4Jm$;7}e|x2q6V97$B(8sdVSF$;fFetmRE>+A>zZ{e z*W-IC4~V7Nk@JU*1NFA!btk>`>#4!PawO{o4S@1_`X{TCX|YcY{j8drQvt=Cu@B9D zq|Z%%Stpm`*Dd%MvUQbYoM-ms1Bdqai9Ujqf~2`5jZbM32JhmWj|HUF)3Ax$+CK<6 z-X>LKV?V+3>htz?WRlZlu(zymCzc};t+XvY4}%T(aunMSaQhY*V0KqUjP3x+l+hiV z=e%?tpQ#E=T;Q`_W4snccxFxy+LbnVy#fBb49co&uGOJ$ckcM&_+xMV0#{A@A-JOE zL3(#ac+uHw7t@gX)iQ8~Zp&pz$cqye=?%r?haYF_Uw*=#T~9RrVOrzH;#S{F)Gv%)7$o@qQVSf8T3x;M4s?;QQyH%?_pbA`gnPJj8fdh_HTdk z?B8|SS*Z@}9gW!*6MJ%EGYs<7>o|hh46MEy(f;#^DUa)VX-1_q(D#MApRZW&-ykfL$Q?+-Y6TcnGQOy zoe39LeVbxGoyO|nd8&ihK6H0=ydnQi#Xhs{G^VQzmK?=UeY;jHWEfr z5chm{Y+YSl8M^8`dP5kbgMe@2Og+)Fc6j3f$@XP4VhwgJCEnHzmv7yhw+zb>eXWwO z-@~_--kYfRd2{YAbw|3-@U?ookAFYT6Wx@Jy}{Izo?c1>QRWEmcqLy~ao>~9Y3b2} z7WHeV8Mcv=jt@O{gs(izx-%#y?B8A#A{Hv3a?ZfpeO0`j132M^ap9CPCcO3`{Eo*w zt-b6X;4YgLDWB!;>e)G3#}XnFDN#sp-ZX14TXp zMjdMuPMNI~PJNe4PTJR3J((VcQhO(FSFAr}e4hA$QC4yF3@!*aIQS-4CbR9j_j1Y> z8Dybmns^`nc6eXeFZA}Y^l&+}zUYa$fzg?8T@gFGT!F8YznfSDZ@TuR96>J~B1kxM zF_PEhDk?|smJH831l2Et^7$3Y^wTi{y3;cd>Ta)oBW{R|&|W>-2RV!p4j`sZF zhhj-j_e6*sSrDvc`z39lJPTK8EtWb1)RQy&fECcq=E2|KA;6QX=eGO}R+KZN#Mqx- zCQ+!DsD%t4ozy=$N}xKGp;f(mZELEK%BSH%suOJpxwPNdD`^jw)Y!uO%n=y&2Vpe) zD%(idY4eBb@rP;f36_>k`P1?=FSb)1yk^d)L{RD|<^r=m~%jy4g)5!Y>-gqQJ zT*s)cZnod%Qn{wd?!b}sjoiPPFAHLg)4MvA%-48UzAS&$QBAX8_@SE(l_p6N%1?e% zb*N7GoNswIyu#PO@69TkjDA!AxEk|XlzZj#TkDqNx|RwZa2eUVXm{LDRJ$Qd zbpr60Z0yS_uY8i^xNDBb32fWIJ1smLUMfsK2%1|eq&9jCyoI*^C%;zOn(Z&-v=gVb zr%|vjdfrGMLj{676jgE1>Pv(yy zs_v2unLkK2rBD6&Q^$$;RoynYVW3l-jG42lT`cub?304?b52paKOD2x8QQ>fPB)U@ z!vAV^7)j13q)Zj8ZTlby>5S9!lKibw?4U07ApY1_d)|vrm?%4jj}AHhYGl>A%%?l) zAZ+e&v2ldzCcUVs&io|XNJ;@g>xbh$r%Z2!E)wCBzhXMJb9%#i8m0dZ90 zb&p?N6r~R_V*(>^aRa?%u@9Wk6(QL6C`+cL^a;#qq%eGb|E0+OA0YnuDUcg>D$?8$ zHZ3uTnXsR@l!`{SR-#YmYN^yi3`*_rXq zLhx>^Hpu1CJGZpIn?ov_rA2_*(a(%Gb(0>pI8LA%_3;|D zF<{8{I}oLP?4rm<@i%S_bS=^YL&85@DGPD?hqUFGtnnC;w7hnSk0rve&D^^SC*Q0>gn=y5g} z1!V?bbim%jiV^XOFAZw^*AD#m{&+$8jn*k(k``4An5kU!UfM33y_x?Xc(tZmT;m(& z*Nvl+=Kza6|LAE>j7c56VBuyX{QhqJhf=@4aMzBSP2qDl%X4@aUd6nsh#b8a1L^n< zEeazJG@6OCIIr?ii|0C+Xy)R^fH0cOG-Dm7rr6Q+6=Xjmx@OL`>=Z%bK^fF|1bst5 zYMu757EAl*43#xaKcYybDOk^ zb{sYqI2>|45Ba4N-wM2f48^~GZS>_|QU!J*g=JmPfubVRH3YEvXz2WUC_3N6d6KS!A{w*nZ!z*v)= zOXeBihk=nYyY?TBB>S!-$oT~BmQjrWE#AQi^u(ELJ;B?66--hAEiWY8lVla8bD{_r z|FLfR&s!VEXgO#-C(-R>l2&2UkQaHb@vY;xi)xyPRr&fuf55?h@G`lSPg4oGw z0$GWH?=KNL?&d@cbu2isB#L^e`sU|NvEUP!LI=p9!vP*R6dQui-qiLW?RtO9sJpQO zyW=S$vNnYSC8Wzg7x8C=`$Zy^ghP-ngCCgu8=LCSc3cMj^| zYr8vde7Z0CvV?Qph&bLJzt|A->#*yzfU??-@!N>qkg}rHm-m2gZ5zzPC-YPtyTAjf zBVC5ffSPuiz&rvkQ(H|PRT6LK7Ik20X2kt zA?ViN?dx0b;XN!QXDdHc z|Gkyl@<04@@P*E{{WA17>l~y4I7iN6Z*h4h!SY1b@iGJO25=>E%nCcU8wb?_*CxZC zrt&GrLA$2%OnbUM`U94@FK_e*F4q4K9@kn@DsVigO<%o8;!XU3oSk(dz0a1zBb9lq4qS4G)>az(2ciarE)8iX^=bx>fh%W-4iSxTCS0tB$!kugq zq!28}SQ@m$b@(n+5`vXMC+Rn z7s|)xn(v+I8AH!yI{`I{Tq-oFfJRiw;LfmDP>_%h%T^NpO9l;1 zRP_H{YWn*htu(l}E%zLPgqk&W6~zqv-sisYk^j64QY05ujSL?Bjk${;m)hK1;8q|; z{tAFw^K?xEk%f5{-@rh=nM;3LFz2?v6Q?C{)Dwt9+i5ZrZHRixQl1}2-8OC5=*NYp zLjKMyb}hlj(I6wQjndK|@Q&bmy=0cB9%?p`X}y&gWhQrS+?FxnD$H*cgtO^R$i>wX zJbd6)>q8UE%CbjL+jG#Fqi~5l8r&vW#LfL*q~rhb<<1C_xUYXXV*EA_dF9{KFZmxq z$}>A4NJ(yO&D7|rmD-6<#>BoJa%Qr?9Q^m8Z94Bl{a(xEvLmiLCQFEg==fUpdu5js zZ%_*Fr$E$o`0_~#D7AH!2^UE$m=nih;Vkjs*>|4;f-dcGcYx(3UYM&jep2xBv20un zWinq+Ti%<1G-;C*8sp?njQoPdl^>(txQ_1;6xMiay!K!3zk=uu{K-F;l3; z$5I&}pyFH3DTo4GaOXV(wp;mT1k+zHY{CZ`3wLI)l)n>p;Z#dPDPhbR7&Pw(Eh|r5 z*V07*12P0Cip|38p#jUU!OY0%Vjrk&8HhL7e<*3@{dDojT^1@ch%6G!-@2@US+U?s zSP50Qy7|{B0x*vSfTGv6B7^$H$zUe6&O-ekr3XS=Jr4T0y>i>KkI!Xc$=0+F@p*a| zUlMY6!PPWkM9R@}I~FNU*2_XX$N~u5ghw+yReB&rQZtm2F|Ih+%&;6^O>IF=CqlHI z{$@8ehU=E?L{T5Di(Q@H(DG~fH@h|2^;^cMII#gaG1=XZE3K!wQ83X)CinIr3|*X;xHI2<8jefFApH?w6YvS7Lufg9fX%Btn71l) z<&XgeKgH@qlIQQ^n=xc4wtDEKGy7&e^Z?(5$!1^_U_!xu-PG96gX`+nEf3K?jklBp z>6|_WETbpKtD~O%RkB~352?pO~@qmgH;%d z$46%15F!`c@kEtwi|XFhVu+@urbq3`TNT$UbWZ+zL2R9+7CkHdvZw?-h@Xxgx~3jI z|E8y6!i1lU*(re8eN<~|zwv1J$<9t9Gj#KQ-QXo$)iiG4$;RV$gQ-(f6v2cbbhv)3 zM_EE}tiTuRJJNT7&(`5!08+l=j9r5R)3!!QDe=sUuz+j*$@2??a>2S02Q6F063v6X z2u>}*XwdHgai)}y3qIo4U8?ZU9-QI;$Ql4qgozM8UwLr#AN^&{6d8mkpbYlZVyn7W*Co+{=yI(o63+SL%?s zB1#sSyEU}b%%xjbmOMAhbA>BZxfbM(N3}(*`ct>Xw46iYssq)bm3}8v%7SpL%M_G= zTkYhG?p3f^`%cy6x;H9^g1L` z7JOyN3Lc9wroG`MgDtoWPHEAM%#%zJ{gs{bmt_{-X7u>9qrD8I?R@A*uVJO7g%Lip zOCsMZOJ#Pne`RSd&|2{S5KWN~i6EEWsJ7O5W;OMwVC*NPKVY?Ib9H{lcLZ)Z?ia5Q zfD%=DcxTS}X>zHQ)`r*Fdl1xT2JI3T$>7>nAM}(wJ;afZCmV+ zKtslI2Sdqp^<;b!;!dK_66LvnjtKtvb0qt+Zlm||2T6+lATm%=HEsXt{&HEOliSzG z9dI>uZgBX!Xs|OWGuHwolY|;@$g*Qkj#efG=J;wIxDb7E@>osyJp$c`ZV)mg;`I-F z?0AE1M|VQM*lu4J?OWcrR9N)GWNN8!_slw_-O$*qp|ss_?r=x~Kzx8me@7F*XtqG| z?(pKRXpcMdn@w5Y+70Db$?E=BkWPtV{n*>f>+1J%PYj)VzB@^TZ zK%`sXN#Oeb-u(an(=sE zSI{|K*$01WjQ8CL{qiA&yI2rgP)|qC(j#8FkYu~U2}>JW^X}#@vlu_N>UygVQMN8LaWnVQ{8pi5aqh%C!dN1Jy;VW*p4%JWR6bfP! z1fLH@uQZW>%ImgOpnwBe1$x5)5N$HKBGCbY!S*AYG3XO-!rHMd<-s<58*X@j1bU9O>AeUmxcFru z1X7A?58sLbp}^;B*SoRkDvoaro$F)@;JvfA10ZMfNnIG*k#9U}^Tz;fm4fgxs!2EL zX&`9N!kShM+fKZS^Jy=X{+Z4HHv!2n%#xv1qshP+Y-bIx1yC7Q-A$M8&MVQ_MN>_5 zM6HE+OCvYAl&$~m>}@>4#ZzuF+E0Ca*1hq_o+{PktT_vn9NqWgqrwiILjv;7MqI4T zLmTz<0J^99W!m~@YrvU334oMk()qXnIq&hkZ%mc2FYn2vK=Ma1k*xABT4e;^kW0CP z@3-$;%>dr?D0@=tPk^sq=l=ls>iz5eao+fszvH)Xf*We)7h3eoS@)LucS00bK5WMtA@3o9KQ7s28O6Nt7ECWZTC08}*Q3R7&PF2GHJng<;BR zN$$?myh5JybS@M1PyYtdRN!4$$lF)yWMX#=zGU_Ak>8naJIJBUkROm}Xnk?ElShaN ziSA7smdIj`MTz>i2zLHu9Vq@pu$t68hy*c!tj@jyqzT+=8@M74i~R zU;~ab$U~;3kNZ8R7Fbb#5mvX`(!ayu=KahOXA-X{wm;+JCa=NVmEWN;86sK(LA4<5 z?1D#JT{*<$KAmMAFeies5m^iN`ElB zwzWFfznib-TtBi;r`H^ASl%vxUnV*(X=df#^qAtNuGnEJQcM?KJc54=a0L!Y=>)_c zEc#QWOS!@KR|^AzT&=-Ah$Ut)u4?{Ntm=(}1b!WN%jj$49uPcN5Mq0`1~5V}Bn62X zWJy!<9-&au{{YFBu`c58etP^9pUdgoO+ z6n}Cdb&bB8XW>Dze$8tO%ON@!3kIzT_q$Fu2+L1+7CEUnxWvUt=exl^#0tgk+j#;=!)bK+FQb{_^j>M34Kb4Y4Jw1* zbedwoyFoW2z)?N(1XI+*6Dxu<_y~E9Q-(keH1W3Z>JgS~1Iyo5;3tOU?sC|ED_{qt zs>WaN{A0o9i0ez;{Kt(`Xy`xwVrRGQ@sdcczk#n6|O zu?$Z1PTO0B#*;Fzjg7asfLwzTF1 zUYGoIDL0U}cyiY2kTp@%&UI{gm+OB8{eG=?=rWS_dZ72c|0DciKO>whZwXdL#^W?C z;Ce^kr-C7m5neIY%&I$1Hv9d-Ya%oB(VXGO(qV}exVeKAvZ&)skZN7Fe!E(W;nZ;S z@Rqd5c^6lW8IRL%+iCJWm#}+g=~Xjl+5uRZ^FA*9pUqkILJ0HcNIJSS=c4a za1)9=DSKz*)R~o3x(N~87G0Pape>b572P$;j&dw889``1wbws#XB5Sc7?eT$kGN}2 zqmeq3kDg21`AjElWpx4?IIodAokCZcJ`1gEOCefg!?e5esekkm<66MJ?BQD2pm*|^ z_qGC{8gc4EzN*192G3_-oe34Y&@TKaJJcSHp~lS=ap7!@;S%#NZ$ej4_6OJq!MRv- zf)(&W@tIS+1d117``VYnqptoQ{dGwr`r8`WpD|7*=|7vid05d0rN61lD%>QO>g*Iy zZ)(=@SZSHjj1Si%L${X&! zqyRpevC8PUBwfJs66x$aWZZ?+WB4Ul^m)MJCTY$2PoVg7zL8Z3(m9vecddX@cxyd> zwG4$U`(vJYH{O=PPtn7X=V$7{Dx?!Fq)-}gOIx=wCUfORg{pJol z3w)m*?GE(BK2~e;wmE+Cwq_3|#*@ebP1}#aE0Fwx-qC_5;I`w0TiVmRx7@LBZJspU z58-SuJGP6mwLB|9919uU#J88FUto1@A3aj^_TzQL>eBo zVgv9&sCO*VE-Ty_=Rfz#1hIA$U=j9}zVDI0N~7J|*7=V^jV&>wQnn*9-F~st*#&l6 zUsHn950;JDerum^twwUcoXkxlsQ#5qWtx2%4WS;l9%^j9xU3+CR> z@NAVaK>HNi&9Aa79zNc$dyG#yKo9MV1C{=ftu6Du^ADvX3+$r4Ri5Q+)-9#qFfB1E zhng9cAN5Pw3*_9MHXaO?mK;14SvI#(nU!Ye*=2Ukyn~xB_u=1_LX;Hltuw!9PT*xG zP2Ytm$Z9^HHi?2ei9TlRTt%8VFRM|31mDw87$pY;To;e?&eJ*-l71KC?|80F7R~ZGccu% zY_~JqaFg!24{7ShhuSCPc>?Zuse#*FI6Yp{F9SY)d35;t3#l5|23u9a=GOZDMJAy3 zDKSLjmlr{^!|St3Nd9&guTr^u!9-$*V4j1Sy} z#D=6ri-%kB&l`qkn272+zufO5x%5J@kx`tQE{#L${&U#C-6| z6!hqg`KU>s#mldCGWZFQ4nPGBU;(K$omuKnS!6dE78hWv3|E5U9lLLAenz{V z^^%>$-LKodZ7rjzLe9S+N2lAwSniN`$MC$MfLirl5E)7k)3^@r+GsEv)*vT37dESL z!t+~n#rLdwZq3J}Erl@q2Sm#HMsBC|XT>qV4EQ3F3X?M4fRgn5d0m=Jm(6=~<`i2C zw~9T_Fo^@*P`Rqd5)QL`i#Zm>K#e?z`UZQu@!cr+IEB;?h#bp#d(5DaL{Tz3hLtZ9 zt&W1QJ-PD+2Nyd}4XcUTK*6A%o}QHtI>yzSx}-ddnPsgIBgGl;9lZf z3+35+1>W0Rr5Fr2&GbAjAV@?Ayh|iFitA0RBJNiN$#Z2YNAFJ1G~my-UeP(3_@Av7 zIO>VlH=qesTl)h$pHhrvFah?(R%2(GsH)>3OT}q6Rj>z}MeT`DYu4rlDw1%klvx&7 zufCs_z_v1r!^5hU0go> zu@lL5R)@cF80MwtsMq%tPxWV7#?f_u3_2S*Ha(&=hdq3b0F|!(_ zZo5;aAxUi46k@L)%K9IJta`%r$S~g+MIAqPidz{8JUM6(r$D58reIswH60*h7KazT zx9cQ(RFh|4$p!jsdyAqR>sG3V6oUevXa(nDd?L_hnC(W>yUKQd8NU>|E!l3JmdIda?OpD@?I1l{?ozIU_!}^ple@ygoQ2 z)g%psBqJIRv*P@n4K^6q8N05OU@^unSkez&JAd+~uig;Y2H);zC~WL5$-+5v`sdR+ zeGjE~^5Gz7C$j1bJe*O8&}|rHjBef_Nbr5NfvId_A9p$*7POd4cli5m!wF%Jk%R{M?u6&u_9(05w^G3&&Z;J%CA ze^>&qjDI~lJ=0r3b)+f(c{DQyCR94{)FK);K=t8;(w{LY|8t`&zjI1w z#muDG-?`-|1wBLCZ>(u{Fvr6D_v)>9z}?R>g+9(bBdIS2n3R8VD~8DanLdKj%=uex z1;C>h0&1&w(rEHYWHkN=`=hT&dkWH4Y$!89xS;d;uC>XTZ%C3VJG+GkKRb6-W*FB> z8`FAEYObk^JZ#^HA8mpWkw!B`(6J85DLD|j>scS{^e5KZ$qBtGkg zMQbG~iL|SyOOZy4AUY?x3AaBVN1#qW8SO8|1k)Awp%}U!nekks3tifE6YQUiSva~U z)@-x$KpGPh9&#vqGWp}6lhX&pp*L5dB8bgwIM{+6&Zzm^sA4MBndtV*fTU_q3w3nc zgBuMs6uuoZ7JK2Jyupidsf!O6SW4x~W=XvtO&EJyE2?H-3;|Z#{0(xcv+QiAlC4(W zoKOky{V@c9!C{wrN-<I9m>C!t#}#p1NsvH+tP?SI56z1Kt{Ua;&kNAFa*a<=@X=S1sw@q6LYuTpd-wUPJm zt8E+v%w!GSE-oNUS5|<#|1a00TTU~O6PcP1Hi7!!v5)`FrQbQyP?vBmb8e|m_q848 z!@Uommr%9UU-h*4`+aL;9-IA5$aQ!jm7ZU>w}t*aku9CWl?9-^!)~>vDdU!HVZbui z@(PTS0;ckURU!87-Iq(j5C_LfuzLr~LCr{XQbU-19Hh6#NTa4U_6mEmqrskHciZ7% zaV#j^-Ed^#kDUj$^xRY$*AUOWhD?>%x_{QqOWmid zWH9Zj#rY|-gjl0k&a3qya88q@OV>x&)gniKT?OISAF&Sm@J@QV0jh95GsP!A{NrZf zzLk-eYZRFz>|zq5@eRy=N@hAKJ-c4d`!NgiqI|v-mtj_~xxZbQC`praO*aCRg-cNm zTdl8!B}2wue&(NKmgU@oYV<=%jIndIzVKM46HI`4B=egey@YN^_bJUj#Zh-DtT*-$ zJa1HJJ$%R8@`ShLhg}?5vAkCQy@MVbu@wYV{t-1fGWSK*rbx|dOZ-aG+HFZaKQPxQ zc7Oh>UfQQo_d4v3l}22{JWWTgdU3ZIG9rKSZWLyc5#5!x&iskZntw5;UAw>+(BWJS zg0;Pt&+baKgkQgkY42m`u8|5D6k-M8zW(Ue$}~u``xc*akd_zNxOmG|*KXg+_Qm=5 z-mi!jhywZx3@BhX%rpvi7Vw3l9=Zpx5yB`g zWp`qD|0E#%q@K zd$KCjLFH(&Jz3?{t*(7#Zvf2rTt!8Tzx~3tjcH;^u^JQ7B}s4PWP~~~-%L?r6siSVq)on#ho1zn!A9CkddQlmZG`q_f$XQHk-?)3$KePbwjbf$dtg+#M z^Ny-~KWf4X${PHsFu+lS8ah1H+N z_;N8rIU6?q?8qS7{mOb(cTNbyvfowk;fEd)unSJ#?$qP%e)?##sBUnenBz#j%3_mOZF#qE!Mt-a z`b|nr`emNC?_WM#4aV_Wkjoq_8XODNJNzE zrd^>VMY2pKk!|d|8B$4ELiS}U70NFAGWIpbzB3s6Hq2o5xxN=Y_x<@i&+~bz&mX_v zKi}`+$Z<7>g*HLF=Y9v1=`0pJ(NBG%;tr#`6zNhw1d;>|ze|Q)E<~La zHx+_bo{{awG|elh5_KHgWqBW$DxW>(ILxtY)Ci~gF2&p>~7i7 zmV;37a({M7clce*RH9>JOvjP&3*vO+ldpw~&TTB4NSm+=V#$xX`^TcpqXk8Xh;=n3 zY45#rVB#XDq;;YAE}~*$*G|a8<^t96KP5@e+P$W*=o0}+aw1=$cq3>82Gt+M#-raD zyGOq(qX~Sk>Da5`8a&IbTOX5e89!b^S{QBLj{z$PZv%i z=}nNP)V(z|n#Z_+(NWWZZpqx1O#jJsQKzY~om_1xqs-LrK?!CpOsV-hu}B)UF(S+E z4Vb*X^`1!G+gWOtuL_i|=PqQIn_s#sk&?5nNq26;C&kG`YnPqUx*De_;{9|nLElmT zEB2dyrH7jL2^(jk-UD042MUPgwvEwVjpD-Gv z8pXvZ+n&(2b<`3a8{@gXS`?}(=Upu+m=*8a<$9@p<=`5&dape|A^R6eYt5dp=RFXB z?xdAly}JS2u}9A?V%f#g*DzVgr|%t4gGJ}i08#7x#XKMv{5p8ygUIu(jNW;_+>TRQ zS-!-xOB%bjuIBy?m$py|g~0tdW!Q!(e(eBBpcpI40&H=CCyp5ez4~7gjAZ_o1fzSI z9FjSL!^VL-B**T5;8*;r;gxi%gTDO$!G=&9W|kEW8}WGmEFsE!qI4`}->o%^?4yq- zY6AyW8ytrxn0?F{Z;xZsInQi6T^_8zMIREk<{gy|&@L-^AVs$m&6sQuX=pAJb!&F8 z#z!*L-R*2HSI8sd==ea3N0R-= zqq)uP!Bw%i7*U?U*&fF;Fs%w9brY8-^hJGH77bJ$L-p1Jq+kMedJEuSd;7cA$9&NcyWW`sR1#YIau6lVB#3AvXDs`}{F z2Ru94s_UF^#^IKvT>Qxl3I@_FVz}>4Dm?Q`mok>EasGPW$87hn;zIEUKp|QM6?df! zQm#M=Yys4;tS1Ay*3B5D z4l$}Apl0qbwcP)sR{f76!vCuuiwk+&r<~#M@EX6o+%{daP5@;|9jG$kt|o6M@`C9oV{Q__u`O9j0j8g6TQ zJdjNdc=F5q}Z^rD{2@>>w7d2(=_lw z(Ez(HSv;1i=5K(b6QA*>`|?;h8eLs3wjM}y?6&j!Bme1@AewB&t{al1=!YVQ1hqd-if4pz&D<8B&`S6loh#EuSEid4z66vs(SAbi$g$WtO*{ zXZyD=7kAP^>pkfQh6}$y#o7v8x7~297l>-6T&%zPQZVc^pliCIbn(UhG)qfm7V)uO zcER5B&Eo>FHv=XX%_)!7-p1cl91kDpbm}scyM-*?6)A7dJjX)?J}W3RMH-k&py^XG zQ-ATP3JC1T6?Qq-#k)%Ml^Wu9!3E!iJ&>2T7~+HY3Ywi^g||o4%hTRud&)*3`egEz z{H$>EA(<}RF2&cp3UX~LJHKo()2vET2{wxK0PbAe{-Y>M+xDS+t3vZeuJ)Fpv+)ah7&z6Z zJmmgnDP}z}BK)sVT2_&~D8u7;d+npdLQYv6V$bOIsmU5eJ!C!}{E5 zE1%lSC!k;CaX8(c*q@Qoa;;BoU$jnG>F4qjDG3gG=Wc}4qFSRw9Bx&0Dr4W=b+({S zMm1J1XK!npT6MZ-Hd%lgkr5BI!tggz8ruqUa<%M_r!P&Wh&FnB&x?!jjBT6w$6 zOGDz&%w$sv;^e~F7i1w-?cJ(t_8u5@+c{;Sf)nAObW#m>LUExlE4nE{yalXlbO%TG zY6u=7PPaxJx%lGISFGi!Oys=ZRkPKdU&tP*ZfM#_?m}kiW7Kw=+Q2KlGG>76&KV)R zd%$6qlx6YMF&HxR@-c=Ha92`JPe*IjAO%{d_K}|B=7kOr+Q+;@yQs4Ab2-#Md@jE5 zRnqs5=3UhBnDAkMZSdSkd*4m-iku(j6)p1;0;%hNAEJs8BiM{zsJwh`R94m1Uo!4? z39kvFJP?gq1^>M|N%cZKdS#bU8;b@lcWqhfPAr{@WmKGfA_%QYut%V`c3Y#4g1 zz)-s-crThS$~H8ot^|JYGy*ZMB@p8hXvOcBPn1p~6&X7Wzs$bSYEZLF{`9Ns*W(W8 z<0+StZts^|_c$5PtG}@mX|)nh%ZlVagPw67EksD8pbo%8l_L(8OnLEU!@@f5Q~CR} zjv_sKATp~GSX4yg?J-!swd?3-yL;ugnUs#Hs)_(XwK>HBt*I|I_X;(clm(>d%;3I|D*l)L``CXnqg2Y)Nq))I0z$mYvR+k|o3ONsN)XvaCn@d0d>pWUfdhNBP z6m}PL>Sp0a1_7)`mco5;;VOSz!TX7cjla!!<{t^K4~59|!H_;igkW{4V;2TQS>(kw z!gg>RZ2X#45tot5!}Bk<&SQ_bO1Qli_ap?;QW@Mr5LzkX=$wDnTEZxQhDDECB3 zI`qjdJ$jGNyR3P%r3OC2{HN-&AHw5z34S1O`Y7;>J7&4nVD8`|{f|-L^xvZJTTei} z)iN4~}`R$HsCbg{7IrN#5KJ^pZ}+ zsoWGgC;sx0Wc8W8itjuUy8=Z{0>e6@_ZnY_I(D4r$*tuKOUoULjg^}gs$&3aS`kxk zZn*& zSe`XEMVEOkTlVz9#-~p8XT0-P;o^prl?*~fQ!qoP%)#$_Y;QXEZF9*n zP{hHx;FQS^9l_5M%V04(ZXu|jx-OtC(?^qOmt7+~iCl(-?-jKA2VDA3=~Aw=;!X&f zR=tQfu8O&pz$_G{JAfj;8}k>=EIO1C$)VR2!D#_;-gF!UZnTqK63ZzhciVN;+@cTS zRp-*kBbKlL$&sCV9Btwn7Bk$1dUjy3ueqNo053Z-x=V4CVgwkwg`k*AIE%LElWP&^ z;*lfIWrxv3=KeuE2dEE6%{$#;@GkXtef*h%|1SyrN4`qXbuTZ=I7iM4$WmLQ0R^P> z>xZ}K&JG9J{xz(IUOUVf`2|NDr0RB+y)rx(Af4lQ=g-;fDHdU|k9zSpwkthuHYaod zUZm}7Tpns4VF`%dv|M=Oqeh-{)#Bk%0XjF22z`!Jy!9=)L-l+^`Y@s2peE(r<1_ng zCi|shfqYCOx%^^5-HS*^Kp`tar|o4E-vf@o!{}XshrQ<|Hbnk8YBv;@SgM5m3K zx9oiG8!2M(W4R{0`SP6EN6D=H#S9BTR6G`QZK^?N-@|*7wDgGOJnpDP$=ePVDXnji zjQG6CcMtq0Nf>o010l8ISny2j+6jiUii^x?9*yRe@)s>C7bb2bD7I4W?1bhVu<D z8`dmnbaLHxEOZs40xRFwHc|IF?^3{Kp}HG1(xXi9qGK|SM`#+K^D5e{{9v04mC6me zoPxA3FAtM3cPFyUpp%j1;V9har2=(pEed?NNY=<)+=&x?M!4X{F^0<3GKZH-9H5G7 zy$%up3gEJh(nuBy6U?w8>jkShxc{n|1_bKC%=aweeh6U4QP4wBgk^WG9EdKekkK$j zL^r>L_nu9NQ4mV+Pc<{&YO=ZeI`?01c zEB}qh+tu3f8^#67_id|#d*!7ULR#}Wb}AO7KJiE&E~MX3a!NP!#5_v|`gulRZNuNrn<{qu=n z*P-I24rEjWH{Cxy!%{NAfKUkwTh7}Z*%IF}98_$RBt;%};Br>XysU-_=ZO#GKYB#T zVn?{sJ+6X%uOIJHKYzg53k5qYj#&AArSlrksB3?$&xhecn-D=h-jYD$vW=ny#LBgd zkMHjHqCPZxT&UKGK&PkO3_<c3>o>q^Wvyg*2KW$iQb#Jsnn?A+ zI;0CTdK5@XN?Igq@z@jcunrvVl^vY33xW~$y;(4s2yvaZ!~aP1-XdHzX$$N}ZTo0i z(YVSX&5CQdTk<|c8NnH&Ze-ZYk9g>FoMxiqBdH({xB;>@Ke~N~=6nLW0$am{GBKr$CB>uPg)%HjG{B|Dczq-~U$!jMn`@k9-n;Wdg#x z&wlN4E{m;8@MVvYaC~DGkF?*tBjC1Wr)qBSeG}z7AR!y;>!U>VNK)3~F>lLE>(w#acu*AZ!?*W9(>1262EXxLF$iSyIpZsqRJHL{NDg%!tV z65TBqh&L9ZT3UI9WKIudM?C8FL5e`aydDi-Gniq5=)Gx_>RXb4k`99KeP(K`UnU!9 zMmSub9QD-qZ2LrB{4jq?spS2%wn`Du*suj*S7TW%2wxx_F=JSHf z0Ql~u4%ncaRxu2Vr?d_IC@({R+F{gY}G|l)WuO1{VPlFPk(S;c;FL16W!t@QywLH zl9Rt6RM5Wi&z-QL=E7dt_2y;^-WI2?+j!;fx?DWQ7@eTF%X|IuhxKpBSrIMYC55ge3;jj$9GS z5zz<^i_fJl;tssOq*Z7`{TiyV+tBd?9;GaaB+MsCj@aW$Z(6F1~0@RzoSnHmD z@jpTEMI|Fxtxh@!U9Cr2oefnu;JPAuM zjlIgo!LYEy41e!Yzdy9m4(xL60Tvk*z8s*Yg(@?c!~B`M+h4wKprcC+s@ltSR)QPk zWl2tM)nGgp7yeD#5!ZF)8gTblTB(QILP}K6zRSpbXD54X==n}W;g_f|=42=%ML)IZ z-51buFlMKsv`=x)yq_3*+=T;xFHX7tSzrm%vO$xIkHLvkyFmDW<^p7Rp&OXDHj{Yf zwZz|8nO9HyQY6YO0+Ql@Yvox#JSR4dGt2gXT1EQ~Rn_@#>94!gJ&GY|2ZaiC3uJ!c zFypbUjYFpFl(l%|>N{3tW_~H7-Wbsnw}XDUEMKEMeK#3oN(nIpINv(l*4JRVYJ<)* zkGJhUS{c3S_gJf*JJY}QYOh9~C<$yeE+wajFuB;86;FH>uw=HQoG)m@HbC7Qb>NQ% zLD7xq&5D`!b0emId{S>u`#uu@Z!oibjfO1C>Lar5ZTVYGcr_BVV6qI24}f>?NA}en zD39acr#ajlSN{u_qJMUzJzQy!e%Fu^y{Dnht~M zU(~zWko%H!n8$-}mP{0W*^gWx!LqWJ8|ih-{TL+Zw z263Cdr|X?8LZ$UD8CM=f?`45R=AOe;k`I&~Y&%qNcn+0hseeZPLInN5@xWa)9e|2? z>2pzAh4CeL_U)0qeG=~RJ^~w|IKgm^!I07?sUyHXE=wfs+->`7D<2sg?qA!nOEYi{ zX1fIkXoK2^9Rgg2|~d!&P% zCK$|&(Dn7xYS4Ex&`lFY7BRUO|4JYrr3k$Ll}S~fR^?7{U4=>qS(Wgd1;4Nm!T9^s z2=Md?5n-1d$-xZ`vvAA0-%V2;L4-i{QnWW!uac#P``%GO|GX1N>TNGll7-D!AF{Yg z<}r2vXWb zKKXvLV|+K)Dn*rrU0M2GWVfN~UTYU>^y&MQT+d=R73^A8v6c3gDMiy?zMpx(y^8c3 z%x1o9Z^QCoFWLffgJmcwt4D7pw3g2cUC4Ar7N~tQTl&r8mdt7hZsXnDw2F$-Qk8g2 zA@W_z0sCFo&TL7mGr;4Dpyhkv`PyKH{gXQ)??0N)mEHaYJ^Sx|lXTVwH!P*GLOvSz zkW_6rQ~%J9nK8MC(7@y&jNTK#1>gdfxigZ&qBqsDwc_tTKf4o2J&pJ_g6F}7-l$xq zLI#^uBshL*nD!$VI48<_wWtb=8)+0XMun+D+YgE8(!Z6KlAqZk5G5ae0rx)NF6bj` zbI!;_r{Kw!re5sz!VgV-U1S=yq>ky|M6LL?>bi(LD|yJw6h=09Kc`!JXuG@ z`1-TQmaO(cjJ@w_p4@r2(8LtoyZ*H$w%%5kSuN57_OPZ ze4s1qP2FqWnVn}#WZrY~m6}S03aRL4qM4op=F#q6cKyyzZ#>qf#|^0|;AHSRLR1{n z7UXR)HlIR-qH)}BJO-8kmhTNXHCpolNv#>3!O=d2p+}p|3bD58f2&%=rj7q^x5HGqxUovk`|VnG)Dmq6k_6ykS!2Fj>~ ze$aX-e(j5m%Y@AOx&1?#IG8IZ=vjtCf>K+@sYrun86>4eYUfO_!szi*V>$Pg`%2)v zsmYZZZg9Hl>g$0MifQEQ@*in>$V_xO&^Lgpt7V8d^!4_1V%cyFA?gSM-Fn>_Qp-fw zK#`{qbdZj}i4?i6Akp^pRQX%vf2h96Il2waTY+c((yP!PE)fWu?wn1$2~H$~dPZF$ zag>GxBhE$8E)n$qRCN5e+Mh8uZTaoj`&=mdzqH`{7mL1xNR2%#Oh(q<^5YFqhynSu z4NTCRdTws6sYLI|w%y9ZyQNlrlO+x{lDoJsJ$GH-eZAP%j1KQwh5QYSM2RQ4R~t8d z@T}dd(FhK&ebo5o2xVU3@}-NCrOcPs<=aARlfOfDLa7MYG^_{N5n}8An+JpB=$Klm z0_;;cjz%RjH`5y~Cnx5QN6@(I-^8^E+ivvs{i??G1kGAt$3S{OU;n+S{&M@?d_m5a zn>ljB_RH*F0wLN7U=p5CL-(s+u_%A|;qtKSfD&h#DfBuSr~Fn_`w^EoJ+DL=J&T7$ zD-U1RhLT_Vm{Hf}a_zx9iO?i&j;jxTUOpHJUztnWmO9OhV5EJ9ZVddRuDAJf>7B`M zVn5$?#?@5T&SIu%v~HT`R-5^#(Z8CelqgKaY!^TA3qX8RQv4j93O6;zL=`PBr|8eZ z0HOq_i4CUHINgms&SF)98jmFJm(=(JH*nM9znNre1PaLV*q@PHnwn${etNX(=!PG8 z?p@3|-8$$n&gEslsz|Y+ZXdK7teI=nGuE;6$N@p?`emo`sS_`olytO!s|3?S?K?>(H$U|3BDa=8Knf zn`Qd_u)_p9E*{*~tk*AjFf_#VFKG{mKT}0++G6e>T0M)w)_k&AgRcYoHOx1d1YTP6 zUyKRRE$d-*Z-0)NsMwe>XxfuYY+Efz7@c24r$c*I8%Dzv^?HDo4c?&(zl|FF2(TqH zd{}_Aw)W_bYek^s*#2Ry;q_7tBa01IDg^t{nv7D9?9+f&2gJwnc*n<%jl0kTamGoqoLg-~nUy z_)}F(qfz8*sRHXEIpp1);$l^`k?;xemc?GsK@%A#XKsaFM!Voi{jkj~;f46kH1`Lp zkVf(U>*(10tQ$B$ZY39Q>)${LP4>>{ZyIS%h|6Zr`G)X3-w<%BJYRy;#imPrO-B0r z$%Qn}gBE?SIp41D&D#CL>qcof&$T(As(yXmg!ohnX#Fbp2*a4FgnC=l^oL^O`v4Gw ztI%ZQhMdSM&(*yWq<(k9W9D7@WjNsCb^u~2g_QMs_~T5iUevoFpkOC;Mgfezfs*4v z5U4uv?TxUJ{Gm-VPV1l%bmqn4|7PX69*OP`c!;XBNNEN&P8Ot4=0~1~%Bvb)8%%5; z^R;Wc^v_*Leg_1wUY8vOWuFxplFoaFh7)nENRPd zBHbidyC}`;C4U1d*zG##5%w4~up-n8z}+*Z&z9~BVRYYIM60Q(@r|nQnF_AGFrhdA z&_KS#Jysws(xkwES^g}hVh!R2=!~E@p+AY0ouVCCx+W5Hcy)t21hzjwVt1R9Xo<$B zAL{os&WK~aTj;{En&jN4TUWPVT-#T&y3>l#*VU7e^ow)4jTlg&{kf3D^^_B3<8 zAT4?#)JX;opJ&+D=zBK{CAlzJn-W1=uynn}%r=_Kx0bzD4t?KF1|JNl*)anRtX$rf&@2&Ygi%#^u~nUdu7zG~;5t?M$az^jQFz&RR=?_iwc;jzyw zBWMOTDR_2q%aw3`kC8R2PD!=<^XpjcgTf;7z9T^}y_D-G^_@RB&~fBGL10hcr=2DR za3#=s6Opxrsp?8g{lp#nZ@BmX=NNZw`3^Z%12@FsG5`yoL_}|=ca2+^kO%f7Cekb8 zuk&pV>WLia(2wLS{l1ar(EHitE$wK&j^RM>Wi`9iLwZJri5qEKh$XZOYx(gPd37Xc zUD|bf-~>y|RsWFJ`l3tEzWtZg=7UG4zN+3$WKMD3tw=XrE?**q3as{Ct27jWp|VT8 zspkVSKy$YAXcY|PL$QBt!7?-%-hDgay&x!1I3anL!RBIknf!d=jb;o;8Bb39?J*`>3}pYUK`6VS zl6oYs1vn|%s$uXqL+c9rggcB|NO;4?2bA!ih5R+0 z(ZhXBuQj5xhJ9_Nc4}I(9(7)A=MPrfHStDQ>`i-=3;twI<>SNK21RoINV}zX$tg|a zTt~sB?B(+3XH&0z4U)DeAL{IB9y@aEy>Adpok91GdL@;Yq8UpDtpHmB&2DLTf}3F<;M--c;EVz$^GBjT zNIWi%2k7-FZdj_>Yg7tV$8C7XXC?x}wfo&Nzn$fc4(fB_eT7T+p!(3ApQzY$=4!-E z8VSUD-}#(+Xbu5&0NE>RLL*$zl@H7Gv1^OZ zaD{NO0cT0@@{Gu#R5(28mV%l>yt>rH2N}@zD9E6MRkSuySOo_p)Ob= z9+6D@0%!Uyiz6oMY-!2wJ9g3<&x|=I%4d&|eAlxRdlFXxh8-zGhYl&l=9rxT$3ePL zc773S8+IzfN4dGps4+^tFdU;Bv=Mmu2Bc{A0;3D&W9GJ62;7C!X9Lu+<&^m5>eEg& zTwEy>A|~gc0A+xyqx(=Js@mLPDl5)MF2stN*bH0nj#EZdjGpFgL=8gf$Gr!BwHUx< za<1(UbyPKNF*}d542DJmOlG{juO4e#YEHdEjr+*#LlvUm;Gdx}(HV-U)3fo&a5YZZ zGhfnGbM%J{_M4#!Q=DsOu7=91<(`JDoZNT)Oi(a=(ZAe*b@vS}^_R329g`jthY{r5 zhzy9?yFfjrB3Sq)Es%`3<>IVGblwLNqZ`k-=2mB*_W0W#=Ml!p^(@N#au2%fYUzd# zYPJH1ulS%~r$RRwDWs3Fmn>5hoC|@@s^!(X*9@6 zJZeDFI`F0|EA)%zroyu`<{RGSKyP&y2P^YN)aNV`eFE=_98&x2wR{KLqehghH?b-d zk}d=8j~6cD3rI`&r0nw|d!=hbZ?lFVM@M`hGFVe$@N0P1z>0wVGJ4&j#7V~M4s>w{ zfzK-GQ=dWeEma3OM6@+%Mznpg>#LlMDG6io{z~KxzDbYtJ%rS>a{-#MCc%oS3%!)L zi9oLab#s@0p3a&0jZd}mm7iHd$T|vz^VvwlWRQt0WkA-}PKUo(E!m54ovyj|YUQQJ zz$>DXzuoo2MkDtcQpZ0WqLrzA5>eOiOrHx&r1-+aEI&N3nY4f`uCocovzcFlwd;TU zbdE-hKS0KM(-TMfe1_tAoyICLu1Lq(x{;OV!lGyu9A49`weF%>Fbj+tf?YxoM5Cn~ zS4dSVCDv#H#8tzSMj2@>WZWWQp@`KZa~b%uFJ9yES`nB}eJ+K-wB*Ek8#fZC) z%4B+cn1M#6(NN0s#QYfNXyI8qdKG+0x^%I4L{COAX@Gi49mzN14ydRC1vOa`!H0V# z);}!!yD_~<>%G2uNx(@csdM= z9i*+dsHL)4bl){YJ-kmWq4c+T8>-W#k{$RW2G_z&UVYv1t7VZe#W&AUq8*5Hi+n0Q zbaSkMcVl0{K5=!^xH}cL9qFAuIwUUuAL_6_a-)=38?PO)0p#RnU<9 z@_SUt7U)r*sXSP*uWA-(iAwm=Fp_x1eHAPzHz3ib0#)|=X z^e0+H7D5;KJsLt?S{`AqkUlq+c@ht`OlTw(2rKo_(B)^ImR0hfZ&n!dUTJfa;kSR~ zLf{ZDDWzcrlvBK_cg&1iec&pp|S$D>`lb#qKqJ5(b-BiR)0aR(z;z0rJeUV|r6&H<}=DXb&=Fn%Z;DhkGwD0o)#j zK4Ip|zN6|f(wKu*q8HK-x1nE9sd9tfUm!i9^C=nnN8iqCtS3_gPb9adP<0uph|RYp zvaRR!`r_14p`!q1G|OP?tZ!32n-w3r^gVj21|!EGEt^&zDcA5W!>rq0H^^r+sdFz% zM6GwNvCX@(@amb4Q)dZz+#9JZ4ZKnc!|p>k>RdlG9zC}k+1KZ?!J%tH>RyH-CjCb^ zP~WI?30`(e#uYs{c8APp0%4iet?X;*;#0&QwAx}?9+teiJOJ3NChJ7QNX+GttQDvL z@jhwHKg#p5Td!fG#Pmhj?2Tb3Bx%L04KJ-YlfGPqX67vy=l~vW_<_)cijCY9SDm{; zSNamkEz1Q%_{C)vJlvf=(LUy+9$xha4yxurjY9BShAO!avTRCO zH(0xVS*CoPbtITw=44S`$!U&E;EFFhx_!h6<1@lHqh6o_$XbMK&|J*Xp>8zB0uHsr zBMQkC?g;GM9-)KXf-Hsa` zunx7UG+2*`?+g-vIlGOn0?tSeJnM+zjC!WmM4xe|iF?J+>O^b?vp^lVQy=$&2=(S^ z$z_>At8hcyajJ=T+PY3Ks%ScIXV%B;lS*j7XIcc5(zQ%Pdch2m?viSOjjyHRK65+1 zKD#>f0$1qa3V=CP6Cp#68|wYojV11JC7|{km{Mp{ou(68_+Yjhg3HME-sZf69-osO za=&Zo4VM{zS{sCUZxk%|`&hVzsueB>D=ui2Y9*~bTW$lE;(&jn4^T&i|9^Zdk^X@>YXxe6yt`XtXa^M>^BBN z@f8!+6(yxb)yauy(7H>y9zD&k+^Gjw_r^9f>)cec?(o$^Je^<0BJLXfFNXr!q$0TYolwe#0CaGKUII535O?Yi=ISlu%)5g`61y>| zx~r*Q(;PGur??IJ_sSgDr%_~551CiCo|n6KF9|xWZnvVAsE)<9dqGzYu@`*&pR?wF z%BN4Y{!y{YhR@T$_tA708J=D!=2(?K2Z=!BmLCh^w+=dBW2yidij`>zK$)MBHoN6D zz!g?+wC$I>33W``vOw)1^~;gu1yfp5s59KXDq_#P`bHam-jx1$q0Qq7Ne}Avgfwqp z+Sicj1uTt7CK)0greJTlqFor!dFGtXaKTHT?Ai(hpJW$tBUwfUTXYMt=ZiP7Arb9- zpFEu~v>RP^=GcBfi`xaFxMENGAlW`kq%Sk3j7}vD0B1TGBMn#@z7+1o_)u(7T=U$W zNpi;16#AU8&a&#Y&<-I4B|=3Yys!mM&HxWy)L^Lrt^ECBA$?B-7B6IuHZS6FW4gM{ z!n`d=kY*W+3^)d#>4gb(%L4C3z=o8yp;l=04Q|}U zsLFxNO4lBFi#q3ZowD;=or1i{U^yOOwl2q4eB2)0ssuqc+!-lkSgXW-ol*VnFDHXP zPTZH53L(@cj_8z6$CoZxN}EtStxKc5n~-x%7pQEMS)!1)RyUz2lU6A-A{n)v+r^c_ z?SiK?z-B9mJqu1_9$AcmC;Blx#{t}5Lgp0jfc4m6hI?0I4u>l6uI+X1R@~k8LfkbgudRakw%y@>Twc~ zzu*&&T83Yfu8*zDul#j3u%XCmSyTmP{(Y8)6-ZP$>_>u_^ZZ{b!7dG=MCL(Dq2w2@ zA1)F%-iD9`=W;%4xK6WHT>cRFA}0*xlN~Q$ZzV2G#gH1KgZDlVK@rT@j%FT(C0xh8 z%-${m!A?iy6c99wFIU{Dzxz5n44#mmd(>vq$UG?jPXS83p`>K>mH#h)qJ#touRU_yXzzO|FUvE%=Vct`-Om4R{5Fswfkqr#u#qG zEGTX=l6-dYGOx)R^(jN!BjI=`fhg&d+;mavN$Zh~`zpj9`XOu0sF8Krn&O6s09CAW zrrS9r);3+P9GcMga=}|$p-_)`0KAA zHmZ_(d?OCHEEJDws;kc~AgO6C0ndh-nYPEL3Kc%>SudAh)}rQlwUD=uxS-}ObfL`Y zoVI?&5?=CayX>m!gqhHKzTx(vL%IlCWR$;ycAwaPLV3L zu317RFgMq@6qCjHv79&;T*%V*K4QYyUZNa-U&B}GH0ng=3)`QrlLjuuvpb?R&faP7 z2ykF@8&7B5uugAnZD98~bn?4K_W2XA*27k8Po#R^C2i(18eb8M)3OQ3W$FR#fiUaB zX^4{NM`V(>znUkZF2<9Y(T6mSrZINV%>+l$Ha|f<{<^2b7JqOlY@#1gexwD80HMeC zv{m|Q>nT%(djoCWiaYiS%gPuzs9Urv0LR=8ZOed2YJBL~IPjkl5CMC^@r)fyx2{+{ zDUgKv$vU>mDPj+Xq;Vf$>{i4!+;g6S<0;nT!)CQ;GPZ5K29t5ngb1H$g$}D07_)E8 zQ&=^A06B&0)KJE%5({uB<d9YV}Py8YlmO)kCH4`TT1 zA8zy*(vLtKuiu!W%}f*DNkV}uq5KLH@Tzmc$@jGBfl#w|XEm&H%FiHk<26^OpyzzeoAk@x`397g*UP(AD*?;RzdDD(Wm);|NA7$L}u-eaP!z0aw&ub0_YghyB z!h^u$86En`L+$hqdMx!Z%95eSa85K~O-Jk&R{cZyLUA<3$bQX!eD;3zbt6W;DUdAS ziGi9Pdd4o2@*By*9ywnOxQ9vym<+cY%HHIwKr7j*axQlDy3ENEQ4hh{VDFQ%_qBWL zSBh?GT)cM3#xd$++_LYL8f;-j!0SWDc7uJfl|z5@k|jsNtvp%+voMBgd`0&Y1jrDUN}1{uRn zpAn~mPy}m`?2CViH1JQHvX(#nTt|9+{ZGHW7O(7nW#{x{Q-J2=`11GDw$b0@Cx@!T zd>W(W|Libz%zFTMI0ha^f{yO!U954?I4IA8h55!}?0N%MHG~|a3l#@P=?INkIK$R1 zyY4i$J530a3s*S~ow9VUe6+m*R{q{?j=|Jq`b`=Io(j}8rM>^@2&lxNBzS9MX(uP$JN14PSUt?-;E4Zn=>{u$fZ_^T+r zE~Uo>wj18L83&0ZdS1%55Z za06|GF$>k9O7rkl8w-z>(@C~ta!u|9d8%YS%vt-`N2)`H!t@{ufg)|Wq$MeCM13BY zu^1o5HHsaI8(@?E<)7`uE%D!X-5_dq98$-|!AHsU3LAZSg=JGGulF56!Et#)OI@@> zn1Y5Y%D91P!HTNKszV9f0>P*C`jDd#!V%fsHrIaRoWCE(a%OnU$F;w4l0*Ylg2PB= z73}eQcqN~F2l?@#EP)Igi;D66=VIS<6!A!WJ;kr7pG3L$)1{|oRk>PMqTha2&Az*- zc%3rk)Ol<6Q)H(1tOwSIVM|QsF67a9M^UP1qI;}VvD4TRjO>a(m4Z_aX$!gw3gasdcDYDseOfa~kiy7O&j)%J zfNtig-FR5RZyeQcPW!$PD8uYlX{iJQ5as=U3P98{oz55E!a9H28-WjlCsnl18;e#2 za4sX9lp9^1POBAH@2Ekor(3uvV7-a60`|GyLEKL`G`fx3<3b(oo`41a;UvI97gWAO zWargPA}%&C2k@aepGD9w((2x3Q9VA+i^t)drcv@^Ws{;ZbLxb!&^0|OAI80&5O3cm zU=m?POf+-az!X1*yCG_Izro14-~^y{3m8aj|Lv`_1sww~LrDWh0`@D#M@NAl7|~`w z;KrX|EEbpf-^AkbQD3vJcR{lp{FeuvZ)jC8y4foz)7-!cHw{J49=3qe25J<>KAN2* z;c*2>+7m7*e)WRS;*?g%K1rm!S@dL^8c-8tfWTCW(J9=WJ{2TdF_he*gL#R>eE%-S z-UEarLTdz}H>ceT?zCZ>*mYbDj6E)sIzkcOFa@Yf-h*99y(X>$<|E*Nh_um$`y+2(tSqfuPn1`@-b4@|?*Zpfjt>9y-pe-+CR#4~1 z5y%yXkFqhuijm0-m58;ye|R8aa*8btdYEA+18a|PmS^Qt<>Oq zM%)3@t*i9;2brI@AjfI_)?Ha!SNiLx46IX8`D_Weub72o5|Bq)*m_#B(>eeAu$D63 z^0EEAlF;B%thgT#qHNHvs4Lv319~RqObd7uTT|56)0XkfW&E2?tutfZ9lSoeK)zvl z*XI#A5J^3rw_r1VjTn9wIMGWpwg2fP2n+l^5yYHuoty1idrBsy<$&7_k^XVN;Xe2~k*!!hwe`E}@@! z1t;zH!XX>}n{mn;$2Dr9aS_zOZYYfth&=xZLb~vK5Yor|rv-C<$s6ZVj9A+Qu;lvX zC?mT$x{eM@=NixLKO(-NdKK-n30)%3V5bE_kS7~d-h!HUH52O+a(o>MxL-Qs*o2Kk zUUQy?wE2@!bwH)S{#8;c(QVR_;_)fBCr-=0r1y~$a--{|fvJZ%DJ<0c(f)cJT{Xs> z4t|snRTxyU!{U!5u^Ffd`(t6`!a8&W8?G31dgb`#pEstrO0<|qKkBoMdlLi(D6I4R z@ib2UTR4&z`BgY7EoW&!Npv!h6*%$K%#!&p%MmF0!$OJoHToObRa-zjLXq3`S+IBIZ@ugV+6Oa@KDf7O@ZM~hfmgh&pJY^rWQTFP zN9{dJa1dSu|DLY}-vbfIOx5qb{Gk|bcB#M7qVKb0X3+=QtOoRz38|AGz9^mw4*M;8 zPZ4W|h$@LxUr~>iyCq^XDIls;V^-BMYxGp`>@6Sli3o)?t#?ZpLI8a79#vMXzN#qv z*H}<(QlAxb};d4IomNSIw?a#9YebyWL-QJmbs1KgKc}YDZ z-d(LDu@(b%Gqwfx-zhg``ODYI$;LzpEW=sn%B?yX<{+g-`t7hKYl(>J!#5M?M5O)n zC$g6_r6sPDuJmP&&U2eQCt+P#49ertW}UFQ!^4#(u&_qlhw z_OIrfw9{@(M`g2_B5_E>ppP?P>H&m; zyekXb{BB(q^BL}8apxCX5CtF{5`#>tD-cZdZw3>Y?oho;pvhg7SD%aK$?WsiqgCTZ zXE9w3VtyOrtA4jt;=;)db+obJy7}u$2{9;bJ=g)e}LiHw&)gqF^^;)su50sc+ z7RHa2i#NY?a8;gG5`XD)CH6ih1q^$-#tH^ksaP_DWe`igXuHNCvfUPl}0prjcaTodc_38?nZWTDVmMnC_HHWTo0a$Gwu1#7& zANvoZExjHL7Y+bxrGA@wJ4_`GAAhw%1$6P$9mDpv&sGUH8cqbv55#LiuNJ@fJ~VNM z7P(L#`4eQ>*?Lbx_?`q0ui!T8Hv$=YRjfw(Oa%|gFq_K_ml1phOmH%!7SRxWP#DgPF}eDIrhx?3j~f3 z9#G0=F6o?J|6@$?XOIrUEpy+lCjXBqqJV*0PSAESKk&5o+eN?rZ$@7;woN{bks;Y~ zhbxRjV{k zGgELhj+!lSbO41kp62adN`8NkuFYnt7_wJ9FJX%C+(MIYbsVGyWK*T^ z+f7v-fsp6bS`Cy}CTFtGWXHhJNnH!Cx3lW?l*nS(9 zV5#SHHw&Uh%;Qu9vPZur!`VVlJ;EsWzIo4rRW%x)UKoejp9jG70QUIT6k|N-iq%mw zSPdtm1U-kR2GVR{<(ww64BCoY#&Ka=qtD?PC@M^QoZG{ORkzNvm26z~^T;S9riMde zxWz^-g8jHpnIeIyBU40F4flx6;sjGE0;6ZmeFaM~Odx+~LXpb?XUQT@cp0x~5E&wcAV|&UxJltc%Ni5QEgNC> zTn;-MQsE=4NqZ#4>izDyTFgMy!dBqm64NREXPpQAP3L`1I#j*dgnwt}QmnR*9hXdSRq)#Qt!%nV7Lc5(AG5%1=$m%* z3fE01rw7Vh{Tyhp*huI?ow---Bu;Rdg8_iSkBf2ta4L>fadzYEHCE+bjZQ188;8D* zitqeKeLei4iVvG}N}>z)Ma%&YEqGfPd^8~pz`eMy3qY{vh-d7|h;t*!>6yDKJ+Kr! z=l&J!(z!l5q)79;qbj%A=$mZ%o9G!F0D6T{T5^$5yA>w9&y=ZL#>C* zJL|sE#mJ+YlI8Z^g{agad1s$)QhacLDRdUd{u)TsKKLtJun?-|NoeHKs4H&35Zoyrfi_iSAUK8)p;oOWXmaHx$iy<*3jQm+zNcnR24 zhVga2Pol6!bFqi2fgWY}YOKPyv6w9uH0pTcxBA(wt$WcvKepz`$#}1}pB#cubtayo* zpjH-Pz6ZvMkHD0zFeXokuavc|E&za2f!bkU9}S-Bktd?2g<~I6h;&C=`XUFK+=rRL ztu}pS90GOYxN$`MpE0~b*bA*t7Q>o#9}`XUQiWX=nq_2@;YhHB>d&?(6~IuPRLc*pKi3_nU z3t2zMeq!QZ#0Qp< zl_$wD!%hMVx_Mvv!e3SE)yL{WL;ncZrn|c}yte%2!%JCj33%8k*QE!=4~^-{{JYE_ zDs?7kgOipxZ9m9*&cUl5gbf}8(4fO$=kKSEtTqj%ae;e`SxrJ`07i^vXebfnS!_7I z`_V$s96SLSYwmG_Mdm8y=MvpWLDtbZk8qVBp?Ta3)DTM_Sw5<+PMJB`=Z|Z+>2E+SZy7L6$a%2+z<*# zDZE-M$K#`vr`jEMywfjI1mbDUw*`%5=H!^Ik2&TK#Gg|2w?3|rjxCHPPzkeL+3bWc z{)7`eN>KAAB`EvBLOV2K_yFs`anA4qNvJ|mM}e!F%|9kqJ#O~hax%3KzSbq^U0}MG zi+2V0J*LY@&P_T_t%Ih65UWw?5-S?*5U}|HTZ$nCy5MX94DLh+3SyWbGncGg|9VEv z+m+ozMMy{vo3i4&$d6b3*%QWGnq$3@!))TV%U)}AR9V(!f*1XnxLatnd>?^n~ zU13fZyf8~AGYZH``4070Hp6BLSwLdbwh8tfgXC|Lz3Ki@LYpry$~8r4lZt_3)trhZ z5qo<@^gt7^_X@(ADEX0b6B*hgtbSXJ+TD#9dYwnehXVQuaB16nH>M+^@~PK>@QX&o zl);KY-~*iAvKiqzS>p zexU=#m*VUB1jXFLzA&F^?C(y!$J+nya4TZb{W}<4(2n<1rkT^gI}y=HoZ4L`)-S>d z`AH`*(Kic&B7@7~c4a37){Zt@e)kILgc+Mwj!Y(PGYZNdI* zsiZr+XCwiC0Uq}C-AMDFN5Qk4{V4~x1WxE1eKK)N)V8;t*%Gep-#DQ|NEB0B@I^Y+ zDM~;}TfW?|KgG0dMY-ThuXN9J+8>CLk_jFT@!Wn#nax_IvEm0p0~cKWEy>V|66evt zm`Q6VD(4J4)$n20FAuwu24plwA1QHEVd_O$O{+?rx8pfNH`slQ0;*FFsSEh$qgG2l z{$%qMZd71M+th%(@s=Fs|G28kLVyVE_nV9P`{ChY3!%0rSlX?GtkvQfiSd&Je{HLZ zLG$nTH+vU}NJf>+Q`Fatp5yZ7q*R90wL9Gln!+yfC~Sc5C3jM}+g< zNuPk!;$>$^Ii>%SRP(oS^#6>j^S@vFe*yaV|G_I$U#$RAFwb(NJfEaG4L?=R3LlHE zzrS`uEz`+)_^Ml0UX$qH$4Kh$RWV?be1%sBi5@)*K*nNY%7$5VK3ztW^vocA)f{s8 z5U15|g>n{%RtQA>;#)jXjYR#>$BSL@B9-Spsw3q0{boFEbc!Ytd-gQVxCYkEPOLSU z)Wthz*ha)57&(oU)Oa{#ENER`e6xDX+9h!FrCP$Ix`z^^iM2vG3n_3U=@Q zJ{%Tt5lUHK3B!o)dFS|2f@5i(B)Mml{yF)?G75 z>o+b!gnF>oK)M>5H>wzk{%9Z+*gefYq<7yRvvxa#R9HX-7@to z5k>=wWQQ~|Ix(FXz#_p?N}YoWKRL4-Y7Pm=Ps-c3UkE@^&-_GOU6S^GAly z_ypq*9&{7YR!k_x4ZqiTsF$1L+wMNRoFUr3;iWM1a4YmTe}C-l`^n7)U=4|#q7tF zhxpJ^>+*TD8jgY4Q!13%kJwf6@F~@h4DUynT))BYVr1iCWryO9yp^Z{T#8esXUVz! zICu7iecl%z?`^ueTW3SkYe3!RgTCIiJ0(p!e3XES{y+H;+Q0b_7k>nA5dYO-$|9&7 z1x9S6BrC*huMp+{MZz?HVyWn2Q&l#m6;ZMbPq7xCGG<*D>$I;atX75b4(~i$dH7E; zo5Z0LYSbvP2rL`~>U+w)b%mM>lrk!iP%rEZ?q1=!wNO;QF+^!vp@w^kMpejX;bc}mt0={<&u0-@DzqmP*}77n3JSNXR$|z z>_Z%j^U%Q^Bm=GSFx7)c{-&3r3APplOnHi7#isMC*A}xs+8`-OuKzE@`E@CTL)WpW zl>-tERg(h24GH_a=Wj2-#1wNd?G?8rMFY~+)m;Y-ICte)+HVd+ST3A3|Ks_w#WzJe zcU|1XCSFE-!=LScifq{0a8IrX0dHkkM)+2N!B}{b$hlF5|JrQV7&t83&|B1>QU;{`CGW4 zl)G&2_3U5h%ApCk;u|TigB}(-XbKE}*fzcLNIzz0T~SMyIX7L`okymP@{NARi-=UR z?YD2P=!lnxoKrRf9jL+UZ~fBAf=Vpc@mnfdw>`$VH|9n4nRv#^Atb1je3w`@gPK{& z)`W#;iy3zu44q-w79?M<_p)#sQaY(ZgO>pnCDh6ol2;1tk}6jXI81~oFSht=5RH~g zn=|n;ntqvDDo++fCED_L>R!M3#6+OGvtD-~8g@j$=CK!L*FTKg>$*$h_kWEgM70}V z!=ohz9;(K9?0OttY!nSd$ckMN11w_zQW)I+M=ZV0DQf`%d$OdqZ{P2m;TD(k9d(8fHBQes8hi< zOau7!Unt=_$^T74((m-8@{kf8uCSX)#D_+Xg~31zHnVX>RW?IUR4bsK=gy!a5Axe-G_6epAby!u$WVZ^M{+!bI#f zQNzXyj~eT@x9JTWYy{$~Z^x`+(Xdv*O>EU%Vgq)KP7LAW zW+QsL*ziS|AGZeruCnt!e=Fo`jKdbw^~sg|-FU>VbDJ7H?&kw4SHSRjwhBUUMTvt? z+vUgZrk=+u*&WfhCKDGez$;qSg?CX3a*Tx4OZ=TxPn(h7L^usQJ`_1oE`H3^Dahuf zhN88DV#c2pNkxuz9H@C4v)!OEZmyyPM+`d3N>%b`ILtkIHR4PAl2Rki5uSx{zkDKA z>Z5-*_=t};?E$NdNU;c@xzF)IbI>m`@7cMF7!6xaYvqp%NCqNb%+q4n0|#3?^PVzp zOMxxY5!OmN^)tA!EU*?=i>poNq~hf()L^`$`pD20K-goa6t{&$+3a0dmo)G+#89Mhpx_4q*Y zpowX`g9;ccq@g-7;@v3hRheKPA&cL6Xg;9q*05`em5@FFFQu%C3H55`H@!t{s0g_F zJ{Ro)QhZ&&8}9ADXLW&$9kT&1zX4#k6xkaME3~Kg9FS*TMVC-Hw?6d($ZI-w6{u}H z4EtEXR=!f{HC``sFNDwQW%9D5?&I%QK&;Ar+ubM5u`(lAbaE^h_EHQ;2_2qLR#nSa zwogLf9{y_q+@FB1zo1ewqf~xWqTD|3_ZJB1j!&Q^?Qk6>=8w-=D|#qjDfQNJ7CRxgDap2FK@lVsWb1-?(GTUgT(kHClFSL;Tm6^wD_qle{h=q=qH*YUo zxS|dq!G#ivLx3jRDYbLukl3bmFp|8ZEuM{91TfeUNxU%{b){2-`&E+H6JBVsVJOe;v<2ZLACy<0dX^^yQ@1-Y9-06o%Saz^uvz--J5vb_mvcenFbh$vUf_09Sek3XP z(sRZf@jkZ{@J_sru2ZLwFb?BYIsya6<-__g{TP$8YtbYK3ULvSH&&0_lB6ifP&?8n z8zHh886JawQdzC+y5Cb)3P9fJCMO;QsB7Ut;J=l0WdO@X) zlOyRp|I#(xNLu^0k;Zf^xC3ES04-s~f>$a5s0&~%xUvVzLdrOv#Ss%{?HBmFXZE~$ z%`tS6hmgm20=ofGrw)3JU%E826d5I$5tx%tN6|5jM3}#UAf?hu>3XqAqt!2vQIKE~ ziZOVd+GvV){d;-Yk*}X#b62yjFA+CjR^n1PIgatSASa1Zs;x z=aqKClk8LhW^{bjPwS~3k}RNFZsf=Ib;l}}5>V%+BDSl!w1}m}-!3*xoqzS}5%(3< z_Kmwdrt=F*Q-H2DO9kQ{i`n|Kdk1(X)?>vSdW-H@n^i=|hLwcZtj37l=1A(!S8sS7 zI+l)58jjBMh=bNXc2oZSd)-$=>Mtp+L(X#|GRSx7XY^R^jfnq2!JSe;GLI8ORdH>2 zCvZ4o3^bh7tM@jjA_?;G(I~*9DR4+a#~|+bQZ;UhQbiLalW!(=A*5mkL}{wnC{Sq# zE3w7(vz+P&L}C5{z#ZhlG#D@mQ>d+xheA8R=!5InI2xo)WAY3TJ)HrfrygGPv@9_; zoKvauiwaDb5G;&vi6*q9B*ZUAX53DB9N!vSNZ)ovr+^S#EWDnMeo}N zaPNvm1@Ya$_4b2V&pSD6K|k)?Qf1&EJy0d|l0Ul*1v9A=_o?SIWKFZEUJo}y_BoIK zybD$v14Pc2NJPEeRcOT1Io47Z1yEig>?e2;&$~VB>@iF~8!ms(-;BqgSiuR`z}~Z? z7C|HX@|ZC_3=SVEW>jKfjL~1YbNnmvKJUfD;;KC-hX!eIpcQV|#aPc6vB`m@g>xDR z5B0|$rrl1PXuL2%sc>c7s$F)ouw2e_LBPi74*<62`B0g8m0_j@z^R9Fszp@$&IC(E z#S3Jd=V`M&>(ABMxMOXZrS$aC6TuBfVE&~-7iZ1^>V4VKsT0k2b<=?pO!m5Rww5Pf z>o?gG+kisH5>j6HNm9Xio{~OKZKU3&k6S6#2V5}JV_JLg(3G2OpE`THY`gWPaWLcH z;kVX2KaP7bi)%`;pqTRx)Oc?H{iDCZCP1^TY5Zp91uI(`F;QNOdbb+PolUm~+Fj9- zHl(Lb+#2%K274X*ZMqr7jn|Gc(b99vsb#_)3aM);o321()gP?eS_iZnz*5kE!cw3v zhRu4Vb#VU*Wr5X-BVAYa#5XDrNNP+BydKWkk*D~)=9gz>Vrt4n)MgN8!fv-z(YXp3 zH+YW^yCL>XH8_tzte@LN2M8>zj%Oz3CE)C&GZVE2l&+CEkQnO!&F8v%XCJQV z^$#{%%#3#mrn#|FQoZWJ zQO<~+;N?}a1jurB;y3kQKWsE)P+~;Rd2H)t$}V3`J|_%E)-s~72|pS2Djm~;?A zrQ?Pl?nETp(VSAo)i<`%QA9)+eW?R3F@qx$3sy?I zO)JmwLivkk?1?6aqNgV*#+0Qi9hi4bs4oJ#S#Eh^5f`=RHs}LZ?$Q_%tcS5geu1X? zvyg=BJoUj_g!jA(`Seb3y1`bSF@!y*c)0Y+r|>1E{Dx-n7LvF=!-&LV^eazWioKeV zv_Ae=SQBxWbbqzjKyuuj;O};51#Z<&xFA^ZGFw?3TH&!AS|`e{_$yFkM7P*9+H@b$ ztiEw8_q+M zLCa4TYHQ*Z=hf@x54EbVD%nhq@485zGN$CB5>0IHB$aw6e4;;@ii;QRumWEeFwk*f zhh6E%O-kw}{Dv@b(34=5XNfN<#4(F*mUIW=u|~#4ES(_f&01kbf4KxF3DobpNP!x+ zgEB%BLnm3xkQLl0sVR%QtQW%z_-eTWMR*Yif9O*Vn{wS22cg0BGu_xcnj^67q9OT! zQd+0Xbx-t=?~@ zbRqJw&RYPdi(<0clTAfsxp@t0+$&;7V+40;j8{=$9cp+X2Q*i!lrKio#oaIB3n%7j zAs}G)0J4THBA_3LjgUl>cIK85!Il&^!`zhNTP;0WyYHR)tu>#aV8y}g6k2LRjIP)0 zFAs5!{hCfd;cl>YclD%z_=b_)B^fvHDK*mNGF|fupdRhd#G*EmiPnJ_?sm)D2YzeY z^O+#jr82Qwoa!n5ZZ?yK8cm$fAub_eVVq?{y|@1XJoE~O-?4fD8J>+j-a^-lq5g*z zc>hYhv8uDk;u>Zj0H&P)HF?>B}>5{yME8X2Cgz%QLXpkB*SN-;3tqD16bL9aDk8xE6c53>y!r7>dB zgL%DwM!cfcM!B;bLmHUgYfa#>=?3LMzUxR0;loH0@xf21@ri*b-zDisjcG~qY;P-@mAqvsqm z zo~k=-h(4HoP;x@SIUSqg38%C*0)7I(Lz_l4{T%tYB|4o)CB;QInRb7i1E{G0FX$h5 zM;5eG1(G(c*C631Lr&5VHQX^j`mjIE*pzx(G*J!xHJ+nNf;n; zfM|BOjhYJtyC^!&JSl*Oewwh$@H+q$444rS^Ru-@j1#&fL6k2$bs^oWFw=?7+0UJS z!d9?^uT`^e8Mk?UK=J z`K{fubx=Xjy7(5ySi5K8$+vDvEh|AigX@}a_q!?E=REg%FpK8!@FL;CpwXCah5h&D` z-LS(@b;3U32_JSm=0J4y?sotQtIqzs~NrF^%01`+4Z;HE|H7X0onMHAX-JB&hgn z22uH=YoM8MH;L=fbXV3Q8+#SlBY3M-N$6<8`0#t{A6Iq9{JcVi9De}-SB2e1>gqCn zA9$d^!IeE%mWprfy~YF3;;!%jwB!5d-8TWW{(2eT6A%DG1ESERrqVlQ0D-WVAu)b! z{t>W>bPR;IUBv(Znow+5t`scD`+ROcs0ch<$9ZCxAg!$z!v0q6yBi!Ajt7m^7!p`h zh_P%OngslH#%oDUqEupZ0$}-!siI+6=-1Gx_>Z zdfXBmY&qf=#Qq!gui22^Fai+{6SlEaf_X`h6IQEob>3fb>Q*1<|G`mY<7p#iuM6|t z>aM7-IspoTv+}Uj3+(!R#lRz?laoUD<}Au#K7`_`sRNB7GtQ;?GG?TEEEHlX-Ge2MiY8MIWyt!VcXu9ih`A zGGUqA9xA6A(Lc>V5kx%Q!yeMkB!K}wB??e|Uw@-dRdGH^6R`qE9q;0Se1-(TYp>w= z3#WM%d!OylxR+YC0RWt$G`L8h+`4Vq6729I_=pJWtE8fkkszn~G|-CCb%}Zqf-)I% zW@Pxi(U7zFaL#k=+SiKEty$zaKws?@n-Od?y;pGJQ!KOKudVK-k9&>{y-?t(+5ATE ze)toIX69f_N^*3G0swT&5FcZkz>I7#BgeP%1aZlHyhWkGyEM-!6lm*F59BEZ%R)qx z#evvf{rX8VsvlAWO1}#49~bTyLEkG3KRFb3T77_f!+qL~Jv>Pse`z=JVL|enR+g^! z@-0f|6<&HXaD#>FoVDj%CBG0-4?)Pbpcdg#t>*0cSB%NScICWV)VKvdUKZZskGkH! z61Az(bFB{aJs}ax04xqkB~prF#1t$@cEVS3Y|rH5jXVx zG_U0j4U=}~hp;c&^h!M_5hz3DrS$Gy8ZPPMkZYlcxr+TURG?q*Ol1eWeEBWR+Q(u2 z>SM6bz*e+_tylo*wY0>DUyD99a=ypfeL_4|VBdVt)G{C01H98|7e6QCc>f*im{PCCP_s4Z|zlsmD5dYpyt{#6qxHnRuV5O!^P>bshJ2MkI*;TWWgSZACOtMX*JAJTybrk2 zPJm${q5=BSj7%iSEBFIkbA28;ZT=Ng37rBsD;1ncIsf$~@Drvn3{%(EiAf)f$|pl2 z*s-LhdlX^KDJ3EbX5E7CIYz$vU}IR9Rn*sZlf6cLrA66c1Q4DwV4J>aU4*xM#v+Ky zDPM%yoGL7+;gA_{#G@`Abm_;P=s!0K*2$-d1nH7H&uR39_3W;Moe9R*j#1Bhh4iFH zJdI;R+6a-W%kjqpW(L(kV5?&pP8A-e5zP(JYlH^k3%rD6Q+tf?M!P!L=~m_gkJ|vP zSkK2zW5V^LYX(f$g+EOfWq+mF%|xR|L}h4_Q^b6e7=$JKLYzBT0AZ6*<#OP1dV1es z_wUR(Bxj8&XsaBr`0(h3j-*3KdNy!Go%h^qW6JAYK8TK3zTK@cVbRp5_dRuQ9zYRV zc)=iqyk>b7i9xh;WD)G53ZSY%yP8vFcMN5s1hftVv7z5j63{?O0TMxA&dVID|I6B|U z?xzBWkLF>ZLiU!(t3JW7AL?*^6(u5XH5b{wes0Lu1NB|e*puxaoLUKOkkwz4(eu(v zLD=)m`DSp-$3E}nJy&=cI&B}$s#ZEsXvRB2xZhiYa#)|j z8Rhbe*FMfnMh%d)bP8wFXZ96f+)#D>G06T+d7!)-3f7>D6P$9yNYDFwaeURrZV_kUPE z_W=4z>J(i?u^aF}45=!Gx;Z>PT~}Bl3aD5Fcy7{|h^f0jYJ4YkBJ4Q=vvKPRK)weG z1i>Qoy^f;@x;aag+uL*_ zT2mkRQscBEKua0tp9@`q3fUW+I9H(5jEq_Y-!Kt3yQdN`$eXPdp>Rq(9a%lI?@kE4 zU*AjG7TiDOrLZ!+K4%PL1V(U(FwQxbH+0HWO|H(x$1%z`L{tYGI>Yqp^XvjN=Ea-< z+UUcb5F>+u-zxf)EH6G&RFSK!PD|PS?x4y)Fzdv`Xq3_yvDj=Bw zL3cQ<{#>Qa_{lvE2Oy95#|N*sWA$FRgISGW7QE%{b!mqE@0&%m{uzP!+;hh3{m=FVKIc---cst|2alwGo5|d#il;Um! zLXpyOt9`|r$>F1`gLZWwtq)hEG|x>qq_5S$L&4srdaCa>dw>Go_@* zcEhZ@!8T?zFm&#r@h~TD=IxpEBK5KF#{;~Kcb$9{=$pS{=j9H12M zYn+Oph;PV3&I^ermMiNh_I91zOfK*?X#hsQKN#%Sk{5JG1;n!J_v?)8IMFZVln#e# zrMU@-=)N&frevDQ5Rjw;{M`+nP=Umfk6Zjr7x-BndS*3|IQZhoO?y7ov-{RQRRs((`)uCq^Q4dpaS z#-G4mO7p)s5>6XMa0y@zfy*d?htK1@YUXmlhgLg}H$#%Kb<->M!5hvJ!-={F5b(V% zKkN)jte`7*tozuz>LK{0yNT&I_4U{5$|$H$qdg@h4fUfy+`AjRWzbfso}ZFuziGW= z!vcUGv&FEo8i>o}SrGJH&~jj+^8;H(x$ zrvvR`A;AO27cJwk4w6o(WhowNaaiLybx|jve|gkS7s5$MexL7`ak$swV?>|Sabo#| zL}I+;RG01%VrUVCR-`s!{0J!3Br$ zdrl%fMfB!%k@g(y<>*=LF^Txs5d*)pMA{~nr^FK~(>j#fV#6ZPSKFne;7Zn?(emcg z7G%Xe;xE;dH=I0PpA}yMW;1hexpeJ>6s2Nr%s__epucZthvKrwfv!VQ29nGQNuUj$ zfIZap(|-H`Ra0?y?glojehz= zzq3C!1S>mUoHTR$L^VKQRU5`W(I4`?3z+mcAkQG!yk6mz9|=u`n@qn&Le(0g+zMk=WPvhY(ao(148ges$I+xp)e*Ju$Z+kO8 zT_(z+Lrkq;1ASPUUT%;kdZ7&T!BU7YOj!$g1l1e1a+DF9TRwYyl^$*_CCPf&0d&mv z+~+3UNO&Im$4CD3Mn0{LlPB5UYb@@9xs2S$$hlXQ4FJq6(iFvHLd$)wX zH5ls)ZB-gCylSlM{K$Oe4AWu*10K@Ne__}@=DGBir~+HnRuu3H^b1Rpb1NMRZS{>4 zL8zg0lkw#l=KeS6h^5v#&$`h4SS7-27=CIb==s@&;0V+_HDc{bs7#vcS(j|98bcf< zY>hQI$IKwsH&QbK!-Es{{Z~tjw+0((ccs`mE(b1b9D%!KxmCKg?rqH0F{C~xT7{fp z7wC}QfomIfQ))Jz*=VboQ(w?6OT+Mxh3-%@U6(_{Q8hTP^0qDm(V)@W|5lP1EjL zjU!1#5ze)R^vWB_oL!(vd=*n=+G4DA2J?-&}+si(t8{GWY{{@PbTVw{P4DThIIA>>wLJ+_cM= zBo=ns*7tP=CC|T0!xz|u!?Vbld+U-ZHp~l)XEPD=;|ox*+GmXbaoXNr*`abN0vDBx zH&Zm~f<6zPpBWURo-;L89^0>2(Ska!_~5C0vT^C?EJaJnaZJIZT!VR2n(_~WK`BZ< z(*J3GadzVf?q^CwQefGr(M_s$$?6?Z zW3;u-12}0#!>wATgT5125WIw2l`k!=Tl)vq_32&kZTI`yrrM@h#X7k3F?mC%`#Wm& z75S@nROhbHQk{@$C6An1qU&O^$Hl;Hato;o-{O{ovfP%Y!>*i%i^G?~4#Cuxi0IW$ zRqA*CNRr7sqm}+iP@pfS>s^~RCR+EFKKAe1Wqh+ExHlE4t4(XuqK8of#$E>oA*BID z=(IuoV2PK-jTQQnT2;DF!?C#VLqyoph(Aa4!s*{1^l$YsCbi*3+qSPq+|B#QHwLq< zlIvPM4Y+&H@o?O`%I5uNt6LYAh6%vqeRuP)I9 zo5+@3Xmp3=pK#;;R9g?`&l>Sjep1U@TJj1sGx=ts8PdXq6s+^k$-p-^*+$j;>;lX{ zNKvbF2tw8Ok6c z?QGO%J@Cbk54`z9Dn@ljYSi1z>t>0t6=~9Kqs4HuQQ&uG**YQ}2QJ{RTqiY z77GeMX9l(`JthzAHv$Y`dQ(2ps?)c~S088GS5T&7-k0m!r}%k>8uHV`+Lx!*%v~7n zV-y{RojLu2sh4Ph-3>-=pm?9WE&E9GV%1Ai>Z|^hXgORw=^@@9=LE;M`udGy8@QZ# z*Lszu&HL_!fbjWfa)C3~=KI6xMkS$qPYLP4Xksur2Va0Dod>M+Ql~C$+GcFeC=`)| zC6a79yNI}@$r>V^lAoL%*6pjH>!?GL*Xza9gyv_dHlcIVk^}b^*cM1I{tM4(YvGJN zY?#}2#}(PVmgzc~EhzUx_92r^=?c^XX?=bxccdnKFpem-dyI>&uXunMHP z=Y&999_)=u${D=3QpJ7Rn-*G%BE2gm`7^X@N0^5(gw=-5gpcERYEVuF%!^6w6~nc# zK3qg!ePekBlQUAAy|@UX+t75zI^3oom_h1}AXS%$I;0@KnQVs5dGq#&xq=|A%Axb1 z&vGydzMg&acCoskdIWf4;?NNkqx-vZQ~xtK!*JRM8*S&B(15UDq&1T$-f<Hpx7U_30<{H%Vkwj}%VBGir*&buB=_=yEQWC%Fp9YZ-mB%~t&G-!EXSamS#H74 zL)(Lq;p$t4#V~k2o=c9OS=<0myuG-9a$H>MT|Gjo+gpkpA{?Sg5AN~Tk;XOBH`3W- zvAp5CewOD4zS}@@eB+5(g&LJR78kA-PFwkQ>&~#ACrEIK#OkpQr!lUVc2;0OTqnv8 zuLJi*1I{j6guvy@j-orOXHL^b$c3RwtE_nj1&!}hTr#F;EAGu$d^vN(2=s*XlW8HE z=kP{Mms(Iy`_{D@CSUVI1_Z^8-RKN2wb6c)tuy7CLo)Y81|umtA&Opm&4*qtg?tF{ zTYUK#nZoYgYaUL&_gMlGu`jZ(>CR}xG%n4x$=+&O#Yh*P#@h?j5-sX7NuGD~BX25HesC<*7c0Yt-~-g9y)qe7q5dq@w6$C z{Bwa0sFBOIq#D=h8Sebs*ys<&Zldx=M*WxLfG`~*TAsTMK!ZR{p+kpACq1Y_#w$iDVaRJTnV`lO#GHvNUdl0)% zRZqaC<`TL_60$Y}3mWRCOQuDzOfu~v2U;XRwKw0zo?;-(0Ue9&0X2<;MMs2w$S^ePm` z;;t=L>3G*TsUUKLb@^kARI6l+D&f*joKhQ08N!7?O zxf(oW<7kMEhyq^LLlv{?hJ4UBm?R?nS!$|wk7nJiOC4ruda%B>G{EI@0;~f0ZR?&i zG7#9*XZt=hK%Dh0)ubeZBrR@gvHYrTG=h?kR1FvDD#$X!qse!xvdGjv!r8Y3{W0n}wbwDe5TTNG^LPYC`)tx(xxWFP0M+6#G zJ1^FxWQPx-Qm8gDIJM~q!SJ=r*)dN&%2{Lh7{ouJAY#2hFO!)9u|4yCe`ydf^BN@R zD7gonmN?_{NDwhQ%{k}Gz2U4XKk76_)SZ?!et}Y@?xjd{`wAi4vI>YpKgp=9Y}CiB z(v}M4%(1ddN5-n%{6)h*Yx(buJfFOy`%Nb@HJ4N!kY?`t^e05qLmc$OV3&d2xPOdX z{eki7d`jx7Jd&|`_Wx<`OT(Hv*R|CSYVFoq2WoAwt=rPdR(G3Plq5v!K&uvNHAECb zk8O!SE6R|SIoio8N{*#S8In{{Q3A=)ND(qo6;Xynzz_o@0RjX9$s!XW2_fGb+w-0M zXP;~R{C<31{PH3z?|RxnPN$np)z? zR#etRF}=m^K`V7Ixe)_Zt1c}%k|wjZUiCxhXY)A#RQ>aV5G8|4;)% z;FF-McznNV7$*-bWX)#TV=4F9@q=nu`gHBs%5QE*AR=2YoqB=|>-{eN~f& zwM0%t0!jNO{R<4BXa&{M#?nwY}UWFCy;E$bHkMmU0FQ>&Cpi4wdQqMzh z8Bfu0dp0e(bf_*Y7ppK|e0;DXBK}^w*z@p>fA8k~PsN(vKS!T8ADsf^q%CoXkWvz> zHesB;zjKSRQJp&t#W9xAK&+W&bjsp!ppuPk_p~~C#~$~ej)f<$#RQYx_;~CuAlXNs z(uMCwlVUq;$;pp6g!rGzJQ>;eTng2umYIltU@Elj!0jZ2_+$tJOaEBs5I zD}RPKFFIV_QttCZms@UFT8d1gy-ob573n}*o3AcPD6cJO8EbdWI-mhj&S?8e?#RbV zN%-tr*~5F|--WN`q%Ahtiz_MBrR0>y_K~Vs_tc>@16O8xh$gVK{Pd_-5jiOsAb7w2 ze8VH%K3a4MgOWwdKC4w7df;agY-g*p+{fjx-aqf~Ii0r2~_sBKE z+HbyXAuBB)*uZyqq0Ba-A}FfbEOBaFGv@g4X}*U{v*lVQz#mF3ZWikDfA7A?&Zj}P zSQOV^*+{-={5ucG0azvE~MJ~$H-#y`KoQ+ZHY$%otO zrdQ+OYNpQQe%pfshG!-DhNbR;v!K3Yel^{-LTK27;rXA?nx6YE5)&;ctSGM||1$Sk zcUGCZcZ|kAP1308gbbo)Wg6`*CNSpoeCB40tV*2@^9J87Z&C|FROyW7s2d>(e(xj? zoW@Kbls_N!rHShHKHgl;9x=24A(3JuPznAsZq{= zB&c%I73nZdrg*B)o!6551V(F}HpWa>3F|wU0&`@hEhFK$M$Ej}Xp)c^>*J5uskmkd z{KbS4AG2BxocG%nDHO#Sw&|fikkroUxKNV+<3Fn@#K5k+FK*gEM%0BUk^c&@eWSYO zZp{NI!?>?4p+rr!8P3NzzQ^-Nh~e%xKV9?2@maGrZvJ@t*8TSja8D(>r@X5iO<;g5 ziE7zky$wpJ1Ztf$8>(!s-ty_cC!j^S&hbMU`?mSqV0N2R*1`yp&l>a?!Fn)Ct*8u7 zyEta|{Bq%orUG)bTQW&e-G2r_{hwYB?qTVkPje?lSOPxe-iI!0TK(e%cL=@I%=Sa> zK;UMS)|L#gzB{f;1`a6Ku+hwm#?qPG_Zt)A`2^W5Q+~@Vwc*_!0RvM5u26EAxwsj( zmY4!mvQUv>Yom$C*}BpU0j_OhQMsy_PB^uko4PdF|Ic45EY>646(i(bD;rVpk-5=` za1s9KbMxU3n-0+u4%!&iNqf%{xQC}MMOmb5G9Ri==cva~?j)k<07zzFikPxVkaHZA zp!Ra-zeM=6KO%w1y#_??qMt}&N9BfZ0RPUG1CtU+l0lM)OoFSy|E`ObZ|f39-=bC) z7l&$)i4opxf5~k^2vs&8QiK?=_nas^Trbo{kla?q$tLEf9riI5P*q!nX85 zFO4MaKS0|VsDdBc2%=YvXB`Cx+N$0MrhZ~P%)^n0{Nzsn-;4)GA`Zo;x)N6r0=1^= z5y8qLO3wN>r*Y|J$@45;+b<;zb;KRsi0*w8PIs+i%^t>YC~k$(r5|LD&#*YVhJ6z zHS%wr4<9eD;8ZS?742>>dPnrY;i4ZbRL-ZHR&HN{5wOaY(`{Iv(5Xrp+|4eyVxI&vsvk}}Mm5#P| zmaDJRBS^)8Y!w>l_VMx7v)Dp@4eubS@x+x-Q`0%(J#y7?yX#>Mh9MVW3lrKNKrgfI zXY))U$3YxwTn#*whFi?aWTW|EjiVI^x8wh|r}3}$&=kXKTJewiuvc~}cB#AL)`<@@ zhu0QS*7&N-(b<>lY_yH$z+O_@$1Uy9AYaSRNWHQHAMSxH%}WkqY1(Z8PiB)7-kzDs zU(uzOy>jfP6b-o6!AYvTpr!PSEr4tlUXa`DNio`JZ@S0=x`lC<)HxwEDU5g@H*l4{ z3l~=AMI|1;<^2deg+Ird~;ZNh9 zmUL(+0xjfm)}Q*vxw$_UEO?Pu+}zoIvuUg|DI0J&>twH)#sn7VFij&!tE;FFHCcc~ z0yux0You}YTii;I=gX_LE5Z=rs^_g^S^x1L8_^ab{Vy4Hz32-j=HgfS3^keUp^@6C z#%$WMct(j}2jDBTtCi5L317Jy_zC#pL@T!br~gXw3Hk@`d`Q0PC`*q4ELr%WKmX*%<~mXF=o?AM0oJa?zzGLu-f<`l^T~J05<8Wtxs1=q+e;9ylr&q_Ebc0 zFHwa29UxZLpV(Lf<~shuv?l^~@E!TFq{f03Z3|844bOx1s?IVK)ww4g02fLY%FF2E z!`JDB!-5Syn;q-V!Z}h?2x8!SKkW(+v@`IPoS=#xj9#S?DZ5WTk0`zoFF%nt{L{$= z6$`Y$<)Mz-JNKb$z2)ZB+?SaKR29`T|(^h;=3b9Mwe zCS_PH`w|>04BA1UcV(eI2N_M^T)nP6UBTD&R#m7C_K~@_9O>o<0)IsA#&TzZJkAKw zL~7fsn-S%#U{9ax=AHDTUBI&K2@R3J!saVOBQw3uZfARI>pu6|b+C=!?pV(758rm`d3D7Ro-EX=m<$p;SQwR|Kd4BQb$5~l*7M}$ zQh9UOK`i~$(|Tv1GK1T^)3qiqwni+olm()`n1euGOs#vCpEdg13GHSw*sV|{Z;Gr; z$Z5-VFC*h7NQ84a)nhD&BY=vpx zOl#h3BBUOM7&_%XX>BvPgkJti%15r9fnDPFtq+ekm6FN1wPwYiBIySr_mykmjiSu= zxyXcb?aL#iBL}>d?AVs@kV0Q(^6zJpdv&=3I2xROKjeGx>K)%-jTIcKX-ZVH%BL;N zI!|%YLXpkZO62crGsij8ddJI(^uRe)7*M{#31%jwhB z^q3{IjYT+#4=l}JT=ZgSXB+ zbq0M+nc%Tz&k_4n@uDHvmAy=Tk&3^;8;Atp5bYctFHwg~pt~aj0|v zw*9tGb>6(5MM=dqefgF`!lFA`QEYXHQrIpzk1m;K+s z;u!>87@i_^DJ!A-C|37w>F8uH80Q&7{}3K8f^Ko2`wnF}H%U{L65(zh%EzZ&?-S{H zxYhAQF;hef|0f~xh5t%#JWpgbHdpX3Ve2j!0A#1DY7!Nl3&i2UGW0rnArVdJbrUg{ z^>w>3r~j3f{oC0<#kUQ-uq71e+;kx+?T^SY5`!-{2p!3vuy^3&yVs`gjM0G37UkA? zZD<67t0WURzrJAHMZ_PDxy!(KlNmFcow}mAwkJm2yUzXc{0lgeU|3W3e&f`)znC|T z@u*~fB|k&Y9L^(Q>7J*)+iLOfPPD~*dra-r`v~S7>&fGuvSQ9- zp{wwMKU5TmC5J!X8*>K5O(h%je1E(HyHA5TNHy8jzE5LQ3^DMjH2}t!51d4ghq|H=i+*k@>J& zeuGZl*_^xn!~OhSdGe6L(7|$o!Agut+wAiX@-3hfQ5_OSJQ7$P#D1HrT+RBRlLr~! z7Vz*TX=Bo`W!-rTOd3hFbG16uDP)ANY9Ax8JG5sn3EuhScvmTnsdA>@_v^9#=v?Z6 z9il$HhSoIm0K;&;h-?_lxTkOMvu)(m!BLCusc$Nl5mFB3+gCQ1SU~)6;z>Xo>L$It zdC~lF+BJXua4JTRZi$88FV)%Pjyr$+-}OoAdkW&;Ra{$Z)TGWNs?|XADoe~>&{o)K zc;qw*)_D@#g*weqWaAYI^vTGuSL-FKQ?7tfGP}yGM-W7t=AQ~?WK?CU>A9&C{V zTP1?tI%0=@{(Xs9RjZ;8t@%z!&Nas>P&fuTx5CUPkle~$d8_v3PVQ05L)0*@NzHjX zM76SVu@2QhG9#7z2-)0C{r*NJoQer@mi5PX>My3jRh&XiEif6IFRHU>Ib>UU3Hz*ezDtv4rZkCo7lf$7mYmrD_Tz zn9er?R%KLH;`jUz@B8{b4x_+UL@R}^L#D_Li+Xdr($!V?&=~+uA3Z#UpT0x8lQvZS zzChXSNtQ4x!VJ`DefX~GbFz|A*HE=;KdiGys@ap|FYrhXDsG-^@Z~$Rc6i1MGarjx z`NQFA(-%}$379=RNNjl<8WJiXA}ELkt_x0GkrL8ik-=ngkE)wAUknEjj3+fzbpBpNZniBvdV5 zx1uxeZ=HX9H=JDbQavM80d_+2JFr)NnY+uqG`Xh@qU6XVPNKY54EkAii1sx7ggWJ+ znN%T*!}}7!>VSSZ_TlHAj=RnHF)kel3+8$)7H>^EHSjeTdjnWt-d?qm6fV)=dpFKhR1@lRHuB^x=N` zberL5yh10#>ZxW?f3a9`;+U4E$AObU91XSn!iVgQXX((0!emLL#b~`%z1(QN2<{gJ zEbk;>G^LH5b-Fk@qCm0HCp%jf0;y18;T@rc8m0wJ@P{!ww6<2M^rjd{;`321>U1{# z7hk597#}3S-A>5#y8q0Ac~F^7f5Q>#c-17$9SF5kC+V=x`%p(4zAQ=w(1CYu^ZKE# z0-@==)-+lMzmCXUoOMzOs0lV_IF%nt4a${C-QMt=opSP+M3N0i+%)emKcE1@KUQ<3 z3UvXe5JQ>P|NcPXm~#h3hA36oa`qMSI_=4xjq2^2n2q+s6H3cmz;2p7hh zo$nrK-9@aTT(5Xye}FjyjlW_Ix1`W!_vcHbm;^;-O4{uA#_CA4o5l>aGaNqWu(e*_ zpavGn2aX@Zxg6CghZndwG|R=LVw80|qL59Lg2~?LN5wqaPB|dlI*RE z)u|LZ!2jR<{nY6;MS52Nyr>6sWa{ntD7|E6DipJ1GBgQdHUsLWgx;06p~+v)94>V; zjjctYGjjG;vBI(=C4L6mfw4D#O~!{K0$b&|hQgLbdR=iQARK_&fRZ=n8>lrI_VQVE zlXU=u&QmTm?ZJ9c;T9za!{?K>YR7xIN>6X%mTDq&)6{P8;RCu2| zl#V$#FLN{;?4B7YG(+s)5Q+cVCAaC`i)ba-y+T9#O>zaFmZHxyrp8D**2WJlSjRsf zY)|$;EC+YM!rGZ#T1I3z|&-~4K^B}M}8AB*{WMF?wHpVTH*`G;fK>=52IRSzdivx{KfFnsKdei1Zc zOZ27&Dv4>cabwb4!wn3Wjdy?dp!+D#7|)2M8{nDt*3%K{Yb4%=RS3_PZOyTv54V#k zpbJ{KTu=`R!XdL<>a=;1jGuK;#@hMQ2FE+Y*_Xk*i8RI=dxK#(GV}Ay`l6R@bgqqG znAx?;4J`1w{0$p2-~=LkyZoH&Vp9Pg-WCAU7tV(TD+CdU4$`cX4B&GAJfdo4f(D!* zon{k`O${f&pVD0C%!#9t6|_`|BWLn9bOBPAT5msQ6fJlGQp7^q<|t5TLO|FQ_G=A+ z^Z~q+|0e2P`(41jgE@Rg2tqsOwOhZTvXAHbvfpHCT} zY4%J%s+8CsJGrzR(qx0(uciDnXHycWnuJkzU9zg z_p4KLE-lAJXpK^Wu?FD$T ztCQ+cSUuEQAW;=+l?Y7Ng4_tiS#z|bW$Yvk(?!X(mbTT$dPiP!Ljyc1Mb(I;jkKk& z;^o`UH}9!L`Osk9HZkSPbz1w%kt3*hNc$kFlPHhFW9gOZa>G$sw$`Q#P8qFp?(krV zG-F8Mj+LY24$7_k2!%_^^1VS|#G2EtcH-T>GIO~nXAvT6aQ3|3_`dwzFJmwXhP|B2 zbI(_LzP8!|fjR(jByc44DD_61XahiAU_)M)+ulrD?x))HRrBg;G>xG8sl&z?+y>2u|}5 zFqH=Q?-QD$6>(}9I8qVv^s5~M+Wn*AN8k-3VI=vsirQ`=Dx6HN%Z%XMSMi)+5pG9= z9GYlSZv9yA-8cSRiHz$Pwp>wf*#CjPd*VX0g0$ftTtd$qHp{46i@YZMWDSG z!U@}c$|1ds7CZn<;ld#UjoD5Xj1X!VsF&~9*kOe@-|=sY&n)v7vA zUMgQ2GA+a+k!dTj9GJ3;)I@pJK#M13JosTG8=hV_@Kp z9)@m;(P(F{ex;T1yJ(eZqzv43iP7$DEv%D~D{SnmJRTKM3NmBoq#U>RyIO6%tx;o* zo+t~aFosbPDgX5x*;N;=_rVYM$VV?4XR#k*Lk3dI0WE zbdi}62Dvypwa1BC{}$GSil%qPUt4`7;bqnqVJygdQM92;sIB$EvYHWDciS!{Y(XHQVMhnJv8=v zCMRL$EKjq!sT->Qa-s^->wDZ{CebI+b&{rkN|o>w?4N`<$2&IP#;7w8yps1FBA0&F z9P+a^#iuu<;;|I3$VHX_()B^;YKnGExOXWOC^^(fwkGqWnqXYmGQL+Nl}cywGlz=Z z@eKRw;x>veIeuy&k>@#fE=c07%4D<67^UAidTb67?ft?W}tg3CQ|rGQP~u5!5k)-#ov>Xg}P5Hh8}@t6H1=w!oCP%CHxILli&5)5l0k z1v0H|#T25<-qMFYNlf}})8=war@a~r8$6lcxJ5Ps8?c4F%=@bL#3DCLeW$+|W`f33 z=vRd7>DLqZLRMfTfibwR*PXGxNjfsS2#Ax<@v_5Gku?#9{{|`ty)w51ITVAgi7m+5O@Qikt zYI5Rx;Iok0p^KXt5AdMdjn2;XYh?q@Byb}$x|yjrto-BAXkRZ;{xyhp5`j)AM@VO^e3AywCZSXl4-$@eEGx zTZraoXU~)I8zdXZNqWwEN{nPoTbmOd<|L-(vLh6hGLSu`IbW4xjFEbNR^>p3%*Ii z=uj6MIZZ;d>n;XIbe2z5$;+LO5Mmx<3AJlSzK{`bPQjUtGow01d4V!? z8@S7*DagFu+ItS3SSW?hA|f%Nuo(I; z-RHr_LRa`{iYL95y*!0w7*FPR`_F~Fq8LCMX+Z1Sx(hhJsk=+nv?5YKP$_;8M2+poU*a>DQ!ev4@(Jtyzkv3vL?wq|5>^Ei7v31Go;f)_Yjq) zS#!h@6NN<>{_#mP<$kTBN-oTt7OIlv+I{|{tSM#Czw3E*v_FwyYMN@*L%}D?PN^ZF z(;>QeA8J0cqGg4esU=(4T?SR=Xr$UEGw#DBeM;>Mq%TxsgT>N7leaQ^dQTQ2Lk+wi zf&jv>$d{3ko7fpncoS(K16n z3xt4f3}26ESudT~B51%Qy+=C*9Xkw9#>^beJfD5~QgEXzQV21{5VK+?>f91!m<7lL zB>U8n4=+`I2eHJpzH?c74+qDnP%1pbj+@5Fg~}*|PJt}qB%G5ts5iRxM!1@NGU>#o zV6@^HDLj!cH8#Xg?~%SZfk^O8{q0%yz;pizPZTTeVibB<(DI^I`7?ZP0wW)DXAbAC z?DIu;l|73fEwHC%6|L`U&g{FBc_Qzbu)ZtpaI-_IfbPW4NAT$o{7ii|$LOBZ0%+N4>-cm16*mHD0`QOzwiIFU zida0A7Dixqn`wE*SBuv2gBz!xzpv~^#{`S+%tyo=U!Nd6%f5T%7vsbVrN!gqB$ZK7 zKBLN4%bC#zIyTKmmNI1xnM$go2d@k+=U>QvXCUoJMP7eQqceU=7Cuc4aA zn1Ag2<)G$nrP{JQqG;vOKd5Q*jeo3R#;+V^&|W>b97&!S%Vq&O?_4m*@ZN!c*!_IU zJmsbmxctPoNHXJTY1#7eiQQ3aE@<fl?KCqg`Ln5iUFZMyFqabK)=|TRbol3{ zmF#yKBkj0lpZ+J}4}Tx}@O0kr;igi~*6*|?#>x|05lu*eB~8zolXTmgn(}7YW`!>7 z18TCOY4$5$B7}~HsMi~Q055J_(?&X;O3?I5!Bn{~2u{xRKf>Ths;{(=>-uT3^7pF+tlL{)74pNHfAm!jXGezRdm zsld%T%6WA?>Fd@0!e^%A*h5;?DP*BL8Ju_Qj~@khewh^(d6jzP=u3UIw`MPhL?F^Z z)MbC0yx^ho_5XR6?d2v#X`IilE$BO2C}Xwl~Fs~Z~Uez*07*{d5k zE1&;vDU!IKSlo9r?~m7!DG!9uhUldJZzllZrvLxt{67{b{K)7|HsuBua2zmg7DQjkPJ!b5_9fIyL!5>tVIfN_L?fDS=`17G=oXQ>1Mfs|)0 zDyk$cDoUc{>|kMSXAS`&6`qs=ucoSv*MH)@7lj?>Dss{ue2LfUik1{Bgh2U0Nazi3 zFj6!u)*B^ELTjXG8A4>Th>yb6H;}k6iB8oJw6qril!u4eEBp_FJHroIFKs7nKiXPu zGEX3dI>t6HRE-cJR6NsyjF>dN%+%NkZ}3T=5R~E!)v4%$PtY+p;n5iMUMdIS2eic8 zQ7m1a9-dxkrQLkskRje7{N#3nqr>{?B9&=z2Ac+vJ0Dh+oi&)V1wfERj)i)|m}5T1 zmy^BK?0KAtkAZg>a!L+yYDT5n1sQP3yFOi~ML>ay8&!=MGrC1;7g$YB7Z*MvDsc=M zJTp_TEf7?#uq?Rs^O3np z_(^JdjTU}n3%90)Ny&`~N?g9z{Mj)PSq=^r-uSpH*4Ab*3;SsCiQk(wppI4CpTgD1G3l{GgbEma4K*?W8Y zWeT;vr4DA&p3!UX2x1DXRij*MGevB63m>5^0bH#0iyb_MdgS5i*LiG()X2wkpNit%Xf7=+S zZ)C`gX#nZ6=E@B}7VQ3w(vi{!-9Cuvd(+y3qu?W4wh$yHqPXan{8!4H@3_=RXz`K) z&~rfrNJ_mWGHU##D6=11Bljhv@&pQMtZ37tImMO=+9!>zuz3jEiQ1v{BPu1h@^~lR zC!u$pF5O?j7KBaq&l|r@m3jrA5H;A3X{um^$D+w{!y=k0O^+@6-Nv+{W_A9Z9l9HX z8~im|Bji%_(f8LT)Q;Sl1Pa7E0mwZpPHD|P%fidj%aqH6%V@_K*&j5!Gk)@)O?nXd zv30yPjO+~S3?}YV#GpV(hv5|=36$3oofqd;up(ckdiAC#JYEct56zO8Dz+>}PYS}Q zLeF_47%N4=5zkHKtkkqt=^(^#Cp*QmE4q93yji#jne>1*Px417}MyC|CJ#H^%* z#2XqzH6r!AQtnbm_3JNsDxUHwd2JJ_yOfs-_symGrA?(uS0y$v`}OIKI;o2m4R8%R z`(i-+E0`JX*YGycRqlo+3M9I%j%#Iy`$DdvSez16h5e4To)%)vyg)y-WQ; zea@beYo_ZIkQR8nX95JcCIC_QuJ^mWlD)#c%)OefjD6{RE1yZ91fV|!RzQyDPOasU zE==??4_A*lc7<7NTGlU=EbLa)ggDio5p6JToKPiG(NOivXQ#`g-KW}f0@!>ViY)tB z>DbyV6)^NV$Ik z@~zLGeBSSIEp_$UD?c7_6Zpw@n12wz={&VnQ5Ig-)i4Ph8XW^<>9+9>tqiw!wfBn- zk&hJ2YG`-RM!_C0e8ttS;F zSs^J_4qnFMP{KOp125 z@U;YWL$w0tp_V!N3@zzRt=>_q=|{F9E_^P2I*|s$I!ke7>1{ObMp?tH1qXRoP6xc4 zB@P2i%=MGDrdL$!MVs=S_M8iP^>-V|VGICI8BhERIRDf8JVrx$!`K(cvL{dkU>C3q z;9nYTB3^!O572k4oA_Mae0uO26rCZM{;YMrF*5cci@&Yhjc_$;WpwGuC}ui)pKLHc zGrzn2**oKU@&@bhq1k`-8NV017YjZN{sa8I?4yj%Ya4=P-&0#_lf5U_x!Mrt-t(g^ z)zJCSV*)n;J;OXTWv#OdoLT@17qsN>gr{HX6te~>Tx-M2# zX(vx}Yh7P!QISTCnqwR?wI9xrIpyR^F(+)SQ6Eg z=vvT35YIF7{B|XwoO)W3OW->nod@ID*V~WlkwZUR{cU%f_B)x^1SXzXH@BvRL2DU5 z*!*625^o~TOFgvAn=N|mHXloNtWFNLszO&!f5^pby^!8X-sxsF?L50a*Lm|f`|M_| zt&BVn5^oBq`PSdgv%FzHGhqcfdzG#wEEn&ObLO;li22}Vk3B~`=$y;n=q|bcI2pH4 zv9!3AgLJ9H5+a49rhqu@K!T9LoZ`KN62iSAD;&g_!MC7YE0q*u(NmJ@!%)>{RtlM`EQq*$Vh&F#MPFcOiNygMAX6A zoP>jsospSL0EvWzgwNT`f=5M6;(x=z|M+OSa3WX5VzmB9&LgEOCY9Cm5o|{Tax`+|N*ql(UsTFc8I+vxDDKvNXn9sa`M+HUf!9{wo`)-26B12D_xB z>-EtA*bnJRbGf3;ed?==G}o}E(ElRxx4%k=h#%;zR8|)emkNPL(4f7b}bq4q##h>&5bePxReSN7it z)DwlYVHre@xG*1-?6MfWou0B5U+HLo0)y5siOU_Dj}9G!0Y8rWdHyYV@Lo`(gc3&y zfH}ai=PkCyup?IJ=#5V@Kg}!gh2Owo#1F)m)6LWS;MjyC^P`^f7lL+tgJ8)_p4b>v zgOU=3QD(I0c21XEULJ%fzQ^@8M~Jg`HlrH4!F;h+?msL8vwDpbO$LG@7T|QnnlA+4 z)^EzcJFRu?q6F*{#&B^E};X#=kHC#&dEV(XX`X%$U5kBB;BJ{0}7M1Y)JlZ~R z*1Q>;+Boid-W>Hymxt68?e}iJDNoh$b-S!0CtS zy98uGE`4UNVq3HldFq^4^Fl1OcQS(Z0(tw73l9m%QsA5SN{kY@9U|6|jsF!11)4q7 z&sQoiHpB8KiaQkU@z#vuv)2CJ$Dr($MyabQ1cDEXk|f^#Ueun|tbsdb2UJ{v4;LJO z2p#Y?j^v@bkNc0Fs0lz(;(kCV0{C<04P@D6nK@rQ4qhdpe4caTL7g>tfK5tqbtIX& zUO9Z)%iQc9$h3peDRD+w%*g?TvN4Tze0y)-DE=QICj14j7Nyr<_H^riv>los9VfK#yKbxXUgWAfbHLp}Y2AUoNV;D+hzUn(6L z1_Ecm&+#$oW2(9XsM(JdD}6a~hVazh6?Hp#^NYUv2b8!*2!#MHUFt0TZ4I0(fzmIv z1d9ecRG*E^*Eh^;8w-cK7p=Xwf5BX(I0P8{=2J^BV-vy|=e(t~iPO_oxRmrC4>?;a zgm|VI)pXmcet1d4VvAVMs;^?~7S{T>N!=(8XsJ-3^`+}^e z!G_fl(Hf4Y$7ESDBQ%+eXS=LTw=`Y-0}2le{U-Yr9z&nA-cR>e2RD^O>g|E?;hEvT zFziyfCg=nFIlj-kHKzR-PblDsjzn*?;wYIi)=CVPl58q0v!57o}>@$6pDMmKyTzxN1y}$cUl_f{?r#-a)J~nB#e9=(Cbz zUp-d4!t?X$x1tNR9ElL5O|>?22r@>1=^%9bX7(+f=a2Tl)`g5W`1rv#Ea#Wb z9HDdv1gvazv2SLH-lQyt+u#_yDWQ?=yz8$zTYRRRe_MmXV&gN(;%sB%eNi%AWoiO6MA=q}@c^mnE+v6P+I@&@L5c#$F7ReBTn%PcozHjKT5}k|yG!~OI@sH;d z*+*Alm&bBofk;#qKM)Q7xe304$5mJaFz#(ZN?v88xzESI^eoay>v zxq;y%UUzR0s&}~X6%uzgBUe<#)R0`#&7n6tXFpfAE%LOlpy1T00`m4Cp^1FaXoJm- z=F!6u+K>Ml@JM+leMK(Y?8oG?7fbs;Kv%L3W2U-MG@3q?a$T?=EAI$A?KNcVIpk5L zGM8TLQ>D{$ubphXUS3VsKha^TP{icvTIYP*7FBtm=L6nV3apcNuQ{S*>>i80ZrE&( zKAhw!-wTUz#Ak6hE$IEW>PR=Jf}>Nsou|~ndThz8LPxoz zu&?QArYU)}pn^zDq~6=xPgqI#cju!-iMYA7Wpwmy=k&URt?|ME084Bmk?zpKnLtuD z)$gCMQ!0?o4ad&udrFq=&5MF6a7D)0O0wE8yNF{LUgp(9-YC(4mQAaT;;qqM>i25z zV@gi@G*aJYreL&YPG(?5GhP+_9mBp_S;+FT9DN2e?2-ds%oqS;Vt+@I{2&Mv8>^B_ z9DEo&HaMmsKs{rZw;bzx1gKH?(>0={2HdnS;vk=T4K!KCEx0Jd$A?Ez9G!f5-w9{B zaflmK-wak=Gv$PgD$t(Z{lu1$bB=r$s@}m|!SU+K#~?0{v~~&`sxok2i<3GLuo}hH zlI_s*bKJ>z%wi_&2F9VBI$4%Cex`&>O{iER3t8!Az#>zr(R0+{X7}-HCExRVPK~8x z;;(T5v6Dol;%iVG9Z{A|!geQio2%J5_V1{EH=-r^Fq^)t2b-RJx5YS<5Aj|f-@*70 zGi)krkpR@HaKAv|@}B;vcU?ZOi}aP)87Jsz8*bEg0PIWWLIx9}=(vAB(eYjmCf0>n z)aQaIE-vpw)ef$}Wl0OYF^;^VYR83-wj}-HCvW!RN|2FsIA&0x2Cux!cgnR}F4KKe z;Mb%qNT9CToh!xRB>hM>^CqGb^%e48o?4uAEfN;Sv9aTb4xbGN=d5X1%$^EhIuyi! z(?6#}jBO_=-Y^Xz?+_?4rQae9+-LUzMwzCgHp~wzNJj> zWm(ww6oiZShCUlv4ESGGxy@f$vRxZb%8nb~rNGl?FmlCw6a8K#T7Le%6N4&EAY;31aNC1lbi@+&+!G zh!$gKW{2qRBZum)|FFe|;f~kZSsO)SkJw*o6A-|J zZ8SgFWE}^efNw8A9B1uc(KMH3R}Yv!Umxp2WJh~X<6S#E(yFRGyzES!H86u}=p3aN zpYDq>DaF9cI$9rNa8l`7%cPK9i!x)d8pEr^@C>CGI#pyZOQABR`d#J4%rJA=wE?&0 z%Z&$?$BLg9ya|3OYN&>;LDF^Hndeq5)0o?=LGBrrRVLQ&#xsysQD~Jbf5z$Z)c6rC zr2^`;0fjP4SWH<|^oov2-!Pq{>5g|r?r`3bZ8bU58wR|-^ghmuI;T;T#wh2o_!Pt6oej)c#?w3&~Ct zxU(1)TOP!2QL0f!+FI&V{=@GrA%5@Luz#gUlQ*&CP0nh6kYZwZJx=e2ywV58BrqIlYS3U{yJ+YFJrR#2t%(uUek@I`)d*byr;eo=qf2fJs zd(pwkZHT~C$|^|oLd9`?j$c`mq2+$AmdS~I{cZHBJ3n4;W*>FrT>hPDlkQRK&Ue;7 z@mByjB;D&=_W0o@^TE;2U@c!SUaCpS+J819LzSgffargn{|=gU$&uDJO_fNB>OKIH zU`47r7!{KQ(cQZ{T6PH*FQ?J;Ps1$on<$wg`tWTy2l3(J(?{)_t|P5iF5EJ8`LKQv z;fK)eOPY-4Z#A3ja`$Wzb(1w*?uEb?7r12f(Vn7zR8BbQO{F>6nBU`_oS8S$x{o#2 zkp@)tO$O&zB<-DyASdA4#re|%V$ao_b$hVHa9_ahjn@4 zr-%>m`fK4$PYT~~ytBDB3;J1G+>^2)e^RO6iJw&F%WJ>OMZDsIAex2=Uk^>blzWsh zJ$+=`8T#}$n)Q8!mfoZrQJ7|#N8vB+O_2I0t+RDIQTw`mgay%j>d6o@y`66(AvHaT zteAJ7;ZJ`ycW(6T*LR9;Vo_l^vr=6V7eYMc`eSWK6dj0fD6&=z6oVc#4oY zk6CJ+ydO5a6{Pp?-UP{kOt3rzr({dUwr9jnjNOeUd&F;_#~5#~gEilH?;+?-<#LXB z_&U4PogMkV6ed%*+i*r?ryLX-+<7V-Ym0%T)nv=~hC9iWFr*vED>|}PQStRBVW|!D zgR^)|9l5!r8Ino^cP|*;r`F6{VIuC1ZGKtXy85wJ`&v>RzkO0GD|h-%N>J`E=L?JA(Mjsv5rs2>`FcKV z@jir*1c%pp?xEM9v||&TiMS*9`q9YlP@u3DULj8*3UUePj2{2HL6&Q&gwG62SgK@T z71TE72gr=h)$lN#nl#`U^DFS(?6gBYLnZ4rk+UlLn1b(Kx5n{1l$)zgmDmjHBo$tl z$MuIt0&;QLG<$(vbH$wv*_@Q#D_Y*GyT(KFiE@iczu&$#d;90R<{}O}^u0%f8y4+>}XlueL22qZJ=hSV#*HopC2Z&M_XJ>~%zd%EO*F1J`)=Gl&U3%XEga9Do- zRq&1r6!N{5(6DmVa@>4iI$P~w{{uye%cPfYG*1j*9zEQ%j>UW^Me3{ltNl{R&yr%C zU890+XlyyDrK<(J`P%L20{$z}{3+LR+V
    Vm-p4nOh*lR6{^F^dOun$JUI&z4I8 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

    MXi6XtL41GubiTxmcHoJqah$Iyo=Qyo`I?XP<#R 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 From ba6d27cad25505c72216b4fde4e56ac2db3bf72c Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 15 Jun 2018 11:32:29 +0200 Subject: [PATCH 180/344] - Use auto - spell check --- tutorials/eve/assembly.C | 32 ++++++++++++++++---------------- tutorials/eve/box.C | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tutorials/eve/assembly.C b/tutorials/eve/assembly.C index 776b0de0d1fca..fd728fa171284 100644 --- a/tutorials/eve/assembly.C +++ b/tutorials/eve/assembly.C @@ -2,10 +2,10 @@ /// \ingroup tutorial_eve /// Geometry detector assembly example /// -/// Modified to save the assebly as shape-extract. +/// Modified to save the assembly as shape-extract. /// 1. Run `root assembly.C` /// This will produce assembly.root containing the extract. -/// 2. Display the assebly as: +/// 2. Display the assembly as: /// `root show_extract.C("assembly.root")` /// /// \image html eve_assembly.png @@ -17,22 +17,22 @@ void assembly() { //--- Definition of a simple geometry gSystem->Load("libGeom"); - TGeoManager *geom = new TGeoManager("Assemblies", + auto geom = new TGeoManager("Assemblies", "Geometry using assemblies"); Int_t i; //--- define some materials - TGeoMaterial *matVacuum = new TGeoMaterial("Vacuum", 0,0,0); - TGeoMaterial *matAl = new TGeoMaterial("Al", 26.98,13,2.7); -// //--- define some media - TGeoMedium *Vacuum = new TGeoMedium("Vacuum",1, matVacuum); - TGeoMedium *Al = new TGeoMedium("Aluminium",2, matAl); + auto matVacuum = new TGeoMaterial("Vacuum", 0,0,0); + auto matAl = new TGeoMaterial("Al", 26.98,13,2.7); + //--- define some media + auto Vacuum = new TGeoMedium("Vacuum",1, matVacuum); + auto Al = new TGeoMedium("Aluminium",2, matAl); //--- make the top container volume - TGeoVolume *top = geom->MakeBox("TOP", Vacuum, 1000., 1000., 100.); + auto top = geom->MakeBox("TOP", Vacuum, 1000., 1000., 100.); geom->SetTopVolume(top); // Make the elementary assembly of the whole structure - TGeoVolume *tplate = new TGeoVolumeAssembly("TOOTHPLATE"); + auto tplate = new TGeoVolumeAssembly("TOOTHPLATE"); Int_t ntooth = 5; Double_t xplate = 25; @@ -42,9 +42,9 @@ void assembly() Double_t dshift = 2.*xplate + xtooth; Double_t xt,yt; - TGeoVolume *plate = geom->MakeBox("PLATE", Al, xplate,yplate,1); + auto plate = geom->MakeBox("PLATE", Al, xplate,yplate,1); plate->SetLineColor(kBlue); - TGeoVolume *tooth = geom->MakeBox("TOOTH", Al, xtooth,ytooth,1); + auto tooth = geom->MakeBox("TOOTH", Al, xtooth,ytooth,1); tooth->SetLineColor(kBlue); tplate->AddNode(plate,1); for (i=0; iAddNode(tooth, ntooth+i+1, new TGeoTranslation(xt,yt,0)); } - TGeoRotation *rot1 = new TGeoRotation(); + auto rot1 = new TGeoRotation(); rot1->RotateX(90); TGeoRotation *rot; // Make a hexagone cell out of 6 toothplates. These can zip togeather @@ -75,7 +75,7 @@ void assembly() // Make a row as an assembly of cells, then combine rows in a honeycomb // structure. This again works without any need to define rows as // "overlapping" - TGeoVolume *row = new TGeoVolumeAssembly("ROW"); + auto row = new TGeoVolumeAssembly("ROW"); Int_t ncells = 5; for (i=0; iGetTopNode(); - TEveGeoTopNode* en = new TEveGeoTopNode(gGeoManager, node); + auto node = gGeoManager->GetTopNode(); + auto en = new TEveGeoTopNode(gGeoManager, node); en->SetVisLevel(4); en->GetNode()->GetVolume()->SetVisibility(kFALSE); diff --git a/tutorials/eve/box.C b/tutorials/eve/box.C index 60409ac9d66ad..467c772b2fb81 100644 --- a/tutorials/eve/box.C +++ b/tutorials/eve/box.C @@ -13,7 +13,7 @@ TEveBox* box(Float_t a=10, Float_t d=5, Float_t x=0, Float_t y=0, Float_t z=0) TRandom& r = * gRandom; - TEveBox* b = new TEveBox; + auto b = new TEveBox; b->SetMainColor(kCyan); b->SetMainTransparency(0); From 32a8783e2ad46e44e3f3bae119cd7e8d06bc305d Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 15 Jun 2018 11:38:42 +0200 Subject: [PATCH 181/344] - Use auto --- tutorials/eve/annotation.C | 8 ++++---- tutorials/eve/arrow.C | 10 +++++----- tutorials/eve/arrow_standalone.C | 10 +++++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/tutorials/eve/annotation.C b/tutorials/eve/annotation.C index 9c493b66981ec..a398c1c6d6683 100644 --- a/tutorials/eve/annotation.C +++ b/tutorials/eve/annotation.C @@ -48,7 +48,7 @@ void annotation(Float_t a=10, Float_t d=5, Float_t x=0, Float_t y=0, Float_t z=0 TEveManager::Create(); // add a box in scene - TEveBox* b = new TEveBox("Box", "Test Title"); + auto b = new TEveBox("Box", "Test Title"); b->SetMainColor(kCyan); b->SetMainTransparency(0); b->SetVertex(0, x - a, y - a, z - a); @@ -63,13 +63,13 @@ void annotation(Float_t a=10, Float_t d=5, Float_t x=0, Float_t y=0, Float_t z=0 gEve->Redraw3D(kTRUE); // add overlay text - TGLViewer* v = gEve->GetDefaultGLViewer(); + auto v = gEve->GetDefaultGLViewer(); TDatime time; - TGLAnnotation* ann = new TGLAnnotation(v, time.AsString(), 0.1, 0.9); + auto ann = new TGLAnnotation(v, time.AsString(), 0.1, 0.9); ann->SetTextSize(0.1);// % of window diagonal // set timer to update text every second - MyTimer* timer = new MyTimer(ann); + auto timer = new MyTimer(ann); timer->SetTime(1000); timer->Reset(); timer->TurnOn(); diff --git a/tutorials/eve/arrow.C b/tutorials/eve/arrow.C index 91092894ebfd4..a84d3dedc87d4 100644 --- a/tutorials/eve/arrow.C +++ b/tutorials/eve/arrow.C @@ -14,7 +14,7 @@ void arrow() TEveManager::Create(); - TEvePointSet* marker = new TEvePointSet(8); + auto marker = new TEvePointSet(8); marker->SetName("Origin marker"); marker->SetMarkerColor(6); marker->SetMarkerStyle(3); @@ -29,23 +29,23 @@ void arrow() marker->SetPoint(7, -a, -a, -a); gEve->AddElement(marker); - TEveArrow* a1 = new TEveArrow(1., 1., 10., 10., 4., 0.); + auto a1 = new TEveArrow(1., 1., 10., 10., 4., 0.); a1->SetMainColor(kBlue); a1->SetTubeR(0.02); a1->SetPickable(kTRUE); gEve->AddElement(a1); - TEveText* t1 = new TEveText("blue"); + auto t1 = new TEveText("blue"); t1->SetFontSize(20); TEveVector tv = a1->GetVector()*0.5f+a1->GetOrigin(); t1->RefMainTrans().SetPos(tv.Arr()); a1->AddElement(t1); - TEveArrow* a2 = new TEveArrow(20., 1., 10., 3., 0., 4.); + auto a2 = new TEveArrow(20., 1., 10., 3., 0., 4.); a2->SetMainColor(kGreen); a2->SetPickable(kTRUE); gEve->AddElement(a2); - TEveArrow* a3 = new TEveArrow(1., 10., 10., 0., 20., 0.); + auto a3 = new TEveArrow(1., 10., 10., 0., 20., 0.); a3->SetMainColor(kOrange); a3->SetPickable(kTRUE); gEve->AddElement(a3); diff --git a/tutorials/eve/arrow_standalone.C b/tutorials/eve/arrow_standalone.C index 75e5ad68290c3..93735a23d1501 100644 --- a/tutorials/eve/arrow_standalone.C +++ b/tutorials/eve/arrow_standalone.C @@ -16,22 +16,22 @@ void arrow_standalone() // ---------------------------------------------------------------------- - TGMainFrame* mf = new TGMainFrame(gClient->GetRoot(), 800, 400, + auto mf = new TGMainFrame(gClient->GetRoot(), 800, 400, kHorizontalFrame); mf->SetWindowName("Arrow Foo"); // ---------------------------------------------------------------------- - TGCompositeFrame* evf = new TGCompositeFrame(mf, 400, 400); + auto evf = new TGCompositeFrame(mf, 400, 400); mf->AddFrame(evf, new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); - TGLEmbeddedViewer* ev = new TGLEmbeddedViewer(evf); + auto ev = new TGLEmbeddedViewer(evf); evf->AddFrame(ev->GetFrame(), new TGLayoutHints(kLHintsNormal | kLHintsExpandX | kLHintsExpandY)); - TEveViewer* eve_v = new TEveViewer("YourViewer"); + auto eve_v = new TEveViewer("YourViewer"); eve_v->SetGLViewer(ev, ev->GetFrame()); eve_v->IncDenyDestroy(); eve_v->AddScene(gEve->GetEventScene()); @@ -56,7 +56,7 @@ void arrow_standalone() // To create full canvas with menus. mf->SetEditable(); - TCanvas* c = new TCanvas("Foo", "Bar", 400, 400); + auto c = new TCanvas("Foo", "Bar", 400, 400); mf->SetEditable(kFALSE); // ---------------------------------------------------------------------- From 81eab204791c6188d46df4097412865216d06af7 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 15 Jun 2018 11:43:54 +0200 Subject: [PATCH 182/344] - Use auto - spell check - formating --- tutorials/eve/alice_vsd.C | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/tutorials/eve/alice_vsd.C b/tutorials/eve/alice_vsd.C index 21c4f74f21b03..d4bfd5db442a3 100644 --- a/tutorials/eve/alice_vsd.C +++ b/tutorials/eve/alice_vsd.C @@ -38,7 +38,7 @@ #include -// Include componets -- compile time link :) +// Include components -- compile time link :) #include "MultiView.C" MultiView* gMultiView = 0; @@ -91,8 +91,7 @@ public: fEvDirKeys = new TObjArray; TPMERegexp name_re("Event\\d+"); TObjLink* lnk = fFile->GetListOfKeys()->FirstLink(); - while (lnk) - { + while (lnk) { if (name_re.Match(lnk->GetObject()->GetName())) { fEvDirKeys->Add(lnk->GetObject()); @@ -101,8 +100,7 @@ public: } fMaxEv = fEvDirKeys->GetEntriesFast(); - if (fMaxEv == 0) - { + if (fMaxEv == 0) { Error("VSD_Reader", "No events to show ... terminating."); gSystem->Exit(1); } @@ -190,7 +188,7 @@ public: // Fill projected views. - TEveElement* top = gEve->GetCurrentEvent(); + auto top = gEve->GetCurrentEvent(); gMultiView->DestroyEventRPhi(); gMultiView->ImportEventRPhi(top); @@ -210,16 +208,13 @@ public: void LoadClusters(TEvePointSet*& ps, const TString& det_name, Int_t det_id) { - if (ps == 0) - { + if (ps == 0) { ps = new TEvePointSet(det_name); ps->SetMainColor((Color_t)(det_id + 2)); ps->SetMarkerSize(0.5); ps->SetMarkerStyle(2); ps->IncDenyDestroy(); - } - else - { + } else { ps->Reset(); } @@ -261,8 +256,7 @@ public: { // Read reconstructed tracks from current event. - if (fTrackList == 0) - { + if (fTrackList == 0) { fTrackList = new TEveTrackList("ESD Tracks"); fTrackList->SetMainColor(6); fTrackList->SetMarkerColor(kYellow); @@ -270,21 +264,18 @@ public: fTrackList->SetMarkerSize(0.5); fTrackList->IncDenyDestroy(); - } - else - { + } else { fTrackList->DestroyElements(); } - TEveTrackPropagator* trkProp = fTrackList->GetPropagator(); + auto trkProp = fTrackList->GetPropagator(); // !!!! Need to store field on file !!!! // Can store TEveMagField ? trkProp->SetMagField(0.5); trkProp->SetStepper(TEveTrackPropagator::kRungeKutta); Int_t nTracks = fVSD->fTreeR->GetEntries(); - for (Int_t n = 0; n < nTracks; ++n) - { + for (Int_t n = 0; n < nTracks; ++n) { fVSD->fTreeR->GetEntry(n); TEveTrack* track = new TEveTrack(&fVSD->fR, trkProp); @@ -332,12 +323,12 @@ void alice_vsd(const char* vsd_file_name= TEveGeoShape *gentle_geom = 0; { // Simple geometry - TFile* geom = + auto geom = TFile::Open("http://mtadel.home.cern.ch/mtadel/root/alice_mini_geom.root", "CACHEREAD"); if (!geom) return; - TEveGeoShapeExtract* gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); + auto gse = (TEveGeoShapeExtract*) geom->Get("Gentle"); gentle_geom = TEveGeoShape::ImportShapeExtract(gse, 0); geom->Close(); delete geom; @@ -380,14 +371,14 @@ void make_gui() { // Create minimal GUI for event navigation. - TEveBrowser* browser = gEve->GetBrowser(); + auto browser = gEve->GetBrowser(); browser->StartEmbedding(TRootBrowser::kLeft); - TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600); + auto frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600); frmMain->SetWindowName("XX GUI"); frmMain->SetCleanup(kDeepCleanup); - TGHorizontalFrame* hf = new TGHorizontalFrame(frmMain); + auto hf = new TGHorizontalFrame(frmMain); { TString icondir(TString::Format("%s/icons/", gSystem->Getenv("ROOTSYS"))); TGPictureButton* b = 0; From f9ac2873a5935803b5663ffb6e1072bb32d11fd5 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Fri, 15 Jun 2018 15:33:36 +0200 Subject: [PATCH 183/344] In TAttAxis::SaveAttributes` take into account the new default value for `TitleOffset`. --- README/ReleaseNotes/v616/index.md | 2 ++ core/base/src/TAttAxis.cxx | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index fa55249ffb26b..c6cf2462cc106 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -64,9 +64,11 @@ The following people have contributed to this new version: the "gs" command (https://ghostscript.com). Example: + ~~~ {.cpp} canvas->Print("example.pdf","EmbedFonts"); ~~~ + - In TAttAxis::SaveAttributes` take into account the new default value for `TitleOffset`. ## 3D Graphics Libraries diff --git a/core/base/src/TAttAxis.cxx b/core/base/src/TAttAxis.cxx index 498a4d2b33693..1550ff0e3cbb0 100644 --- a/core/base/src/TAttAxis.cxx +++ b/core/base/src/TAttAxis.cxx @@ -142,7 +142,7 @@ void TAttAxis::SaveAttributes(std::ostream &out, const char *name, const char *s if (TMath::Abs(fTickLength-0.03) > 0.001) { out<<" "<SetTickLength("< 0.001) { + if (TMath::Abs(fTitleOffset) > 0.001) { out<<" "<SetTitleOffset("< Date: Fri, 15 Jun 2018 15:45:46 +0200 Subject: [PATCH 184/344] [Doc][NFC] Better image for RDF doc --- documentation/doxygen/images/TDF_Graph.png | Bin 77302 -> 88293 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/doxygen/images/TDF_Graph.png b/documentation/doxygen/images/TDF_Graph.png index 7cedb65955e31821cb5efbcc0d216e0b0e32eb7e..c93d78df0328aa96a9dc77c991719f15cf99eb19 100644 GIT binary patch literal 88293 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

    x8A=15bP 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 BAjkj! literal 77302 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 From de5583ac09a29783da45f0494ce0ec2facd3430b Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Fri, 15 Jun 2018 17:45:58 +0200 Subject: [PATCH 185/344] [cxxmodules] Fix bloom filter without .gnu.hash In some node where ROOT was using lagacy compiler, they didn't compile shared library with a linker flag --hash-style=gnu. So libraries didn't have .gnu.hash section. We need to search symbols for these libraries, too. --- core/metacling/src/TCling.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index 124f31fa61b9a..db1b4c96cc1e2 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5935,7 +5935,8 @@ static bool LookupBloomFilter(llvm::object::ObjectFile *soFile, uint32_t hash) { StringRef contents = GetGnuHashSection(soFile); if (contents.size() < 16) - return false; + // We need to search if the library doesn't have .gnu.hash section! + return true; const char* hashContent = contents.data(); // See https://flapenguin.me/2017/05/10/elf-lookup-dt-gnu-hash/ for .gnu.hash table layout. From 47ed9ca73f5dc44c1c5c24d08671c4c1d07e115a Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Mon, 4 Jun 2018 11:42:41 +0200 Subject: [PATCH 186/344] [cxxmodules] Respect LD_LIBRARY_PATH order and save memory std::set was not good because it sorted libraries by alphabetical order and didn't preserve LD_LIBRARY_PATH order information. We can use std::vector instead. (Erasing rarely happens and doesn't cost so much) Path prefix like "/home/yuka/modules/lib/" costs memory, I think it makes sense to avoid path duplication in sLibraries and make sPaths vector for this prefix. --- core/metacling/src/TCling.cxx | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index db1b4c96cc1e2..b5038fd1fe18d 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -5961,19 +5961,23 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam R__LOCKGUARD(gInterpreterMutex); static bool sFirstRun = true; - // We don't want to do directory_iterator several times because it contains HDD access - static std::set sLibraries; + // sLibraies contains pair of sPaths[i] (eg. /home/foo/module) and library name (eg. libTMVA.so). The + // reason why we're separating sLibraries and sPaths is that we have a lot of + // dupulication in path, for example we have "/home/foo/module-release/lib/libFoo.so", "/home/../libBar.so", "/home/../lib.." + // and it's waste of memory to store the full path. + static std::vector< std::pair > sLibraries; + static std::vector sPaths; if (sFirstRun) { // Store the information of path so that we don't have to iterate over the same path again and again. std::unordered_set alreadyLookedPath; const clang::Preprocessor &PP = fInterpreter->getCI()->getPreprocessor(); const HeaderSearchOptions &HSOpts = PP.getHeaderSearchInfo().getHeaderSearchOpts(); - const auto ModulePaths(HSOpts.PrebuiltModulePaths); + const std::vector& ModulePaths(HSOpts.PrebuiltModulePaths); cling::DynamicLibraryManager* dyLibManager = fInterpreter->getDynamicLibraryManager(); // Take path here eg. "/home/foo/module-release/lib/" - for (auto Path : ModulePaths) { + for (const std::string& Path : ModulePaths) { // Already searched? auto it = alreadyLookedPath.insert(Path); if (!it.second) @@ -5985,6 +5989,8 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam if (!is_directory(DirPath) || Path == ".") continue; + sPaths.push_back(Path); + std::error_code EC; for (llvm::sys::fs::directory_iterator DirIt(DirPath, EC), DirEnd; DirIt != DirEnd && !EC; DirIt.increment(EC)) { @@ -5996,7 +6002,7 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam // for symbols that cannot be found (neither by dlsym nor in the JIT). if (dyLibManager->isLibraryLoaded(FileName.c_str())) continue; - sLibraries.insert(FileName); + sLibraries.push_back(std::make_pair(sPaths.size() - 1, llvm::sys::path::filename(FileName))); } } } @@ -6005,7 +6011,10 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam uint32_t hashedMangle = GNUHash(mangled_name); // Iterate over files under this path. We want to get each ".so" files - for (const std::string& LibName : sLibraries) { + for (std::pair &P : sLibraries) { + llvm::SmallString<400> Vec(sPaths[P.first]); + llvm::sys::path::append(Vec, StringRef(P.second)); + std::string LibName = Vec.str(); auto SoFile = ObjectFile::createObjectFile(LibName); if (SoFile) { auto RealSoFile = SoFile.get().getBinary(); @@ -6025,11 +6034,13 @@ static void* LazyFunctionCreatorAutoloadForModule(const std::string& mangled_nam continue; } - if (S.getName().get() == mangled_name) { + if (SymNameErr.get() == mangled_name) { if (gSystem->Load(LibName.c_str(), "", false) < 0) Error("LazyFunctionCreatorAutoloadForModule", "Failed to load library %s", LibName.c_str()); - sLibraries.erase(LibName); + // We want to delete a loaded library from sLibraries cache, because sLibraries is + // a vector of candidate libraries which might be loaded in the future. + sLibraries.erase(std::remove(sLibraries.begin(), sLibraries.end(), P), sLibraries.end()); void* addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol(mangled_name.c_str()); return addr; } From c9bff764e7be1a24ccee5c57d0fedbf7d1ea09f5 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Mon, 18 Jun 2018 08:18:37 +0200 Subject: [PATCH 187/344] Fix stressgraphics ref file after the change in TAttAxis (axis title offset saving in C file) --- test/stressGraphics.ref | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/stressGraphics.ref b/test/stressGraphics.ref index 00e034737b836..49ace8dca51c0 100644 --- a/test/stressGraphics.ref +++ b/test/stressGraphics.ref @@ -25,7 +25,7 @@ Test# PS1Ref# PS1Err# PDFRef# PDFErr# GIFRef# GIFErr# JPGRef# JP 24 7813 300 23739 100 4662 2300 11085 6000 6973 3100 8081 300 25 28422 150 29391 100 5187 1400 14104 14800 7386 2800 14493 150 26 4545 150 14541 100 11094 1400 27602 14800 13094 2800 4467 150 - 27 6141 200 15967 100 14776 4200 39594 21600 19331 7000 6126 200 + 27 6141 200 15967 100 14776 4200 39594 21600 19331 7000 6596 500 28 9110 500 16737 200 9738 4200 21346 21600 10645 7000 8869 500 29 7419 500 15112 200 8113 4200 18872 21600 7928 7000 7296 500 30 17016 5500 18198 100 13764 3400 32434 17400 22157 5000 20823 5500 From fede5bf9be7a68842214f61ca3db38df971baa7e Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Fri, 1 Jun 2018 23:04:58 +0200 Subject: [PATCH 188/344] Comment unused parameters. --- core/newdelete/src/NewDelete.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/newdelete/src/NewDelete.cxx b/core/newdelete/src/NewDelete.cxx index 0ab4301370243..1363b80c08add 100644 --- a/core/newdelete/src/NewDelete.cxx +++ b/core/newdelete/src/NewDelete.cxx @@ -211,13 +211,13 @@ void *operator new(size_t size, const std::nothrow_t&) noexcept #if __cplusplus >= 201700L -void *operator new(size_t size, std::align_val_t al) +void *operator new(size_t /*size*/, std::align_val_t /*al*/) { Fatal("operator new","with std::align_val_t is not implemented yet"); return nullptr; } -void *operator new(size_t size, std::align_val_t al, const std::nothrow_t&) noexcept +void *operator new(size_t /*size*/, std::align_val_t /*al*/, const std::nothrow_t&) noexcept { Fatal("operator new","with std::align_val_t is not implemented yet"); return nullptr; @@ -297,11 +297,11 @@ void operator delete(void *ptr, const std::nothrow_t&) noexcept } #if __cplusplus >= 201700L -void operator delete(void *ptr, std::align_val_t al) noexcept +void operator delete(void * /*ptr*/, std::align_val_t /*al*/) noexcept { Fatal("operator delete","with std::align_val_t is not implemented yet"); } -void operator delete(void *ptr, std::align_val_t al, const std::nothrow_t&) noexcept +void operator delete(void * /*ptr*/, std::align_val_t /*al*/, const std::nothrow_t&) noexcept { Fatal("operator delete","with std::align_val_t is not implemented yet"); } From e3b505efe73ad6f98be501764a19d5f326fb10f8 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Fri, 1 Jun 2018 23:07:02 +0200 Subject: [PATCH 189/344] Mark unimplemented new() "throw()" as they return nullptr. --- core/newdelete/src/NewDelete.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/newdelete/src/NewDelete.cxx b/core/newdelete/src/NewDelete.cxx index 1363b80c08add..e05fea37142f7 100644 --- a/core/newdelete/src/NewDelete.cxx +++ b/core/newdelete/src/NewDelete.cxx @@ -211,7 +211,7 @@ void *operator new(size_t size, const std::nothrow_t&) noexcept #if __cplusplus >= 201700L -void *operator new(size_t /*size*/, std::align_val_t /*al*/) +void *operator new(size_t /*size*/, std::align_val_t /*al*/) throw() { Fatal("operator new","with std::align_val_t is not implemented yet"); return nullptr; @@ -338,7 +338,7 @@ void *operator new[](size_t size, const std::nothrow_t&) noexcept #if __cplusplus >= 201700L -void *operator new[](size_t size, std::align_val_t al) +void *operator new[](size_t size, std::align_val_t al) throw() { Fatal("operator new[]","with std::align_val_t is not implemented yet"); return nullptr; From 8624c44398438ad1b1256e68358a672cc945b9bc Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 4 Jun 2018 11:40:42 +0200 Subject: [PATCH 190/344] Unused parameters. --- core/newdelete/src/NewDelete.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/newdelete/src/NewDelete.cxx b/core/newdelete/src/NewDelete.cxx index e05fea37142f7..22d46f980587c 100644 --- a/core/newdelete/src/NewDelete.cxx +++ b/core/newdelete/src/NewDelete.cxx @@ -315,7 +315,7 @@ void operator delete(void* ptr, std::size_t) noexcept { operator delete(ptr); } #if __cplusplus >= 201700L -void operator delete(void *ptr, std::size_t, std::align_val_t al) noexcept +void operator delete(void * /*ptr*/, std::size_t, std::align_val_t /*al*/) noexcept { Fatal("operator delete","with std::align_val_t is not implemented yet"); } @@ -338,13 +338,13 @@ void *operator new[](size_t size, const std::nothrow_t&) noexcept #if __cplusplus >= 201700L -void *operator new[](size_t size, std::align_val_t al) throw() +void *operator new[](size_t /*size*/, std::align_val_t /*al*/) throw() { Fatal("operator new[]","with std::align_val_t is not implemented yet"); return nullptr; } -void *operator new[](size_t size, std::align_val_t al, const std::nothrow_t&) noexcept +void *operator new[](size_t /*size*/, std::align_val_t /*al*/, const std::nothrow_t&) noexcept { Fatal("operator new[]","with std::align_val_t is not implemented yet"); return nullptr; @@ -370,7 +370,7 @@ void operator delete[](void *ptr) noexcept } #if __cplusplus >= 201700L -void operator delete[](void *ptr, std::align_val_t al) noexcept +void operator delete[](void * /*ptr*/, std::align_val_t /*al*/) noexcept { Fatal("operator delete[]","with std::align_val_t is not implemented yet"); } From c2877de6fe2d61ce7c68e8a5bb7dcb54b4110701 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 4 Jun 2018 11:42:14 +0200 Subject: [PATCH 191/344] RConfig.h uses things defined in RConfigure.h: include it! This fixes warnings due to undefined R__SIZEDDELETE for C++17 builds. --- core/base/inc/ROOT/RConfig.h | 1 + 1 file changed, 1 insertion(+) diff --git a/core/base/inc/ROOT/RConfig.h b/core/base/inc/ROOT/RConfig.h index 3c192e458d8d9..8c0836e3aea24 100644 --- a/core/base/inc/ROOT/RConfig.h +++ b/core/base/inc/ROOT/RConfig.h @@ -20,6 +20,7 @@ *************************************************************************/ #include "RVersion.h" +#include "RConfigure.h" /*---- new C++ features ------------------------------------------------------*/ From c4cac8ab5768ef9083c37d1269734ed0bea14c47 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Mon, 18 Jun 2018 08:28:49 +0200 Subject: [PATCH 192/344] Add VDT to list of builtin targets so it builds before ROOT The dependency of Vdt::Vdt imported target should have been automatically added by CMake due to it being listed in the BUILD_BYPRODUCTS of the ExternalProject_Add() command, but not all versions of CMake work, so it is necessary to build it early by force. Targets listed in ROOT_BUILTIN_TARGETS get added as a dependency of the move_headers target, which is reasonable since they often provide headers without which ROOT cannot be built in any case (e.g. vdt/vdtMath.h). --- cmake/modules/SearchInstalledSoftware.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index 9eb2554d7bea9..edccad56eaa48 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1471,7 +1471,8 @@ if(vdt OR builtin_vdt) DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries) install(DIRECTORY ${CMAKE_BINARY_DIR}/include/vdt DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT extra-headers) - set(vdt ON CACHE BOOL "Enabled because builtin_vdt enabled (${vdt_description})" FORCE) + set(vdt ON CACHE BOOL "Enabled because builtin_vdt enabled (${vdt_description})" FORCE) + set_property(GLOBAL APPEND PROPERTY ROOT_BUILTIN_TARGETS VDT) endif() endif() From 5694bf78ef7cd5d2e55110337561015a7343ba56 Mon Sep 17 00:00:00 2001 From: Yuka Takahashi Date: Sat, 16 Jun 2018 13:14:32 +0200 Subject: [PATCH 193/344] [cxxmodules] Support both sysv and gnu hash for bloom filter By default, libraries didn't have .gnu.hash section when compiled by old compilers like gcc6. We need .gnu.hash section for bloomfilter to quickly check symbols in the given library. --- cmake/modules/SetUpLinux.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/SetUpLinux.cmake b/cmake/modules/SetUpLinux.cmake index 71f50bfdcd3ed..e52cf7df3dd40 100644 --- a/cmake/modules/SetUpLinux.cmake +++ b/cmake/modules/SetUpLinux.cmake @@ -119,7 +119,7 @@ if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS}") set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined -Wl,--hash-style=\"both\"") # Select flags. set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG") From eabd45e4adf2f1c5cf51622dcb01e0863ef5105f Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Tue, 19 Jun 2018 09:02:04 +0200 Subject: [PATCH 194/344] [DF] Remove useless statement. --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 1 - 1 file changed, 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index d1479ca0e037b..8c75b6111e723 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -1444,7 +1444,6 @@ public: private: void AddDefaultColumns() { - auto lm = GetLoopManager(); ColumnNames_t validColNames = {}; // Entry number column From 6553e012774c9615b2f33ca83170d1397c1ecd11 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Tue, 19 Jun 2018 09:19:18 +0200 Subject: [PATCH 195/344] [IMT] Better documentation. --- core/base/src/TROOT.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/base/src/TROOT.cxx b/core/base/src/TROOT.cxx index 5392fd29feef8..9c7fda6646068 100644 --- a/core/base/src/TROOT.cxx +++ b/core/base/src/TROOT.cxx @@ -560,10 +560,10 @@ namespace Internal { /// The following objects and methods automatically take advantage of /// multi-threading if a call to `EnableImplicitMT` has been made before usage: /// - /// - TDataFrame internally runs the event-loop by parallelizing over clusters of entries + /// - RDataFrame internally runs the event-loop by parallelizing over clusters of entries /// - TTree::GetEntry reads multiple branches in parallel /// - TTree::FlushBaskets writes multiple baskets to disk in parallel - /// - TTreeCacheUnzip decompresses baskets in parallel + /// - TTreeCacheUnzip decompresses the baskets contained in a TTreeCache in parallel /// - THx::Fit performs in parallel the evaluation of the objective function over the data /// - TMVA::DNN trains the deep neural networks in parallel /// From 32406babcf87df57840ff1a08cf77637559ffb20 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Mon, 18 Jun 2018 14:48:24 +0200 Subject: [PATCH 196/344] Added function to detect c++ attributes at function definition. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now, it is possible to define functions with c++ attributes without the .rawInput mode. For example functions like `[[ noreturn ]] foo() { ... }` or `[[deprecated]] [[nodiscard]] int bar(){ … }`. --- .../cling/lib/Utils/SourceNormalization.cpp | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/interpreter/cling/lib/Utils/SourceNormalization.cpp b/interpreter/cling/lib/Utils/SourceNormalization.cpp index ea73d42c49197..da2deb481f452 100644 --- a/interpreter/cling/lib/Utils/SourceNormalization.cpp +++ b/interpreter/cling/lib/Utils/SourceNormalization.cpp @@ -375,12 +375,32 @@ size_t cling::utils::getWrapPoint(std::string& source, return std::string::npos; } - const tok::TokenKind kind = Tok.getKind(); // Prior behavior was to return getFileOffset, which was only used as an // in a test against std::string::npos. By returning 0 we preserve prior // behavior to pass the test against std::string::npos and wrap everything const size_t offset = 0; + // Check, if a function with c++ attributes should be defined. + while (Tok.getKind() == tok::l_square) { + Lex.Lex(Tok); + // Check, if attribute starts with '[[' + if (Tok.getKind() != tok::l_square) { + return offset; + } + // Check, if the second '[' is closing. + if (!Lex.CheckBalance(Tok)) { + return offset; + } + Lex.Lex(Tok); + // Check, if the first '[' is closing. + if (Tok.getKind() != tok::r_square) { + return offset; + } + Lex.Lex(Tok); + } + + const tok::TokenKind kind = Tok.getKind(); + if (kind == tok::raw_identifier && !Tok.needsCleaning()) { StringRef keyword(Tok.getRawIdentifier()); if (keyword.equals("using")) { From b27a76a70cc24c403fba85a0c205bd76de1468e4 Mon Sep 17 00:00:00 2001 From: Stefan Wunsch Date: Mon, 18 Jun 2018 10:35:43 +0200 Subject: [PATCH 197/344] [PyROOT] Add tutorial for pretty printing feature --- tutorials/pyroot/pyroot003_prettyPrinting.py | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tutorials/pyroot/pyroot003_prettyPrinting.py diff --git a/tutorials/pyroot/pyroot003_prettyPrinting.py b/tutorials/pyroot/pyroot003_prettyPrinting.py new file mode 100644 index 0000000000000..83bc39d468479 --- /dev/null +++ b/tutorials/pyroot/pyroot003_prettyPrinting.py @@ -0,0 +1,38 @@ +## \file +## \ingroup tutorial_pyroot +## \notebook -nodraw +## This tutorial illustrates the pretty printing feature of PyROOT, which reveals +## the content of the object if a string representation is requested, e.g., by +## Python's print statement. The printing behaves similar to the ROOT prompt +## powered by the C++ interpreter cling. +## +## \macro_code +## +## \date June 2018 +## \author Stefan Wunsch + +import ROOT + +# Create an object with PyROOT +obj = ROOT.std.vector("int")(3) +for i in range(obj.size()): + obj[i] = i + +# Print the object, which reveals the content. Note that `print` calls the special +# method `__str__` of the object internally. +print(obj) + +# The output can be retrieved as string by any function that triggers the `__str__` +# special method of the object, e.g., `str` or `format`. +print(str(obj)) +print("{}".format(obj)) + +# Note that the interactive Python prompt does not call `__str__`, it calls +# `__repr__`, which implements a formal and unique string representation of +# the object. +print(repr(obj)) +obj + +# The print output behaves similar to the ROOT prompt, e.g., here for a ROOT histogram. +hist = ROOT.TH1F("name", "title", 10, 0, 1) +print(hist) From 362b7d82e7914d5bdbd93b505f21dca16b158d18 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 18 Jun 2018 21:28:51 +0200 Subject: [PATCH 198/344] Rip out ruby, unmaintained and not building since years (ROOT-9193). --- cmake/modules/RootBuildOptions.cmake | 1 - cmake/modules/RootConfiguration.cmake | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 1ba829788bbca..128998d64cdea 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -154,7 +154,6 @@ ROOT_BUILD_OPTION(rfio OFF "RFIO support, requires libshift from CASTOR >= 1.5.2 ROOT_BUILD_OPTION(roofit ON "Build the libRooFit advanced fitting package") ROOT_BUILD_OPTION(root7 OFF "Build the ROOT 7 interface prototype, requires >= cxx14") ROOT_BUILD_OPTION(rpath OFF "Set run-time library load path on executables and shared libraries (at installation area)") -ROOT_BUILD_OPTION(ruby OFF "Ruby ROOT bindings, requires ruby >= 1.8") ROOT_BUILD_OPTION(runtime_cxxmodules OFF "Enable runtime support for C++ modules.") ROOT_BUILD_OPTION(sapdb OFF "MaxDB/SapDB support, requires libsqlod and libsqlrte") ROOT_BUILD_OPTION(shadowpw OFF "Shadow password support") diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake index d026fd99ffb94..f017921b7cfa5 100644 --- a/cmake/modules/RootConfiguration.cmake +++ b/cmake/modules/RootConfiguration.cmake @@ -330,10 +330,9 @@ set(pythonlib ${PYTHON_LIBRARY}) set(pythonincdir ${PYTHON_INCLUDE_DIR}) set(pythonlibflags) -set(buildruby ${value${ruby}}) -set(rubylibdir ${RUBY_LIBRARY_DIR}) -set(rubylib ${RUBY_LIBRARY}) -set(rubyincdir ${RUBY_INCLUDE_DIR}) +if (ruby) + message(FATAL_ERROR "Ruby bindings are discontinued; please report to root-dev@cern.ch should you still need them!") +endif() set(buildxml ${value${xml}}) set(xmllibdir ${LIBXML2_LIBRARY_DIR}) From 114d374eef8236f0d6cf3d1e4013d0f9e4ea020c Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 19 Jun 2018 15:29:31 +0200 Subject: [PATCH 199/344] Mention removal of ruby bindings. --- README/ReleaseNotes/v616/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index c6cf2462cc106..187ac9a5dd9de 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -30,6 +30,14 @@ The following people have contributed to this new version: Wouter Verkerke, NIKHEF/Atlas, \ Jan Musinsky, SAS Kosice +## Deprecation and Removal + +### Ruby bindings + +The ruby binding has been unmaintained for several years; it does not build with current ruby versions. +Given that this effectively meant that Ruby was dysfunctional and given that nobody (but package maintainers) has complained, we decided to remove it. + + ## Core Libraries From b9ef7b69970688dffbce1e7a4c27dcf8808db84d Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Tue, 19 Jun 2018 17:57:15 +0200 Subject: [PATCH 200/344] Swap bits 20 and 21 to bit coherent with TGraph.h where bit 20 is kIsHighlight This change was proposed by Jan Musinsky (the author of the Highlight mechanism) and approved by Lorenzo. --- hist/hist/inc/TH1.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hist/hist/inc/TH1.h b/hist/hist/inc/TH1.h index 8acf0c3663f30..d43cdfafe2fce 100644 --- a/hist/hist/inc/TH1.h +++ b/hist/hist/inc/TH1.h @@ -159,15 +159,15 @@ class TH1 : public TNamed, public TAttLine, public TAttFill, public TAttMarker { enum EStatusBits { kNoStats = BIT(9), ///< don't draw stats box kUserContour = BIT(10), ///< user specified contour levels - // kCanRebin = BIT(11), ///< FIXME DEPRECATED - to be removed, replaced by SetCanExtend / CanExtendAllAxes +// kCanRebin = BIT(11), ///< FIXME DEPRECATED - to be removed, replaced by SetCanExtend / CanExtendAllAxes kLogX = BIT(15), ///< X-axis in log scale - kIsZoomed = BIT(16), ///< bit set when zooming on Y axis + kIsZoomed = BIT(16), ///< bit set when zooming on Y axis kNoTitle = BIT(17), ///< don't draw the histogram title kIsAverage = BIT(18), ///< Bin contents are average (used by Add) kIsNotW = BIT(19), ///< Histogram is forced to be not weighted even when the histogram is filled with weighted /// different than 1. - kAutoBinPTwo = BIT(20), ///< Use Power(2)-based algorithm for autobinning - kIsHighlight = BIT(21) ///< bit set if histo is highlight + kIsHighlight = BIT(20), ///< bit set if histo is highlight + kAutoBinPTwo = BIT(21) ///< Use Power(2)-based algorithm for auto-binning }; // size of statistics data (size of array used in GetStats()/ PutStats ) // s[0] = sumw s[1] = sumw2 From e6b8a3cfc66d1d6e07c50b080251d32a7c64177f Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 19 Jun 2018 11:30:12 +0200 Subject: [PATCH 201/344] [R__LOCKGUARD] Add parens around mutex expression (ROOT-9479). --- core/base/inc/TVirtualMutex.h | 6 +++--- core/meta/inc/TInterpreter.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/base/inc/TVirtualMutex.h b/core/base/inc/TVirtualMutex.h index 1ae5d2200d1c9..bdc29ff4e3668 100644 --- a/core/base/inc/TVirtualMutex.h +++ b/core/base/inc/TVirtualMutex.h @@ -103,9 +103,9 @@ class TLockGuard { #define R__LOCKGUARD_NAMED(name,mutex) TLockGuard _NAME2_(R__guard,name)(mutex) #define R__LOCKGUARD_UNLOCK(name) _NAME2_(R__guard,name).UnLock() #else -#define R__LOCKGUARD(mutex) (void)mutex; { } -#define R__LOCKGUARD_NAMED(name,mutex) (void)mutex; { } -#define R__LOCKGUARD2(mutex) (void)mutex; { } +#define R__LOCKGUARD(mutex) (void)(mutex); { } +#define R__LOCKGUARD_NAMED(name,mutex) (void)(mutex); { } +#define R__LOCKGUARD2(mutex) (void)(mutex); { } #define R__LOCKGUARD_UNLOCK(name) { } #endif diff --git a/core/meta/inc/TInterpreter.h b/core/meta/inc/TInterpreter.h index 0f4baa6f3b351..8bec2edbc2cff 100644 --- a/core/meta/inc/TInterpreter.h +++ b/core/meta/inc/TInterpreter.h @@ -44,7 +44,7 @@ R__EXTERN TVirtualMutex *gInterpreterMutex; #if defined (_REENTRANT) || defined (WIN32) # define R__LOCKGUARD_CLING(mutex) ::ROOT::Internal::InterpreterMutexRegistrationRAII _R__UNIQUE_(R__guard)(mutex); { } #else -# define R__LOCKGUARD_CLING(mutex) (void)mutex; { } +# define R__LOCKGUARD_CLING(mutex) (void)(mutex); { } #endif namespace ROOT { From 0605720ca3e42bfbe8f53ed584578bbf9488ad60 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Wed, 20 Jun 2018 08:40:09 +0200 Subject: [PATCH 202/344] Revert "Swap bits 20 and 21 to bit coherent with TGraph.h where bit 20 is kIsHighlight" This reverts commit b9ef7b69970688dffbce1e7a4c27dcf8808db84d. --- hist/hist/inc/TH1.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hist/hist/inc/TH1.h b/hist/hist/inc/TH1.h index d43cdfafe2fce..8acf0c3663f30 100644 --- a/hist/hist/inc/TH1.h +++ b/hist/hist/inc/TH1.h @@ -159,15 +159,15 @@ class TH1 : public TNamed, public TAttLine, public TAttFill, public TAttMarker { enum EStatusBits { kNoStats = BIT(9), ///< don't draw stats box kUserContour = BIT(10), ///< user specified contour levels -// kCanRebin = BIT(11), ///< FIXME DEPRECATED - to be removed, replaced by SetCanExtend / CanExtendAllAxes + // kCanRebin = BIT(11), ///< FIXME DEPRECATED - to be removed, replaced by SetCanExtend / CanExtendAllAxes kLogX = BIT(15), ///< X-axis in log scale - kIsZoomed = BIT(16), ///< bit set when zooming on Y axis + kIsZoomed = BIT(16), ///< bit set when zooming on Y axis kNoTitle = BIT(17), ///< don't draw the histogram title kIsAverage = BIT(18), ///< Bin contents are average (used by Add) kIsNotW = BIT(19), ///< Histogram is forced to be not weighted even when the histogram is filled with weighted /// different than 1. - kIsHighlight = BIT(20), ///< bit set if histo is highlight - kAutoBinPTwo = BIT(21) ///< Use Power(2)-based algorithm for auto-binning + kAutoBinPTwo = BIT(20), ///< Use Power(2)-based algorithm for autobinning + kIsHighlight = BIT(21) ///< bit set if histo is highlight }; // size of statistics data (size of array used in GetStats()/ PutStats ) // s[0] = sumw s[1] = sumw2 From 13855fbe5b8990274191ae8062a4826b1ea26fd8 Mon Sep 17 00:00:00 2001 From: Stergiadis Manos Date: Wed, 20 Jun 2018 10:46:49 +0200 Subject: [PATCH 203/344] Fix zero initialization in `TCudaMatrix` (#2208) * Fixes a previously fatal runtime error when trying to initialize a cudaMatrix with zeroes. * Fixes a previously fatal runtime error when trying to initialize a cudaMatrix with zeroes. * Use `cudaMemset` to avoid host memory allocation --- tmva/tmva/inc/TMVA/DNN/Architectures/Cuda/CudaMatrix.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tmva/tmva/inc/TMVA/DNN/Architectures/Cuda/CudaMatrix.h b/tmva/tmva/inc/TMVA/DNN/Architectures/Cuda/CudaMatrix.h index b6b84d78ef3e1..f4ed673d52675 100644 --- a/tmva/tmva/inc/TMVA/DNN/Architectures/Cuda/CudaMatrix.h +++ b/tmva/tmva/inc/TMVA/DNN/Architectures/Cuda/CudaMatrix.h @@ -165,11 +165,8 @@ class TCudaMatrix mat.Print(); } - void Zero() { - // to be checked - AFloat * p = GetDataPointer(); - for (size_t i = 0; i < GetNoElements(); ++i) - p[i] = 0; + void Zero() { + cudaMemset(GetDataPointer(), 0, sizeof(AFloat) * GetNoElements()); } From d1cea393b3334657c010df32ca0412441898a87a Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 23 May 2018 12:54:22 +0200 Subject: [PATCH 204/344] Outline ~IPruneTool() to pin vtable. --- tmva/tmva/inc/TMVA/IPruneTool.h | 4 +--- tmva/tmva/src/CostComplexityPruneTool.cxx | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tmva/tmva/inc/TMVA/IPruneTool.h b/tmva/tmva/inc/TMVA/IPruneTool.h index d02ee62f2a254..58a0cf65a0849 100644 --- a/tmva/tmva/inc/TMVA/IPruneTool.h +++ b/tmva/tmva/inc/TMVA/IPruneTool.h @@ -74,7 +74,7 @@ Any tool which implements the interface should provide two modes for tree prunin typedef std::vector EventSample; IPruneTool( ); - virtual ~IPruneTool(); + virtual ~IPruneTool(); // defaulted in CostComplexityPruneTool.cxx public: @@ -109,8 +109,6 @@ Any tool which implements the interface should provide two modes for tree prunin S(0), B(0) {} - inline IPruneTool::~IPruneTool( ) {} - } #endif diff --git a/tmva/tmva/src/CostComplexityPruneTool.cxx b/tmva/tmva/src/CostComplexityPruneTool.cxx index ed581f7ec46db..97c537f03dcee 100644 --- a/tmva/tmva/src/CostComplexityPruneTool.cxx +++ b/tmva/tmva/src/CostComplexityPruneTool.cxx @@ -63,6 +63,9 @@ subtree, defined to be the subtree with the best quality index for the validatio using namespace TMVA; +// Pin vtable of IPruneTool. +IPruneTool::~IPruneTool() = default; + //////////////////////////////////////////////////////////////////////////////// /// the constructor for the cost complexity pruning From f2ec246f6771eb9a4c6f965fa225a6efb6dbcbab Mon Sep 17 00:00:00 2001 From: Kim Albertsson Date: Wed, 20 Jun 2018 16:08:03 +0200 Subject: [PATCH 205/344] ROOT-9483 -- Prevent nullptr deref. in compiled macros (#2214) When compiling TMVA GUI methods stand alone (e.g. clang++ not through `root -l`) the graphics subsystem of ROOT is not initialised leading to a null pointer dereference. --- tmva/tmvagui/src/mvaeffs.cxx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tmva/tmvagui/src/mvaeffs.cxx b/tmva/tmvagui/src/mvaeffs.cxx index a5f61274a4e2a..8e41f2bfae7f5 100644 --- a/tmva/tmvagui/src/mvaeffs.cxx +++ b/tmva/tmvagui/src/mvaeffs.cxx @@ -512,7 +512,16 @@ void TMVA::mvaeffs(TString dataset, TString fin , { TMVAGlob::Initialize( useTMVAStyle ); - StatDialogMVAEffs* gGui = new StatDialogMVAEffs(dataset,gClient->GetRoot(), 1000, 1000); + TGClient * graphicsClient = TGClient::Instance(); + if (graphicsClient == nullptr) { + // When including mvaeffs in a stand-alone macro, the graphics subsystem + // is not initialised and `TGClient::Instance` is a nullptr. + graphicsClient = new TGClient(); + } + + StatDialogMVAEffs* gGui = new StatDialogMVAEffs(dataset, + graphicsClient->GetRoot(), 1000, 1000); + TFile* file = TMVAGlob::OpenFile( fin ); gGui->ReadHistograms(file); From 258d5c41f042dc260adfd24d5d51906a9c326236 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 20 Jun 2018 16:35:42 +0200 Subject: [PATCH 206/344] Revert "Outline ~IPruneTool() to pin vtable." This reverts commit d1cea393b3334657c010df32ca0412441898a87a. Triggers failure of roottest/root/meta/cmsUnload that we need to debug first. --- tmva/tmva/inc/TMVA/IPruneTool.h | 4 +++- tmva/tmva/src/CostComplexityPruneTool.cxx | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tmva/tmva/inc/TMVA/IPruneTool.h b/tmva/tmva/inc/TMVA/IPruneTool.h index 58a0cf65a0849..d02ee62f2a254 100644 --- a/tmva/tmva/inc/TMVA/IPruneTool.h +++ b/tmva/tmva/inc/TMVA/IPruneTool.h @@ -74,7 +74,7 @@ Any tool which implements the interface should provide two modes for tree prunin typedef std::vector EventSample; IPruneTool( ); - virtual ~IPruneTool(); // defaulted in CostComplexityPruneTool.cxx + virtual ~IPruneTool(); public: @@ -109,6 +109,8 @@ Any tool which implements the interface should provide two modes for tree prunin S(0), B(0) {} + inline IPruneTool::~IPruneTool( ) {} + } #endif diff --git a/tmva/tmva/src/CostComplexityPruneTool.cxx b/tmva/tmva/src/CostComplexityPruneTool.cxx index 97c537f03dcee..ed581f7ec46db 100644 --- a/tmva/tmva/src/CostComplexityPruneTool.cxx +++ b/tmva/tmva/src/CostComplexityPruneTool.cxx @@ -63,9 +63,6 @@ subtree, defined to be the subtree with the best quality index for the validatio using namespace TMVA; -// Pin vtable of IPruneTool. -IPruneTool::~IPruneTool() = default; - //////////////////////////////////////////////////////////////////////////////// /// the constructor for the cost complexity pruning From 0bfe81d38d0019d9832584b77d746487719454d7 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Wed, 20 Jun 2018 17:29:35 +0200 Subject: [PATCH 207/344] Revert "Mark unimplemented new() "throw()" as they return nullptr." This reverts commit e3b505efe73ad6f98be501764a19d5f326fb10f8. The commit caused the compilation error: core/newdelete/src/NewDelete.cxx:214:7: error: exception specification in declaration does not match previous declaration void *operator new(size_t /*size*/, std::align_val_t /*al*/) throw() ^ /cvmfs/sft.cern.ch/lcg/contrib/gcc/7binutils/x86_64-centos7/lib/gcc/x86_64-pc-linux-gnu/7.3.0/../../../../include/c++/7.3.0/new:143:7: note: previous declaration is here void* operator new(std::size_t, std::align_val_t) ^ --- core/newdelete/src/NewDelete.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/newdelete/src/NewDelete.cxx b/core/newdelete/src/NewDelete.cxx index 22d46f980587c..b997d9e3aa55d 100644 --- a/core/newdelete/src/NewDelete.cxx +++ b/core/newdelete/src/NewDelete.cxx @@ -211,7 +211,7 @@ void *operator new(size_t size, const std::nothrow_t&) noexcept #if __cplusplus >= 201700L -void *operator new(size_t /*size*/, std::align_val_t /*al*/) throw() +void *operator new(size_t /*size*/, std::align_val_t /*al*/) { Fatal("operator new","with std::align_val_t is not implemented yet"); return nullptr; @@ -338,7 +338,7 @@ void *operator new[](size_t size, const std::nothrow_t&) noexcept #if __cplusplus >= 201700L -void *operator new[](size_t /*size*/, std::align_val_t /*al*/) throw() +void *operator new[](size_t /*size*/, std::align_val_t /*al*/) { Fatal("operator new[]","with std::align_val_t is not implemented yet"); return nullptr; From 2c8a29d1b60729e36f47d3822deb78be145a002b Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 20 Jun 2018 15:10:03 +0200 Subject: [PATCH 208/344] [DF] Rename action helpers' InitSlot to InitTask In line with the naming we used for the interface required by `RInterface::Book` for user-defined action helpers. There are several other places where `InitSlot` is used to indicate a function that is executed to initialize a slot at the beginning of a task. Those might be renamed as well, since `InitTask` makes it much more clear that the function is executed multiple times per slot. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 41 +++++++++----------- tree/dataframe/inc/ROOT/RDFNodes.hxx | 2 +- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index 81b6aa465ec05..7913024417d5f 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -48,10 +48,7 @@ namespace Detail { namespace RDF { template -class RActionImpl { -public: - void InitSlot(TTreeReader *r, unsigned int slot) { static_cast(*this).InitTask(r, slot); } -}; +class RActionImpl {}; } // namespace RDF } // namespace Detail @@ -74,7 +71,7 @@ public: ForeachSlotHelper(ForeachSlotHelper &&) = default; ForeachSlotHelper(const ForeachSlotHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} template void Exec(unsigned int slot, Args &&... args) @@ -98,7 +95,7 @@ public: CountHelper(const std::shared_ptr &resultCount, const unsigned int nSlots); CountHelper(CountHelper &&) = default; CountHelper(const CountHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot); void Initialize() { /* noop */} void Finalize(); @@ -121,7 +118,7 @@ public: : fReport(report), fProxiedWPtr(pp), fReturnEmptyReport(emptyRep){}; ReportHelper(ReportHelper &&) = default; ReportHelper(const ReportHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int /* slot */) {} void Initialize() { /* noop */} void Finalize() @@ -154,7 +151,7 @@ public: FillHelper(const std::shared_ptr &h, const unsigned int nSlots); FillHelper(FillHelper &&) = default; FillHelper(const FillHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, double v); void Exec(unsigned int slot, double v, double w); @@ -220,7 +217,7 @@ public: } } - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, double x0) // 1D histos { @@ -334,7 +331,7 @@ public: TakeHelper(TakeHelper &&) = default; TakeHelper(const TakeHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, T &v) { fColls[slot]->emplace_back(v); } @@ -374,7 +371,7 @@ public: TakeHelper(TakeHelper &&) = default; TakeHelper(const TakeHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, T &v) { fColls[slot]->emplace_back(v); } @@ -414,7 +411,7 @@ public: TakeHelper(TakeHelper &&) = default; TakeHelper(const TakeHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, RVec av) { fColls[slot]->emplace_back(av.begin(), av.end()); } @@ -452,7 +449,7 @@ public: TakeHelper(TakeHelper &&) = default; TakeHelper(const TakeHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, RVec av) { fColls[slot]->emplace_back(av.begin(), av.end()); } @@ -487,7 +484,7 @@ public: void Exec(unsigned int slot, ResultType v) { fMins[slot] = std::min(v, fMins[slot]); } - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} template ::value, int>::type = 0> void Exec(unsigned int slot, const T &vs) @@ -528,7 +525,7 @@ public: { } - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, ResultType v) { fMaxs[slot] = std::max(v, fMaxs[slot]); } template ::value, int>::type = 0> @@ -571,7 +568,7 @@ public: { } - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, ResultType v) { fSums[slot] += v; } template ::value, int>::type = 0> @@ -602,7 +599,7 @@ public: MeanHelper(const std::shared_ptr &meanVPtr, const unsigned int nSlots); MeanHelper(MeanHelper &&) = default; MeanHelper(const MeanHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} void Exec(unsigned int slot, double v); template ::value, int>::type = 0> @@ -679,7 +676,7 @@ class SnapshotHelper { bool fIsFirstEvent{true}; const ColumnNames_t fInputBranchNames; // This contains the resolved aliases const ColumnNames_t fOutputBranchNames; - TTree *fInputTree = nullptr; // Current input tree. Set at initialization time (`InitSlot`) + TTree *fInputTree = nullptr; // Current input tree. Set at initialization time (`InitTask`) public: SnapshotHelper(std::string_view filename, std::string_view dirname, std::string_view treename, @@ -692,7 +689,7 @@ public: SnapshotHelper(const SnapshotHelper &) = delete; SnapshotHelper(SnapshotHelper &&) = default; - void InitSlot(TTreeReader *r, unsigned int /* slot */) + void InitTask(TTreeReader *r, unsigned int /* slot */) { if (!r) // empty source, nothing to do return; @@ -765,7 +762,7 @@ class SnapshotHelperMT { const RSnapshotOptions fOptions; // struct holding options to pass down to TFile and TTree in this action const ColumnNames_t fInputBranchNames; // This contains the resolved aliases const ColumnNames_t fOutputBranchNames; - std::vector fInputTrees; // Current input trees. Set at initialization time (`InitSlot`) + std::vector fInputTrees; // Current input trees. Set at initialization time (`InitTask`) public: using ColumnTypes_t = TypeList; @@ -780,7 +777,7 @@ public: SnapshotHelperMT(const SnapshotHelperMT &) = delete; SnapshotHelperMT(SnapshotHelperMT &&) = default; - void InitSlot(TTreeReader *r, unsigned int slot) + void InitTask(TTreeReader *r, unsigned int slot) { ::TDirectory::TContext c; // do not let tasks change the thread-local gDirectory if (!fOutputTrees[slot]) { @@ -874,7 +871,7 @@ public: AggregateHelper(AggregateHelper &&) = default; AggregateHelper(const AggregateHelper &) = delete; - void InitSlot(TTreeReader *, unsigned int) {} + void InitTask(TTreeReader *, unsigned int) {} template ::type = 0> void Exec(unsigned int slot, const T &value) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 792af6b81b169..47ea5c15931de 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -384,7 +384,7 @@ public: { InitRDFValues(slot, fValues[slot], r, fBranches, fLoopManager->GetCustomColumnNames(), fLoopManager->GetBookedColumns(), TypeInd_t()); - fHelper.InitSlot(r, slot); + fHelper.InitTask(r, slot); } void Run(unsigned int slot, Long64_t entry) final From 9e001220f4df0c531e089e341f04f353b7526c47 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 20 Jun 2018 16:04:08 +0200 Subject: [PATCH 209/344] [DF] Make all action helpers inherit from RActionImpl This is in line with what we require of user-defined action helpers in Book. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 34 +++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index 7913024417d5f..e8502f5f7118c 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -58,11 +58,12 @@ namespace RDF { using namespace ROOT::TypeTraits; using namespace ROOT::VecOps; using namespace ROOT::RDF; +using namespace ROOT::Detail::RDF; using Hist_t = ::TH1D; template -class ForeachSlotHelper { +class ForeachSlotHelper : public RActionImpl> { F fCallable; public: @@ -86,7 +87,7 @@ public: void Finalize() { /* noop */} }; -class CountHelper { +class CountHelper : public RActionImpl { const std::shared_ptr fResultCount; std::vector fCounts; @@ -103,7 +104,7 @@ public: }; template -class ReportHelper { +class ReportHelper : public RActionImpl> { const std::shared_ptr fReport; // Here we have a weak pointer since we need to keep track of the validity // of the proxied node. It can happen that the user does not trigger the @@ -129,7 +130,7 @@ public: } }; -class FillHelper { +class FillHelper : public RActionImpl { // this sets a total initial size of 16 MB for the buffers (can increase) static constexpr unsigned int fgTotalBufSize = 2097152; using BufEl_t = double; @@ -201,7 +202,7 @@ extern template void FillHelper::Exec(unsigned int, const std::vector &, const std::vector &); template -class FillTOHelper { +class FillTOHelper : public RActionImpl> { std::unique_ptr> fTo; public: @@ -317,7 +318,7 @@ public: // Case 1.: The column is not an RVec, the collection is not a vector // No optimisations, no transformations: just copies. template -class TakeHelper { +class TakeHelper : public RActionImpl> { std::vector> fColls; public: @@ -354,7 +355,7 @@ public: // Case 2.: The column is not an RVec, the collection is a vector // Optimisations, no transformations: just copies. template -class TakeHelper> { +class TakeHelper> : public RActionImpl>> { std::vector>> fColls; public: @@ -397,7 +398,7 @@ public: // Case 3.: The column is a RVec, the collection is not a vector // No optimisations, transformations from RVecs to vectors template -class TakeHelper, COLL> { +class TakeHelper, COLL> : public RActionImpl, COLL>> { std::vector> fColls; public: @@ -432,7 +433,8 @@ public: // Case 4.: The column is an RVec, the collection is a vector // Optimisations, transformations from RVecs to vectors template -class TakeHelper, std::vector> { + class TakeHelper, std::vector> + : public RActionImpl, std::vector>> { std::vector>>> fColls; public: @@ -471,7 +473,7 @@ public: }; template -class MinHelper { +class MinHelper : public RActionImpl> { const std::shared_ptr fResultMin; std::vector fMins; @@ -513,7 +515,7 @@ public: // extern template void MinHelper::Exec(unsigned int, const std::vector &); template -class MaxHelper { +class MaxHelper : public RActionImpl> { const std::shared_ptr fResultMax; std::vector fMaxs; @@ -556,7 +558,7 @@ public: // extern template void MaxHelper::Exec(unsigned int, const std::vector &); template -class SumHelper { +class SumHelper : public RActionImpl> { const std::shared_ptr fResultSum; std::vector fSums; @@ -589,7 +591,7 @@ public: ResultType &PartialUpdate(unsigned int slot) { return fSums[slot]; } }; -class MeanHelper { +class MeanHelper : public RActionImpl { const std::shared_ptr fResultMean; std::vector fCounts; std::vector fSums; @@ -666,7 +668,7 @@ void SetBranchesHelper(TTree *inputTree, TTree &outputTree, const std::string &v /// Helper object for a single-thread Snapshot action template -class SnapshotHelper { +class SnapshotHelper : public RActionImpl> { const std::string fFileName; const std::string fDirName; const std::string fTreeName; @@ -750,7 +752,7 @@ public: /// Helper object for a multi-thread Snapshot action template -class SnapshotHelperMT { +class SnapshotHelperMT : public RActionImpl> { const unsigned int fNSlots; std::unique_ptr fMerger; // must use a ptr because TBufferMerger is not movable std::vector> fOutputFiles; @@ -856,7 +858,7 @@ public: template ::value> -class AggregateHelper { +class AggregateHelper : public RActionImpl> { Acc fAggregate; Merge fMerge; const std::shared_ptr fResult; From f4a0f2023e61635abbf0595c79b65c7f4f4bbedb Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 20 Jun 2018 16:04:54 +0200 Subject: [PATCH 210/344] [DF] Decorate every action helper with an empty FinalizeTask method --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index e8502f5f7118c..b1965dfeaabb1 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -48,7 +48,19 @@ namespace Detail { namespace RDF { template -class RActionImpl {}; +class RActionImpl +{ +public: + // call Helper::FinalizeTask if present, do nothing otherwise + template + auto CallFinalizeTask(unsigned int slot) -> decltype(&T::FinalizeTask, void()) + { + static_cast(this)->FinalizeTask(slot); + } + + template + void CallFinalizeTask(unsigned int, Args...) {} +}; } // namespace RDF } // namespace Detail From 068447b57bfd566f5ec09b61cf4ca5b1f8d4a8e6 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 20 Jun 2018 16:18:16 +0200 Subject: [PATCH 211/344] [DF] Call ActionHelper::FinalizeTask at the end of each task --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 10 ++++++++-- tree/dataframe/src/RDFNodes.cxx | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 47ea5c15931de..7550f948446f8 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -352,7 +352,7 @@ public: virtual void Initialize() = 0; virtual void InitSlot(TTreeReader *r, unsigned int slot) = 0; virtual void TriggerChildrenCount() = 0; - virtual void ClearValueReaders(unsigned int slot) = 0; + virtual void FinalizeSlot(unsigned int) = 0; /// This method is invoked to update a partial result during the event loop, right before passing the result to a /// user-defined callback registered via RResultPtr::RegisterCallback virtual void *PartialUpdate(unsigned int slot) = 0; @@ -403,7 +403,13 @@ public: void TriggerChildrenCount() final { fPrevData.IncrChildrenCount(); } - virtual void ClearValueReaders(unsigned int slot) final { ResetRDFValueTuple(fValues[slot], TypeInd_t()); } + void FinalizeSlot(unsigned int slot) final + { + ClearValueReaders(slot); + fHelper.CallFinalizeTask(slot); + } + + void ClearValueReaders(unsigned int slot) { ResetRDFValueTuple(fValues[slot], TypeInd_t()); } /// This method is invoked to update a partial result during the event loop, right before passing the result to a /// user-defined callback registered via RResultPtr::RegisterCallback diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index 0831208590c47..1733466b92e4b 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -458,7 +458,7 @@ void RLoopManager::CleanUpNodes() void RLoopManager::CleanUpTask(unsigned int slot) { for (auto &ptr : fBookedActions) - ptr->ClearValueReaders(slot); + ptr->FinalizeSlot(slot); for (auto &ptr : fBookedFilters) ptr->ClearValueReaders(slot); for (auto &pair : fBookedCustomColumns) From ff8e9bd1329fbb1cf5d5b42b0a354bbae81ee873 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 14 Jun 2018 17:11:26 +0200 Subject: [PATCH 212/344] [DF][NFC] Add comment on the ownership of the output trees --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 1 + 1 file changed, 1 insertion(+) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index b1965dfeaabb1..18a3d5646b9e8 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -807,6 +807,7 @@ public: } // re-create output tree as we need to create its branches again, with new input variables // TODO we could instead create the output tree and its branches, change addresses of input variables in each task + // The trees that we do not delete will be garbage-collected by the dtor of their TBufferMergerFile fOutputTrees[slot] = new TTree(fTreeName.c_str(), fTreeName.c_str(), fOptions.fSplitLevel, /*dir=*/treeDirectory); fOutputTrees[slot]->ResetBit(kMustCleanup); // do not mingle with the thread-unsafe gListOfCleanups if (fOptions.fAutoFlush) From caa388ffa065d93dfe0c58df5889e5d6181e353c Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 14 Jun 2018 18:54:36 +0200 Subject: [PATCH 213/344] [DF] Give SnapshotHelperMT ownership of its output trees We used to heap-allocate one TTree per TBB task and never deallocate them, for fear of interfering with ROOT's garbage collection. At the same time, though, we deregistered said trees from ROOT's gc mechanism with `ResetBit(kMustCleanup)`. As a result I'm not sure the output trees were ever deleted. This commit lets SnapshotHelperMT take ownership of the output trees so that when a new task comes along the previous output tree in use by that slot is deleted. This has the desired side-effect of deregistering it from the output directory (the TBufferMergerFile) to which it belongs. This is desirable because we call `Write` on these output files, which in turn would call `Write` on the current output tree __and all previous output trees__ if they were still registered with the directory -- this is not a problem in terms of final output (`Write` on old output trees is a no-op as there is no pending buffer to flush) but is wasteful. The deregistration of obsolete per-task output trees from the thread-local output directories also sets the stage for fixing ROOT-9471. Finally, output trees are re-added to the (now thread-safe) list of cleanups to make sure that output trees are correctly deregistered from the input tree at their destruction, lest the input tree tries to access the deleted output trees in its dtor, as they are registered in its list of clones. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index 18a3d5646b9e8..b9ddc2a2b34b0 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -26,6 +26,7 @@ #include "ROOT/TBufferMerger.hxx" // for SnapshotHelper #include "ROOT/RCutFlowReport.hxx" #include "ROOT/RDFUtils.hxx" +#include "ROOT/RMakeUnique.hxx" #include "ROOT/RSnapshotOptions.hxx" #include "ROOT/TThreadedObject.hxx" #include "ROOT/TypeTraits.hxx" @@ -768,7 +769,7 @@ class SnapshotHelperMT : public RActionImpl> { const unsigned int fNSlots; std::unique_ptr fMerger; // must use a ptr because TBufferMerger is not movable std::vector> fOutputFiles; - std::vector fOutputTrees; // ROOT will own/manage these TTrees, must not delete + std::vector> fOutputTrees; // must come _after_ output files to be deleted _before_ them std::vector fIsFirstEvent; // vector is evil const std::string fFileName; // name of the output file name const std::string fDirName; // name of TFile subdirectory in which output must be written (possibly empty) @@ -783,8 +784,8 @@ public: SnapshotHelperMT(const unsigned int nSlots, std::string_view filename, std::string_view dirname, std::string_view treename, const ColumnNames_t &vbnames, const ColumnNames_t &bnames, const RSnapshotOptions &options) - : fNSlots(nSlots), fOutputFiles(fNSlots), fOutputTrees(fNSlots, nullptr), fIsFirstEvent(fNSlots, 1), - fFileName(filename), fDirName(dirname), fTreeName(treename), fOptions(options), fInputBranchNames(vbnames), + : fNSlots(nSlots), fOutputFiles(fNSlots), fOutputTrees(fNSlots), fIsFirstEvent(fNSlots, 1), fFileName(filename), + fDirName(dirname), fTreeName(treename), fOptions(options), fInputBranchNames(vbnames), fOutputBranchNames(ReplaceDotWithUnderscore(bnames)), fInputTrees(fNSlots) { } @@ -807,9 +808,8 @@ public: } // re-create output tree as we need to create its branches again, with new input variables // TODO we could instead create the output tree and its branches, change addresses of input variables in each task - // The trees that we do not delete will be garbage-collected by the dtor of their TBufferMergerFile - fOutputTrees[slot] = new TTree(fTreeName.c_str(), fTreeName.c_str(), fOptions.fSplitLevel, /*dir=*/treeDirectory); - fOutputTrees[slot]->ResetBit(kMustCleanup); // do not mingle with the thread-unsafe gListOfCleanups + fOutputTrees[slot] = + std::make_unique(fTreeName.c_str(), fTreeName.c_str(), fOptions.fSplitLevel, /*dir=*/treeDirectory); if (fOptions.fAutoFlush) fOutputTrees[slot]->SetAutoFlush(fOptions.fAutoFlush); if (r) { @@ -817,7 +817,7 @@ public: fInputTrees[slot] = r->GetTree(); // AddClone guarantees that if the input file changes the branches of the output tree are updated with the new // addresses of the branch values - fInputTrees[slot]->AddClone(fOutputTrees[slot]); + fInputTrees[slot]->AddClone(fOutputTrees[slot].get()); } fIsFirstEvent[slot] = 1; // reset first event flag for this slot } From a1632b4847cf7877319246b61809892958ac44ab Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 14 Jun 2018 19:06:16 +0200 Subject: [PATCH 214/344] [DF] Do not flush buffers with empty trees from MT Snapshot With very few entries passing a given RDataFrame cutflow, it can happen that a TBB task ends up processing zero "good" entries. In that scenario, it could happen that the first TTree header flushed to the output file from a Snapshot action was for a tree with no entries and no branches. This effectively set the number of branches to zero for all the content written to file, even if following buffers contained well-formed TTrees. With this commit, if the output tree contains zero entries, we avoid flushing it to file. And since the next task will remove this TTree from the output directory, we can be sure that the buffer with the malformed TTree will never be written out. This fixes ROOT-9471. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index b9ddc2a2b34b0..f64fe525e6fb0 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -798,7 +798,7 @@ public: if (!fOutputTrees[slot]) { // first time this thread executes something, let's create a TBufferMerger output directory fOutputFiles[slot] = fMerger->GetFile(); - } else { + } else if (fOutputTrees[slot]->GetEntries() > 0) { // this thread is now re-executing the task, let's flush the current contents of the TBufferMergerFile fOutputFiles[slot]->Write(); } @@ -857,12 +857,15 @@ public: void Finalize() { auto fileWritten = false; - for (auto &file : fOutputFiles) { - if (file) { - fileWritten = true; + for (auto i = 0u; i < fNSlots; ++i) { + auto &file = fOutputFiles[i]; + const auto &tree = fOutputTrees[i]; + if (file != nullptr && tree->GetEntries() > 0) { file->Write(); + fileWritten = true; } } + if (!fileWritten) { Warning("Snapshot", "A lazy Snapshot action was booked but never triggered."); } From feefa22e2084dfb114a2c502457ad01675ef684d Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Thu, 14 Jun 2018 17:54:18 +0200 Subject: [PATCH 215/344] [DF] Test Snapshot does not write out empty tree buffers --- tree/dataframe/test/dataframe_snapshot.cxx | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tree/dataframe/test/dataframe_snapshot.cxx b/tree/dataframe/test/dataframe_snapshot.cxx index f63e0d7592933..be178a6daa776 100644 --- a/tree/dataframe/test/dataframe_snapshot.cxx +++ b/tree/dataframe/test/dataframe_snapshot.cxx @@ -627,6 +627,7 @@ TEST(RDFSnapshotMore, JittedSnapshotAndAliasedColumns) gSystem->Unlink(fname2); } + TEST(RDFSnapshotMore, LazyNotTriggeredMT) { ROOT::EnableImplicitMT(4); @@ -642,4 +643,30 @@ TEST(RDFSnapshotMore, LazyNotTriggeredMT) ROOT::DisableImplicitMT(); } +TEST(RDFSnapshotMore, EmptyBuffersMT) +{ + const auto fname = "emptybuffersmt.root"; + const auto treename = "t"; + ROOT::EnableImplicitMT(4); + ROOT::RDataFrame d(10); + auto dd = d.DefineSlot("x", [](unsigned int s) { return s == 3 ? 0 : 1; }) + .Filter([](int x) { return x == 0; }, {"x"}, "f"); + auto r = dd.Report(); + dd.Snapshot(treename, fname, {"x"}); + + // check test sanity + const auto passed = r->At("f").GetPass(); + EXPECT_GT(passed, 0u); + + // check result + TFile f(fname); + TTree *t = nullptr; + f.GetObject(treename, t); + EXPECT_EQ(t->GetListOfBranches()->GetEntries(), 1); + EXPECT_EQ(t->GetEntries(), Long64_t(passed)); + + ROOT::DisableImplicitMT(); + gSystem->Unlink(fname); +} + #endif // R__USE_IMT From 17c1ef4d032e0fccb5045223adbfdac95b6a7169 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Wed, 20 Jun 2018 14:17:34 +0200 Subject: [PATCH 216/344] [DF] Avoid concurrent destruction of input and output trees At the beginning of a task a new input TChain replaced the old input TChain for that _thread_ in TTreeProcessorMT, causing a destruction of the previous _thread-local_ TTree. At the same time, the initialization of a new task _in a different thread_ could delete the output TTree of a multi-thread Snapshot action, which was listed in the fClones of the input TTree. This race caused the input ~TTree to access an output tree just after its deletion, in TTree::CopyAddresses. The root cause of this issue is that TTreeProcessorMT uses thread-local variables while RDataFrame uses processing slots which threads can exchange between themselves. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index f64fe525e6fb0..a7fcb30861a36 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -822,6 +822,14 @@ public: fIsFirstEvent[slot] = 1; // reset first event flag for this slot } + void FinalizeTask(unsigned int slot) + { + if (fOutputTrees[slot]->GetEntries() > 0) + fOutputFiles[slot]->Write(); + // clear now to avoid concurrent destruction of output trees and input tree (which has them listed as fClones) + fOutputTrees[slot].reset(); + } + void Exec(unsigned int slot, BranchTypes &... values) { if (fIsFirstEvent[slot]) { @@ -857,10 +865,8 @@ public: void Finalize() { auto fileWritten = false; - for (auto i = 0u; i < fNSlots; ++i) { - auto &file = fOutputFiles[i]; - const auto &tree = fOutputTrees[i]; - if (file != nullptr && tree->GetEntries() > 0) { + for (auto &file : fOutputFiles) { + if (file) { file->Write(); fileWritten = true; } @@ -870,6 +876,7 @@ public: Warning("Snapshot", "A lazy Snapshot action was booked but never triggered."); } } + }; template Date: Thu, 21 Jun 2018 16:49:18 +0200 Subject: [PATCH 217/344] Re-add computation of correlation matrix for every data set that it is input in TMVA. This should be probably changed to be an option, because in case of large dataset (many features and many events) the time spent could be too large --- tmva/tmva/src/DataSetFactory.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/tmva/tmva/src/DataSetFactory.cxx b/tmva/tmva/src/DataSetFactory.cxx index a7183f63f0c2a..6ac52a697fcdc 100644 --- a/tmva/tmva/src/DataSetFactory.cxx +++ b/tmva/tmva/src/DataSetFactory.cxx @@ -128,7 +128,6 @@ TMVA::DataSet* TMVA::DataSetFactory::CreateDataSet( TMVA::DataSetInfo& dsi, // build the first dataset from the data input DataSet * ds = BuildInitialDataSet( dsi, dataInput ); -#if 0 if (ds->GetNEvents() > 1) { CalcMinMax(ds,dsi); @@ -143,7 +142,6 @@ TMVA::DataSet* TMVA::DataSetFactory::CreateDataSet( TMVA::DataSetInfo& dsi, //Log() << kHEADER << Endl; Log() << kHEADER << Form("[%s] : ",dsi.GetName()) << " " << Endl << Endl; } -#endif return ds; } From 87801d05a76cdf10a1cf9d7ee33540d3e0e314bf Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 22 Jun 2018 17:58:22 +0200 Subject: [PATCH 218/344] [DF] Use std::numeric_limits instead of climits --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 7550f948446f8..f46488989eb0c 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include // std::vector substitute in case of vector #include @@ -53,7 +53,7 @@ private: } unsigned int &GetIndex() { - TTHREAD_TLS(unsigned int) index = UINT_MAX; + TTHREAD_TLS(unsigned int) index = std::numeric_limits::max(); return index; } unsigned int fCursor; From 815c9ad206ba8aa6078eb5a784b6ab44782dd4d1 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 22 Jun 2018 17:50:39 +0200 Subject: [PATCH 219/344] [DF][NFC] Order includes in RDFNodes.hxx --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index f46488989eb0c..432534b8f0b13 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -11,29 +11,26 @@ #ifndef ROOT_RDFNODES #define ROOT_RDFNODES -#ifndef NDEBUG -#include "TError.h" -#endif -#include "ROOT/RIntegerSequence.hxx" -#include "ROOT/TypeTraits.hxx" #include "ROOT/RCutFlowReport.hxx" #include "ROOT/RDataSource.hxx" #include "ROOT/RDFNodesUtils.hxx" #include "ROOT/RDFUtils.hxx" +#include "ROOT/RIntegerSequence.hxx" #include "ROOT/RVec.hxx" #include "ROOT/TSpinMutex.hxx" +#include "ROOT/TypeTraits.hxx" +#include "TError.h" #include "TTreeReaderArray.h" #include "TTreeReaderValue.h" -#include "TError.h" +#include +#include // std::vector substitute in case of vector +#include +#include #include #include // std::accumulate (FillReport), std::iota (TSlotStack) #include #include -#include -#include -#include // std::vector substitute in case of vector -#include namespace ROOT { namespace Internal { From c7f882aaf99cfebfbca4b1792535dd4c55b84a7f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 22 Jun 2018 17:52:16 +0200 Subject: [PATCH 220/344] [DF] Use R__ASSERT instead of cassert --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 5 ++--- tree/dataframe/src/RCsvDS.cxx | 3 ++- tree/dataframe/src/RDFNodes.cxx | 20 +++++++++++--------- tree/dataframe/src/RRootDS.cxx | 3 ++- tree/dataframe/src/RTrivialDS.cxx | 3 ++- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 432534b8f0b13..87541b25e55e4 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -23,7 +23,6 @@ #include "TTreeReaderArray.h" #include "TTreeReaderValue.h" -#include #include // std::vector substitute in case of vector #include #include @@ -591,7 +590,7 @@ public: virtual void TriggerChildrenCount() = 0; virtual void ResetReportCount() { - assert(!fName.empty()); // this method is to only be called on named filters + R__ASSERT(!fName.empty()); // this method is to only be called on named filters // fAccepted and fRejected could be different than 0 if this is not the first event-loop run using this filter std::fill(fAccepted.begin(), fAccepted.end(), 0); std::fill(fRejected.begin(), fRejected.end(), 0); @@ -705,7 +704,7 @@ public: void TriggerChildrenCount() final { - assert(!fName.empty()); // this method is to only be called on named filters + R__ASSERT(!fName.empty()); // this method is to only be called on named filters fPrevData.IncrChildrenCount(); } diff --git a/tree/dataframe/src/RCsvDS.cxx b/tree/dataframe/src/RCsvDS.cxx index c22784764cc63..54527805fef6e 100644 --- a/tree/dataframe/src/RCsvDS.cxx +++ b/tree/dataframe/src/RCsvDS.cxx @@ -75,6 +75,7 @@ important to check both how much memory is available and the size of the CSV fil #include #include #include +#include #include #include @@ -421,7 +422,7 @@ bool RCsvDS::SetEntry(unsigned int slot, ULong64_t entry) void RCsvDS::SetNSlots(unsigned int nSlots) { - assert(0U == fNSlots && "Setting the number of slots even if the number of slots is different from zero."); + R__ASSERT(0U == fNSlots && "Setting the number of slots even if the number of slots is different from zero."); fNSlots = nSlots; diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index 1733466b92e4b..17542b328c6b0 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -20,7 +20,6 @@ #include "ROOT/TThreadExecutor.hxx" #endif #include -#include #include #include #include @@ -32,6 +31,7 @@ #include #include "RtypesCore.h" // Long64_t +#include "TError.h" #include "TInterpreter.h" #include "TROOT.h" // IsImplicitMTEnabled #include "TTreeReader.h" @@ -192,15 +192,16 @@ void TSlotStack::ReturnSlot(unsigned int slotNumber) { auto &index = GetIndex(); auto &count = GetCount(); - assert(count > 0U && "TSlotStack has a reference count relative to an index which will become negative."); + R__ASSERT(count > 0U && "TSlotStack has a reference count relative to an index which will become negative."); count--; if (0U == count) { index = UINT_MAX; std::lock_guard guard(fMutex); fBuf[fCursor++] = slotNumber; - assert(fCursor <= fBuf.size() && "TSlotStack assumes that at most a fixed number of values can be present in the " - "stack. fCursor is greater than the size of the internal buffer. This violates " - "such assumption."); + R__ASSERT(fCursor <= fBuf.size() && + "TSlotStack assumes that at most a fixed number of values can be present in the " + "stack. fCursor is greater than the size of the internal buffer. This violates " + "such assumption."); } } @@ -212,8 +213,9 @@ unsigned int TSlotStack::GetSlot() if (UINT_MAX != index) return index; std::lock_guard guard(fMutex); - assert(fCursor > 0 && "TSlotStack assumes that a value can be always obtained. In this case fCursor is <=0 and this " - "violates such assumption."); + R__ASSERT(fCursor > 0 && + "TSlotStack assumes that a value can be always obtained. In this case fCursor is <=0 and this " + "violates such assumption."); index = fBuf[--fCursor]; return index; } @@ -327,7 +329,7 @@ void RLoopManager::RunTreeReader() /// Run event loop over data accessed through a DataSource, in sequence. void RLoopManager::RunDataSource() { - assert(fDataSource != nullptr); + R__ASSERT(fDataSource != nullptr); fDataSource->Initialise(); auto ranges = fDataSource->GetEntryRanges(); while (!ranges.empty()) { @@ -351,7 +353,7 @@ void RLoopManager::RunDataSource() void RLoopManager::RunDataSourceMT() { #ifdef R__USE_IMT - assert(fDataSource != nullptr); + R__ASSERT(fDataSource != nullptr); TSlotStack slotStack(fNSlots); ROOT::TThreadExecutor pool; diff --git a/tree/dataframe/src/RRootDS.cxx b/tree/dataframe/src/RRootDS.cxx index 2b92500a506fa..f2c063b2b9121 100644 --- a/tree/dataframe/src/RRootDS.cxx +++ b/tree/dataframe/src/RRootDS.cxx @@ -2,6 +2,7 @@ #include #include #include +#include #include // For the gROOTMutex #include // For the R__LOCKGUARD #include @@ -127,7 +128,7 @@ bool RRootDS::SetEntry(unsigned int slot, ULong64_t entry) void RRootDS::SetNSlots(unsigned int nSlots) { - assert(0U == fNSlots && "Setting the number of slots even if the number of slots is different from zero."); + R__ASSERT(0U == fNSlots && "Setting the number of slots even if the number of slots is different from zero."); fNSlots = nSlots; diff --git a/tree/dataframe/src/RTrivialDS.cxx b/tree/dataframe/src/RTrivialDS.cxx index c2aed42899230..abe1e41e3fd05 100644 --- a/tree/dataframe/src/RTrivialDS.cxx +++ b/tree/dataframe/src/RTrivialDS.cxx @@ -2,6 +2,7 @@ #include #include #include +#include namespace ROOT { @@ -61,7 +62,7 @@ bool RTrivialDS::SetEntry(unsigned int slot, ULong64_t entry) void RTrivialDS::SetNSlots(unsigned int nSlots) { - assert(0U == fNSlots && "Setting the number of slots even if the number of slots is different from zero."); + R__ASSERT(0U == fNSlots && "Setting the number of slots even if the number of slots is different from zero."); fNSlots = nSlots; fCounter.resize(fNSlots); From 522c513a9edbf11ead625fae3e65a6b711c6aaa4 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 22 Jun 2018 18:11:56 +0200 Subject: [PATCH 221/344] [DF] Use std::stack instead of std::vector as a stack It makes intent clearer, with no performance issues even if the underlying container is a std::deque since we will never loop over the contents of these stacks. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 47 +++++++++++++++------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 87541b25e55e4..de04fc3d4694d 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -28,8 +28,10 @@ #include #include #include // std::accumulate (FillReport), std::iota (TSlotStack) +#include #include #include +#include namespace ROOT { namespace Internal { @@ -250,18 +252,19 @@ class TColumnValue { /// The slot this value belongs to. Only needed when querying custom column values, it is set in `SetTmpColumn`. unsigned int fSlot = std::numeric_limits::max(); - // Each element of the following data members will be in use by a _single task_. - // The vectors are used as very small stacks (1-2 elements typically) that fill in case of interleaved task execution - // i.e. when more than one task needs readers in this worker thread. + // Each element of the following stacks will be in use by a _single task_. + // Each task will push one element when it starts and pop it when it ends. + // Stacks will typically be very small (1-2 elements typically) and will only grow over size 1 in case of interleaved + // task execution i.e. when more than one task needs readers in this worker thread. /// Owning ptrs to a TTreeReaderValue or TTreeReaderArray. Only used for Tree columns. - std::vector> fTreeReaders; + std::stack> fTreeReaders; /// Non-owning ptrs to the value of a custom column. - std::vector fCustomValuePtrs; + std::stack fCustomValuePtrs; /// Non-owning ptrs to the value of a data-source column. - std::vector fDSValuePtrs; + std::stack fDSValuePtrs; /// Non-owning ptrs to the node responsible for the custom column. Needed when querying custom values. - std::vector fCustomColumns; + std::stack fCustomColumns; /// Enumerator for the different properties of the branch storage in memory enum class EStorageType : char { kContiguous, kUnknown, kSparse}; /// Signal whether we ever checked that the branch we are reading with a TTreeReaderArray stores array elements @@ -281,7 +284,7 @@ public: void MakeProxy(TTreeReader *r, const std::string &bn) { fColumnKind = EColumnKind::kTree; - fTreeReaders.emplace_back(new TreeReader_t(*r, bn.c_str())); + fTreeReaders.emplace(new TreeReader_t(*r, bn.c_str())); } /// This overload is used to return scalar quantities (i.e. types that are not read into a RVec) @@ -296,14 +299,14 @@ public: void Reset() { switch (fColumnKind) { - case EColumnKind::kTree: fTreeReaders.pop_back(); break; + case EColumnKind::kTree: fTreeReaders.pop(); break; case EColumnKind::kCustomColumn: - fCustomColumns.pop_back(); - fCustomValuePtrs.pop_back(); + fCustomColumns.pop(); + fCustomValuePtrs.pop(); break; case EColumnKind::kDataSource: - fCustomColumns.pop_back(); - fDSValuePtrs.pop_back(); + fCustomColumns.pop(); + fDSValuePtrs.pop(); break; case EColumnKind::kInvalid: throw std::runtime_error("ColumnKind not set for this TColumnValue"); } @@ -824,7 +827,7 @@ namespace RDF { template void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCustomColumnBase *customColumn) { - fCustomColumns.emplace_back(customColumn); + fCustomColumns.emplace(customColumn); if (customColumn->GetTypeId() != typeid(T)) throw std::runtime_error( std::string("TColumnValue: type specified for column \"" + customColumn->GetName() + "\" is ") + @@ -832,10 +835,10 @@ void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCus if (customColumn->IsDataSourceColumn()) { fColumnKind = EColumnKind::kDataSource; - fDSValuePtrs.emplace_back(static_cast(customColumn->GetValuePtr(slot))); + fDSValuePtrs.emplace(static_cast(customColumn->GetValuePtr(slot))); } else { fColumnKind = EColumnKind::kCustomColumn; - fCustomValuePtrs.emplace_back(static_cast(customColumn->GetValuePtr(slot))); + fCustomValuePtrs.emplace(static_cast(customColumn->GetValuePtr(slot))); } fSlot = slot; } @@ -848,10 +851,10 @@ template ::fgMustUseRVec, i T &TColumnValue::Get(Long64_t entry) { if (fColumnKind == EColumnKind::kTree) { - return *(fTreeReaders.back()->Get()); + return *(fTreeReaders.top()->Get()); } else { - fCustomColumns.back()->Update(fSlot, entry); - return fColumnKind == EColumnKind::kCustomColumn ? *fCustomValuePtrs.back() : **fDSValuePtrs.back(); + fCustomColumns.top()->Update(fSlot, entry); + return fColumnKind == EColumnKind::kCustomColumn ? *fCustomValuePtrs.top() : **fDSValuePtrs.top(); } } @@ -861,7 +864,7 @@ template ::fgMustUseRVec, in T &TColumnValue::Get(Long64_t entry) { if (fColumnKind == EColumnKind::kTree) { - auto &readerArray = *fTreeReaders.back(); + auto &readerArray = *fTreeReaders.top(); // We only use TTreeReaderArrays to read columns that users flagged as type `RVec`, so we need to check // that the branch stores the array as contiguous memory that we can actually wrap in an `RVec`. // Currently we need the first entry to have been loaded to perform the check @@ -911,8 +914,8 @@ T &TColumnValue::Get(Long64_t entry) return fRVec; } else { - fCustomColumns.back()->Update(fSlot, entry); - return fColumnKind == EColumnKind::kCustomColumn ? *fCustomValuePtrs.back() : **fDSValuePtrs.back(); + fCustomColumns.top()->Update(fSlot, entry); + return fColumnKind == EColumnKind::kCustomColumn ? *fCustomValuePtrs.top() : **fDSValuePtrs.top(); } } From 4c57cb7279cfddf6cb51652a199881116f4cde78 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Fri, 22 Jun 2018 18:53:03 +0200 Subject: [PATCH 222/344] [DF] Use stacks rather than single output files in Snapshot MT This resolves ROOT-9456, "[Jenkins][DF] Sporadic failures in test_snapshotNFiles". The issue is due to interleaved TBB task execution in the same thread. When nested task spawning is present (i.e. when TBB tasks spawn other TBB tasks and the thread pool contains at least three threads), the TBB task stealing mechanism makes it possible that a thread starts executing a new instance of the "parent" tasks before it finishes the execution of the previous parent task (this happens when the thread is waiting for a "stolen" child task to finish, so it steals another threads' parent task). In the case of a multi-thread snapshot, one needs to write at least two branches for the multi-thread branch writing to kick in and have nested task spawning. The crash was caused by a new parent task overwriting the output TTree of the previous parent task in a given thread. When the previous parent task resumed execution, it ended up trying to flush out the contents of the deleted output TTree. The solution adopted is to use thread-local stacks of output TTrees (as opposed to single output TTrees), that tasks push and pop when they start and finish respectively. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 28 +++++++++----------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index a7fcb30861a36..4ebd28a095846 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -769,7 +770,7 @@ class SnapshotHelperMT : public RActionImpl> { const unsigned int fNSlots; std::unique_ptr fMerger; // must use a ptr because TBufferMerger is not movable std::vector> fOutputFiles; - std::vector> fOutputTrees; // must come _after_ output files to be deleted _before_ them + std::vector>> fOutputTrees; std::vector fIsFirstEvent; // vector is evil const std::string fFileName; // name of the output file name const std::string fDirName; // name of TFile subdirectory in which output must be written (possibly empty) @@ -795,12 +796,9 @@ public: void InitTask(TTreeReader *r, unsigned int slot) { ::TDirectory::TContext c; // do not let tasks change the thread-local gDirectory - if (!fOutputTrees[slot]) { + if (!fOutputFiles[slot]) { // first time this thread executes something, let's create a TBufferMerger output directory fOutputFiles[slot] = fMerger->GetFile(); - } else if (fOutputTrees[slot]->GetEntries() > 0) { - // this thread is now re-executing the task, let's flush the current contents of the TBufferMergerFile - fOutputFiles[slot]->Write(); } TDirectory *treeDirectory = fOutputFiles[slot].get(); if (!fDirName.empty()) { @@ -808,26 +806,26 @@ public: } // re-create output tree as we need to create its branches again, with new input variables // TODO we could instead create the output tree and its branches, change addresses of input variables in each task - fOutputTrees[slot] = - std::make_unique(fTreeName.c_str(), fTreeName.c_str(), fOptions.fSplitLevel, /*dir=*/treeDirectory); + fOutputTrees[slot].emplace( + std::make_unique(fTreeName.c_str(), fTreeName.c_str(), fOptions.fSplitLevel, /*dir=*/treeDirectory)); if (fOptions.fAutoFlush) - fOutputTrees[slot]->SetAutoFlush(fOptions.fAutoFlush); + fOutputTrees[slot].top()->SetAutoFlush(fOptions.fAutoFlush); if (r) { // not an empty-source RDF fInputTrees[slot] = r->GetTree(); // AddClone guarantees that if the input file changes the branches of the output tree are updated with the new // addresses of the branch values - fInputTrees[slot]->AddClone(fOutputTrees[slot].get()); + fInputTrees[slot]->AddClone(fOutputTrees[slot].top().get()); } fIsFirstEvent[slot] = 1; // reset first event flag for this slot } void FinalizeTask(unsigned int slot) { - if (fOutputTrees[slot]->GetEntries() > 0) + if (fOutputTrees[slot].top()->GetEntries() > 0) fOutputFiles[slot]->Write(); // clear now to avoid concurrent destruction of output trees and input tree (which has them listed as fClones) - fOutputTrees[slot].reset(); + fOutputTrees[slot].pop(); } void Exec(unsigned int slot, BranchTypes &... values) @@ -837,9 +835,9 @@ public: SetBranches(slot, values..., ind_t()); fIsFirstEvent[slot] = 0; } - fOutputTrees[slot]->Fill(); - auto entries = fOutputTrees[slot]->GetEntries(); - auto autoFlush = fOutputTrees[slot]->GetAutoFlush(); + fOutputTrees[slot].top()->Fill(); + auto entries = fOutputTrees[slot].top()->GetEntries(); + auto autoFlush = fOutputTrees[slot].top()->GetAutoFlush(); if ((autoFlush > 0) && (entries % autoFlush == 0)) fOutputFiles[slot]->Write(); } @@ -848,7 +846,7 @@ public: void SetBranches(unsigned int slot, BranchTypes &... values, std::index_sequence /*dummy*/) { // hack to call TTree::Branch on all variadic template arguments - int expander[] = {(SetBranchesHelper(fInputTrees[slot], *fOutputTrees[slot], fInputBranchNames[S], + int expander[] = {(SetBranchesHelper(fInputTrees[slot], *fOutputTrees[slot].top(), fInputBranchNames[S], fOutputBranchNames[S], &values), 0)..., 0}; From 18cd1103ff5dc320dd905d6b9bb997654ecbafda Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sat, 23 Jun 2018 20:01:25 +0200 Subject: [PATCH 223/344] [DF] Expect test death rather than asserting it The gtest can safely go on in case this test case fails. --- tree/dataframe/test/dataframe_nodes.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tree/dataframe/test/dataframe_nodes.cxx b/tree/dataframe/test/dataframe_nodes.cxx index 3975c3b2c3d35..22dca1abc536c 100644 --- a/tree/dataframe/test/dataframe_nodes.cxx +++ b/tree/dataframe/test/dataframe_nodes.cxx @@ -32,7 +32,7 @@ TEST(RDataFrameNodes, TSlotStackGetOneTooMuch) t.join(); }; - ASSERT_DEATH(theTest(), "TSlotStack assumes that a value can be always obtained."); + EXPECT_DEATH(theTest(), "TSlotStack assumes that a value can be always obtained."); } TEST(RDataFrameNodes, TSlotStackPutBackTooMany) From a8f9d50a66ad1845717e4c3f0c5632e6c4ff8ad9 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Thu, 14 Jun 2018 10:43:23 +0200 Subject: [PATCH 224/344] [DF] Add TColumnValue extern templates for common types this speeds up considerably the instantiation of large templates, such as Snapshot of many columns. It is helpful in general too. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 21 ++++++++++++++++++++- tree/dataframe/src/RDFNodes.cxx | 17 +++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index de04fc3d4694d..d2f57816b5d6b 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -277,7 +277,7 @@ class TColumnValue { public: static constexpr bool fgMustUseRVec = MustUseRVec; - TColumnValue() = default; + TColumnValue() {}; void SetTmpColumn(unsigned int slot, RCustomColumnBase *tmpColumn); @@ -313,6 +313,25 @@ public: } }; +// Some extern instaniations to speed-up compilation/interpretation time +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue; +extern template class TColumnValue>; +extern template class TColumnValue>; +extern template class TColumnValue>; +extern template class TColumnValue>; +extern template class TColumnValue>; +extern template class TColumnValue>; +extern template class TColumnValue>; +extern template class TColumnValue>; + + template struct TRDFValueTuple { }; diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index 17542b328c6b0..6ace2b1eff4c2 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -52,6 +52,23 @@ RActionBase::RActionBase(RLoopManager *implPtr, const unsigned int nSlots) : fLo { } +// Extern templates +template class TColumnValue; +template class TColumnValue; +template class TColumnValue; +template class TColumnValue; +template class TColumnValue; +template class TColumnValue; +template class TColumnValue; +template class TColumnValue; +template class TColumnValue>; +template class TColumnValue>; +template class TColumnValue>; +template class TColumnValue>; +template class TColumnValue>; +template class TColumnValue>; +template class TColumnValue>; +template class TColumnValue>; } // end NS RDF } // end NS Internal } // end NS ROOT From 5c4f0efb58b97cb694de2ee996d97f3cf021761b Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sat, 23 Jun 2018 00:25:18 +0200 Subject: [PATCH 225/344] [DF] TColumnValue: replace constexpr static data member with integral constant in order to simplify this code. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 30 +++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index d2f57816b5d6b..7c4945f8b24de 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -237,12 +237,15 @@ TTree branch or from a temporary column respectively. RDataFrame nodes can store tuples of TColumnValues and retrieve an updated value for the column via the `Get` method. **/ -template ::value> +template class TColumnValue { + + using MustUseRVec_t = IsRVec_t; + // ColumnValue_t is the type of the column or the type of the elements of an array column - using ColumnValue_t = typename std::conditional, T>::type; + using ColumnValue_t = typename std::conditional, T>::type; using TreeReader_t = - typename std::conditional, TTreeReaderValue>::type; + typename std::conditional, TTreeReaderValue>::type; /// TColumnValue has a slightly different behaviour whether the column comes from a TTreeReader, a RDataFrame Define /// or a RDataSource. It stores which it is as an enum. @@ -275,7 +278,6 @@ class TColumnValue { bool fCopyWarningPrinted = false; public: - static constexpr bool fgMustUseRVec = MustUseRVec; TColumnValue() {}; @@ -288,12 +290,12 @@ public: } /// This overload is used to return scalar quantities (i.e. types that are not read into a RVec) - template ::fgMustUseRVec, int>::type = 0> + template ::MustUseRVec_t::value, int>::type = 0> T &Get(Long64_t entry); /// This overload is used to return arrays (i.e. types that are read into a RVec). /// In this case the returned T is always a RVec. - template ::fgMustUseRVec, int>::type = 0> + template ::MustUseRVec_t::value, int>::type = 0> T &Get(Long64_t entry); void Reset() @@ -843,8 +845,8 @@ public: namespace Internal { namespace RDF { -template -void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCustomColumnBase *customColumn) +template +void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCustomColumnBase *customColumn) { fCustomColumns.emplace(customColumn); if (customColumn->GetTypeId() != typeid(T)) @@ -865,9 +867,9 @@ void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCus // This method is executed inside the event-loop, many times per entry // If need be, the if statement can be avoided using thunks // (have both branches inside functions and have a pointer to the branch to be executed) -template -template ::fgMustUseRVec, int>::type> -T &TColumnValue::Get(Long64_t entry) +template +template ::MustUseRVec_t::value, int>::type> +T &TColumnValue::Get(Long64_t entry) { if (fColumnKind == EColumnKind::kTree) { return *(fTreeReaders.top()->Get()); @@ -878,9 +880,9 @@ T &TColumnValue::Get(Long64_t entry) } /// This overload is used to return arrays (i.e. types that are read into a RVec) -template -template ::fgMustUseRVec, int>::type> -T &TColumnValue::Get(Long64_t entry) +template +template ::MustUseRVec_t::value, int>::type> +T &TColumnValue::Get(Long64_t entry) { if (fColumnKind == EColumnKind::kTree) { auto &readerArray = *fTreeReaders.top(); From ad141836d8f6e68aea52f8002715c3765011b18e Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sat, 23 Jun 2018 22:16:36 +0200 Subject: [PATCH 226/344] [DF] Due to a bug in clang, disable extern TColumnValue templates for c++17 see ROOT-9499. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 5 ++++- tree/dataframe/src/RDFNodes.cxx | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 7c4945f8b24de..a460efdceef24 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -316,6 +316,9 @@ public: }; // Some extern instaniations to speed-up compilation/interpretation time +// These are not active if c++17 is enabled because of a bug in our clang +// See ROOT-9499. +#if __cplusplus < 201703L extern template class TColumnValue; extern template class TColumnValue; extern template class TColumnValue; @@ -332,7 +335,7 @@ extern template class TColumnValue>; extern template class TColumnValue>; extern template class TColumnValue>; extern template class TColumnValue>; - +#endif template struct TRDFValueTuple { diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index 6ace2b1eff4c2..df613f01664a3 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -52,7 +52,10 @@ RActionBase::RActionBase(RLoopManager *implPtr, const unsigned int nSlots) : fLo { } -// Extern templates +// Some extern instaniations to speed-up compilation/interpretation time +// These are not active if c++17 is enabled because of a bug in our clang +// See ROOT-9499. +#if __cplusplus < 201703L template class TColumnValue; template class TColumnValue; template class TColumnValue; @@ -69,6 +72,7 @@ template class TColumnValue>; template class TColumnValue>; template class TColumnValue>; template class TColumnValue>; +#endif } // end NS RDF } // end NS Internal } // end NS ROOT From ef757ad08973265c117b7f779d400b4eb813e682 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sun, 24 Jun 2018 08:52:04 +0200 Subject: [PATCH 227/344] [DF] Add TColumnValue autoload keys to avoid undefined symbols on some platforms. --- tree/dataframe/inc/LinkDef.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h index f12fc53286d34..d6d163f6f0956 100644 --- a/tree/dataframe/inc/LinkDef.h +++ b/tree/dataframe/inc/LinkDef.h @@ -35,6 +35,22 @@ #pragma link C++ class ROOT::RDF::RTrivialDS-; #pragma link C++ class ROOT::RDF::RRootDS-; #pragma link C++ class ROOT::RDF::RCsvDS-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; +#pragma link C++ class ROOT::Internal::RDF::TColumnValue>-; #endif From 34f861b444605d669c4b2103900f99486e63d4b3 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Sun, 24 Jun 2018 13:58:28 +0200 Subject: [PATCH 228/344] [NFC] Formatting --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index a460efdceef24..52407170e8550 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -244,8 +244,8 @@ class TColumnValue { // ColumnValue_t is the type of the column or the type of the elements of an array column using ColumnValue_t = typename std::conditional, T>::type; - using TreeReader_t = - typename std::conditional, TTreeReaderValue>::type; + using TreeReader_t = typename std::conditional, + TTreeReaderValue>::type; /// TColumnValue has a slightly different behaviour whether the column comes from a TTreeReader, a RDataFrame Define /// or a RDataSource. It stores which it is as an enum. @@ -269,7 +269,7 @@ class TColumnValue { /// Non-owning ptrs to the node responsible for the custom column. Needed when querying custom values. std::stack fCustomColumns; /// Enumerator for the different properties of the branch storage in memory - enum class EStorageType : char { kContiguous, kUnknown, kSparse}; + enum class EStorageType : char { kContiguous, kUnknown, kSparse }; /// Signal whether we ever checked that the branch we are reading with a TTreeReaderArray stores array elements /// in contiguous memory. Only used when T == RVec. EStorageType fStorageType = EStorageType::kUnknown; @@ -278,8 +278,7 @@ class TColumnValue { bool fCopyWarningPrinted = false; public: - - TColumnValue() {}; + TColumnValue(){}; void SetTmpColumn(unsigned int slot, RCustomColumnBase *tmpColumn); @@ -915,12 +914,13 @@ T &TColumnValue::Get(Long64_t entry) swap(fRVec, emptyVec); } } else { - // The storage is not contiguous or we don't know yet: we cannot but copy into the tvec +// The storage is not contiguous or we don't know yet: we cannot but copy into the tvec #ifndef NDEBUG if (!fCopyWarningPrinted) { - Warning("TColumnValue::Get", - "Branch %s hangs from a non-split branch. For this reason, it cannot be accessed via a RVec. A copy is being performed in order to properly read the content.", - readerArray.GetBranchName()); + Warning("TColumnValue::Get", "Branch %s hangs from a non-split branch. For this reason, it cannot be " + "accessed via a RVec. A copy is being performed in order to properly read the " + "content.", + readerArray.GetBranchName()); fCopyWarningPrinted = true; } #else From 55b5c8747bd6455b090ee94825e1d932020ce50f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 17:10:59 +0200 Subject: [PATCH 229/344] [DF] Avoid TChain::AddClone in Snapshot when unnecessary Since output trees are recreated for each task, and each task only processes one tree cluster (and never crosses file boundaries), we don't need to add the output trees as clones of the input tress unless the input trees have friends (which might cross file boundaries) even if the main tree does not. Usage of AddClone here is undesirable in the general case because it generates many (safe) warnings printed at screen during the event loop, see ROOT-9487. --- tree/dataframe/inc/ROOT/RDFActionHelpers.hxx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx index 4ebd28a095846..96cc92a416ec9 100644 --- a/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx +++ b/tree/dataframe/inc/ROOT/RDFActionHelpers.hxx @@ -814,8 +814,12 @@ public: // not an empty-source RDF fInputTrees[slot] = r->GetTree(); // AddClone guarantees that if the input file changes the branches of the output tree are updated with the new - // addresses of the branch values - fInputTrees[slot]->AddClone(fOutputTrees[slot].top().get()); + // addresses of the branch values. We need this in case of friend trees with different cluster granularity + // than the main tree. + // FIXME: AddClone might result in many many (safe) warnings printed by TTree::CopyAddresses, see ROOT-9487. + const auto friendsListPtr = fInputTrees[slot]->GetListOfFriends(); + if (friendsListPtr && friendsListPtr->GetEntries() > 0) + fInputTrees[slot]->AddClone(fOutputTrees[slot].top().get()); } fIsFirstEvent[slot] = 1; // reset first event flag for this slot } From 803fdf3e8aecf22556db2d47244a33afdf892b01 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Tue, 20 Mar 2018 16:50:02 +0100 Subject: [PATCH 230/344] Add CUDA device compiler, which allows to generate CUDA PTX Code on runtime. The class IncrementalCUDADeviceCompiler use external tools to generate PTX and cuda fatbin files. It runs the tools clang and fatbinary via llvm::sys::ExecuteAndWait. The class also handle to include new code in existing code. The steps of the compiler pipeline are: - clang: CUDA C++ + previous PCH -> PCH - clang: PCH -> PTX - fatbinary: PTX -> fatbin There is no selection of code. Every input of the cling will pass to the IncrementalCUDADeviceCompiler. --- .../include/cling/Interpreter/Interpreter.h | 7 + .../cling/Interpreter/InvocationOptions.h | 5 + .../cling/lib/Interpreter/CMakeLists.txt | 1 + .../IncrementalCUDADeviceCompiler.cpp | 273 ++++++++++++++++++ .../IncrementalCUDADeviceCompiler.h | 153 ++++++++++ .../lib/Interpreter/IncrementalParser.cpp | 4 + .../cling/lib/Interpreter/Interpreter.cpp | 29 ++ .../lib/Interpreter/InvocationOptions.cpp | 2 + 8 files changed, 474 insertions(+) create mode 100644 interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp create mode 100644 interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h diff --git a/interpreter/cling/include/cling/Interpreter/Interpreter.h b/interpreter/cling/include/cling/Interpreter/Interpreter.h index e08c78b72a6a0..cdaaf1ef6375b 100644 --- a/interpreter/cling/include/cling/Interpreter/Interpreter.h +++ b/interpreter/cling/include/cling/Interpreter/Interpreter.h @@ -70,6 +70,7 @@ namespace cling { class LookupHelper; class Value; class Transaction; + class IncrementalCUDADeviceCompiler; ///\brief Class that implements the interpreter-like behavior. It manages the /// incremental compilation. @@ -158,6 +159,10 @@ namespace cling { /// std::unique_ptr m_LookupHelper; + ///\brief Cling's worker class implementing the compilation of CUDA device code + /// + std::unique_ptr m_CUDACompiler; + ///\brief Cache of compiled destructors wrappers. std::unordered_map m_DtorWrappers; @@ -343,6 +348,8 @@ namespace cling { LookupHelper& getLookupHelper() const { return *m_LookupHelper; } + IncrementalCUDADeviceCompiler& getCUDADeviceCompiler() { return *m_CUDACompiler; } + const clang::Parser& getParser() const; clang::Parser& getParser(); diff --git a/interpreter/cling/include/cling/Interpreter/InvocationOptions.h b/interpreter/cling/include/cling/Interpreter/InvocationOptions.h index 833d139284e9f..ebfb565ced1a5 100644 --- a/interpreter/cling/include/cling/Interpreter/InvocationOptions.h +++ b/interpreter/cling/include/cling/Interpreter/InvocationOptions.h @@ -64,6 +64,11 @@ namespace cling { std::string CachePath; // If not empty, the name of the module we're currently compiling. std::string ModuleName; + /// \brief Custom path of the CUDA toolkit + std::string CUDAPath; + /// \brief Architecture level of the CUDA gpu. Necessary for the + /// NVIDIA fatbinary tool. + std::string CUDAGpuArch; ///\brief The remaining arguments to pass to clang. /// diff --git a/interpreter/cling/lib/Interpreter/CMakeLists.txt b/interpreter/cling/lib/Interpreter/CMakeLists.txt index af86e0ac82b3f..82356472a09e7 100644 --- a/interpreter/cling/lib/Interpreter/CMakeLists.txt +++ b/interpreter/cling/lib/Interpreter/CMakeLists.txt @@ -75,6 +75,7 @@ add_cling_library(clingInterpreter OBJECT Exception.cpp ExternalInterpreterSource.cpp ForwardDeclPrinter.cpp + IncrementalCUDADeviceCompiler.cpp IncrementalExecutor.cpp IncrementalJIT.cpp IncrementalParser.cpp diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp new file mode 100644 index 0000000000000..5a4e5dd02ac50 --- /dev/null +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -0,0 +1,273 @@ +//--------------------------------------------------------------------*- C++ -*- +// CLING - the C++ LLVM-based InterpreterG :) +// author: Simeon Ehrig +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +#include "IncrementalCUDADeviceCompiler.h" + +#include "cling/Interpreter/InvocationOptions.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Support/raw_ostream.h" +#include "llvm/Support/Program.h" +#include "llvm/Support/Process.h" +#include "llvm/Support/Path.h" +#include "llvm/ADT/Triple.h" + +#include + +namespace cling { + + + IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler(std::string filePath, + std::string & CudaGpuBinaryFileNames, + cling::InvocationOptions & invocationOptions, + const llvm::SmallVectorImpl & clingHeaders) + : m_Counter(0), + m_FilePath(filePath), + m_FatbinFilePath(CudaGpuBinaryFileNames), + // We get for example sm_20 from the cling arguments and have to shrink to + // 20. + m_SMLevel(invocationOptions.CompilerOpts.CUDAGpuArch.empty() ? "20" : + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3) ), + m_ClingHeaders(clingHeaders.begin(), clingHeaders.end()) { + assert(!CudaGpuBinaryFileNames.empty() && "CudaGpuBinaryFileNames can't be empty"); + + m_Init = generateHelperFiles(); + m_Init = m_Init && searchCompilingTools(invocationOptions); + + llvm::Triple hostTarget(llvm::sys::getDefaultTargetTriple()); + m_FatbinArch = hostTarget.isArch64Bit() ? "-64" : "-32"; + } + + bool IncrementalCUDADeviceCompiler::generateHelperFiles(){ + // Generate an empty dummy.cu file. + m_DummyCUPath = m_FilePath + "dummy.cu"; + std::error_code EC; + llvm::raw_fd_ostream dummyCU(m_DummyCUPath, EC, llvm::sys::fs::F_Text); + if(EC){ + llvm::errs() << "Could not open file: " << EC.message(); + return false; + } + dummyCU.close(); + + m_PTXFilePath = m_FilePath + "cling.ptx"; + m_GenericFileName = m_FilePath + "cling"; + return true; + } + + bool IncrementalCUDADeviceCompiler::searchCompilingTools(cling::InvocationOptions & invocationOptions){ + // Search after clang in the folder of cling. + llvm::SmallString<128> cwd; + llvm::sys::fs::current_path(cwd); + cwd.append(llvm::sys::path::get_separator()); + cwd.append("clang++"); + m_ClangPath = cwd.c_str(); + // Check, if clang is existing and executable. + if(!llvm::sys::fs::can_execute(m_ClangPath)){ + llvm::errs() << "Error: " << m_ClangPath << " not existing or executable!\n"; + return false; + } + + // Use the custom CUDA toolkit path, if it set via cling argument. + if(!invocationOptions.CompilerOpts.CUDAPath.empty()){ + m_FatbinaryPath = invocationOptions.CompilerOpts.CUDAPath + "/bin/fatbinary"; + if(!llvm::sys::fs::can_execute(m_FatbinaryPath)){ + llvm::errs() << "Error: " << m_FatbinaryPath << " not existing or executable!\n"; + return false; + } + }else{ + // Search after fatbinary on the system. + if (llvm::ErrorOr fatbinary = + llvm::sys::findProgramByName("fatbinary")) { + llvm::SmallString<256> fatbinaryAbsolutePath; + llvm::sys::fs::real_path(*fatbinary, fatbinaryAbsolutePath); + m_FatbinaryPath = fatbinaryAbsolutePath.c_str(); + } else { + llvm::errs() << "Error: nvidia tool fatbinary not found!\n" << + "Please add the cuda /bin path to PATH or set the toolkit path via --cuda-path argument.\n"; + return false; + } + } + + return true; + } + + void IncrementalCUDADeviceCompiler::addClingHeaders(llvm::SmallVectorImpl & argv){ + for(std::string &s : m_ClingHeaders){ + argv.push_back(s.c_str()); + } + } + + bool IncrementalCUDADeviceCompiler::generateFatbinary(llvm::StringRef input){ + if(!m_Init){ + llvm::errs() << "Error: Initializiation of CUDA Device Code Compiler failed\n"; + return false; + } + + // Write the (CUDA) C++ source code to a file. + std::error_code EC; + llvm::raw_fd_ostream cuFile(m_GenericFileName + std::to_string(m_Counter) + + ".cu", EC, llvm::sys::fs::F_Text); + if (EC) { + llvm::errs() << "Could not open file: " << EC.message(); + return false; + } + cuFile << input; + cuFile.close(); + + if(!generatePCH()){ + return false; + } + + if(!generatePTX()){ + return false; + } + + if(!generateFatbinaryInternal()){ + return false; + } + + ++m_Counter; + return true; + } + + bool IncrementalCUDADeviceCompiler::generatePCH() { + // clang++ -std=c++14 -S -Xclang -emit-pch ${clingHeaders} cling[0-9].cu + // -D__CLING__ -o cling[0-9].cu.pch ${ | -include-pch cling[0-9].cu.pch } + // --cuda-gpu-arch=sm_${m_smLevel} -pthread --cuda-device-only + llvm::SmallVector argv; + + // First argument have to be the program name. + argv.push_back(m_ClangPath.c_str()); + + // FIXME: Should replaced by the arguments of the cling instance. + argv.push_back("-std=c++14"); + argv.push_back("-S"); + argv.push_back("-Xclang"); + argv.push_back("-emit-pch"); + addClingHeaders(argv); + // Is necessary for the cling runtime header. + argv.push_back("-D__CLING__"); + std::string cuFilePath = m_GenericFileName + std::to_string(m_Counter) + + ".cu"; + argv.push_back(cuFilePath.c_str()); + argv.push_back("-o"); + std::string outputname = m_GenericFileName + std::to_string(m_Counter) + +".cu.pch"; + argv.push_back(outputname.c_str()); + // If a previos file exist, include it. + std::string previousFile; + if(m_Counter){ + previousFile = m_GenericFileName + std::to_string(m_Counter-1) +".cu.pch"; + argv.push_back("-include-pch"); + argv.push_back(previousFile.c_str()); + } + // FIXME: Should replaced by the arguments of the cling instance. + std::string smString = "--cuda-gpu-arch=sm_" + m_SMLevel; + argv.push_back(smString.c_str()); + argv.push_back("-pthread"); + argv.push_back("--cuda-device-only"); + + // Argv list have to finish with a nullptr. + argv.push_back(nullptr); + + std::string executionError; + int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argv.data(), + nullptr, {}, 0, 0, &executionError); + + if(res){ + llvm::errs() << "error at launching clang instance to generate PCH file\n" + << executionError << "\n"; + return false; + } + + return true; + } + + bool cling::IncrementalCUDADeviceCompiler::generatePTX() { + // clang++ -std=c++14 -S dummy.cu -o cling.ptx -include-pch cling[0-9].cu.pch + // --cuda-gpu-arch=sm_${m_smLevel} -pthread --cuda-device-only + llvm::SmallVector argv; + + // First argument have to be the program name. + argv.push_back(m_ClangPath.c_str()); + + // FIXME: Should replaced by the arguments of the cling instance. + argv.push_back("-std=c++14"); + argv.push_back("-S"); + argv.push_back(m_DummyCUPath.c_str()); + argv.push_back("-o"); + argv.push_back(m_PTXFilePath.c_str()); + argv.push_back("-include-pch"); + std::string pchFile = m_GenericFileName + std::to_string(m_Counter) +".cu.pch"; + argv.push_back(pchFile.c_str()); + // FIXME: Should replaced by the arguments of the cling instance. + std::string smString = "--cuda-gpu-arch=sm_" + m_SMLevel; + argv.push_back(smString.c_str()); + argv.push_back("-pthread"); + argv.push_back("--cuda-device-only"); + + // Argv list have to finish with a nullptr. + argv.push_back(nullptr); + + std::string executionError; + int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argv.data(), + nullptr, {}, 0, 0, &executionError); + + if(res){ + llvm::errs() << "error at launching clang instance to generate ptx code" + << "\n" << executionError << "\n"; + return false; + } + + return true; + } + + bool IncrementalCUDADeviceCompiler::generateFatbinaryInternal() { + // fatbinary --cuda [-32 | -64] --create cling.fatbin + // --image=profile=compute_${m_smLevel},file=cling.ptx + llvm::SmallVector argv; + + // First argument have to be the program name. + argv.push_back(m_FatbinaryPath.c_str()); + + argv.push_back("--cuda"); + argv.push_back(m_FatbinArch.c_str()); + argv.push_back("--create"); + argv.push_back(m_FatbinFilePath.c_str()); + std::string ptxCode = "--image=profile=compute_"+ m_SMLevel + + ",file=" + m_PTXFilePath; + argv.push_back(ptxCode.c_str()); + + // Argv list have to finish with a nullptr. + argv.push_back(nullptr); + + std::string executionError; + int res = llvm::sys::ExecuteAndWait(m_FatbinaryPath.c_str(), argv.data(), + nullptr, {}, 0, 0, &executionError); + + if(res){ + llvm::errs() << "error at launching fatbin" << "\n" << executionError << "\n"; + return false; + } + + return true; + } + + void IncrementalCUDADeviceCompiler::dump(){ + llvm::outs() << "current counter: " << m_Counter << "\n" << + "CUDA device compiler is valid: " << m_Init << "\n" << + "file path: " << m_FilePath << "\n" << + "fatbin file path: " << m_FatbinFilePath << "\n" << + "dummy.cu file path: " << m_DummyCUPath << "\n" << + "cling.ptx file path: " << m_PTXFilePath << "\n" << + "generic file path: " << m_GenericFileName << "[0-9]*.cu{.pch}\n" << + "clang++ path: " << m_ClangPath << "\n" << + "nvidia fatbinary path: " << m_FatbinaryPath << "\n"; + } + +} // end namespace cling diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h new file mode 100644 index 0000000000000..4d582710b5260 --- /dev/null +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -0,0 +1,153 @@ +//--------------------------------------------------------------------*- C++ -*- +// CLING - the C++ LLVM-based InterpreterG :) +// author: Simeon Ehrig +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +#ifndef CLING_INCREMENTAL_CUDA_DEVICE_JIT_H +#define CLING_INCREMENTAL_CUDA_DEVICE_JIT_H + +#include "llvm/ADT/SmallVector.h" + +#include +#include + +namespace cling{ + class InvocationOptions; +} + +namespace clang { + class CodeGenOptions; +} + +namespace llvm { + class StringRef; +} + +namespace cling { + + ///\brief The class is responsible for generating CUDA device code in + /// cuda fatbinary form during the runtime. It works with + /// llvm::sys::ExecuteAndWait. + /// + class IncrementalCUDADeviceCompiler { + /// FIXME : Add handling of new included Headers. The include commands can + /// be added by the prompt or via .L . + + ///\brief The counter responsible to generate a chain of .cu source files + /// and .cu.pch files. + unsigned int m_Counter; + + ///\brief Is true if all necessary files have been generated and clang and + /// cuda NVIDIA fatbinary are found. + bool m_Init; + + ///\brief Path to the folder, where all files will put in. Ordinary the tmp + /// folder. Have to end with a separator. Can be empty. + std::string m_FilePath; + ///\brief Path to the fatbin file, which will used by the CUDACodeGen. + std::string m_FatbinFilePath; + ///\brief Path to a empty dummy.cu file. The file is necessary to generate + /// PTX code from the pch files. + std::string m_DummyCUPath; + ///\brief Path to the PTX file. Will be reused for every PTX generation. + std::string m_PTXFilePath; + ///\brief Will be used to generate .cu and .cu.pch files. + std::string m_GenericFileName; + ///\brief The SM-Level describes, which functions are possible in the code + /// and on the gpu. Just a number [1-7][0-9]. + std::string m_SMLevel; + + ///\brief Path to the clang++ compiler, which will used to compile the pch + /// files and the PTX code. Should be in same folder, as the cling. + std::string m_ClangPath; + ///\brief Path to the NIVDIA tool fatbinary. + std::string m_FatbinaryPath; + + ///\brief Contains the include commands for the cling runtime headers. + llvm::SmallVector m_ClingHeaders; + ///\brief Argument for the fatbinary tool, which is depend, if the OS is + /// 32 bit or 64 bit. + std::string m_FatbinArch; + + ///\brief Generate the dummy.cu file and set the paths of m_PTXFilePath and + /// m_GenericFileName. + /// + ///\returns True, if it created a dummy.cu file. + bool generateHelperFiles(); + + ///\brief Find the path of the clang and the NIVDIA tool fatbinary. Clang + /// have to be in the same folder as cling. + /// + ///\param [in] invocationOptions - Can contains a custom path to the cuda + /// toolkit + /// + ///\returns True, whether clang and fatbinary was found. + bool searchCompilingTools(cling::InvocationOptions & invocationOptions); + + ///\brief Add the include path commands (-I...) to a argument list. The path + /// points to the cling runtime headers. + /// + ///\param [in,out] argv - The include commands will append to the argv vector. + void addClingHeaders(llvm::SmallVectorImpl & argv); + + ///\brief Start an clang compiler with nvptx backend. Read the content of + /// cling.cu and compile it to a new PCH file. If predecessor PCH file is + /// existing, it will included. + /// + ///\returns True, if the clang returns 0. + bool generatePCH(); + + ///\brief Start an clang compiler with nvptx backend. Generate a PTX file + /// from the latest PCH file. The PTX code will write to cling.ptx. + /// + ///\returns True, if the clang returns 0. + bool generatePTX(); + + ///\brief Start the NVIDIA tool fatbinary. Generate a fatbin file + /// from the cling.ptx. The fatbin code will write to the path of + /// m_FatbinFilePath. + /// + ///\returns True, if the fatbinary tool returns 0. + bool generateFatbinaryInternal(); + + public: + ///\brief Constructor for IncrementalCUDADeviceCompiler + /// + ///\param [in] filePath - All files will generated in the folder of the + /// filePath, except the fatbin file, if it have another path. Have + /// to end with a separator. Can be empty. + ///\param [in] CudaGpuBinaryFileNames - Path to the fatbin file. Must not + /// be empty. + ///\param [in] invocationOptions - Contains values for the arguments of + /// clang and the NVIDIA tool fatbinary. + ///\param [in] clingHeaders - Contains the paths to the cling runtime + /// headers with include command (-I). + IncrementalCUDADeviceCompiler(std::string filePath, + std::string & CudaGpuBinaryFileNames, + cling::InvocationOptions & invocationOptions, + const llvm::SmallVectorImpl & clingHeaders); + + ///\brief Generate an new fatbin file with the path in CudaGpuBinaryFileNames. + /// It will add the content of input, to the existing source code, which was + /// passed to generateFatbinary, before. + /// + ///\param [in] input - New source code. The function can select, if code + /// is relevant for the device side. Have to be valid CUDA C++ code. + /// + ///\returns True, if all stages of generating fatbin runs right and a new + /// fatbin file is written. + bool generateFatbinary(llvm::StringRef input); + + ///\brief Print some information of the IncrementalCUDADeviceCompiler to + /// llvm::outs(). For Example the paths of the files and tools. + void dump(); + + }; + +} // end cling + +#endif // CLING_INCREMENTAL_CUDA_DEVICE_JIT_H diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp index 6353f7b558cb6..5831112de5e4f 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp @@ -17,6 +17,7 @@ #include "DeclCollector.h" #include "DeclExtractor.h" #include "DynamicLookup.h" +#include "IncrementalCUDADeviceCompiler.h" #include "IncrementalExecutor.h" #include "NullDerefProtectionTransformer.h" #include "TransactionPool.h" @@ -736,6 +737,9 @@ namespace cling { DiagnosticErrorTrap Trap(Diags); Sema::SavePendingInstantiationsRAII SavedPendingInstantiations(S); + if(m_CI->getLangOpts().CUDA ) + m_Interpreter->getCUDADeviceCompiler().generateFatbinary(input); + Parser::DeclGroupPtrTy ADecl; while (!m_Parser->ParseTopLevelDecl(ADecl)) { // If we got a null return and something *was* parsed, ignore it. This diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index 22016dc626067..ea80cb86edbd0 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -20,6 +20,7 @@ #include "ForwardDeclPrinter.h" #include "IncrementalExecutor.h" #include "IncrementalParser.h" +#include "IncrementalCUDADeviceCompiler.h" #include "MultiplexInterpreterCallbacks.h" #include "TransactionUnloader.h" @@ -56,6 +57,7 @@ #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Support/Path.h" #include @@ -236,6 +238,33 @@ namespace cling { return; } + if(!isInSyntaxOnlyMode() && m_Opts.CompilerOpts.CUDA){ + // Create temporary folder for all files, which the CUDA device compiler + // will generate. + llvm::SmallVector TmpFolder; + llvm::StringRef sep = llvm::sys::path::get_separator().data(); + llvm::sys::path::system_temp_directory(false, TmpFolder); + llvm::sys::fs::createUniqueFile(std::string(TmpFolder.data()) + + sep + "cling-%%%%" + sep , TmpFolder); + llvm::sys::fs::create_directory(TmpFolder); + + // The CUDA fatbin file is the connection beetween the CUDA device + // compiler and the CodeGen of cling. The file will every time reused. + if(getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.empty()) + getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.push_back( + std::string(TmpFolder.data()) + "cling.fatbin"); + + // Add the cling runtime headers to the CUDA device compiler, that + // it can handle the special functions of cling. + llvm::SmallVector clingHeaders; + GetIncludePaths(clingHeaders, false, true); + + m_CUDACompiler.reset( + new IncrementalCUDADeviceCompiler(TmpFolder.data(), + getCI()->getCodeGenOpts().CudaGpuBinaryFileNames[0], + m_Opts, clingHeaders)); + } + // Tell the diagnostic client that we are entering file parsing mode. DiagnosticConsumer& DClient = getCI()->getDiagnosticClient(); DClient.BeginSourceFile(getCI()->getLangOpts(), &PP); diff --git a/interpreter/cling/lib/Interpreter/InvocationOptions.cpp b/interpreter/cling/lib/Interpreter/InvocationOptions.cpp index 77dd965a42b98..bb00b607c9c0f 100644 --- a/interpreter/cling/lib/Interpreter/InvocationOptions.cpp +++ b/interpreter/cling/lib/Interpreter/InvocationOptions.cpp @@ -142,6 +142,8 @@ void CompilerOptions::Parse(int argc, const char* const argv[], case options::OPT_fmodule_name_EQ: LLVM_FALLTHROUGH; case options::OPT_fmodule_name: ModuleName = arg->getValue(); break; case options::OPT_fmodules_cache_path: CachePath = arg->getValue(); break; + case options::OPT_cuda_path_EQ: CUDAPath = arg->getValue(); break; + case options::OPT_cuda_gpu_arch_EQ: CUDAGpuArch = arg->getValue(); break; default: if (Inputs && arg->getOption().getKind() == Option::InputClass) From 2b65d02d0d3cbf37f70620e44cc979a9a1de4b51 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 21 Mar 2018 11:35:03 +0100 Subject: [PATCH 231/344] CUDA device compiler can use include paths from cling runtime. This new function allows the CUDA device compiler to search after headers in folders, which was declared at runtime vie .I command. --- .../IncrementalCUDADeviceCompiler.cpp | 34 +++++++++++++++---- .../IncrementalCUDADeviceCompiler.h | 32 ++++++++++++----- .../cling/lib/Interpreter/Interpreter.cpp | 15 +++++--- 3 files changed, 60 insertions(+), 21 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 5a4e5dd02ac50..f4b7814a74b67 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -10,6 +10,7 @@ #include "IncrementalCUDADeviceCompiler.h" #include "cling/Interpreter/InvocationOptions.h" +#include "cling/Utils/Paths.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/Program.h" @@ -24,16 +25,14 @@ namespace cling { IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler(std::string filePath, std::string & CudaGpuBinaryFileNames, - cling::InvocationOptions & invocationOptions, - const llvm::SmallVectorImpl & clingHeaders) + cling::InvocationOptions & invocationOptions) : m_Counter(0), m_FilePath(filePath), m_FatbinFilePath(CudaGpuBinaryFileNames), // We get for example sm_20 from the cling arguments and have to shrink to // 20. m_SMLevel(invocationOptions.CompilerOpts.CUDAGpuArch.empty() ? "20" : - invocationOptions.CompilerOpts.CUDAGpuArch.substr(3) ), - m_ClingHeaders(clingHeaders.begin(), clingHeaders.end()) { + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3) ) { assert(!CudaGpuBinaryFileNames.empty() && "CudaGpuBinaryFileNames can't be empty"); m_Init = generateHelperFiles(); @@ -96,8 +95,8 @@ namespace cling { return true; } - void IncrementalCUDADeviceCompiler::addClingHeaders(llvm::SmallVectorImpl & argv){ - for(std::string &s : m_ClingHeaders){ + void IncrementalCUDADeviceCompiler::addHeaders(llvm::SmallVectorImpl & argv){ + for(std::string &s : m_Headers){ argv.push_back(s.c_str()); } } @@ -149,7 +148,7 @@ namespace cling { argv.push_back("-S"); argv.push_back("-Xclang"); argv.push_back("-emit-pch"); - addClingHeaders(argv); + addHeaders(argv); // Is necessary for the cling runtime header. argv.push_back("-D__CLING__"); std::string cuFilePath = m_GenericFileName + std::to_string(m_Counter) @@ -258,6 +257,27 @@ namespace cling { return true; } + void IncrementalCUDADeviceCompiler::addIncludePath(llvm::StringRef pathStr, + bool leadingIncludeCommand){ + if(leadingIncludeCommand) { + m_Headers.push_back(pathStr); + } else { + m_Headers.push_back("-I" + std::string(pathStr.data())); + } + } + + void IncrementalCUDADeviceCompiler::addIncludePaths( + const llvm::SmallVectorImpl & headers, + bool leadingIncludeCommand){ + if(leadingIncludeCommand){ + m_Headers.append(headers.begin(), headers.end()); + } else { + for(std::string header : headers){ + m_Headers.push_back("-I" + header); + } + } + } + void IncrementalCUDADeviceCompiler::dump(){ llvm::outs() << "current counter: " << m_Counter << "\n" << "CUDA device compiler is valid: " << m_Init << "\n" << diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index 4d582710b5260..a628375737b94 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -67,8 +67,9 @@ namespace cling { ///\brief Path to the NIVDIA tool fatbinary. std::string m_FatbinaryPath; - ///\brief Contains the include commands for the cling runtime headers. - llvm::SmallVector m_ClingHeaders; + ///\brief Contains the include paths, which will set on runtime. Starts with + /// the include command (-I) + llvm::SmallVector m_Headers; ///\brief Argument for the fatbinary tool, which is depend, if the OS is /// 32 bit or 64 bit. std::string m_FatbinArch; @@ -88,11 +89,10 @@ namespace cling { ///\returns True, whether clang and fatbinary was found. bool searchCompilingTools(cling::InvocationOptions & invocationOptions); - ///\brief Add the include path commands (-I...) to a argument list. The path - /// points to the cling runtime headers. + ///\brief Add the include paths from the interpreter runtime to a argument list. /// ///\param [in,out] argv - The include commands will append to the argv vector. - void addClingHeaders(llvm::SmallVectorImpl & argv); + void addHeaders(llvm::SmallVectorImpl & argv); ///\brief Start an clang compiler with nvptx backend. Read the content of /// cling.cu and compile it to a new PCH file. If predecessor PCH file is @@ -124,12 +124,9 @@ namespace cling { /// be empty. ///\param [in] invocationOptions - Contains values for the arguments of /// clang and the NVIDIA tool fatbinary. - ///\param [in] clingHeaders - Contains the paths to the cling runtime - /// headers with include command (-I). IncrementalCUDADeviceCompiler(std::string filePath, std::string & CudaGpuBinaryFileNames, - cling::InvocationOptions & invocationOptions, - const llvm::SmallVectorImpl & clingHeaders); + cling::InvocationOptions & invocationOptions); ///\brief Generate an new fatbin file with the path in CudaGpuBinaryFileNames. /// It will add the content of input, to the existing source code, which was @@ -142,6 +139,23 @@ namespace cling { /// fatbin file is written. bool generateFatbinary(llvm::StringRef input); + ///\brief Add a new include path to CUDA device compiler. + /// + ///\param [in] pathStr - Path to the folder, which should used for header + /// search. + ///\param [in] leadingIncludeCommand - If it true, the path has to start + /// with the include command (-I) + void addIncludePath(llvm::StringRef pathStr, bool leadingIncludeCommand); + + ///\brief Add a vector of new include paths to CUDA device compiler. + /// + ///\param [in] headers - Vector with paths to the folders, which should used + /// for header search. + ///\param [in] leadingIncludeCommand - If it true, the paths have to start + /// with the include command (-I) + void addIncludePaths(const llvm::SmallVectorImpl & headers, + bool leadingIncludeCommand); + ///\brief Print some information of the IncrementalCUDADeviceCompiler to /// llvm::outs(). For Example the paths of the files and tools. void dump(); diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index ea80cb86edbd0..71df083a9764b 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -254,15 +254,16 @@ namespace cling { getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.push_back( std::string(TmpFolder.data()) + "cling.fatbin"); + m_CUDACompiler.reset( + new IncrementalCUDADeviceCompiler(TmpFolder.data(), + getCI()->getCodeGenOpts().CudaGpuBinaryFileNames[0], + m_Opts)); + // Add the cling runtime headers to the CUDA device compiler, that // it can handle the special functions of cling. llvm::SmallVector clingHeaders; GetIncludePaths(clingHeaders, false, true); - - m_CUDACompiler.reset( - new IncrementalCUDADeviceCompiler(TmpFolder.data(), - getCI()->getCodeGenOpts().CudaGpuBinaryFileNames[0], - m_Opts, clingHeaders)); + m_CUDACompiler->addIncludePaths(clingHeaders, true); } // Tell the diagnostic client that we are entering file parsing mode. @@ -565,6 +566,10 @@ namespace cling { size_t Idx = HOpts.UserEntries.size(); utils::AddIncludePaths(PathStr, HOpts, Delm); + if(m_Opts.CompilerOpts.CUDA){ + m_CUDACompiler->addIncludePath(PathStr, false); + } + Preprocessor& PP = CI->getPreprocessor(); SourceManager& SM = PP.getSourceManager(); FileManager& FM = SM.getFileManager(); From 167d662dfec860d004be4cfdd6b970009e520e25 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 21 Mar 2018 14:01:14 +0100 Subject: [PATCH 232/344] Overwork of the include path handling of the CUDA device compiler. I replaced copies of the include paths with a pointer to the headerSearchOptions. Now, explicit handling of the include paths is not more necessary. Add include paths, which was declared via argument at start also works. --- .../IncrementalCUDADeviceCompiler.cpp | 25 ++++++++++----- .../IncrementalCUDADeviceCompiler.h | 32 ++++++------------- .../cling/lib/Interpreter/Interpreter.cpp | 13 ++------ 3 files changed, 29 insertions(+), 41 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index f4b7814a74b67..a9f62a15ff48a 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -11,6 +11,7 @@ #include "cling/Interpreter/InvocationOptions.h" #include "cling/Utils/Paths.h" +#include "clang/Lex/HeaderSearchOptions.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/Program.h" @@ -23,16 +24,19 @@ namespace cling { - IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler(std::string filePath, - std::string & CudaGpuBinaryFileNames, - cling::InvocationOptions & invocationOptions) + IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler( + std::string filePath, + std::string & CudaGpuBinaryFileNames, + cling::InvocationOptions & invocationOptions, + std::shared_ptr headerSearchOptions) : m_Counter(0), m_FilePath(filePath), m_FatbinFilePath(CudaGpuBinaryFileNames), // We get for example sm_20 from the cling arguments and have to shrink to // 20. m_SMLevel(invocationOptions.CompilerOpts.CUDAGpuArch.empty() ? "20" : - invocationOptions.CompilerOpts.CUDAGpuArch.substr(3) ) { + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3) ), + m_HeaderSearchOptions(headerSearchOptions) { assert(!CudaGpuBinaryFileNames.empty() && "CudaGpuBinaryFileNames can't be empty"); m_Init = generateHelperFiles(); @@ -95,9 +99,11 @@ namespace cling { return true; } - void IncrementalCUDADeviceCompiler::addHeaders(llvm::SmallVectorImpl & argv){ - for(std::string &s : m_Headers){ - argv.push_back(s.c_str()); + void IncrementalCUDADeviceCompiler::addHeaders( + llvm::SmallVectorImpl & argv){ + for(clang::HeaderSearchOptions::Entry e : m_HeaderSearchOptions->UserEntries){ + if(e.Group == clang::frontend::IncludeDirGroup::Angled) + argv.push_back("-I" + e.Path); } } @@ -148,7 +154,10 @@ namespace cling { argv.push_back("-S"); argv.push_back("-Xclang"); argv.push_back("-emit-pch"); - addHeaders(argv); + llvm::SmallVector headers; + addHeaders(headers); + for(std::string & s : headers) + argv.push_back(s.c_str()); // Is necessary for the cling runtime header. argv.push_back("-D__CLING__"); std::string cuFilePath = m_GenericFileName + std::to_string(m_Counter) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index a628375737b94..9ee7a764ea760 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -21,6 +21,7 @@ namespace cling{ namespace clang { class CodeGenOptions; + class HeaderSearchOptions; } namespace llvm { @@ -67,13 +68,14 @@ namespace cling { ///\brief Path to the NIVDIA tool fatbinary. std::string m_FatbinaryPath; - ///\brief Contains the include paths, which will set on runtime. Starts with - /// the include command (-I) - llvm::SmallVector m_Headers; ///\brief Argument for the fatbinary tool, which is depend, if the OS is /// 32 bit or 64 bit. std::string m_FatbinArch; + ///\brief Contains information about all include paths. + /// + std::shared_ptr m_HeaderSearchOptions; + ///\brief Generate the dummy.cu file and set the paths of m_PTXFilePath and /// m_GenericFileName. /// @@ -92,7 +94,7 @@ namespace cling { ///\brief Add the include paths from the interpreter runtime to a argument list. /// ///\param [in,out] argv - The include commands will append to the argv vector. - void addHeaders(llvm::SmallVectorImpl & argv); + void addHeaders(llvm::SmallVectorImpl & argv); ///\brief Start an clang compiler with nvptx backend. Read the content of /// cling.cu and compile it to a new PCH file. If predecessor PCH file is @@ -124,9 +126,12 @@ namespace cling { /// be empty. ///\param [in] invocationOptions - Contains values for the arguments of /// clang and the NVIDIA tool fatbinary. + ///\param [in] headerSearchOptions - Contains information about all include + /// paths. IncrementalCUDADeviceCompiler(std::string filePath, std::string & CudaGpuBinaryFileNames, - cling::InvocationOptions & invocationOptions); + cling::InvocationOptions & invocationOptions, + std::shared_ptr headerSearchOptions); ///\brief Generate an new fatbin file with the path in CudaGpuBinaryFileNames. /// It will add the content of input, to the existing source code, which was @@ -139,23 +144,6 @@ namespace cling { /// fatbin file is written. bool generateFatbinary(llvm::StringRef input); - ///\brief Add a new include path to CUDA device compiler. - /// - ///\param [in] pathStr - Path to the folder, which should used for header - /// search. - ///\param [in] leadingIncludeCommand - If it true, the path has to start - /// with the include command (-I) - void addIncludePath(llvm::StringRef pathStr, bool leadingIncludeCommand); - - ///\brief Add a vector of new include paths to CUDA device compiler. - /// - ///\param [in] headers - Vector with paths to the folders, which should used - /// for header search. - ///\param [in] leadingIncludeCommand - If it true, the paths have to start - /// with the include command (-I) - void addIncludePaths(const llvm::SmallVectorImpl & headers, - bool leadingIncludeCommand); - ///\brief Print some information of the IncrementalCUDADeviceCompiler to /// llvm::outs(). For Example the paths of the files and tools. void dump(); diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index 71df083a9764b..df5c82bc8222a 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -257,13 +257,8 @@ namespace cling { m_CUDACompiler.reset( new IncrementalCUDADeviceCompiler(TmpFolder.data(), getCI()->getCodeGenOpts().CudaGpuBinaryFileNames[0], - m_Opts)); - - // Add the cling runtime headers to the CUDA device compiler, that - // it can handle the special functions of cling. - llvm::SmallVector clingHeaders; - GetIncludePaths(clingHeaders, false, true); - m_CUDACompiler->addIncludePaths(clingHeaders, true); + m_Opts, + getCI()->getHeaderSearchOptsPtr())); } // Tell the diagnostic client that we are entering file parsing mode. @@ -566,10 +561,6 @@ namespace cling { size_t Idx = HOpts.UserEntries.size(); utils::AddIncludePaths(PathStr, HOpts, Delm); - if(m_Opts.CompilerOpts.CUDA){ - m_CUDACompiler->addIncludePath(PathStr, false); - } - Preprocessor& PP = CI->getPreprocessor(); SourceManager& SM = PP.getSourceManager(); FileManager& FM = SM.getFileManager(); From 095200255703c3aadf9ab73723bfdbda3f401b40 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Thu, 22 Mar 2018 11:55:03 +0100 Subject: [PATCH 233/344] Setting the arguments of cling to clang nvptx and fatbinary are possible. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now, it is possible to set some arguments of the clang nvptx and fatbinary via arguments at cling start. The arguments are filtered. So not every argument is possible at the moment. The Arguments can’t changed during runtime, because the PCH-files forbid it. For Example, the calng nvptx use the optimization level, which is set at start of cling. At the moment, the debug options of clang nvptx are simple. If any debug option is detected, just a -g will add to the clang nvptx. Additional PTX options for clang nvptx doesn’t works at the moment. There is a problem at parsing at the start of cling. --- .../cling/Interpreter/InvocationOptions.h | 3 + .../IncrementalCUDADeviceCompiler.cpp | 183 ++++++++++++------ .../IncrementalCUDADeviceCompiler.h | 76 ++++++-- .../cling/lib/Interpreter/Interpreter.cpp | 4 +- .../lib/Interpreter/InvocationOptions.cpp | 2 + 5 files changed, 193 insertions(+), 75 deletions(-) diff --git a/interpreter/cling/include/cling/Interpreter/InvocationOptions.h b/interpreter/cling/include/cling/Interpreter/InvocationOptions.h index ebfb565ced1a5..55827bf1a562b 100644 --- a/interpreter/cling/include/cling/Interpreter/InvocationOptions.h +++ b/interpreter/cling/include/cling/Interpreter/InvocationOptions.h @@ -69,6 +69,9 @@ namespace cling { /// \brief Architecture level of the CUDA gpu. Necessary for the /// NVIDIA fatbinary tool. std::string CUDAGpuArch; + /// \brief Contains arguments, which will passed to the nvidia tool + /// fatbinary. + std::vector CUDAFatbinaryArgs; ///\brief The remaining arguments to pass to clang. /// diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index a9f62a15ff48a..33bba09815e91 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -11,7 +11,10 @@ #include "cling/Interpreter/InvocationOptions.h" #include "cling/Utils/Paths.h" + #include "clang/Lex/HeaderSearchOptions.h" +#include "clang/Frontend/CompilerInstance.h" + #include "llvm/Support/FileSystem.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/Program.h" @@ -23,29 +26,79 @@ namespace cling { - IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler( std::string filePath, - std::string & CudaGpuBinaryFileNames, + int optLevel, cling::InvocationOptions & invocationOptions, - std::shared_ptr headerSearchOptions) + clang::CompilerInstance * CI) : m_Counter(0), - m_FilePath(filePath), - m_FatbinFilePath(CudaGpuBinaryFileNames), - // We get for example sm_20 from the cling arguments and have to shrink to - // 20. - m_SMLevel(invocationOptions.CompilerOpts.CUDAGpuArch.empty() ? "20" : - invocationOptions.CompilerOpts.CUDAGpuArch.substr(3) ), - m_HeaderSearchOptions(headerSearchOptions) { - assert(!CudaGpuBinaryFileNames.empty() && "CudaGpuBinaryFileNames can't be empty"); - - m_Init = generateHelperFiles(); + m_FilePath(filePath){ + if(CI->getCodeGenOpts().CudaGpuBinaryFileNames.empty()){ + llvm::errs() << "Error: CudaGpuBinaryFileNames can't be empty\n"; + m_Init = false; + } else { + m_FatbinFilePath = CI->getCodeGenOpts().CudaGpuBinaryFileNames[0]; + m_Init = true; + } + + m_Init = m_Init && generateHelperFiles(); m_Init = m_Init && searchCompilingTools(invocationOptions); + setCuArgs(CI->getLangOpts(), invocationOptions, optLevel, + CI->getCodeGenOpts().getDebugInfo()); + + m_HeaderSearchOptions = CI->getHeaderSearchOptsPtr(); + } + + void IncrementalCUDADeviceCompiler::setCuArgs( + clang::LangOptions & langOpts, + cling::InvocationOptions & invocationOptions, + int & optLevel, clang::codegenoptions::DebugInfoKind debugInfo){ + // Set the c++ standard. Just one condition is possible. + if(langOpts.CPlusPlus11) + m_CuArgs.cppStdVersion = "-std=c++11"; + if(langOpts.CPlusPlus14) + m_CuArgs.cppStdVersion = "-std=c++14"; + if(langOpts.CPlusPlus1z) + m_CuArgs.cppStdVersion = "-std=c++1z"; + if(langOpts.CPlusPlus2a) + m_CuArgs.cppStdVersion = "-std=c++2a"; + + m_CuArgs.optLevel = "-O" + std::to_string(optLevel); + + if(!invocationOptions.CompilerOpts.CUDAGpuArch.empty()){ + m_CuArgs.ptxSmVersion = "--cuda-gpu-arch=" + + invocationOptions.CompilerOpts.CUDAGpuArch; + m_CuArgs.fatbinSmVersion = "--image=profile=compute_" + + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3); + } + //The generating of the fatbin file is depend of the architecture of the host. llvm::Triple hostTarget(llvm::sys::getDefaultTargetTriple()); - m_FatbinArch = hostTarget.isArch64Bit() ? "-64" : "-32"; + m_CuArgs.fatbinArch = hostTarget.isArch64Bit() ? "-64" : "-32"; + + m_CuArgs.verbose = invocationOptions.Verbose(); + + // FIXME : Should not reduce the fine granulated debug options to a simple. + // -g + if(debugInfo == clang::codegenoptions::DebugLineTablesOnly || + debugInfo == clang::codegenoptions::LimitedDebugInfo || + debugInfo == clang::codegenoptions::FullDebugInfo) + m_CuArgs.debug = true; + + // FIXME : Cling has problems to detect this arguments. + /* + if(langOpts.CUDADeviceFlushDenormalsToZero) + m_CuArgs.additionalPtxOpt.push_back("-fcuda-flush-denormals-to-zero"); + if(langOpts.CUDADeviceApproxTranscendentals) + m_CuArgs.additionalPtxOpt.push_back("-fcuda-approx-transcendentals"); + if(langOpts.CUDAAllowVariadicFunctions) + m_CuArgs.additionalPtxOpt.push_back("-fcuda-allow-variadic-functions"); + */ + + m_CuArgs.fatbinaryOpt = invocationOptions.CompilerOpts.CUDAFatbinaryArgs; } + bool IncrementalCUDADeviceCompiler::generateHelperFiles(){ // Generate an empty dummy.cu file. m_DummyCUPath = m_FilePath + "dummy.cu"; @@ -62,7 +115,8 @@ namespace cling { return true; } - bool IncrementalCUDADeviceCompiler::searchCompilingTools(cling::InvocationOptions & invocationOptions){ + bool IncrementalCUDADeviceCompiler::searchCompilingTools( + cling::InvocationOptions & invocationOptions){ // Search after clang in the folder of cling. llvm::SmallString<128> cwd; llvm::sys::fs::current_path(cwd); @@ -141,16 +195,17 @@ namespace cling { } bool IncrementalCUDADeviceCompiler::generatePCH() { - // clang++ -std=c++14 -S -Xclang -emit-pch ${clingHeaders} cling[0-9].cu - // -D__CLING__ -o cling[0-9].cu.pch ${ | -include-pch cling[0-9].cu.pch } - // --cuda-gpu-arch=sm_${m_smLevel} -pthread --cuda-device-only + // clang++ -std=c++xx -Ox -S -Xclang -emit-pch ${clingHeaders} cling[0-9].cu + // -D__CLING__ -o cling[0-9].cu.pch [-include-pch cling[0-9].cu.pch] + // --cuda-gpu-arch=sm_[1-7][0-9] -pthread --cuda-device-only [-v] [-g] + // ${m_CuArgs.additionalPtxOpt} llvm::SmallVector argv; // First argument have to be the program name. argv.push_back(m_ClangPath.c_str()); - // FIXME: Should replaced by the arguments of the cling instance. - argv.push_back("-std=c++14"); + argv.push_back(m_CuArgs.cppStdVersion.c_str()); + argv.push_back(m_CuArgs.optLevel.c_str()); argv.push_back("-S"); argv.push_back("-Xclang"); argv.push_back("-emit-pch"); @@ -174,11 +229,16 @@ namespace cling { argv.push_back("-include-pch"); argv.push_back(previousFile.c_str()); } - // FIXME: Should replaced by the arguments of the cling instance. - std::string smString = "--cuda-gpu-arch=sm_" + m_SMLevel; - argv.push_back(smString.c_str()); + argv.push_back(m_CuArgs.ptxSmVersion.c_str()); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); + if(m_CuArgs.verbose) + argv.push_back("-v"); + if(m_CuArgs.debug) + argv.push_back("-g"); + for(std::string & s : m_CuArgs.additionalPtxOpt){ + argv.push_back(s.c_str()); + } // Argv list have to finish with a nullptr. argv.push_back(nullptr); @@ -197,15 +257,16 @@ namespace cling { } bool cling::IncrementalCUDADeviceCompiler::generatePTX() { - // clang++ -std=c++14 -S dummy.cu -o cling.ptx -include-pch cling[0-9].cu.pch - // --cuda-gpu-arch=sm_${m_smLevel} -pthread --cuda-device-only + // clang++ -std=c++xx -Ox -S dummy.cu -o cling.ptx -include-pch + // cling[0-9].cu.pch --cuda-gpu-arch=sm_xx -pthread --cuda-device-only [-v] + // [-g] ${m_CuArgs.additionalPtxOpt} llvm::SmallVector argv; // First argument have to be the program name. argv.push_back(m_ClangPath.c_str()); - // FIXME: Should replaced by the arguments of the cling instance. - argv.push_back("-std=c++14"); + argv.push_back(m_CuArgs.cppStdVersion.c_str()); + argv.push_back(m_CuArgs.optLevel.c_str()); argv.push_back("-S"); argv.push_back(m_DummyCUPath.c_str()); argv.push_back("-o"); @@ -213,11 +274,16 @@ namespace cling { argv.push_back("-include-pch"); std::string pchFile = m_GenericFileName + std::to_string(m_Counter) +".cu.pch"; argv.push_back(pchFile.c_str()); - // FIXME: Should replaced by the arguments of the cling instance. - std::string smString = "--cuda-gpu-arch=sm_" + m_SMLevel; - argv.push_back(smString.c_str()); + argv.push_back(m_CuArgs.ptxSmVersion.c_str()); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); + if(m_CuArgs.verbose) + argv.push_back("-v"); + if(m_CuArgs.debug) + argv.push_back("-g"); + for(std::string & s : m_CuArgs.additionalPtxOpt){ + argv.push_back(s.c_str()); + } // Argv list have to finish with a nullptr. argv.push_back(nullptr); @@ -237,19 +303,24 @@ namespace cling { bool IncrementalCUDADeviceCompiler::generateFatbinaryInternal() { // fatbinary --cuda [-32 | -64] --create cling.fatbin - // --image=profile=compute_${m_smLevel},file=cling.ptx + // --image=profile=compute_xx,file=cling.ptx [-g] ${m_CuArgs.fatbinaryOpt} llvm::SmallVector argv; // First argument have to be the program name. argv.push_back(m_FatbinaryPath.c_str()); argv.push_back("--cuda"); - argv.push_back(m_FatbinArch.c_str()); + argv.push_back(m_CuArgs.fatbinArch.c_str()); argv.push_back("--create"); argv.push_back(m_FatbinFilePath.c_str()); - std::string ptxCode = "--image=profile=compute_"+ m_SMLevel + std::string ptxCode = m_CuArgs.fatbinSmVersion + ",file=" + m_PTXFilePath; argv.push_back(ptxCode.c_str()); + if(m_CuArgs.debug) + argv.push_back("-g"); + for(std::string & s : m_CuArgs.fatbinaryOpt){ + argv.push_back(s.c_str()); + } // Argv list have to finish with a nullptr. argv.push_back(nullptr); @@ -266,27 +337,6 @@ namespace cling { return true; } - void IncrementalCUDADeviceCompiler::addIncludePath(llvm::StringRef pathStr, - bool leadingIncludeCommand){ - if(leadingIncludeCommand) { - m_Headers.push_back(pathStr); - } else { - m_Headers.push_back("-I" + std::string(pathStr.data())); - } - } - - void IncrementalCUDADeviceCompiler::addIncludePaths( - const llvm::SmallVectorImpl & headers, - bool leadingIncludeCommand){ - if(leadingIncludeCommand){ - m_Headers.append(headers.begin(), headers.end()); - } else { - for(std::string header : headers){ - m_Headers.push_back("-I" + header); - } - } - } - void IncrementalCUDADeviceCompiler::dump(){ llvm::outs() << "current counter: " << m_Counter << "\n" << "CUDA device compiler is valid: " << m_Init << "\n" << @@ -294,9 +344,30 @@ namespace cling { "fatbin file path: " << m_FatbinFilePath << "\n" << "dummy.cu file path: " << m_DummyCUPath << "\n" << "cling.ptx file path: " << m_PTXFilePath << "\n" << - "generic file path: " << m_GenericFileName << "[0-9]*.cu{.pch}\n" << + "generic file path: " << m_GenericFileName + << "[0-9]*.cu{.pch}\n" << "clang++ path: " << m_ClangPath << "\n" << - "nvidia fatbinary path: " << m_FatbinaryPath << "\n"; + "nvidia fatbinary path: " << m_FatbinaryPath << "\n" << + "m_CuArgs c++ standard: " << m_CuArgs.cppStdVersion << "\n" << + "m_CuArgs opt level: " << m_CuArgs.optLevel << "\n" << + "m_CuArgs SM level for clang nvptx: " + << m_CuArgs.ptxSmVersion << "\n" << + "m_CuArgs SM level for fatbinary: " + << m_CuArgs.fatbinSmVersion << "\n" << + "m_CuArgs fatbinary architectur: " + << m_CuArgs.fatbinArch << "\n" << + "m_CuArgs verbose: " << m_CuArgs.verbose << "\n" << + "m_CuArgs debug: " << m_CuArgs.debug << "\n"; + llvm::outs() << "m_CuArgs additional clang nvptx options: "; + for(std::string & s : m_CuArgs.additionalPtxOpt){ + llvm::outs() << s << " "; + } + llvm::outs() << "\n"; + llvm::outs() << "m_CuArgs additional fatbinary options: "; + for(std::string & s : m_CuArgs.fatbinaryOpt){ + llvm::outs() << s << " "; + } + llvm::outs() << "\n"; } } // end namespace cling diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index 9ee7a764ea760..bb7e03724b3d2 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -10,6 +10,7 @@ #ifndef CLING_INCREMENTAL_CUDA_DEVICE_JIT_H #define CLING_INCREMENTAL_CUDA_DEVICE_JIT_H +#include "clang/Frontend/CodeGenOptions.h" #include "llvm/ADT/SmallVector.h" #include @@ -20,8 +21,9 @@ namespace cling{ } namespace clang { - class CodeGenOptions; + class CompilerInstance; class HeaderSearchOptions; + class LangOptions; } namespace llvm { @@ -35,8 +37,45 @@ namespace cling { /// llvm::sys::ExecuteAndWait. /// class IncrementalCUDADeviceCompiler { - /// FIXME : Add handling of new included Headers. The include commands can - /// be added by the prompt or via .L . + + static constexpr unsigned CxxStdCompiledWith() { + // The value of __cplusplus in GCC < 5.0 (e.g. 4.9.3) when + // either -std=c++1y or -std=c++14 is specified is 201300L, which fails + // the test for C++14 or more (201402L) as previously specified. + // I would claim that the check should be relaxed to: +#if __cplusplus > 201402L + return 17; +#elif __cplusplus > 201103L || (defined(LLVM_ON_WIN32) && _MSC_VER >= 1900) + return 14; +#elif __cplusplus >= 201103L + return 11; +#else +#error "Unknown __cplusplus version" +#endif + } + + ///\brief Contains the arguments for the cling nvptx and the nvidia + /// fatbinary tool. The arguments are static and will set at the constructor + /// of IncrementalCUDADeviceCompiler. + struct CUDACompilerArgs { + std::string cppStdVersion = "-std=c++" + std::to_string(CxxStdCompiledWith()); + std::string optLevel = "-O0"; + std::string ptxSmVersion = "--cuda-gpu-arch=sm_20"; + std::string fatbinSmVersion = "--image=profile=compute_20"; + ///\brief Argument for the fatbinary tool, which is depend, if the OS is + /// 32 bit or 64 bit. + std::string fatbinArch = "-32"; + ///\brief True, if the flag -v is set. + bool verbose = false; + ///\brief True, if the flag -g is set. + bool debug = false; + ///\brief A list Arguments, which will passed to the clang nvptx. + std::vector additionalPtxOpt; + ///\brief A list Arguments, which will passed to the fatbinary tool. + std::vector fatbinaryOpt; + }; + + CUDACompilerArgs m_CuArgs; ///\brief The counter responsible to generate a chain of .cu source files /// and .cu.pch files. @@ -58,9 +97,6 @@ namespace cling { std::string m_PTXFilePath; ///\brief Will be used to generate .cu and .cu.pch files. std::string m_GenericFileName; - ///\brief The SM-Level describes, which functions are possible in the code - /// and on the gpu. Just a number [1-7][0-9]. - std::string m_SMLevel; ///\brief Path to the clang++ compiler, which will used to compile the pch /// files and the PTX code. Should be in same folder, as the cling. @@ -68,10 +104,6 @@ namespace cling { ///\brief Path to the NIVDIA tool fatbinary. std::string m_FatbinaryPath; - ///\brief Argument for the fatbinary tool, which is depend, if the OS is - /// 32 bit or 64 bit. - std::string m_FatbinArch; - ///\brief Contains information about all include paths. /// std::shared_ptr m_HeaderSearchOptions; @@ -116,22 +148,32 @@ namespace cling { ///\returns True, if the fatbinary tool returns 0. bool generateFatbinaryInternal(); + ///\brief The function set the values of m_CuArgs. + /// + ///\param [in] langOpts - The LangOptions of the CompilerInstance. + ///\param [in] invocationOptions - The invocationOptions of the interpreter. + ///\param [in] optLevel - The optimization level of the interpreter. + ///\param [in] debugInfo - The debugInfo of the CompilerInstance. + void setCuArgs(clang::LangOptions & langOpts, + cling::InvocationOptions & invocationOptions, int & optLevel, + clang::codegenoptions::DebugInfoKind debugInfo); + public: ///\brief Constructor for IncrementalCUDADeviceCompiler /// ///\param [in] filePath - All files will generated in the folder of the /// filePath, except the fatbin file, if it have another path. Have /// to end with a separator. Can be empty. - ///\param [in] CudaGpuBinaryFileNames - Path to the fatbin file. Must not - /// be empty. + ///\param [in] optLevel - The optimization level of the interpreter instance. + /// The value will be copied, because a change of it is not allowed. ///\param [in] invocationOptions - Contains values for the arguments of /// clang and the NVIDIA tool fatbinary. - ///\param [in] headerSearchOptions - Contains information about all include - /// paths. - IncrementalCUDADeviceCompiler(std::string filePath, - std::string & CudaGpuBinaryFileNames, + ///\param [in] CompilerInstance - Will be used for m_CuArgs and the include + /// path handling. + IncrementalCUDADeviceCompiler(std::string filePath, + int optLevel, cling::InvocationOptions & invocationOptions, - std::shared_ptr headerSearchOptions); + clang::CompilerInstance * CI); ///\brief Generate an new fatbin file with the path in CudaGpuBinaryFileNames. /// It will add the content of input, to the existing source code, which was diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index df5c82bc8222a..f7eff4bdfc0cb 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -256,9 +256,9 @@ namespace cling { m_CUDACompiler.reset( new IncrementalCUDADeviceCompiler(TmpFolder.data(), - getCI()->getCodeGenOpts().CudaGpuBinaryFileNames[0], + m_OptLevel, m_Opts, - getCI()->getHeaderSearchOptsPtr())); + getCI())); } // Tell the diagnostic client that we are entering file parsing mode. diff --git a/interpreter/cling/lib/Interpreter/InvocationOptions.cpp b/interpreter/cling/lib/Interpreter/InvocationOptions.cpp index bb00b607c9c0f..1959c523b49d1 100644 --- a/interpreter/cling/lib/Interpreter/InvocationOptions.cpp +++ b/interpreter/cling/lib/Interpreter/InvocationOptions.cpp @@ -144,6 +144,8 @@ void CompilerOptions::Parse(int argc, const char* const argv[], case options::OPT_fmodules_cache_path: CachePath = arg->getValue(); break; case options::OPT_cuda_path_EQ: CUDAPath = arg->getValue(); break; case options::OPT_cuda_gpu_arch_EQ: CUDAGpuArch = arg->getValue(); break; + case options::OPT_Xcuda_fatbinary: CUDAFatbinaryArgs.push_back(arg->getValue()); + break; default: if (Inputs && arg->getOption().getKind() == Option::InputClass) From 0cce21f4671c0f1cb779ea76b08e23e27cc80be4 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Mon, 26 Mar 2018 14:56:14 +0200 Subject: [PATCH 234/344] Add workaround for clang PCH-bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At the moment, to extend the AST-tree of the device code, we use PCH-files to extend the exist device code with new lines of code. In detail, if we want to create a new PTX-file, we use the CUDA code (.cu file) and a PCH-file with the existing AST as input and generate an new PCH-file, which contains the whole AST. Then, the PCH-file will compiled to a PTX-file. A bug in clang prevent, that we can’t generate more than 5 new PCH-files. The bug is not easy to fix, so I write a small workaround. Instead using a PCH-file, which contains the AST, we generate a new complete AST from all .cu-files every time. The workaround is temporary and should removed, if clang is patched. --- .../IncrementalCUDADeviceCompiler.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 33bba09815e91..a26741c87292e 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -24,6 +24,8 @@ #include +#define PCHMODE 0 + namespace cling { IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler( @@ -190,6 +192,11 @@ namespace cling { return false; } +#if PCHMODE == 0 + llvm::sys::fs::remove(m_GenericFileName + std::to_string(m_Counter) + +".cu.pch"); +#endif + ++m_Counter; return true; } @@ -223,12 +230,23 @@ namespace cling { +".cu.pch"; argv.push_back(outputname.c_str()); // If a previos file exist, include it. +#if PCHMODE == 1 std::string previousFile; if(m_Counter){ previousFile = m_GenericFileName + std::to_string(m_Counter-1) +".cu.pch"; argv.push_back("-include-pch"); argv.push_back(previousFile.c_str()); } +#else + std::vector previousFiles; + if(m_Counter){ + for(unsigned int i = 0; i <= m_Counter-1; ++i){ + previousFiles.push_back(m_GenericFileName + std::to_string(i) +".cu"); + argv.push_back("-include"); + argv.push_back(previousFiles[i].c_str()); + } + } +#endif argv.push_back(m_CuArgs.ptxSmVersion.c_str()); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); From 528a21cf2609432feddb93041015331a4e34364e Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Tue, 27 Mar 2018 17:19:50 +0200 Subject: [PATCH 235/344] The CUDA compiler can handle variable declarations from the prompt. Now, it is possible to declare variables on the prompt, which are visible for other statements. The problems was, that cling wrapped all statements in a function, to get valid input. So, every variable is just visible inside in its own wrapper function. To solve the problem, cling change the local variable declaration to a global declaration. The implementation for the CUDA compiler checks, if the unwrapping is happened. If it happened, the c++ code of the unwrapped variable declaration (AST-printer) instead the raw input will be written to the .cu-file. --- .../IncrementalCUDADeviceCompiler.cpp | 34 +++++++++++++++++-- .../IncrementalCUDADeviceCompiler.h | 4 ++- .../lib/Interpreter/IncrementalParser.cpp | 6 ++-- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index a26741c87292e..97a43bc0d60a1 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -10,10 +10,13 @@ #include "IncrementalCUDADeviceCompiler.h" #include "cling/Interpreter/InvocationOptions.h" +#include "cling/Interpreter/Transaction.h" #include "cling/Utils/Paths.h" #include "clang/Lex/HeaderSearchOptions.h" #include "clang/Frontend/CompilerInstance.h" +#include "clang/AST/DeclGroup.h" +#include "clang/AST/Decl.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/raw_ostream.h" @@ -163,7 +166,8 @@ namespace cling { } } - bool IncrementalCUDADeviceCompiler::generateFatbinary(llvm::StringRef input){ + bool IncrementalCUDADeviceCompiler::generateFatbinary(llvm::StringRef input, + cling::Transaction * T){ if(!m_Init){ llvm::errs() << "Error: Initializiation of CUDA Device Code Compiler failed\n"; return false; @@ -177,7 +181,33 @@ namespace cling { llvm::errs() << "Could not open file: " << EC.message(); return false; } - cuFile << input; + + // This variable prevent, that the input and the code from the transaction + // will be written to the .cu-file. + bool foundVarDecl = false; + // Search after variable declarations. The conditions are, that the + // source code comes from the prompt (getWrapperFD()) and has a variable + // declaration. + if(T != nullptr && T->getWrapperFD()){ + for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); + iDCI != eDCI; ++iDCI){ + for (clang::DeclGroupRef::const_iterator iDecl = iDCI->m_DGR.begin(), + eDecl = iDCI->m_DGR.end(); + iDecl != eDecl; ++iDecl) { + if(clang::VarDecl * v = llvm::dyn_cast(*iDecl)){ + foundVarDecl = true; + v->print(cuFile); + // The c++ code has no whitespace and semicolon at the end. + cuFile << ";\n"; + } + } + } + } + + if(!foundVarDecl){ + cuFile << input; + } + cuFile.close(); if(!generatePCH()){ diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index bb7e03724b3d2..b3712a48fc3fa 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -18,6 +18,7 @@ namespace cling{ class InvocationOptions; + class Transaction; } namespace clang { @@ -181,10 +182,11 @@ namespace cling { /// ///\param [in] input - New source code. The function can select, if code /// is relevant for the device side. Have to be valid CUDA C++ code. + ///\param [in] T - Source of c++ code for variable declaration. /// ///\returns True, if all stages of generating fatbin runs right and a new /// fatbin file is written. - bool generateFatbinary(llvm::StringRef input); + bool generateFatbinary(llvm::StringRef input, cling::Transaction * T); ///\brief Print some information of the IncrementalCUDADeviceCompiler to /// llvm::outs(). For Example the paths of the files and tools. diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp index 5831112de5e4f..e5e477ac5fcb6 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp @@ -737,9 +737,6 @@ namespace cling { DiagnosticErrorTrap Trap(Diags); Sema::SavePendingInstantiationsRAII SavedPendingInstantiations(S); - if(m_CI->getLangOpts().CUDA ) - m_Interpreter->getCUDADeviceCompiler().generateFatbinary(input); - Parser::DeclGroupPtrTy ADecl; while (!m_Parser->ParseTopLevelDecl(ADecl)) { // If we got a null return and something *was* parsed, ignore it. This @@ -796,6 +793,9 @@ namespace cling { else if (Diags.getNumWarnings()) return kSuccessWithWarnings; + if(m_CI->getLangOpts().CUDA ) + m_Interpreter->getCUDADeviceCompiler().generateFatbinary(input, m_Consumer->getTransaction()); + return kSuccess; } From 574243d3e09d8acb45dcfd1cefe1cf3ffeec92fc Mon Sep 17 00:00:00 2001 From: simeon Date: Thu, 5 Apr 2018 14:05:31 +0200 Subject: [PATCH 236/344] Improve Error Message. --- .../cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 97a43bc0d60a1..b1dc6ca173a80 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -110,7 +110,8 @@ namespace cling { std::error_code EC; llvm::raw_fd_ostream dummyCU(m_DummyCUPath, EC, llvm::sys::fs::F_Text); if(EC){ - llvm::errs() << "Could not open file: " << EC.message(); + llvm::errs() << "Could not open " << m_DummyCUPath << ": " + << EC.message() << "\n"; return false; } dummyCU.close(); @@ -178,7 +179,8 @@ namespace cling { llvm::raw_fd_ostream cuFile(m_GenericFileName + std::to_string(m_Counter) + ".cu", EC, llvm::sys::fs::F_Text); if (EC) { - llvm::errs() << "Could not open file: " << EC.message(); + llvm::errs() << "Could not open " << m_GenericFileName + + std::to_string(m_Counter) << ".cu: " << EC.message() << "\n"; return false; } From d45c112dbc49bf10dedac4b47ceeafc7fcc82caa Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 18 Apr 2018 11:14:10 +0200 Subject: [PATCH 237/344] Fix temp-path bug. In some cases, the path of the cling temp folder contains some non printable chars at the end. Change the handling of the path string, to solve this problem. --- .../cling/lib/Interpreter/Interpreter.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index f7eff4bdfc0cb..dbbe04da840ef 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -241,21 +241,25 @@ namespace cling { if(!isInSyntaxOnlyMode() && m_Opts.CompilerOpts.CUDA){ // Create temporary folder for all files, which the CUDA device compiler // will generate. - llvm::SmallVector TmpFolder; + llvm::SmallString<256> TmpPath; llvm::StringRef sep = llvm::sys::path::get_separator().data(); - llvm::sys::path::system_temp_directory(false, TmpFolder); - llvm::sys::fs::createUniqueFile(std::string(TmpFolder.data()) - + sep + "cling-%%%%" + sep , TmpFolder); + llvm::sys::path::system_temp_directory(false, TmpPath); + TmpPath.append(sep.data()); + TmpPath.append("cling-%%%%"); + TmpPath.append(sep.data()); + + llvm::SmallString<256> TmpFolder; + llvm::sys::fs::createUniqueFile(TmpPath.c_str(), TmpFolder); llvm::sys::fs::create_directory(TmpFolder); // The CUDA fatbin file is the connection beetween the CUDA device // compiler and the CodeGen of cling. The file will every time reused. if(getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.empty()) getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.push_back( - std::string(TmpFolder.data()) + "cling.fatbin"); + std::string(TmpFolder.c_str()) + "cling.fatbin"); m_CUDACompiler.reset( - new IncrementalCUDADeviceCompiler(TmpFolder.data(), + new IncrementalCUDADeviceCompiler(TmpFolder.c_str(), m_OptLevel, m_Opts, getCI())); From b339f0ed2c5cd9d3ac64113b4bf9a832eb1a75c0 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 18 Apr 2018 13:48:49 +0200 Subject: [PATCH 238/344] Improve the search of the clang instance for CUDA. Before, it was not possible to find the clang++, which is contained in the cling, if we don't start the clang from the bin folder ('./cling -xcuda'). Now, for example it is possible to start the cling with 'bin/cling -xcuda' . Fix a Bug, which avoid to start './cling -xcuda -fsyntax-only'. --- .../lib/Interpreter/IncrementalCUDADeviceCompiler.cpp | 7 ++++++- interpreter/cling/lib/Interpreter/IncrementalParser.cpp | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index b1dc6ca173a80..288cdf0e59461 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -125,7 +125,12 @@ namespace cling { cling::InvocationOptions & invocationOptions){ // Search after clang in the folder of cling. llvm::SmallString<128> cwd; - llvm::sys::fs::current_path(cwd); + // get folder of the cling executable to find the clang which is contained + // in cling + // nullptr is ok, if we are the main and not a shared library + cwd.append(llvm::sys::path::parent_path( + llvm::sys::fs::getMainExecutable( + invocationOptions.CompilerOpts.Remaining[0], (void *) &cwd))); cwd.append(llvm::sys::path::get_separator()); cwd.append("clang++"); m_ClangPath = cwd.c_str(); diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp index e5e477ac5fcb6..c07f446cc1698 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp @@ -793,8 +793,9 @@ namespace cling { else if (Diags.getNumWarnings()) return kSuccessWithWarnings; - if(m_CI->getLangOpts().CUDA ) - m_Interpreter->getCUDADeviceCompiler().generateFatbinary(input, m_Consumer->getTransaction()); + if(!m_Interpreter->isInSyntaxOnlyMode() && m_CI->getLangOpts().CUDA ) + m_Interpreter->getCUDADeviceCompiler() + .generateFatbinary(input, m_Consumer->getTransaction()); return kSuccess; } From f31a0166e161f7387ff088afe716587ae1743cff Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Tue, 24 Apr 2018 16:45:35 +0200 Subject: [PATCH 239/344] Add test cases for CUDA features. - CUDA __constant__ memory - CUDA global __device__ memory - CUDA __host__ prefix - CUDA kernel launch with arguments - CUDA templated kernels - CUDA shared memory with dynamic runtime - CUDA Streams - test if CUDA device is available --- .../test/CUDADeviceCode/CUDAConstantMemory.C | 47 ++++++++++++++ .../CUDADeviceCode/CUDAGlobalDeviceMemory.C | 65 +++++++++++++++++++ .../test/CUDADeviceCode/CUDAHostPrefix.C | 43 ++++++++++++ .../test/CUDADeviceCode/CUDAKernelArgument.C | 61 +++++++++++++++++ .../test/CUDADeviceCode/CUDAKernelTemplate.C | 58 +++++++++++++++++ .../test/CUDADeviceCode/CUDASharedMemory.C | 51 +++++++++++++++ .../test/CUDADeviceCode/CUDASimpleKernel.C | 40 ++++++++++++ .../cling/test/CUDADeviceCode/CUDAStreams.C | 58 +++++++++++++++++ 8 files changed, 423 insertions(+) create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAStreams.C diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C new file mode 100644 index 0000000000000..6cd6aaedbc4ca --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C @@ -0,0 +1,47 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if constant memory works. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +__constant__ int constNum[4]; + +.rawInput 1 +__global__ void gKernel1(int * output){ + int i = threadIdx.x; + output[i] = constNum[i]; +} + +int hostInput[4] = {1,2,3,4}; +int hostOutput[4] = {0,0,0,0}; +int * deviceOutput; +cudaMalloc( (void **) &deviceOutput, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpyToSymbol(constNum, &hostInput, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel1<<<1,4>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +// FIXME: output of the whole static array isn't working at the moment +hostOutput[0] +// CHECK: (int) 1 +hostOutput[1] +// CHECK: (int) 2 +hostOutput[2] +// CHECK: (int) 3 +hostOutput[3] +// CHECK: (int) 4 + + +// expected-no-diagnostics +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C new file mode 100644 index 0000000000000..d1e45da1103d5 --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if global __device__ memory works. There two tests. One use +// direct value assignment at declaration and the other use a reassignment. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +__device__ int dAnswer = 42; + +.rawInput 1 +__global__ void gKernel1(int * output){ + int i = threadIdx.x; + output[i] = dAnswer; +} +.rawInput 0 + +int hostOutput[4] = {1,1,1,1}; +int * deviceOutput; +cudaMalloc( (void **) &deviceOutput, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel1<<<1,4>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +// FIXME: output of the whole static array isn't working at the moment +hostOutput[0] +// CHECK: (int) 42 +hostOutput[1] +// CHECK: (int) 42 +hostOutput[2] +// CHECK: (int) 42 +hostOutput[3] +// CHECK: (int) 42 + +// Test, if value assignment also works. +dAnswer = 43; + +gKernel1<<<1,4>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +// FIXME: output of the whole static array isn't working at the moment +hostOutput[0] +// CHECK: (int) 43 +hostOutput[1] +// CHECK: (int) 43 +hostOutput[2] +// CHECK: (int) 43 +hostOutput[3] +// CHECK: (int) 43 + + +// expected-no-diagnostics +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C b/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C new file mode 100644 index 0000000000000..2d7290be9845c --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if a function with __host__ and __device__ prefix available +// on host and device side. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +.rawInput 1 +__host__ __device__ int sum(int a, int b){ + return a + b; +} + +__global__ void gKernel1(int * output){ + *output = sum(40,2); +} +.rawInput 0 + +sum(41,1) +// CHECK: (int) 42 + +int hostOutput = 0; +int * deviceOutput; +cudaMalloc( (void **) &deviceOutput, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel1<<<1,1>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +hostOutput +// CHECK: (int) 42 + + +// expected-no-diagnostics +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C new file mode 100644 index 0000000000000..592d47008d59c --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if a CUDA kernel works with a arguments and built-in +// functions. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +// Test, if a simple kernel with arguments works. +.rawInput 1 +__global__ void gKernel1(int * out){ + *out = 42; +} +.rawInput 0 + +int * deviceOutput; +int hostOutput = 0; +cudaMalloc( (void **) &deviceOutput, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel1<<<1,1>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +hostOutput +// CHECK: (int) 42 + + +// Test, if a parallel kernel with built-in functions. +.rawInput 1 +__device__ int mul7(int in){ + return 7*in; +} + +__global__ void gKernel2(int * out){ + int i = threadIdx.x; + out[i] = mul7(i); +} +.rawInput 0 + +int * deviceOutput2; +int hostOutput2[4] = {0,0,0,0}; +cudaMalloc( (void **) &deviceOutput2, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel2<<<1,4>>>(deviceOutput2); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput2, deviceOutput2, sizeof(int)*4, cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +hostOutput2[0] + hostOutput2[1] + hostOutput2[2] + hostOutput2[3] +// CHECK: (int) 42 + + +// expected-no-diagnostics +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C new file mode 100644 index 0000000000000..b7a3787161094 --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if templated CUDA kernel works. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +// Check if template device side resoultion works. +.rawInput 1 +template +__device__ int dKernel1(){ + return T; +} + +__global__ void gKernel1(int * out){ + *out = dKernel1<42>(); +} +.rawInput 0 + +int * deviceOutput; +int hostOutput = 0; +cudaMalloc( (void **) &deviceOutput, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel1<<<1,1>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +hostOutput +// CHECK: (int) 42 + + +// Check if template host-device side resoultion works. +.rawInput 1 +template +__global__ void gKernel2(int * out){ + *out = dKernel1(); +} +.rawInput 0 + +hostOutput = 0; +gKernel2<43><<<1,1>>>(deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +hostOutput +// CHECK: (int) 43 + + +// expected-no-diagnostics +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C new file mode 100644 index 0000000000000..7e05a219d9857 --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if runtime shared memory works. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +.rawInput 1 +__global__ void gKernel1(int * input, int * output){ + extern __shared__ int s[]; + int i = threadIdx.x; + s[i] = input[i]; + output[i] = s[i]; +} +.rawInput 0 + +int hostInput[4] = {1,2,3,4}; +int hostOutput[4] = {0,0,0,0}; +int * deviceInput; +int * deviceOutput; +cudaMalloc( (void **) &deviceInput, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMalloc( (void **) &deviceOutput, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpy(deviceInput, &hostInput, sizeof(int)*4, cudaMemcpyHostToDevice) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel1<<<1,4, 4 * sizeof(int)>>>(deviceInput, deviceOutput); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +// FIXME: output of the whole static array isn't working at the moment +hostOutput[0] +// CHECK: (int) 1 +hostOutput[1] +// CHECK: (int) 2 +hostOutput[2] +// CHECK: (int) 3 +hostOutput[3] +// CHECK: (int) 4 + + +// expected-no-diagnostics +.q \ No newline at end of file diff --git a/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C b/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C new file mode 100644 index 0000000000000..60b0fade8dae3 --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if a CUDA compatible device is available and checks, if simple +// __global__ and __device__ kernels are running. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +// Check if a CUDA compatible device (GPU) is available. +int device_count = 0; +cudaGetDeviceCount(&device_count) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +device_count > 0 +// CHECK: (bool) true + +// Check, if the smallest __global__ kernel is callable. +.rawInput 1 +__global__ void gKernel1(){} +.rawInput 0 +gKernel1<<<1,1>>>(); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +// Check, if a simple __device__ kernel is useable. +.rawInput 1 +__device__ int dKernel1(){return 42;} +__global__ void gKernel2(){int i = dKernel1();} +.rawInput 0 +gKernel2<<<1,1>>>(); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + + +// expected-no-diagnostics +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C new file mode 100644 index 0000000000000..c896fcf358f4e --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C @@ -0,0 +1,58 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if cuda streams works. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +.rawInput 1 +__global__ void gKernel1(int * a, int b){ + int i = threadIdx.x; + a[i] += b; +} +.rawInput 0 + +cudaStream_t stream1, stream2; +cudaStreamCreate(&stream1) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaStreamCreate(&stream2) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +int host1[] = {1,2,3,4}; +int host2[] = {11,12,13,14}; +int * device1; +int * device2; +cudaMalloc( (void **) &device1, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMalloc( (void **) &device2, sizeof(int)*4) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpyAsync(device1, &host1, sizeof(int)*4, cudaMemcpyHostToDevice, stream1) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpyAsync(device2, &host2, sizeof(int)*4, cudaMemcpyHostToDevice, stream2) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel1<<<1,4,0,stream2>>>(device2, 2); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel1<<<1,4,0,stream1>>>(device1, 1); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpyAsync(&host2, device2, sizeof(int)*4, cudaMemcpyDeviceToHost, stream2) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpyAsync(&host1, device1, sizeof(int)*4, cudaMemcpyDeviceToHost, stream1) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +host1[0] + host1[1] + host1[2] + host1[3] +// CHECK: (int) 14 +host2[0] + host2[1] + host2[2] + host2[3] +// CHECK: (int) 58 + + +// expected-no-diagnostics +.q From 78e8ebacfb0bb1e367e61588c34892c10d4bf0a3 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 2 May 2018 16:29:43 +0200 Subject: [PATCH 240/344] Overwork CUDA device tests. - add cudaDeviceSynchronize() at every kernel launch - remove small address bug at cudaMemcpy, if host array is used - in parallel test cases, replace fixes thread number with variable - overworked shared memory kernel --- .../test/CUDADeviceCode/CUDAConstantMemory.C | 47 -------------- .../CUDADeviceCode/CUDAGlobalDeviceMemory.C | 65 ------------------- .../test/CUDADeviceCode/CUDAHostPrefix.C | 2 + .../test/CUDADeviceCode/CUDAKernelArgument.C | 32 +++++++-- .../test/CUDADeviceCode/CUDAKernelTemplate.C | 4 ++ .../test/CUDADeviceCode/CUDASharedMemory.C | 50 +++++++++----- .../test/CUDADeviceCode/CUDASimpleKernel.C | 9 +++ .../cling/test/CUDADeviceCode/CUDAStreams.C | 54 +++++++++++---- 8 files changed, 114 insertions(+), 149 deletions(-) delete mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C delete mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C deleted file mode 100644 index 6cd6aaedbc4ca..0000000000000 --- a/interpreter/cling/test/CUDADeviceCode/CUDAConstantMemory.C +++ /dev/null @@ -1,47 +0,0 @@ -//------------------------------------------------------------------------------ -// CLING - the C++ LLVM-based InterpreterG :) -// -// This file is dual-licensed: you can choose to license it under the University -// of Illinois Open Source License or the GNU Lesser General Public License. See -// LICENSE.TXT for details. -//------------------------------------------------------------------------------ - -// The Test checks if constant memory works. -// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s -// REQUIRES: cuda-runtime - -__constant__ int constNum[4]; - -.rawInput 1 -__global__ void gKernel1(int * output){ - int i = threadIdx.x; - output[i] = constNum[i]; -} - -int hostInput[4] = {1,2,3,4}; -int hostOutput[4] = {0,0,0,0}; -int * deviceOutput; -cudaMalloc( (void **) &deviceOutput, sizeof(int)*4) -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 - -cudaMemcpyToSymbol(constNum, &hostInput, sizeof(int)*4) -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -gKernel1<<<1,4>>>(deviceOutput); -cudaGetLastError() -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 - -// FIXME: output of the whole static array isn't working at the moment -hostOutput[0] -// CHECK: (int) 1 -hostOutput[1] -// CHECK: (int) 2 -hostOutput[2] -// CHECK: (int) 3 -hostOutput[3] -// CHECK: (int) 4 - - -// expected-no-diagnostics -.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C deleted file mode 100644 index d1e45da1103d5..0000000000000 --- a/interpreter/cling/test/CUDADeviceCode/CUDAGlobalDeviceMemory.C +++ /dev/null @@ -1,65 +0,0 @@ -//------------------------------------------------------------------------------ -// CLING - the C++ LLVM-based InterpreterG :) -// -// This file is dual-licensed: you can choose to license it under the University -// of Illinois Open Source License or the GNU Lesser General Public License. See -// LICENSE.TXT for details. -//------------------------------------------------------------------------------ - -// The Test checks if global __device__ memory works. There two tests. One use -// direct value assignment at declaration and the other use a reassignment. -// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s -// REQUIRES: cuda-runtime - -__device__ int dAnswer = 42; - -.rawInput 1 -__global__ void gKernel1(int * output){ - int i = threadIdx.x; - output[i] = dAnswer; -} -.rawInput 0 - -int hostOutput[4] = {1,1,1,1}; -int * deviceOutput; -cudaMalloc( (void **) &deviceOutput, sizeof(int)*4) -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 - -gKernel1<<<1,4>>>(deviceOutput); -cudaGetLastError() -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 - -// FIXME: output of the whole static array isn't working at the moment -hostOutput[0] -// CHECK: (int) 42 -hostOutput[1] -// CHECK: (int) 42 -hostOutput[2] -// CHECK: (int) 42 -hostOutput[3] -// CHECK: (int) 42 - -// Test, if value assignment also works. -dAnswer = 43; - -gKernel1<<<1,4>>>(deviceOutput); -cudaGetLastError() -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) -// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 - -// FIXME: output of the whole static array isn't working at the moment -hostOutput[0] -// CHECK: (int) 43 -hostOutput[1] -// CHECK: (int) 43 -hostOutput[2] -// CHECK: (int) 43 -hostOutput[3] -// CHECK: (int) 43 - - -// expected-no-diagnostics -.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C b/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C index 2d7290be9845c..f67c63e484190 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAHostPrefix.C @@ -32,6 +32,8 @@ cudaMalloc( (void **) &deviceOutput, sizeof(int)) gKernel1<<<1,1>>>(deviceOutput); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C index 592d47008d59c..15cbffc0197a6 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C @@ -26,6 +26,8 @@ cudaMalloc( (void **) &deviceOutput, sizeof(int)) gKernel1<<<1,1>>>(deviceOutput); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 hostOutput @@ -33,6 +35,8 @@ hostOutput // Test, if a parallel kernel with built-in functions. +const unsigned int numberOfThreads = 4; + .rawInput 1 __device__ int mul7(int in){ return 7*in; @@ -45,16 +49,32 @@ __global__ void gKernel2(int * out){ .rawInput 0 int * deviceOutput2; -int hostOutput2[4] = {0,0,0,0}; -cudaMalloc( (void **) &deviceOutput2, sizeof(int)*4) +int hostOutput2[numberOfThreads]; +for(unsigned int i = 0; i < numberOfThreads; ++i){ + hostOutput2[i] = 0; +} +cudaMalloc( (void **) &deviceOutput2, sizeof(int)*numberOfThreads) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -gKernel2<<<1,4>>>(deviceOutput2); + +gKernel2<<<1,numberOfThreads>>>(deviceOutput2); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpy(&hostOutput2, deviceOutput2, sizeof(int)*4, cudaMemcpyDeviceToHost) +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(hostOutput2, deviceOutput2, sizeof(int)*numberOfThreads, cudaMemcpyDeviceToHost) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -hostOutput2[0] + hostOutput2[1] + hostOutput2[2] + hostOutput2[3] -// CHECK: (int) 42 + +unsigned int expectedSum = 0; +unsigned int cudaSum = 0; + +for(unsigned int i = 0; i < numberOfThreads; ++i){ + expectedSum += 7*i; + cudaSum += hostOutput2[i]; +} + +// small workaround, to avoid compiler hint '=' +bool result = expectedSum == cudaSum +// CHECK: (bool) true // expected-no-diagnostics diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C index b7a3787161094..b1f3c975250b8 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C @@ -30,6 +30,8 @@ cudaMalloc( (void **) &deviceOutput, sizeof(int)) gKernel1<<<1,1>>>(deviceOutput); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 hostOutput @@ -48,6 +50,8 @@ hostOutput = 0; gKernel2<43><<<1,1>>>(deviceOutput); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 cudaMemcpy(&hostOutput, deviceOutput, sizeof(int), cudaMemcpyDeviceToHost) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 hostOutput diff --git a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C index 7e05a219d9857..cc9e602cbda9e 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C @@ -10,41 +10,57 @@ // RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s // REQUIRES: cuda-runtime +const unsigned int numberOfThreads = 4; + .rawInput 1 __global__ void gKernel1(int * input, int * output){ extern __shared__ int s[]; int i = threadIdx.x; - s[i] = input[i]; + s[(i+1)%blockDim.x] = input[i]; + __syncthreads(); output[i] = s[i]; } .rawInput 0 -int hostInput[4] = {1,2,3,4}; -int hostOutput[4] = {0,0,0,0}; +int hostInput[numberOfThreads]; +int hostOutput[numberOfThreads]; +for(unsigned int i = 0; i < numberOfThreads; ++i){ + hostInput[i] = i+1; + hostOutput[i] = 0; +} int * deviceInput; int * deviceOutput; -cudaMalloc( (void **) &deviceInput, sizeof(int)*4) +cudaMalloc( (void **) &deviceInput, sizeof(int)*numberOfThreads) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMalloc( (void **) &deviceOutput, sizeof(int)*4) +cudaMalloc( (void **) &deviceOutput, sizeof(int)*numberOfThreads) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpy(deviceInput, &hostInput, sizeof(int)*4, cudaMemcpyHostToDevice) +cudaMemcpy(deviceInput, hostInput, sizeof(int)*numberOfThreads, cudaMemcpyHostToDevice) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -gKernel1<<<1,4, 4 * sizeof(int)>>>(deviceInput, deviceOutput); +gKernel1<<<1,numberOfThreads, sizeof(int)*numberOfThreads>>>(deviceInput, deviceOutput); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpy(&hostOutput, deviceOutput, sizeof(int)*4, cudaMemcpyDeviceToHost) +cudaDeviceSynchronize() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(hostOutput, deviceOutput, sizeof(int)*numberOfThreads, cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +int expectedSum = (numberOfThreads*(numberOfThreads+1))/2; +int cudaSum = 0; -// FIXME: output of the whole static array isn't working at the moment -hostOutput[0] -// CHECK: (int) 1 -hostOutput[1] -// CHECK: (int) 2 -hostOutput[2] -// CHECK: (int) 3 -hostOutput[3] -// CHECK: (int) 4 +for(unsigned int i = 0; i < numberOfThreads; ++i){ + cudaSum += hostOutput[i]; +} + +//check, if elements was shifted +// small workaround, to avoid compiler hint '=' +bool result1 = hostOutput[0] == numberOfThreads +// CHECK: (bool) true +bool result2 = hostOutput[numberOfThreads-1] == numberOfThreads-1 +// CHECK: (bool) true +bool result3 = expectedSum == cudaSum +// CHECK: (bool) true + // expected-no-diagnostics diff --git a/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C b/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C index 60b0fade8dae3..3370d4d89d978 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDASimpleKernel.C @@ -11,6 +11,11 @@ // RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s // REQUIRES: cuda-runtime +// Check if cuda driver is available +int version; +cudaDriverGetVersion(&version) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + // Check if a CUDA compatible device (GPU) is available. int device_count = 0; cudaGetDeviceCount(&device_count) @@ -25,6 +30,8 @@ __global__ void gKernel1(){} gKernel1<<<1,1>>>(); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 // Check, if a simple __device__ kernel is useable. .rawInput 1 @@ -34,6 +41,8 @@ __global__ void gKernel2(){int i = dKernel1();} gKernel2<<<1,1>>>(); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 // expected-no-diagnostics diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C index c896fcf358f4e..f82a7bade4fde 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C @@ -10,6 +10,8 @@ // RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s // REQUIRES: cuda-runtime +const unsigned int numberOfThreads = 4; + .rawInput 1 __global__ void gKernel1(int * a, int b){ int i = threadIdx.x; @@ -23,35 +25,59 @@ cudaStreamCreate(&stream1) cudaStreamCreate(&stream2) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -int host1[] = {1,2,3,4}; -int host2[] = {11,12,13,14}; +int hostInput1[numberOfThreads]; +int hostInput2[numberOfThreads]; +int hostOutput1[numberOfThreads]; +int hostOutput2[numberOfThreads]; +for(unsigned int i = 0; i < numberOfThreads; ++i){ + hostInput1[i] = i; + hostInput2[i] = i+10; +} int * device1; int * device2; -cudaMalloc( (void **) &device1, sizeof(int)*4) +cudaMalloc( (void **) &device1, sizeof(int)*numberOfThreads) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMalloc( (void **) &device2, sizeof(int)*4) +cudaMalloc( (void **) &device2, sizeof(int)*numberOfThreads) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpyAsync(device1, &host1, sizeof(int)*4, cudaMemcpyHostToDevice, stream1) +cudaMemcpyAsync(device1, hostInput1, sizeof(int)*numberOfThreads, cudaMemcpyHostToDevice, stream1) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpyAsync(device2, &host2, sizeof(int)*4, cudaMemcpyHostToDevice, stream2) +cudaMemcpyAsync(device2, hostInput2, sizeof(int)*numberOfThreads, cudaMemcpyHostToDevice, stream2) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -gKernel1<<<1,4,0,stream2>>>(device2, 2); +gKernel1<<<1,numberOfThreads,0,stream2>>>(device2, 2); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -gKernel1<<<1,4,0,stream1>>>(device1, 1); +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel1<<<1,numberOfThreads,0,stream1>>>(device1, 1); cudaGetLastError() // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpyAsync(&host2, device2, sizeof(int)*4, cudaMemcpyDeviceToHost, stream2) +cudaMemcpyAsync(hostOutput2, device2, sizeof(int)*numberOfThreads, cudaMemcpyDeviceToHost, stream2) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -cudaMemcpyAsync(&host1, device1, sizeof(int)*4, cudaMemcpyDeviceToHost, stream1) +cudaMemcpyAsync(hostOutput1, device1, sizeof(int)*numberOfThreads, cudaMemcpyDeviceToHost, stream1) // CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 -host1[0] + host1[1] + host1[2] + host1[3] -// CHECK: (int) 14 -host2[0] + host2[1] + host2[2] + host2[3] -// CHECK: (int) 58 + +unsigned int expectedSum1 = 0; +unsigned int cudaSum1 = 0; +unsigned int expectedSum2 = 0; +unsigned int cudaSum2 = 0; + +for(unsigned int i = 0; i < numberOfThreads; ++i){ + expectedSum1 += i+1; + cudaSum1 += hostOutput1[i]; + expectedSum2 += i+12; + cudaSum2 += hostOutput2[i]; +} + +// small workaround, to avoid compiler hint '=' +bool result1 = expectedSum1 == cudaSum1 +// CHECK: (bool) true +bool result2 = expectedSum2 == cudaSum2 +// CHECK: (bool) true // expected-no-diagnostics From dd838fd6842011ce312b7bd107c8989b63484232 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 2 May 2018 18:10:14 +0200 Subject: [PATCH 241/344] Add some complex cuda template kernel test cases. --- .../CUDAKernelTemplateComplex.C | 186 ++++++++++++++++++ ...lTemplate.C => CUDAKernelTemplateSimple.C} | 0 2 files changed, 186 insertions(+) create mode 100644 interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplateComplex.C rename interpreter/cling/test/CUDADeviceCode/{CUDAKernelTemplate.C => CUDAKernelTemplateSimple.C} (100%) diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplateComplex.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplateComplex.C new file mode 100644 index 0000000000000..c935d4102bca9 --- /dev/null +++ b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplateComplex.C @@ -0,0 +1,186 @@ +//------------------------------------------------------------------------------ +// CLING - the C++ LLVM-based InterpreterG :) +// +// This file is dual-licensed: you can choose to license it under the University +// of Illinois Open Source License or the GNU Lesser General Public License. See +// LICENSE.TXT for details. +//------------------------------------------------------------------------------ + +// The Test checks if templated CUDA kernel in some special cases works. +// RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s +// REQUIRES: cuda-runtime + +// Check if templated CUDA kernel works, without explicit template type declaration. +.rawInput 1 + +template +__global__ void gKernel1(T * value){ + *value = (T)42.0; +} +.rawInput 0 + +int * deviceOutput1; +int hostOutput1 = 1; +cudaMalloc( (void **) &deviceOutput1, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel1<<<1,1>>>(deviceOutput1); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput1, deviceOutput1, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +hostOutput1 +// CHECK: (int) 42 + + + +// Check if specialization of templated CUDA kernel works. + +.rawInput 1 + +template +__global__ void gKernel2(T * value){ + *value = (T)1.0; +} + +template <> +__global__ void gKernel2(float * value){ + *value = 2.0; +} +.rawInput 0 + +int * deviceOutput2; +int hostOutput2 = 10; +cudaMalloc( (void **) &deviceOutput2, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +float * deviceOutput3; +float hostOutput3= 10.0; +cudaMalloc( (void **) &deviceOutput3, sizeof(float)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel2<<<1,1>>>(deviceOutput2); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel2<<<1,1>>>(deviceOutput3); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpy(&hostOutput2, deviceOutput2, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput3, deviceOutput3, sizeof(float), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +hostOutput2 +// CHECK: (int) 1 +hostOutput3 +// CHECK: (float) 2.00000f + + + +// Check if function as parameter works on a templated CUDA kernel. +.rawInput 1 + +template +__global__ void gKernel3(T * out, int value){ + *out = value; +} + +__global__ void gKernel4(int * out){ + *out = 5; +} + +int func1(int * input){ + int result = 1; + gKernel4<<<1,1>>>(input); + cudaMemcpy(&result, input, sizeof(int), cudaMemcpyDeviceToHost); + return result; +} +.rawInput 0 + +int * deviceOutput4; +int hostOutput4 = 10; +cudaMalloc( (void **) &deviceOutput4, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +int * deviceOutput5; +cudaMalloc( (void **) &deviceOutput5, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel3<<<1,1>>>(deviceOutput4, func1(deviceOutput5)); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpy(&hostOutput4, deviceOutput4, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +hostOutput4 +// CHECK: (int) 5 + +// Check if specialization of struct __device__ functors works. + +template +struct Struct1 +{ + __device__ T operator()(T* dummy) const + { + return (T)1; + } +}; + +template<> +struct Struct1 +{ + __device__ double operator()(double * dummy) const + { + return 2.0; + } +}; + +.rawInput 1 + +template +__global__ void gKernel5(T * x, Functor const functor){ + *x = functor(x); +} +.rawInput 0 + +int * deviceOutput6; +int hostOutput6 = 10; +cudaMalloc( (void **) &deviceOutput6, sizeof(int)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +double * deviceOutput7; +double hostOutput7 = 10.0; +cudaMalloc( (void **) &deviceOutput7, sizeof(double)) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +gKernel5<<<1,1>>>(deviceOutput6, Struct1{}); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +gKernel5<<<1,1>>>(deviceOutput7, Struct1{}); +cudaGetLastError() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaDeviceSynchronize() +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +cudaMemcpy(&hostOutput6, deviceOutput6, sizeof(int), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 +cudaMemcpy(&hostOutput7, deviceOutput7, sizeof(double), cudaMemcpyDeviceToHost) +// CHECK: (cudaError_t) (cudaError::cudaSuccess) : (unsigned int) 0 + +hostOutput6 +// CHECK: (int) 1 + +hostOutput7 +// CHECK: (double) 2.0000000 + +// expected-no-diagnostics +.q \ No newline at end of file diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplateSimple.C similarity index 100% rename from interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplate.C rename to interpreter/cling/test/CUDADeviceCode/CUDAKernelTemplateSimple.C From 997ad66315ef7a34234116d82c341883baa8cebb Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Tue, 8 May 2018 10:40:13 +0200 Subject: [PATCH 242/344] Add myself to the credits. --- interpreter/cling/CREDITS.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interpreter/cling/CREDITS.txt b/interpreter/cling/CREDITS.txt index dfa7d9a75a29b..75d121ad82404 100644 --- a/interpreter/cling/CREDITS.txt +++ b/interpreter/cling/CREDITS.txt @@ -57,3 +57,7 @@ D: Function call interfaces. N: Vassil Vassilev E: vvasilev@cern.ch D: Main developer of cling. + +N: Simeon Ehrig +E: s.ehrig@hzdr.de +D: CUDA runtime API support From 632c25a6dee1594bd7068d352ee12c51d96ccda4 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Thu, 17 May 2018 16:28:12 +0200 Subject: [PATCH 243/344] Improve CUDA device code testcases. --- .../Interpreter/IncrementalCUDADeviceCompiler.cpp | 12 +++++------- .../lib/Interpreter/IncrementalCUDADeviceCompiler.h | 6 +++--- .../cling/test/CUDADeviceCode/CUDAKernelArgument.C | 7 ++----- .../cling/test/CUDADeviceCode/CUDASharedMemory.C | 12 ++++-------- interpreter/cling/test/CUDADeviceCode/CUDAStreams.C | 9 +++------ 5 files changed, 17 insertions(+), 29 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 288cdf0e59461..4e3dbeebfe320 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -109,7 +109,7 @@ namespace cling { m_DummyCUPath = m_FilePath + "dummy.cu"; std::error_code EC; llvm::raw_fd_ostream dummyCU(m_DummyCUPath, EC, llvm::sys::fs::F_Text); - if(EC){ + if(EC){ llvm::errs() << "Could not open " << m_DummyCUPath << ": " << EC.message() << "\n"; return false; @@ -149,7 +149,7 @@ namespace cling { } }else{ // Search after fatbinary on the system. - if (llvm::ErrorOr fatbinary = + if (llvm::ErrorOr fatbinary = llvm::sys::findProgramByName("fatbinary")) { llvm::SmallString<256> fatbinaryAbsolutePath; llvm::sys::fs::real_path(*fatbinary, fatbinaryAbsolutePath); @@ -172,7 +172,7 @@ namespace cling { } } - bool IncrementalCUDADeviceCompiler::generateFatbinary(llvm::StringRef input, + bool IncrementalCUDADeviceCompiler::generateFatbinary(const llvm::StringRef input, cling::Transaction * T){ if(!m_Init){ llvm::errs() << "Error: Initializiation of CUDA Device Code Compiler failed\n"; @@ -198,10 +198,8 @@ namespace cling { if(T != nullptr && T->getWrapperFD()){ for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); iDCI != eDCI; ++iDCI){ - for (clang::DeclGroupRef::const_iterator iDecl = iDCI->m_DGR.begin(), - eDecl = iDCI->m_DGR.end(); - iDecl != eDecl; ++iDecl) { - if(clang::VarDecl * v = llvm::dyn_cast(*iDecl)){ + for(clang::Decl * decl : iDCI->m_DGR) { + if(clang::VarDecl * v = llvm::dyn_cast(decl)){ foundVarDecl = true; v->print(cuFile); // The c++ code has no whitespace and semicolon at the end. diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index b3712a48fc3fa..db866c3b1090b 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -36,7 +36,7 @@ namespace cling { ///\brief The class is responsible for generating CUDA device code in /// cuda fatbinary form during the runtime. It works with /// llvm::sys::ExecuteAndWait. - /// + /// class IncrementalCUDADeviceCompiler { static constexpr unsigned CxxStdCompiledWith() { @@ -82,7 +82,7 @@ namespace cling { /// and .cu.pch files. unsigned int m_Counter; - ///\brief Is true if all necessary files have been generated and clang and + ///\brief Is true if all necessary files have been generated and clang and /// cuda NVIDIA fatbinary are found. bool m_Init; @@ -186,7 +186,7 @@ namespace cling { /// ///\returns True, if all stages of generating fatbin runs right and a new /// fatbin file is written. - bool generateFatbinary(llvm::StringRef input, cling::Transaction * T); + bool generateFatbinary(const llvm::StringRef input, cling::Transaction * T); ///\brief Print some information of the IncrementalCUDADeviceCompiler to /// llvm::outs(). For Example the paths of the files and tools. diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C b/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C index 15cbffc0197a6..4ac6a2d9e41c8 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAKernelArgument.C @@ -6,7 +6,7 @@ // LICENSE.TXT for details. //------------------------------------------------------------------------------ -// The Test checks if a CUDA kernel works with a arguments and built-in +// The Test checks if a CUDA kernel works with a arguments and built-in // functions. // RUN: cat %s | %cling -x cuda -Xclang -verify 2>&1 | FileCheck %s // REQUIRES: cuda-runtime @@ -72,10 +72,7 @@ for(unsigned int i = 0; i < numberOfThreads; ++i){ cudaSum += hostOutput2[i]; } -// small workaround, to avoid compiler hint '=' -bool result = expectedSum == cudaSum +expectedSum == cudaSum // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true - -// expected-no-diagnostics .q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C index cc9e602cbda9e..c55b49e04dee3 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C @@ -47,21 +47,17 @@ cudaMemcpy(hostOutput, deviceOutput, sizeof(int)*numberOfThreads, cudaMemcpyDevi int expectedSum = (numberOfThreads*(numberOfThreads+1))/2; int cudaSum = 0; - + for(unsigned int i = 0; i < numberOfThreads; ++i){ cudaSum += hostOutput[i]; } //check, if elements was shifted -// small workaround, to avoid compiler hint '=' -bool result1 = hostOutput[0] == numberOfThreads +hostOutput[0] == numberOfThreads // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true -bool result2 = hostOutput[numberOfThreads-1] == numberOfThreads-1 +hostOutput[numberOfThreads-1] == numberOfThreads-1 // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true -bool result3 = expectedSum == cudaSum +expectedSum == cudaSum // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true - - -// expected-no-diagnostics .q \ No newline at end of file diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C index f82a7bade4fde..2b0a03a83b1d9 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C @@ -73,12 +73,9 @@ for(unsigned int i = 0; i < numberOfThreads; ++i){ cudaSum2 += hostOutput2[i]; } -// small workaround, to avoid compiler hint '=' -bool result1 = expectedSum1 == cudaSum1 +expectedSum1 == cudaSum1 // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true -bool result2 = expectedSum2 == cudaSum2 +expectedSum2 == cudaSum2 // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true - -// expected-no-diagnostics -.q +.q \ No newline at end of file From 3079c74d865493f89f588be8b220e64905935210 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Tue, 22 May 2018 12:59:04 +0200 Subject: [PATCH 244/344] Add function, to save faulty .cu files of CUDA device compiler. Before this commit, the CUDA device code Compiler class overwrited source code .cu files, if the translation get wrong. Now, it renames the faulty files, so you can check, which source code cause compiler errors. --- .../IncrementalCUDADeviceCompiler.cpp | 23 +++++++++++++++++++ .../IncrementalCUDADeviceCompiler.h | 5 ++++ 2 files changed, 28 insertions(+) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 4e3dbeebfe320..e4adbfb68b888 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -216,14 +216,17 @@ namespace cling { cuFile.close(); if(!generatePCH()){ + saveFaultyCUfile(); return false; } if(!generatePTX()){ + saveFaultyCUfile(); return false; } if(!generateFatbinaryInternal()){ + saveFaultyCUfile(); return false; } @@ -423,4 +426,24 @@ namespace cling { llvm::outs() << "\n"; } + std::error_code IncrementalCUDADeviceCompiler::saveFaultyCUfile(){ + unsigned int faultFileCounter = 0; + + // Construct the file path of the current .cu file without extension. + std::string originalCU = m_GenericFileName + std::to_string(m_Counter); + + // m_Counter will just increased, if the compiling get right. So we need a + // second counter, if two or more following files fails. + std::string faultyCU; + do{ + faultFileCounter += 1; + faultyCU = originalCU + "_fault" + std::to_string(faultFileCounter) + ".cu"; + } while(llvm::sys::fs::exists(faultyCU)); + + // orginial: cling[m_Counter].cu + // faulty file: cling[m_Counter]_fault[faultFileCounter].cu + return llvm::sys::fs::rename(originalCU + ".cu", faultyCU); + + } + } // end namespace cling diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index db866c3b1090b..cad6bda434974 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -159,6 +159,11 @@ namespace cling { cling::InvocationOptions & invocationOptions, int & optLevel, clang::codegenoptions::DebugInfoKind debugInfo); + ///\brief Save .cu file, if cuda device code compiler failed at translation. + /// + ///\returns The error code of the rename operation + std::error_code saveFaultyCUfile(); + public: ///\brief Constructor for IncrementalCUDADeviceCompiler /// From e463102ba8c32f61b2e0e509f21b5f4363954ad8 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Tue, 29 May 2018 16:53:24 +0200 Subject: [PATCH 245/344] Improvements for Pull Request #240 - little changes at comments and code style - try to use const in IncrementalCUDADeviceCompiler, where is possible - move CUDA device code compiler instance to IncrementalParser - change the members of CuArgs to const and adjust the setCuArgs method - use std::vector instead llvm::Smallvector to build argv for executeAndWait - improve the error messages of generatePCH(), generatePTX() and generateFatbinary() - replace m_Counter with a copy in IncrementalCUDADeviceCompiler to avoid involuntary changes --- interpreter/cling/CREDITS.txt | 2 +- .../include/cling/Interpreter/Interpreter.h | 7 - .../IncrementalCUDADeviceCompiler.cpp | 308 ++++++++++-------- .../IncrementalCUDADeviceCompiler.h | 111 +++---- .../lib/Interpreter/IncrementalParser.cpp | 35 +- .../cling/lib/Interpreter/IncrementalParser.h | 5 + .../cling/lib/Interpreter/Interpreter.cpp | 37 +-- .../test/CUDADeviceCode/CUDASharedMemory.C | 2 +- .../cling/test/CUDADeviceCode/CUDAStreams.C | 2 +- 9 files changed, 277 insertions(+), 232 deletions(-) diff --git a/interpreter/cling/CREDITS.txt b/interpreter/cling/CREDITS.txt index 75d121ad82404..c167dc9ffea89 100644 --- a/interpreter/cling/CREDITS.txt +++ b/interpreter/cling/CREDITS.txt @@ -60,4 +60,4 @@ D: Main developer of cling. N: Simeon Ehrig E: s.ehrig@hzdr.de -D: CUDA runtime API support +D: cling CUDA runtime support diff --git a/interpreter/cling/include/cling/Interpreter/Interpreter.h b/interpreter/cling/include/cling/Interpreter/Interpreter.h index cdaaf1ef6375b..e08c78b72a6a0 100644 --- a/interpreter/cling/include/cling/Interpreter/Interpreter.h +++ b/interpreter/cling/include/cling/Interpreter/Interpreter.h @@ -70,7 +70,6 @@ namespace cling { class LookupHelper; class Value; class Transaction; - class IncrementalCUDADeviceCompiler; ///\brief Class that implements the interpreter-like behavior. It manages the /// incremental compilation. @@ -159,10 +158,6 @@ namespace cling { /// std::unique_ptr m_LookupHelper; - ///\brief Cling's worker class implementing the compilation of CUDA device code - /// - std::unique_ptr m_CUDACompiler; - ///\brief Cache of compiled destructors wrappers. std::unordered_map m_DtorWrappers; @@ -348,8 +343,6 @@ namespace cling { LookupHelper& getLookupHelper() const { return *m_LookupHelper; } - IncrementalCUDADeviceCompiler& getCUDADeviceCompiler() { return *m_CUDACompiler; } - const clang::Parser& getParser() const; clang::Parser& getParser(); diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index e4adbfb68b888..d7437c5ba62af 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -1,6 +1,6 @@ //--------------------------------------------------------------------*- C++ -*- // CLING - the C++ LLVM-based InterpreterG :) -// author: Simeon Ehrig +// author: Simeon Ehrig // // This file is dual-licensed: you can choose to license it under the University // of Illinois Open Source License or the GNU Lesser General Public License. See @@ -27,70 +27,87 @@ #include +// The clang nvptx jit has an growing AST-Tree. At runtime, continuously new +// statements will append to the AST. To improve the compiletime, the existing +// AST will save as PCH-file. The new statements will append via source code +// files. A bug in clang avoids, that more than 4 statements can append to the +// PCH. If the flag is true, it improves the compiletime but it crash after the +// fifth iteration. https://bugs.llvm.org/show_bug.cgi?id=37167 #define PCHMODE 0 namespace cling { IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler( - std::string filePath, - int optLevel, - cling::InvocationOptions & invocationOptions, - clang::CompilerInstance * CI) - : m_Counter(0), - m_FilePath(filePath){ - if(CI->getCodeGenOpts().CudaGpuBinaryFileNames.empty()){ + const std::string & filePath, + const int optLevel, + const cling::InvocationOptions & invocationOptions, + const clang::CompilerInstance & CI) + : m_FilePath(filePath), + m_FatbinFilePath(CI.getCodeGenOpts().CudaGpuBinaryFileNames.empty() + ? "" : CI.getCodeGenOpts().CudaGpuBinaryFileNames[0]), + m_DummyCUPath(m_FilePath + "dummy.cu"), + m_PTXFilePath(m_FilePath + "cling.ptx"), + m_GenericFileName(m_FilePath + "cling") { + if(m_FatbinFilePath.empty()){ llvm::errs() << "Error: CudaGpuBinaryFileNames can't be empty\n"; - m_Init = false; - } else { - m_FatbinFilePath = CI->getCodeGenOpts().CudaGpuBinaryFileNames[0]; - m_Init = true; + return; } - m_Init = m_Init && generateHelperFiles(); - m_Init = m_Init && searchCompilingTools(invocationOptions); - setCuArgs(CI->getLangOpts(), invocationOptions, optLevel, - CI->getCodeGenOpts().getDebugInfo()); + if (!generateHelperFiles()) + return; + if (!findToolchain(invocationOptions)) + return; + setCuArgs(CI.getLangOpts(), invocationOptions, optLevel, + CI.getCodeGenOpts().getDebugInfo()); - m_HeaderSearchOptions = CI->getHeaderSearchOptsPtr(); + m_HeaderSearchOptions = CI.getHeaderSearchOptsPtr(); + + m_Init = true; } void IncrementalCUDADeviceCompiler::setCuArgs( - clang::LangOptions & langOpts, - cling::InvocationOptions & invocationOptions, - int & optLevel, clang::codegenoptions::DebugInfoKind debugInfo){ + const clang::LangOptions & langOpts, + const cling::InvocationOptions & invocationOptions, + const int intprOptLevel, + const clang::codegenoptions::DebugInfoKind debugInfo){ + + std::string cppStdVersion; // Set the c++ standard. Just one condition is possible. if(langOpts.CPlusPlus11) - m_CuArgs.cppStdVersion = "-std=c++11"; + cppStdVersion = "-std=c++11"; if(langOpts.CPlusPlus14) - m_CuArgs.cppStdVersion = "-std=c++14"; + cppStdVersion = "-std=c++14"; if(langOpts.CPlusPlus1z) - m_CuArgs.cppStdVersion = "-std=c++1z"; + cppStdVersion = "-std=c++1z"; if(langOpts.CPlusPlus2a) - m_CuArgs.cppStdVersion = "-std=c++2a"; + cppStdVersion = "-std=c++2a"; - m_CuArgs.optLevel = "-O" + std::to_string(optLevel); + const std::string optLevel = "-O" + std::to_string(intprOptLevel); + + std::string ptxSmVersion = "--cuda-gpu-arch=sm_20"; + std::string fatbinSmVersion = "--image=profile=compute_20"; if(!invocationOptions.CompilerOpts.CUDAGpuArch.empty()){ - m_CuArgs.ptxSmVersion = "--cuda-gpu-arch=" + ptxSmVersion = "--cuda-gpu-arch=" + invocationOptions.CompilerOpts.CUDAGpuArch; - m_CuArgs.fatbinSmVersion = "--image=profile=compute_" + fatbinSmVersion = "--image=profile=compute_" + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3); } //The generating of the fatbin file is depend of the architecture of the host. llvm::Triple hostTarget(llvm::sys::getDefaultTargetTriple()); - m_CuArgs.fatbinArch = hostTarget.isArch64Bit() ? "-64" : "-32"; + const std::string fatbinArch = hostTarget.isArch64Bit() ? "-64" : "-32"; - m_CuArgs.verbose = invocationOptions.Verbose(); // FIXME : Should not reduce the fine granulated debug options to a simple. // -g + bool debug = false; if(debugInfo == clang::codegenoptions::DebugLineTablesOnly || debugInfo == clang::codegenoptions::LimitedDebugInfo || debugInfo == clang::codegenoptions::FullDebugInfo) - m_CuArgs.debug = true; + debug = true; - // FIXME : Cling has problems to detect this arguments. + // FIXME : Cling has problems to detect these arguments. /* if(langOpts.CUDADeviceFlushDenormalsToZero) m_CuArgs.additionalPtxOpt.push_back("-fcuda-flush-denormals-to-zero"); @@ -99,14 +116,17 @@ namespace cling { if(langOpts.CUDAAllowVariadicFunctions) m_CuArgs.additionalPtxOpt.push_back("-fcuda-allow-variadic-functions"); */ + std::vector additionalPtxOpt; - m_CuArgs.fatbinaryOpt = invocationOptions.CompilerOpts.CUDAFatbinaryArgs; + m_CuArgs.reset(new IncrementalCUDADeviceCompiler::CUDACompilerArgs( + cppStdVersion, optLevel, ptxSmVersion, fatbinSmVersion, fatbinArch, + invocationOptions.Verbose(), debug, additionalPtxOpt, + invocationOptions.CompilerOpts.CUDAFatbinaryArgs)); } bool IncrementalCUDADeviceCompiler::generateHelperFiles(){ // Generate an empty dummy.cu file. - m_DummyCUPath = m_FilePath + "dummy.cu"; std::error_code EC; llvm::raw_fd_ostream dummyCU(m_DummyCUPath, EC, llvm::sys::fs::F_Text); if(EC){ @@ -116,13 +136,11 @@ namespace cling { } dummyCU.close(); - m_PTXFilePath = m_FilePath + "cling.ptx"; - m_GenericFileName = m_FilePath + "cling"; return true; } - bool IncrementalCUDADeviceCompiler::searchCompilingTools( - cling::InvocationOptions & invocationOptions){ + bool IncrementalCUDADeviceCompiler::findToolchain( + const cling::InvocationOptions & invocationOptions){ // Search after clang in the folder of cling. llvm::SmallString<128> cwd; // get folder of the cling executable to find the clang which is contained @@ -164,28 +182,35 @@ namespace cling { return true; } - void IncrementalCUDADeviceCompiler::addHeaders( + void IncrementalCUDADeviceCompiler::addHeaderSearchPathFlags( llvm::SmallVectorImpl & argv){ for(clang::HeaderSearchOptions::Entry e : m_HeaderSearchOptions->UserEntries){ + if(e.Group == clang::frontend::IncludeDirGroup::Quoted){ + argv.push_back("-iquote"); + argv.push_back(e.Path); + } + if(e.Group == clang::frontend::IncludeDirGroup::Angled) argv.push_back("-I" + e.Path); } } - bool IncrementalCUDADeviceCompiler::generateFatbinary(const llvm::StringRef input, - cling::Transaction * T){ + bool IncrementalCUDADeviceCompiler::compileDeviceCode(const llvm::StringRef input, + const cling::Transaction * const T){ if(!m_Init){ llvm::errs() << "Error: Initializiation of CUDA Device Code Compiler failed\n"; return false; } + const unsigned int counter = getCounterCopy(); + // Write the (CUDA) C++ source code to a file. std::error_code EC; - llvm::raw_fd_ostream cuFile(m_GenericFileName + std::to_string(m_Counter) + llvm::raw_fd_ostream cuFile(m_GenericFileName + std::to_string(counter) + ".cu", EC, llvm::sys::fs::F_Text); if (EC) { llvm::errs() << "Could not open " << m_GenericFileName - + std::to_string(m_Counter) << ".cu: " << EC.message() << "\n"; + + std::to_string(counter) << ".cu: " << EC.message() << "\n"; return false; } @@ -215,23 +240,13 @@ namespace cling { cuFile.close(); - if(!generatePCH()){ - saveFaultyCUfile(); - return false; - } - - if(!generatePTX()){ - saveFaultyCUfile(); - return false; - } - - if(!generateFatbinaryInternal()){ + if(!generatePCH() || !generatePTX() || !generateFatbinary()){ saveFaultyCUfile(); return false; } #if PCHMODE == 0 - llvm::sys::fs::remove(m_GenericFileName + std::to_string(m_Counter) + llvm::sys::fs::remove(m_GenericFileName + std::to_string(counter) +".cu.pch"); #endif @@ -240,72 +255,76 @@ namespace cling { } bool IncrementalCUDADeviceCompiler::generatePCH() { + const unsigned int counter = getCounterCopy(); + // clang++ -std=c++xx -Ox -S -Xclang -emit-pch ${clingHeaders} cling[0-9].cu // -D__CLING__ -o cling[0-9].cu.pch [-include-pch cling[0-9].cu.pch] // --cuda-gpu-arch=sm_[1-7][0-9] -pthread --cuda-device-only [-v] [-g] - // ${m_CuArgs.additionalPtxOpt} - llvm::SmallVector argv; + // ${m_CuArgs->additionalPtxOpt} + llvm::SmallVector argv; // First argument have to be the program name. - argv.push_back(m_ClangPath.c_str()); + argv.push_back(m_ClangPath); - argv.push_back(m_CuArgs.cppStdVersion.c_str()); - argv.push_back(m_CuArgs.optLevel.c_str()); + argv.push_back(m_CuArgs->cppStdVersion); + argv.push_back(m_CuArgs->optLevel); argv.push_back("-S"); argv.push_back("-Xclang"); argv.push_back("-emit-pch"); - llvm::SmallVector headers; - addHeaders(headers); - for(std::string & s : headers) - argv.push_back(s.c_str()); + addHeaderSearchPathFlags(argv); // Is necessary for the cling runtime header. argv.push_back("-D__CLING__"); - std::string cuFilePath = m_GenericFileName + std::to_string(m_Counter) - + ".cu"; - argv.push_back(cuFilePath.c_str()); + argv.push_back(m_GenericFileName + std::to_string(counter) + ".cu"); argv.push_back("-o"); - std::string outputname = m_GenericFileName + std::to_string(m_Counter) - +".cu.pch"; - argv.push_back(outputname.c_str()); + argv.push_back(m_GenericFileName + std::to_string(counter) +".cu.pch"); // If a previos file exist, include it. #if PCHMODE == 1 - std::string previousFile; - if(m_Counter){ - previousFile = m_GenericFileName + std::to_string(m_Counter-1) +".cu.pch"; + if(counter){ argv.push_back("-include-pch"); - argv.push_back(previousFile.c_str()); + argv.push_back(m_GenericFileName + std::to_string(counter-1) +".cu.pch"); } #else - std::vector previousFiles; - if(m_Counter){ - for(unsigned int i = 0; i <= m_Counter-1; ++i){ - previousFiles.push_back(m_GenericFileName + std::to_string(i) +".cu"); + if(counter){ + for(unsigned int i = 0; i <= counter-1; ++i){ argv.push_back("-include"); - argv.push_back(previousFiles[i].c_str()); + argv.push_back(m_GenericFileName + std::to_string(i) +".cu"); } } #endif - argv.push_back(m_CuArgs.ptxSmVersion.c_str()); + argv.push_back(m_CuArgs->ptxSmVersion); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); - if(m_CuArgs.verbose) + if(m_CuArgs->verbose) argv.push_back("-v"); - if(m_CuArgs.debug) + if(m_CuArgs->debug) argv.push_back("-g"); - for(std::string & s : m_CuArgs.additionalPtxOpt){ + for(const std::string & s : m_CuArgs->additionalPtxOpt){ argv.push_back(s.c_str()); } + std::vector argvChar; + argvChar.resize(argv.size()+1); + + std::transform(argv.begin(), argv.end(), argvChar.begin(), + [&](const std::string & s) + { + return s.c_str(); + } + ); + // Argv list have to finish with a nullptr. - argv.push_back(nullptr); + argvChar.push_back(nullptr); std::string executionError; - int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argv.data(), + int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argvChar.data(), nullptr, {}, 0, 0, &executionError); if(res){ - llvm::errs() << "error at launching clang instance to generate PCH file\n" - << executionError << "\n"; + llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generatePCH(): error compiling PCH file:\n" + << m_ClangPath; + for(const char * c : argvChar) + llvm::errs() << " " << c; + llvm::errs() << '\n' << executionError << "\n"; return false; } @@ -313,80 +332,106 @@ namespace cling { } bool cling::IncrementalCUDADeviceCompiler::generatePTX() { + const unsigned int counter = getCounterCopy(); + // clang++ -std=c++xx -Ox -S dummy.cu -o cling.ptx -include-pch // cling[0-9].cu.pch --cuda-gpu-arch=sm_xx -pthread --cuda-device-only [-v] - // [-g] ${m_CuArgs.additionalPtxOpt} - llvm::SmallVector argv; + // [-g] ${m_CuArgs->additionalPtxOpt} + llvm::SmallVector argv; // First argument have to be the program name. - argv.push_back(m_ClangPath.c_str()); + argv.push_back(m_ClangPath); - argv.push_back(m_CuArgs.cppStdVersion.c_str()); - argv.push_back(m_CuArgs.optLevel.c_str()); + argv.push_back(m_CuArgs->cppStdVersion); + argv.push_back(m_CuArgs->optLevel); argv.push_back("-S"); - argv.push_back(m_DummyCUPath.c_str()); + argv.push_back(m_DummyCUPath); argv.push_back("-o"); - argv.push_back(m_PTXFilePath.c_str()); + argv.push_back(m_PTXFilePath); argv.push_back("-include-pch"); - std::string pchFile = m_GenericFileName + std::to_string(m_Counter) +".cu.pch"; - argv.push_back(pchFile.c_str()); - argv.push_back(m_CuArgs.ptxSmVersion.c_str()); + argv.push_back(m_GenericFileName + std::to_string(counter) +".cu.pch"); + argv.push_back(m_CuArgs->ptxSmVersion); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); - if(m_CuArgs.verbose) + if(m_CuArgs->verbose) argv.push_back("-v"); - if(m_CuArgs.debug) + if(m_CuArgs->debug) argv.push_back("-g"); - for(std::string & s : m_CuArgs.additionalPtxOpt){ + for(const std::string & s : m_CuArgs->additionalPtxOpt){ argv.push_back(s.c_str()); } + std::vector argvChar; + argvChar.resize(argv.size()+1); + + std::transform(argv.begin(), argv.end(), argvChar.begin(), + [&](const std::string & s) + { + return s.c_str(); + } + ); + // Argv list have to finish with a nullptr. - argv.push_back(nullptr); + argvChar.push_back(nullptr); std::string executionError; - int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argv.data(), + int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argvChar.data(), nullptr, {}, 0, 0, &executionError); if(res){ - llvm::errs() << "error at launching clang instance to generate ptx code" - << "\n" << executionError << "\n"; + llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generatePTX(): error compiling PCH file:\n" + << m_ClangPath; + for(const char * c : argvChar) + llvm::errs() << " " << c; + llvm::errs() << '\n' << executionError << "\n"; return false; } return true; } - bool IncrementalCUDADeviceCompiler::generateFatbinaryInternal() { + bool IncrementalCUDADeviceCompiler::generateFatbinary() { // fatbinary --cuda [-32 | -64] --create cling.fatbin - // --image=profile=compute_xx,file=cling.ptx [-g] ${m_CuArgs.fatbinaryOpt} - llvm::SmallVector argv; + // --image=profile=compute_xx,file=cling.ptx [-g] ${m_CuArgs->fatbinaryOpt} + llvm::SmallVector argv; // First argument have to be the program name. - argv.push_back(m_FatbinaryPath.c_str()); + argv.push_back(m_FatbinaryPath); argv.push_back("--cuda"); - argv.push_back(m_CuArgs.fatbinArch.c_str()); + argv.push_back(m_CuArgs->fatbinArch); argv.push_back("--create"); - argv.push_back(m_FatbinFilePath.c_str()); - std::string ptxCode = m_CuArgs.fatbinSmVersion - + ",file=" + m_PTXFilePath; - argv.push_back(ptxCode.c_str()); - if(m_CuArgs.debug) + argv.push_back(m_FatbinFilePath); + argv.push_back(m_CuArgs->fatbinSmVersion + ",file=" + m_PTXFilePath); + if(m_CuArgs->debug) argv.push_back("-g"); - for(std::string & s : m_CuArgs.fatbinaryOpt){ + for(const std::string & s : m_CuArgs->fatbinaryOpt){ argv.push_back(s.c_str()); } + std::vector argvChar; + argvChar.resize(argv.size()+1); + + std::transform(argv.begin(), argv.end(), argvChar.begin(), + [&](const std::string & s) + { + return s.c_str(); + } + ); + // Argv list have to finish with a nullptr. - argv.push_back(nullptr); + argvChar.push_back(nullptr); std::string executionError; - int res = llvm::sys::ExecuteAndWait(m_FatbinaryPath.c_str(), argv.data(), + int res = llvm::sys::ExecuteAndWait(m_FatbinaryPath.c_str(), argvChar.data(), nullptr, {}, 0, 0, &executionError); if(res){ - llvm::errs() << "error at launching fatbin" << "\n" << executionError << "\n"; + llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generateFatbinary(): error compiling PCH file:\n" + << m_ClangPath; + for(const char * c : argvChar) + llvm::errs() << " " << c; + llvm::errs() << '\n' << executionError << "\n"; return false; } @@ -394,7 +439,7 @@ namespace cling { } void IncrementalCUDADeviceCompiler::dump(){ - llvm::outs() << "current counter: " << m_Counter << "\n" << + llvm::outs() << "current counter: " << getCounterCopy() << "\n" << "CUDA device compiler is valid: " << m_Init << "\n" << "file path: " << m_FilePath << "\n" << "fatbin file path: " << m_FatbinFilePath << "\n" << @@ -404,35 +449,36 @@ namespace cling { << "[0-9]*.cu{.pch}\n" << "clang++ path: " << m_ClangPath << "\n" << "nvidia fatbinary path: " << m_FatbinaryPath << "\n" << - "m_CuArgs c++ standard: " << m_CuArgs.cppStdVersion << "\n" << - "m_CuArgs opt level: " << m_CuArgs.optLevel << "\n" << + "m_CuArgs c++ standard: " << m_CuArgs->cppStdVersion << "\n" << + "m_CuArgs opt level: " << m_CuArgs->optLevel << "\n" << "m_CuArgs SM level for clang nvptx: " - << m_CuArgs.ptxSmVersion << "\n" << + << m_CuArgs->ptxSmVersion << "\n" << "m_CuArgs SM level for fatbinary: " - << m_CuArgs.fatbinSmVersion << "\n" << + << m_CuArgs->fatbinSmVersion << "\n" << "m_CuArgs fatbinary architectur: " - << m_CuArgs.fatbinArch << "\n" << - "m_CuArgs verbose: " << m_CuArgs.verbose << "\n" << - "m_CuArgs debug: " << m_CuArgs.debug << "\n"; + << m_CuArgs->fatbinArch << "\n" << + "m_CuArgs verbose: " << m_CuArgs->verbose << "\n" << + "m_CuArgs debug: " << m_CuArgs->debug << "\n"; llvm::outs() << "m_CuArgs additional clang nvptx options: "; - for(std::string & s : m_CuArgs.additionalPtxOpt){ + for(const std::string & s : m_CuArgs->additionalPtxOpt){ llvm::outs() << s << " "; } llvm::outs() << "\n"; llvm::outs() << "m_CuArgs additional fatbinary options: "; - for(std::string & s : m_CuArgs.fatbinaryOpt){ + for(const std::string & s : m_CuArgs->fatbinaryOpt){ llvm::outs() << s << " "; } llvm::outs() << "\n"; } std::error_code IncrementalCUDADeviceCompiler::saveFaultyCUfile(){ + const unsigned int counter = getCounterCopy(); unsigned int faultFileCounter = 0; // Construct the file path of the current .cu file without extension. - std::string originalCU = m_GenericFileName + std::to_string(m_Counter); + std::string originalCU = m_GenericFileName + std::to_string(counter); - // m_Counter will just increased, if the compiling get right. So we need a + // counter (= m_Counter) will just increased, if the compiling get right. So we need a // second counter, if two or more following files fails. std::string faultyCU; do{ @@ -440,8 +486,8 @@ namespace cling { faultyCU = originalCU + "_fault" + std::to_string(faultFileCounter) + ".cu"; } while(llvm::sys::fs::exists(faultyCU)); - // orginial: cling[m_Counter].cu - // faulty file: cling[m_Counter]_fault[faultFileCounter].cu + // orginial: cling[counter].cu + // faulty file: cling[counter]_fault[faultFileCounter].cu return llvm::sys::fs::rename(originalCU + ".cu", faultyCU); } diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index cad6bda434974..503542a9e8fe5 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -1,6 +1,6 @@ //--------------------------------------------------------------------*- C++ -*- // CLING - the C++ LLVM-based InterpreterG :) -// author: Simeon Ehrig +// author: Simeon Ehrig // // This file is dual-licensed: you can choose to license it under the University // of Illinois Open Source License or the GNU Lesser General Public License. See @@ -17,18 +17,18 @@ #include namespace cling{ - class InvocationOptions; - class Transaction; + class InvocationOptions; + class Transaction; } namespace clang { - class CompilerInstance; - class HeaderSearchOptions; - class LangOptions; + class CompilerInstance; + class HeaderSearchOptions; + class LangOptions; } namespace llvm { - class StringRef; + class StringRef; } namespace cling { @@ -39,65 +39,59 @@ namespace cling { /// class IncrementalCUDADeviceCompiler { - static constexpr unsigned CxxStdCompiledWith() { - // The value of __cplusplus in GCC < 5.0 (e.g. 4.9.3) when - // either -std=c++1y or -std=c++14 is specified is 201300L, which fails - // the test for C++14 or more (201402L) as previously specified. - // I would claim that the check should be relaxed to: -#if __cplusplus > 201402L - return 17; -#elif __cplusplus > 201103L || (defined(LLVM_ON_WIN32) && _MSC_VER >= 1900) - return 14; -#elif __cplusplus >= 201103L - return 11; -#else -#error "Unknown __cplusplus version" -#endif - } - ///\brief Contains the arguments for the cling nvptx and the nvidia - /// fatbinary tool. The arguments are static and will set at the constructor - /// of IncrementalCUDADeviceCompiler. + /// fatbinary tool. struct CUDACompilerArgs { - std::string cppStdVersion = "-std=c++" + std::to_string(CxxStdCompiledWith()); - std::string optLevel = "-O0"; - std::string ptxSmVersion = "--cuda-gpu-arch=sm_20"; - std::string fatbinSmVersion = "--image=profile=compute_20"; + const std::string cppStdVersion; + const std::string optLevel; + const std::string ptxSmVersion; + const std::string fatbinSmVersion; ///\brief Argument for the fatbinary tool, which is depend, if the OS is /// 32 bit or 64 bit. - std::string fatbinArch = "-32"; + const std::string fatbinArch; ///\brief True, if the flag -v is set. - bool verbose = false; + const bool verbose; ///\brief True, if the flag -g is set. - bool debug = false; + const bool debug; ///\brief A list Arguments, which will passed to the clang nvptx. - std::vector additionalPtxOpt; + const std::vector additionalPtxOpt; ///\brief A list Arguments, which will passed to the fatbinary tool. - std::vector fatbinaryOpt; + const std::vector fatbinaryOpt; + + CUDACompilerArgs(std::string cppStdVersion, std::string optLevel, + std::string ptxSmVersion, std::string fatbinSmVersion, + std::string fatbinArch, bool verbose, bool debug, + std::vector additionalPtxOpt, + std::vector fatbinaryOpt) + : cppStdVersion(cppStdVersion), optLevel(optLevel), + ptxSmVersion(ptxSmVersion), fatbinSmVersion(fatbinSmVersion), + fatbinArch(fatbinArch), verbose(verbose), debug(debug), + additionalPtxOpt(additionalPtxOpt), fatbinaryOpt(fatbinaryOpt) {} + }; - CUDACompilerArgs m_CuArgs; + std::unique_ptr m_CuArgs; ///\brief The counter responsible to generate a chain of .cu source files /// and .cu.pch files. - unsigned int m_Counter; + unsigned int m_Counter = 0; ///\brief Is true if all necessary files have been generated and clang and /// cuda NVIDIA fatbinary are found. - bool m_Init; + bool m_Init = false; ///\brief Path to the folder, where all files will put in. Ordinary the tmp /// folder. Have to end with a separator. Can be empty. - std::string m_FilePath; + const std::string m_FilePath; ///\brief Path to the fatbin file, which will used by the CUDACodeGen. - std::string m_FatbinFilePath; + const std::string m_FatbinFilePath; ///\brief Path to a empty dummy.cu file. The file is necessary to generate /// PTX code from the pch files. - std::string m_DummyCUPath; + const std::string m_DummyCUPath; ///\brief Path to the PTX file. Will be reused for every PTX generation. - std::string m_PTXFilePath; + const std::string m_PTXFilePath; ///\brief Will be used to generate .cu and .cu.pch files. - std::string m_GenericFileName; + const std::string m_GenericFileName; ///\brief Path to the clang++ compiler, which will used to compile the pch /// files and the PTX code. Should be in same folder, as the cling. @@ -109,6 +103,11 @@ namespace cling { /// std::shared_ptr m_HeaderSearchOptions; + ///\brief get copy of m_Counter + /// + ///\returns copy of m_Counter + unsigned int getCounterCopy(){ return m_Counter;} + ///\brief Generate the dummy.cu file and set the paths of m_PTXFilePath and /// m_GenericFileName. /// @@ -122,12 +121,12 @@ namespace cling { /// toolkit /// ///\returns True, whether clang and fatbinary was found. - bool searchCompilingTools(cling::InvocationOptions & invocationOptions); + bool findToolchain(const cling::InvocationOptions & invocationOptions); ///\brief Add the include paths from the interpreter runtime to a argument list. /// ///\param [in,out] argv - The include commands will append to the argv vector. - void addHeaders(llvm::SmallVectorImpl & argv); + void addHeaderSearchPathFlags(llvm::SmallVectorImpl & argv); ///\brief Start an clang compiler with nvptx backend. Read the content of /// cling.cu and compile it to a new PCH file. If predecessor PCH file is @@ -147,17 +146,18 @@ namespace cling { /// m_FatbinFilePath. /// ///\returns True, if the fatbinary tool returns 0. - bool generateFatbinaryInternal(); + bool generateFatbinary(); ///\brief The function set the values of m_CuArgs. /// ///\param [in] langOpts - The LangOptions of the CompilerInstance. ///\param [in] invocationOptions - The invocationOptions of the interpreter. - ///\param [in] optLevel - The optimization level of the interpreter. + ///\param [in] intprOptLevel - The optimization level of the interpreter. ///\param [in] debugInfo - The debugInfo of the CompilerInstance. - void setCuArgs(clang::LangOptions & langOpts, - cling::InvocationOptions & invocationOptions, int & optLevel, - clang::codegenoptions::DebugInfoKind debugInfo); + void setCuArgs(const clang::LangOptions & langOpts, + const cling::InvocationOptions & invocationOptions, + const int intprOptLevel, + const clang::codegenoptions::DebugInfoKind debugInfo); ///\brief Save .cu file, if cuda device code compiler failed at translation. /// @@ -176,14 +176,14 @@ namespace cling { /// clang and the NVIDIA tool fatbinary. ///\param [in] CompilerInstance - Will be used for m_CuArgs and the include /// path handling. - IncrementalCUDADeviceCompiler(std::string filePath, - int optLevel, - cling::InvocationOptions & invocationOptions, - clang::CompilerInstance * CI); + IncrementalCUDADeviceCompiler(const std::string & filePath, + const int optLevel, + const cling::InvocationOptions & invocationOptions, + const clang::CompilerInstance & CI); ///\brief Generate an new fatbin file with the path in CudaGpuBinaryFileNames. /// It will add the content of input, to the existing source code, which was - /// passed to generateFatbinary, before. + /// passed to compileDeviceCode, before. /// ///\param [in] input - New source code. The function can select, if code /// is relevant for the device side. Have to be valid CUDA C++ code. @@ -191,7 +191,8 @@ namespace cling { /// ///\returns True, if all stages of generating fatbin runs right and a new /// fatbin file is written. - bool generateFatbinary(const llvm::StringRef input, cling::Transaction * T); + bool compileDeviceCode(const llvm::StringRef input, + const cling::Transaction * const T); ///\brief Print some information of the IncrementalCUDADeviceCompiler to /// llvm::outs(). For Example the paths of the files and tools. diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp index c07f446cc1698..56692341b5a70 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.cpp @@ -45,6 +45,8 @@ #include "clang/Sema/Sema.h" #include "clang/Sema/SemaDiagnostic.h" #include "clang/Serialization/ASTWriter.h" +#include "clang/Serialization/ASTReader.h" +#include "llvm/Support/Path.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" @@ -118,7 +120,7 @@ namespace { m_PrevClient.EndSourceFile(); SyncDiagCountWithTarget(); } - + void finish() override { m_PrevClient.finish(); SyncDiagCountWithTarget(); @@ -213,6 +215,34 @@ namespace cling { m_DiagConsumer.reset(new FilteringDiagConsumer(Diag, false)); initializeVirtualFile(); + + if(m_CI->getFrontendOpts().ProgramAction != frontend::ParseSyntaxOnly && + m_Interpreter->getOptions().CompilerOpts.CUDA){ + // Create temporary folder for all files, which the CUDA device compiler + // will generate. + llvm::SmallString<256> TmpPath; + llvm::StringRef sep = llvm::sys::path::get_separator().data(); + llvm::sys::path::system_temp_directory(false, TmpPath); + TmpPath.append(sep.data()); + TmpPath.append("cling-%%%%"); + TmpPath.append(sep.data()); + + llvm::SmallString<256> TmpFolder; + llvm::sys::fs::createUniqueFile(TmpPath.c_str(), TmpFolder); + llvm::sys::fs::create_directory(TmpFolder); + + // The CUDA fatbin file is the connection beetween the CUDA device + // compiler and the CodeGen of cling. The file will every time reused. + if(getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.empty()) + getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.push_back( + std::string(TmpFolder.c_str()) + "cling.fatbin"); + + m_CUDACompiler.reset( + new IncrementalCUDADeviceCompiler(TmpFolder.c_str(), + m_CI->getCodeGenOpts().OptimizationLevel, + m_Interpreter->getOptions(), + *m_CI)); + } } bool @@ -794,8 +824,7 @@ namespace cling { return kSuccessWithWarnings; if(!m_Interpreter->isInSyntaxOnlyMode() && m_CI->getLangOpts().CUDA ) - m_Interpreter->getCUDADeviceCompiler() - .generateFatbinary(input, m_Consumer->getTransaction()); + m_CUDACompiler->compileDeviceCode(input, m_Consumer->getTransaction()); return kSuccess; } diff --git a/interpreter/cling/lib/Interpreter/IncrementalParser.h b/interpreter/cling/lib/Interpreter/IncrementalParser.h index 0d76c32a2961c..903c8b6a24a8f 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalParser.h +++ b/interpreter/cling/lib/Interpreter/IncrementalParser.h @@ -43,6 +43,7 @@ namespace cling { class Transaction; class TransactionPool; class ASTTransformer; + class IncrementalCUDADeviceCompiler; ///\brief Responsible for the incremental parsing and compilation of input. /// @@ -94,6 +95,10 @@ namespace cling { /// std::unique_ptr m_DiagConsumer; + ///\brief Cling's worker class implementing the compilation of CUDA device code + /// + std::unique_ptr m_CUDACompiler; + public: enum EParseResult { kSuccess, diff --git a/interpreter/cling/lib/Interpreter/Interpreter.cpp b/interpreter/cling/lib/Interpreter/Interpreter.cpp index dbbe04da840ef..192fd92188029 100644 --- a/interpreter/cling/lib/Interpreter/Interpreter.cpp +++ b/interpreter/cling/lib/Interpreter/Interpreter.cpp @@ -20,7 +20,6 @@ #include "ForwardDeclPrinter.h" #include "IncrementalExecutor.h" #include "IncrementalParser.h" -#include "IncrementalCUDADeviceCompiler.h" #include "MultiplexInterpreterCallbacks.h" #include "TransactionUnloader.h" @@ -57,7 +56,6 @@ #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" -#include "llvm/ADT/SmallVector.h" #include "llvm/Support/Path.h" #include @@ -167,7 +165,7 @@ namespace cling { m_DyLibManager && m_LookupHelper && (isInSyntaxOnlyMode() || m_Executor); } - + namespace internal { void symbol_requester(); } const char* Interpreter::getVersion() { @@ -238,33 +236,6 @@ namespace cling { return; } - if(!isInSyntaxOnlyMode() && m_Opts.CompilerOpts.CUDA){ - // Create temporary folder for all files, which the CUDA device compiler - // will generate. - llvm::SmallString<256> TmpPath; - llvm::StringRef sep = llvm::sys::path::get_separator().data(); - llvm::sys::path::system_temp_directory(false, TmpPath); - TmpPath.append(sep.data()); - TmpPath.append("cling-%%%%"); - TmpPath.append(sep.data()); - - llvm::SmallString<256> TmpFolder; - llvm::sys::fs::createUniqueFile(TmpPath.c_str(), TmpFolder); - llvm::sys::fs::create_directory(TmpFolder); - - // The CUDA fatbin file is the connection beetween the CUDA device - // compiler and the CodeGen of cling. The file will every time reused. - if(getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.empty()) - getCI()->getCodeGenOpts().CudaGpuBinaryFileNames.push_back( - std::string(TmpFolder.c_str()) + "cling.fatbin"); - - m_CUDACompiler.reset( - new IncrementalCUDADeviceCompiler(TmpFolder.c_str(), - m_OptLevel, - m_Opts, - getCI())); - } - // Tell the diagnostic client that we are entering file parsing mode. DiagnosticConsumer& DClient = getCI()->getDiagnosticClient(); DClient.BeginSourceFile(getCI()->getLangOpts(), &PP); @@ -702,7 +673,7 @@ namespace cling { } return Value; } - + ///\brief Maybe transform the input line to implement cint command line /// semantics (declarations are global) and compile to produce a module. /// @@ -898,11 +869,11 @@ namespace cling { // Ignore diagnostics when we tab complete. // This is because we get redefinition errors due to the import of the decls. clang::IgnoringDiagConsumer* ignoringDiagConsumer = - new clang::IgnoringDiagConsumer(); + new clang::IgnoringDiagConsumer(); childSemaRef.getDiagnostics().setClient(ignoringDiagConsumer, true); DiagnosticsEngine& parentDiagnostics = this->getCI()->getSema().getDiagnostics(); - std::unique_ptr ownerDiagConsumer = + std::unique_ptr ownerDiagConsumer = parentDiagnostics.takeClient(); auto clientDiagConsumer = parentDiagnostics.getClient(); parentDiagnostics.setClient(ignoringDiagConsumer, /*owns*/ false); diff --git a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C index c55b49e04dee3..19bcf18202ce0 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDASharedMemory.C @@ -60,4 +60,4 @@ hostOutput[numberOfThreads-1] == numberOfThreads-1 // expected-note {{use '=' to expectedSum == cudaSum // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true -.q \ No newline at end of file +.q diff --git a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C index 2b0a03a83b1d9..1b9cd46667999 100644 --- a/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C +++ b/interpreter/cling/test/CUDADeviceCode/CUDAStreams.C @@ -78,4 +78,4 @@ expectedSum1 == cudaSum1 // expected-note {{use '=' to turn this equality compar expectedSum2 == cudaSum2 // expected-note {{use '=' to turn this equality comparison into an assignment}} // CHECK: (bool) true -.q \ No newline at end of file +.q From 1e07af823a14e69b01cf4aa0e0a15e6eb03b0404 Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Mon, 11 Jun 2018 14:20:21 +0200 Subject: [PATCH 246/344] Change clang nvptx input code selection. As input of clang nvptx there are two possible sources. The raw input of `IncrementalParser::parseInternal()` or the AST-Printer of the `llvm::module`. Now, to decide, which input source should be use, I use the value `Transaction::ConsumerCallInfo::kCCIHandleTopLevelDecl`. This allows more C++ constructs to use. Fixed a small bug. The AST-printer prints `setValueNoAlloc()` without the scope `cling::runtime::internal`. This caused an error, because clang could not find the declaration in the global space. The solution are dummy declaration in the global space. At the moment, templates doesn't works. --- .../IncrementalCUDADeviceCompiler.cpp | 29 +++++++++++++++++-- .../IncrementalCUDADeviceCompiler.h | 5 ++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index d7437c5ba62af..715a46dbf47cf 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -62,6 +62,27 @@ namespace cling { m_HeaderSearchOptions = CI.getHeaderSearchOptsPtr(); + // This code will write to the first .cu-file. It is necessary that some + // cling generated code can be handled. + const std::string initialCUDADeviceCode = + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, float value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, double value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, long double value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, unsigned long long value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, const void* value);\n"; + + std::error_code EC; + llvm::raw_fd_ostream cuFile(m_FilePath + "cling0.cu", EC, + llvm::sys::fs::F_Text); + if (EC) { + llvm::errs() << "Could not open " << m_FilePath << "cling0.cu" << + EC.message() << "\n"; + return; + } + + cuFile << initialCUDADeviceCode; + cuFile.close(); + m_Init = true; } @@ -223,10 +244,10 @@ namespace cling { if(T != nullptr && T->getWrapperFD()){ for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); iDCI != eDCI; ++iDCI){ - for(clang::Decl * decl : iDCI->m_DGR) { - if(clang::VarDecl * v = llvm::dyn_cast(decl)){ + if(iDCI->m_Call == Transaction::ConsumerCallInfo::kCCIHandleTopLevelDecl){ + for(clang::Decl * decl : iDCI->m_DGR) { foundVarDecl = true; - v->print(cuFile); + decl->print(cuFile); // The c++ code has no whitespace and semicolon at the end. cuFile << ";\n"; } @@ -302,6 +323,8 @@ namespace cling { argv.push_back(s.c_str()); } + argv.push_back("-Wno-unused-value"); + std::vector argvChar; argvChar.resize(argv.size()+1); diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index 503542a9e8fe5..c564cf1196a9a 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -73,8 +73,9 @@ namespace cling { std::unique_ptr m_CuArgs; ///\brief The counter responsible to generate a chain of .cu source files - /// and .cu.pch files. - unsigned int m_Counter = 0; + /// and .cu.pch files. Starts with 1 because the cling0.cu file is reserved + /// for internal code. + unsigned int m_Counter = 1; ///\brief Is true if all necessary files have been generated and clang and /// cuda NVIDIA fatbinary are found. From 47dfde4199aa05b0a08d49a999f6201575e5885b Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 20 Jun 2018 10:52:08 +0200 Subject: [PATCH 247/344] Fix cuda template specialization bug. Problem: If a c++ statement with a concrete template parameter will type in, cling pass the (unwrapped) input line and the specialization of the statement, generated by compilerinstance to the clang nvptx. This causes an explicit-specialization-after-instantiation-error. Solution: Template specialization declaration will be save two times at a transaction. Once with the type kCCIHandleCXXImplicitFunctionInstantiation and once with the type kCCIHandleTopLevelDecl. To avoid sending a template specialization to the clang nvptx and causing an explicit-specialization-after-instantiation-error it have to check, which kCCIHandleTopLevelDecl declaration is also a kCCIHandleCXXImplicitFunctionInstantiation declaration. --- .../IncrementalCUDADeviceCompiler.cpp | 45 ++++++++++++++----- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 715a46dbf47cf..5f74bdd4d307f 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -26,6 +26,7 @@ #include "llvm/ADT/Triple.h" #include +#include // The clang nvptx jit has an growing AST-Tree. At runtime, continuously new // statements will append to the AST. To improve the compiletime, the existing @@ -103,6 +104,9 @@ namespace cling { if(langOpts.CPlusPlus2a) cppStdVersion = "-std=c++2a"; + if(cppStdVersion.empty()) + llvm::errs() << + "IncrementalCUDADeviceCompiler: No valid c++ standard is set.\n"; const std::string optLevel = "-O" + std::to_string(intprOptLevel); @@ -234,28 +238,47 @@ namespace cling { + std::to_string(counter) << ".cu: " << EC.message() << "\n"; return false; } - // This variable prevent, that the input and the code from the transaction // will be written to the .cu-file. - bool foundVarDecl = false; - // Search after variable declarations. The conditions are, that the - // source code comes from the prompt (getWrapperFD()) and has a variable - // declaration. - if(T != nullptr && T->getWrapperFD()){ + bool foundUnwrappedDecl = false; + + assert(T != nullptr && "transaction can't be missing"); + + // Search after statements, which are unwrapped. The conditions are, that the + // source code comes from the prompt (getWrapperFD()) and has the type + // kCCIHandleTopLevelDecl. + if(T->getWrapperFD()){ + // Template specialization declaration will be save two times at a + // transaction. Once with the type kCCIHandleCXXImplicitFunctionInstantiation + // and once with the type kCCIHandleTopLevelDecl. To avoid sending a + // template specialization to the clang nvptx and causing a + // explicit-specialization-after-instantiation-error it have to check, + // which kCCIHandleTopLevelDecl declaration is also a + // kCCIHandleCXXImplicitFunctionInstantiation declaration. + std::vector implFunc; + for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); + iDCI != eDCI; ++iDCI) + if(iDCI->m_Call == + Transaction::ConsumerCallInfo::kCCIHandleCXXImplicitFunctionInstantiation) + for(clang::Decl * decl : iDCI->m_DGR) + implFunc.push_back(decl); + for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); iDCI != eDCI; ++iDCI){ if(iDCI->m_Call == Transaction::ConsumerCallInfo::kCCIHandleTopLevelDecl){ for(clang::Decl * decl : iDCI->m_DGR) { - foundVarDecl = true; - decl->print(cuFile); - // The c++ code has no whitespace and semicolon at the end. - cuFile << ";\n"; + if(std::find(implFunc.begin(), implFunc.end(), decl) == implFunc.end()){ + foundUnwrappedDecl = true; + decl->print(cuFile); + // The c++ code has no whitespace and semicolon at the end. + cuFile << ";\n"; + } } } } } - if(!foundVarDecl){ + if(!foundUnwrappedDecl){ cuFile << input; } From ee9571f2fbe6f01df710e210bbebe5f954df92cf Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 20 Jun 2018 11:08:07 +0200 Subject: [PATCH 248/344] Reformated the source code with clang-format. --- .../IncrementalCUDADeviceCompiler.cpp | 400 +++++++++--------- .../IncrementalCUDADeviceCompiler.h | 50 +-- 2 files changed, 224 insertions(+), 226 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index 5f74bdd4d307f..d4463933d3fa9 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -13,20 +13,20 @@ #include "cling/Interpreter/Transaction.h" #include "cling/Utils/Paths.h" -#include "clang/Lex/HeaderSearchOptions.h" -#include "clang/Frontend/CompilerInstance.h" -#include "clang/AST/DeclGroup.h" #include "clang/AST/Decl.h" +#include "clang/AST/DeclGroup.h" +#include "clang/Frontend/CompilerInstance.h" +#include "clang/Lex/HeaderSearchOptions.h" +#include "llvm/ADT/Triple.h" #include "llvm/Support/FileSystem.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/Support/Program.h" -#include "llvm/Support/Process.h" #include "llvm/Support/Path.h" -#include "llvm/ADT/Triple.h" +#include "llvm/Support/Process.h" +#include "llvm/Support/Program.h" +#include "llvm/Support/raw_ostream.h" -#include #include +#include // The clang nvptx jit has an growing AST-Tree. At runtime, continuously new // statements will append to the AST. To improve the compiletime, the existing @@ -39,25 +39,23 @@ namespace cling { IncrementalCUDADeviceCompiler::IncrementalCUDADeviceCompiler( - const std::string & filePath, - const int optLevel, - const cling::InvocationOptions & invocationOptions, - const clang::CompilerInstance & CI) - : m_FilePath(filePath), - m_FatbinFilePath(CI.getCodeGenOpts().CudaGpuBinaryFileNames.empty() - ? "" : CI.getCodeGenOpts().CudaGpuBinaryFileNames[0]), - m_DummyCUPath(m_FilePath + "dummy.cu"), - m_PTXFilePath(m_FilePath + "cling.ptx"), - m_GenericFileName(m_FilePath + "cling") { - if(m_FatbinFilePath.empty()){ + const std::string& filePath, const int optLevel, + const cling::InvocationOptions& invocationOptions, + const clang::CompilerInstance& CI) + : m_FilePath(filePath), + m_FatbinFilePath(CI.getCodeGenOpts().CudaGpuBinaryFileNames.empty() + ? "" + : CI.getCodeGenOpts().CudaGpuBinaryFileNames[0]), + m_DummyCUPath(m_FilePath + "dummy.cu"), + m_PTXFilePath(m_FilePath + "cling.ptx"), + m_GenericFileName(m_FilePath + "cling") { + if (m_FatbinFilePath.empty()) { llvm::errs() << "Error: CudaGpuBinaryFileNames can't be empty\n"; return; } - if (!generateHelperFiles()) - return; - if (!findToolchain(invocationOptions)) - return; + if (!generateHelperFiles()) return; + if (!findToolchain(invocationOptions)) return; setCuArgs(CI.getLangOpts(), invocationOptions, optLevel, CI.getCodeGenOpts().getDebugInfo()); @@ -66,18 +64,23 @@ namespace cling { // This code will write to the first .cu-file. It is necessary that some // cling generated code can be handled. const std::string initialCUDADeviceCode = - "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, float value);\n" - "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, double value);\n" - "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, long double value);\n" - "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, unsigned long long value);\n" - "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char vpOn, const void* value);\n"; + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char " + "vpOn, float value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char " + "vpOn, double value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char " + "vpOn, long double value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char " + "vpOn, unsigned long long value);\n" + "extern void setValueNoAlloc(void* vpI, void* vpV, void* vpQT, char " + "vpOn, const void* value);\n"; std::error_code EC; llvm::raw_fd_ostream cuFile(m_FilePath + "cling0.cu", EC, - llvm::sys::fs::F_Text); + llvm::sys::fs::F_Text); if (EC) { - llvm::errs() << "Could not open " << m_FilePath << "cling0.cu" << - EC.message() << "\n"; + llvm::errs() << "Could not open " << m_FilePath << "cling0.cu" + << EC.message() << "\n"; return; } @@ -88,48 +91,44 @@ namespace cling { } void IncrementalCUDADeviceCompiler::setCuArgs( - const clang::LangOptions & langOpts, - const cling::InvocationOptions & invocationOptions, - const int intprOptLevel, - const clang::codegenoptions::DebugInfoKind debugInfo){ + const clang::LangOptions& langOpts, + const cling::InvocationOptions& invocationOptions, + const int intprOptLevel, + const clang::codegenoptions::DebugInfoKind debugInfo) { std::string cppStdVersion; // Set the c++ standard. Just one condition is possible. - if(langOpts.CPlusPlus11) - cppStdVersion = "-std=c++11"; - if(langOpts.CPlusPlus14) - cppStdVersion = "-std=c++14"; - if(langOpts.CPlusPlus1z) - cppStdVersion = "-std=c++1z"; - if(langOpts.CPlusPlus2a) - cppStdVersion = "-std=c++2a"; - - if(cppStdVersion.empty()) - llvm::errs() << - "IncrementalCUDADeviceCompiler: No valid c++ standard is set.\n"; + if (langOpts.CPlusPlus11) cppStdVersion = "-std=c++11"; + if (langOpts.CPlusPlus14) cppStdVersion = "-std=c++14"; + if (langOpts.CPlusPlus1z) cppStdVersion = "-std=c++1z"; + if (langOpts.CPlusPlus2a) cppStdVersion = "-std=c++2a"; + + if (cppStdVersion.empty()) + llvm::errs() + << "IncrementalCUDADeviceCompiler: No valid c++ standard is set.\n"; const std::string optLevel = "-O" + std::to_string(intprOptLevel); std::string ptxSmVersion = "--cuda-gpu-arch=sm_20"; std::string fatbinSmVersion = "--image=profile=compute_20"; - if(!invocationOptions.CompilerOpts.CUDAGpuArch.empty()){ - ptxSmVersion = "--cuda-gpu-arch=" - + invocationOptions.CompilerOpts.CUDAGpuArch; - fatbinSmVersion = "--image=profile=compute_" - + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3); + if (!invocationOptions.CompilerOpts.CUDAGpuArch.empty()) { + ptxSmVersion = + "--cuda-gpu-arch=" + invocationOptions.CompilerOpts.CUDAGpuArch; + fatbinSmVersion = "--image=profile=compute_" + + invocationOptions.CompilerOpts.CUDAGpuArch.substr(3); } - //The generating of the fatbin file is depend of the architecture of the host. + // The generating of the fatbin file is depend of the architecture of the + // host. llvm::Triple hostTarget(llvm::sys::getDefaultTargetTriple()); const std::string fatbinArch = hostTarget.isArch64Bit() ? "-64" : "-32"; - // FIXME : Should not reduce the fine granulated debug options to a simple. // -g bool debug = false; - if(debugInfo == clang::codegenoptions::DebugLineTablesOnly || - debugInfo == clang::codegenoptions::LimitedDebugInfo || - debugInfo == clang::codegenoptions::FullDebugInfo) + if (debugInfo == clang::codegenoptions::DebugLineTablesOnly || + debugInfo == clang::codegenoptions::LimitedDebugInfo || + debugInfo == clang::codegenoptions::FullDebugInfo) debug = true; // FIXME : Cling has problems to detect these arguments. @@ -144,19 +143,18 @@ namespace cling { std::vector additionalPtxOpt; m_CuArgs.reset(new IncrementalCUDADeviceCompiler::CUDACompilerArgs( - cppStdVersion, optLevel, ptxSmVersion, fatbinSmVersion, fatbinArch, - invocationOptions.Verbose(), debug, additionalPtxOpt, - invocationOptions.CompilerOpts.CUDAFatbinaryArgs)); + cppStdVersion, optLevel, ptxSmVersion, fatbinSmVersion, fatbinArch, + invocationOptions.Verbose(), debug, additionalPtxOpt, + invocationOptions.CompilerOpts.CUDAFatbinaryArgs)); } - - bool IncrementalCUDADeviceCompiler::generateHelperFiles(){ + bool IncrementalCUDADeviceCompiler::generateHelperFiles() { // Generate an empty dummy.cu file. std::error_code EC; llvm::raw_fd_ostream dummyCU(m_DummyCUPath, EC, llvm::sys::fs::F_Text); - if(EC){ - llvm::errs() << "Could not open " << m_DummyCUPath << ": " - << EC.message() << "\n"; + if (EC) { + llvm::errs() << "Could not open " << m_DummyCUPath << ": " << EC.message() + << "\n"; return false; } dummyCU.close(); @@ -165,41 +163,44 @@ namespace cling { } bool IncrementalCUDADeviceCompiler::findToolchain( - const cling::InvocationOptions & invocationOptions){ + const cling::InvocationOptions& invocationOptions) { // Search after clang in the folder of cling. llvm::SmallString<128> cwd; // get folder of the cling executable to find the clang which is contained // in cling // nullptr is ok, if we are the main and not a shared library - cwd.append(llvm::sys::path::parent_path( - llvm::sys::fs::getMainExecutable( - invocationOptions.CompilerOpts.Remaining[0], (void *) &cwd))); + cwd.append(llvm::sys::path::parent_path(llvm::sys::fs::getMainExecutable( + invocationOptions.CompilerOpts.Remaining[0], (void*)&cwd))); cwd.append(llvm::sys::path::get_separator()); cwd.append("clang++"); m_ClangPath = cwd.c_str(); // Check, if clang is existing and executable. - if(!llvm::sys::fs::can_execute(m_ClangPath)){ - llvm::errs() << "Error: " << m_ClangPath << " not existing or executable!\n"; + if (!llvm::sys::fs::can_execute(m_ClangPath)) { + llvm::errs() << "Error: " << m_ClangPath + << " not existing or executable!\n"; return false; } // Use the custom CUDA toolkit path, if it set via cling argument. - if(!invocationOptions.CompilerOpts.CUDAPath.empty()){ - m_FatbinaryPath = invocationOptions.CompilerOpts.CUDAPath + "/bin/fatbinary"; - if(!llvm::sys::fs::can_execute(m_FatbinaryPath)){ - llvm::errs() << "Error: " << m_FatbinaryPath << " not existing or executable!\n"; + if (!invocationOptions.CompilerOpts.CUDAPath.empty()) { + m_FatbinaryPath = + invocationOptions.CompilerOpts.CUDAPath + "/bin/fatbinary"; + if (!llvm::sys::fs::can_execute(m_FatbinaryPath)) { + llvm::errs() << "Error: " << m_FatbinaryPath + << " not existing or executable!\n"; return false; } - }else{ + } else { // Search after fatbinary on the system. if (llvm::ErrorOr fatbinary = - llvm::sys::findProgramByName("fatbinary")) { + llvm::sys::findProgramByName("fatbinary")) { llvm::SmallString<256> fatbinaryAbsolutePath; llvm::sys::fs::real_path(*fatbinary, fatbinaryAbsolutePath); m_FatbinaryPath = fatbinaryAbsolutePath.c_str(); } else { - llvm::errs() << "Error: nvidia tool fatbinary not found!\n" << - "Please add the cuda /bin path to PATH or set the toolkit path via --cuda-path argument.\n"; + llvm::errs() << "Error: nvidia tool fatbinary not found!\n" + << "Please add the cuda /bin path to PATH or set the " + "toolkit path via --cuda-path argument.\n"; return false; } } @@ -208,22 +209,24 @@ namespace cling { } void IncrementalCUDADeviceCompiler::addHeaderSearchPathFlags( - llvm::SmallVectorImpl & argv){ - for(clang::HeaderSearchOptions::Entry e : m_HeaderSearchOptions->UserEntries){ - if(e.Group == clang::frontend::IncludeDirGroup::Quoted){ + llvm::SmallVectorImpl& argv) { + for (clang::HeaderSearchOptions::Entry e : + m_HeaderSearchOptions->UserEntries) { + if (e.Group == clang::frontend::IncludeDirGroup::Quoted) { argv.push_back("-iquote"); argv.push_back(e.Path); } - if(e.Group == clang::frontend::IncludeDirGroup::Angled) + if (e.Group == clang::frontend::IncludeDirGroup::Angled) argv.push_back("-I" + e.Path); } } - bool IncrementalCUDADeviceCompiler::compileDeviceCode(const llvm::StringRef input, - const cling::Transaction * const T){ - if(!m_Init){ - llvm::errs() << "Error: Initializiation of CUDA Device Code Compiler failed\n"; + bool IncrementalCUDADeviceCompiler::compileDeviceCode( + const llvm::StringRef input, const cling::Transaction* const T) { + if (!m_Init) { + llvm::errs() + << "Error: Initializiation of CUDA Device Code Compiler failed\n"; return false; } @@ -231,11 +234,13 @@ namespace cling { // Write the (CUDA) C++ source code to a file. std::error_code EC; - llvm::raw_fd_ostream cuFile(m_GenericFileName + std::to_string(counter) - + ".cu", EC, llvm::sys::fs::F_Text); + llvm::raw_fd_ostream cuFile(m_GenericFileName + std::to_string(counter) + + ".cu", + EC, llvm::sys::fs::F_Text); if (EC) { - llvm::errs() << "Could not open " << m_GenericFileName - + std::to_string(counter) << ".cu: " << EC.message() << "\n"; + llvm::errs() << "Could not open " + << m_GenericFileName + std::to_string(counter) + << ".cu: " << EC.message() << "\n"; return false; } // This variable prevent, that the input and the code from the transaction @@ -244,30 +249,33 @@ namespace cling { assert(T != nullptr && "transaction can't be missing"); - // Search after statements, which are unwrapped. The conditions are, that the - // source code comes from the prompt (getWrapperFD()) and has the type + // Search after statements, which are unwrapped. The conditions are, that + // the source code comes from the prompt (getWrapperFD()) and has the type // kCCIHandleTopLevelDecl. - if(T->getWrapperFD()){ + if (T->getWrapperFD()) { // Template specialization declaration will be save two times at a - // transaction. Once with the type kCCIHandleCXXImplicitFunctionInstantiation - // and once with the type kCCIHandleTopLevelDecl. To avoid sending a - // template specialization to the clang nvptx and causing a + // transaction. Once with the type + // kCCIHandleCXXImplicitFunctionInstantiation and once with the type + // kCCIHandleTopLevelDecl. To avoid sending a template specialization to + // the clang nvptx and causing a // explicit-specialization-after-instantiation-error it have to check, // which kCCIHandleTopLevelDecl declaration is also a // kCCIHandleCXXImplicitFunctionInstantiation declaration. - std::vector implFunc; - for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); - iDCI != eDCI; ++iDCI) - if(iDCI->m_Call == - Transaction::ConsumerCallInfo::kCCIHandleCXXImplicitFunctionInstantiation) - for(clang::Decl * decl : iDCI->m_DGR) + std::vector implFunc; + for (auto iDCI = T->decls_begin(), eDCI = T->decls_end(); iDCI != eDCI; + ++iDCI) + if (iDCI->m_Call == Transaction::ConsumerCallInfo:: + kCCIHandleCXXImplicitFunctionInstantiation) + for (clang::Decl* decl : iDCI->m_DGR) implFunc.push_back(decl); - for(auto iDCI = T->decls_begin(), eDCI = T->decls_end(); - iDCI != eDCI; ++iDCI){ - if(iDCI->m_Call == Transaction::ConsumerCallInfo::kCCIHandleTopLevelDecl){ - for(clang::Decl * decl : iDCI->m_DGR) { - if(std::find(implFunc.begin(), implFunc.end(), decl) == implFunc.end()){ + for (auto iDCI = T->decls_begin(), eDCI = T->decls_end(); iDCI != eDCI; + ++iDCI) { + if (iDCI->m_Call == + Transaction::ConsumerCallInfo::kCCIHandleTopLevelDecl) { + for (clang::Decl* decl : iDCI->m_DGR) { + if (std::find(implFunc.begin(), implFunc.end(), decl) == + implFunc.end()) { foundUnwrappedDecl = true; decl->print(cuFile); // The c++ code has no whitespace and semicolon at the end. @@ -278,20 +286,20 @@ namespace cling { } } - if(!foundUnwrappedDecl){ + if (!foundUnwrappedDecl) { cuFile << input; } cuFile.close(); - if(!generatePCH() || !generatePTX() || !generateFatbinary()){ + if (!generatePCH() || !generatePTX() || !generateFatbinary()) { saveFaultyCUfile(); return false; } #if PCHMODE == 0 - llvm::sys::fs::remove(m_GenericFileName + std::to_string(counter) - +".cu.pch"); + llvm::sys::fs::remove(m_GenericFileName + std::to_string(counter) + + ".cu.pch"); #endif ++m_Counter; @@ -320,43 +328,38 @@ namespace cling { argv.push_back("-D__CLING__"); argv.push_back(m_GenericFileName + std::to_string(counter) + ".cu"); argv.push_back("-o"); - argv.push_back(m_GenericFileName + std::to_string(counter) +".cu.pch"); + argv.push_back(m_GenericFileName + std::to_string(counter) + ".cu.pch"); // If a previos file exist, include it. #if PCHMODE == 1 - if(counter){ + if (counter) { argv.push_back("-include-pch"); - argv.push_back(m_GenericFileName + std::to_string(counter-1) +".cu.pch"); + argv.push_back(m_GenericFileName + std::to_string(counter - 1) + + ".cu.pch"); } #else - if(counter){ - for(unsigned int i = 0; i <= counter-1; ++i){ + if (counter) { + for (unsigned int i = 0; i <= counter - 1; ++i) { argv.push_back("-include"); - argv.push_back(m_GenericFileName + std::to_string(i) +".cu"); + argv.push_back(m_GenericFileName + std::to_string(i) + ".cu"); } } #endif argv.push_back(m_CuArgs->ptxSmVersion); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); - if(m_CuArgs->verbose) - argv.push_back("-v"); - if(m_CuArgs->debug) - argv.push_back("-g"); - for(const std::string & s : m_CuArgs->additionalPtxOpt){ + if (m_CuArgs->verbose) argv.push_back("-v"); + if (m_CuArgs->debug) argv.push_back("-g"); + for (const std::string& s : m_CuArgs->additionalPtxOpt) { argv.push_back(s.c_str()); } argv.push_back("-Wno-unused-value"); - std::vector argvChar; - argvChar.resize(argv.size()+1); + std::vector argvChar; + argvChar.resize(argv.size() + 1); std::transform(argv.begin(), argv.end(), argvChar.begin(), - [&](const std::string & s) - { - return s.c_str(); - } - ); + [&](const std::string& s) { return s.c_str(); }); // Argv list have to finish with a nullptr. argvChar.push_back(nullptr); @@ -365,10 +368,11 @@ namespace cling { int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argvChar.data(), nullptr, {}, 0, 0, &executionError); - if(res){ - llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generatePCH(): error compiling PCH file:\n" + if (res) { + llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generatePCH(): " + "error compiling PCH file:\n" << m_ClangPath; - for(const char * c : argvChar) + for (const char* c : argvChar) llvm::errs() << " " << c; llvm::errs() << '\n' << executionError << "\n"; return false; @@ -395,27 +399,21 @@ namespace cling { argv.push_back("-o"); argv.push_back(m_PTXFilePath); argv.push_back("-include-pch"); - argv.push_back(m_GenericFileName + std::to_string(counter) +".cu.pch"); + argv.push_back(m_GenericFileName + std::to_string(counter) + ".cu.pch"); argv.push_back(m_CuArgs->ptxSmVersion); argv.push_back("-pthread"); argv.push_back("--cuda-device-only"); - if(m_CuArgs->verbose) - argv.push_back("-v"); - if(m_CuArgs->debug) - argv.push_back("-g"); - for(const std::string & s : m_CuArgs->additionalPtxOpt){ + if (m_CuArgs->verbose) argv.push_back("-v"); + if (m_CuArgs->debug) argv.push_back("-g"); + for (const std::string& s : m_CuArgs->additionalPtxOpt) { argv.push_back(s.c_str()); } - std::vector argvChar; - argvChar.resize(argv.size()+1); + std::vector argvChar; + argvChar.resize(argv.size() + 1); std::transform(argv.begin(), argv.end(), argvChar.begin(), - [&](const std::string & s) - { - return s.c_str(); - } - ); + [&](const std::string& s) { return s.c_str(); }); // Argv list have to finish with a nullptr. argvChar.push_back(nullptr); @@ -424,10 +422,11 @@ namespace cling { int res = llvm::sys::ExecuteAndWait(m_ClangPath.c_str(), argvChar.data(), nullptr, {}, 0, 0, &executionError); - if(res){ - llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generatePTX(): error compiling PCH file:\n" + if (res) { + llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generatePTX(): " + "error compiling PCH file:\n" << m_ClangPath; - for(const char * c : argvChar) + for (const char* c : argvChar) llvm::errs() << " " << c; llvm::errs() << '\n' << executionError << "\n"; return false; @@ -449,33 +448,30 @@ namespace cling { argv.push_back("--create"); argv.push_back(m_FatbinFilePath); argv.push_back(m_CuArgs->fatbinSmVersion + ",file=" + m_PTXFilePath); - if(m_CuArgs->debug) - argv.push_back("-g"); - for(const std::string & s : m_CuArgs->fatbinaryOpt){ + if (m_CuArgs->debug) argv.push_back("-g"); + for (const std::string& s : m_CuArgs->fatbinaryOpt) { argv.push_back(s.c_str()); } - std::vector argvChar; - argvChar.resize(argv.size()+1); + std::vector argvChar; + argvChar.resize(argv.size() + 1); std::transform(argv.begin(), argv.end(), argvChar.begin(), - [&](const std::string & s) - { - return s.c_str(); - } - ); + [&](const std::string& s) { return s.c_str(); }); // Argv list have to finish with a nullptr. argvChar.push_back(nullptr); std::string executionError; - int res = llvm::sys::ExecuteAndWait(m_FatbinaryPath.c_str(), argvChar.data(), - nullptr, {}, 0, 0, &executionError); + int res = + llvm::sys::ExecuteAndWait(m_FatbinaryPath.c_str(), argvChar.data(), + nullptr, {}, 0, 0, &executionError); - if(res){ - llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generateFatbinary(): error compiling PCH file:\n" + if (res) { + llvm::errs() << "cling::IncrementalCUDADeviceCompiler::generateFatbinary(" + "): error compiling PCH file:\n" << m_ClangPath; - for(const char * c : argvChar) + for (const char* c : argvChar) llvm::errs() << " " << c; llvm::errs() << '\n' << executionError << "\n"; return false; @@ -484,58 +480,58 @@ namespace cling { return true; } - void IncrementalCUDADeviceCompiler::dump(){ - llvm::outs() << "current counter: " << getCounterCopy() << "\n" << - "CUDA device compiler is valid: " << m_Init << "\n" << - "file path: " << m_FilePath << "\n" << - "fatbin file path: " << m_FatbinFilePath << "\n" << - "dummy.cu file path: " << m_DummyCUPath << "\n" << - "cling.ptx file path: " << m_PTXFilePath << "\n" << - "generic file path: " << m_GenericFileName - << "[0-9]*.cu{.pch}\n" << - "clang++ path: " << m_ClangPath << "\n" << - "nvidia fatbinary path: " << m_FatbinaryPath << "\n" << - "m_CuArgs c++ standard: " << m_CuArgs->cppStdVersion << "\n" << - "m_CuArgs opt level: " << m_CuArgs->optLevel << "\n" << - "m_CuArgs SM level for clang nvptx: " - << m_CuArgs->ptxSmVersion << "\n" << - "m_CuArgs SM level for fatbinary: " - << m_CuArgs->fatbinSmVersion << "\n" << - "m_CuArgs fatbinary architectur: " - << m_CuArgs->fatbinArch << "\n" << - "m_CuArgs verbose: " << m_CuArgs->verbose << "\n" << - "m_CuArgs debug: " << m_CuArgs->debug << "\n"; - llvm::outs() << "m_CuArgs additional clang nvptx options: "; - for(const std::string & s : m_CuArgs->additionalPtxOpt){ - llvm::outs() << s << " "; - } - llvm::outs() << "\n"; - llvm::outs() << "m_CuArgs additional fatbinary options: "; - for(const std::string & s : m_CuArgs->fatbinaryOpt){ - llvm::outs() << s << " "; - } - llvm::outs() << "\n"; + void IncrementalCUDADeviceCompiler::dump() { + llvm::outs() << "current counter: " << getCounterCopy() << "\n" + << "CUDA device compiler is valid: " << m_Init << "\n" + << "file path: " << m_FilePath << "\n" + << "fatbin file path: " << m_FatbinFilePath << "\n" + << "dummy.cu file path: " << m_DummyCUPath << "\n" + << "cling.ptx file path: " << m_PTXFilePath << "\n" + << "generic file path: " << m_GenericFileName + << "[0-9]*.cu{.pch}\n" + << "clang++ path: " << m_ClangPath << "\n" + << "nvidia fatbinary path: " << m_FatbinaryPath << "\n" + << "m_CuArgs c++ standard: " << m_CuArgs->cppStdVersion << "\n" + << "m_CuArgs opt level: " << m_CuArgs->optLevel << "\n" + << "m_CuArgs SM level for clang nvptx: " + << m_CuArgs->ptxSmVersion << "\n" + << "m_CuArgs SM level for fatbinary: " + << m_CuArgs->fatbinSmVersion << "\n" + << "m_CuArgs fatbinary architectur: " << m_CuArgs->fatbinArch + << "\n" + << "m_CuArgs verbose: " << m_CuArgs->verbose << "\n" + << "m_CuArgs debug: " << m_CuArgs->debug << "\n"; + llvm::outs() << "m_CuArgs additional clang nvptx options: "; + for (const std::string& s : m_CuArgs->additionalPtxOpt) { + llvm::outs() << s << " "; + } + llvm::outs() << "\n"; + llvm::outs() << "m_CuArgs additional fatbinary options: "; + for (const std::string& s : m_CuArgs->fatbinaryOpt) { + llvm::outs() << s << " "; + } + llvm::outs() << "\n"; } - std::error_code IncrementalCUDADeviceCompiler::saveFaultyCUfile(){ + std::error_code IncrementalCUDADeviceCompiler::saveFaultyCUfile() { const unsigned int counter = getCounterCopy(); unsigned int faultFileCounter = 0; // Construct the file path of the current .cu file without extension. std::string originalCU = m_GenericFileName + std::to_string(counter); - // counter (= m_Counter) will just increased, if the compiling get right. So we need a - // second counter, if two or more following files fails. + // counter (= m_Counter) will just increased, if the compiling get right. So + // we need a second counter, if two or more following files fails. std::string faultyCU; - do{ + do { faultFileCounter += 1; - faultyCU = originalCU + "_fault" + std::to_string(faultFileCounter) + ".cu"; - } while(llvm::sys::fs::exists(faultyCU)); + faultyCU = + originalCU + "_fault" + std::to_string(faultFileCounter) + ".cu"; + } while (llvm::sys::fs::exists(faultyCU)); // orginial: cling[counter].cu // faulty file: cling[counter]_fault[faultFileCounter].cu return llvm::sys::fs::rename(originalCU + ".cu", faultyCU); - } } // end namespace cling diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index c564cf1196a9a..810af05797e54 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -16,16 +16,16 @@ #include #include -namespace cling{ +namespace cling { class InvocationOptions; class Transaction; -} +} // namespace cling namespace clang { class CompilerInstance; class HeaderSearchOptions; class LangOptions; -} +} // namespace clang namespace llvm { class StringRef; @@ -63,11 +63,10 @@ namespace cling { std::string fatbinArch, bool verbose, bool debug, std::vector additionalPtxOpt, std::vector fatbinaryOpt) - : cppStdVersion(cppStdVersion), optLevel(optLevel), - ptxSmVersion(ptxSmVersion), fatbinSmVersion(fatbinSmVersion), - fatbinArch(fatbinArch), verbose(verbose), debug(debug), - additionalPtxOpt(additionalPtxOpt), fatbinaryOpt(fatbinaryOpt) {} - + : cppStdVersion(cppStdVersion), optLevel(optLevel), + ptxSmVersion(ptxSmVersion), fatbinSmVersion(fatbinSmVersion), + fatbinArch(fatbinArch), verbose(verbose), debug(debug), + additionalPtxOpt(additionalPtxOpt), fatbinaryOpt(fatbinaryOpt) {} }; std::unique_ptr m_CuArgs; @@ -107,7 +106,7 @@ namespace cling { ///\brief get copy of m_Counter /// ///\returns copy of m_Counter - unsigned int getCounterCopy(){ return m_Counter;} + unsigned int getCounterCopy() { return m_Counter; } ///\brief Generate the dummy.cu file and set the paths of m_PTXFilePath and /// m_GenericFileName. @@ -122,12 +121,14 @@ namespace cling { /// toolkit /// ///\returns True, whether clang and fatbinary was found. - bool findToolchain(const cling::InvocationOptions & invocationOptions); + bool findToolchain(const cling::InvocationOptions& invocationOptions); - ///\brief Add the include paths from the interpreter runtime to a argument list. + ///\brief Add the include paths from the interpreter runtime to a argument + ///list. /// - ///\param [in,out] argv - The include commands will append to the argv vector. - void addHeaderSearchPathFlags(llvm::SmallVectorImpl & argv); + ///\param [in,out] argv - The include commands will append to the argv + ///vector. + void addHeaderSearchPathFlags(llvm::SmallVectorImpl& argv); ///\brief Start an clang compiler with nvptx backend. Read the content of /// cling.cu and compile it to a new PCH file. If predecessor PCH file is @@ -155,8 +156,8 @@ namespace cling { ///\param [in] invocationOptions - The invocationOptions of the interpreter. ///\param [in] intprOptLevel - The optimization level of the interpreter. ///\param [in] debugInfo - The debugInfo of the CompilerInstance. - void setCuArgs(const clang::LangOptions & langOpts, - const cling::InvocationOptions & invocationOptions, + void setCuArgs(const clang::LangOptions& langOpts, + const cling::InvocationOptions& invocationOptions, const int intprOptLevel, const clang::codegenoptions::DebugInfoKind debugInfo); @@ -171,18 +172,20 @@ namespace cling { ///\param [in] filePath - All files will generated in the folder of the /// filePath, except the fatbin file, if it have another path. Have /// to end with a separator. Can be empty. - ///\param [in] optLevel - The optimization level of the interpreter instance. + ///\param [in] optLevel - The optimization level of the interpreter + ///instance. /// The value will be copied, because a change of it is not allowed. ///\param [in] invocationOptions - Contains values for the arguments of /// clang and the NVIDIA tool fatbinary. ///\param [in] CompilerInstance - Will be used for m_CuArgs and the include /// path handling. - IncrementalCUDADeviceCompiler(const std::string & filePath, - const int optLevel, - const cling::InvocationOptions & invocationOptions, - const clang::CompilerInstance & CI); + IncrementalCUDADeviceCompiler( + const std::string& filePath, const int optLevel, + const cling::InvocationOptions& invocationOptions, + const clang::CompilerInstance& CI); - ///\brief Generate an new fatbin file with the path in CudaGpuBinaryFileNames. + ///\brief Generate an new fatbin file with the path in + ///CudaGpuBinaryFileNames. /// It will add the content of input, to the existing source code, which was /// passed to compileDeviceCode, before. /// @@ -193,14 +196,13 @@ namespace cling { ///\returns True, if all stages of generating fatbin runs right and a new /// fatbin file is written. bool compileDeviceCode(const llvm::StringRef input, - const cling::Transaction * const T); + const cling::Transaction* const T); ///\brief Print some information of the IncrementalCUDADeviceCompiler to /// llvm::outs(). For Example the paths of the files and tools. void dump(); - }; -} // end cling +} // namespace cling #endif // CLING_INCREMENTAL_CUDA_DEVICE_JIT_H From f2d357371f780cf5294e6c95a123764d956b882f Mon Sep 17 00:00:00 2001 From: Simeon Ehrig Date: Wed, 20 Jun 2018 13:33:13 +0200 Subject: [PATCH 249/344] Forgot header for clang build. --- .../cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp | 1 + .../cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h | 1 + 2 files changed, 2 insertions(+) diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp index d4463933d3fa9..c88d6ae29f67a 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.cpp @@ -27,6 +27,7 @@ #include #include +#include // The clang nvptx jit has an growing AST-Tree. At runtime, continuously new // statements will append to the AST. To improve the compiletime, the existing diff --git a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h index 810af05797e54..87c77ffcf0a90 100644 --- a/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h +++ b/interpreter/cling/lib/Interpreter/IncrementalCUDADeviceCompiler.h @@ -14,6 +14,7 @@ #include "llvm/ADT/SmallVector.h" #include +#include #include namespace cling { From 0c12eb355f75b5c1d811cf517f041aaaa1e74403 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 11:16:24 +0200 Subject: [PATCH 250/344] [cling][NFC] Add GCC fallthrough comment. --- interpreter/cling/lib/Interpreter/InvocationOptions.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interpreter/cling/lib/Interpreter/InvocationOptions.cpp b/interpreter/cling/lib/Interpreter/InvocationOptions.cpp index 1959c523b49d1..6ee95b329aadc 100644 --- a/interpreter/cling/lib/Interpreter/InvocationOptions.cpp +++ b/interpreter/cling/lib/Interpreter/InvocationOptions.cpp @@ -188,6 +188,7 @@ InvocationOptions::InvocationOptions(int argc, const char* const* argv) : // pass -v to clang as well if (arg->getOption().getID() != OPT_v) break; + /* Falls through. */ case Option::UnknownClass: case Option::InputClass: // prune "-" we need to control where it appears when invoking clang From b3226e56fd9ec6c447572a25bc944079a2ca0353 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 11:18:27 +0200 Subject: [PATCH 251/344] [cling][NFC] Add GCC fallthrough comment, 80cols. --- interpreter/cling/lib/Interpreter/Value.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/Value.cpp b/interpreter/cling/lib/Interpreter/Value.cpp index e019a332f57e9..ce99884178139 100644 --- a/interpreter/cling/lib/Interpreter/Value.cpp +++ b/interpreter/cling/lib/Interpreter/Value.cpp @@ -243,7 +243,8 @@ namespace cling { const std::string Type = valuePrinterInternal::printTypeInternal(*this); // Get the value string representation, by printValue() method overloading - const std::string Val = cling::valuePrinterInternal::printValueInternal(*this); + const std::string Val + = cling::valuePrinterInternal::printValueInternal(*this); if (Escape) { const char* Data = Val.data(); const size_t N = Val.size(); @@ -251,9 +252,10 @@ namespace cling { case 'u': case 'U': case 'L': if (N < 3 || Data[1] != '\"') break; + /* Falls through. */ - // Unicode string, encoded as Utf-8 case '\"': + // Unicode string, encoded as Utf-8 if (N > 2 && Data[N-1] == '\"') { // Drop the terminating " so Utf-8 errors can be detected ("\xeA") Out << Type << ' '; From 28374ed951993b96643f7941caf6db4deed8053a Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 19:29:18 +0000 Subject: [PATCH 252/344] Import cppyy-backend into ROOT --- .../cppyy/cppyy-backend/.gitignore | 106 + .../cppyy/cppyy-backend/README.rst | 15 + .../cppyy/cppyy-backend/cling/.travis.yml | 8 + .../cppyy/cppyy-backend/cling/INSTALL.txt | 17 + .../cppyy/cppyy-backend/cling/LICENSE.txt | 68 + .../cppyy/cppyy-backend/cling/MANIFEST.in | 5 + .../cppyy/cppyy-backend/cling/README.rst | 26 + .../cling/create_src_directory.py | 366 +++ .../cling/patches/dep_template.diff | 59 + .../cling/patches/faux_typedef.diff | 16 + .../cling/patches/metacling.diff | 101 + .../cling/patches/no_long64_t.diff | 37 + .../cppyy-backend/cling/patches/scanner.diff | 16 + .../cling/patches/scanner_2.diff | 16 + .../cppyy-backend/cling/patches/sfinae.diff | 14 + .../cling/patches/template_fwd.diff | 39 + .../cling/patches/using_decls.diff | 184 ++ .../cling/python/cppyy_backend/__init__.py | 1 + .../python/cppyy_backend/_cling_config.py | 28 + .../python/cppyy_backend/_cppyy_generator.py | 703 ++++++ .../cling/python/cppyy_backend/_genreflex.py | 15 + .../cling/python/cppyy_backend/_rootcling.py | 10 + .../python/cppyy_backend/bindings_utils.py | 339 +++ .../cppyy_backend/cmake/FindCppyy.cmake | 488 ++++ .../cppyy_backend/cmake/FindLibClang.cmake | 56 + .../cling/python/cppyy_backend/loader.py | 17 + .../cppyy/cppyy-backend/cling/setup.cfg | 5 + .../cppyy/cppyy-backend/cling/setup.py | 230 ++ .../cling/tests/test_cppyy_backend.h | 49 + .../cling/tests/test_cppyy_backend.py | 52 + .../cppyy-backend/clingwrapper/LICENSE.txt | 52 + .../cppyy-backend/clingwrapper/MANIFEST.in | 5 + .../cppyy-backend/clingwrapper/README.rst | 28 + .../python/cppyy_backend/__init__.py | 1 + .../python/cppyy_backend/loader.py | 17 + .../cppyy-backend/clingwrapper/setup.cfg | 5 + .../cppyy/cppyy-backend/clingwrapper/setup.py | 181 ++ .../clingwrapper/src/callcontext.h | 38 + .../cppyy-backend/clingwrapper/src/capi.h | 228 ++ .../clingwrapper/src/clingwrapper.cxx | 2015 +++++++++++++++++ .../clingwrapper/src/clingwrapper.h | 37 + .../clingwrapper/src/cpp_cppyy.h | 224 ++ .../cppyy-backend/clingwrapper/src/cppyy.h | 66 + .../clingwrapper/src/precommondefs.h | 77 + 44 files changed, 6060 insertions(+) create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/.gitignore create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/README.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/.travis.yml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/INSTALL.txt create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/LICENSE.txt create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/MANIFEST.in create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/README.rst create mode 100755 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/create_src_directory.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/__init__.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cling_config.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cppyy_generator.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_genreflex.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_rootcling.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/bindings_utils.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindCppyy.cmake create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindLibClang.cmake create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/loader.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.cfg create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/LICENSE.txt create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/MANIFEST.in create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/README.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/__init__.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/loader.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.cfg create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/callcontext.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/capi.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cppyy.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/precommondefs.h diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/.gitignore b/bindings/pyroot_experimental/cppyy/cppyy-backend/.gitignore new file mode 100644 index 0000000000000..99c41e704969a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/.gitignore @@ -0,0 +1,106 @@ +releases/ +root-*/ +cling/src/ +builddir/ + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/README.rst b/bindings/pyroot_experimental/cppyy/cppyy-backend/README.rst new file mode 100644 index 0000000000000..3cf75ab989f2a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/README.rst @@ -0,0 +1,15 @@ +cppyy-backend +============= + +A repackaging of Cling, the interactive C++ interpreter, including a version +of LLVM patched for interactive use, and C/C++ wrappers that expose no further +external headers or types. + + +Cling documentation is here: + https://root.cern.ch/cling + +---- + +Find the cppyy documentation here: + http://cppyy.readthedocs.io/ diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/.travis.yml b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/.travis.yml new file mode 100644 index 0000000000000..de46ee9a711f6 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/.travis.yml @@ -0,0 +1,8 @@ +sudo: false +language: python + +script: + - python setup.py egg_info + - python create_src_directory.py + - python setup.py sdist + - ls dist diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/INSTALL.txt b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/INSTALL.txt new file mode 100644 index 0000000000000..91380ac2645d8 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/INSTALL.txt @@ -0,0 +1,17 @@ +Download ROOT sources, strip and patch them: + + $ python setup.py egg_info + $ python create_src_directory.py + +Build wheel (optional: use --keep-temp during development): + + $ MAKE_NPROCS=32 python setup.py bdist_wheel + +Build source distribution: + + $ python setup.py sdist + +Sign: + + $ gpg --detach-sign -a dist/*cppyy*.tar.gz + diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/LICENSE.txt b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/LICENSE.txt new file mode 100644 index 0000000000000..e3de5ec754ab9 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/LICENSE.txt @@ -0,0 +1,68 @@ +Copyright (c) 2003, The Regents of the University of California, +through Lawrence Berkeley National Laboratory (subject to receipt of +any required approvals from the U.S. Dept. of Energy). All rights +reserved. Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + +(1) Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +(2) Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +(3) Neither the name of the University of California, Lawrence Berkeley +National Laboratory, U.S. Dept. of Energy nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +You are under no obligation whatsoever to provide any bug fixes, +patches, or upgrades to the features, functionality or performance of +the source code ("Enhancements") to anyone; however, if you choose to +make your Enhancements available either publicly, or directly to +Lawrence Berkeley National Laboratory, without imposing a separate +written license agreement for such Enhancements, then you hereby grant +the following license: a non-exclusive, royalty-free perpetual license +to install, use, modify, prepare derivative works, incorporate into +other computer software, distribute, and sublicense such Enhancements +or derivative works thereof, in binary and source code form. + + + +Additional copyright holders +---------------------------- + +Except when otherwise stated (look for LICENSE files or information in +source files), this package contains files copyrighted by one or more of +the following people and organizations: + + CERN + Robert Bradshaw + Antonio Cuni + Aditi Dutta + Shaheed Haque + + +External code +------------- + +The create_src_directory.py script will pull in ROOT and LLVM sources, which +are licensed differently: + + LLVM: distributed under University of Illinois/NCSA Open Source License + https://opensource.org/licenses/UoI-NCSA.php + ROOT: distributed under LGPL 2.1 + https://root.cern.ch/license + +The ROOT code is modified before building, the LLVM code is not. diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/MANIFEST.in b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/MANIFEST.in new file mode 100644 index 0000000000000..6db55ce0e102b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/MANIFEST.in @@ -0,0 +1,5 @@ +# Include the license file +include LICENSE.txt + +# Include the data files +recursive-include src * diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/README.rst b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/README.rst new file mode 100644 index 0000000000000..34449fd13d1ff --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/README.rst @@ -0,0 +1,26 @@ +cppyy-cling +=========== + +A repackaging of Cling, the interactive C++ interpreter, including a version +of LLVM that is patched for interactive use. + +Compilation of LLVM may take a long time, so when building from source, it is +recommended to set MAKE_NPROCS to the number of cores on your machine and to +use the verbose flag to see progress: + + $ MAKE_NPROCS=32 pip install --verbose cppyy-cling + +Alternatively, there are binary wheels (Mac 10.12, Linux/Gentoo) +available here: + https://cern.ch/wlav/wheels + +Use '--extra-index https://cern.ch/wlav/wheels' as an argument to pip to +pick them up. + +Cling documentation is here: + https://root.cern.ch/cling + +---- + +Find the cppyy documentation here: + http://cppyy.readthedocs.io/ diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/create_src_directory.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/create_src_directory.py new file mode 100755 index 0000000000000..0bd69c0610365 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/create_src_directory.py @@ -0,0 +1,366 @@ +#!/usr/bin/env python +from __future__ import print_function + +import os, sys, subprocess +import shutil, tarfile +try: + import urllib2 +except ModuleNotFoundError: + import urllib.request as urllib2 # p3 + + +DEBUG_TESTBUILD = False + +TARBALL_CACHE_DIR = 'releases' + +ROOT_KEEP = ['build', 'cmake', 'config', 'core', 'etc', 'interpreter', + 'io', 'LICENSE', 'Makefile', 'CMakeLists.txt', 'math', + 'main'] # main only needed in more recent root b/c of rootcling +ROOT_CORE_KEEP = ['CMakeLists.txt', 'base', 'clib', 'clingutils', 'cont', + 'dictgen', 'foundation', 'lz4', 'lzma', 'macosx', 'meta', + 'metacling', 'metautils', 'rootcling_stage1', 'textinput', + 'thread', 'unix', 'utils', 'winnt', 'zip', 'pcre'] +ROOT_IO_KEEP = ['CMakeLists.txt', 'io', 'rootpcm'] +ROOT_MATH_KEEP = ['CMakeLists.txt', 'mathcore'] +ROOT_ETC_KEEP = ['Makefile.arch', 'class.rules', 'cmake', 'dictpch', + 'gdb-backtrace.sh', 'gitinfo.txt', 'helgrind-root.supp', + 'hostcert.conf', 'plugins', 'system.plugins-ios', + 'valgrind-root-python.supp', 'valgrind-root.supp', 'vmc'] +ROOT_PLUGINS_KEEP = ['TVirtualStreamerInfo'] + +ROOT_EXPLICIT_REMOVE = ['core/base/v7', 'math/mathcore/v7', 'io/io/v7'] + + +ERR_RELEASE_NOT_FOUND = 2 + + +def get_root_version(try_recover=True): + import pkg_resources + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'python') + dists = pkg_resources.find_distributions(path) + try: + cppyy_cling = [d for d in dists if d.key == 'cppyy-cling'][0] + version = cppyy_cling.version + except IndexError: + if try_recover and os.path.exists('setup.py'): + print('No egg_info ... running "python setup.py egg_info"') + if subprocess.call(['python', 'setup.py', 'egg_info']) != 0: + print('ERROR: creation of egg_info failed ... giving up') + sys.exit(2) + return get_root_version(False) + else: + print('ERROR: cannot determine version. Please run "python setup.py egg_info" first.') + sys.exit(1) + # + parts = version.split('.', 3) + major, minor, patch = map(int, parts[:3]) + root_version = '%d.%02d.%02d' % (major, minor, patch) + return root_version + + +ROOT_VERSION = get_root_version() + +# +## ROOT source pull and cleansing +# +def clean_directory(directory, keeplist, trim_cmake=True): + removed_entries = [] + for entry in os.listdir(directory): + if entry[0] == '.' or entry in keeplist: + continue + removed_entries.append(entry) + entry = os.path.join(directory, entry) + print('now removing', entry) + if os.path.isdir(entry): + shutil.rmtree(entry) + else: + os.remove(entry) + + if not trim_cmake: + return + + # now take the removed entries out of the CMakeLists.txt + if removed_entries: + inp = os.path.join(directory, 'CMakeLists.txt') + print('trimming', inp) + outp = inp+'.new' + new_cml = open(outp, 'w') + for line in open(inp).readlines(): + if ('add_subdirectory' in line) or\ + ('COMMAND' in line and 'copy' in line) or\ + ('ROOT_ADD_TEST_SUBDIRECTORY' in line) or\ + ('install(DIRECTORY' in line): + for sub in removed_entries: + if sub in line: + line = '#'+line + break + new_cml.write(line) + new_cml.close() + os.rename(outp, inp) + else: + print('reusing existing %s/CMakeLists.txt' % (directory,)) + + +if not os.path.exists(TARBALL_CACHE_DIR): + os.mkdir(TARBALL_CACHE_DIR) + +fn = 'root_v%s.source.tar.gz' % ROOT_VERSION +addr = 'https://root.cern.ch/download/'+fn +if not os.path.exists(os.path.join(TARBALL_CACHE_DIR, fn)): + try: + print('retrieving', fn) + if sys.hexversion < 0x3000000: + output_fn = fn + else: + output_fn = bytes(fn, 'utf-8') + resp = urllib2.urlopen(addr, output_fn) + out = open(os.path.join(TARBALL_CACHE_DIR, fn), 'wb') + out.write(resp.read()) + out.close() + except urllib2.HTTPError: + print('release %s not found' % ROOT_VERSION) + sys.exit(ERR_RELEASE_NOT_FOUND) +else: + print('reusing', fn, 'from local directory') + + +fn = os.path.join(TARBALL_CACHE_DIR, fn) +pkgdir = os.path.join('root-' + ROOT_VERSION) +if not os.path.exists(pkgdir): + print('now extracting', ROOT_VERSION) + tf = tarfile.TarFile.gzopen(fn) + tf.extractall() + tf.close() +else: + print('reusing existing directory', pkgdir) + +# remove everything except for the listed set of libraries +try: + shutil.rmtree('src') +except OSError: + pass +os.chdir(pkgdir) +clean_directory(os.path.curdir, ROOT_KEEP) +clean_directory('core', ROOT_CORE_KEEP) +clean_directory('etc', ROOT_ETC_KEEP, trim_cmake=False) +clean_directory('etc/plugins', ROOT_PLUGINS_KEEP, trim_cmake=False) +clean_directory('io', ROOT_IO_KEEP) +clean_directory('math', ROOT_MATH_KEEP) + + +# trim main (only need rootcling) +print('trimming main') +for entry in os.listdir('main/src'): + if entry != 'rootcling.cxx': + os.remove('main/src/'+entry) +inp = 'main/CMakeLists.txt' +outp = inp+'.new' +new_cml = open(outp, 'w') +for line in open(inp).readlines(): + if ('ROOT_EXECUTABLE' in line or\ + 'SET_TARGET_PROPERTIES' in line) and\ + not 'rootcling' in line: + line = '#'+line + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +# trim core (gGLManager crashes on call) +print('trimming main') +os.remove("core/base/src/TVirtualGL.cxx") +os.remove("core/base/inc/TVirtualGL.h") + +# remove afterimage and ftgl explicitly +print('trimming externals') +for cmf in ['AfterImage', 'FTGL']: + fname = 'cmake/modules/Find%s.cmake' % (cmf,) + if os.path.exists(fname): + os.remove(fname) +inp = 'cmake/modules/SearchInstalledSoftware.cmake' +outp = inp+'.new' +now_stripping = False +new_cml = open(outp, 'w') +for line in open(inp).readlines(): + if '#---Check for ftgl if needed' == line[0:28] or\ + '#---Check for AfterImage' == line[0:24]: + now_stripping = True + elif '#---Check' == line[0:9]: + now_stripping = False + if now_stripping: + line = '#'+line + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +inp = 'cmake/modules/RootBuildOptions.cmake' +outp = inp+'.new' +new_cml = open(outp, 'w') +for line in open(inp).readlines(): + if 'ROOT_BUILD_OPTION(builtin_ftgl' in line or\ + 'ROOT_BUILD_OPTION(builtin_afterimage' in line: + line = '#'+line + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +# strip freetype +inp = 'cmake/modules/SearchInstalledSoftware.cmake' +outp = inp+'.new' +new_cml = open(outp, 'w') +for line in open(inp).readlines(): + if '#---Check for Freetype' == line[0:22]: + now_stripping = True + elif '#---Check for PCRE' == line[0:18]: + now_stripping = False + if now_stripping or 'builtin_freetype' in line: + line = '#'+line + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +# remove testing and examples +print('trimming testing') +inp = 'CMakeLists.txt' +outp = inp+'.new' +now_stripping = False +new_cml = open(outp, 'w') +for line in open(inp).readlines(): + if '#---Configure Testing using CTest' == line[0:33] or\ + '#---hsimple.root' == line[0:16]: + now_stripping = True + elif '#---Packaging' == line[0:13] or\ + '#---version' == line[0:11]: + now_stripping = False + if now_stripping: + line = '#'+line + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +print('trimming RootCPack') +inp = 'cmake/modules/RootCPack.cmake' +outp = inp+'.new' +new_cml = open(outp, 'w') +for line in open(inp): + if 'README.txt' in line: + line = '#'+line + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + + +# some more explicit removes: +for dir_to_remove in ROOT_EXPLICIT_REMOVE: + try: + shutil.rmtree(dir_to_remove) + except OSError: + pass + + +# special fixes +inp = 'core/base/src/TVirtualPad.cxx' +outp = inp+'.new' +new_cml = open(outp, 'w') +for line in open(inp): + if '#include "X3DBuffer.h"' == line[0:22]: + line = """//#include "X3DBuffer.h" +typedef struct _x3d_sizeof_ { + int numPoints; + int numSegs; + int numPolys; +} Size3D; +""" + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +inp = 'core/unix/src/TUnixSystem.cxx' +outp = inp+'.new' +new_cml = open(outp, 'w') +for line in open(inp): + if '#include "TSocket.h"' == line[0:20]: + line = """//#include "TSocket.h" +enum ESockOptions { + kSendBuffer, // size of send buffer + kRecvBuffer, // size of receive buffer + kOobInline, // OOB message inline + kKeepAlive, // keep socket alive + kReuseAddr, // allow reuse of local portion of address 5-tuple + kNoDelay, // send without delay + kNoBlock, // non-blocking I/O + kProcessGroup, // socket process group (used for SIGURG and SIGIO) + kAtMark, // are we at out-of-band mark (read only) + kBytesToRead // get number of bytes to read, FIONREAD (read only) +}; + +enum ESendRecvOptions { + kDefault, // default option (= 0) + kOob, // send or receive out-of-band data + kPeek, // peek at incoming message (receive only) + kDontBlock // send/recv as much data as possible without blocking +}; +""" + new_cml.write(line) +new_cml.close() +os.rename(outp, inp) + +inp = 'math/mathcore/src/Fitter.cxx' +if os.path.exists(inp): + outp = inp+'.new' + new_cml = open(outp, 'w') + for line in open(inp): + if '#include "TF1.h"' in line: + continue + new_cml.write(line) + new_cml.close() + os.rename(outp, inp) + +# done +os.chdir(os.path.pardir) + +# debugging: run a test build +if DEBUG_TESTBUILD: + print('running a debug test build') + tb = "test_builddir" + if os.path.exists(tb): + shutil.rmtree(tb) + os.mkdir(tb) + os.chdir(tb) + os.system('cmake ../%s -DCMAKE_INSTALL_PREFIX=../install -Dminimal=ON -Dasimage=OFF' % pkgdir) + os.system('make -j 32') + + +# +## package creation +# +countdown = 0 + +print('adding src ... ') +if not os.path.exists('src'): + os.mkdir('src') +for entry in os.listdir(pkgdir): + fullp = os.path.join(pkgdir, entry) + if entry[0] == '.': + continue + dest = os.path.join('src', entry) + if os.path.isdir(fullp): + if not os.path.exists(dest): + shutil.copytree(fullp, dest) + else: + if not os.path.exists(dest): + shutil.copy2(fullp, dest) + +# +## apply patches +# +os.system('patch -p1 < patches/metacling.diff') +os.system('patch -p1 < patches/scanner.diff') +os.system('patch -p1 < patches/scanner_2.diff') +os.system('patch -p1 < patches/faux_typedef.diff') +os.system('patch -p1 < patches/template_fwd.diff') +os.system('patch -p1 < patches/dep_template.diff') +os.system('patch -p1 < patches/no_long64_t.diff') +os.system('patch -p1 < patches/using_decls.diff') +os.system('patch -p1 < patches/sfinae.diff') + +# done! diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff new file mode 100644 index 0000000000000..d3a2ddb875934 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff @@ -0,0 +1,59 @@ +diff --git a/src/core/dictgen/src/rootcling_impl.cxx b/src/core/dictgen/src/rootcling_impl.cxx +index 90b0dbed10..f6d5a13ee1 100644 +--- a/src/core/dictgen/src/rootcling_impl.cxx ++++ b/src/core/dictgen/src/rootcling_impl.cxx +@@ -3061,6 +3061,7 @@ int GenerateFullDict(std::ostream &dictStream, + EmitStreamerInfo(nsName.c_str()); + } + ++ RScanner::ClassColl_t rejects; + for (auto const & selClass : scan.fSelectedClasses) { + if (!selClass.GetRecordDecl()->isCompleteDefinition()) { + ROOT::TMetaUtils::Error(0, "A dictionary has been requested for %s but there is no declaration!\n", ROOT::TMetaUtils::GetQualifiedName(selClass).c_str()); +@@ -3082,6 +3083,21 @@ int GenerateFullDict(std::ostream &dictStream, + const clang::CXXRecordDecl *CRD = llvm::dyn_cast(selClass.GetRecordDecl()); + + if (CRD) { ++ // Workaround: we check for incomplete bases here and reject those class ++ // definitions if need be. Otherwise when this is detected down stream, some ++ // dictionary code will already have been written ++ bool basesOK = true; ++ for (auto iter = CRD->bases_begin(), end = CRD->bases_end(); iter != end; ++iter) { ++ if (!iter->getType()->getAsCXXRecordDecl()) { ++ basesOK = false; ++ break; ++ } ++ } ++ if (!basesOK) { ++ rejects.push_back(selClass); ++ continue; ++ } ++ + ROOT::TMetaUtils::Info(0, "Generating code for class %s\n", selClass.GetNormalizedName()); + if (TMetaUtils::IsStdClass(*CRD) && 0 != TClassEdit::STLKind(CRD->getName().str() /* unqualified name without template arguement */)) { + // Register the collections +@@ -3094,6 +3110,12 @@ int GenerateFullDict(std::ostream &dictStream, + } + } + ++ // Now (temporarily; see end of this function) remove the rejects ++ for (auto& rej : rejects) { ++ auto pos = std::find(scan.fSelectedClasses.begin(), scan.fSelectedClasses.end(), rej); ++ scan.fSelectedClasses.erase(pos); ++ } ++ + // + // Write all TBuffer &operator>>(...), Class_Name(), Dictionary(), etc. + // first to allow template specialisation to occur before template +@@ -3153,6 +3175,11 @@ int GenerateFullDict(std::ostream &dictStream, + if (finRetCode != 0) return finRetCode; + } + ++ // Re-insert rejects, so that headers etc. are still added ++ for (auto& rej : rejects) { ++ scan.fSelectedClasses.push_back(rej); ++ } ++ + return 0; + } + diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff new file mode 100644 index 0000000000000..1b309d980d15c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff @@ -0,0 +1,16 @@ +diff --git a/src/io/rootpcm/src/rootclingIO.cxx b/src/io/rootpcm/src/rootclingIO.cxx +index e725d2d5c3..257ee0d3ce 100644 +--- a/src/io/rootpcm/src/rootclingIO.cxx ++++ b/src/io/rootpcm/src/rootclingIO.cxx +@@ -202,8 +202,9 @@ bool CloseStreamerInfoROOTFile(bool writeEmptyRootPCM) + for (const auto & dtname : gTypedefsToStore) { + TDataType *dt = (TDataType *)gROOT->GetListOfTypes()->FindObject(dtname.c_str()); + if (!dt) { +- Error("CloseStreamerInfoROOTFile", "Cannot find typedef %s.", dtname.c_str()); +- return false; ++ //Error("CloseStreamerInfoROOTFile", "Cannot find typedef %s.", dtname.c_str()); ++ //return false; ++ continue; // mostly harmless, so skip instead of bailing out + } + if (dt->GetType() == -1) { + dt->Property(); // Force initialization of the bits and property fields. diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff new file mode 100644 index 0000000000000..7c3ee6ca0e7ef --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff @@ -0,0 +1,101 @@ +diff --git a/src/core/metacling/src/TClingCallFunc.cxx b/src/core/metacling/src/TClingCallFunc.cxx +index dd23548f31..14bb306ab5 100644 +--- a/src/core/metacling/src/TClingCallFunc.cxx ++++ b/src/core/metacling/src/TClingCallFunc.cxx +@@ -271,7 +271,7 @@ void *TClingCallFunc::compile_wrapper(const string &wrapper_name, const string & + } + + void TClingCallFunc::collect_type_info(QualType &QT, ostringstream &typedefbuf, std::ostringstream &callbuf, +- string &type_name, bool &isReference, bool &isPointer, int indent_level, ++ string &type_name, int &isReference, bool &isPointer, int indent_level, + bool forArgument) + { + // +@@ -280,7 +280,7 @@ void TClingCallFunc::collect_type_info(QualType &QT, ostringstream &typedefbuf, + // + const FunctionDecl *FD = GetDecl(); + PrintingPolicy Policy(FD->getASTContext().getPrintingPolicy()); +- isReference = false; ++ isReference = 0; + if (QT->isRecordType() && forArgument) { + ROOT::TMetaUtils::GetNormalizedName(type_name, QT, *fInterp, fNormCtxt); + return; +@@ -319,7 +319,8 @@ void TClingCallFunc::collect_type_info(QualType &QT, ostringstream &typedefbuf, + isPointer = true; + QT = cast(QT)->getPointeeType(); + } else if (QT->isReferenceType()) { +- isReference = true; ++ if (QT->isRValueReferenceType()) isReference = 2; ++ else isReference = 1; + QT = cast(QT)->getPointeeType(); + } + // Fall through for the array type to deal with reference/pointer ro array type. +@@ -358,7 +359,7 @@ void TClingCallFunc::make_narg_ctor(const unsigned N, ostringstream &typedefbuf, + QualType Ty = PVD->getType(); + QualType QT = Ty.getCanonicalType(); + string type_name; +- bool isReference = false; ++ int isReference = 0; + bool isPointer = false; + collect_type_info(QT, typedefbuf, callbuf, type_name, + isReference, isPointer, indent_level, true); +@@ -374,7 +375,8 @@ void TClingCallFunc::make_narg_ctor(const unsigned N, ostringstream &typedefbuf, + } + } + if (isReference) { +- callbuf << "(" << type_name.c_str() << "&)*(" << type_name.c_str() << "*)args[" ++ callbuf << "(" << type_name.c_str() << ++ (isReference == 1 ? "&" : "&&") << ")*(" << type_name.c_str() << "*)args[" + << i << "]"; + } else if (isPointer) { + callbuf << "*(" << type_name.c_str() << "**)args[" +@@ -470,7 +472,7 @@ void TClingCallFunc::make_narg_call(const std::string &return_type, const unsign + QualType Ty = PVD->getType(); + QualType QT = Ty.getCanonicalType(); + string type_name; +- bool isReference = false; ++ int isReference = false; + bool isPointer = false; + collect_type_info(QT, typedefbuf, callbuf, type_name, isReference, isPointer, indent_level, true); + +@@ -487,7 +489,8 @@ void TClingCallFunc::make_narg_call(const std::string &return_type, const unsign + } + + if (isReference) { +- callbuf << "(" << type_name.c_str() << "&)*(" << type_name.c_str() << "*)args[" ++ callbuf << "(" << type_name.c_str() << ++ (isReference == 1 ? "&" : "&&") << ")*(" << type_name.c_str() << "*)args[" + << i << "]"; + } else if (isPointer) { + callbuf << "*(" << type_name.c_str() << "**)args[" +@@ -997,7 +1000,7 @@ void TClingCallFunc::make_narg_call_with_return(const unsigned N, const string & + } + + string type_name; +- bool isReference = false; ++ int isReference = false; + bool isPointer = false; + + buf << "if (ret) {\n"; +@@ -1020,7 +1023,7 @@ void TClingCallFunc::make_narg_call_with_return(const unsigned N, const string & + callbuf << "(" << type_name.c_str(); + if (isReference) { + callbuf << "*) (&"; +- type_name += "&"; ++ type_name += (isReference == 1 ? "&" : "&&"); + } else if (isPointer) { + callbuf << "*) ("; + type_name += "*"; +diff --git a/src/core/metacling/src/TClingCallFunc.h b/src/core/metacling/src/TClingCallFunc.h +index 3a65031b09..3b907e4fff 100644 +--- a/src/core/metacling/src/TClingCallFunc.h ++++ b/src/core/metacling/src/TClingCallFunc.h +@@ -85,7 +85,7 @@ private: + + void collect_type_info(clang::QualType& QT, std::ostringstream& typedefbuf, + std::ostringstream& callbuf, std::string& type_name, +- bool& isReference, bool& isPointer, int indent_level, ++ int& isReference, bool& isPointer, int indent_level, + bool forArgument); + + void make_narg_call(const std::string &return_type, const unsigned N, std::ostringstream &typedefbuf, diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff new file mode 100644 index 0000000000000..665f4b0371932 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff @@ -0,0 +1,37 @@ +diff --git a/src/core/dictgen/src/rootcling_impl.cxx b/src/core/dictgen/src/rootcling_impl.cxx +index 90b0dbed10..fefdfc49a5 100644 +--- a/src/core/dictgen/src/rootcling_impl.cxx ++++ b/src/core/dictgen/src/rootcling_impl.cxx +@@ -2872,11 +2872,14 @@ int ExtractClassesListAndDeclLines(RScanner &scan, + !llvm::isa(rDecl) && + classesSet.insert(outerMostClassName).second && + outerMostClassesSet.insert(outerMostClassName).second) { +- classesListForRootmap.push_back(outerMostClassName); ++ if (outerMostClassName.find("Long64_t") == std::string::npos) ++ classesListForRootmap.push_back(outerMostClassName); + } else { +- classesListForRootmap.push_back(normalizedName); ++ if (normalizedName.find("Long64_t") == std::string::npos) ++ classesListForRootmap.push_back(normalizedName); + if (reqName != nullptr && 0 != strcmp(reqName, "") && reqName != normalizedName) { +- classesListForRootmap.push_back(reqName); ++ if (!strstr(reqName, "Long64_t")) ++ classesListForRootmap.push_back(reqName); + } + + // Also register typeinfo::name(), unless we have pseudo-strong typedefs: +@@ -2913,11 +2913,12 @@ int ExtractClassesListAndDeclLines(RScanner &scan, + std::string demangledName = demangledTIName + strlen(typeinfoNameFor); + #endif + // See the operations in TCling::AutoLoad(type_info) +- TClassEdit::TSplitType splitname( demangledName.c_str(), (TClassEdit::EModType)(TClassEdit::kLong64 | TClassEdit::kDropStd) ); ++ TClassEdit::TSplitType splitname( demangledName.c_str() ); + splitname.ShortType(demangledName, TClassEdit::kDropStlDefault | TClassEdit::kDropStd); + + if (demangledName != normalizedName && (!reqName || demangledName != reqName)) { +- classesListForRootmap.push_back(demangledName); ++ if (demangledName.find("Long64_t") == std::string::npos) ++ classesListForRootmap.push_back(demangledName); + } // if demangledName != other name + } else { + #ifdef WIN32 diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff new file mode 100644 index 0000000000000..36bfca97c6a6b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff @@ -0,0 +1,16 @@ +diff --git a/src/core/dictgen/src/Scanner.cxx b/src/core/dictgen/src/Scanner.cxx +index 3d5acac510..34124a40e1 100644 +--- a/src/core/dictgen/src/Scanner.cxx ++++ b/src/core/dictgen/src/Scanner.cxx +@@ -654,6 +654,11 @@ bool RScanner::TreatRecordDeclOrTypedefNameDecl(clang::TypeDecl* typeDecl) + return true; + } + ++ // private declarations lead to uncompilable code, so just ignore ++ if (recordDecl && (recordDecl->getAccess() == AS_private || recordDecl->getAccess() == AS_protected)) { ++ return true; ++ } ++ + // Never select the class templates themselves. + const clang::CXXRecordDecl *cxxdecl = llvm::dyn_cast(recordDecl); + if (cxxdecl && cxxdecl->getDescribedClassTemplate ()) { diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff new file mode 100644 index 0000000000000..e339c9dff05d6 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff @@ -0,0 +1,16 @@ +diff --git a/src/core/dictgen/src/Scanner.cxx b/src/core/dictgen/src/Scanner.cxx +index 3d5acac510..9f639795f1 100644 +--- a/src/core/dictgen/src/Scanner.cxx ++++ b/src/core/dictgen/src/Scanner.cxx +@@ -659,6 +659,11 @@ bool RScanner::TreatRecordDeclOrTypedefNameDecl(clang::TypeDecl* typeDecl) + return true; + } + ++ // hidden decl can not be used interactively ++ if (recordDecl && (recordDecl->getVisibility() == HiddenVisibility)) { ++ return true; ++ } ++ + // Never select the class templates themselves. + const clang::CXXRecordDecl *cxxdecl = llvm::dyn_cast(recordDecl); + if (cxxdecl && cxxdecl->getDescribedClassTemplate ()) { diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff new file mode 100644 index 0000000000000..c4cf2524c2b38 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff @@ -0,0 +1,14 @@ +diff --git a/src/core/metacling/src/TClingCallFunc.cxx b/src/core/metacling/src/TClingCallFunc.cxx +index 92c96215c0..626f230d39 100644 +--- a/src/core/metacling/src/TClingCallFunc.cxx ++++ b/src/core/metacling/src/TClingCallFunc.cxx +@@ -409,7 +409,8 @@ void TClingCallFunc::make_narg_call(const std::string &return_type, const unsign + // we supply the object parameter. + // Therefore we only use it in cases where we know it works and set this variable + // to true when we do. +- bool ShouldCastFunction = !isa(FD) && N == FD->getNumParams(); ++ bool ShouldCastFunction = !isa(FD) && N == FD->getNumParams() \ ++ && !FD->isTemplateInstantiation(); + if (ShouldCastFunction) { + callbuf << "("; + callbuf << "("; diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff new file mode 100644 index 0000000000000..f67a517e76b53 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff @@ -0,0 +1,39 @@ +diff --git a/src/core/dictgen/src/rootcling_impl.cxx b/src/core/dictgen/src/rootcling_impl.cxx +index 90b0dbed10..cc8a527c1c 100644 +--- a/src/core/dictgen/src/rootcling_impl.cxx ++++ b/src/core/dictgen/src/rootcling_impl.cxx +@@ -3678,8 +3678,32 @@ std::string GenerateFwdDeclString(const RScanner &scan, + selectedDecls.begin(), + [](const ROOT::TMetaUtils::AnnotatedRecordDecl& rcd){return rcd.GetRecordDecl();}); + +- for (auto* TD: scan.fSelectedTypedefs) +- selectedDecls.push_back(TD); ++ for (auto* TD: scan.fSelectedTypedefs) { ++ // for typedefs of template instantiations, forward declarations are not ++ // good enough: add full headers instead. ++ clang::QualType t = TD->getUnderlyingType(); ++ clang::CXXRecordDecl* decl = t->getAsCXXRecordDecl(); ++ if (decl && !decl->isInStdNamespace()) { // standard headers are precompiled ++ clang::Decl::Kind kind = decl->getKind(); ++ if (kind == clang::Decl::ClassTemplatePartialSpecialization ++ || kind == clang::Decl::ClassTemplateSpecialization) { ++ clang::SourceManager& s = decl->getASTContext().getSourceManager(); ++ if (!s.isInSystemHeader(decl->getLocation())) { // system hdrs are precompiled ++ clang::FileID fid = s.getFileID(decl->getLocation()); ++ clang::SourceLocation incloc = s.getIncludeLoc(fid); ++ const char* p = s.getCharacterData(incloc); ++ const char* q = p; ++ while (*q != '\n' && *q != '\0') ++q; ++ if (q-p) { ++ fwdDeclString += "#include "; ++ fwdDeclString += std::string(p, q-p+1); ++ continue; ++ } ++ } ++ } ++ } ++ selectedDecls.push_back(TD); ++ } + + // for (auto* VAR: scan.fSelectedVariables) + // selectedDecls.push_back(VAR); diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff new file mode 100644 index 0000000000000..77baa1aa81bfb --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff @@ -0,0 +1,184 @@ +diff --git a/src/core/metacling/src/TClingMethodInfo.cxx b/src/core/metacling/src/TClingMethodInfo.cxx +index 0dbf27a298..bbfb6aa962 100644 +--- a/src/core/metacling/src/TClingMethodInfo.cxx ++++ b/src/core/metacling/src/TClingMethodInfo.cxx +@@ -82,6 +82,42 @@ private: + Iterator fEnd; + }; + ++class TClingMethodInfo::UsingIterator ++{ ++public: ++ typedef clang::UsingDecl::shadow_iterator Iterator; ++ ++ UsingIterator(cling::Interpreter* interp, Iterator begin, Iterator end) : fInterp(interp), fIter(begin), fEnd(end) {} ++ explicit UsingIterator(cling::Interpreter* interp, clang::UsingDecl *decl) : ++ fInterp(interp), fIter(decl->shadow_begin()), fEnd(decl->shadow_end()) {} ++ ++ FunctionDecl *operator* () const { ++ clang::ConstructorUsingShadowDecl* shadow_ctor = llvm::dyn_cast(*fIter); ++ if (shadow_ctor) { ++ clang::CXXConstructorDecl* base_ctor = llvm::dyn_cast(shadow_ctor->getTargetDecl()); ++ if (base_ctor) { ++ if (base_ctor->isImplicit()) return nullptr; // skip as Cling will generate these anyway ++ return fInterp->getSema().findInheritingConstructor(base_ctor->getLocStart(), base_ctor, shadow_ctor); ++ } ++ } ++ return llvm::dyn_cast((*fIter)->getTargetDecl()); } ++ FunctionDecl *operator-> () const { return this->operator*(); } ++ UsingIterator & operator++ () { ++fIter; return *this; } ++ UsingIterator operator++ (int) { ++ UsingIterator tmp(fInterp, fIter,fEnd); ++ ++(*this); ++ return tmp; ++ } ++ bool operator!() { return fIter == fEnd; } ++ operator bool() { return fIter != fEnd; } ++ ++private: ++ cling::Interpreter* fInterp; ++ Iterator fIter; ++ Iterator fEnd; ++}; ++ ++ + TClingMethodInfo::TClingMethodInfo(const TClingMethodInfo &rhs) : + fInterp(rhs.fInterp), + fContexts(rhs.fContexts), +@@ -90,20 +126,27 @@ TClingMethodInfo::TClingMethodInfo(const TClingMethodInfo &rhs) : + fIter(rhs.fIter), + fTitle(rhs.fTitle), + fTemplateSpecIter(nullptr), +- fSingleDecl(rhs.fSingleDecl) ++ fSingleDecl(rhs.fSingleDecl), ++ fUsingIter(nullptr) + { + if (rhs.fTemplateSpecIter) { + // The SpecIterator query the decl. + R__LOCKGUARD(gInterpreterMutex); + fTemplateSpecIter = new SpecIterator(*rhs.fTemplateSpecIter); + } ++ ++ if (rhs.fUsingIter) { ++ // Internal loop over using shadow decls active ++ R__LOCKGUARD(gInterpreterMutex); ++ fUsingIter = new UsingIterator(*rhs.fUsingIter); ++ } + } + + + TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, + TClingClassInfo *ci) + : fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(""), +- fTemplateSpecIter(0), fSingleDecl(0) ++ fTemplateSpecIter(0), fSingleDecl(0), fUsingIter(0) + { + R__LOCKGUARD(gInterpreterMutex); + +@@ -132,7 +175,7 @@ TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, + TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, + const clang::FunctionDecl *FD) + : fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(""), +- fTemplateSpecIter(0), fSingleDecl(FD) ++ fTemplateSpecIter(0), fSingleDecl(FD), fUsingIter(0) + { + + } +@@ -140,6 +183,7 @@ TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, + TClingMethodInfo::~TClingMethodInfo() + { + delete fTemplateSpecIter; ++ delete fUsingIter; + } + + TDictionary::DeclId_t TClingMethodInfo::GetDeclId() const +@@ -162,6 +206,9 @@ const clang::FunctionDecl *TClingMethodInfo::GetMethodDecl() const + if (fTemplateSpecIter) + return *(*fTemplateSpecIter); + ++ if (fUsingIter) ++ return *(*fUsingIter); ++ + return llvm::dyn_cast(*fIter); + } + +@@ -204,6 +251,8 @@ void TClingMethodInfo::Init(const clang::FunctionDecl *decl) + delete fTemplateSpecIter; + fTemplateSpecIter = 0; + fSingleDecl = decl; ++ delete fUsingIter; ++ fUsingIter = 0; + } + + void *TClingMethodInfo::InterfaceMethod(const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const +@@ -224,6 +273,10 @@ bool TClingMethodInfo::IsValidSlow() const + R__LOCKGUARD(gInterpreterMutex); + cling::Interpreter::PushTransactionRAII RAII(fInterp); + return *(*fTemplateSpecIter); ++ } else if (fUsingIter) { ++ R__LOCKGUARD(gInterpreterMutex); ++ cling::Interpreter::PushTransactionRAII RAII(fInterp); ++ return *(*fUsingIter); + } + return *fIter; + } +@@ -397,6 +450,13 @@ int TClingMethodInfo::InternalNext() + } else { + return 1; + } ++ } else if (fUsingIter) { ++ while (++(*fUsingIter)) { ++ if (*(*fUsingIter)) ++ return 1; ++ } ++ delete fUsingIter; fUsingIter = 0; ++ ++fIter; + } else { + ++fIter; + } +@@ -444,6 +504,17 @@ int TClingMethodInfo::InternalNext() + } + } + ++ clang::UsingDecl* udecl = ++ llvm::dyn_cast(*fIter); ++ ++ if ( udecl ) { ++ // A UsingDecl potentially brings in a bunch of functions, so ++ // start an inner loop to catch them all ++ delete fUsingIter; ++ fUsingIter = new UsingIterator(fInterp, udecl); ++ return 1; ++ } ++ + // Return if this decl is a function or method. + if (llvm::isa(*fIter)) { + // Iterator is now valid. +diff --git a/src/core/metacling/src/TClingMethodInfo.h b/src/core/metacling/src/TClingMethodInfo.h +index 8b7f50bf1c..7e3156def0 100644 +--- a/src/core/metacling/src/TClingMethodInfo.h ++++ b/src/core/metacling/src/TClingMethodInfo.h +@@ -52,6 +52,7 @@ class TClingTypeInfo; + class TClingMethodInfo { + private: + class SpecIterator; ++ class UsingIterator; + + cling::Interpreter *fInterp; // Cling interpreter, we do *not* own. + llvm::SmallVector fContexts; // Set of DeclContext that we will iterate over. +@@ -61,13 +62,14 @@ private: + std::string fTitle; // The meta info for the method. + SpecIterator *fTemplateSpecIter; // Iter over template specialization. [We own] + const clang::FunctionDecl *fSingleDecl; // The single member ++ UsingIterator *fUsingIter; // for internal loop over using functions + + bool IsValidSlow() const; + + public: + explicit TClingMethodInfo(cling::Interpreter *interp) + : fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(""), +- fTemplateSpecIter(0), fSingleDecl(0) {} ++ fTemplateSpecIter(0), fSingleDecl(0), fUsingIter(0) {} + + TClingMethodInfo(const TClingMethodInfo&); + diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/__init__.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/__init__.py new file mode 100644 index 0000000000000..848c37a25e63e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/__init__.py @@ -0,0 +1 @@ +from . import loader diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cling_config.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cling_config.py new file mode 100644 index 0000000000000..d0c642c226b5c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cling_config.py @@ -0,0 +1,28 @@ +from __future__ import print_function +import os, sys, subprocess + +MYHOME = os.path.dirname(__file__) + +def main(): + if len(sys.argv) == 2: + options = sys.argv[1] + + if options == '--cmake': + print(os.path.join(MYHOME, "cmake")) + return 0 + + if options == '--cppflags': + options = '--cflags' + + if options != '--help': + try: + cli_arg = subprocess.check_output( + [os.path.join(MYHOME, 'bin', 'root-config'), options], + stderr=subprocess.STDOUT) + print(cli_arg.decode("utf-8").strip()) + return 0 + except subprocess.CalledProcessError: + pass + + print('Usage: cling-config [--cflags] [--cppflags] [--cmake]') + return 1 diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cppyy_generator.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cppyy_generator.py new file mode 100644 index 0000000000000..b90cd78116e74 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_cppyy_generator.py @@ -0,0 +1,703 @@ +#!/usr/bin/env python + +"""Cppyy binding description generator.""" +from __future__ import print_function +import argparse +import gettext +import inspect +import json +import logging +import os +import re +import sys +import traceback + +from clang.cindex import AccessSpecifier, Config, CursorKind, Diagnostic, Index, SourceRange, TokenKind, TypeKind + + +class HelpFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter): + pass + + +logger = logging.getLogger(__name__) +gettext.install(__name__) + +# Keep PyCharm happy. +_ = _ + +EXPR_KINDS = [ + CursorKind.UNEXPOSED_EXPR, + CursorKind.CONDITIONAL_OPERATOR, CursorKind.UNARY_OPERATOR, CursorKind.BINARY_OPERATOR, + CursorKind.INTEGER_LITERAL, CursorKind.FLOATING_LITERAL, CursorKind.STRING_LITERAL, + CursorKind.CXX_BOOL_LITERAL_EXPR, CursorKind.CXX_STATIC_CAST_EXPR, CursorKind.DECL_REF_EXPR +] +TEMPLATE_KINDS = [ + CursorKind.TYPE_REF, CursorKind.TEMPLATE_REF, CursorKind.NAMESPACE_REF + ] + EXPR_KINDS +VARIABLE_KINDS = [CursorKind.VAR_DECL, CursorKind.FIELD_DECL] +FN_KINDS = [CursorKind.CXX_METHOD, CursorKind.FUNCTION_DECL, CursorKind.FUNCTION_TEMPLATE, + CursorKind.CONSTRUCTOR, CursorKind.DESTRUCTOR, CursorKind.CONVERSION_FUNCTION] +# +# All Qt-specific logic is driven from these identifiers. Setting them to +# nonsense values would effectively disable all Qt-specific logic. +# +Q_SIGNALS = "Q_SIGNALS" + + +class SourceProcessor(object): + """ + Centralise all processing of the source. + Ideally, we'd use Clang for everything, but on occasion, we'll need access + to the source, without pre-processing. + """ + def __init__(self, compile_flags, verbose): + super(SourceProcessor, self).__init__() + self.compile_flags = compile_flags + ["-x", "c++"] + self.verbose = verbose + self.unpreprocessed_source = [] + self.source = None + + def compile(self, source): + """ + Use Clang to parse the source and return its AST. + :param source: The source file. + """ + if source != self.source: + self.unpreprocessed_source = [] + self.source = source + if self.verbose: + logger.info(" ".join(self.compile_flags + [self.source])) + tu = Index.create().parse(self.source, self.compile_flags) + # + # Stash ourselves on the tu for later use. + # + tu.source_processor = self + return tu + + def unpreprocessed(self, extent, nl=" "): + """ + Read the given range from the raw source. + + :param extent: The range of text required. + :param nl: What \n should be replaced by. + """ + assert self.source, "Must call compile() first!" + if not self.unpreprocessed_source: + self.unpreprocessed_source = self._read(self.source) + text = self._extract(self.unpreprocessed_source, extent) + if nl != "\n": + text = text.replace("\n", nl) + return text + + def _read(self, source): + lines = [] + with open(source, "rU") as f: + for line in f: + lines.append(line) + return lines + + def _extract(self, lines, extent): + extract = lines[extent.start.line - 1:extent.end.line] + if extent.start.line == extent.end.line: + extract[0] = extract[0][extent.start.column - 1:extent.end.column - 1] + else: + extract[0] = extract[0][extent.start.column - 1:] + extract[-1] = extract[-1][:extent.end.column - 1] + # + # Return a single buffer of text. + # + return "".join(extract) + + +class Info(dict): + def __init__(self, kind, cursor): + super(Info, self).__init__() + logger.debug(_("Processing object {}").format(item_describe(cursor))) + self["kind"] = kind + self["name"] = cursor.spelling + location = cursor.extent.start + self["row:col"] = "{}:{}".format(location.line, location.column) + if cursor.brief_comment: + self["brief_comment"] = cursor.brief_comment + if cursor.raw_comment: + self["raw_comment"] = cursor.raw_comment + + +def cursor_parents(cursor): + """ + A helper function which returns the parents of a cursor in the forms: + - A::B::C::...N for non-top level entities. + - filename.h for top level entities. + - "" in exceptional cases of having no parents. + """ + parents = "" + parent = cursor.semantic_parent + while parent and parent.kind != CursorKind.TRANSLATION_UNIT: + parents = parent.spelling + "::" + parents + parent = parent.semantic_parent + if parent and not parents: + return os.path.basename(parent.spelling) + return parents[:-2] + + +def item_describe(item, alternate_spelling=None): + """ + A helper function providing a standardised description for an item, + which may be a cursor. + """ + if isinstance(item, str): + return item + if alternate_spelling is None: + text = item.spelling + else: + text = alternate_spelling + return "{} on line {} '{}::{}'".format(item.kind.name, item.extent.start.line, cursor_parents(item), text) + + +def parameters_fixup(level, sip, key): + """ + Clang seems to replace template parameter N of the form "T" with + "type-parameter--N"...so we need to put "T" back. + + :param level: Template nesting level. + :param sip: The sip. + :param key: The key in the sip which may need + fixing up. + :return: + """ + for parent in reversed(level): + if parent.kind in [CursorKind.CLASS_TEMPLATE, CursorKind.CLASS_TEMPLATE_PARTIAL_SPECIALIZATION]: + for clang_parameter, real_parameter in enumerate(parent.template_params): + clang_parameter = "type-parameter-{}-{}".format(parent.template_level, clang_parameter) + real_parameter = real_parameter["name"] + # + # Depending on the type of the SIP entry, replace the Clang + # version of the value with the actual version. + # + value = sip[key] + if isinstance(value, str): + sip[key] = value.replace(clang_parameter, real_parameter) + elif isinstance(value, list): + for j, item in enumerate(value): + sip[key][j] = item.replace(clang_parameter, real_parameter) + elif isinstance(value, dict): + for j, item in value.items(): + sip[key][j] = item.replace(clang_parameter, real_parameter) + + +class CppyyGenerator(object): + def __init__(self, compile_flags, dump_modules=False, dump_items=False, dump_includes=False, + dump_privates=False, verbose=False): + """ + Constructor. + + :param compile_flags: The compile flags for the file. + :param dump_modules: Turn on tracing for modules. + :param dump_items: Turn on tracing for container members. + :param dump_includes: Turn on diagnostics for include files. + :param dump_privates: Turn on diagnostics for omitted private items. + :param verbose: Turn on diagnostics for command lines. + """ + self.dump_modules = dump_modules + self.dump_items = dump_items + self.dump_includes = dump_includes + self.dump_privates = dump_privates + self.verbose = verbose + self.diagnostics = set() + self.tu = None + self.source_processor = SourceProcessor(compile_flags, verbose) + + def create_mapping(self, h_files): + info = [] + for h_file in h_files: + logger.debug(_("Processing {}").format(h_file)) + file_info = self.create_file_mapping(h_file) + info.append(file_info) + return info + + def create_file_mapping(self, h_file): + """ + Generate a dict describing the given source header file. This is the + main entry point for this class. + + :param h_file: The source header file of interest. + :returns: A dict corresponding to the h_file. + """ + # + # Use Clang to parse the source and return its AST. + # + self.tu = self.source_processor.compile(h_file) + m = (logging.ERROR - logging.WARNING)/(Diagnostic.Error - Diagnostic.Warning) + c = logging.ERROR - (Diagnostic.Error * m) + for diag in self.tu.diagnostics: + # + # We expect to be run over hundreds of files. Any parsing issues are likely to be very repetitive. + # So, to avoid bothering the user, we suppress duplicates. + # + loc = diag.location + msg = "{}:{}[{}] {}".format(loc.file, loc.line, loc.column, diag.spelling) + if diag.spelling == "#pragma once in main file": + continue + if msg in self.diagnostics: + continue + self.diagnostics.add(msg) + logger.log(m * diag.severity + c, "While parsing: {}".format(msg)) + if self.dump_includes: + logger.info(_("File {}").format(h_file)) + for include in sorted(set(self.tu.get_includes())): + logger.info(_(" #includes {}").format(include.include.name)) + # + # Run through the top level children in the translation unit. + # + info = self._container_get(self.tu.cursor, [], h_file) + return info + + def _container_get(self, container, level, h_file): + """ + Generate the (recursive) translation for a class or namespace. + + :param container: A class or namespace. + :param level: Recursion level controls indentation. + :param h_file: The source header file of interest. + :return: Info(). + """ + def mark_forward_kinds(kind, definition): + has_body = False + # + # Could this be a forward declaration? + # + for token in definition.get_tokens(): + if token.kind == TokenKind.PUNCTUATION and token.spelling == "{": + has_body = True + if not has_body: + kind = "forward " + kind + return kind + + if container.kind == CursorKind.CLASS_DECL: + kind = mark_forward_kinds("class", container) + elif container.kind in [CursorKind.CLASS_TEMPLATE, CursorKind.CLASS_TEMPLATE_PARTIAL_SPECIALIZATION]: + kind = mark_forward_kinds("template class", container) + # + # What level of template parameter is on this container? + # + container.template_level = 0 + for parent in reversed(level): + if parent.kind in [CursorKind.CLASS_TEMPLATE, CursorKind.CLASS_TEMPLATE_PARTIAL_SPECIALIZATION]: + container.template_level = parent.template_level + 1 + break + container.template_params = [] + elif container.kind == CursorKind.STRUCT_DECL: + kind = mark_forward_kinds("struct", container) + elif container.kind == CursorKind.UNION_DECL: + kind = mark_forward_kinds("union", container) + elif container.kind == CursorKind.NAMESPACE: + kind = "namespace" + elif container.kind == CursorKind.TRANSLATION_UNIT: + kind = "file" + else: + logger.error(_("Unknown container kind {}").format(container.kind)) + kind = container.kind + info = Info(kind, container) + children = [] + info["children"] = children + template_count_stack = [] + template_info_stack = [] + template_stack_index = -1 + is_signal = False + for child in container.get_children(): + # + # Only emit items in the translation unit. + # + if child.location.file.name != self.tu.spelling: + continue + if child.access_specifier == AccessSpecifier.PRIVATE: + continue + if child.kind in FN_KINDS: + child_info = self._fn_get(container, child, level + [container], is_signal) + children.append(child_info) + elif child.kind == CursorKind.ENUM_DECL: + child_info = self._enum_get(container, child, level.append(container)) + children.append(child_info) + elif child.kind == CursorKind.CXX_ACCESS_SPEC_DECL: + is_signal = self._get_access_specifier(child) + elif child.kind == CursorKind.TYPEDEF_DECL: + child_info = self.typedef_decl(container, child, level + [container], h_file) + # + # Structs and unions are emitted twice: + # + # - first as just the bare fields + # - then as children of the typedef + # + if "type" in child_info and child_info["type"]["kind"] in ("struct", "union"): + assert children[-1] == child_info["type"] + children.pop() + children.append(child_info) + elif child.kind in [CursorKind.NAMESPACE, CursorKind.CLASS_DECL, CursorKind.CLASS_TEMPLATE, + CursorKind.CLASS_TEMPLATE_PARTIAL_SPECIALIZATION, CursorKind.STRUCT_DECL, + CursorKind.UNION_DECL]: + child_info = self._container_get(child, level + [container], h_file) + children.append(child_info) + elif child.kind in [CursorKind.FIELD_DECL]: + child_info = self._var_get("field", child, level + [container]) + children.append(child_info) + elif child.kind in [CursorKind.VAR_DECL]: + child_info = self._var_get("variable", child, level + [container]) + children.append(child_info) + elif child.kind in [CursorKind.TEMPLATE_TYPE_PARAMETER, CursorKind.TEMPLATE_NON_TYPE_PARAMETER, + CursorKind.TEMPLATE_TEMPLATE_PARAMETER]: + info["parameters"] = container.template_params + param_info = Info("parameter", child) + container.template_params.append(param_info) + elif child.kind == CursorKind.TEMPLATE_REF: + # + # Create an entry to collect information for this level of template arguments. + # + tmp = Config().lib.clang_Type_getNumTemplateArguments(container.type) + template_count_stack.append(tmp) + template_info = Info("template", child) + template_info["parameters"] = [] + if template_stack_index == -1: + template_info_stack.append(template_info) + info["type"] = template_info + else: + # + # Non-first template_infos are just parameters. + # + template_info_stack[template_stack_index]["parameters"].append(template_info) + template_stack_index += 1 + elif child.kind == CursorKind.TYPE_REF: + if template_stack_index > -1: + # + # This is a template parameter. + # + template_parameters = template_info_stack[0]["parameters"] + for i in range(template_stack_index): + template_parameters = template_parameters[-1]["parameters"] + template_parameters.append(child.spelling) + template_count_stack[template_stack_index] -= 1 + if template_count_stack[template_stack_index] == 0: + template_stack_index -= 1 + else: + # + # Not a template. + # + child_info = Info("type", child) + info["type"] = child_info + else: + CppyyGenerator._report_ignoring(child, "unusable") + if self.dump_items: + logger.info(_("Processing {}").format(item_describe(child))) + return info + + def _get_access_specifier(self, member): + """ + In principle, we just want member.access_specifier.name.lower(), except that we need to handle: + + Q_SIGNALS:|signals: + + which are converted by the preprocessor...so read the original text. + + :param member: The access_specifier. + :return: + """ + access_specifier_text = self.source_processor.unpreprocessed(member.extent) + if access_specifier_text in (Q_SIGNALS + ":", "signals:"): + return True + return False + + def _enum_get(self, container, enum, level): + info = Info("enum", enum) + enumerations = [] + info["enumerations"] = enumerations + for enumeration in enum.get_children(): + # + # Skip visibility attributes and the like. + # + child_info = {} + if enumeration.kind == CursorKind.ENUM_CONSTANT_DECL: + child_info["name"] = enumeration.spelling + child_info["value"] = enumeration.enum_value + enumerations.append(child_info) + else: + CppyyGenerator._report_ignoring(enumeration, "unusable") + return info + + def _fn_get(self, container, fn, level, is_signal): + """ + Generate the translation for a function. + + :param container: A class or namespace. + :param fn: The function object. + :param level: Recursion level controls indentation. + :param is_signal: Is this a Qt signal? + :return: A string. + """ + info = Info("function", fn) + parameters_fixup(level, info, "name") + if fn.kind not in [CursorKind.CONSTRUCTOR, CursorKind.DESTRUCTOR]: + info["type"] = fn.result_type.spelling + parameters_fixup(level, info, "type") + parameters = [] + info["parameters"] = parameters + for child in fn.get_children(): + if child.kind == CursorKind.PARM_DECL: + # + # So far so good, but we need any default value. + # + child_info = self._fn_get_parameter(fn, child) + parameters_fixup(level, child_info, "type") + parameters.append(child_info) + elif child.kind in [CursorKind.COMPOUND_STMT, CursorKind.CXX_OVERRIDE_ATTR, + CursorKind.MEMBER_REF, CursorKind.DECL_REF_EXPR, CursorKind.CALL_EXPR, + CursorKind.UNEXPOSED_ATTR, CursorKind.VISIBILITY_ATTR] + TEMPLATE_KINDS: + # + # Ignore: + # + # CursorKind.COMPOUND_STMT: Function body. + # CursorKind.CXX_OVERRIDE_ATTR: The "override" keyword. + # CursorKind.MEMBER_REF, CursorKind.DECL_REF_EXPR, CursorKind.CALL_EXPR: Constructor initialisers. + # TEMPLATE_KINDS: The result type. + # + pass + else: + CppyyGenerator._report_ignoring(child, "unusable") + return info + + QUALIFIED_ID = re.compile("(?:[a-z_][a-z_0-9]*::)*([a-z_][a-z_0-9]*)", re.I) + + def _fn_get_parameter(self, fn, parameter): + """ + The parser does not seem to provide access to the complete text of a parameter. + This makes it hard to find any default values, so we: + + 1. Run the lexer from "here" to the end of the file, bailing out when we see the "," + or a ")" marking the end. + 2. Watch for the assignment. + """ + info = Info("parameter", parameter) + info["type"] = parameter.type.spelling + for member in parameter.get_children(): + if member.kind.is_expression(): + # + # Get the text after the "=". Macro expansion can make relying on tokens fraught...and + # member.get_tokens() simply does not always return anything. + # + possible_extent = SourceRange.from_locations(parameter.extent.start, fn.extent.end) + text = "" + bracket_level = 0 + found_start = False + found_end = False + was_punctuated = True + for token in self.tu.get_tokens(extent=possible_extent): + # + # Now count balanced anything-which-can-contain-a-comma till we get to the end. + # + if bracket_level == 0 and token.spelling == "=" and not found_start: + found_start = True + elif bracket_level == 0 and token.spelling in ",)": + found_end = True + text = text[1:] + break + elif token.spelling in "<(": + bracket_level += 1 + elif token.spelling in ")>": + bracket_level -= 1 + if found_start: + if (token.kind != TokenKind.PUNCTUATION and not was_punctuated) or (token.spelling in "*&"): + text += " " + text += token.spelling + was_punctuated = token.kind == TokenKind.PUNCTUATION + if not found_end and text: + raise RuntimeError(_("No end found for {}::{}, '{}'").format(fn.spelling, parameter.spelling, + text)) + info["default"] = text + return info + + def typedef_decl(self, container, typedef, level, h_file): + """ + Generate the translation for a typedef. + + :param container: A class or namespace. + :param typedef: The typedef object. + :param level: Recursion level controls indentation. + :param h_file: The source header file of interest. + :return: Info(). + """ + info = Info("typedef", typedef) + template_count_stack = [] + template_info_stack = [] + template_stack_index = -1 + parameters = None + for child in typedef.get_children(): + if child.kind in [CursorKind.STRUCT_DECL, CursorKind.UNION_DECL]: + child_info = self._container_get(child, level, h_file) + info["type"] = child_info + elif child.kind == CursorKind.TEMPLATE_REF: + # + # Create an entry to collect information for this level of template arguments. + # + tmp = Config().lib.clang_Type_getNumTemplateArguments(typedef.type) + if tmp == -1: + logger.error(_("Unexpected template_arg_count={}").format(tmp)) + # + # Just a WAG... + # + tmp = 1 + template_count_stack.append(tmp) + template_info = Info("template", child) + template_info["parameters"] = [] + if template_stack_index == -1: + template_info_stack.append(template_info) + info["type"] = template_info + else: + # + # Non-first template_infos are just parameters. + # + template_info_stack[template_stack_index]["parameters"].append(template_info) + template_stack_index += 1 + elif child.kind == CursorKind.TYPE_REF: + if template_stack_index > -1: + # + # This is a template parameter. + # + template_parameters = template_info_stack[0]["parameters"] + for i in range(template_stack_index): + template_parameters = template_parameters[-1]["parameters"] + template_parameters.append(child.spelling) + template_count_stack[template_stack_index] -= 1 + if template_count_stack[template_stack_index] == 0: + template_stack_index -= 1 + else: + # + # Not a template. + # + child_info = Info("type", child) + info["type"] = child_info + elif child.kind == CursorKind.PARM_DECL: + # + # This must be a function type. TODO: what if there are no PARM_DECLs? + # + if parameters is None: + child_info = Info("function", typedef) + info["type"] = child_info + # + # TODO: this is actually the signature: + # + # "int (Object::*)(QMetaObject::Call, int, void **)" + # + child_info["type"] = typedef.underlying_typedef_type.spelling + parameters = [] + child_info["parameters"] = parameters + child_info = self._fn_get_parameter(typedef, child) + parameters.append(child_info) + else: + CppyyGenerator._report_ignoring(child, "unusable") + if "type" not in info: + info["type"] = typedef.underlying_typedef_type.spelling + parameters_fixup(level, info, "type") + return info + + def _var_get(self, tag, parent, level): + """ + Generate the translation for a type. + + :param tag: "typedef", "variable" etc. + :param parent: The typed object. + :param level: Recursion level controls indentation. + :return: Info(). + """ + info = Info(tag, parent) + for child in parent.get_children(): + if child.kind == CursorKind.TYPE_REF: + info["type"] = child.spelling + parameters_fixup(level, info, "type") + else: + CppyyGenerator._report_ignoring(child, "unusable") + if "type" not in info: + info["type"] = parent.type.spelling + parameters_fixup(level, info, "type") + return info + + @staticmethod + def _report_ignoring(child, reason): + logger.debug(_("Ignoring {} {}").format(reason, item_describe(child))) + + +def main(argv=None): + """ + Takes a set of C++ header files and generate a JSON output file describing + the objects found in them. This output is intended to support more + convenient access to a set of cppyy-supported bindings. + + Examples: + + INC=/usr/include + QT5=$INC/x86_64-linux-gnu/qt5 + KF5=$INC/KF5 + INCDIRS="\\\\-I$KF5/KConfigCore;\\\\-I$QT5/QtXml;\\\\-I$QT5/QtCore" + STDDIRS="\\\\-I$Qt5/mkspecs/linux-g++-64\\\\;-I$KF5;\\\\-I$QT5" + FLAGS="\\\\-fvisibility=hidden;\\\-D__PIC__;\\\\-Wno-macro-redefined;\\\\-std=c++14" + + cppyy-generator --flags "$FLAGS;$INCDIRS;$STDDIRS" KF5/Config/Config.map $INC/KF5/KConfigCore/* + """ + if argv is None: + argv = sys.argv + parser = argparse.ArgumentParser(epilog=inspect.getdoc(main), + formatter_class=HelpFormatter) + parser.add_argument("-v", "--verbose", action="store_true", default=False, help=_("Enable verbose output")) + parser.add_argument("--flags", default="", + help=_("Semicolon-separated C++ compile flags to use, escape leading - or -- with \\")) + parser.add_argument("--libclang", help=_("libclang library to use for parsing")) + parser.add_argument("output", help=_("Output filename to write")) + parser.add_argument("sources", nargs="+", help=_("C++ headers to process")) + try: + args = parser.parse_args(argv[1:]) + if args.verbose: + logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s %(levelname)s: %(message)s') + else: + logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + flags = [] + for f in args.flags.lstrip().split(";"): + if f.startswith("\\-\\-"): + flags.append("--" + f[4:]) + elif f.startswith("\\-"): + flags.append("-" + f[2:]) + elif f: + flags.append(f) + # + # Load the given libclang. + # + if args.libclang: + Config.set_library_file(args.libclang) + lib = Config().lib + import ctypes + from clang.cindex import Type + items = [ + ("clang_Type_getNumTemplateArguments", [Type], ctypes.c_size_t), + ] + for item in items: + func = getattr(lib, item[0]) + if len(item) >= 2: + func.argtypes = item[1] + + if len(item) >= 3: + func.restype = item[2] + + if len(item) == 4: + func.errcheck = item[3] + # + # Generate! + # + g = CppyyGenerator(flags, verbose=args.verbose) + mapping = g.create_mapping(args.sources) + with open(args.output, "w") as f: + json.dump(mapping, f, indent=1, sort_keys=True) + return 0 + except Exception as e: + tbk = traceback.format_exc() + print(tbk) + return 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_genreflex.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_genreflex.py new file mode 100644 index 0000000000000..5df32a2752f38 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_genreflex.py @@ -0,0 +1,15 @@ +from __future__ import print_function +import os, sys, subprocess + +MYHOME = os.path.dirname(__file__) + +def main(): + if len(sys.argv) == 2 and \ + (sys.argv[1] == '--cflags' or sys.argv[1] == '--cppflags'): + print('-I%s/include' % (MYHOME,)) + return 0 + os.environ['LD_LIBRARY_PATH'] = os.path.join(MYHOME, 'lib') + genreflex = os.path.join(MYHOME, 'bin', 'genreflex') + if not os.path.exists(genreflex): + raise RuntimeError("genreflex not installed in standard location") + return subprocess.call([genreflex] + sys.argv[1:]) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_rootcling.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_rootcling.py new file mode 100644 index 0000000000000..84ce2cada1af9 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/_rootcling.py @@ -0,0 +1,10 @@ +import os, sys, subprocess + +MYHOME = os.path.dirname(__file__) + +def main(): + os.environ['LD_LIBRARY_PATH'] = os.path.join(MYHOME, 'lib') + rootcling = os.path.join(MYHOME, 'bin', 'rootcling') + if not os.path.exists(rootcling): + raise RuntimeError("rootcling not installed in standard location") + return subprocess.call([rootcling] + sys.argv[1:]) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/bindings_utils.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/bindings_utils.py new file mode 100644 index 0000000000000..3f924280f5650 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/bindings_utils.py @@ -0,0 +1,339 @@ +""" +Support utilities for bindings. +""" +import glob +import json +from distutils.command.clean import clean +from distutils.util import get_platform +from setuptools.command.build_py import build_py +from wheel.bdist_wheel import bdist_wheel +import gettext +import inspect +import os +import re +import setuptools +import subprocess +import sys +try: + # + # Python2. + # + from imp import load_source +except ImportError: + # + # Python3. + # + import importlib.util + + def load_source(module_name, file_path): + spec = importlib.util.spec_from_file_location(module_name, file_path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + # Optional; only necessary if you want to be able to import the module + # by name later. + sys.modules[module_name] = module + return module + +import cppyy + + +gettext.install(__name__) + +# Keep PyCharm happy. +_ = _ + + +PRIMITIVE_TYPES = re.compile(r"\b(bool|char|short|int|unsigned|long|float|double)\b") + + +def initialise(pkg, __init__py, cmake_shared_library_prefix, cmake_shared_library_suffix): + """ + Initialise the bindings module. + + :param pkg: The bindings package. + :param __init__py: Base __init__.py file of the bindings. + :param cmake_shared_library_prefix: + ${cmake_shared_library_prefix} + :param cmake_shared_library_suffix: + ${cmake_shared_library_suffix} + """ + def add_to_pkg(file, keyword, simplenames, children): + def map_operator_name(name): + """ + Map the given C++ operator name on the python equivalent. + """ + CPPYY__idiv__ = "__idiv__" + CPPYY__div__ = "__div__" + gC2POperatorMapping = { + "[]": "__getitem__", + "()": "__call__", + "/": CPPYY__div__, + "%": "__mod__", + "**": "__pow__", + "<<": "__lshift__", + ">>": "__rshift__", + "&": "__and__", + "|": "__or__", + "^": "__xor__", + "~": "__inv__", + "+=": "__iadd__", + "-=": "__isub__", + "*=": "__imul__", + "/=": CPPYY__idiv__, + "%=": "__imod__", + "**=": "__ipow__", + "<<=": "__ilshift__", + ">>=": "__irshift__", + "&=": "__iand__", + "|=": "__ior__", + "^=": "__ixor__", + "==": "__eq__", + "!=": "__ne__", + ">": "__gt__", + "<": "__lt__", + ">=": "__ge__", + "<=": "__le__", + } + + op = name[8:] + result = gC2POperatorMapping.get(op, None) + if result: + return result + print(children) + + bTakesParams = 1 + if op == "*": + # dereference v.s. multiplication of two instances + return "__mul__" if bTakesParams else "__deref__" + elif op == "+": + # unary positive v.s. addition of two instances + return "__add__" if bTakesParams else "__pos__" + elif op == "-": + # unary negative v.s. subtraction of two instances + return "__sub__" if bTakesParams else "__neg__" + elif op == "++": + # prefix v.s. postfix increment + return "__postinc__" if bTakesParams else "__preinc__" + elif op == "--": + # prefix v.s. postfix decrement + return "__postdec__" if bTakesParams else "__predec__" + # might get here, as not all operator methods are handled (new, delete, etc.) + return name + + # + # Add level 1 objects to the pkg namespace. + # + if len(simplenames) > 1: + return + # + # Ignore some names based on heuristics. + # + simplename = simplenames[0] + if simplename in ('void', 'sizeof', 'const'): + return + if simplename[0] in '0123456789': + # + # Don't attempt to look up numbers (i.e. non-type template parameters). + # + return + if PRIMITIVE_TYPES.search(simplename): + return + if simplename.startswith("operator"): + simplename = map_operator_name(simplename) + # + # Classes, variables etc. + # + try: + entity = getattr(cppyy.gbl, simplename) + except AttributeError as e: + print(_("Unable to lookup {}:{} cppyy.gbl.{} ({})").format(file, keyword, simplename, children)) + #raise + else: + if getattr(entity, "__module__", None) == "cppyy.gbl": + setattr(entity, "__module__", pkg) + setattr(pkg_module, simplename, entity) + + pkg_dir = os.path.dirname(__init__py) + if "." in pkg: + pkg_namespace, pkg_simplename = pkg.rsplit(".", 1) + else: + pkg_namespace, pkg_simplename = "", pkg + pkg_module = sys.modules[pkg] + lib_name = pkg_namespace + pkg_simplename + "Cppyy" + lib_file = cmake_shared_library_prefix + lib_name + cmake_shared_library_suffix + map_file = os.path.join(pkg_dir, pkg_simplename + ".map") + # + # Load the library. + # + cppyy.load_reflection_info(os.path.join(pkg_dir, lib_file)) + # + # Parse the map file. + # + with open(map_file, 'rU') as map_file: + files = json.load(map_file) + # + # Iterate over all the items at the top level of each file, and add them + # to the pkg. + # + for file in files: + for child in file["children"]: + if not child["kind"] in ('class', 'var', 'namespace', 'typedef'): + continue + simplenames = child["name"].split('::') + add_to_pkg(file["name"], child["kind"], simplenames, child) + # + # Load any customisations. + # + extra_pythons = glob.glob(os.path.join(pkg_dir, "extra_*.py")) + for extra_python in extra_pythons: + extra_module = os.path.basename(extra_python) + extra_module = pkg + "." + os.path.splitext(extra_module)[0] + # + # Deleting the modules after use runs the risk of GC running on + # stuff we are using, such as ctypes.c_int. + # + extra = load_source(extra_module, extra_python) + # + # Valid customisations are routines named "c13n_". + # + fns = inspect.getmembers(extra, predicate=inspect.isroutine) + fns = {fn[0]: fn[1] for fn in fns if fn[0].startswith("c13n_")} + for fn in sorted(fns): + fns[fn](pkg_module) + + +def setup(pkg, setup_py, cmake_shared_library_prefix, cmake_shared_library_suffix, extra_pythons, + pkg_version, author, author_email, url, license): + """ + Wrap setuptools.setup for some bindings. + + :param pkg: Name of the bindings. + :param setup_py: Base __init__.py file of the bindings. + :param cmake_shared_library_prefix: + ${cmake_shared_library_prefix} + :param cmake_shared_library_suffix: + ${cmake_shared_library_suffix} + :param extra_pythons: Semicolon-separated list of customisation code. + :param pkg_version: The version of the bindings. + :param author: The name of the library author. + :param author_email: The email address of the library author. + :param url: The home page for the library. + :param license: The license. + """ + pkg_dir = os.path.dirname(setup_py) + if "." in pkg: + pkg_namespace, pkg_simplename = pkg.rsplit(".", 1) + else: + pkg_namespace, pkg_simplename = "", pkg + lib_name = pkg_namespace + pkg_simplename + "Cppyy" + lib_file = cmake_shared_library_prefix + lib_name + cmake_shared_library_suffix + long_description = """Bindings for {}. +These bindings are based on https://cppyy.readthedocs.io/en/latest/, and can be +used as per the documentation provided via the cppyy.cgl namespace. The environment +variable LD_LIBRARY_PATH must contain the path of the {}.rootmap file. Use +"import cppyy; from cppyy.gbl import ". + +Alternatively, use "import {}". This convenience wrapper supports "discovery" of the +available C++ entities using, for example Python 3's command line completion support. +""".replace("{}", pkg) + + class my_build_py(build_py): + def run(self): + # + # Base build. + # + build_py.run(self) + # + # Custom build. + # + # + # Move CMake output to self.build_lib. + # + pkg_subdir = pkg.replace(".", os.path.sep) + if pkg_namespace: + # + # Implement a pkgutil-style namespace package as per the guidance on + # https://packaging.python.org/guides/packaging-namespace-packages. + # + namespace_init = os.path.join(pkg_namespace, "__init__.py") + with open(namespace_init, "w") as f: + f.write("__path__ = __import__('pkgutil').extend_path(__path__, __name__)\n") + self.copy_file(namespace_init, os.path.join(self.build_lib, namespace_init)) + for f in self.package_data[pkg]: + self.copy_file(os.path.join(pkg_dir, pkg_subdir, f), os.path.join(self.build_lib, pkg_subdir, f)) + + class my_clean(clean): + def run(self): + # + # Custom clean. + # TODO: There is no way to reliably clean the "dist" directory. + # + # + # Base clean. + # + clean.run(self) + + class my_bdist_wheel(bdist_wheel): + def finalize_options(self): + # + # This is a universal (Python2/Python3), but platform-specific (has + # compiled parts) package; a combination that wheel does not recognize, + # thus simply fool it. + # + self.plat_name = get_platform() + bdist_wheel.finalize_options(self) + self.root_is_pure = True + + package_data = [lib_file, pkg_simplename + '.rootmap', pkg_simplename + '_rdict.pcm', pkg_simplename + ".map"] + package_data += [ep for ep in extra_pythons.split(";") if ep] + setuptools.setup( + name=pkg, + version=pkg_version, + author=author, + author_email=author_email, + url=url, + license=license, + description='Bindings for ' + pkg, + long_description=long_description, + platforms=['any'], + package_data={pkg: package_data}, + packages=[pkg], + zip_safe=False, + cmdclass={ + 'build_py': my_build_py, + 'clean': my_clean, + 'bdist_wheel': my_bdist_wheel, + }, + ) + + +def find_pips(): + """ + What pip versions do we have? + + :return: [pip_program] + """ + possible_pips = ['pip', 'pip2', 'pip3'] + pips = {} + for pip in possible_pips: + try: + # + # The command 'pip -V' returns a string of the form: + # + # pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7) + # + version = subprocess.check_output([pip, '-V']) + except subprocess.CalledProcessError: + pass + else: + version = version.rsplit('(', 1)[-1] + version = version.split()[-1] + # + # All pip variants that map onto a given Python version are de-duped. + # + pips[version] = pip + # + # We want the pip names. + # + assert len(pips), 'No viable pip versions found' + return pips.values() diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindCppyy.cmake b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindCppyy.cmake new file mode 100644 index 0000000000000..7238431ff6418 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindCppyy.cmake @@ -0,0 +1,488 @@ +#.rst: +# FindCppyy +# ------- +# +# Find Cppyy +# +# This module finds an installed Cppyy. It sets the following variables: +# +# :: +# +# Cppyy_FOUND - set to true if Cppyy is found +# Cppyy_DIR - the directory where Cppyy is installed +# Cppyy_EXECUTABLE - the path to the Cppyy executable +# Cppyy_INCLUDE_DIRS - Where to find the ROOT header files. +# Cppyy_VERSION - the version number of the Cppyy backend. +# +# +# The module also defines the following functions: +# +# cppyy_add_bindings - Generate a set of bindings from a set of header files. +# +# The minimum required version of Cppyy can be specified using the +# standard syntax, e.g. find_package(Cppyy 4.19) +# + +find_program(Cppyy_EXECUTABLE NAMES rootcling) + +if(Cppyy_EXECUTABLE) + # + # Cppyy_DIR. + # + set(Cppyy_DIR ${CMAKE_CURRENT_LIST_DIR}) + # + # Cppyy_INCLUDE_DIRS. + # + get_filename_component(Cppyy_INCLUDE_DIRS ${Cppyy_DIR} DIRECTORY) + set(Cppyy_INCLUDE_DIRS "${Cppyy_INCLUDE_DIRS}/include") + # + # Cppyy_VERSION. + # + find_package(ROOT QUIET REQUIRED PATHS ${CMAKE_CURRENT_LIST_DIR}) + if(ROOT_FOUND) + set(Cppyy_VERSION ${ROOT_VERSION}) + endif() +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + Cppyy + REQUIRED_VARS Cppyy_EXECUTABLE Cppyy_DIR Cppyy_INCLUDE_DIRS + VERSION_VAR Cppyy_VERSION) + +mark_as_advanced(Cppyy_VERSION) + +# +# Generate a set of bindings from a set of header files. Somewhat like CMake's +# add_library(), the output is a compiler target. In addition ancilliary files +# are also generated to allow a complete set of bindings to be compiled, +# packaged and installed. +# +# cppyy_add_bindings( +# pkg +# pkg_version +# author +# author_email +# [URL url] +# [LICENSE license] +# [LANGUAGE_STANDARD std] +# [LINKDEFS linkdef...] +# [IMPORTS pcm...] +# [GENERATE_OPTIONS option...] +# [COMPILE_OPTIONS option...] +# [INCLUDE_DIRS dir...] +# [LINK_LIBRARIES library...] +# [H_DIRS H_DIRSectory] +# H_FILES h_file...) +# +# The bindings are based on https://cppyy.readthedocs.io/en/latest/, and can be +# used as per the documentation provided via the cppyy.cgl namespace. First add +# the directory of the .rootmap file to the LD_LIBRARY_PATH environment +# variable, then "import cppyy; from cppyy.gbl import ". +# +# Alternatively, use "import ". This convenience wrapper supports +# "discovery" of the available C++ entities using, for example Python 3's command +# line completion support. +# +# The bindings are complete with a setup.py, supporting Wheel-based +# packaging, and a test.py supporting pytest/nosetest sanity test of the bindings. +# +# The bindings are generated/built/packaged using 3 environments: +# +# - One compatible with the header files being bound. This is used to +# generate the generic C++ binding code (and some ancilliary files) using +# a modified C++ compiler. The needed options must be compatible with the +# normal build environment of the header files. +# +# - One to compile the generated, generic C++ binding code using a standard +# C++ compiler. The resulting library code is "universal" in that it is +# compatible with both Python2 and Python3. +# +# - One to package the library and ancilliary files into standard Python2/3 +# wheel format. The packaging is done using native Python tooling. +# +# Arguments and options: +# +# pkg The name of the package to generate. This can be either +# of the form "simplename" (e.g. "Akonadi"), or of the +# form "namespace.simplename" (e.g. "KF5.Akonadi"). +# +# pkg_version The version of the package. +# +# author The name of the library author. +# +# author_email The email address of the library author. +# +# URL url The home page for the library. Default is +# "https://pypi.python.org/pypi/". +# +# LICENSE license The license, default is "LGPL 2.0". +# +# LANGUAGE_STANDARD std +# The version of C++ in use, "14" by default. +# +# IMPORTS pcm Files which contain previously-generated bindings +# which pkg depends on. +# +# GENERATE_OPTIONS option +# Options which are to be passed into the rootcling +# command. For example, bindings which depend on Qt +# may need "-D__PIC__;-Wno-macro-redefined" as per +# https://sft.its.cern.ch/jira/browse/ROOT-8719. +# +# LINKDEFS def Files or lines which contain extra #pragma content +# for the linkdef.h file used by rootcling. See +# https://root.cern.ch/root/html/guides/users-guide/AddingaClass.html#the-linkdef.h-file. +# +# In lines, literal semi-colons must be escaped: "\;". +# +# EXTRA_CODES code Files which contain extra code needed by the bindings. +# Customisation is by routines named "c13n_"; +# each such routine is passed the module for : +# +# def c13n_doit(pkg_module): +# print(pkg_module.__dict__) +# +# The files and individual routines within files are +# processed in alphabetical order. +# +# EXTRA_HEADERS hdr Files which contain extra headers needed by the bindings. +# +# EXTRA_PYTHONS py Files which contain extra Python code needed by the bindings. +# +# COMPILE_OPTIONS option +# Options which are to be passed into the compile/link +# command. +# +# INCLUDE_DIRS dir Include directories. +# +# LINK_LIBRARIES library +# Libraries to link against. +# +# H_DIRS directory Base directories for H_FILES. +# +# H_FILES h_file Header files for which to generate bindings in pkg. +# Absolute filenames, or filenames relative to H_DIRS. All +# definitions found directly in these files will contribute +# to the bindings. (NOTE: This means that if "forwarding +# headers" are present, the real "legacy" headers must be +# specified as H_FILES). +# +# All header files which contribute to a given C++ namespace +# should be grouped into a single pkg to ensure a 1-to-1 +# mapping with the implementing Python class. +# +# Returns via PARENT_SCOPE variables: +# +# target The CMake target used to build. +# +# setup_py The setup.py script used to build or install pkg. +# +# Examples: +# +# find_package(Qt5Core NO_MODULE) +# find_package(KF5KDcraw NO_MODULE) +# get_target_property(_H_DIRS KF5::KDcraw INTERFACE_INCLUDE_DIRECTORIES) +# get_target_property(_LINK_LIBRARIES KF5::KDcraw INTERFACE_LINK_LIBRARIES) +# set(_LINK_LIBRARIES KF5::KDcraw ${_LINK_LIBRARIES}) +# include(${KF5KDcraw_DIR}/KF5KDcrawConfigVersion.cmake) +# +# cppyy_add_bindings( +# "KDCRAW" "${PACKAGE_VERSION}" "Shaheed" "srhaque@theiet.org" +# LANGUAGE_STANDARD "14" +# LINKDEFS "../linkdef_overrides.h" +# GENERATE_OPTIONS "-D__PIC__;-Wno-macro-redefined" +# INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} +# LINK_LIBRARIES ${_LINK_LIBRARIES} +# H_DIRS ${_H_DIRS} +# H_FILES "dcrawinfocontainer.h;kdcraw.h;rawdecodingsettings.h;rawfiles.h") +# +function(cppyy_add_bindings pkg pkg_version author author_email) + set(simple_args URL LICENSE LANGUAGE_STANDARD) + set(list_args IMPORTS GENERATE_OPTIONS COMPILE_OPTIONS INCLUDE_DIRS LINK_LIBRARIES H_DIRS H_FILES + LINKDEFS EXTRA_CODES EXTRA_HEADERS EXTRA_PYTHONS) + cmake_parse_arguments( + ARG + "" + "${simple_args}" + "${list_args}" + ${ARGN}) + if(NOT "${ARG_UNPARSED_ARGUMENTS}" STREQUAL "") + message(SEND_ERROR "Unexpected arguments specified '${ARG_UNPARSED_ARGUMENTS}'") + endif() + string(REGEX MATCH "[^\.]+$" pkg_simplename ${pkg}) + string(REGEX REPLACE "\.?${pkg_simplename}" "" pkg_namespace ${pkg}) + set(pkg_dir ${CMAKE_CURRENT_BINARY_DIR}) + string(REPLACE "." "/" tmp ${pkg}) + set(pkg_dir "${pkg_dir}/${tmp}") + set(lib_name "${pkg_namespace}${pkg_simplename}Cppyy") + set(lib_file ${CMAKE_SHARED_LIBRARY_PREFIX}${lib_name}${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(cpp_file ${CMAKE_CURRENT_BINARY_DIR}/${pkg_simplename}.cpp) + set(pcm_file ${pkg_dir}/${pkg_simplename}_rdict.pcm) + set(rootmap_file ${pkg_dir}/${pkg_simplename}.rootmap) + set(extra_map_file ${pkg_dir}/${pkg_simplename}.map) + # + # Package metadata. + # + if("${ARG_URL}" STREQUAL "") + string(REPLACE "." "-" tmp ${pkg}) + set(ARG_URL "https://pypi.python.org/pypi/${tmp}") + endif() + if("${ARG_LICENSE}" STREQUAL "") + set(ARG_LICENSE "LGPL2.1") + endif() + # + # Language standard. + # + if("${ARG_LANGUAGE_STANDARD}" STREQUAL "") + set(ARG_LANGUAGE_STANDARD "14") + endif() + # + # Make H_FILES with absolute paths. + # + if("${ARG_H_FILES}" STREQUAL "") + message(SEND_ERROR "No H_FILES specified") + endif() + if("${ARG_H_DIRS}" STREQUAL "") + set(ARG_H_DIRS ${CMAKE_CURRENT_SOURCE_DIR}) + endif() + set(tmp) + foreach(h_file IN LISTS ARG_H_FILES) + if(NOT IS_ABSOLUTE ${h_file}) + foreach(h_dir IN LISTS ARG_H_DIRS) + if(EXISTS ${h_dir}/${h_file}) + set(h_file ${h_dir}/${h_file}) + break() + endif() + endforeach(h_dir) + endif() + if(NOT EXISTS ${h_file}) + message(WARNING "H_FILES ${h_file} does not exist") + endif() + list(APPEND tmp ${h_file}) + endforeach(h_file) + set(ARG_H_FILES ${tmp}) + # + # Create the linkdef.h file with a line for each h_file. + # + set(out_linkdef ${CMAKE_CURRENT_BINARY_DIR}/linkdef.h) + file(WRITE ${out_linkdef} "/* Per H_FILES entries: */\n") + foreach(h_file IN LISTS ARG_H_FILES) + # + # Doubled-up path separators "//" causes errors in rootcling. + # + string(REGEX REPLACE "/+" "/" h_file ${h_file}) + file(APPEND ${out_linkdef} "#pragma link C++ defined_in ${h_file};\n") + endforeach(h_file) + foreach(h_file IN LISTS ARG_EXTRA_HEADERS) + # + # Doubled-up path separators "//" causes errors in rootcling. + # + string(REGEX REPLACE "/+" "/" h_file ${h_file}) + file(APPEND ${out_linkdef} "#pragma extra_include \"${h_file}\";\n") + endforeach(h_file) + # + # Append any manually-provided linkdef.h content. + # + set(LINKDEF_EXTRACTS) + string(REPLACE "\\" "\\\\" ARG_LINKDEFS "${ARG_LINKDEFS}") + foreach(in_linkdef IN LISTS ARG_LINKDEFS) + if("${in_linkdef}" STREQUAL "") + continue() + endif() + if(NOT IS_ABSOLUTE "${in_linkdef}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${in_linkdef}") + set(in_linkdef "${CMAKE_CURRENT_SOURCE_DIR}/${in_linkdef}") + endif() + if(EXISTS "${in_linkdef}") + file(APPEND ${out_linkdef} "/* Copied from ${in_linkdef}: */\n") + file(STRINGS ${in_linkdef} in_linkdef NEWLINE_CONSUME) + else() + file(APPEND ${out_linkdef} "/* Inlined: */\n") + endif() + string(REPLACE "\n" ";" in_linkdef "${in_linkdef}") + foreach(line ${in_linkdef}) + file(APPEND ${out_linkdef} "${line}\n") + endforeach() + list(GET in_linkdef 0 in_linkdef) + list(APPEND LINKDEFS_EXTRACTS ${in_linkdef}) + endforeach(in_linkdef) + # + # Record diagnostics. + # + file(APPEND ${out_linkdef} "//\n// Diagnostics.\n//\n") + foreach(arg IN LISTS simple_args list_args) + if(arg STREQUAL "LINKDEFS") + file(APPEND ${out_linkdef} "// ${arg}=\n") + foreach(in_linkdef IN LISTS LINKDEFS_EXTRACTS) + file(APPEND ${out_linkdef} "// ${in_linkdef}...\n") + endforeach(in_linkdef) + else() + file(APPEND ${out_linkdef} "// ${arg}=${ARG_${arg}}\n") + endif() + endforeach(arg) + # + # Set up args. + # + list(APPEND ARG_GENERATE_OPTIONS "-std=c++${ARG_LANGUAGE_STANDARD}") + foreach(dir ${ARG_H_DIRS} ${ARG_INCLUDE_DIRS}) + list(APPEND ARG_GENERATE_OPTIONS "-I${dir}") + endforeach(dir) + # + # Run generator. First check dependencies. TODO: temporary hack: rather + # than an external dependency, enable libclang in the local build. + # + find_package(LibClang REQUIRED) + get_filename_component(Cppyygen_EXECUTABLE ${Cppyy_EXECUTABLE} DIRECTORY) + set(Cppyygen_EXECUTABLE ${Cppyygen_EXECUTABLE}/cppyy-generator) + # + # Set up arguments for cppyy-generator. + # + set(generator_args) + foreach(arg IN LISTS ARG_GENERATE_OPTIONS) + string(REGEX REPLACE "^-" "\\\\-" arg ${arg}) + list(APPEND generator_args ${arg}) + endforeach() + # + # Set up arguments for rootcling. + # + set(cling_args) + list(APPEND cling_args "-f" ${cpp_file}) + list(APPEND cling_args "-s" ${pkg_simplename}) + list(APPEND cling_args "-rmf" ${rootmap_file} "-rml" ${lib_file}) + foreach(in_pcm IN LISTS ARG_IMPORTS) + # + # Create -m options for any imported .pcm files. + # + list(APPEND cling_args "-m" "${in_pcm}") + endforeach(in_pcm) + list(APPEND cling_args "${ARG_GENERATE_OPTIONS}") + # + # Run rootcling, specifying the generated output. + # + file(MAKE_DIRECTORY ${pkg_dir}) + add_custom_command(OUTPUT ${extra_map_file} + COMMAND ${LibClang_PYTHON_EXECUTABLE} ${Cppyygen_EXECUTABLE} --flags "\"${generator_args}\"" + ${extra_map_file} ${ARG_H_FILES} WORKING_DIRECTORY ${pkg_dir}) + add_custom_command(OUTPUT ${cpp_file} ${pcm_file} ${rootmap_file} + COMMAND ${Cppyy_EXECUTABLE} ${cling_args} ${ARG_H_FILES} ${out_linkdef} WORKING_DIRECTORY ${pkg_dir}) + # + # Compile/link. + # + add_library(${lib_name} SHARED ${cpp_file} ${pcm_file} ${rootmap_file} ${extra_map_file} ${ARG_EXTRA_CODES}) + set_property(TARGET ${lib_name} PROPERTY VERSION ${version}) + set_property(TARGET ${lib_name} PROPERTY CXX_STANDARD ${ARG_LANGUAGE_STANDARD}) + set_property(TARGET ${lib_name} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${pkg_dir}) + target_include_directories(${lib_name} PRIVATE ${Cppyy_INCLUDE_DIRS} ${ARG_H_DIRS} ${ARG_INCLUDE_DIRS}) + target_compile_options(${lib_name} PRIVATE ${ARG_COMPILE_OPTIONS}) + target_link_libraries(${lib_name} ${ARG_LINK_LIBRARIES}) + # + # Install. NOTE: The generated files contain as few binding-specific strings + # as possible. + # + file( + GENERATE OUTPUT "${pkg_dir}/__init__.py" + CONTENT "from cppyy_backend import bindings_utils + +bindings_utils.initialise('${pkg}', __file__, '${CMAKE_SHARED_LIBRARY_PREFIX}', '${CMAKE_SHARED_LIBRARY_SUFFIX}') +del bindings_utils +") + set(setup_py ${CMAKE_CURRENT_BINARY_DIR}/setup.py) + file( + GENERATE OUTPUT ${setup_py} + CONTENT "from cppyy_backend import bindings_utils + + +bindings_utils.setup('${pkg}', __file__, '${CMAKE_SHARED_LIBRARY_PREFIX}', '${CMAKE_SHARED_LIBRARY_SUFFIX}', + '${ARG_EXTRA_PYTHONS}', + '${pkg_version}', '${author}', '${author_email}', '${ARG_URL}', '${ARG_LICENSE}') +") + set(setup_cfg ${CMAKE_CURRENT_BINARY_DIR}/setup.cfg) + file(WRITE ${setup_cfg} "[bdist_wheel] +universal=1 +") + # + # Generate a pytest/nosetest sanity test script. + # + file( + GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/test.py + CONTENT "# pytest/nosetest sanity test script. +import logging +import os +import pydoc +import subprocess +import sys + +from cppyy_backend import bindings_utils + + +SCRIPT_DIR = os.path.dirname(__file__) +pkg = '${pkg}' +PIPS = None + + +class Test(object): + @classmethod + def setup_class(klass): + # + # Make an attempt to check the verbosity setting (ignore quiet!). + # + verbose = [a for a in sys.argv[1:] if a.startswith(('-v', '--verbos'))] + if verbose: + logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s %(levelname)s: %(message)s') + else: + logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') + global PIPS + PIPS = bindings_utils.find_pips() + + @classmethod + def teardown_class(klass): + pass + + def setUp(self): + '''This method is run once before _each_ test method is executed''' + + def teardown(self): + '''This method is run once after _each_ test method is executed''' + + def test_install(self): + for pip in PIPS: + subprocess.check_call([pip, 'install', '--force-reinstall', '--pre', '.'], cwd=SCRIPT_DIR) + + def test_import(self): + __import__(pkg) + + def test_help(self): + pydoc.render_doc(pkg) + + def test_uninstall(self): + for pip in PIPS: + subprocess.check_call([pip, 'uninstall', '--yes', pkg], cwd=SCRIPT_DIR) +") + # + # Stage extra Python code. + # + foreach(extra_python IN LISTS ARG_EXTRA_PYTHONS) + file(GENERATE OUTPUT ${pkg_dir}/${extra_python} INPUT ${CMAKE_CURRENT_SOURCE_DIR}/${extra_python}) + endforeach() + # + # Return results. + # + set(target ${lib_name} PARENT_SCOPE) + set(setup_py ${setup_py} PARENT_SCOPE) +endfunction(cppyy_add_bindings) + +# +# Return a list of available pip programs. +# +function(cppyy_find_pips) + execute_process( + COMMAND python -c "from cppyy_backend import bindings_utils; print(\";\".join(bindings_utils.find_pips()))" + OUTPUT_VARIABLE _stdout + ERROR_VARIABLE _stderr + RESULT_VARIABLE _rc + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT "${_rc}" STREQUAL "0") + message(FATAL_ERROR "Error finding pips: (${_rc}) ${_stderr}") + endif() + set(PIP_EXECUTABLES ${_stdout} PARENT_SCOPE) +endfunction(cppyy_find_pips) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindLibClang.cmake b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindLibClang.cmake new file mode 100644 index 0000000000000..768cfb57d09a6 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/cmake/FindLibClang.cmake @@ -0,0 +1,56 @@ +#.rst: +# FindLibClang +# ------------ +# +# Find LibClang +# +# Find LibClang headers and library +# +# :: +# +# LibClang_FOUND - True if libclang is found. +# LibClang_LIBRARY - Clang library to link against. +# LibClang_VERSION - Version number as a string (e.g. "3.9"). +# LibClang_PYTHON_EXECUTABLE - Compatible python version. + +# +# Python support for clang might not be available for Python3. We need to +# find what we have. +# +function(_find_libclang_filename python_executable filename) + # + # Prefer python3 explicitly or implicitly over python2. + # + foreach(exe IN ITEMS python3 python python2) + execute_process( + COMMAND ${exe} -c "from clang.cindex import Config; Config().lib; print(Config().get_filename())" + OUTPUT_VARIABLE lib + ERROR_VARIABLE _stderr + RESULT_VARIABLE _rc + OUTPUT_STRIP_TRAILING_WHITESPACE) + if("${_rc}" STREQUAL "0") + set(pyexe ${exe}) + break() + endif() + endforeach() + set(${python_executable} "${pyexe}" PARENT_SCOPE) + set(${filename} "${lib}" PARENT_SCOPE) +endfunction(_find_libclang_filename) + + +_find_libclang_filename(LibClang_PYTHON_EXECUTABLE _filename) +find_library(LibClang_LIBRARY ${_filename}) + +if(LibClang_LIBRARY) + set(LibClang_LIBRARY ${LibClang_LIBRARY}) + string(REGEX REPLACE ".*clang-\([0-9]+.[0-9]+\).*" "\\1" LibClang_VERSION_TMP "${LibClang_LIBRARY}") + set(LibClang_VERSION ${LibClang_VERSION_TMP} CACHE STRING "LibClang version" FORCE) +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibClang REQUIRED_VARS LibClang_LIBRARY LibClang_PYTHON_EXECUTABLE + VERSION_VAR LibClang_VERSION) + +mark_as_advanced(LibClang_VERSION) +unset(_filename) +unset(_find_libclang_filename) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/loader.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/loader.py new file mode 100644 index 0000000000000..e82124a917ce2 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/python/cppyy_backend/loader.py @@ -0,0 +1,17 @@ +""" cppyy_backend loader +""" + +import os, ctypes + +def load_cpp_backend(): + try: + # normal load, allowing for user overrides of LD_LIBRARY_PATH + c = ctypes.CDLL("libcppyy_backend.so", ctypes.RTLD_GLOBAL) + except OSError: + # failed ... load dependencies explicitly + libpath = os.path.join(os.path.dirname(__file__), 'lib') + for dep in ['libCore.so', 'libThread.so', 'libRIO.so', 'libCling.so']: + ctypes.CDLL(os.path.join(libpath, dep), ctypes.RTLD_GLOBAL) + c = ctypes.CDLL(os.path.join(libpath, 'libcppyy_backend.so'), ctypes.RTLD_GLOBAL) + + return c diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.cfg b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.cfg new file mode 100644 index 0000000000000..82bf11f7840c7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.cfg @@ -0,0 +1,5 @@ +[bdist_wheel] +universal=1 + +[metadata] +license_file = LICENSE.txt diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.py new file mode 100644 index 0000000000000..736244702c29a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/setup.py @@ -0,0 +1,230 @@ +import os, sys, subprocess +import multiprocessing +from setuptools import setup, find_packages +from distutils import log +from distutils.command.build import build as _build +from distutils.command.clean import clean as _clean +from distutils.dir_util import remove_tree +from setuptools.command.install import install as _install +from wheel.bdist_wheel import bdist_wheel as _bdist_wheel +from distutils.errors import DistutilsSetupError +from codecs import open + +here = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(here, 'README.rst'), encoding='utf-8') as f: + long_description = f.read() + +builddir = None +def get_builddir(): + """cppyy_backend build.""" + global builddir + if builddir is None: + topdir = os.getcwd() + builddir = os.path.join(topdir, 'builddir') + return builddir + +srcdir = None +def get_srcdir(): + """cppyy_backend source.""" + global srcdir + if srcdir is None: + topdir = os.getcwd() + srcdir = os.path.join(topdir, 'src') + return srcdir + +prefix = None +def get_prefix(): + """cppyy_backend installation.""" + global prefix + if prefix is None: + prefix = os.path.join(get_builddir(), 'install', 'cppyy_backend') + return prefix + + +class my_cmake_build(_build): + def run(self): + # base run + _build.run(self) + + # custom run + log.info('Now building cppyy_backend') + builddir = get_builddir() + prefix = get_prefix() + srcdir = get_srcdir() + if not os.path.exists(srcdir): + log.info('No src directory ... creating with "python create_src_directory.py"') + if subprocess.call(['python', 'create_src_directory.py']) != 0: + log.error('ERROR: the source directory "%s" does not exist' % srcdir) + log.error('Please run "python create_src_directory.py" first.') + sys.exit(1) + + if not os.path.exists(builddir): + log.info('Creating build directory %s ...' % builddir) + os.makedirs(builddir) + + # get C++ standard to use, if set + try: + stdcxx = os.environ['STDCXX'] + except KeyError: + stdcxx = '14' + + if not stdcxx in ['11', '14', '17']: + log.fatal('FATAL: envar STDCXX should be one of 11, 14, or 17') + sys.exit(1) + + stdcxx='-Dcxx'+stdcxx+'=ON' + + log.info('Running cmake for cppyy_backend') + if subprocess.call([ + 'cmake', srcdir, stdcxx, + '-Dminimal=ON', '-Dasimage=OFF', '-Droot7=OFF', '-Dhttp=OFF', '-Dbuiltin_freetype=OFF', + '-DCMAKE_BUILD_TYPE=RelWithDebInfo', + '-DCMAKE_INSTALL_PREFIX='+prefix], cwd=builddir) != 0: + raise DistutilsSetupError('Failed to configure cppyy_backend') + + # default to using all available cores (x2 if hyperthreading enabled) + nprocs = os.getenv("MAKE_NPROCS") or '0' + try: + nprocs = int(nprocs) + except ValueError: + log.warn("Integer expected for MAKE_NPROCS, but got %s (ignored)", nprocs) + nprocs = 0 + if nprocs < 1: + nprocs = multiprocessing.cpu_count() + build_args = ['--build', '.', '--config', 'RelWithDebInfo', '--'] + if 'win32' in sys.platform: + build_args.append('/maxcpucount:' + str(nprocs)) + else: + build_args.append('-j' + str(nprocs)) + log.info('Now building cppyy_backend and dependencies ...') + if subprocess.call(['cmake'] + build_args, cwd=builddir) != 0: + raise DistutilsSetupError('Failed to build cppyy_backend') + + log.info('Build finished') + +class my_clean(_clean): + def run(self): + # Custom clean. Clean everything except that which the base clean + # (see below) or create_src_directory.py is responsible for. + topdir = os.getcwd() + if self.all: + # remove build directories + for directory in (get_builddir(), + os.path.join(topdir, "python", "cppyy_cling.egg-info")): + if os.path.exists(directory): + remove_tree(directory, dry_run=self.dry_run) + else: + log.warn("'%s' does not exist -- can't clean it", + directory) + # Base clean. + _clean.run(self) + +class my_install(_install): + def _get_install_path(self): + # depending on goal, copy over pre-installed tree + if hasattr(self, 'bdist_dir') and self.bdist_dir: + install_path = self.bdist_dir + else: + install_path = self.install_lib + return install_path + + def run(self): + # base install + _install.run(self) + + # custom install of backend + log.info('Now installing cppyy_backend') + builddir = get_builddir() + if not os.path.exists(builddir): + raise DistutilsSetupError('Failed to find build dir!') + + prefix = get_prefix() + log.info('Now creating installation under %s ...', prefix) + install_args = ['--build', '.', '--config', 'RelWithDebInfo', '--target', 'install'] + if subprocess.call(['cmake'] + install_args, cwd=builddir) != 0: + raise DistutilsSetupError('Failed to install cppyy_backend') + + prefix_base = os.path.join(get_prefix(), os.path.pardir) + install_path = self._get_install_path() + log.info('Copying installation to: %s ...', install_path) + self.copy_tree(prefix_base, install_path) + + log.info('Install finished') + + def get_outputs(self): + outputs = _install.get_outputs(self) + outputs.append(os.path.join(self._get_install_path(), 'cppyy_backend')) + return outputs + +class my_bdist_wheel(_bdist_wheel): + def finalize_options(self): + # this is a universal, but platform-specific package; a combination + # that wheel does not recognize, thus simply fool it + from distutils.util import get_platform + self.plat_name = get_platform() + _bdist_wheel.finalize_options(self) + self.root_is_pure = True + + +setup( + name='cppyy-cling', + description='Re-packaged Cling, as backend for cppyy', + long_description=long_description, + url='https://root.cern.ch/cling', + + # Author details + author='ROOT Developers', + author_email='rootdev@cern.ch', + + version='6.12.6.2', + + license='LLVM: UoI-NCSA; ROOT: LGPL 2.1', + + classifiers=[ + 'Development Status :: 6 - Mature', + + 'Intended Audience :: Developers', + 'Intended Audience :: Science/Research', + + 'Topic :: Software Development', + 'Topic :: Software Development :: Interpreters', + + 'License :: OSI Approved :: University of Illinois/NCSA Open Source License', + 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', + + 'Operating System :: POSIX', + 'Operating System :: POSIX :: Linux', + 'Operating System :: MacOS :: MacOS X', + + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: C', + 'Programming Language :: C++', + + 'Natural Language :: English' + ], + + keywords='interpreter development', + + include_package_data=True, + package_data={'': ['cmake/*.cmake']}, + + package_dir={'': 'python'}, + packages=find_packages('python', include=['cppyy_backend']), + + cmdclass = { + 'build': my_cmake_build, + 'clean': my_clean, + 'install': my_install, + 'bdist_wheel': my_bdist_wheel, + }, + + entry_points={ + "console_scripts": [ + "cling-config = cppyy_backend._cling_config:main", + "genreflex = cppyy_backend._genreflex:main", + "rootcling = cppyy_backend._rootcling:main", + "cppyy-generator = cppyy_backend._cppyy_generator:main", + ], + }, +) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.h new file mode 100644 index 0000000000000..ff9510d76eaf3 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.h @@ -0,0 +1,49 @@ + +namespace Outer +{ + class Inner + { + public: + Inner(); + void fn1(int arg); + }; + + template + class Template + { + public: + Template(); + }; + + /** + * Simple specialisation. + */ + template<> + class Template + { + public: + Template(); + }; + + /** + * Complex specialisation. + */ + template<> + class Template, 1> + { + public: + Template(); + }; + + /** + * Simply templated function. + */ + template + void doit(Template arg); + + /** + * Less-simply templated function. + */ + template + void doit(Template,U> arg); +}; \ No newline at end of file diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.py new file mode 100644 index 0000000000000..034b5d1d898c8 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/tests/test_cppyy_backend.py @@ -0,0 +1,52 @@ +""" +Pytest/nosetest tests. +""" +import json +import logging +import os +import tempfile + +from cppyy_backend import _cppyy_generator + + +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + + +class TestCppyyGenerator(object): + """ + Test cppyy_generator. + """ + @classmethod + def setup_class(klass): + pass + + @classmethod + def teardown_class(klass): + pass + + def setUp(self): + '''This method is run once before _each_ test method is executed''' + + def teardown(self): + '''This method is run once after _each_ test method is executed''' + + def test_generator(self): + cpp_h = os.path.join(SCRIPT_DIR, "test_cppyy_backend.h") + mapfile = tempfile.NamedTemporaryFile().name + # + # Create mapping. + # + logging.info("mapfile is {}".format(mapfile)) + result = _cppyy_generator.main([ + "", + "-v", + "--flags=\\-fvisibility=hidden;\\-D__PIC__;\\-Wno-macro-redefined;\\-std=c++14", + mapfile, cpp_h + ]) + assert result == 0 + # + # Read mapping. + # + with open(mapfile, "rU") as mapfile: + mapping = json.load(mapfile) + assert mapping[0]["children"][0]["name"] == "Outer" diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/LICENSE.txt b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/LICENSE.txt new file mode 100644 index 0000000000000..f9a0f50ea780f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/LICENSE.txt @@ -0,0 +1,52 @@ +Copyright (c) 2017, The Regents of the University of California, +through Lawrence Berkeley National Laboratory (subject to receipt of +any required approvals from the U.S. Dept. of Energy). All rights +reserved. Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + +(1) Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +(2) Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +(3) Neither the name of the University of California, Lawrence Berkeley +National Laboratory, U.S. Dept. of Energy nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +You are under no obligation whatsoever to provide any bug fixes, +patches, or upgrades to the features, functionality or performance of +the source code ("Enhancements") to anyone; however, if you choose to +make your Enhancements available either publicly, or directly to +Lawrence Berkeley National Laboratory, without imposing a separate +written license agreement for such Enhancements, then you hereby grant +the following license: a non-exclusive, royalty-free perpetual license +to install, use, modify, prepare derivative works, incorporate into +other computer software, distribute, and sublicense such Enhancements +or derivative works thereof, in binary and source code form. + + +Additional copyright holders +---------------------------- + +Except when otherwise stated (look for LICENSE files or information in +source files), this package contains files copyrighted by one or more of +the following people and organizations: + + CERN + Antonio Cuni + Aditi Dutta + Shaheed Haque diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/MANIFEST.in b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/MANIFEST.in new file mode 100644 index 0000000000000..6db55ce0e102b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/MANIFEST.in @@ -0,0 +1,5 @@ +# Include the license file +include LICENSE.txt + +# Include the data files +recursive-include src * diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/README.rst b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/README.rst new file mode 100644 index 0000000000000..0b751f618beea --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/README.rst @@ -0,0 +1,28 @@ +cppyy-backend +============= + +C/C++ wrapper around Cling for use by cppyy. + +This package will pull in cppyy-cling, which contains a version of LLVM +that is patched for interactive use. + +Compilation of LLVM may take a long time, so when building from source, it is +recommended to set MAKE_NPROCS to the number of cores on your machine and to +use the verbose flag to see progress: + + $ MAKE_NPROCS=32 pip install --verbose cppyy-backend + +Alternatively, there are binary wheels (Mac 10.12, Linux/Gentoo) +available here: + https://cern.ch/wlav/wheels + +Use '--extra-index https://cern.ch/wlav/wheels' as an argument to pip to +pick them up. + +Cling documentation is here: + https://root.cern.ch/cling + +---- + +Find the cppyy documentation here: + http://cppyy.readthedocs.io diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/__init__.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/__init__.py new file mode 100644 index 0000000000000..848c37a25e63e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/__init__.py @@ -0,0 +1 @@ +from . import loader diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/loader.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/loader.py new file mode 100644 index 0000000000000..e82124a917ce2 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/python/cppyy_backend/loader.py @@ -0,0 +1,17 @@ +""" cppyy_backend loader +""" + +import os, ctypes + +def load_cpp_backend(): + try: + # normal load, allowing for user overrides of LD_LIBRARY_PATH + c = ctypes.CDLL("libcppyy_backend.so", ctypes.RTLD_GLOBAL) + except OSError: + # failed ... load dependencies explicitly + libpath = os.path.join(os.path.dirname(__file__), 'lib') + for dep in ['libCore.so', 'libThread.so', 'libRIO.so', 'libCling.so']: + ctypes.CDLL(os.path.join(libpath, dep), ctypes.RTLD_GLOBAL) + c = ctypes.CDLL(os.path.join(libpath, 'libcppyy_backend.so'), ctypes.RTLD_GLOBAL) + + return c diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.cfg b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.cfg new file mode 100644 index 0000000000000..82bf11f7840c7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.cfg @@ -0,0 +1,5 @@ +[bdist_wheel] +universal=1 + +[metadata] +license_file = LICENSE.txt diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.py b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.py new file mode 100644 index 0000000000000..9ddc691fac743 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/setup.py @@ -0,0 +1,181 @@ +import os, glob, subprocess +from setuptools import setup, find_packages, Extension +from distutils import log +from distutils.command.build_ext import build_ext as _build_ext +from distutils.command.clean import clean as _clean +from distutils.dir_util import remove_tree +from setuptools.command.install import install as _install +from wheel.bdist_wheel import bdist_wheel as _bdist_wheel +from distutils.errors import DistutilsSetupError +from codecs import open + + +here = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(here, 'README.rst'), encoding='utf-8') as f: + long_description = f.read() + +try: + root_install = os.environ["ROOTSYS"] + requirements = [] + add_pkg = ['cppyy_backend'] +except KeyError: + root_install = None + requirements = ['cppyy-cling'] + add_pkg = [] + +def get_include_path(): + config_exec = 'cling-config' + if root_install: + config_exec = 'root-config' + cli_arg = subprocess.check_output([config_exec, '--incdir']) + return cli_arg.decode("utf-8").strip() + +def get_cflags(): + config_exec = 'cling-config' + if root_install: + config_exec = 'root-config' + cli_arg = subprocess.check_output([config_exec, '--auxcflags']) + return cli_arg.decode("utf-8").strip() + +class my_build_cpplib(_build_ext): + def build_extension(self, ext): + include_dirs = ext.include_dirs + [get_include_path()] + log.info('checking for %s', self.build_temp) + if not os.path.exists(self.build_temp): + log.info('creating %s', self.build_temp) + os.makedirs(self.build_temp) + objects = self.compiler.compile( + ext.sources, + output_dir=self.build_temp, + include_dirs=include_dirs, + debug=self.debug, + extra_postargs=['-O2']+get_cflags().split()) + + ext_path = self.get_ext_fullpath(ext.name) + output_dir = os.path.dirname(ext_path) + full_libname = 'libcppyy_backend.so' # forced, b/c hard-wired in pypy-c/cppyy + + log.info("now building %s", full_libname) + self.compiler.link_shared_object( + objects, full_libname, + build_temp=self.build_temp, + output_dir=output_dir, + debug=self.debug, + target_lang='c++') + +class my_clean(_clean): + def run(self): + # Custom clean. Clean everything except that which the base clean + # (see below) or create_src_directory.py is responsible for. + topdir = os.getcwd() + if self.all: + # remove build directories + for directory in (os.path.join(topdir, "dist"), + os.path.join(topdir, "python", "cppyy_backend.egg-info")): + if os.path.exists(directory): + remove_tree(directory, dry_run=self.dry_run) + else: + log.warn("'%s' does not exist -- can't clean it", + directory) + # Base clean. + _clean.run(self) + +class my_install(_install): + def _get_install_path(self): + # depending on goal, copy over pre-installed tree + if hasattr(self, 'bdist_dir') and self.bdist_dir: + install_path = self.bdist_dir + else: + install_path = self.install_lib + return install_path + + def run(self): + # base install + _install.run(self) + + # custom install of backend + log.info('Now installing cppyy_backend') + builddir = self.build_lib + if not os.path.exists(builddir): + raise DistutilsSetupError('Failed to find build dir!') + + install_path = self._get_install_path() + log.info('Copying installation to: %s ...', install_path) + self.copy_tree(builddir, install_path) + + log.info('Install finished') + + def get_outputs(self): + outputs = _install.get_outputs(self) + #outputs.append(os.path.join(self._get_install_path(), 'cppyy_backend')) + return outputs + +class my_bdist_wheel(_bdist_wheel): + def run(self, *args): + # wheels do not respect dependencies; make this a no-op so that it fails (mostly) silently + pass + + def finalize_options(self): + # this is a universal, but platform-specific package; a combination + # that wheel does not recognize, thus simply fool it + from distutils.util import get_platform + self.plat_name = get_platform() + self.universal = True + _bdist_wheel.finalize_options(self) + self.root_is_pure = True + + +setup( + name='cppyy-backend', + description='C/C++ wrapper for Cling', + long_description=long_description, + url='http://pypy.org', + + # Author details + author='PyPy Developers', + author_email='pypy-dev@python.org', + + version='1.0.0', + + license='LBNL BSD', + + classifiers=[ + 'Development Status :: 5 - Production/Stable', + + 'Intended Audience :: Developers', + 'Intended Audience :: Science/Research', + + 'Topic :: Software Development', + 'Topic :: Software Development :: Interpreters', + + 'License :: OSI Approved :: BSD License', + + 'Operating System :: POSIX', + 'Operating System :: POSIX :: Linux', + 'Operating System :: MacOS :: MacOS X', + + 'Programming Language :: C', + 'Programming Language :: C++', + + 'Natural Language :: English' + ], + + keywords='C++ bindings data science', + + setup_requires=requirements, + install_requires=requirements, + + package_dir={'': 'python'}, + packages=find_packages('python', include=add_pkg), + + ext_modules=[Extension('cppyy_backend/lib/libcppyy_backend', + sources=glob.glob('src/clingwrapper.cxx'))], + zip_safe=False, + + cmdclass = { + 'build_ext': my_build_cpplib, + 'clean': my_clean, + 'install': my_install, + 'bdist_wheel': my_bdist_wheel + } +) diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/callcontext.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/callcontext.h new file mode 100644 index 0000000000000..dbbf88084a492 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/callcontext.h @@ -0,0 +1,38 @@ +#ifndef CPYCPPYY_CALLCONTEXT_H +#define CPYCPPYY_CALLCONTEXT_H + +// Standard +#include + +//Bindings +#include "cpp_cppyy.h" + +//ROOT +#include "Rtypes.h" + +namespace CPyCppyy { + +// general place holder for function parameters + struct Parameter { + union Value { + bool fBool; + short fShort; + unsigned short fUShort; + int fInt; + unsigned int fUInt; + long fLong; + unsigned long fULong; + Long64_t fLongLong; + ULong64_t fULongLong; + float fFloat; + double fDouble; + LongDouble_t fLongDouble; + void* fVoidp; + } fValue; + void* fRef; + char fTypeCode; + }; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CALLCONTEXT_H diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/capi.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/capi.h new file mode 100644 index 0000000000000..fd62ae7dcf7e4 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/capi.h @@ -0,0 +1,228 @@ +#ifndef CPPYY_CAPI +#define CPPYY_CAPI + +#include +#include "precommondefs.h" + +#ifdef __cplusplus +extern "C" { +#endif // ifdef __cplusplus + + typedef ptrdiff_t cppyy_scope_t; + typedef cppyy_scope_t cppyy_type_t; + typedef void* cppyy_object_t; + typedef ptrdiff_t cppyy_method_t; + + typedef long cppyy_index_t; + typedef void* cppyy_funcaddr_t; + + typedef unsigned long cppyy_exctype_t; + + /* name to opaque C++ scope representation -------------------------------- */ + RPY_EXTERN + char* cppyy_resolve_name(const char* cppitem_name); + RPY_EXTERN + char* cppyy_resolve_enum(const char* enum_type); + RPY_EXTERN + cppyy_scope_t cppyy_get_scope(const char* scope_name); + RPY_EXTERN + cppyy_type_t cppyy_actual_class(cppyy_type_t klass, cppyy_object_t obj); + RPY_EXTERN + size_t cppyy_size_of_klass(cppyy_type_t klass); + RPY_EXTERN + size_t cppyy_size_of_type(const char* type_name); + + /* memory management ------------------------------------------------------ */ + RPY_EXTERN + cppyy_object_t cppyy_allocate(cppyy_type_t type); + RPY_EXTERN + void cppyy_deallocate(cppyy_type_t type, cppyy_object_t self); + RPY_EXTERN + cppyy_object_t cppyy_construct(cppyy_type_t type); + RPY_EXTERN + void cppyy_destruct(cppyy_type_t type, cppyy_object_t self); + + /* method/function dispatching -------------------------------------------- */ + RPY_EXTERN + void cppyy_call_v(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + unsigned char cppyy_call_b(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + char cppyy_call_c(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + short cppyy_call_h(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + int cppyy_call_i(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + long cppyy_call_l(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + long long cppyy_call_ll(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + float cppyy_call_f(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + double cppyy_call_d(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + long double cppyy_call_ld(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + + RPY_EXTERN + void* cppyy_call_r(cppyy_method_t method, cppyy_object_t self, int nargs, void* args); + RPY_EXTERN + char* cppyy_call_s(cppyy_method_t method, cppyy_object_t self, int nargs, void* args, size_t* length); + RPY_EXTERN + cppyy_object_t cppyy_constructor(cppyy_method_t method, cppyy_type_t klass, int nargs, void* args); + RPY_EXTERN + void cppyy_destructor(cppyy_type_t type, cppyy_object_t self); + RPY_EXTERN + cppyy_object_t cppyy_call_o(cppyy_method_t method, cppyy_object_t self, int nargs, void* args, cppyy_type_t result_type); + + RPY_EXTERN + cppyy_funcaddr_t cppyy_function_address_from_index(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + cppyy_funcaddr_t cppyy_function_address_from_method(cppyy_method_t method); + + /* handling of function argument buffer ----------------------------------- */ + RPY_EXTERN + void* cppyy_allocate_function_args(int nargs); + RPY_EXTERN + void cppyy_deallocate_function_args(void* args); + RPY_EXTERN + size_t cppyy_function_arg_sizeof(); + RPY_EXTERN + size_t cppyy_function_arg_typeoffset(); + + /* scope reflection information ------------------------------------------- */ + RPY_EXTERN + int cppyy_is_namespace(cppyy_scope_t scope); + RPY_EXTERN + int cppyy_is_template(const char* template_name); + RPY_EXTERN + int cppyy_is_abstract(cppyy_type_t type); + RPY_EXTERN + int cppyy_is_enum(const char* type_name); + + RPY_EXTERN + const char** cppyy_get_all_cpp_names(cppyy_scope_t scope, size_t* count); + + /* class reflection information ------------------------------------------- */ + RPY_EXTERN + char* cppyy_final_name(cppyy_type_t type); + RPY_EXTERN + char* cppyy_scoped_final_name(cppyy_type_t type); + RPY_EXTERN + int cppyy_has_complex_hierarchy(cppyy_type_t type); + RPY_EXTERN + int cppyy_num_bases(cppyy_type_t type); + RPY_EXTERN + char* cppyy_base_name(cppyy_type_t type, int base_index); + RPY_EXTERN + int cppyy_is_subtype(cppyy_type_t derived, cppyy_type_t base); + RPY_EXTERN + int cppyy_smartptr_info(const char* name, cppyy_type_t* raw, cppyy_method_t* deref); + RPY_EXTERN + void cppyy_add_smartptr_type(const char* type_name); + + /* calculate offsets between declared and actual type, up-cast: direction > 0; down-cast: direction < 0 */ + RPY_EXTERN + ptrdiff_t cppyy_base_offset(cppyy_type_t derived, cppyy_type_t base, cppyy_object_t address, int direction); + + /* method/function reflection information --------------------------------- */ + RPY_EXTERN + int cppyy_num_methods(cppyy_scope_t scope); + RPY_EXTERN + cppyy_index_t* cppyy_method_indices_from_name(cppyy_scope_t scope, const char* name); + + RPY_EXTERN + char* cppyy_method_name(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + char* cppyy_method_mangled_name(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + char* cppyy_method_result_type(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + int cppyy_method_num_args(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + int cppyy_method_req_args(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + char* cppyy_method_arg_type(cppyy_scope_t scope, cppyy_index_t idx, int arg_index); + RPY_EXTERN + char* cppyy_method_arg_default(cppyy_scope_t scope, cppyy_index_t idx, int arg_index); + RPY_EXTERN + char* cppyy_method_signature(cppyy_scope_t scope, cppyy_index_t idx, int show_formalargs); + RPY_EXTERN + char* cppyy_method_prototype(cppyy_scope_t scope, cppyy_index_t idx, int show_formalargs); + RPY_EXTERN + int cppyy_is_const_method(cppyy_method_t); + + RPY_EXTERN + int cppyy_exists_method_template(cppyy_scope_t scope, const char* name); + RPY_EXTERN + int cppyy_method_is_template(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + int cppyy_method_num_template_args(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + char* cppyy_method_template_arg_name(cppyy_scope_t scope, cppyy_index_t idx, cppyy_index_t iarg); + + RPY_EXTERN + cppyy_method_t cppyy_get_method(cppyy_scope_t scope, cppyy_index_t idx); + RPY_EXTERN + cppyy_index_t cppyy_get_global_operator( + cppyy_scope_t scope, cppyy_scope_t lc, cppyy_scope_t rc, const char* op); + + /* method properties ------------------------------------------------------ */ + RPY_EXTERN + int cppyy_is_publicmethod(cppyy_type_t type, cppyy_index_t idx); + RPY_EXTERN + int cppyy_is_constructor(cppyy_type_t type, cppyy_index_t idx); + RPY_EXTERN + int cppyy_is_destructor(cppyy_type_t type, cppyy_index_t idx); + RPY_EXTERN + int cppyy_is_staticmethod(cppyy_type_t type, cppyy_index_t idx); + + /* data member reflection information ------------------------------------- */ + RPY_EXTERN + int cppyy_num_datamembers(cppyy_scope_t scope); + RPY_EXTERN + char* cppyy_datamember_name(cppyy_scope_t scope, int datamember_index); + RPY_EXTERN + char* cppyy_datamember_type(cppyy_scope_t scope, int datamember_index); + RPY_EXTERN + ptrdiff_t cppyy_datamember_offset(cppyy_scope_t scope, int datamember_index); + RPY_EXTERN + int cppyy_datamember_index(cppyy_scope_t scope, const char* name); + + /* data member properties ------------------------------------------------- */ + RPY_EXTERN + int cppyy_is_publicdata(cppyy_type_t type, cppyy_index_t datamember_index); + RPY_EXTERN + int cppyy_is_staticdata(cppyy_type_t type, cppyy_index_t datamember_index); + RPY_EXTERN + int cppyy_is_const_data(cppyy_scope_t scope, cppyy_index_t idata); + RPY_EXTERN + int cppyy_is_enum_data(cppyy_scope_t scope, cppyy_index_t idata); + RPY_EXTERN + int cppyy_get_dimension_size(cppyy_scope_t scope, cppyy_index_t idata, int dimension); + + /* misc helpers ----------------------------------------------------------- */ + RPY_EXTERN + long long cppyy_strtoll(const char* str); + RPY_EXTERN + unsigned long long cppyy_strtoull(const char* str); + RPY_EXTERN + void cppyy_free(void* ptr); + + RPY_EXTERN + cppyy_object_t cppyy_charp2stdstring(const char* str, size_t sz); + RPY_EXTERN + const char* cppyy_stdstring2charp(cppyy_object_t ptr, size_t* lsz); + RPY_EXTERN + cppyy_object_t cppyy_stdstring2stdstring(cppyy_object_t ptr); + + RPY_EXTERN + const char* cppyy_stdvector_valuetype(const char* clname); + RPY_EXTERN + size_t cppyy_stdvector_valuesize(const char* clname); + +#ifdef __cplusplus +} +#endif // ifdef __cplusplus + +#endif // ifndef CPPYY_CAPI diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx new file mode 100644 index 0000000000000..4c92d44ce5c21 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.cxx @@ -0,0 +1,2015 @@ +// Bindings +#include "capi.h" +#include "cpp_cppyy.h" +#include "callcontext.h" + +// ROOT +#include "TBaseClass.h" +#include "TClass.h" +#include "TClassRef.h" +#include "TClassTable.h" +#include "TClassEdit.h" +#include "TCollection.h" +#include "TDataMember.h" +#include "TDataType.h" +#include "TEnum.h" +#include "TEnv.h" +#include "TError.h" +#include "TFunction.h" +#include "TFunctionTemplate.h" +#include "TGlobal.h" +#include "TInterpreter.h" +#include "TList.h" +#include "TMethod.h" +#include "TMethodArg.h" +#include "TROOT.h" +#include "TSystem.h" + +// Standard +#include +#include // for std::count +#include +#include +#include +#include +#include +#include +#include // for getenv +#include + +// temp +#include +typedef CPyCppyy::Parameter Parameter; +// --temp + + +// small number that allows use of stack for argument passing +const int SMALL_ARGS_N = 8; + +// data for life time management --------------------------------------------- +typedef std::vector ClassRefs_t; +static ClassRefs_t g_classrefs(1); +static const ClassRefs_t::size_type GLOBAL_HANDLE = 1; +static const ClassRefs_t::size_type STD_HANDLE = GLOBAL_HANDLE + 1; + +typedef std::map Name2ClassRefIndex_t; +static Name2ClassRefIndex_t g_name2classrefidx; + +struct CallWrapper { + CallWrapper(TFunction* f) : fMetaFunction(f), fWrapper(nullptr) {} + TFunction* fMetaFunction; + CallFunc_t* fWrapper; +}; +static std::vector gWrapperHolder; +static inline CallWrapper* new_CallWrapper(TFunction* f) { + CallWrapper* wrap = new CallWrapper(f); + gWrapperHolder.push_back(wrap); + return wrap; +} + + +typedef std::vector GlobalVars_t; +static GlobalVars_t g_globalvars; + +static std::set gSTLNames; + +// data ---------------------------------------------------------------------- +Cppyy::TCppScope_t Cppyy::gGlobalScope = GLOBAL_HANDLE; + +// smart pointer types +static std::set gSmartPtrTypes = + {"auto_ptr", "shared_ptr", "weak_ptr", "unique_ptr"}; + +// configuration +static bool gEnableFastPath = true; + + +// global initialization ----------------------------------------------------- +namespace { + +class ApplicationStarter { +public: + ApplicationStarter() { + // setup dummy holders for global and std namespaces + assert(g_classrefs.size() == GLOBAL_HANDLE); + g_name2classrefidx[""] = GLOBAL_HANDLE; + g_classrefs.push_back(TClassRef("")); + + // aliases for std (setup already in pythonify) + g_name2classrefidx["std"] = STD_HANDLE; + g_name2classrefidx["::std"] = g_name2classrefidx["std"]; + g_classrefs.push_back(TClassRef("std")); + + // add a dummy global to refer to as null at index 0 + g_globalvars.push_back(nullptr); + + // disable fast path if requested + if (getenv("CPPYY_DISABLE_FASTPATH")) gEnableFastPath = false; + + // fill the set of STL names + const char* stl_names[] = {"string", "bitset", "pair", "allocator", + "auto_ptr", "shared_ptr", "unique_ptr", "weak_ptr", + "vector", "list", "forward_list", "deque", "map", "multimap", + "set", "multiset", "unordered_set", "unordered_multiset", + "unordered_map", "unordered_multimap", + "iterator", "reverse_iterator", "basic_string", + "complex", "valarray"}; + for (auto& name : stl_names) + gSTLNames.insert(name); + + // create a helper for wrapping lambdas + gInterpreter->Declare( + "namespace __cppyy_internal { template " + "struct FT : public FT {};" + "template " + "struct FT { typedef std::function F; };}" + ); + + // start off with a reasonable size placeholder for wrappers + gWrapperHolder.reserve(1024); + } + + ~ApplicationStarter() { + for (auto wrap : gWrapperHolder) { + if (wrap->fWrapper) + gInterpreter->CallFunc_Delete(wrap->fWrapper); + delete wrap; + } + } +} _applicationStarter; + +} // unnamed namespace + + +// local helpers ------------------------------------------------------------- +static inline +TClassRef& type_from_handle(Cppyy::TCppScope_t scope) +{ + assert((ClassRefs_t::size_type)scope < g_classrefs.size()); + return g_classrefs[(ClassRefs_t::size_type)scope]; +} + +// type_from_handle to go here +static inline +TFunction* type_get_method(Cppyy::TCppType_t klass, Cppyy::TCppIndex_t idx) +{ + TClassRef& cr = type_from_handle(klass); + if (cr.GetClass()) + return (TFunction*)cr->GetListOfMethods(false)->At(idx); + assert(klass == (Cppyy::TCppType_t)GLOBAL_HANDLE); + return ((CallWrapper*)idx)->fMetaFunction; +} + +static inline +TFunction* m2f(Cppyy::TCppMethod_t method) { + return ((CallWrapper*)method)->fMetaFunction; +} + +static inline +Cppyy::TCppScope_t declaring_scope(Cppyy::TCppMethod_t method) +{ + if (method) { + TMethod* m = dynamic_cast(m2f(method)); + if (m) return Cppyy::GetScope(m->GetClass()->GetName()); + } + return (Cppyy::TCppScope_t)GLOBAL_HANDLE; +} + +static inline +char* cppstring_to_cstring(const std::string& cppstr) +{ + char* cstr = (char*)malloc(cppstr.size()+1); + memcpy(cstr, cppstr.c_str(), cppstr.size()+1); + return cstr; +} + +static inline +bool match_name(const std::string& tname, const std::string fname) +{ +// either match exactly, or match the name as template + if (fname.rfind(tname, 0) == 0) { + if ((tname.size() == fname.size()) || + (tname.size() < fname.size() && fname[tname.size()] == '<')) + return true; + } + return false; +} + +static inline +bool is_stl(const std::string& name) +{ + std::string w = name; + if (w.compare(0, 5, "std::") == 0) + w = w.substr(5, std::string::npos); + std::string::size_type pos = name.find('<'); + if (pos != std::string::npos) + w = w.substr(0, pos); + return gSTLNames.find(w) != gSTLNames.end(); +} + +static inline +bool is_missclassified_stl(const std::string& name) +{ + std::string::size_type pos = name.find('<'); + if (pos != std::string::npos) + return gSTLNames.find(name.substr(0, pos)) != gSTLNames.end(); + return gSTLNames.find(name) != gSTLNames.end(); +} + + +// name to opaque C++ scope representation ----------------------------------- +std::string Cppyy::ResolveName(const std::string& cppitem_name) +{ +// Fully resolve the given name to the final type name. + std::string tclean = cppitem_name.compare(0, 2, "::") == 0 ? + cppitem_name.substr(2, std::string::npos) : cppitem_name; + +// classes (most common) + tclean = TClassEdit::CleanType(tclean.c_str()); + if (tclean.empty() /* unknown, eg. an operator */) return cppitem_name; + +// reduce [N] to [] + if (tclean[tclean.size()-1] == ']') + tclean = tclean.substr(0, tclean.rfind('[')) + "[]"; + +// data types (such as builtins) + TDataType* dt = gROOT->GetType(tclean.c_str()); + if (dt) return dt->GetFullTypeName(); + +// special case for enums + if (IsEnum(cppitem_name)) + return ResolveEnum(cppitem_name); + +// typedefs + return TClassEdit::ResolveTypedef(tclean.c_str(), true); +} + +static std::map resolved_enum_types; +std::string Cppyy::ResolveEnum(const std::string& enum_type) +{ +// The underlying type of a an enum may be any kind of integer. +// Resolve that type via a workaround (note: this function assumes +// that the enum_type name is a valid enum type name) + auto res = resolved_enum_types.find(enum_type); + if (res != resolved_enum_types.end()) + return res->second; + + if (enum_type.find("(anonymous") == std::string::npos) { + std::ostringstream decl; + for (auto& itype : {"unsigned int"}) { + decl << "std::is_same<" + << itype + << ", std::underlying_type<" + << enum_type + << ">::type>::value;"; + if (gInterpreter->ProcessLine(decl.str().c_str())) { + resolved_enum_types[enum_type] = itype; + return itype; + } + } + } + +// failed or anonymous ... signal up stream to special case this + resolved_enum_types[enum_type] = "internal_enum_type_t"; + return "internal_enum_type_t"; // should default to int +} + +Cppyy::TCppScope_t Cppyy::GetScope(const std::string& sname) +{ +// TODO: scope_name should always be final already + std::string scope_name = ResolveName(sname); + auto icr = g_name2classrefidx.find(scope_name); + if (icr != g_name2classrefidx.end()) + return (TCppType_t)icr->second; + +// use TClass directly, to enable auto-loading; class may be stubbed (eg. for +// function returns) leading to a non-null TClass that is otherwise invalid + TClassRef cr(TClass::GetClass(scope_name.c_str(), true /* load */, true /* silent */)); + if (!cr.GetClass() || !cr->Property()) + return (TCppScope_t)0; + + // no check for ClassInfo as forward declared classes are okay (fragile) + + ClassRefs_t::size_type sz = g_classrefs.size(); + g_name2classrefidx[scope_name] = sz; + g_classrefs.push_back(TClassRef(scope_name.c_str())); + return (TCppScope_t)sz; +} + +bool Cppyy::IsTemplate(const std::string& template_name) +{ + return (bool)gInterpreter->CheckClassTemplate(template_name.c_str()); +} + +Cppyy::TCppType_t Cppyy::GetActualClass(TCppType_t klass, TCppObject_t obj) +{ + TClassRef& cr = type_from_handle(klass); + TClass* clActual = cr->GetActualClass((void*)obj); + if (clActual && clActual != cr.GetClass()) { + // TODO: lookup through name should not be needed + return (TCppType_t)GetScope(clActual->GetName()); + } + return klass; +} + +size_t Cppyy::SizeOf(TCppType_t klass) +{ + TClassRef& cr = type_from_handle(klass); + if (cr.GetClass()) return (size_t)cr->Size(); + return (size_t)0; +} + +size_t Cppyy::SizeOf(const std::string& type_name) +{ + TDataType* dt = gROOT->GetType(type_name.c_str()); + if (dt) return dt->Size(); + return SizeOf(GetScope(type_name)); +} + +bool Cppyy::IsBuiltin(const std::string& type_name) +{ + TDataType* dt = gROOT->GetType(TClassEdit::CleanType(type_name.c_str(), 1).c_str()); + if (dt) return dt->GetType() != kOther_t; + return false; +} + +bool Cppyy::IsComplete(const std::string& type_name) +{ +// verify whether the dictionary of this class is fully available + bool b = false; + + int oldEIL = gErrorIgnoreLevel; + gErrorIgnoreLevel = 3000; + TClass* klass = TClass::GetClass(TClassEdit::ShortType(type_name.c_str(), 1).c_str()); + if (klass && klass->GetClassInfo()) // works for normal case w/ dict + b = gInterpreter->ClassInfo_IsLoaded(klass->GetClassInfo()); + else { // special case for forward declared classes + ClassInfo_t* ci = gInterpreter->ClassInfo_Factory(type_name.c_str()); + if (ci) { + b = gInterpreter->ClassInfo_IsLoaded(ci); + gInterpreter->ClassInfo_Delete(ci); // we own the fresh class info + } + } + gErrorIgnoreLevel = oldEIL; + return b; +} + +// memory management --------------------------------------------------------- +Cppyy::TCppObject_t Cppyy::Allocate(TCppType_t type) +{ + TClassRef& cr = type_from_handle(type); + return (TCppObject_t)malloc(cr->Size()); +} + +void Cppyy::Deallocate(TCppType_t /* type */, TCppObject_t instance) +{ + ::operator delete(instance); +} + +Cppyy::TCppObject_t Cppyy::Construct(TCppType_t type) +{ + TClassRef& cr = type_from_handle(type); + return (TCppObject_t)cr->New(); +} + +void Cppyy::Destruct(TCppType_t type, TCppObject_t instance) +{ + TClassRef& cr = type_from_handle(type); + cr->Destructor((void*)instance); +} + + +// method/function dispatching ----------------------------------------------- +static inline CallFunc_t* GetCallFunc(Cppyy::TCppMethod_t method) +{ +// TODO: method should be a callfunc, so that no mapping would be needed. + CallWrapper* wrap = (CallWrapper*)method; + if (wrap->fWrapper) return wrap->fWrapper; + + TFunction* func = wrap->fMetaFunction; + + CallFunc_t* callf = gInterpreter->CallFunc_Factory(); + MethodInfo_t* meth = gInterpreter->MethodInfo_Factory(func->GetDeclId()); + gInterpreter->CallFunc_SetFunc(callf, meth); + gInterpreter->MethodInfo_Delete(meth); + + if (!(callf && gInterpreter->CallFunc_IsValid(callf))) { + // TODO: propagate this error to caller w/o use of Python C-API + /* + PyErr_Format(PyExc_RuntimeError, "could not resolve %s::%s(%s)", + const_cast(klass).GetClassName(), + func ? func->GetName() : const_cast(klass).GetClassName(), + callString.c_str()); */ + std::cerr << "TODO: report unresolved function error to Python\n"; + if (callf) gInterpreter->CallFunc_Delete(callf); + return nullptr; + } + + wrap->fWrapper = callf; + return callf; +} + +static inline +bool copy_args(void* args_, void** vargs) +{ + bool runRelease = false; + std::vector& args = *(std::vector*)args_; + for (std::vector::size_type i = 0; i < args.size(); ++i) { + switch (args[i].fTypeCode) { + case 'b': /* bool */ + vargs[i] = (void*)&args[i].fValue.fBool; + break; + case 'h': /* short */ + vargs[i] = (void*)&args[i].fValue.fShort; + break; + case 'H': /* unsigned short */ + vargs[i] = (void*)&args[i].fValue.fUShort; + break; + case 'i': /* int */ + vargs[i] = (void*)&args[i].fValue.fInt; + break; + case 'I': /* unsigned int */ + vargs[i] = (void*)&args[i].fValue.fUInt; + break; + case 'l': /* long */ + vargs[i] = (void*)&args[i].fValue.fLong; + break; + case 'L': /* unsigned long */ + vargs[i] = (void*)&args[i].fValue.fULong; + break; + case 'q': /* long long */ + vargs[i] = (void*)&args[i].fValue.fLongLong; + break; + case 'Q': /* unsigned long long */ + vargs[i] = (void*)&args[i].fValue.fULongLong; + break; + case 'f': /* float */ + vargs[i] = (void*)&args[i].fValue.fFloat; + break; + case 'd': /* double */ + vargs[i] = (void*)&args[i].fValue.fDouble; + break; + case 'g': /* long double */ + vargs[i] = (void*)&args[i].fValue.fLongDouble; + break; + case 'a': + case 'o': + case 'p': /* void* */ + vargs[i] = (void*)&args[i].fValue.fVoidp; + break; + case 'X': /* (void*)type& with free */ + runRelease = true; + case 'V': /* (void*)type& */ + vargs[i] = args[i].fValue.fVoidp; + break; + case 'r': /* const type& */ + vargs[i] = args[i].fRef; + break; + default: + std::cerr << "unknown type code: " << args[i].fTypeCode << std::endl; + break; + } + } + return runRelease; +} + +static inline +void release_args(const std::vector& args) { + for (std::vector::size_type i = 0; i < args.size(); ++i) { + if (args[i].fTypeCode == 'X') + free(args[i].fValue.fVoidp); + } +} + +static bool FastCall(Cppyy::TCppMethod_t method, void* args_, void* self, void* result) +{ + const std::vector& args = *(std::vector*)args_; + + CallFunc_t* callf = GetCallFunc(method); + if (!callf) + return false; + + TInterpreter::CallFuncIFacePtr_t faceptr = gCling->CallFunc_IFacePtr(callf); + if (faceptr.fKind == TInterpreter::CallFuncIFacePtr_t::kGeneric) { + bool runRelease = false; + if (args.size() <= SMALL_ARGS_N) { + void* smallbuf[SMALL_ARGS_N]; + runRelease = copy_args(args_, smallbuf); + faceptr.fGeneric(self, args.size(), smallbuf, result); + } else { + std::vector buf(args.size()); + runRelease = copy_args(args_, buf.data()); + faceptr.fGeneric(self, args.size(), buf.data(), result); + } + if (runRelease) release_args(args); + return true; + } + + if (faceptr.fKind == TInterpreter::CallFuncIFacePtr_t::kCtor) { + bool runRelease = false; + if (args.size() <= SMALL_ARGS_N) { + void* smallbuf[SMALL_ARGS_N]; + runRelease = copy_args(args_, (void**)smallbuf); + faceptr.fCtor((void**)smallbuf, result, args.size()); + } else { + std::vector buf(args.size()); + runRelease = copy_args(args_, buf.data()); + faceptr.fCtor(buf.data(), result, args.size()); + } + if (runRelease) release_args(args); + return true; + } + + if (faceptr.fKind == TInterpreter::CallFuncIFacePtr_t::kDtor) { + std::cerr << " DESTRUCTOR NOT IMPLEMENTED YET! " << std::endl; + return false; + } + + return false; +} + +template< typename T > +static inline +T CallT(Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, void* args) +{ + T t{}; + if (FastCall(method, args, (void*)self, &t)) + return t; + return (T)-1; +} + +#define CPPYY_IMP_CALL(typecode, rtype) \ +rtype Cppyy::Call##typecode(TCppMethod_t method, TCppObject_t self, void* args)\ +{ \ + return CallT(method, self, args); \ +} + +void Cppyy::CallV(TCppMethod_t method, TCppObject_t self, void* args) +{ + if (!FastCall(method, args, (void*)self, nullptr)) + return /* TODO ... report error */; +} + +CPPYY_IMP_CALL(B, unsigned char) +CPPYY_IMP_CALL(C, char ) +CPPYY_IMP_CALL(H, short ) +CPPYY_IMP_CALL(I, int ) +CPPYY_IMP_CALL(L, long ) +CPPYY_IMP_CALL(LL, Long64_t ) +CPPYY_IMP_CALL(F, float ) +CPPYY_IMP_CALL(D, double ) +CPPYY_IMP_CALL(LD, LongDouble_t ) + +void* Cppyy::CallR(TCppMethod_t method, TCppObject_t self, void* args) +{ + void* r = nullptr; + if (FastCall(method, args, (void*)self, &r)) + return r; + return nullptr; +} + +char* Cppyy::CallS( + TCppMethod_t method, TCppObject_t self, void* args, size_t* length) +{ + char* cstr = nullptr; + TClassRef cr("std::string"); + std::string* cppresult = (std::string*)malloc(sizeof(std::string)); + if (FastCall(method, args, self, (void*)cppresult)) { + cstr = cppstring_to_cstring(*cppresult); + *length = cppresult->size(); + cppresult->std::string::~basic_string(); + } else + *length = 0; + free((void*)cppresult); + return cstr; +} + +Cppyy::TCppObject_t Cppyy::CallConstructor( + TCppMethod_t method, TCppType_t /* klass */, void* args) +{ + void* obj = nullptr; + if (FastCall(method, args, nullptr, &obj)) + return (TCppObject_t)obj; + return (TCppObject_t)0; +} + +void Cppyy::CallDestructor(TCppType_t type, TCppObject_t self) +{ + TClassRef& cr = type_from_handle(type); + cr->Destructor((void*)self, true); +} + +Cppyy::TCppObject_t Cppyy::CallO(TCppMethod_t method, + TCppObject_t self, void* args, TCppType_t result_type) +{ + TClassRef& cr = type_from_handle(result_type); + void* obj = ::operator new(cr->Size()); + if (FastCall(method, args, self, obj)) + return (TCppObject_t)obj; + return (TCppObject_t)0; +} + +Cppyy::TCppFuncAddr_t Cppyy::GetFunctionAddress(TCppScope_t scope, TCppIndex_t idx) +{ + if (!gEnableFastPath) return (TCppFuncAddr_t)nullptr; + TFunction* f = type_get_method(scope, idx); + return (TCppFuncAddr_t)dlsym(RTLD_DEFAULT, f->GetMangledName()); +} + +Cppyy::TCppFuncAddr_t Cppyy::GetFunctionAddress(TCppMethod_t method) +{ + if (!gEnableFastPath) return (TCppFuncAddr_t)nullptr; + TFunction* f = m2f(method); + return (TCppFuncAddr_t)dlsym(RTLD_DEFAULT, f->GetMangledName()); +} + + +// handling of function argument buffer -------------------------------------- +void* Cppyy::AllocateFunctionArgs(size_t nargs) +{ + return new Parameter[nargs]; +} + +void Cppyy::DeallocateFunctionArgs(void* args) +{ + delete [] (Parameter*)args; +} + +size_t Cppyy::GetFunctionArgSizeof() +{ + return sizeof(Parameter); +} + +size_t Cppyy::GetFunctionArgTypeoffset() +{ + return offsetof(Parameter, fTypeCode); +} + + +// scope reflection information ---------------------------------------------- +bool Cppyy::IsNamespace(TCppScope_t scope) +{ +// Test if this scope represents a namespace. + if (scope == GLOBAL_HANDLE) + return true; + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) + return cr->Property() & kIsNamespace; + return false; +} + +bool Cppyy::IsAbstract(TCppType_t klass) +{ +// Test if this type may not be instantiated. + TClassRef& cr = type_from_handle(klass); + if (cr.GetClass()) + return cr->Property() & kIsAbstract; + return false; +} + +bool Cppyy::IsEnum(const std::string& type_name) +{ + if (type_name.empty()) return false; + return gInterpreter->ClassInfo_IsEnum(type_name.c_str()); +} + +// helpers for stripping scope names +static +std::string outer_with_template(const std::string& name) +{ +// Cut down to the outer-most scope from , taking proper care of templates. + int tpl_open = 0; + for (std::string::size_type pos = 0; pos < name.size(); ++pos) { + std::string::value_type c = name[pos]; + + // count '<' and '>' to be able to skip template contents + if (c == '<') + ++tpl_open; + else if (c == '>') + --tpl_open; + + // collect name up to "::" + else if (tpl_open == 0 && \ + c == ':' && pos+1 < name.size() && name[pos+1] == ':') { + // found the extend of the scope ... done + return name.substr(0, pos-1); + } + } + +// whole name is apparently a single scope + return name; +} + +static +std::string outer_no_template(const std::string& name) +{ +// Cut down to the outer-most scope from , drop templates + std::string::size_type first_scope = name.find(':'); + if (first_scope == std::string::npos) + return name.substr(0, name.find('<')); + std::string::size_type first_templ = name.find('<'); + if (first_templ == std::string::npos) + return name.substr(0, first_scope); + return name.substr(0, std::min(first_templ, first_scope)); +} + +#define FILL_COLL(type, filter) { \ + TIter itr{coll}; \ + type* obj = nullptr; \ + while ((obj = (type*)itr.Next())) { \ + const char* nm = obj->GetName(); \ + if (nm && nm[0] != '_' && !(obj->Property() & (filter))) \ + cppnames.insert(nm); \ + }} + +static inline +void cond_add(Cppyy::TCppScope_t scope, const std::string& ns_scope, + std::set& cppnames, const char* name) +{ + if (!name || name[0] == '_' || strstr(name, ".h") != 0 || strncmp(name, "operator", 8) == 0) + return; + + if (scope == GLOBAL_HANDLE) { + if (!is_missclassified_stl(name)) + cppnames.insert(outer_no_template(name)); + } else if (scope == STD_HANDLE) { + if (strncmp(name, "std::", 5) == 0) name += 5; + else if (!is_missclassified_stl(name)) return; + cppnames.insert(outer_no_template(name)); + } else { + if (strncmp(name, ns_scope.c_str(), ns_scope.size()) == 0) + cppnames.insert(outer_with_template(name + ns_scope.size())); + } +} + +void Cppyy::GetAllCppNames(TCppScope_t scope, std::set& cppnames) +{ +// Collect all known names of C++ entities under scope. This is useful for IDEs +// employing tab-completion, for example. Note that functions names need not be +// unique as they can be overloaded. + + TClassRef& cr = type_from_handle(scope); + if (scope != GLOBAL_HANDLE && !(cr.GetClass() && cr->Property())) + return; + + std::string ns_scope = GetFinalName(scope); + if (scope != GLOBAL_HANDLE) ns_scope += "::"; + +// add existing values from read rootmap files if within this scope + TCollection* coll = gInterpreter->GetMapfile()->GetTable(); + { + TIter itr{coll}; + TEnvRec* ev = nullptr; + while ((ev = (TEnvRec*)itr.Next())) + cond_add(scope, ns_scope, cppnames, ev->GetName()); + } + +// do we care about the class table or are the rootmap and list of types enough? +/* + gClassTable->Init(); + const int N = gClassTable->Classes(); + for (int i = 0; i < N; ++i) + cond_add(scope, ns_scope, cppnames, gClassTable->Next()); +*/ + +// any other types (e.g. that may have come from parsing headers) + coll = gROOT->GetListOfTypes(); + { + TIter itr{coll}; + TDataType* dt = nullptr; + while ((dt = (TDataType*)itr.Next())) { + if (!(dt->Property() & kIsFundamental)) + cond_add(scope, ns_scope, cppnames, dt->GetName()); + } + } + +// add functions + coll = (scope == GLOBAL_HANDLE) ? + gROOT->GetListOfGlobalFunctions() : cr->GetListOfMethods(); + { + TIter itr{coll}; + TFunction* obj = nullptr; + while ((obj = (TFunction*)itr.Next())) { + const char* nm = obj->GetName(); + // skip templated functions, adding only the un-instantiated ones + if (nm && nm[0] != '_' && strstr(nm, "<") == 0 && strncmp(nm, "operator", 8) != 0) + cppnames.insert(nm); + } + } + +// add uninstantiated templates + coll = (scope == GLOBAL_HANDLE) ? + gROOT->GetListOfFunctionTemplates() : cr->GetListOfFunctionTemplates(); + FILL_COLL(TFunctionTemplate, kIsPrivate | kIsProtected) + +// add (global) data members + if (scope == GLOBAL_HANDLE) { + coll = gROOT->GetListOfGlobals(); + FILL_COLL(TGlobal, kIsEnum | kIsPrivate | kIsProtected) + } else { + coll = cr->GetListOfDataMembers(); + FILL_COLL(TDataMember, kIsEnum | kIsPrivate | kIsProtected) + } + +// add enums values only for user classes/namespaces + if (scope != GLOBAL_HANDLE && scope != STD_HANDLE) { + coll = cr->GetListOfEnums(); + FILL_COLL(TEnum, kIsPrivate | kIsProtected) + } +} + + +// class reflection information ---------------------------------------------- +std::string Cppyy::GetFinalName(TCppType_t klass) +{ + if (klass == GLOBAL_HANDLE) + return ""; + TClassRef& cr = type_from_handle(klass); + std::string clName = cr->GetName(); +// TODO: why is this template splitting needed? + std::string::size_type pos = clName.substr(0, clName.find('<')).rfind("::"); + if (pos != std::string::npos) + return clName.substr(pos+2, std::string::npos); + return clName; +} + +std::string Cppyy::GetScopedFinalName(TCppType_t klass) +{ + TClassRef& cr = type_from_handle(klass); + if (cr.GetClass()) { + std::string name = cr->GetName(); + if (is_missclassified_stl(name)) + return std::string("std::")+cr->GetName(); + return cr->GetName(); + } + return ""; +} + +bool Cppyy::HasComplexHierarchy(TCppType_t klass) +{ + int is_complex = 1; + size_t nbases = 0; + + TClassRef& cr = type_from_handle(klass); + if (cr.GetClass() && cr->GetListOfBases() != 0) + nbases = GetNumBases(klass); + + if (1 < nbases) + is_complex = 1; + else if (nbases == 0) + is_complex = 0; + else { // one base class only + TBaseClass* base = (TBaseClass*)cr->GetListOfBases()->At(0); + if (base->Property() & kIsVirtualBase) + is_complex = 1; // TODO: verify; can be complex, need not be. + else + is_complex = HasComplexHierarchy(GetScope(base->GetName())); + } + + return is_complex; +} + +Cppyy::TCppIndex_t Cppyy::GetNumBases(TCppType_t klass) +{ +// Get the total number of base classes that this class has. + TClassRef& cr = type_from_handle(klass); + if (cr.GetClass() && cr->GetListOfBases() != 0) + return (TCppIndex_t)cr->GetListOfBases()->GetSize(); + return (TCppIndex_t)0; +} + +std::string Cppyy::GetBaseName(TCppType_t klass, TCppIndex_t ibase) +{ + TClassRef& cr = type_from_handle(klass); + return ((TBaseClass*)cr->GetListOfBases()->At(ibase))->GetName(); +} + +bool Cppyy::IsSubtype(TCppType_t derived, TCppType_t base) +{ + if (derived == base) + return true; + TClassRef& derived_type = type_from_handle(derived); + TClassRef& base_type = type_from_handle(base); + return derived_type->GetBaseClass(base_type) != 0; +} + +bool Cppyy::GetSmartPtrInfo( + const std::string& tname, TCppType_t& raw, TCppMethod_t& deref) +{ + const std::string& rn = ResolveName(tname); + if (gSmartPtrTypes.find(rn.substr(0, rn.find("<"))) != gSmartPtrTypes.end()) { + TClassRef& cr = type_from_handle(GetScope(tname)); + if (cr.GetClass()) { + gInterpreter->UpdateListOfMethods(cr.GetClass()); + TFunction* func = nullptr; + TIter next(cr->GetListOfAllPublicMethods()); + while ((func = (TFunction*)next())) { + if (strstr(func->GetName(), "operator->")) { + deref = (TCppMethod_t)new_CallWrapper(func); + raw = GetScope(TClassEdit::ShortType( + func->GetReturnTypeNormalizedName().c_str(), 1)); + return deref && raw; + } + } + } + } + + return false; +} + +void Cppyy::AddSmartPtrType(const std::string& type_name) +{ + gSmartPtrTypes.insert(ResolveName(type_name)); +} + + +// type offsets -------------------------------------------------------------- +ptrdiff_t Cppyy::GetBaseOffset(TCppType_t derived, TCppType_t base, + TCppObject_t address, int direction, bool rerror) +{ +// calculate offsets between declared and actual type, up-cast: direction > 0; down-cast: direction < 0 + if (derived == base || !(base && derived)) + return (ptrdiff_t)0; + + TClassRef& cd = type_from_handle(derived); + TClassRef& cb = type_from_handle(base); + + if (!cd.GetClass() || !cb.GetClass()) + return (ptrdiff_t)0; + + ptrdiff_t offset = -1; + if (!(cd->GetClassInfo() && cb->GetClassInfo())) { // gInterpreter requirement + // would like to warn, but can't quite determine error from intentional + // hiding by developers, so only cover the case where we really should have + // had a class info, but apparently don't: + if (cd->IsLoaded()) { + // warn to allow diagnostics + std::ostringstream msg; + msg << "failed offset calculation between " << cb->GetName() << " and " << cd->GetName(); + // TODO: propagate this warning to caller w/o use of Python C-API + // PyErr_Warn(PyExc_RuntimeWarning, const_cast(msg.str().c_str())); + std::cerr << "Warning: " << msg.str() << '\n'; + } + + // return -1 to signal caller NOT to apply offset + return rerror ? (ptrdiff_t)offset : 0; + } + + offset = gInterpreter->ClassInfo_GetBaseOffset( + cd->GetClassInfo(), cb->GetClassInfo(), (void*)address, direction > 0); + if (offset == -1) // Cling error, treat silently + return rerror ? (ptrdiff_t)offset : 0; + + return (ptrdiff_t)(direction < 0 ? -offset : offset); +} + + +// method/function reflection information ------------------------------------ +Cppyy::TCppIndex_t Cppyy::GetNumMethods(TCppScope_t scope) +{ + if (IsNamespace(scope)) + return (TCppIndex_t)0; // enforce lazy + + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass() && cr->GetListOfMethods(true)) { + Cppyy::TCppIndex_t nMethods = (TCppIndex_t)cr->GetListOfMethods(false)->GetSize(); + if (nMethods == (TCppIndex_t)0) { + std::string clName = GetScopedFinalName(scope); + if (clName.find('<') != std::string::npos) { + // chicken-and-egg problem: TClass does not know about methods until instantiation: force it + if (TClass::GetClass(("std::"+clName).c_str())) // TODO: this doesn't work for templates + clName = "std::" + clName; + std::ostringstream stmt; + stmt << "template class " << clName << ";"; + gInterpreter->Declare(stmt.str().c_str()); + + // now reload the methods + return (TCppIndex_t)cr->GetListOfMethods(true)->GetSize(); + } + } + return nMethods; + } + + return (TCppIndex_t)0; // unknown class? +} + +std::vector Cppyy::GetMethodIndicesFromName( + TCppScope_t scope, const std::string& name) +{ + std::vector indices; + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + gInterpreter->UpdateListOfMethods(cr.GetClass()); + int imeth = 0; + TFunction* func = nullptr; + TIter next(cr->GetListOfMethods()); + while ((func = (TFunction*)next())) { + if (match_name(name, func->GetName())) { + if (func->Property() & kIsPublic) + indices.push_back((TCppIndex_t)imeth); + } + ++imeth; + } + } else if (scope == GLOBAL_HANDLE) { + TCollection* funcs = gROOT->GetListOfGlobalFunctions(true); + + // tickle deserialization + if (!funcs->FindObject(name.c_str())) + return indices; + + TFunction* func = nullptr; + TIter ifunc(funcs); + while ((func = (TFunction*)ifunc.Next())) { + if (match_name(name, func->GetName())) + indices.push_back((TCppIndex_t)new_CallWrapper(func)); + } + } + + return indices; +} + +Cppyy::TCppMethod_t Cppyy::GetMethod(TCppScope_t scope, TCppIndex_t imeth) +{ + TFunction* func = type_get_method(scope, imeth); + if (func) + return (Cppyy::TCppMethod_t)new_CallWrapper(func); + return (Cppyy::TCppMethod_t)nullptr; +} + +std::string Cppyy::GetMethodName(TCppMethod_t method) +{ + if (method) { + std::string name = m2f(method)->GetName(); + + if (name.compare(0, 8, "operator") != 0) + // strip template instantiation part, if any + return name.substr(0, name.find('<')); + return name; + } + return ""; +} + +std::string Cppyy::GetMethodMangledName(TCppMethod_t method) +{ + if (method) + return m2f(method)->GetMangledName(); + return ""; +} + +std::string Cppyy::GetMethodResultType(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + if (f->ExtraProperty() & kIsConstructor) + return "constructor"; + return f->GetReturnTypeNormalizedName(); + } + return ""; +} + +Cppyy::TCppIndex_t Cppyy::GetMethodNumArgs(TCppMethod_t method) +{ + if (method) + return m2f(method)->GetNargs(); + return 0; +} + +Cppyy::TCppIndex_t Cppyy::GetMethodReqArgs(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + return (TCppIndex_t)(f->GetNargs() - f->GetNargsOpt()); + } + return (TCppIndex_t)0; +} + +std::string Cppyy::GetMethodArgName(TCppMethod_t method, int iarg) +{ + if (method) { + TFunction* f = m2f(method); + TMethodArg* arg = (TMethodArg*)f->GetListOfMethodArgs()->At(iarg); + return arg->GetName(); + } + return ""; +} + +std::string Cppyy::GetMethodArgType(TCppMethod_t method, int iarg) +{ + if (method) { + TFunction* f = m2f(method); + TMethodArg* arg = (TMethodArg*)f->GetListOfMethodArgs()->At(iarg); + return arg->GetTypeNormalizedName(); + } + return ""; +} + +std::string Cppyy::GetMethodArgDefault(TCppMethod_t method, int iarg) +{ + if (method) { + TFunction* f = m2f(method); + TMethodArg* arg = (TMethodArg*)f->GetListOfMethodArgs()->At(iarg); + const char* def = arg->GetDefault(); + if (def) + return def; + } + + return ""; +} + +std::string Cppyy::GetMethodSignature(TCppScope_t scope, TCppIndex_t imeth, bool show_formalargs) +{ + TFunction* f = type_get_method(scope, imeth); + if (f) { + std::ostringstream sig; + sig << "("; + int nArgs = f->GetNargs(); + for (int iarg = 0; iarg < nArgs; ++iarg) { + TMethodArg* arg = (TMethodArg*)f->GetListOfMethodArgs()->At(iarg); + sig << arg->GetFullTypeName(); + if (show_formalargs) { + const char* argname = arg->GetName(); + if (argname && argname[0] != '\0') sig << " " << argname; + const char* defvalue = arg->GetDefault(); + if (defvalue && defvalue[0] != '\0') sig << " = " << defvalue; + } + if (iarg != nArgs-1) sig << (show_formalargs ? ", " : ","); + } + sig << ")"; + return sig.str(); + } + return ""; +} + +std::string Cppyy::GetMethodPrototype(TCppScope_t scope, TCppIndex_t imeth, bool show_formalargs) +{ + std::string scName = GetScopedFinalName(scope); + TFunction* f = type_get_method(scope, imeth); + if (f) { + std::ostringstream sig; + sig << f->GetReturnTypeName() << " " + << scName << "::" << f->GetName(); + sig << GetMethodSignature(scope, imeth, show_formalargs); + return sig.str(); + } + return ""; +} + +bool Cppyy::IsConstMethod(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + return f->Property() & kIsConstMethod; + } + return false; +} + +bool Cppyy::ExistsMethodTemplate(TCppScope_t scope, const std::string& name) +{ + if (scope == (cppyy_scope_t)GLOBAL_HANDLE) + return (bool)gROOT->GetFunctionTemplate(name.c_str()); + else { + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) + return (bool)cr->GetFunctionTemplate(name.c_str()); + } + +// failure ... + return false; +} + +bool Cppyy::IsMethodTemplate(TCppScope_t scope, TCppIndex_t imeth) +{ + TFunction* f = type_get_method(scope, imeth); + if (!f) return false; + + if (scope == (Cppyy::TCppType_t)GLOBAL_HANDLE) { + // TODO: figure this one out ... + return false; + } else { + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + return (bool)cr->GetFunctionTemplate(f->GetName()); + } + } + return false; +} + +Cppyy::TCppIndex_t Cppyy::GetMethodNumTemplateArgs( + TCppScope_t scope, TCppIndex_t imeth) +{ +// this is dumb, but the fact that Cling can instantiate template +// methods on-the-fly means that there is some vast reworking TODO +// in interp_cppyy.py, so this is just to make the original tests +// pass that worked in the Reflex era ... + const std::string name = GetMethodName(GetMethod(scope, imeth)); + return (TCppIndex_t)(std::count(name.begin(), name.end(), ',')+1); +} + +std::string Cppyy::GetMethodTemplateArgName( + TCppScope_t scope, TCppIndex_t imeth, TCppIndex_t /* iarg */) +{ +// TODO: like above, given Cling's instantiation capability, this +// is just dumb ... + TFunction* f = type_get_method(scope, imeth); + std::string name = f->GetName(); + std::string::size_type pos = name.find('<'); +// TODO: left as-is, this should loop over arguments, but what is here +// suffices to pass the Reflex-based tests (need more tests :)) + return cppstring_to_cstring( + ResolveName(name.substr(pos+1, name.size()-pos-2))); +} + +Cppyy::TCppMethod_t Cppyy::GetMethodTemplate( + TCppScope_t scope, const std::string& name, const std::string& proto) +{ + TFunction* func = nullptr; + if (scope == (cppyy_scope_t)GLOBAL_HANDLE) { + func = gROOT->GetGlobalFunctionWithPrototype(name.c_str(), proto.c_str()); + } else { + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) + func = cr->GetMethodWithPrototype(name.c_str(), proto.c_str()); + } + + if (func) + return (TCppMethod_t)new_CallWrapper(func); + +// failure ... + return (TCppMethod_t)nullptr; +} + +Cppyy::TCppIndex_t Cppyy::GetGlobalOperator( + TCppScope_t scope, TCppType_t lc, TCppType_t rc, const std::string& opname) +{ +// Find a global operator function with a matching signature + std::string proto = GetScopedFinalName(lc) + ", " + GetScopedFinalName(rc); + if (scope == (cppyy_scope_t)GLOBAL_HANDLE) { + TFunction* func = gROOT->GetGlobalFunctionWithPrototype(opname.c_str(), proto.c_str()); + if (func) return (TCppIndex_t)new_CallWrapper(func); + } else { + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TFunction* func = cr->GetMethodWithPrototype(opname.c_str(), proto.c_str()); + if (func) return (TCppIndex_t)cr->GetListOfMethods()->IndexOf(func); + } + } + +// failure ... + return (TCppIndex_t)-1; +} + +// method properties --------------------------------------------------------- +bool Cppyy::IsPublicMethod(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + return f->Property() & kIsPublic; + } + return false; +} + +bool Cppyy::IsConstructor(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + return f->ExtraProperty() & kIsConstructor; + } + return false; +} + +bool Cppyy::IsDestructor(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + return f->ExtraProperty() & kIsDestructor; + } + return false; +} + +bool Cppyy::IsStaticMethod(TCppMethod_t method) +{ + if (method) { + TFunction* f = m2f(method); + return f->Property() & kIsStatic; + } + return false; +} + +// data member reflection information ---------------------------------------- +Cppyy::TCppIndex_t Cppyy::GetNumDatamembers(TCppScope_t scope) +{ + if (IsNamespace(scope)) + return (TCppIndex_t)0; // enforce lazy + + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass() && cr->GetListOfDataMembers()) + return cr->GetListOfDataMembers()->GetSize(); + + return (TCppIndex_t)0; // unknown class? +} + +std::string Cppyy::GetDatamemberName(TCppScope_t scope, TCppIndex_t idata) +{ + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + return m->GetName(); + } + assert(scope == GLOBAL_HANDLE); + TGlobal* gbl = g_globalvars[idata]; + return gbl->GetName(); +} + +std::string Cppyy::GetDatamemberType(TCppScope_t scope, TCppIndex_t idata) +{ + if (scope == GLOBAL_HANDLE) { + TGlobal* gbl = g_globalvars[idata]; + std::string fullType = gbl->GetFullTypeName(); + if (!strcmp(gbl->GetName(), "gInterpreter")) + return fullType; + + if (fullType[fullType.size()-1] == '*' && \ + fullType.compare(0, 4, "char") != 0) + fullType.append("*"); + else if ((int)gbl->GetArrayDim() > 1) + fullType.append("*"); + else if ((int)gbl->GetArrayDim() == 1) { + std::ostringstream s; + s << '[' << gbl->GetMaxIndex(0) << ']' << std::ends; + fullType.append(s.str()); + } + return fullType; + } + + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + std::string fullType = m->GetTrueTypeName(); + if ((int)m->GetArrayDim() > 1 || (!m->IsBasic() && m->IsaPointer())) + fullType.append("*"); + else if ((int)m->GetArrayDim() == 1) { + std::ostringstream s; + s << '[' << m->GetMaxIndex(0) << ']' << std::ends; + fullType.append(s.str()); + } + return fullType; + } + + return ""; +} + +ptrdiff_t Cppyy::GetDatamemberOffset(TCppScope_t scope, TCppIndex_t idata) +{ + if (scope == GLOBAL_HANDLE) { + TGlobal* gbl = g_globalvars[idata]; + return (ptrdiff_t)gbl->GetAddress(); + } + + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + // CLING WORKAROUND: the following causes templates to be instantiated first + // in the proper scope, making the lookup succeed and preventing spurious + // duplicate instantiations later. + if ((m->Property() & kIsStatic) && strchr(cr->GetName(), '<')) + gInterpreter->ProcessLine(((std::string)cr->GetName()+"::"+m->GetName()+";").c_str()); + return (ptrdiff_t)m->GetOffsetCint(); // yes, CINT (GetOffset() is both wrong + // and caches that wrong result! + } + + return (ptrdiff_t)-1; +} + +Cppyy::TCppIndex_t Cppyy::GetDatamemberIndex(TCppScope_t scope, const std::string& name) +{ + if (scope == GLOBAL_HANDLE) { + TGlobal* gb = (TGlobal*)gROOT->GetListOfGlobals(true)->FindObject(name.c_str()); + if (gb && gb->GetAddress()) { + if (gb->GetAddress() == (void*)-1) { + // name known, but variable not in loaded by Cling yet ... force it + // TODO: figure out a less hackish way (problem is that the metaProcessor + // is hidden in TCling) + gInterpreter->ProcessLine((name+";").c_str()); + } + if (gb->GetAddress() != (void*)-1) { + if (strcmp(gb->GetFullTypeName(), "(lambda)") == 0) { + // lambdas use a compiler internal closure type, so we wrap + // them, then return the wrapper's type + // TODO: this current leaks the std::function; also, if possible, + // should instantiate through TClass rather then ProcessLine + std::ostringstream s; + s << "auto __cppyy_internal_wrap_" << name << " = " + "new __cppyy_internal::FT::F" + "{" << name << "};"; + gInterpreter->ProcessLine(s.str().c_str()); + TGlobal* wrap = (TGlobal*)gROOT->GetListOfGlobals(true)->FindObject( + ("__cppyy_internal_wrap_"+name).c_str()); + if (wrap && wrap->GetAddress()) gb = wrap; + } + + g_globalvars.push_back(gb); + return g_globalvars.size() - 1; + } + } + + } else { + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* dm = + (TDataMember*)cr->GetListOfDataMembers()->FindObject(name.c_str()); + // TODO: turning this into an index is silly ... + if (dm) return (TCppIndex_t)cr->GetListOfDataMembers()->IndexOf(dm); + } + } + + return (TCppIndex_t)-1; +} + + +// data member properties ---------------------------------------------------- +bool Cppyy::IsPublicData(TCppScope_t scope, TCppIndex_t idata) +{ + if (scope == GLOBAL_HANDLE) + return true; + TClassRef& cr = type_from_handle(scope); + if (cr->Property() & kIsNamespace) + return true; + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + return m->Property() & kIsPublic; +} + +bool Cppyy::IsStaticData(TCppScope_t scope, TCppIndex_t idata) +{ + if (scope == GLOBAL_HANDLE) + return true; + TClassRef& cr = type_from_handle(scope); + if (cr->Property() & kIsNamespace) + return true; + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + return m->Property() & kIsStatic; +} + +bool Cppyy::IsConstData(TCppScope_t scope, TCppIndex_t idata) +{ + if (scope == GLOBAL_HANDLE) { + TGlobal* gbl = g_globalvars[idata]; + return gbl->Property() & kIsConstant; + } + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + return m->Property() & kIsConstant; + } + return false; +} + +bool Cppyy::IsEnumData(TCppScope_t scope, TCppIndex_t idata) +{ + if (scope == GLOBAL_HANDLE) { + TGlobal* gbl = g_globalvars[idata]; + return gbl->Property() & kIsEnum; + } + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + return m->Property() & kIsEnum; + } + return false; +} + +int Cppyy::GetDimensionSize(TCppScope_t scope, TCppIndex_t idata, int dimension) +{ + if (scope == GLOBAL_HANDLE) { + TGlobal* gbl = g_globalvars[idata]; + return gbl->GetMaxIndex(dimension); + } + TClassRef& cr = type_from_handle(scope); + if (cr.GetClass()) { + TDataMember* m = (TDataMember*)cr->GetListOfDataMembers()->At(idata); + return m->GetMaxIndex(dimension); + } + return -1; +} + + +//- C-linkage wrappers ------------------------------------------------------- +static inline +std::vector vsargs_to_parvec(void* args, int nargs) +{ + std::vector v; + v.reserve(nargs); + for (int i=0; i parvec = vsargs_to_parvec(args, nargs); + Cppyy::CallV(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION +} + +unsigned char cppyy_call_b(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (unsigned char)Cppyy::CallB(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (unsigned char)-1; +} + +char cppyy_call_c(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (char)Cppyy::CallC(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (char)-1; +} + +short cppyy_call_h(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (short)Cppyy::CallH(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (short)-1; +} + +int cppyy_call_i(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (int)Cppyy::CallI(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (int)-1; +} + +long cppyy_call_l(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (long)Cppyy::CallL(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (long)-1; +} + +long long cppyy_call_ll(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (long long)Cppyy::CallLL(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (long long)-1; +} + +float cppyy_call_f(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (float)Cppyy::CallF(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (float)-1; +} + +double cppyy_call_d(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (double)Cppyy::CallD(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (double)-1; +} + +long double cppyy_call_ld(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (long double)Cppyy::CallLD(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (long double)-1; +} + +void* cppyy_call_r(cppyy_method_t method, cppyy_object_t self, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return (void*)Cppyy::CallR(method, (void*)self, &parvec); + } CPPYY_HANDLE_EXCEPTION + return (void*)nullptr; +} + +char* cppyy_call_s( + cppyy_method_t method, cppyy_object_t self, int nargs, void* args, size_t* lsz) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return Cppyy::CallS(method, (void*)self, &parvec, lsz); + } CPPYY_HANDLE_EXCEPTION + return (char*)nullptr; +} + +cppyy_object_t cppyy_constructor( + cppyy_method_t method, cppyy_type_t klass, int nargs, void* args) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return cppyy_object_t(Cppyy::CallConstructor(method, klass, &parvec)); + } CPPYY_HANDLE_EXCEPTION + return (cppyy_object_t)0; +} + +void cppyy_destructor(cppyy_type_t klass, cppyy_object_t self) { + Cppyy::CallDestructor(klass, self); +} + +cppyy_object_t cppyy_call_o(cppyy_method_t method, cppyy_object_t self, + int nargs, void* args, cppyy_type_t result_type) { + try { + std::vector parvec = vsargs_to_parvec(args, nargs); + return cppyy_object_t(Cppyy::CallO(method, (void*)self, &parvec, result_type)); + } CPPYY_HANDLE_EXCEPTION + return (cppyy_object_t)0; +} + +cppyy_funcaddr_t cppyy_function_address_from_index(cppyy_scope_t scope, cppyy_index_t idx) { + return cppyy_funcaddr_t(Cppyy::GetFunctionAddress(scope, idx)); +} + +cppyy_funcaddr_t cppyy_function_address_from_method(cppyy_method_t method) { + return cppyy_funcaddr_t(Cppyy::GetFunctionAddress(method)); +} + + +/* handling of function argument buffer ----------------------------------- */ +void* cppyy_allocate_function_args(int nargs) { +// for calls through C interface, require extra space for reporting exceptions + return malloc(nargs*sizeof(Parameter)+sizeof(cppyy_exctype_t)+sizeof(char**)); +} + +void cppyy_deallocate_function_args(void* args) { + free(args); +} + +size_t cppyy_function_arg_sizeof() { + return (size_t)Cppyy::GetFunctionArgSizeof(); +} + +size_t cppyy_function_arg_typeoffset() { + return (size_t)Cppyy::GetFunctionArgTypeoffset(); +} + + +/* scope reflection information ------------------------------------------- */ +int cppyy_is_namespace(cppyy_scope_t scope) { + return (int)Cppyy::IsNamespace(scope); +} + +int cppyy_is_template(const char* template_name) { + return (int)Cppyy::IsTemplate(template_name); +} + +int cppyy_is_abstract(cppyy_type_t type) { + return (int)Cppyy::IsAbstract(type); +} + +int cppyy_is_enum(const char* type_name) { + return (int)Cppyy::IsEnum(type_name); +} + +const char** cppyy_get_all_cpp_names(cppyy_scope_t scope, size_t* count) { + std::set cppnames; + Cppyy::GetAllCppNames(scope, cppnames); + const char** c_cppnames = (const char**)malloc(cppnames.size()*sizeof(const char*)); + int i = 0; + for (const auto& name : cppnames) { + c_cppnames[i] = cppstring_to_cstring(name); + ++i; + } + *count = cppnames.size(); + return c_cppnames; +} + + +/* class reflection information ------------------------------------------- */ +char* cppyy_final_name(cppyy_type_t type) { + return cppstring_to_cstring(Cppyy::GetFinalName(type)); +} + +char* cppyy_scoped_final_name(cppyy_type_t type) { + return cppstring_to_cstring(Cppyy::GetScopedFinalName(type)); +} + +int cppyy_has_complex_hierarchy(cppyy_type_t type) { + return (int)Cppyy::HasComplexHierarchy(type); +} + +int cppyy_num_bases(cppyy_type_t type) { + return (int)Cppyy::GetNumBases(type); +} + +char* cppyy_base_name(cppyy_type_t type, int base_index) { + return cppstring_to_cstring(Cppyy::GetBaseName (type, base_index)); +} + +int cppyy_is_subtype(cppyy_type_t derived, cppyy_type_t base) { + return (int)Cppyy::IsSubtype(derived, base); +} + +int cppyy_smartptr_info(const char* name, cppyy_type_t* raw, cppyy_method_t* deref) { + Cppyy::TCppScope_t r2 = *raw; + Cppyy::TCppMethod_t d2 = *deref; + int result = (int)Cppyy::GetSmartPtrInfo(name, r2, d2); + *raw = r2; *deref = d2; + return result; +} + +void cppyy_add_smartptr_type(const char* type_name) { + Cppyy::AddSmartPtrType(type_name); +} + + +/* calculate offsets between declared and actual type, up-cast: direction > 0; down-cast: direction < 0 */ +ptrdiff_t cppyy_base_offset(cppyy_type_t derived, cppyy_type_t base, cppyy_object_t address, int direction) { + return (ptrdiff_t)Cppyy::GetBaseOffset(derived, base, (void*)address, direction, 0); +} + + +/* method/function reflection information --------------------------------- */ +int cppyy_num_methods(cppyy_scope_t scope) { + return (int)Cppyy::GetNumMethods(scope); +} + +cppyy_index_t* cppyy_method_indices_from_name(cppyy_scope_t scope, const char* name) +{ + std::vector result = Cppyy::GetMethodIndicesFromName(scope, name); + + if (result.empty()) + return (cppyy_index_t*)nullptr; + + cppyy_index_t* llresult = (cppyy_index_t*)malloc(sizeof(cppyy_index_t)*(result.size()+1)); + for (int i = 0; i < (int)result.size(); ++i) llresult[i] = result[i]; + llresult[result.size()] = -1; + return llresult; +} + +char* cppyy_method_name(cppyy_scope_t scope, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(scope, idx)}; + return cppstring_to_cstring(Cppyy::GetMethodName((Cppyy::TCppMethod_t)&wrap)); +} + +char* cppyy_method_mangled_name(cppyy_scope_t scope, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(scope, idx)}; + return cppstring_to_cstring(Cppyy::GetMethodMangledName((Cppyy::TCppMethod_t)&wrap)); +} + +char* cppyy_method_result_type(cppyy_scope_t scope, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(scope, idx)}; + return cppstring_to_cstring(Cppyy::GetMethodResultType((Cppyy::TCppMethod_t)&wrap)); +} + +int cppyy_method_num_args(cppyy_scope_t scope, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(scope, idx)}; + return (int)Cppyy::GetMethodNumArgs((Cppyy::TCppMethod_t)&wrap); +} + +int cppyy_method_req_args(cppyy_scope_t scope, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(scope, idx)}; + return (int)Cppyy::GetMethodReqArgs((Cppyy::TCppMethod_t)&wrap); +} + +char* cppyy_method_arg_type(cppyy_scope_t scope, cppyy_index_t idx, int arg_index) { + CallWrapper wrap{type_get_method(scope, idx)}; + return cppstring_to_cstring(Cppyy::GetMethodArgType((Cppyy::TCppMethod_t)&wrap, arg_index)); +} + +char* cppyy_method_arg_default(cppyy_scope_t scope, cppyy_index_t idx, int arg_index) { + CallWrapper wrap{type_get_method(scope, idx)}; + return cppstring_to_cstring(Cppyy::GetMethodArgDefault((Cppyy::TCppMethod_t)&wrap, arg_index)); +} + +char* cppyy_method_signature(cppyy_scope_t scope, cppyy_index_t idx, int show_formalargs) { + return cppstring_to_cstring(Cppyy::GetMethodSignature(scope, idx, (bool)show_formalargs)); +} + +char* cppyy_method_prototype(cppyy_scope_t scope, cppyy_index_t idx, int show_formalargs) { + return cppstring_to_cstring(Cppyy::GetMethodPrototype(scope, idx, (bool)show_formalargs)); +} + +int cppyy_is_const_method(cppyy_method_t method) { + return (int)Cppyy::IsConstMethod(method); +} + +int cppyy_exists_method_template(cppyy_scope_t scope, const char* name) { + return (int)Cppyy::ExistsMethodTemplate(scope, name); +} + +int cppyy_method_is_template(cppyy_scope_t scope, cppyy_index_t idx) { + return (int)Cppyy::IsMethodTemplate(scope, idx); +} + +int cppyy_method_num_template_args(cppyy_scope_t scope, cppyy_index_t idx) { + return (int)Cppyy::GetMethodNumTemplateArgs(scope, idx); +} + +char* cppyy_method_template_arg_name(cppyy_scope_t scope, cppyy_index_t idx, cppyy_index_t iarg) { + return cppstring_to_cstring(Cppyy::GetMethodTemplateArgName(scope, idx, iarg)); +} + +cppyy_method_t cppyy_get_method(cppyy_scope_t scope, cppyy_index_t idx) { + return cppyy_method_t(Cppyy::GetMethod(scope, idx)); +} + +cppyy_index_t cppyy_get_global_operator(cppyy_scope_t scope, cppyy_scope_t lc, cppyy_scope_t rc, const char* op) { + return cppyy_index_t(Cppyy::GetGlobalOperator(scope, lc, rc, op)); +} + + +/* method properties ------------------------------------------------------ */ +int cppyy_is_publicmethod(cppyy_type_t type, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(type, idx)}; + return (int)Cppyy::IsPublicMethod((Cppyy::TCppMethod_t)&wrap); +} + +int cppyy_is_constructor(cppyy_type_t type, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(type, idx)}; + return (int)Cppyy::IsConstructor((Cppyy::TCppMethod_t)&wrap); +} + +int cppyy_is_destructor(cppyy_type_t type, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(type, idx)}; + return (int)Cppyy::IsDestructor((Cppyy::TCppMethod_t)&wrap); +} + +int cppyy_is_staticmethod(cppyy_type_t type, cppyy_index_t idx) { + CallWrapper wrap{type_get_method(type, idx)}; + return (int)Cppyy::IsStaticMethod((Cppyy::TCppMethod_t)&wrap); +} + + +/* data member reflection information ------------------------------------- */ +int cppyy_num_datamembers(cppyy_scope_t scope) { + return (int)Cppyy::GetNumDatamembers(scope); +} + +char* cppyy_datamember_name(cppyy_scope_t scope, int datamember_index) { + return cppstring_to_cstring(Cppyy::GetDatamemberName(scope, datamember_index)); +} + +char* cppyy_datamember_type(cppyy_scope_t scope, int datamember_index) { + return cppstring_to_cstring(Cppyy::GetDatamemberType(scope, datamember_index)); +} + +ptrdiff_t cppyy_datamember_offset(cppyy_scope_t scope, int datamember_index) { + return ptrdiff_t(Cppyy::GetDatamemberOffset(scope, datamember_index)); +} + +int cppyy_datamember_index(cppyy_scope_t scope, const char* name) { + return (int)Cppyy::GetDatamemberIndex(scope, name); +} + + + +/* data member properties ------------------------------------------------- */ +int cppyy_is_publicdata(cppyy_type_t type, cppyy_index_t datamember_index) { + return (int)Cppyy::IsPublicData(type, datamember_index); +} + +int cppyy_is_staticdata(cppyy_type_t type, cppyy_index_t datamember_index) { + return (int)Cppyy::IsStaticData(type, datamember_index); +} + +int cppyy_is_const_data(cppyy_scope_t scope, cppyy_index_t idata) { + return (int)Cppyy::IsConstData(scope, idata); +} + +int cppyy_is_enum_data(cppyy_scope_t scope, cppyy_index_t idata) { + return (int)Cppyy::IsEnumData(scope, idata); +} + +int cppyy_get_dimension_size(cppyy_scope_t scope, cppyy_index_t idata, int dimension) { + return Cppyy::GetDimensionSize(scope, idata, dimension); +} + + +/* misc helpers ----------------------------------------------------------- */ +RPY_EXTERN +void* cppyy_load_dictionary(const char* lib_name) { + int result = gSystem->Load(lib_name); + return (void*)(result == 0 /* success */ || result == 1 /* already loaded */); +} + +#if defined(_MSC_VER) +long long cppyy_strtoll(const char* str) { + return _strtoi64(str, NULL, 0); +} + +extern "C" { +unsigned long long cppyy_strtoull(const char* str) { + return _strtoui64(str, NULL, 0); +} +} +#else +long long cppyy_strtoll(const char* str) { + return strtoll(str, NULL, 0); +} + +extern "C" { +unsigned long long cppyy_strtoull(const char* str) { + return strtoull(str, NULL, 0); +} +} +#endif + +void cppyy_free(void* ptr) { + free(ptr); +} + +cppyy_object_t cppyy_charp2stdstring(const char* str, size_t sz) { + return (cppyy_object_t)new std::string(str, sz); +} + +const char* cppyy_stdstring2charp(cppyy_object_t ptr, size_t* lsz) { + *lsz = ((std::string*)ptr)->size(); + return ((std::string*)ptr)->data(); +} + +cppyy_object_t cppyy_stdstring2stdstring(cppyy_object_t ptr) { + return (cppyy_object_t)new std::string(*(std::string*)ptr); +} + +const char* cppyy_stdvector_valuetype(const char* clname) +{ + const char* result = nullptr; + std::string name = clname; + TypedefInfo_t* ti = gInterpreter->TypedefInfo_Factory((name+"::value_type").c_str()); + if (gInterpreter->TypedefInfo_IsValid(ti)) + result = cppstring_to_cstring(gInterpreter->TypedefInfo_TrueName(ti)); + gInterpreter->TypedefInfo_Delete(ti); + return result; +} + +size_t cppyy_stdvector_valuesize(const char* clname) +{ + size_t result = 0; + std::string name = clname; + TypedefInfo_t* ti = gInterpreter->TypedefInfo_Factory((name+"::value_type").c_str()); + if (gInterpreter->TypedefInfo_IsValid(ti)) + result = (size_t)gInterpreter->TypedefInfo_Size(ti); + gInterpreter->TypedefInfo_Delete(ti); + return result; +} + +} // end C-linkage wrappers diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.h new file mode 100644 index 0000000000000..fef5824ce3333 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/clingwrapper.h @@ -0,0 +1,37 @@ +#ifndef CPPYY_CLINGCWRAPPER +#define CPPYY_CLINGCWRAPPER + +#include "capi.h" + +#ifdef __cplusplus +extern "C" { +#endif // ifdef __cplusplus + + /* misc helpers */ + void* cppyy_load_dictionary(const char* lib_name); + +#ifdef __cplusplus +} +#endif // ifdef __cplusplus + +// TODO: pick up from llvm-config --cxxflags +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#ifndef __STDC_CONSTANT_MACROS +#define __STDC_CONSTANT_MACROS +#endif + +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS +#endif + +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS +#endif + +// Wrapper callback: except this to become available from Cling directly +typedef void (*CPPYY_Cling_Wrapper_t)(void*, int, void**, void*); + +#endif // ifndef CPPYY_CLINGCWRAPPER diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h new file mode 100644 index 0000000000000..a07f09f0eeec0 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cpp_cppyy.h @@ -0,0 +1,224 @@ +#ifndef CPYCPPYY_CPPYY_H +#define CPYCPPYY_CPPYY_H + +// Standard +#include +#include +#include +#include + + +// ROOT types +typedef long long Long64_t; +typedef unsigned long long ULong64_t; +typedef long double LongDouble_t; + +namespace Cppyy { + typedef ptrdiff_t TCppScope_t; + typedef TCppScope_t TCppType_t; + typedef void* TCppObject_t; + typedef ptrdiff_t TCppMethod_t; + + typedef long TCppIndex_t; + typedef void* TCppFuncAddr_t; + +// name to opaque C++ scope representation ----------------------------------- + RPY_EXTERN + std::string ResolveName(const std::string& cppitem_name); + RPY_EXTERN + std::string ResolveEnum(const std::string& enum_type); + RPY_EXTERN + TCppScope_t GetScope(const std::string& scope_name); + RPY_EXTERN + TCppType_t GetActualClass(TCppType_t klass, TCppObject_t obj); + RPY_EXTERN + size_t SizeOf(TCppType_t klass); + RPY_EXTERN + size_t SizeOf(const std::string& type_name); + + RPY_EXTERN + bool IsBuiltin(const std::string& type_name); + RPY_EXTERN + bool IsComplete(const std::string& type_name); + + RPY_EXTERN + TCppScope_t gGlobalScope; // for fast access + +// memory management --------------------------------------------------------- + RPY_EXTERN + TCppObject_t Allocate(TCppType_t type); + RPY_EXTERN + void Deallocate(TCppType_t type, TCppObject_t instance); + RPY_EXTERN + TCppObject_t Construct(TCppType_t type); + RPY_EXTERN + void Destruct(TCppType_t type, TCppObject_t instance); + +// method/function dispatching ----------------------------------------------- + RPY_EXTERN + void CallV(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + unsigned char CallB(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + char CallC(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + short CallH(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + int CallI(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + long CallL(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + Long64_t CallLL(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + float CallF(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + double CallD(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + LongDouble_t CallLD(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + void* CallR(TCppMethod_t method, TCppObject_t self, void* args); + RPY_EXTERN + char* CallS(TCppMethod_t method, TCppObject_t self, void* args, size_t* length); + RPY_EXTERN + TCppObject_t CallConstructor(TCppMethod_t method, TCppType_t type, void* args); + RPY_EXTERN + void CallDestructor(TCppType_t type, TCppObject_t self); + RPY_EXTERN + TCppObject_t CallO(TCppMethod_t method, TCppObject_t self, void* args, TCppType_t result_type); + + RPY_EXTERN + TCppFuncAddr_t GetFunctionAddress(TCppScope_t scope, TCppIndex_t imeth); + RPY_EXTERN + TCppFuncAddr_t GetFunctionAddress(TCppMethod_t method); + +// handling of function argument buffer -------------------------------------- + RPY_EXTERN + void* AllocateFunctionArgs(size_t nargs); + RPY_EXTERN + void DeallocateFunctionArgs(void* args); + RPY_EXTERN + size_t GetFunctionArgSizeof(); + RPY_EXTERN + size_t GetFunctionArgTypeoffset(); + +// scope reflection information ---------------------------------------------- + RPY_EXTERN + bool IsNamespace(TCppScope_t scope); + RPY_EXTERN + bool IsTemplate(const std::string& template_name); + RPY_EXTERN + bool IsAbstract(TCppType_t type); + RPY_EXTERN + bool IsEnum(const std::string& type_name); + + RPY_EXTERN + void GetAllCppNames(TCppScope_t scope, std::set& cppnames); + +// class reflection information ---------------------------------------------- + RPY_EXTERN + std::string GetFinalName(TCppType_t type); + RPY_EXTERN + std::string GetScopedFinalName(TCppType_t type); + RPY_EXTERN + bool HasComplexHierarchy(TCppType_t type); + RPY_EXTERN + TCppIndex_t GetNumBases(TCppType_t type); + RPY_EXTERN + std::string GetBaseName(TCppType_t type, TCppIndex_t ibase); + RPY_EXTERN + bool IsSubtype(TCppType_t derived, TCppType_t base); + RPY_EXTERN + bool GetSmartPtrInfo(const std::string&, TCppType_t& raw, TCppMethod_t& deref); + RPY_EXTERN + void AddSmartPtrType(const std::string&); + +// calculate offsets between declared and actual type, up-cast: direction > 0; down-cast: direction < 0 + RPY_EXTERN + ptrdiff_t GetBaseOffset( + TCppType_t derived, TCppType_t base, TCppObject_t address, int direction, bool rerror = false); + +// method/function reflection information ------------------------------------ + RPY_EXTERN + TCppIndex_t GetNumMethods(TCppScope_t scope); + RPY_EXTERN + std::vector GetMethodIndicesFromName(TCppScope_t scope, const std::string& name); + + RPY_EXTERN + TCppMethod_t GetMethod(TCppScope_t scope, TCppIndex_t imeth); + + RPY_EXTERN + std::string GetMethodName(TCppMethod_t); + RPY_EXTERN + std::string GetMethodMangledName(TCppMethod_t); + RPY_EXTERN + std::string GetMethodResultType(TCppMethod_t); + RPY_EXTERN + TCppIndex_t GetMethodNumArgs(TCppMethod_t); + RPY_EXTERN + TCppIndex_t GetMethodReqArgs(TCppMethod_t); + RPY_EXTERN + std::string GetMethodArgName(TCppMethod_t, int iarg); + RPY_EXTERN + std::string GetMethodArgType(TCppMethod_t, int iarg); + RPY_EXTERN + std::string GetMethodArgDefault(TCppMethod_t, int iarg); + RPY_EXTERN + std::string GetMethodSignature(TCppScope_t scope, TCppIndex_t imeth, bool show_formalargs); + RPY_EXTERN + std::string GetMethodPrototype(TCppScope_t scope, TCppIndex_t imeth, bool show_formalargs); + RPY_EXTERN + bool IsConstMethod(TCppMethod_t); + + RPY_EXTERN + bool ExistsMethodTemplate(TCppScope_t scope, const std::string& name); + RPY_EXTERN + bool IsMethodTemplate(TCppScope_t scope, TCppIndex_t imeth); + RPY_EXTERN + TCppIndex_t GetMethodNumTemplateArgs(TCppScope_t scope, TCppIndex_t imeth); + RPY_EXTERN + std::string GetMethodTemplateArgName(TCppScope_t scope, TCppIndex_t imeth, TCppIndex_t iarg); + + RPY_EXTERN + TCppMethod_t GetMethodTemplate( + TCppScope_t scope, const std::string& name, const std::string& proto); + RPY_EXTERN + TCppIndex_t GetGlobalOperator( + TCppType_t scope, TCppType_t lc, TCppScope_t rc, const std::string& op); + +// method properties --------------------------------------------------------- + RPY_EXTERN + bool IsPublicMethod(TCppMethod_t method); + RPY_EXTERN + bool IsConstructor(TCppMethod_t method); + RPY_EXTERN + bool IsDestructor(TCppMethod_t method); + RPY_EXTERN + bool IsStaticMethod(TCppMethod_t method); + +// data member reflection information ---------------------------------------- + RPY_EXTERN + TCppIndex_t GetNumDatamembers(TCppScope_t scope); + RPY_EXTERN + std::string GetDatamemberName(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + std::string GetDatamemberType(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + ptrdiff_t GetDatamemberOffset(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + TCppIndex_t GetDatamemberIndex(TCppScope_t scope, const std::string& name); + +// data member properties ---------------------------------------------------- + RPY_EXTERN + bool IsPublicData(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + bool IsStaticData(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + bool IsConstData(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + bool IsEnumData(TCppScope_t scope, TCppIndex_t idata); + RPY_EXTERN + int GetDimensionSize(TCppScope_t scope, TCppIndex_t idata, int dimension); + +} // namespace Cppyy + +#endif // !CPYCPPYY_CPPYY_H diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cppyy.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cppyy.h new file mode 100644 index 0000000000000..24ed18ee2536f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/cppyy.h @@ -0,0 +1,66 @@ +#ifndef CPPYY_CPPYY +#define CPPYY_CPPYY + +#include "cpp_cppyy.h" + +#ifdef __cplusplus +struct CPPYY_G__DUMMY_FOR_CINT7 { +#else +typedef struct +#endif + void* fTypeName; + unsigned int fModifiers; +#ifdef __cplusplus +}; +#else +} CPPYY_G__DUMMY_FOR_CINT7; +#endif + +#ifdef __cplusplus +struct CPPYY_G__p2p { +#else +typedef struct { +#endif + long i; + int reftype; +#ifdef __cplusplus +}; +#else +} CPPYY_G__p2p; +#endif + + +#ifdef __cplusplus +struct CPPYY_G__value { +#else +typedef struct { +#endif + union { + double d; + long i; /* used to be int */ + struct CPPYY_G__p2p reftype; + char ch; + short sh; + int in; + float fl; + unsigned char uch; + unsigned short ush; + unsigned int uin; + unsigned long ulo; + long long ll; + unsigned long long ull; + long double ld; + } obj; + long ref; + int type; + int tagnum; + int typenum; + char isconst; + struct CPPYY_G__DUMMY_FOR_CINT7 dummyForCint7; +#ifdef __cplusplus +}; +#else +} CPPYY_G__value; +#endif + +#endif // CPPYY_CPPYY diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/precommondefs.h b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/precommondefs.h new file mode 100644 index 0000000000000..62710b6e41b3e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/clingwrapper/src/precommondefs.h @@ -0,0 +1,77 @@ +/***** Start of precommondefs.h *****/ + +/* This is extracted from pyconfig.h from CPython. It sets the macros + that affect the features we get from system include files. + It must not #include anything. */ + +#ifndef __PYPY_PRECOMMONDEFS_H +#define __PYPY_PRECOMMONDEFS_H + + +/* Define on Darwin to activate all library features */ +#define _DARWIN_C_SOURCE 1 +/* This must be set to 64 on some systems to enable large file support. */ +#define _FILE_OFFSET_BITS 64 +/* Define on Linux to activate all library features */ +#define _GNU_SOURCE 1 +/* This must be defined on some systems to enable large file support. */ +#define _LARGEFILE_SOURCE 1 +/* Define on NetBSD to activate all library features */ +#define _NETBSD_SOURCE 1 +/* Define to activate features from IEEE Stds 1003.1-2001 */ +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L +#endif +/* Define on FreeBSD to activate all library features */ +#define __BSD_VISIBLE 1 +#define __XSI_VISIBLE 700 +/* Windows: winsock/winsock2 mess */ +#define WIN32_LEAN_AND_MEAN +#ifdef _WIN64 + typedef __int64 Signed; + typedef unsigned __int64 Unsigned; +# define SIGNED_MIN LLONG_MIN +#else + typedef long Signed; + typedef unsigned long Unsigned; +# define SIGNED_MIN LONG_MIN +#endif + +#if !defined(RPY_ASSERT) && !defined(RPY_LL_ASSERT) && !defined(NDEBUG) +# define NDEBUG +#endif + + +/* All functions and global variables declared anywhere should use + one of the following attributes: + + RPY_EXPORTED: the symbol is exported out of libpypy-c.so. + + RPY_EXTERN: the symbol is not exported out of libpypy-c.so, but + otherwise works like 'extern' by being available to + other C sources. + + static: as usual, this means the symbol is local to this C file. + + Don't use _RPY_HIDDEN directly. For tests involving building a custom + .so, translator/tool/cbuild.py overrides RPY_EXTERN so that it becomes + equal to RPY_EXPORTED. + + Any function or global variable declared with no attribute at all is + a bug; please report or fix it. +*/ +#ifdef __GNUC__ +# define RPY_EXPORTED extern __attribute__((visibility("default"))) +# define _RPY_HIDDEN __attribute__((visibility("hidden"))) +#else +# define RPY_EXPORTED extern __declspec(dllexport) +# define _RPY_HIDDEN /* nothing */ +#endif +#ifndef RPY_EXTERN +# define RPY_EXTERN extern +#endif + + +#endif /* __PYPY_PRECOMMONDEFS_H */ + +/***** End of precommondefs.h *****/ From 15c042b8678bff235fcc7631f34fd13751522e4d Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 19:29:46 +0000 Subject: [PATCH 253/344] Import CPyCppyy into ROOT --- .../cppyy/CPyCppyy/.gitignore | 14 + .../cppyy/CPyCppyy/CMakeLists.txt | 33 + .../cppyy/CPyCppyy/LICENSE.txt | 51 + .../cppyy/CPyCppyy/MANIFEST.in | 10 + .../cppyy/CPyCppyy/README.rst | 21 + .../cppyy/CPyCppyy/include/TPyArg.h | 49 + .../cppyy/CPyCppyy/include/TPyException.h | 49 + .../cppyy/CPyCppyy/include/TPyReturn.h | 59 + .../cppyy/CPyCppyy/include/TPython.h | 59 + .../cppyy/CPyCppyy/setup.cfg | 5 + .../cppyy/CPyCppyy/setup.py | 82 + .../cppyy/CPyCppyy/src/CPPClassMethod.cxx | 26 + .../cppyy/CPyCppyy/src/CPPClassMethod.h | 21 + .../cppyy/CPyCppyy/src/CPPConstructor.cxx | 90 + .../cppyy/CPyCppyy/src/CPPConstructor.h | 28 + .../cppyy/CPyCppyy/src/CPPDataMember.cxx | 253 +++ .../cppyy/CPyCppyy/src/CPPDataMember.h | 74 + .../cppyy/CPyCppyy/src/CPPFunction.cxx | 59 + .../cppyy/CPyCppyy/src/CPPFunction.h | 23 + .../cppyy/CPyCppyy/src/CPPInstance.cxx | 390 ++++ .../cppyy/CPyCppyy/src/CPPInstance.h | 113 ++ .../cppyy/CPyCppyy/src/CPPMethod.cxx | 594 ++++++ .../cppyy/CPyCppyy/src/CPPMethod.h | 84 + .../cppyy/CPyCppyy/src/CPPOverload.cxx | 887 +++++++++ .../cppyy/CPyCppyy/src/CPPOverload.h | 88 + .../cppyy/CPyCppyy/src/CPPScope.cxx | 394 ++++ .../cppyy/CPyCppyy/src/CPPScope.h | 66 + .../cppyy/CPyCppyy/src/CPPSetItem.cxx | 73 + .../cppyy/CPyCppyy/src/CPPSetItem.h | 24 + .../cppyy/CPyCppyy/src/CPyCppyy.h | 253 +++ .../cppyy/CPyCppyy/src/CPyCppyyModule.cxx | 840 +++++++++ .../cppyy/CPyCppyy/src/CallContext.cxx | 39 + .../cppyy/CPyCppyy/src/CallContext.h | 96 + .../cppyy/CPyCppyy/src/Converters.cxx | 1666 +++++++++++++++++ .../cppyy/CPyCppyy/src/Converters.h | 69 + .../cppyy/CPyCppyy/src/Cppyy.h | 139 ++ .../cppyy/CPyCppyy/src/CustomPyTypes.cxx | 327 ++++ .../cppyy/CPyCppyy/src/CustomPyTypes.h | 59 + .../cppyy/CPyCppyy/src/DeclareConverters.h | 291 +++ .../cppyy/CPyCppyy/src/DeclareExecutors.h | 178 ++ .../cppyy/CPyCppyy/src/Executors.cxx | 839 +++++++++ .../cppyy/CPyCppyy/src/Executors.h | 34 + .../cppyy/CPyCppyy/src/LowLevelViews.cxx | 836 +++++++++ .../cppyy/CPyCppyy/src/LowLevelViews.h | 43 + .../cppyy/CPyCppyy/src/MemoryRegulator.cxx | 267 +++ .../cppyy/CPyCppyy/src/MemoryRegulator.h | 31 + .../cppyy/CPyCppyy/src/ProxyWrappers.cxx | 726 +++++++ .../cppyy/CPyCppyy/src/ProxyWrappers.h | 27 + .../cppyy/CPyCppyy/src/PyCallable.h | 39 + .../cppyy/CPyCppyy/src/PyObjectDir27.inc | 237 +++ .../cppyy/CPyCppyy/src/PyStrings.cxx | 138 ++ .../cppyy/CPyCppyy/src/PyStrings.h | 55 + .../cppyy/CPyCppyy/src/Pythonize.cxx | 840 +++++++++ .../cppyy/CPyCppyy/src/Pythonize.h | 15 + .../cppyy/CPyCppyy/src/TPyArg.cxx | 129 ++ .../cppyy/CPyCppyy/src/TPyClassGenerator.cxx | 300 +++ .../cppyy/CPyCppyy/src/TPyClassGenerator.h | 21 + .../cppyy/CPyCppyy/src/TPyException.cxx | 36 + .../cppyy/CPyCppyy/src/TPyReturn.cxx | 174 ++ .../cppyy/CPyCppyy/src/TPython.cxx | 499 +++++ .../cppyy/CPyCppyy/src/TemplateProxy.cxx | 449 +++++ .../cppyy/CPyCppyy/src/TemplateProxy.h | 79 + .../cppyy/CPyCppyy/src/TupleOfInstances.cxx | 96 + .../cppyy/CPyCppyy/src/TupleOfInstances.h | 32 + .../cppyy/CPyCppyy/src/TypeManip.cxx | 105 ++ .../cppyy/CPyCppyy/src/TypeManip.h | 21 + .../cppyy/CPyCppyy/src/Utility.cxx | 775 ++++++++ .../cppyy/CPyCppyy/src/Utility.h | 83 + 68 files changed, 14602 insertions(+) create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/.gitignore create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/LICENSE.txt create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/MANIFEST.in create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/README.rst create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyArg.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyException.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyReturn.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPython.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/setup.cfg create mode 100755 bindings/pyroot_experimental/cppyy/CPyCppyy/setup.py create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyy.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyyModule.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Cppyy.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareConverters.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareExecutors.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyCallable.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyObjectDir27.inc create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyArg.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyException.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyReturn.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPython.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.h create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.cxx create mode 100644 bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.h diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/.gitignore b/bindings/pyroot_experimental/cppyy/CPyCppyy/.gitignore new file mode 100644 index 0000000000000..0de22a4662245 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/.gitignore @@ -0,0 +1,14 @@ +# python compiled files +*.pyc +*.pyo + +# dictionary products +*.so +*.pcm +*.rootmap + +# build products +dist +*.egg-info +.cache +build diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt new file mode 100644 index 0000000000000..55e01f43f9e49 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.4.3 FATAL_ERROR) +project (cppyy) + +set (CMAKE_CXX_STANDARD 14) +set (CMAKE_CXX_STANDARD_REQUIRED ON) +set (CMAKE_CXX_EXTENSIONS OFF) + +set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-strict-aliasing") + +message(STATUS "Looking for python interpreter") +#---First look for the python interpreter and fix the version of it for the libraries-- +find_package(PythonInterp) + +if (PYTHONINTERP_FOUND) + execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sys;sys.stdout.write(sys.version[:3])" + OUTPUT_VARIABLE PYTHON_VERSION) + execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sys;sys.stdout.write(sys.prefix)" + OUTPUT_VARIABLE PYTHON_PREFIX) + set (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${PYTHON_PREFIX}) +endif() + +set(Python_ADDITIONAL_VERSIONS ${PYTHON_VERSION}) +find_package(PythonLibs) + +if (NOT PYTHONLIBS_FOUND) + message(FATAL_ERROR "PythonLibs package not found and python component required") +endif() + +include_directories ("${PROJECT_SOURCE_DIR}/include" "${PYTHON_INCLUDE_PATH}") + +file (GLOB cppyy_src src/*.cxx) + +add_library(cppyy SHARED ${cppyy_src}) diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/LICENSE.txt b/bindings/pyroot_experimental/cppyy/CPyCppyy/LICENSE.txt new file mode 100644 index 0000000000000..bea39a7007530 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/LICENSE.txt @@ -0,0 +1,51 @@ +Copyright (c) 2003, The Regents of the University of California, +through Lawrence Berkeley National Laboratory (subject to receipt of +any required approvals from the U.S. Dept. of Energy). All rights +reserved. Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + +(1) Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +(2) Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +(3) Neither the name of the University of California, Lawrence Berkeley +National Laboratory, U.S. Dept. of Energy nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +You are under no obligation whatsoever to provide any bug fixes, +patches, or upgrades to the features, functionality or performance of +the source code ("Enhancements") to anyone; however, if you choose to +make your Enhancements available either publicly, or directly to +Lawrence Berkeley National Laboratory, without imposing a separate +written license agreement for such Enhancements, then you hereby grant +the following license: a non-exclusive, royalty-free perpetual license +to install, use, modify, prepare derivative works, incorporate into +other computer software, distribute, and sublicense such Enhancements +or derivative works thereof, in binary and source code form. + + + +Additional copyright holders +---------------------------- + +Except when otherwise stated (look for LICENSE files or information in +source files), this package contains files copyrighted by one or more of +the following people and organizations: + + CERN + Toby StClere-Smithe diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/MANIFEST.in b/bindings/pyroot_experimental/cppyy/CPyCppyy/MANIFEST.in new file mode 100644 index 0000000000000..546a5c7e41542 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/MANIFEST.in @@ -0,0 +1,10 @@ +# Include the license file +include LICENSE.txt + +# Include all headers +include include/*.h +include src/*.h + +# Include source files +include src/*.cxx +include src/*.inc diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/README.rst b/bindings/pyroot_experimental/cppyy/CPyCppyy/README.rst new file mode 100644 index 0000000000000..ad1f2da970a77 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/README.rst @@ -0,0 +1,21 @@ +.. -*- mode: rst -*- + +CPyCppyy: Python-C++ bindings interface based on Cling/LLVM +=========================================================== + +CPyCppyy is the CPython equivalent of _cppyy in PyPy. +It provides dynamic Python-C++ bindings by leveraging the Cling C++ +interpreter and LLVM. +Details and performance are described in +`this paper `_. + +CPyCppyy is a CPython extension module built on top of the same backend API +as PyPy/_cppyy. +It thus requires the installation of the +`cppyy backend `_ +for use, which will pull in Cling. +CPython/cppyy and PyPy/cppyy are designed to be compatible, although there +are differences due to the former being reference counted and the latter +being garbage collected. + +Full documentation: `cppyy.readthedocs.io `_. diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyArg.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyArg.h new file mode 100644 index 0000000000000..95902e6ec9a92 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyArg.h @@ -0,0 +1,49 @@ +#ifndef CPYCPPYY_TPYARG +#define CPYCPPYY_TPYARG + +////////////////////////////////////////////////////////////////////////////// +// // +// TPyArg // +// // +// Morphing argument type from evaluating python expressions. // +// // +////////////////////////////////////////////////////////////////////////////// + +// Python +struct _object; +typedef _object PyObject; + +// Standard +#include + + +class TPyArg { +public: +// converting constructors + TPyArg(PyObject*); + TPyArg(int); + TPyArg(long); + TPyArg(double); + TPyArg(const char*); + + TPyArg(const TPyArg&); + TPyArg& operator=(const TPyArg&); + virtual ~TPyArg(); + +// "extractor" + operator PyObject*() const; + +// constructor and generic dispatch + static void CallConstructor( + PyObject*& pyself, PyObject* pyclass, const std::vector& args); + static void CallConstructor(PyObject*& pyself, PyObject* pyclass); // default ctor + static PyObject* CallMethod(PyObject* pymeth, const std::vector& args); + static void CallDestructor( + PyObject*& pyself, PyObject* pymeth, const std::vector& args); + static void CallDestructor(PyObject*& pyself); + +private: + mutable PyObject* fPyObject; //! converted C++ value as python object +}; + +#endif // !CPYCPPYY_TPYARG diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyException.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyException.h new file mode 100644 index 0000000000000..4abaea3fcb63c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyException.h @@ -0,0 +1,49 @@ +#ifndef CPYCPPYY_TPyException +#define CPYCPPYY_TPyException + +////////////////////////////////////////////////////////////////////////////// +// // +// TPyException // +// // +// Purpose: A C++ exception class for throwing python exceptions // +// through C++ code. // +// Created: Apr, 2004, Scott Snyder, from the version in D0's python_util. // +// // +// The situation is: // +// - We're calling C++ code from python. // +// - The C++ code can call back to python. // +// - What to do then if the python callback throws an exception? // +// // +// We need to get the control flow back to where CPyCppyy calls C++. // +// To do that we throw a TPyException. // +// We can then catch this exception when we do the C++ call. // +// // +// Note that we don't need to save any state in the exception -- it's // +// already in the python error info variables. // +// (??? Actually, if the program is multithreaded, this is dangerous // +// if the code has released and reacquired the lock along the call chain. // +// Punt on this for now, though.) // +// // +////////////////////////////////////////////////////////////////////////////// + +// Standard +#include + + +namespace CPyCppyy { + +class TPyException : public std::exception { +public: +// default constructor + TPyException(); + +// destructor + virtual ~TPyException() noexcept; + +// give reason for raised exception + virtual const char* what() const noexcept; +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_TPyException diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyReturn.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyReturn.h new file mode 100644 index 0000000000000..5626d0144271b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPyReturn.h @@ -0,0 +1,59 @@ +#ifndef CPYCPPYY_TPYRETURN +#define CPYCPPYY_TPYRETURN + +////////////////////////////////////////////////////////////////////////////// +// // +// TPyReturn // +// // +// Morphing return type from evaluating python expressions. // +// // +////////////////////////////////////////////////////////////////////////////// + + +// Python +struct _object; +typedef _object PyObject; + + +class TPyReturn { +public: + TPyReturn(); + TPyReturn(PyObject* pyobject); + TPyReturn(const TPyReturn&); + TPyReturn& operator=(const TPyReturn&); + virtual ~TPyReturn(); + +// conversions to standard types, may fail if unconvertible + operator char*() const; + operator const char*() const; + operator char() const; + + operator long() const; + operator int() const { return (int)operator long(); } + operator short() const { return (short)operator long(); } + + operator unsigned long() const; + operator unsigned int() const { + return (unsigned int)operator unsigned long(); + } + operator unsigned short() const { + return (unsigned short)operator unsigned long(); + } + + operator double() const; + operator float() const { return (float)operator double(); } + +// used for both TObject and PyObject conversions + operator void*() const; + + template + operator T*() const { return (T*)(void*)*this; } + +// used strictly for PyObject conversions + operator PyObject*() const; + +private: + PyObject* fPyObject; //! actual python object +}; + +#endif // !CPYCPPYY_TPYRETURN diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPython.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPython.h new file mode 100644 index 0000000000000..de257fab7b60e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/include/TPython.h @@ -0,0 +1,59 @@ +#ifndef CPYCPPYY_TPYTHON +#define CPYCPPYY_TPYTHON + +////////////////////////////////////////////////////////////////////////////// +// // +// TPython // +// // +// Access to the python interpreter and API onto CPyCppyy. // +// // +////////////////////////////////////////////////////////////////////////////// + + +// Bindings +#include "TPyReturn.h" + + +class TPython { + +private: + static bool Initialize(); + +public: +// import a python module, making its classes available + static bool Import(const char* name); + +// load a python script as if it were a macro + static void LoadMacro(const char* name); + +// execute a python stand-alone script, with argv CLI arguments + static void ExecScript(const char* name, int argc = 0, const char** argv = 0); + +// execute a python statement (e.g. "import sys") + static bool Exec(const char* cmd); + +// evaluate a python expression (e.g. "1+1") + static const TPyReturn Eval(const char* expr); + +// enter an interactive python session (exit with ^D) + static void Prompt(); + +// type verifiers for CPPInstance + static bool CPPInstance_Check(PyObject* pyobject); + static bool CPPInstance_CheckExact(PyObject* pyobject); + +// type verifiers for CPPOverload + static bool CPPOverload_Check(PyObject* pyobject); + static bool CPPOverload_CheckExact(PyObject* pyobject); + +// object proxy to void* conversion + static void* CPPInstance_AsVoidPtr(PyObject* pyobject); + +// void* to object proxy conversion, returns a new reference + static PyObject* CPPInstance_FromVoidPtr( + void* addr, const char* classname, bool python_owns = false); + + virtual ~TPython() { } +}; + +#endif // !CPYCPPYY_TPYTHON diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/setup.cfg b/bindings/pyroot_experimental/cppyy/CPyCppyy/setup.cfg new file mode 100644 index 0000000000000..8debd01371e4f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/setup.cfg @@ -0,0 +1,5 @@ +[bdist_wheel] +universal=0 + +[metadata] +license_file = LICENSE.txt diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/setup.py b/bindings/pyroot_experimental/cppyy/CPyCppyy/setup.py new file mode 100755 index 0000000000000..2c5f94919590a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/setup.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python + +import os, glob, subprocess +from setuptools import setup, find_packages, Extension +from distutils.command.build_ext import build_ext as _build_ext +from wheel.bdist_wheel import bdist_wheel as _bdist_wheel +from codecs import open + + +here = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(here, 'README.rst'), encoding='utf-8') as f: + long_description = f.read() + +try: + root_install = os.environ["ROOTSYS"] +except KeyError: + root_install = None + +def get_cflags(): + config_exec = 'cling-config' + if root_install: + config_exec = 'root-config' + cli_arg = subprocess.check_output([config_exec, '--auxcflags']) + return cli_arg.decode("utf-8").strip() + +class my_build_extension(_build_ext): + def build_extension(self, ext): + ext.extra_compile_args = ['-O2']+get_cflags().split() + return _build_ext.build_extension(self, ext) + +class my_bdist_wheel(_bdist_wheel): + def run(self, *args): + # wheels do not respect dependencies; make this a no-op so that it fails (mostly) silently + pass + +setup( + name='CPyCppyy', + version='1.0.1', + description='Cling-based Python-C++ bindings for CPython', + long_description=long_description, + + url='http://cppyy.readthedocs.io/', + + # Author details + author='Wim Lavrijsen', + author_email='WLavrijsen@lbl.gov', + + license='LBNL BSD', + + classifiers=[ + 'Development Status :: 5 - Production/Stable', + + 'Intended Audience :: Developers', + + 'Topic :: Software Development', + 'Topic :: Software Development :: Interpreters', + + 'License :: OSI Approved :: BSD License', + + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: C', + 'Programming Language :: C++', + + 'Natural Language :: English' + ], + + install_requires=['cppyy-backend>=0.5'], + + keywords='C++ bindings data science', + + cmdclass = { + 'build_ext': my_build_extension, + 'bdist_wheel': my_bdist_wheel + }, + + ext_modules=[Extension('libcppyy', + sources=glob.glob('src/*.cxx'), + include_dirs=['include'])], +) diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.cxx new file mode 100644 index 0000000000000..d850cee8eac41 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.cxx @@ -0,0 +1,26 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPClassMethod.h" + + +//- public members -------------------------------------------------------------- +PyObject* CPyCppyy::CPPClassMethod::Call( + CPPInstance*&, PyObject* args, PyObject* kwds, CallContext* ctxt) +{ +// preliminary check in case keywords are accidently used (they are ignored otherwise) + if (kwds && PyDict_Size(kwds)) { + PyErr_SetString(PyExc_TypeError, "keyword arguments are not yet supported"); + return nullptr; + } + +// setup as necessary + if (!this->Initialize(ctxt)) + return nullptr; + +// translate the arguments + if (!this->ConvertAndSetArgs(args, ctxt)) + return nullptr; + +// execute function + return this->Execute(nullptr, 0, ctxt); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.h new file mode 100644 index 0000000000000..4cbfdc055fae9 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPClassMethod.h @@ -0,0 +1,21 @@ +#ifndef CPYCPPYY_CPPCLASSMETHOD_H +#define CPYCPPYY_CPPCLASSMETHOD_H + +// Bindings +#include "CPPMethod.h" + + +namespace CPyCppyy { + +class CPPClassMethod : public CPPMethod { +public: + using CPPMethod::CPPMethod; + + virtual PyCallable* Clone() { return new CPPClassMethod(*this); } + virtual PyObject* Call( + CPPInstance*&, PyObject* args, PyObject* kwds, CallContext* ctxt = nullptr); +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPCLASSMETHOD_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.cxx new file mode 100644 index 0000000000000..e1d43e0602f14 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.cxx @@ -0,0 +1,90 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPConstructor.h" +#include "CPPInstance.h" +#include "Executors.h" +#include "MemoryRegulator.h" + +// Standard +#include + + +//- protected members -------------------------------------------------------- +bool CPyCppyy::CPPConstructor::InitExecutor_(Executor*& executor, CallContext*) +{ +// pick up special case new object executor + executor = CreateExecutor("__init__"); + return true; +} + +//- public members ----------------------------------------------------------- +PyObject* CPyCppyy::CPPConstructor::GetDocString() +{ +// GetMethod() may return an empty function if this is just a special case place holder + const std::string& clName = Cppyy::GetFinalName(this->GetScope()); + return CPyCppyy_PyUnicode_FromFormat("%s::%s%s", + clName.c_str(), clName.c_str(), this->GetMethod() ? this->GetSignatureString().c_str() : "()"); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPConstructor::Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* ctxt) +{ +// preliminary check in case keywords are accidently used (they are ignored otherwise) + if (kwds && PyDict_Size(kwds)) { + PyErr_SetString(PyExc_TypeError, "keyword arguments are not yet supported"); + return nullptr; + } + +// do not allow instantiation of abstract classes + if (Cppyy::IsAbstract(this->GetScope())) { + PyErr_Format(PyExc_TypeError, "cannot instantiate abstract class \'%s\'", + Cppyy::GetScopedFinalName(this->GetScope()).c_str()); + return nullptr; + } + +// setup as necessary + if (!this->Initialize(ctxt)) + return nullptr; // important: 0, not Py_None + +// fetch self, verify, and put the arguments in usable order + if (!(args = this->PreProcessArgs(self, args, kwds))) + return nullptr; + +// translate the arguments + if (!this->ConvertAndSetArgs(args, ctxt)) { + Py_DECREF(args); + return nullptr; + } + +// perform the call, 0 makes the other side allocate the memory + Long_t address = (Long_t)this->Execute(nullptr, 0, ctxt); + +// done with filtered args + Py_DECREF(args); + +// return object if successful, lament if not + if (address) { + Py_INCREF(self); + + // note: constructors are no longer set to take ownership by default; instead that is + // decided by the method proxy (which carries a creator flag) upon return + self->Set((void*)address); + + // TODO: consistent up or down cast ... + MemoryRegulator::RegisterPyObject(self, (Cppyy::TCppObject_t)address); + + // done with self + Py_DECREF(self); + + Py_RETURN_NONE; // by definition + } + + if (!PyErr_Occurred()) // should be set, otherwise write a generic error msg + PyErr_SetString(PyExc_TypeError, const_cast( + (Cppyy::GetScopedFinalName(GetScope()) + " constructor failed").c_str())); + +// do not throw an exception, '0' might trigger the overload handler to choose a +// different constructor, which if all fails will throw an exception + return nullptr; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.h new file mode 100644 index 0000000000000..036daad9d8081 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPConstructor.h @@ -0,0 +1,28 @@ +#ifndef CPYCPPYY_CPPCONSTRUCTOR_H +#define CPYCPPYY_CPPCONSTRUCTOR_H + +// Bindings +#include "CPPMethod.h" + + +namespace CPyCppyy { + +class CPPConstructor : public CPPMethod { +public: + using CPPMethod::CPPMethod; + +public: + virtual PyObject* GetDocString(); + virtual PyCallable* Clone() { return new CPPConstructor(*this); } + +public: + virtual PyObject* Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* ctxt = nullptr); + +protected: + virtual bool InitExecutor_(Executor*&, CallContext* ctxt = nullptr); +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPCONSTRUCTOR_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.cxx new file mode 100644 index 0000000000000..c5fb1b3436e7e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.cxx @@ -0,0 +1,253 @@ +// Bindings +#include "CPyCppyy.h" +#include "PyStrings.h" +#include "CPPDataMember.h" +#include "CPPInstance.h" +#include "Utility.h" + +// Standard +#include + + +namespace CPyCppyy { + +enum ETypeDetails { + kNone = 0, + kIsStaticData = 1, + kIsEnumData = 2, + kIsConstData = 4, + kIsArrayType = 8 +}; + +//= CPyCppyy data member as Python property behavior ========================= +static PyObject* pp_get(CPPDataMember* pyprop, CPPInstance* pyobj, PyObject*) +{ +// normal getter access + void* address = pyprop->GetAddress(pyobj); + if (!address || (ptrdiff_t)address == -1 /* Cling error */) + return nullptr; + +// for fixed size arrays + void* ptr = address; + if (pyprop->fProperty & kIsArrayType) + ptr = &address; + +// non-initialized or public data accesses through class (e.g. by help()) + if (!ptr || (ptrdiff_t)ptr == -1 /* Cling error */) { + Py_INCREF(pyprop); + return (PyObject*)pyprop; + } + + if (pyprop->fConverter != 0) { + PyObject* result = pyprop->fConverter->FromMemory(ptr); + if (!result) + return result; + + // ensure that the encapsulating class does not go away for the duration + // of the data member's lifetime, if it is a bound type (it doesn't matter + // for builtin types, b/c those are copied over into python types and thus + // end up being "stand-alone") + if (pyobj && CPPInstance_Check(result)) { + if (PyObject_SetAttr(result, PyStrings::gLifeLine, (PyObject*)pyobj) == -1) + PyErr_Clear(); // ignored + } + + return result; + } + + PyErr_Format(PyExc_NotImplementedError, + "no converter available for \"%s\"", pyprop->GetName().c_str()); + return nullptr; +} + +//----------------------------------------------------------------------------- +static int pp_set(CPPDataMember* pyprop, CPPInstance* pyobj, PyObject* value) +{ +/// Set the value of the C++ datum held. + const int errret = -1; + +// filter const objects to prevent changing their values + if (pyprop->fProperty & kIsConstData) { + PyErr_SetString(PyExc_TypeError, "assignment to const data not allowed"); + return errret; + } + + ptrdiff_t address = (ptrdiff_t)pyprop->GetAddress(pyobj); + if (!address || address == -1 /* Cling error */) + return errret; + +// for fixed size arrays + void* ptr = (void*)address; + if (pyprop->fProperty & kIsArrayType) + ptr = &address; + +// actual conversion; return on success + if (pyprop->fConverter && pyprop->fConverter->ToMemory(value, ptr)) + return 0; + +// set a python error, if not already done + if (!PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "property type mismatch or assignment not allowed"); + +// failure ... + return errret; +} + +//= CPyCppyy data member construction/destruction =========================== +static CPPDataMember* pp_new(PyTypeObject* pytype, PyObject*, PyObject*) +{ +// Create and initialize a new property descriptor. + CPPDataMember* pyprop = (CPPDataMember*)pytype->tp_alloc(pytype, 0); + + pyprop->fOffset = 0; + pyprop->fProperty = 0; + pyprop->fConverter = nullptr; + pyprop->fEnclosingScope = 0; + new (&pyprop->fName) std::string(); + + return pyprop; +} + +//---------------------------------------------------------------------------- +static void pp_dealloc(CPPDataMember* pyprop) +{ +// Deallocate memory held by this descriptor. + using namespace std; + delete pyprop->fConverter; + pyprop->fName.~string(); + + Py_TYPE(pyprop)->tp_free((PyObject*)pyprop); +} + + +//= CPyCppyy data member type ================================================ +PyTypeObject CPPDataMember_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.CPPDataMember", // tp_name + sizeof(CPPDataMember), // tp_basicsize + 0, // tp_itemsize + (destructor)pp_dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT, // tp_flags + (char*)"cppyy data member (internal)", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + 0, // tp_base + 0, // tp_dict + (descrgetfunc)pp_get, // tp_descr_get + (descrsetfunc)pp_set, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + (newfunc)pp_new, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy + + +//- public members ----------------------------------------------------------- +void CPyCppyy::CPPDataMember::Set(Cppyy::TCppScope_t scope, Cppyy::TCppIndex_t idata) +{ + fEnclosingScope = scope; + fName = Cppyy::GetDatamemberName(scope, idata); + fOffset = Cppyy::GetDatamemberOffset(scope, idata); // TODO: make lazy + fProperty = Cppyy::IsStaticData(scope, idata) ? kIsStaticData : 0; + + int size = Cppyy::GetDimensionSize(scope, idata, 0); + if (0 < size) + fProperty |= kIsArrayType; + + if (size == INT_MAX) // meaning: incomplete array type + size = -1; + + std::string fullType = Cppyy::GetDatamemberType(scope, idata); + if (Cppyy::IsEnumData(scope, idata)) { + fullType = Cppyy::ResolveEnum(fullType); // enum might be any type of int + fProperty |= kIsEnumData; + } + + if (Cppyy::IsConstData(scope, idata)) + fProperty |= kIsConstData; + + fConverter = CreateConverter(fullType, size); +} + +//----------------------------------------------------------------------------- +void CPyCppyy::CPPDataMember::Set(Cppyy::TCppScope_t scope, const std::string& name, void* address) +{ + fEnclosingScope = scope; + fName = name; + fOffset = (ptrdiff_t)address; + fProperty = (kIsStaticData | kIsConstData | kIsEnumData /* true, but may chance */); + fConverter = CreateConverter("UInt_t", -1); // TODO: use general enum_t type +} + +//----------------------------------------------------------------------------- +void* CPyCppyy::CPPDataMember::GetAddress(CPPInstance* pyobj) +{ +// class attributes, global properties + if (fProperty & kIsStaticData) + return (void*)fOffset; + +// special case: non-static lookup through class + if (!pyobj) { + PyErr_SetString(PyExc_AttributeError, "attribute access requires an instance"); + return nullptr; + } + +// instance attributes; requires valid object for full address + if (!CPPInstance_Check(pyobj)) { + PyErr_Format(PyExc_TypeError, + "object instance required for access to property \"%s\"", GetName().c_str()); + return nullptr; + } + + void* obj = pyobj->GetObject(); + if (!obj) { + PyErr_SetString(PyExc_ReferenceError, "attempt to access a null-pointer"); + return nullptr; + } + +// the proxy's internal offset is calculated from the enclosing class + ptrdiff_t offset = 0; + if (pyobj->ObjectIsA() != fEnclosingScope) + offset = Cppyy::GetBaseOffset(pyobj->ObjectIsA(), fEnclosingScope, obj, 1 /* up-cast */); + + return (void*)((ptrdiff_t)obj + offset + fOffset); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.h new file mode 100644 index 0000000000000..d848d142ee741 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPDataMember.h @@ -0,0 +1,74 @@ +#ifndef CPYCPPYY_CPPDATAMEMBER_H +#define CPYCPPYY_CPPDATAMEMBER_H + +// Bindings +#include "Converters.h" + +// Standard +#include + + +namespace CPyCppyy { + +class CPPInstance; + +class CPPDataMember { +public: + void Set(Cppyy::TCppScope_t scope, Cppyy::TCppIndex_t idata); + void Set(Cppyy::TCppScope_t scope, const std::string& name, void* address); + + std::string GetName() { return fName; } + void* GetAddress(CPPInstance* pyobj /* owner */); + +public: // public, as the python C-API works with C structs + PyObject_HEAD + ptrdiff_t fOffset; + Long_t fProperty; + Converter* fConverter; + Cppyy::TCppScope_t fEnclosingScope; + std::string fName; + +private: // private, as the python C-API will handle creation + CPPDataMember() = delete; +}; + + +//- property proxy for C++ data members, type and type verification ---------- +extern PyTypeObject CPPDataMember_Type; + +template +inline bool CPPDataMember_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &CPPDataMember_Type); +} + +template +inline bool CPPDataMember_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &CPPDataMember_Type; +} + +//- creation ----------------------------------------------------------------- +inline CPPDataMember* CPPDataMember_New( + Cppyy::TCppScope_t scope, Cppyy::TCppIndex_t idata) +{ +// Create an initialize a new property descriptor, given the C++ datum. + CPPDataMember* pyprop = + (CPPDataMember*)CPPDataMember_Type.tp_new(&CPPDataMember_Type, nullptr, nullptr); + pyprop->Set(scope, idata); + return pyprop; +} + +inline CPPDataMember* CPPDataMember_NewConstant( + Cppyy::TCppScope_t scope, const std::string& name, void* address) +{ +// Create an initialize a new property descriptor, given the C++ datum. + CPPDataMember* pyprop = + (CPPDataMember*)CPPDataMember_Type.tp_new(&CPPDataMember_Type, nullptr, nullptr); + pyprop->Set(scope, name, address); + return pyprop; +} + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPDATAMEMBER_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.cxx new file mode 100644 index 0000000000000..8ccf2687fef7a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.cxx @@ -0,0 +1,59 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPFunction.h" +#include "CPPInstance.h" + + +//- public members -------------------------------------------------------------- +PyObject* CPyCppyy::CPPFunction::PreProcessArgs( + CPPInstance*& self, PyObject* args, PyObject*) +{ +// no self means called as a free function; all ok + if (!self) { + Py_INCREF(args); + return args; + } + +// otherwise, add self as part of the function arguments (means bound member) + Py_ssize_t sz = PyTuple_GET_SIZE(args); + PyObject* newArgs = PyTuple_New(sz+1); + for (int i = 0; i < sz; ++i) { + PyObject* item = PyTuple_GET_ITEM(args, i); + Py_INCREF(item); + PyTuple_SET_ITEM(newArgs, i+1, item); + } + + Py_INCREF(self); + PyTuple_SET_ITEM(newArgs, 0, (PyObject*)self); + + return newArgs; +} + +//--------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPFunction::Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* ctxt) +{ +// preliminary check in case keywords are accidently used (they are ignored otherwise) + if (kwds && PyDict_Size(kwds)) { + PyErr_SetString(PyExc_TypeError, "keyword arguments are not yet supported"); + return nullptr; + } + +// setup as necessary + if (!this->Initialize(ctxt)) + return nullptr; + +// reorder self into args, if necessary + if (!(args = this->PreProcessArgs(self, args, kwds))) + return nullptr; + +// translate the arguments + bool bConvertOk = this->ConvertAndSetArgs(args, ctxt); + Py_DECREF(args); + + if (bConvertOk == false) + return nullptr; + +// execute function + return this->Execute(nullptr, 0, ctxt); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.h new file mode 100644 index 0000000000000..93b9c84180117 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPFunction.h @@ -0,0 +1,23 @@ +#ifndef CPYCPPYY_CPPFUNCTION_H +#define CPYCPPYY_CPPFUNCTION_H + +// Bindings +#include "CPPMethod.h" + + +namespace CPyCppyy { + +class CPPFunction : public CPPMethod { +public: + using CPPMethod::CPPMethod; + + virtual PyCallable* Clone() { return new CPPFunction(*this); } + + virtual PyObject* PreProcessArgs(CPPInstance*& self, PyObject* args, PyObject* kwds); + virtual PyObject* Call( + CPPInstance*&, PyObject* args, PyObject* kwds, CallContext* ctx = nullptr); +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPFUNCTION_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.cxx new file mode 100644 index 0000000000000..b61fa6163d601 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.cxx @@ -0,0 +1,390 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPInstance.h" +#include "MemoryRegulator.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" +#include "TypeManip.h" +#include "Utility.h" + +// Standard +#include + + +//______________________________________________________________________________ +// Python-side proxy objects +// ========================= +// +// C++ objects are represented in Python by CPPInstances, which encapsulate +// them using either a pointer (normal), pointer-to-pointer (kIsReference set), +// or as an owned value (kIsValue set). Objects held as reference are never +// owned, otherwise the object is owned if kIsOwner is set. +// +// In addition to encapsulation, CPPInstance offers rudimentary comparison +// operators (based on pointer value and class comparisons); stubs (with lazy +// lookups) for numeric operators; and a representation that prints the C++ +// pointer values, rather than the PyObject* ones as is the default. + + +//---------------------------------------------------------------------------- +void CPyCppyy::op_dealloc_nofree(CPPInstance* pyobj) { +// Destroy the held C++ object, if owned; does not deallocate the proxy. + bool isSmartPtr = pyobj->fFlags & CPPInstance::kIsSmartPtr; + Cppyy::TCppType_t klass = isSmartPtr ? pyobj->fSmartPtrType : pyobj->ObjectIsA(); + + if (!(pyobj->fFlags & CPPInstance::kIsReference)) + MemoryRegulator::UnregisterPyObject(pyobj, klass); + + if (pyobj->fFlags & CPPInstance::kIsValue) { + void* addr = isSmartPtr ? pyobj->fObject : pyobj->GetObject(); + Cppyy::CallDestructor(klass, addr); + Cppyy::Deallocate(klass, addr); + } else if (pyobj->fObject && (pyobj->fFlags & CPPInstance::kIsOwner)) { + void* addr = isSmartPtr ? pyobj->fObject : pyobj->GetObject(); + Cppyy::Destruct(klass, addr); + } + pyobj->fObject = nullptr; +} + + +namespace CPyCppyy { + +//= CPyCppyy object proxy null-ness checking ================================= +static PyObject* op_nonzero(CPPInstance* self) +{ +// Null of the proxy is determined by null-ness of the held C++ object. + PyObject* result = self->GetObject() ? Py_True : Py_False; + Py_INCREF(result); + return result; +} + +//= CPyCppyy object explicit destruction ===================================== +static PyObject* op_destruct(CPPInstance* self) +{ +// User access to force deletion of the object. Needed in case of a true +// garbage collector (like in PyPy), to allow the user control over when +// the C++ destructor is called. This method requires that the C++ object +// is owned (no-op otherwise). + op_dealloc_nofree(self); + Py_RETURN_NONE; +} + +//= CPyCppyy object dispatch support ========================================= +static PyObject* op_dispatch(PyObject* self, PyObject* args, PyObject* /* kdws */) +{ +// User-side __dispatch__ method to allow selection of a specific overloaded +// method. The actual selection is in the __overload__() method of CPPOverload. + PyObject *mname = nullptr, *sigarg = nullptr; + if (!PyArg_ParseTuple(args, const_cast("O!O!:__dispatch__"), + &CPyCppyy_PyUnicode_Type, &mname, &CPyCppyy_PyUnicode_Type, &sigarg)) + return nullptr; + +// get the named overload + PyObject* pymeth = PyObject_GetAttr(self, mname); + if (!pymeth) + return nullptr; + +// get the '__overload__' method to allow overload selection + PyObject* pydisp = PyObject_GetAttrString(pymeth, const_cast("__overload__")); + if (!pydisp) { + Py_DECREF(pymeth); + return nullptr; + } + +// finally, call dispatch to get the specific overload + PyObject* oload = PyObject_CallFunctionObjArgs(pydisp, sigarg, nullptr); + Py_DECREF(pydisp); + Py_DECREF(pymeth); + return oload; +} + +//= CPyCppyy smart pointer support =========================================== +static PyObject* op_get_smart_ptr(CPPInstance* self) +{ + if (!(self->fFlags & CPPInstance::kIsSmartPtr)) { + // TODO: more likely should raise + Py_RETURN_NONE; + } + + return (PyObject*)CPyCppyy::BindCppObject(self->fObject, self->fSmartPtrType); +} + + +//---------------------------------------------------------------------------- +static PyMethodDef op_methods[] = { + {(char*)"__nonzero__", (PyCFunction)op_nonzero, METH_NOARGS, nullptr}, + {(char*)"__bool__", (PyCFunction)op_nonzero, METH_NOARGS, nullptr}, // for p3 + {(char*)"__destruct__", (PyCFunction)op_destruct, METH_NOARGS, nullptr}, + {(char*)"__dispatch__", (PyCFunction)op_dispatch, METH_VARARGS, + (char*)"dispatch to selected overload"}, + {(char*)"__smartptr__", (PyCFunction)op_get_smart_ptr, METH_NOARGS, + (char*)"get associated smart pointer, if any"}, + {(char*)nullptr, nullptr, 0, nullptr} +}; + + +//= CPyCppyy object proxy construction/destruction =========================== +static CPPInstance* op_new(PyTypeObject* subtype, PyObject*, PyObject*) +{ +// Create a new object proxy (holder only). + CPPInstance* pyobj = (CPPInstance*)subtype->tp_alloc(subtype, 0); + pyobj->fObject = nullptr; + pyobj->fFlags = 0; + pyobj->fSmartPtrType = (Cppyy::TCppType_t)0; + pyobj->fDereferencer = (Cppyy::TCppMethod_t)0; + + return pyobj; +} + +//---------------------------------------------------------------------------- +static void op_dealloc(CPPInstance* pyobj) +{ +// Remove (Python-side) memory held by the object proxy. + op_dealloc_nofree(pyobj); + Py_TYPE(pyobj)->tp_free((PyObject*)pyobj); +} + +//---------------------------------------------------------------------------- +static PyObject* op_richcompare(CPPInstance* self, CPPInstance* other, int op) +{ +// Rich set of comparison objects; only equals and not-equals are defined. + if (op != Py_EQ && op != Py_NE) { + Py_INCREF(Py_NotImplemented); + return Py_NotImplemented; + } + + bool bIsEq = false; + +// special case for None to compare True to a null-pointer + if ((PyObject*)other == Py_None && !self->fObject) + bIsEq = true; + +// type + held pointer value defines identity (will cover if other is not +// actually an CPPInstance, as ob_type will be unequal) + else if (Py_TYPE(self) == Py_TYPE(other) && self->GetObject() == other->GetObject()) + bIsEq = true; + + if ((op == Py_EQ && bIsEq) || (op == Py_NE && !bIsEq)) { + Py_RETURN_TRUE; + } + + Py_RETURN_FALSE; +} + +//---------------------------------------------------------------------------- +static PyObject* op_repr(CPPInstance* pyobj) +{ +// Build a representation string of the object proxy that shows the address +// of the C++ object that is held, as well as its type. + PyObject* pyclass = (PyObject*)Py_TYPE(pyobj); + PyObject* modname = PyObject_GetAttr(pyclass, PyStrings::gModule); + Py_DECREF(pyclass); + + Cppyy::TCppType_t klass = pyobj->ObjectIsA(); + std::string clName = klass ? Cppyy::GetFinalName(klass) : ""; + if (pyobj->fFlags & CPPInstance::kIsReference) + clName.append("*"); + + PyObject* repr = nullptr; + if (pyobj->fFlags & CPPInstance::kIsSmartPtr) { + Cppyy::TCppType_t smartPtrType = pyobj->fSmartPtrType; + std::string smartPtrName = smartPtrType ? + Cppyy::GetFinalName(smartPtrType) : "unknown smart pointer"; + repr = CPyCppyy_PyUnicode_FromFormat( + const_cast("<%s.%s object at %p held by %s at %p>"), + CPyCppyy_PyUnicode_AsString(modname), clName.c_str(), + pyobj->GetObject(), smartPtrName.c_str(), pyobj->fObject); + } else { + repr = CPyCppyy_PyUnicode_FromFormat(const_cast("<%s.%s object at %p>"), + CPyCppyy_PyUnicode_AsString(modname), clName.c_str(), pyobj->GetObject()); + } + + Py_DECREF(modname); + return repr; +} + + +//----------------------------------------------------------------------------- +static PyObject* op_getownership(CPPInstance* pyobj, void*) +{ + return PyBool_FromLong((long)(pyobj->fFlags & CPPInstance::kIsOwner)); +} + +//----------------------------------------------------------------------------- +static int op_setownership(CPPInstance* pyobj, PyObject* value, void*) +{ +// Set the ownership (True is python-owns) for the given object. + long shouldown = PyLong_AsLong(value); + if (shouldown == -1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_ValueError, "__python_owns__ should be either True or False"); + return -1; + } + + (bool)shouldown ? pyobj->PythonOwns() : pyobj->CppOwns(); + + return 0; +} + + +//----------------------------------------------------------------------------- +static PyGetSetDef op_getset[] = { + {(char*)"__python_owns__", (getter)op_getownership, (setter)op_setownership, + (char*)"If true, python manages the life time of this object", nullptr}, + {(char*)nullptr, nullptr, nullptr, nullptr, nullptr} +}; + + +//= CPyCppyy type number stubs to allow dynamic overrides ===================== +#define CPYCPPYY_STUB(name, op, pystring) \ +static PyObject* op_##name##_stub(PyObject* left, PyObject* right) \ +{ \ + if (!CPPInstance_Check(left)) { \ + if (CPPInstance_Check(right)) { \ + std::swap(left, right); \ + } else { \ + Py_INCREF(Py_NotImplemented); \ + return Py_NotImplemented; \ + } \ + } \ +/* place holder to lazily install __name__ if a global overload is available */\ + if (!Utility::AddBinaryOperator( \ + left, right, #op, "__"#name"__", "__r"#name"__")) { \ + Py_INCREF(Py_NotImplemented); \ + return Py_NotImplemented; \ + } \ + \ +/* redo the call, which will now go to the newly installed method */ \ + return PyObject_CallMethodObjArgs(left, pystring, right, nullptr); \ +} + +CPYCPPYY_STUB(add, +, PyStrings::gAdd) +CPYCPPYY_STUB(sub, -, PyStrings::gSub) +CPYCPPYY_STUB(mul, *, PyStrings::gMul) +CPYCPPYY_STUB(div, /, PyStrings::gDiv) + +//----------------------------------------------------------------------------- +static PyNumberMethods op_as_number = { + (binaryfunc)op_add_stub, // nb_add + (binaryfunc)op_sub_stub, // nb_subtract + (binaryfunc)op_mul_stub, // nb_multiply +#if PY_VERSION_HEX < 0x03000000 + (binaryfunc)op_div_stub, // nb_divide +#endif + 0, // nb_remainder + 0, // nb_divmod + 0, // nb_power + 0, // nb_negative + 0, // nb_positive + 0, // nb_absolute + 0, // tp_nonzero (nb_bool in p3) + 0, // nb_invert + 0, // nb_lshift + 0, // nb_rshift + 0, // nb_and + 0, // nb_xor + 0, // nb_or +#if PY_VERSION_HEX < 0x03000000 + 0, // nb_coerce +#endif + 0, // nb_int + 0, // nb_long (nb_reserved in p3) + 0, // nb_float +#if PY_VERSION_HEX < 0x03000000 + 0, // nb_oct + 0, // nb_hex +#endif + 0, // nb_inplace_add + 0, // nb_inplace_subtract + 0, // nb_inplace_multiply +#if PY_VERSION_HEX < 0x03000000 + 0, // nb_inplace_divide +#endif + 0, // nb_inplace_remainder + 0, // nb_inplace_power + 0, // nb_inplace_lshift + 0, // nb_inplace_rshift + 0, // nb_inplace_and + 0, // nb_inplace_xor + 0 // nb_inplace_or +#if PY_VERSION_HEX >= 0x02020000 + , 0 // nb_floor_divide +#if PY_VERSION_HEX < 0x03000000 + , 0 // nb_true_divide +#else + , (binaryfunc)op_div_stub // nb_true_divide +#endif + , 0 // nb_inplace_floor_divide + , 0 // nb_inplace_true_divide +#endif +#if PY_VERSION_HEX >= 0x02050000 + , 0 // nb_index +#endif +#if PY_VERSION_HEX >= 0x03050000 + , 0 // nb_matrix_multiply + , 0 // nb_inplace_matrix_multiply +#endif +}; + + +//= CPyCppyy object proxy type =============================================== +PyTypeObject CPPInstance_Type = { + PyVarObject_HEAD_INIT(&CPPScope_Type, 0) + (char*)"cppyy.CPPInstance", // tp_name + sizeof(CPPInstance), // tp_basicsize + 0, // tp_itemsize + (destructor)op_dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + (reprfunc)op_repr, // tp_repr + &op_as_number, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + PyBaseObject_Type.tp_hash, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_BASETYPE | + Py_TPFLAGS_HAVE_GC | + Py_TPFLAGS_CHECKTYPES, // tp_flags + (char*)"cppyy object proxy (internal)", // tp_doc + 0, // tp_traverse + 0, // tp_clear + (richcmpfunc)op_richcompare, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + op_methods, // tp_methods + 0, // tp_members + op_getset, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + (newfunc)op_new, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.h new file mode 100644 index 0000000000000..811fde4250899 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPInstance.h @@ -0,0 +1,113 @@ +#ifndef CPYCPPYY_CPPINSTANCE_H +#define CPYCPPYY_CPPINSTANCE_H + +////////////////////////////////////////////////////////////////////////////// +// // +// CpyCppyy::CPPInstance // +// // +// Python-side proxy, encapsulaties a C++ object. // +// // +////////////////////////////////////////////////////////////////////////////// + + +// Bindings +#include "CPPScope.h" +#include "Cppyy.h" +#include "CallContext.h" // for Parameter + + +// TODO: have an CPPInstance derived or alternative type for smart pointers + +namespace CPyCppyy { + +class CPPInstance { +public: + enum EFlags { + kNone = 0x0, + kIsOwner = 0x0001, + kIsReference = 0x0002, + kIsRValue = 0x0004, + kIsValue = 0x0008, + kIsSmartPtr = 0x0010, + kIsPtrPtr = 0x0020 }; + +public: + void Set(void* address, EFlags flags = kNone) + { + // Initialize the proxy with the pointer value 'address.' + fObject = address; + fFlags = flags; + fSmartPtrType = (Cppyy::TCppType_t)0; + fDereferencer = (Cppyy::TCppMethod_t)0; + } + + void SetSmartPtr(Cppyy::TCppType_t ptrtype, Cppyy::TCppMethod_t deref) + { + fFlags |= kIsSmartPtr; + fSmartPtrType = ptrtype; + fDereferencer = deref; + } + + void* GetObject() const + { + // Retrieve a pointer to the held C++ object. + + // We get the raw pointer from the smart pointer each time, in case + // it has changed or has been freed. + if (fFlags & kIsSmartPtr) { + std::vector args; + return Cppyy::CallR(fDereferencer, fObject, &args); + } + + if (fObject && (fFlags & kIsReference)) + return *(reinterpret_cast(const_cast(fObject))); + else + return const_cast(fObject); // may be null + } + + Cppyy::TCppType_t ObjectIsA() const + { + // Retrieve a pointer to the C++ type; may return nullptr. + return ((CPPClass*)Py_TYPE(this))->fCppType; + } + + void PythonOwns() { fFlags |= kIsOwner; } + void CppOwns() { fFlags &= ~kIsOwner; } + +public: // public, as the python C-API works with C structs + PyObject_HEAD + void* fObject; + int fFlags; + +// TODO: should be its own version of CPPInstance so as not to clutter the +// normal instances + Cppyy::TCppType_t fSmartPtrType; + Cppyy::TCppMethod_t fDereferencer; + +private: + CPPInstance() = delete; +}; + + +//- object proxy type and type verification ---------------------------------- +extern PyTypeObject CPPInstance_Type; + +template +inline bool CPPInstance_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &CPPInstance_Type); +} + +template +inline bool CPPInstance_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &CPPInstance_Type; +} + + +//- helper for memory regulation (no PyTypeObject equiv. member in p2.2) ----- +void op_dealloc_nofree(CPPInstance*); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPINSTANCE_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.cxx new file mode 100644 index 0000000000000..351de34bb0c8c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.cxx @@ -0,0 +1,594 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPMethod.h" +#include "CPPInstance.h" +#include "Converters.h" +#include "Executors.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" +#include "TPyException.h" +#include "Utility.h" + +// Standard +#include +#include +#include +#include +#include +#include +#include + + +//- data and local helpers --------------------------------------------------- +namespace CPyCppyy { + extern PyObject* gThisModule; +} + + +//- private helpers ---------------------------------------------------------- +inline void CPyCppyy::CPPMethod::Copy_(const CPPMethod& /* other */) +{ +// fScope and fMethod handled separately + +// do not copy caches + fExecutor = nullptr; + fArgsRequired = -1; + +// being uninitialized will trigger setting up caches as appropriate + fIsInitialized = false; +} + +//---------------------------------------------------------------------------- +inline void CPyCppyy::CPPMethod::Destroy_() const +{ +// destroy executor and argument converters + delete fExecutor; + + for (int i = 0; i < (int)fConverters.size(); ++i) + delete fConverters[i]; +} + +//---------------------------------------------------------------------------- +inline PyObject* CPyCppyy::CPPMethod::CallFast( + void* self, ptrdiff_t offset, CallContext* ctxt) +{ +// Helper code to prevent some duplication; this is called from CallSafe() as well +// as directly from CPPMethod::Execute in fast mode. + PyObject* result = nullptr; + + try { // C++ try block + result = fExecutor->Execute(fMethod, (Cppyy::TCppObject_t)((Long_t)self+offset), ctxt); + } catch (TPyException&) { + result = nullptr; // error already set + } catch (std::exception& e) { + /* TODO: figure out what this is about ... ? + if (gInterpreter->DiagnoseIfInterpreterException(e)) { + return result; + } + + // TODO: write w/ot use of TClass + + // map user exceptions .. this needs to move to Cppyy.cxx + TClass* cl = TClass::GetClass(typeid(e)); + + PyObject* pyUserExcepts = PyObject_GetAttrString(gThisModule, "UserExceptions"); + std::string exception_type; + if (cl) exception_type = cl->GetName(); + else { + int errorCode; + std::unique_ptr demangled(TClassEdit::DemangleTypeIdName(typeid(e),errorCode)); + if (errorCode) exception_type = typeid(e).name(); + else exception_type = demangled.get(); + } + PyObject* pyexc = PyDict_GetItemString(pyUserExcepts, exception_type.c_str()); + if (!pyexc) { + PyErr_Clear(); + pyexc = PyDict_GetItemString(pyUserExcepts, ("std::"+exception_type).c_str()); + } + Py_DECREF(pyUserExcepts); + + if (pyexc) { + PyErr_Format(pyexc, "%s", e.what()); + } else { + PyErr_Format(PyExc_Exception, "%s (C++ exception of type %s)", e.what(), exception_type.c_str()); + } + */ + + PyErr_Format(PyExc_Exception, "%s (C++ exception)", e.what()); + result = nullptr; + } catch (...) { + PyErr_SetString(PyExc_Exception, "unhandled, unknown C++ exception"); + result = nullptr; + } + return result; +} + +//---------------------------------------------------------------------------- +inline PyObject* CPyCppyy::CPPMethod::CallSafe( + void* self, ptrdiff_t offset, CallContext* ctxt) +{ +// Helper code to prevent some code duplication; this code embeds a "try/catch" +// block that saves the stack for restoration in case of an otherwise fatal signal. + PyObject* result = 0; + +// TRY { // ROOT "try block" + result = CallFast(self, offset, ctxt); + // } CATCH(excode) { + // PyErr_SetString(PyExc_SystemError, "problem in C++; program state has been reset"); + // result = 0; + // Throw(excode); + // } ENDTRY; + + return result; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CPPMethod::InitConverters_() +{ +// build buffers for argument dispatching + const size_t nArgs = Cppyy::GetMethodNumArgs(fMethod); + fConverters.resize(nArgs); + +// setup the dispatch cache + for (size_t iarg = 0; iarg < nArgs; ++iarg) { + const std::string& fullType = Cppyy::GetMethodArgType(fMethod, iarg); + // CLING WORKAROUND -- std::string can not use kExactMatch as that will + // fail, but if no exact match is used, the const-ref + // std::string arguments will mask the const char* ones, + // even though the extra default arguments differ + if (Cppyy::GetFinalName(fScope) == "string" && \ + Cppyy::GetMethodName(fMethod) == "string" && + // Note with the improve naming normalization we should see only + // the spelling "const string&" (and will be "const std::string&") + (fullType == "const std::string&" || fullType == "const std::string &" + || fullType == "const string&" || fullType == "const string &")) { + fConverters[iarg] = new StrictCppObjectConverter( + Cppyy::GetScope("string"), false); // TODO: this is sooo wrong + // -- CLING WORKAROUND + } else + fConverters[iarg] = CreateConverter(fullType); + + if (!fConverters[iarg]) { + PyErr_Format(PyExc_TypeError, "argument type %s not handled", fullType.c_str()); + return false; + } + } + + return true; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CPPMethod::InitExecutor_(Executor*& executor, CallContext* ctxt) +{ +// install executor conform to the return type + executor = CreateExecutor( + (bool)fMethod == true ? Cppyy::ResolveName(Cppyy::GetMethodResultType(fMethod))\ + : Cppyy::GetScopedFinalName(fScope), + ctxt ? ManagesSmartPtr(ctxt) : false); + + if (!executor) + return false; + + return true; +} + +//---------------------------------------------------------------------------- +std::string CPyCppyy::CPPMethod::GetSignatureString(bool fa) +{ +// built a signature representation (used for doc strings) + std::stringstream sig; sig << "("; + int count = 0; + const size_t nArgs = Cppyy::GetMethodNumArgs(fMethod); + for (size_t iarg = 0; iarg < nArgs; ++iarg) { + if (count) sig << (fa ? ", " : ","); + + sig << Cppyy::GetMethodArgType(fMethod, iarg); + + if (fa) { + const std::string& parname = Cppyy::GetMethodArgName(fMethod, iarg); + if (!parname.empty()) + sig << " " << parname; + + const std::string& defvalue = Cppyy::GetMethodArgDefault(fMethod, iarg); + if (!defvalue.empty()) + sig << " = " << defvalue; + } + count++; + } + sig << ")"; + return sig.str(); +} + +//---------------------------------------------------------------------------- +void CPyCppyy::CPPMethod::SetPyError_(PyObject* msg) +{ +// helper to report errors in a consistent format (derefs msg) + PyObject *etype, *evalue, *etrace; + PyErr_Fetch(&etype, &evalue, &etrace); + + std::string details = ""; + if (evalue) { + PyObject* descr = PyObject_Str(evalue); + if (descr) { + details = CPyCppyy_PyUnicode_AsString(descr); + Py_DECREF(descr); + } + } + + Py_XDECREF(evalue); Py_XDECREF(etrace); + + PyObject* doc = GetDocString(); + PyObject* errtype = etype; + if (!errtype) { + Py_INCREF(PyExc_TypeError); + errtype = PyExc_TypeError; + } + PyObject* pyname = PyObject_GetAttr(errtype, PyStrings::gName); + const char* cname = pyname ? CPyCppyy_PyUnicode_AsString(pyname) : "Exception"; + + if (details.empty()) { + PyErr_Format(errtype, "%s =>\n %s: %s", CPyCppyy_PyUnicode_AsString(doc), + cname, msg ? CPyCppyy_PyUnicode_AsString(msg) : ""); + } else if (msg) { + PyErr_Format(errtype, "%s =>\n %s: %s (%s)", + CPyCppyy_PyUnicode_AsString(doc), cname, CPyCppyy_PyUnicode_AsString(msg), + details.c_str()); + } else { + PyErr_Format(errtype, "%s =>\n %s: %s", + CPyCppyy_PyUnicode_AsString(doc), cname, details.c_str()); + } + + Py_XDECREF(pyname); + Py_XDECREF(etype); + Py_DECREF(doc); + Py_XDECREF(msg); +} + +//- constructors and destructor ---------------------------------------------- +CPyCppyy::CPPMethod::CPPMethod( + Cppyy::TCppScope_t scope, Cppyy::TCppMethod_t method) : + fMethod(method), fScope(scope), fExecutor(nullptr), fArgsRequired(-1), + fIsInitialized(false) +{ + // empty +} + +//---------------------------------------------------------------------------- +CPyCppyy::CPPMethod::CPPMethod(const CPPMethod& other) : + PyCallable(other), fMethod(other.fMethod), fScope(other.fScope) +{ + Copy_(other); +} + +//---------------------------------------------------------------------------- +CPyCppyy::CPPMethod& CPyCppyy::CPPMethod::operator=(const CPPMethod& other) +{ + if (this != &other) { + Destroy_(); + Copy_(other); + fScope = other.fScope; + fMethod = other.fMethod; + } + + return *this; +} + +//---------------------------------------------------------------------------- +CPyCppyy::CPPMethod::~CPPMethod() +{ + Destroy_(); +} + + +//- public members ----------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::GetPrototype(bool fa) +{ +// construct python string from the method's prototype + return CPyCppyy_PyUnicode_FromFormat("%s%s %s::%s%s", + (Cppyy::IsStaticMethod(fMethod) ? "static " : ""), + Cppyy::GetMethodResultType(fMethod).c_str(), + Cppyy::GetScopedFinalName(fScope).c_str(), Cppyy::GetMethodName(fMethod).c_str(), + GetSignatureString(fa).c_str()); +} + +//---------------------------------------------------------------------------- +int CPyCppyy::CPPMethod::GetPriority() +{ +// Method priorities exist (in lieu of true overloading) there to prevent +// void* or * from usurping otherwise valid calls. TODO: extend this +// to favour classes that are not bases. + int priority = 0; + + const size_t nArgs = Cppyy::GetMethodNumArgs(fMethod); + for (size_t iarg = 0; iarg < nArgs; ++iarg) { + const std::string aname = Cppyy::GetMethodArgType(fMethod, iarg); + + // the following numbers are made up and may cause problems in specific + // situations: use ..disp() for choice of exact dispatch + if (Cppyy::IsBuiltin(aname)) { + // happens for builtin types (and namespaces, but those can never be an + // argument), NOT for unknown classes as that concept no longer exists + if (strstr(aname.c_str(), "void*")) + // TODO: figure out in general all void* converters + priority -= 10000; // void*/void** shouldn't be too greedy + else if (strstr(aname.c_str(), "float")) + priority -= 1000; // double preferred (no float in python) + else if (strstr(aname.c_str(), "long double")) + priority -= 100; // id, but better than float + else if (strstr(aname.c_str(), "double")) + priority -= 10; // char, int, long can't convert float, + // but vv. works, so prefer the int types + else if (strstr(aname.c_str(), "bool")) + priority += 1; // bool over int (does accept 1 and 0) + + } else if (aname.rfind("&&", aname.size()-2) != std::string::npos) { + priority += 100; + } else if (!aname.empty() && !Cppyy::IsComplete(aname)) { + // class is known, but no dictionary available, 2 more cases: * and & + if (aname[ aname.size() - 1 ] == '&') + priority -= 1000000; + else + priority -= 100000; // prefer pointer passing over reference + } + } + +// add a small penalty to prefer non-const methods over const ones for +// getitem/setitem + if (Cppyy::IsConstMethod(fMethod) && Cppyy::GetMethodName(fMethod) == "operator[]") + priority -= 1; + + return priority; +} + +//---------------------------------------------------------------------------- +int CPyCppyy::CPPMethod::GetMaxArgs() +{ + return Cppyy::GetMethodNumArgs(fMethod); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::GetCoVarNames() +{ +// Build a tuple of the argument types/names. + int co_argcount = (int)GetMaxArgs() /* +1 for self */; + +// TODO: static methods need no 'self' (but is harmless otherwise) + + PyObject* co_varnames = PyTuple_New(co_argcount+1 /* self */); + PyTuple_SET_ITEM(co_varnames, 0, CPyCppyy_PyUnicode_FromString("self")); + for (int iarg = 0; iarg < co_argcount; ++iarg) { + std::string argrep = Cppyy::GetMethodArgType(fMethod, iarg); + const std::string& parname = Cppyy::GetMethodArgName(fMethod, iarg); + if (!parname.empty()) { + argrep += " "; + argrep += parname; + } + + PyObject* pyspec = CPyCppyy_PyUnicode_FromString(argrep.c_str()); + PyTuple_SET_ITEM(co_varnames, iarg+1, pyspec); + } + + return co_varnames; +} + +PyObject* CPyCppyy::CPPMethod::GetArgDefault(int iarg) +{ +// get the default value (if any) of argument iarg of this method + if (iarg >= (int)GetMaxArgs()) + return nullptr; + + const std::string& defvalue = Cppyy::GetMethodArgDefault(fMethod, iarg); + if (!defvalue.empty()) { + + // attempt to evaluate the string representation (will work for all builtin types) + PyObject* pyval = (PyObject*)PyRun_String( + (char*)defvalue.c_str(), Py_eval_input, gThisModule, gThisModule); + if (!pyval && PyErr_Occurred()) { + PyErr_Clear(); + return CPyCppyy_PyUnicode_FromString(defvalue.c_str()); + } + + return pyval; + } + + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::GetScopeProxy() +{ +// Get or build the scope of this method. + return CreateScopeProxy(fScope); +} + + +//---------------------------------------------------------------------------- +Cppyy::TCppFuncAddr_t CPyCppyy::CPPMethod::GetFunctionAddress() +{ +// Return the C++ pointer of this function + return Cppyy::GetFunctionAddress(fMethod); +} + + +//---------------------------------------------------------------------------- +bool CPyCppyy::CPPMethod::Initialize(CallContext* ctxt) +{ +// done if cache is already setup + if (fIsInitialized == true) + return true; + + if (!InitConverters_()) + return false; + + if (!InitExecutor_(fExecutor, ctxt)) + return false; + +// minimum number of arguments when calling + fArgsRequired = (bool)fMethod == true ? Cppyy::GetMethodReqArgs(fMethod) : 0; + +// init done + fIsInitialized = true; + + return true; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::PreProcessArgs( + CPPInstance*& self, PyObject* args, PyObject*) +{ +// verify existence of self, return if ok + if (self) { + Py_INCREF(args); + return args; + } + +// otherwise, check for a suitable 'self' in args and update accordingly + if (PyTuple_GET_SIZE(args) != 0) { + CPPInstance* pyobj = (CPPInstance*)PyTuple_GET_ITEM(args, 0); + + // demand CPyCppyy object, and an argument that may match down the road + if (CPPInstance_Check(pyobj) && + (fScope == Cppyy::gGlobalScope || // free global + (pyobj->ObjectIsA() == 0) || // null pointer or ctor call + (Cppyy::IsSubtype(pyobj->ObjectIsA(), fScope)))) { // matching types + + // reset self + self = pyobj; + Py_INCREF(self); // corresponding Py_DECREF is in CPPOverload + + // offset args by 1 (new ref) + return PyTuple_GetSlice(args, 1, PyTuple_GET_SIZE(args)); + } + } + +// no self, set error and lament + SetPyError_(CPyCppyy_PyUnicode_FromFormat( + "unbound method %s::%s must be called with a %s instance as first argument", + Cppyy::GetFinalName(fScope).c_str(), Cppyy::GetMethodName(fMethod).c_str(), + Cppyy::GetFinalName(fScope).c_str())); + return nullptr; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CPPMethod::ConvertAndSetArgs(PyObject* args, CallContext* ctxt) +{ + int argc = PyTuple_GET_SIZE(args); + int argMax = fConverters.size(); + +// argc must be between min and max number of arguments + if (argc < fArgsRequired) { + SetPyError_(CPyCppyy_PyUnicode_FromFormat( + "takes at least %d arguments (%d given)", fArgsRequired, argc)); + return false; + } else if (argMax < argc) { + SetPyError_(CPyCppyy_PyUnicode_FromFormat( + "takes at most %d arguments (%d given)", argMax, argc)); + return false; + } + +// convert the arguments to the method call array + ctxt->fArgs.resize(argc); + for (int i = 0; i < argc; ++i) { + if (!fConverters[i]->SetArg( + PyTuple_GET_ITEM(args, i), ctxt->fArgs[i], ctxt)) { + SetPyError_(CPyCppyy_PyUnicode_FromFormat("could not convert argument %d", i+1)); + return false; + } + } + + return true; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::Execute(void* self, ptrdiff_t offset, CallContext* ctxt) +{ +// call the interface method + PyObject* result = 0; + + if (CallContext::sSignalPolicy == CallContext::kFast) { + // bypasses try block (i.e. segfaults will abort) + result = CallFast(self, offset, ctxt); + } else { + // at the cost of ~10% performance, don't abort the interpreter on any signal + result = CallSafe(self, offset, ctxt); + } + + if (result && Utility::PyErr_Occurred_WithGIL()) { + // can happen in the case of a CINT error: trigger exception processing + Py_DECREF(result); + result = 0; + } else if (!result && PyErr_Occurred()) + SetPyError_(0); + + return result; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* ctxt) +{ +// preliminary check in case keywords are accidently used (they are ignored otherwise) + if (kwds && PyDict_Size(kwds)) { + PyErr_SetString(PyExc_TypeError, "keyword arguments are not yet supported"); + return nullptr; + } + +// setup as necessary + if (!Initialize(ctxt)) + return nullptr; + +// fetch self, verify, and put the arguments in usable order + if (!(args = PreProcessArgs(self, args, kwds))) + return nullptr; + +// translate the arguments + if (!ConvertAndSetArgs(args, ctxt)) { + Py_DECREF(args); + return nullptr; + } + +// get the C++ object that this object proxy is a handle for + void* object = self->GetObject(); + +// validity check that should not fail + if (!object) { + PyErr_SetString(PyExc_ReferenceError, "attempt to access a null-pointer"); + Py_DECREF(args); + return nullptr; + } + +// get its class + Cppyy::TCppType_t derived = self->ObjectIsA(); + +// calculate offset (the method expects 'this' to be an object of fScope) + ptrdiff_t offset = 0; + if (derived && derived != fScope) + offset = Cppyy::GetBaseOffset(derived, fScope, object, 1 /* up-cast */); + +// actual call; recycle self instead of returning new object for same address objects + CPPInstance* pyobj = (CPPInstance*)Execute(object, offset, ctxt); + Py_DECREF(args); + + if (CPPInstance_Check(pyobj) && + derived && pyobj->ObjectIsA() == derived && + pyobj->GetObject() == object) { + Py_INCREF((PyObject*)self); + Py_DECREF(pyobj); + return (PyObject*)self; + } + + return (PyObject*)pyobj; +} + +//- protected members -------------------------------------------------------- +PyObject* CPyCppyy::CPPMethod::GetSignature(bool fa) +{ +// construct python string from the method's signature + return CPyCppyy_PyUnicode_FromString(GetSignatureString(fa).c_str()); +} + +//---------------------------------------------------------------------------- +std::string CPyCppyy::CPPMethod::GetReturnTypeName() +{ + return Cppyy::GetMethodResultType(fMethod); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.h new file mode 100644 index 0000000000000..90f800cb2494c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPMethod.h @@ -0,0 +1,84 @@ +#ifndef CPYCPPYY_CPPMETHOD_H +#define CPYCPPYY_CPPMETHOD_H + +// Bindings +#include "PyCallable.h" + +// Standard +#include +#include + + +namespace CPyCppyy { + +class Executor; +class Converter; + +class CPPMethod : public PyCallable { +public: + CPPMethod(Cppyy::TCppScope_t scope, Cppyy::TCppMethod_t method); + CPPMethod(const CPPMethod&); + CPPMethod& operator=(const CPPMethod&); + virtual ~CPPMethod(); + +public: + virtual PyObject* GetSignature(bool show_formalargs = true); + virtual PyObject* GetPrototype(bool show_formalargs = true); + virtual int GetPriority(); + + virtual int GetMaxArgs(); + virtual PyObject* GetCoVarNames(); + virtual PyObject* GetArgDefault(int iarg); + virtual PyObject* GetScopeProxy(); + virtual Cppyy::TCppFuncAddr_t GetFunctionAddress(); + + virtual PyCallable* Clone() { return new CPPMethod(*this); } + +public: + virtual PyObject* Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* ctxt = nullptr); + + virtual bool Initialize(CallContext* ctxt = nullptr); + virtual PyObject* PreProcessArgs(CPPInstance*& self, PyObject* args, PyObject* kwds); + virtual bool ConvertAndSetArgs(PyObject* args, CallContext* ctxt = nullptr); + virtual PyObject* Execute(void* self, ptrdiff_t offset, CallContext* ctxt = nullptr); + +protected: + Cppyy::TCppMethod_t GetMethod() { return fMethod; } + Cppyy::TCppScope_t GetScope() { return fScope; } + Executor* GetExecutor() { return fExecutor; } + std::string GetSignatureString(bool show_formalargs = true); + std::string GetReturnTypeName(); + + virtual bool InitExecutor_(Executor*&, CallContext* ctxt = nullptr); + +private: + void Copy_(const CPPMethod&); + void Destroy_() const; + + PyObject* CallFast(void*, ptrdiff_t, CallContext*); + PyObject* CallSafe(void*, ptrdiff_t, CallContext*); + + bool InitConverters_(); + + void SetPyError_(PyObject* msg); + +private: +// representation + Cppyy::TCppMethod_t fMethod; + Cppyy::TCppScope_t fScope; + Executor* fExecutor; + +// call dispatch buffers + std::vector fConverters; + +// cached values + int fArgsRequired; + +// admin + bool fIsInitialized; +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPMETHOD_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.cxx new file mode 100644 index 0000000000000..6ec1aeba0ad60 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.cxx @@ -0,0 +1,887 @@ +// Bindings +#include "CPyCppyy.h" +#include "structmember.h" // from Python +#if PY_VERSION_HEX >= 0x02050000 +#include "code.h" // from Python +#else +#include "compile.h" // from Python +#endif +#ifndef CO_NOFREE +// python2.2 does not have CO_NOFREE defined +#define CO_NOFREE 0x0040 +#endif +#include "CPPOverload.h" +#include "CPPInstance.h" +#include "CallContext.h" +#include "TPyException.h" +#include "PyStrings.h" +#include "Utility.h" + +// Standard +#include +#include + + +namespace CPyCppyy { + +namespace { + +// TODO: only used here, but may be better off integrated with Pythonize.cxx callbacks +class TPythonCallback : public PyCallable { +public: + PyObject* fCallable; + + TPythonCallback(PyObject* callable) : fCallable(nullptr) + { + if (!PyCallable_Check(callable)) { + PyErr_SetString(PyExc_TypeError, "parameter must be callable"); + return; + } + fCallable = callable; + Py_INCREF(fCallable); + } + + virtual ~TPythonCallback() { + Py_DECREF(fCallable); + fCallable = nullptr; + } + + virtual PyObject* GetSignature(bool /*show_formalargs*/ = true) { + return CPyCppyy_PyUnicode_FromString("*args, **kwargs"); + } + virtual PyObject* GetPrototype(bool /*show_formalargs*/ = true) { + return CPyCppyy_PyUnicode_FromString(""); + } + virtual PyObject* GetDocString() { + if (PyObject_HasAttrString(fCallable, "__doc__")) { + return PyObject_GetAttrString(fCallable, "__doc__"); + } else { + return GetPrototype(); + } + } + + virtual int GetPriority() { return 100; }; + + virtual int GetMaxArgs() { return 100; }; + virtual PyObject* GetCoVarNames() { // TODO: pick these up from the callable + Py_RETURN_NONE; + } + virtual PyObject* GetArgDefault(int /* iarg */) { // TODO: pick these up from the callable + Py_RETURN_NONE; + } + + virtual PyObject* GetScopeProxy() { // should this be the module ?? + Py_RETURN_NONE; + } + + virtual Cppyy::TCppFuncAddr_t GetFunctionAddress() { + return (Cppyy::TCppFuncAddr_t)nullptr; + } + + virtual PyCallable* Clone() { return new TPythonCallback(*this); } + + virtual PyObject* Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* /* ctxt = 0 */) { + + PyObject* newArgs = nullptr; + if (self) { + Py_ssize_t nargs = PyTuple_Size(args); + newArgs = PyTuple_New(nargs+1); + Py_INCREF(self); + PyTuple_SET_ITEM(newArgs, 0, (PyObject*)self); + for (Py_ssize_t iarg = 0; iarg < nargs; ++iarg) { + PyObject* pyarg = PyTuple_GET_ITEM(args, iarg); + Py_INCREF(pyarg); + PyTuple_SET_ITEM(newArgs, iarg+1, pyarg); + } + } else { + Py_INCREF(args); + newArgs = args; + } + return PyObject_Call(fCallable, newArgs, kwds); + } +}; + +// helper to test whether a method is used in a pseudo-function modus +static inline bool IsPseudoFunc(CPPOverload* pymeth) +{ + return (void*)pymeth == (void*)pymeth->fSelf; +} + +// helper to hash tuple (using tuple hash would cause self-tailing loops) +static inline uint64_t HashSignature(PyObject* args) +{ +// Build a hash from the types of the given python function arguments. + uint64_t hash = 0; + + int nargs = PyTuple_GET_SIZE(args); + for (int i = 0; i < nargs; ++i) { + // TODO: hashing in the ref-count is for moves; resolve this together with the + // improved overloads for implicit conversions + PyObject* pyobj = PyTuple_GET_ITEM(args, i); + hash += (uint64_t)Py_TYPE(pyobj); + if (pyobj->ob_refcnt == 1) + hash += (uint64_t)pyobj->ob_refcnt; + hash += (hash << 10); hash ^= (hash >> 6); + } + + hash += (hash << 3); hash ^= (hash >> 11); hash += (hash << 15); + + return hash; +} + +// helper to sort on method priority +static int PriorityCmp(PyCallable* left, PyCallable* right) +{ + return left->GetPriority() > right->GetPriority(); +} + +// return helper +static inline void ResetCallState(CPPInstance*& selfnew, CPPInstance* selfold, bool clear) +{ + if (selfnew != selfold) { + Py_XDECREF(selfnew); + selfnew = selfold; + } + + if (clear) + PyErr_Clear(); +} + +// helper to factor out return logic of mp_call +static inline PyObject* HandleReturn( + CPPOverload* pymeth, CPPInstance* oldSelf, PyObject* result) +{ + +// special case for python exceptions, propagated through C++ layer + if (result) { + + // if this method creates new objects, always take ownership + if (IsCreator(pymeth->fMethodInfo->fFlags)) { + + // either be a constructor with a fresh object proxy self ... + if (IsConstructor(pymeth->fMethodInfo->fFlags)) { + if (pymeth->fSelf) + pymeth->fSelf->PythonOwns(); + } + + // ... or be a method with an object proxy return value + else if (CPPInstance_Check(result)) + ((CPPInstance*)result)->PythonOwns(); + } + + // if this new object falls inside self, make sure its lifetime is proper + if (CPPInstance_Check(pymeth->fSelf) && CPPInstance_Check(result)) { + ptrdiff_t offset = (ptrdiff_t)( + (CPPInstance*)result)->GetObject() - (ptrdiff_t)pymeth->fSelf->GetObject(); + if (0 <= offset && offset < (ptrdiff_t)Cppyy::SizeOf(pymeth->fSelf->ObjectIsA())) { + if (PyObject_SetAttr(result, PyStrings::gLifeLine, (PyObject*)pymeth->fSelf) == -1) + PyErr_Clear(); // ignored + } + } + } + +// reset self as necessary to allow re-use of the CPPOverload + ResetCallState(pymeth->fSelf, oldSelf, false); + + return result; +} + + +//= CPyCppyy method proxy object behaviour =================================== +static PyObject* mp_name(CPPOverload* pymeth, void*) +{ + return CPyCppyy_PyUnicode_FromString(pymeth->GetName().c_str()); +} + +//----------------------------------------------------------------------------- +static PyObject* mp_module(CPPOverload* /* pymeth */, void*) +{ + Py_INCREF(PyStrings::gThisModule); + return PyStrings::gThisModule; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_doc(CPPOverload* pymeth, void*) +{ +// Build python document string ('__doc__') from all C++-side overloads. + CPPOverload::Methods_t& methods = pymeth->fMethodInfo->fMethods; + +// collect doc strings + int nMethods = methods.size(); + if (nMethods == 0) // from template proxy with no instantiations + return nullptr; + PyObject* doc = methods[0]->GetDocString(); + +// simple case + if (nMethods == 1) + return doc; + +// overloaded method + PyObject* separator = CPyCppyy_PyUnicode_FromString("\n"); + for (int i = 1; i < nMethods; ++i) { + CPyCppyy_PyUnicode_Append(&doc, separator); + CPyCppyy_PyUnicode_AppendAndDel(&doc, methods[i]->GetDocString()); + } + Py_DECREF(separator); + + return doc; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_meth_func(CPPOverload* pymeth, void*) +{ +// Create a new method proxy to be returned. + CPPOverload* newPyMeth = (CPPOverload*)CPPOverload_Type.tp_alloc(&CPPOverload_Type, 0); + +// method info is shared, as it contains the collected overload knowledge + *pymeth->fMethodInfo->fRefCount += 1; + newPyMeth->fMethodInfo = pymeth->fMethodInfo; + +// new method is unbound, use of 'meth' is for keeping track whether this +// proxy is used in the capacity of a method or a function + newPyMeth->fSelf = (CPPInstance*)newPyMeth; + + return (PyObject*)newPyMeth; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_meth_self(CPPOverload* pymeth, void*) +{ +// Return the bound self, if any; in case of pseudo-function role, pretend +// that the data member im_self does not exist. + if (IsPseudoFunc(pymeth)) { + PyErr_Format(PyExc_AttributeError, + "function %s has no attribute \'im_self\'", pymeth->fMethodInfo->fName.c_str()); + return nullptr; + } else if (pymeth->fSelf != 0) { + Py_INCREF((PyObject*)pymeth->fSelf); + return (PyObject*)pymeth->fSelf; + } + + Py_RETURN_NONE; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_meth_class(CPPOverload* pymeth, void*) +{ +// Return scoping class; in case of pseudo-function role, pretend that there +// is no encompassing class (i.e. global scope). + if (!IsPseudoFunc(pymeth) && pymeth->fMethodInfo->fMethods.size()) { + PyObject* pyclass = pymeth->fMethodInfo->fMethods[0]->GetScopeProxy(); + if (!pyclass) + PyErr_Format(PyExc_AttributeError, + "function %s has no attribute \'im_class\'", pymeth->fMethodInfo->fName.c_str()); + return pyclass; + } + + Py_RETURN_NONE; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_func_closure(CPPOverload* /* pymeth */, void*) +{ +// Stub only, to fill out the python function interface. + Py_RETURN_NONE; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_func_code(CPPOverload* pymeth, void*) +{ +// Code details are used in module inspect to fill out interactive help() +#if PY_VERSION_HEX < 0x03000000 + CPPOverload::Methods_t& methods = pymeth->fMethodInfo->fMethods; + +// collect arguments only if there is just 1 overload, otherwise put in a +// fake *args (see below for co_varnames) + PyObject* co_varnames = methods.size() == 1 ? methods[0]->GetCoVarNames() : nullptr; + if (!co_varnames) { + // TODO: static methods need no 'self' (but is harmless otherwise) + co_varnames = PyTuple_New(1 /* self */ + 1 /* fake */); + PyTuple_SET_ITEM(co_varnames, 0, CPyCppyy_PyUnicode_FromString("self")); + PyTuple_SET_ITEM(co_varnames, 1, CPyCppyy_PyUnicode_FromString("*args")); + } + + int co_argcount = PyTuple_Size(co_varnames); + +// for now, code object representing the statement 'pass' + PyObject* co_code = PyString_FromStringAndSize("d\x00\x00S", 4); + +// tuples with all the const literals used in the function + PyObject* co_consts = PyTuple_New(0); + PyObject* co_names = PyTuple_New(0); + +// names, freevars, and cellvars go unused + PyObject* co_unused = PyTuple_New(0); + +// filename is made-up + PyObject* co_filename = PyString_FromString("cppyy.py"); + +// name is the function name, also through __name__ on the function itself + PyObject* co_name = PyString_FromString(pymeth->GetName().c_str()); + +// firstlineno is the line number of first function code in the containing scope + +// lnotab is a packed table that maps instruction count and line number + PyObject* co_lnotab = PyString_FromString("\x00\x01\x0c\x01"); + + PyObject* code = (PyObject*)PyCode_New( + co_argcount, // argcount + co_argcount+1, // nlocals + 2, // stacksize + CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE, // flags + co_code, // code + co_consts, // consts + co_names, // names + co_varnames, // varnames + co_unused, // freevars + co_unused, // cellvars + co_filename, // filename + co_name, // name + 1, // firstlineno + co_lnotab); // lnotab + + Py_DECREF(co_lnotab); + Py_DECREF(co_name); + Py_DECREF(co_unused); + Py_DECREF(co_filename); + Py_DECREF(co_varnames); + Py_DECREF(co_names); + Py_DECREF(co_consts); + Py_DECREF(co_code); + + return code; +#else +// not important for functioning of most code, so not implemented for p3 for now (TODO) + pymeth = 0; + Py_RETURN_NONE; +#endif +} + +//----------------------------------------------------------------------------- +static PyObject* mp_func_defaults(CPPOverload* pymeth, void*) +{ +// Create a tuple of default values, if there is only one method (otherwise +// leave undefined: this is only used by inspect for interactive help()) + CPPOverload::Methods_t& methods = pymeth->fMethodInfo->fMethods; + + if (methods.size() != 1) + return PyTuple_New(0); + + int maxarg = methods[0]->GetMaxArgs(); + + PyObject* defaults = PyTuple_New(maxarg); + + int itup = 0; + for (int iarg = 0; iarg < maxarg; ++iarg) { + PyObject* defvalue = methods[0]->GetArgDefault(iarg); + if (defvalue) + PyTuple_SET_ITEM(defaults, itup++, defvalue); + } + _PyTuple_Resize(&defaults, itup); + + return defaults; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_func_globals(CPPOverload* /* pymeth */, void*) +{ +// Return this function's global dict (hard-wired to be the cppyy module); used +// for lookup of names from co_code indexing into co_names. + PyObject* pyglobal = PyModule_GetDict(PyImport_AddModule((char*)"cppyy")); + Py_XINCREF(pyglobal); + return pyglobal; +} + +//----------------------------------------------------------------------------- +PyObject* mp_getcreates(CPPOverload* pymeth, void*) +{ +// Get '_creates' boolean, which determines ownership of return values. + return PyInt_FromLong((long)IsCreator(pymeth->fMethodInfo->fFlags)); +} + +//----------------------------------------------------------------------------- +static int mp_setcreates(CPPOverload* pymeth, PyObject* value, void*) +{ +// Set '_creates' boolean, which determines ownership of return values. + if (!value) { // means that _creates is being deleted + pymeth->fMethodInfo->fFlags &= ~CallContext::kIsCreator; + return 0; + } + + long iscreator = PyLong_AsLong(value); + if (iscreator == -1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_ValueError, "a boolean 1 or 0 is required for _creates"); + return -1; + } + + if (iscreator) + pymeth->fMethodInfo->fFlags |= CallContext::kIsCreator; + else + pymeth->fMethodInfo->fFlags &= ~CallContext::kIsCreator; + + return 0; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_getmempolicy(CPPOverload* pymeth, void*) +{ +// Get '_mempolicy' enum, which determines ownership of call arguments. + if (pymeth->fMethodInfo->fFlags & CallContext::kUseHeuristics) + return PyInt_FromLong(CallContext::kUseHeuristics); + + if (pymeth->fMethodInfo->fFlags & CallContext::kUseStrict) + return PyInt_FromLong(CallContext::kUseStrict); + + return PyInt_FromLong(-1); +} + +//----------------------------------------------------------------------------- +static int mp_setmempolicy(CPPOverload* pymeth, PyObject* value, void*) +{ +// Set '_mempolicy' enum, which determines ownership of call arguments. + long mempolicy = PyLong_AsLong(value); + if (mempolicy == CallContext::kUseHeuristics) { + pymeth->fMethodInfo->fFlags |= CallContext::kUseHeuristics; + pymeth->fMethodInfo->fFlags &= ~CallContext::kUseStrict; + } else if (mempolicy == CallContext::kUseStrict) { + pymeth->fMethodInfo->fFlags |= CallContext::kUseStrict; + pymeth->fMethodInfo->fFlags &= ~CallContext::kUseHeuristics; + } else { + PyErr_SetString(PyExc_ValueError, + "expected kMemoryStrict or kMemoryHeuristics as value for _mempolicy"); + return -1; + } + + return 0; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_get_manage_smart_ptr(CPPOverload* pymeth, void*) +{ +// Get '_manage_smart_ptr' boolean, which determines whether or not to +// manage returned smart pointers intelligently. + return PyInt_FromLong( + (long)(pymeth->fMethodInfo->fFlags & CallContext::kManageSmartPtr)); +} + +//----------------------------------------------------------------------------- +static int mp_set_manage_smart_ptr(CPPOverload* pymeth, PyObject* value, void*) +{ +// Set '_manage_smart_ptr' boolean, which determines whether or not to +// manage returned smart pointers intelligently. + long policy = PyLong_AsLong(value); + if (policy == -1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_ValueError, "a boolean 1 or 0 is required for _manage_smart_ptr"); + return -1; + } + + pymeth->fMethodInfo->fFlags |= CallContext::kManageSmartPtr; + + return 0; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_getthreaded(CPPOverload* pymeth, void*) +{ +// Get '_threaded' boolean, which determines whether the GIL will be released. + return PyInt_FromLong( + (long)(pymeth->fMethodInfo->fFlags & CallContext::kReleaseGIL)); +} + +//----------------------------------------------------------------------------- +static int mp_setthreaded(CPPOverload* pymeth, PyObject* value, void*) +{ +// Set '_threaded' boolean, which determines whether the GIL will be released. + long isthreaded = PyLong_AsLong(value); + if (isthreaded == -1 && PyErr_Occurred()) { + PyErr_SetString(PyExc_ValueError, "a boolean 1 or 0 is required for _creates"); + return -1; + } + + if (isthreaded) + pymeth->fMethodInfo->fFlags |= CallContext::kReleaseGIL; + else + pymeth->fMethodInfo->fFlags &= ~CallContext::kReleaseGIL; + + return 0; +} + + +//----------------------------------------------------------------------------- +static PyGetSetDef mp_getset[] = { + {(char*)"__name__", (getter)mp_name, nullptr, nullptr, nullptr}, + {(char*)"__module__", (getter)mp_module, nullptr, nullptr, nullptr}, + {(char*)"__doc__", (getter)mp_doc, nullptr, nullptr, nullptr}, + +// to be more python-like, where these are duplicated as well; to actually +// derive from the python method or function type is too memory-expensive, +// given that most of the members of those types would not be used + {(char*)"im_func", (getter)mp_meth_func, nullptr, nullptr, nullptr}, + {(char*)"im_self", (getter)mp_meth_self, nullptr, nullptr, nullptr}, + {(char*)"im_class", (getter)mp_meth_class, nullptr, nullptr, nullptr}, + + {(char*)"func_closure", (getter)mp_func_closure, nullptr, nullptr, nullptr}, + {(char*)"func_code", (getter)mp_func_code, nullptr, nullptr, nullptr}, + {(char*)"func_defaults", (getter)mp_func_defaults, nullptr, nullptr, nullptr}, + {(char*)"func_globals", (getter)mp_func_globals, nullptr, nullptr, nullptr}, + {(char*)"func_doc", (getter)mp_doc, nullptr, nullptr, nullptr}, + {(char*)"func_name", (getter)mp_name, nullptr, nullptr, nullptr}, + + {(char*)"_creates", (getter)mp_getcreates, (setter)mp_setcreates, + (char*)"For ownership rules of result: if true, objects are python-owned", nullptr}, + {(char*)"_mempolicy", (getter)mp_getmempolicy, (setter)mp_setmempolicy, + (char*)"For argument ownership rules: like global, either heuristic or strict", nullptr}, + {(char*)"_manage_smart_ptr", (getter)mp_get_manage_smart_ptr, (setter)mp_set_manage_smart_ptr, + (char*)"If a smart pointer is returned, determines management policy.", nullptr}, + {(char*)"_threaded", (getter)mp_getthreaded, (setter)mp_setthreaded, + (char*)"If true, releases GIL on call into C++", nullptr}, + {(char*)nullptr, nullptr, nullptr, nullptr, nullptr} +}; + +//= CPyCppyy method proxy function behavior ================================== +static PyObject* mp_call(CPPOverload* pymeth, PyObject* args, PyObject* kwds) +{ +// Call the appropriate overload of this method. + +// if called through im_func pseudo-representation (this can be gamed if the +// user really wants to ...) + if (IsPseudoFunc(pymeth)) + pymeth->fSelf = nullptr; + + CPPInstance* oldSelf = pymeth->fSelf; + +// get local handles to proxy internals + auto& methods = pymeth->fMethodInfo->fMethods; + auto& dispatchMap = pymeth->fMethodInfo->fDispatchMap; + auto& mflags = pymeth->fMethodInfo->fFlags; + + int nMethods = methods.size(); + + CallContext ctxt = {0}; + ctxt.fFlags |= (mflags & CallContext::kUseHeuristics); + ctxt.fFlags |= (mflags & CallContext::kUseStrict); + ctxt.fFlags |= (mflags & CallContext::kManageSmartPtr); + if (!ctxt.fFlags) ctxt.fFlags |= CallContext::sMemoryPolicy; + ctxt.fFlags |= (mflags & CallContext::kReleaseGIL); + +// simple case + if (nMethods == 1) { + PyObject* result = methods[0]->Call(pymeth->fSelf, args, kwds, &ctxt); + return HandleReturn(pymeth, oldSelf, result); + } + +// otherwise, handle overloading + uint64_t sighash = HashSignature(args); + +// look for known signatures ... + CPPOverload::DispatchMap_t::iterator m = dispatchMap.find(sighash); + if (m != dispatchMap.end()) { + int index = m->second; + PyObject* result = methods[index]->Call(pymeth->fSelf, args, kwds, &ctxt); + result = HandleReturn(pymeth, oldSelf, result); + + if (result != 0) + return result; + + // fall through: python is dynamic, and so, the hashing isn't infallible + ResetCallState(pymeth->fSelf, oldSelf, true); + } + +// ... otherwise loop over all methods and find the one that does not fail + if (!IsSorted(mflags)) { + std::stable_sort(methods.begin(), methods.end(), PriorityCmp); + mflags |= CallContext::kIsSorted; + } + + std::vector errors; + for (int i = 0; i < nMethods; ++i) { + PyObject* result = methods[i]->Call(pymeth->fSelf, args, kwds, &ctxt); + + if (result != 0) { + // success: update the dispatch map for subsequent calls + dispatchMap[sighash] = i; + std::for_each(errors.begin(), errors.end(), Utility::PyError_t::Clear); + return HandleReturn(pymeth, oldSelf, result); + } + + // failure: collect error message/trace (automatically clears exception, too) + if (!PyErr_Occurred()) { + // this should not happen; set an error to prevent core dump and report + PyObject* sig = methods[i]->GetPrototype(); + PyErr_Format(PyExc_SystemError, "%s =>\n %s", + CPyCppyy_PyUnicode_AsString(sig), (char*)"nullptr result without error in mp_call"); + Py_DECREF(sig); + } + Utility::FetchError(errors); + ResetCallState(pymeth->fSelf, oldSelf, false); + } + +// first summarize, then add details + PyObject* topmsg = CPyCppyy_PyUnicode_FromFormat( + "none of the %d overloaded methods succeeded. Full details:", nMethods); + SetDetailedException(errors, topmsg /* steals */, PyExc_TypeError /* default error */); + +// report failure + return nullptr; +} + +//----------------------------------------------------------------------------- +static CPPOverload* mp_descrget(CPPOverload* pymeth, CPPInstance* pyobj, PyObject*) +{ +// Descriptor; create and return a new bound method proxy (language requirement). + CPPOverload* newPyMeth = (CPPOverload*)CPPOverload_Type.tp_alloc(&CPPOverload_Type, 0); + +// method info is shared, as it contains the collected overload knowledge + *pymeth->fMethodInfo->fRefCount += 1; + newPyMeth->fMethodInfo = pymeth->fMethodInfo; + +// new method is to be bound to current object (may be nullptr) + Py_XINCREF((PyObject*)pyobj); + newPyMeth->fSelf = pyobj; + + return newPyMeth; +} + + +//= CPyCppyy method proxy construction/destruction =========================== +static CPPOverload* mp_new(PyTypeObject*, PyObject*, PyObject*) +{ +// Create a new method proxy object. + CPPOverload* pymeth = PyObject_GC_New(CPPOverload, &CPPOverload_Type); + pymeth->fSelf = nullptr; + pymeth->fMethodInfo = new CPPOverload::MethodInfo_t; + + PyObject_GC_Track(pymeth); + return pymeth; +} + +//----------------------------------------------------------------------------- +static void mp_dealloc(CPPOverload* pymeth) +{ +// Deallocate memory held by method proxy object. + PyObject_GC_UnTrack(pymeth); + + if (!IsPseudoFunc(pymeth)) + Py_CLEAR(pymeth->fSelf); + pymeth->fSelf = nullptr; + + if (--(*pymeth->fMethodInfo->fRefCount) <= 0) { + delete pymeth->fMethodInfo; + } + + PyObject_GC_Del(pymeth); +} + +//----------------------------------------------------------------------------- +static Py_ssize_t mp_hash(CPPOverload* pymeth) +{ +// Hash of method proxy object for insertion into dictionaries; with actual +// method (fMethodInfo) shared, its address is best suited. + return _Py_HashPointer(pymeth->fMethodInfo); +} + +//----------------------------------------------------------------------------- +static int mp_traverse(CPPOverload* pymeth, visitproc visit, void* args) +{ +// Garbage collector traverse of held python member objects. + if (pymeth->fSelf && ! IsPseudoFunc(pymeth)) + return visit((PyObject*)pymeth->fSelf, args); + + return 0; +} + +//----------------------------------------------------------------------------- +static int mp_clear(CPPOverload* pymeth) +{ +// Garbage collector clear of held python member objects. + if (!IsPseudoFunc(pymeth)) + Py_CLEAR(pymeth->fSelf); + pymeth->fSelf = nullptr; + + return 0; +} + +//----------------------------------------------------------------------------- +static PyObject* mp_richcompare(CPPOverload* self, CPPOverload* other, int op) +{ +// Rich set of comparison objects; only equals is defined. + if (op != Py_EQ) + return PyType_Type.tp_richcompare((PyObject*)self, (PyObject*)other, op); + +// defined by type + (shared) MethodInfo + bound self, with special case for +// fSelf (i.e. pseudo-function) + if ((Py_TYPE(self) == Py_TYPE(other) && self->fMethodInfo == other->fMethodInfo) && \ + ((IsPseudoFunc(self) && IsPseudoFunc(other)) || self->fSelf == other->fSelf)) { + Py_RETURN_TRUE; + } + Py_RETURN_FALSE; +} + + +//= CPyCppyy method proxy access to internals ================================ +static PyObject* mp_overload(CPPOverload* pymeth, PyObject* sigarg) +{ +// Select and call a specific C++ overload, based on its signature. + if (!CPyCppyy_PyUnicode_Check(sigarg)) { + PyErr_Format(PyExc_TypeError, "__overload__() argument 1 must be string, not %.50s", + sigarg == Py_None ? "None" : Py_TYPE(sigarg)->tp_name); + return nullptr; + } + + PyObject* sig1 = CPyCppyy_PyUnicode_FromFormat("(%s)", CPyCppyy_PyUnicode_AsString(sigarg)); + + CPPOverload::Methods_t& methods = pymeth->fMethodInfo->fMethods; + for (auto& meth : methods) { + + PyObject* sig2 = meth->GetSignature(false); + if (PyObject_RichCompareBool(sig1, sig2, Py_EQ)) { + Py_DECREF(sig2); + + CPPOverload* newmeth = mp_new(nullptr, nullptr, nullptr); + CPPOverload::Methods_t vec; vec.push_back(meth->Clone()); + newmeth->Set(pymeth->fMethodInfo->fName, vec); + + if (pymeth->fSelf && !IsPseudoFunc(pymeth)) { + Py_INCREF(pymeth->fSelf); + newmeth->fSelf = pymeth->fSelf; + } + + Py_DECREF(sig1); + return (PyObject*)newmeth; + } + + Py_DECREF(sig2); + } + + Py_DECREF(sig1); + PyErr_Format(PyExc_LookupError, + "signature \"%s\" not found", CPyCppyy_PyUnicode_AsString(sigarg)); + return nullptr; +} + +//= CPyCppyy method proxy access to internals ================================ +static PyObject* mp_add_overload(CPPOverload* pymeth, PyObject* new_overload) +{ + TPythonCallback* cb = new TPythonCallback(new_overload); + pymeth->AddMethod(cb); + Py_RETURN_NONE; +} + +static PyMethodDef mp_methods[] = { + {(char*)"__overload__", (PyCFunction)mp_overload, METH_O, + (char*)"select overload for dispatch" }, + {(char*)"__add_overload__", (PyCFunction)mp_add_overload, METH_O, + (char*)"add a new overload" }, + {(char*)nullptr, nullptr, 0, nullptr } +}; + +} // unnamed namespace + + +//= CPyCppyy method proxy type =============================================== +PyTypeObject CPPOverload_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.CPPOverload", // tp_name + sizeof(CPPOverload), // tp_basicsize + 0, // tp_itemsize + (destructor)mp_dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + (hashfunc)mp_hash, // tp_hash + (ternaryfunc)mp_call, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, // tp_flags + (char*)"cppyy method proxy (internal)", // tp_doc + (traverseproc)mp_traverse, // tp_traverse + (inquiry)mp_clear, // tp_clear + (richcmpfunc)mp_richcompare, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + mp_methods, // tp_methods + 0, // tp_members + mp_getset, // tp_getset + 0, // tp_base + 0, // tp_dict + (descrgetfunc)mp_descrget, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + (newfunc)mp_new, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy + + +//- public members ----------------------------------------------------------- +void CPyCppyy::CPPOverload::Set(const std::string& name, std::vector& methods) +{ +// Fill in the data of a freshly created method proxy. + fMethodInfo->fName = name; + fMethodInfo->fMethods.swap(methods); + fMethodInfo->fFlags &= ~CallContext::kIsSorted; + fMethodInfo->fFlags |= CallContext::kManageSmartPtr; + +// special case: all constructors are considered creators by default + if (name == "__init__") + fMethodInfo->fFlags |= (CallContext::kIsCreator | CallContext::kIsConstructor); + +// special case, in heuristics mode also tag *Clone* methods as creators + if (CallContext::sMemoryPolicy == CallContext::kUseHeuristics && \ + name.find("Clone") != std::string::npos) + fMethodInfo->fFlags |= CallContext::kIsCreator; +} + +//----------------------------------------------------------------------------- +void CPyCppyy::CPPOverload::AddMethod(PyCallable* pc) +{ +// Fill in the data of a freshly created method proxy. + fMethodInfo->fMethods.push_back(pc); + fMethodInfo->fFlags &= ~CallContext::kIsSorted; +} + +//----------------------------------------------------------------------------- +void CPyCppyy::CPPOverload::AddMethod(CPPOverload* meth) +{ + fMethodInfo->fMethods.insert(fMethodInfo->fMethods.end(), + meth->fMethodInfo->fMethods.begin(), meth->fMethodInfo->fMethods.end()); + fMethodInfo->fFlags &= ~CallContext::kIsSorted; +} + +//----------------------------------------------------------------------------- +CPyCppyy::CPPOverload::MethodInfo_t::~MethodInfo_t() +{ +// Destructor (this object is reference counted). + for (Methods_t::iterator it = fMethods.begin(); it != fMethods.end(); ++it) { + delete *it; + } + fMethods.clear(); + delete fRefCount; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.h new file mode 100644 index 0000000000000..ae9845b300eb7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPOverload.h @@ -0,0 +1,88 @@ +#ifndef CPYCPPYY_CPPOVERLOAD_H +#define CPYCPPYY_CPPOVERLOAD_H + +// Bindings +#include "PyCallable.h" + +// Standard +#include +#include +#include + + +namespace CPyCppyy { + +class CPPOverload { +public: + typedef std::map DispatchMap_t; + typedef std::vector Methods_t; + + struct MethodInfo_t { + MethodInfo_t() : fFlags(CallContext::kNone) { fRefCount = new int(1); } + ~MethodInfo_t(); + + std::string fName; + CPPOverload::DispatchMap_t fDispatchMap; + CPPOverload::Methods_t fMethods; + uint64_t fFlags; + + int* fRefCount; + + private: + MethodInfo_t(const MethodInfo_t&) = delete; + MethodInfo_t& operator=(const MethodInfo_t&) = delete; + }; + +public: + void Set(const std::string& name, std::vector& methods); + + const std::string& GetName() const { return fMethodInfo->fName; } + void AddMethod(PyCallable* pc); + void AddMethod(CPPOverload* meth); + +public: // public, as the python C-API works with C structs + PyObject_HEAD + CPPInstance* fSelf; // must be first (same layout as TemplateProxy) + MethodInfo_t* fMethodInfo; + +private: + CPPOverload() = delete; +}; + + +//- method proxy type and type verification ---------------------------------- +extern PyTypeObject CPPOverload_Type; + +template +inline bool CPPOverload_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &CPPOverload_Type); +} + +template +inline bool CPPOverload_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &CPPOverload_Type; +} + +//- creation ----------------------------------------------------------------- +inline CPPOverload* CPPOverload_New( + const std::string& name, std::vector& methods) +{ +// Create and initialize a new method proxy from the overloads. + CPPOverload* pymeth = (CPPOverload*)CPPOverload_Type.tp_new(&CPPOverload_Type, nullptr, nullptr); + pymeth->Set(name, methods); + return pymeth; +} + +inline CPPOverload* CPPOverload_New(const std::string& name, PyCallable* method) +{ +// Create and initialize a new method proxy from the method. + std::vector p; + p.push_back(method); + return CPPOverload_New(name, p); +} + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPOVERLOAD_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.cxx new file mode 100644 index 0000000000000..4dd0664505c35 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.cxx @@ -0,0 +1,394 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPScope.h" +#include "CPPDataMember.h" +#include "CPPFunction.h" +#include "CPPOverload.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" +#include "TemplateProxy.h" +#include "TypeManip.h" +#include "Utility.h" + +// Standard +#include +#include // for for_each +#include +#include +#include + + +namespace CPyCppyy { + +extern PyTypeObject CPPInstance_Type; + +//= CPyCppyy type proxy construction/destruction ============================= +static PyObject* meta_alloc(PyTypeObject* metatype, Py_ssize_t nitems) +{ + return PyType_Type.tp_alloc(metatype, nitems); +} + +//---------------------------------------------------------------------------- +static void meta_dealloc(CPPScope* metatype) +{ + delete metatype->fCppObjects; metatype->fCppObjects = nullptr; + free(metatype->fModuleName); + return PyType_Type.tp_dealloc((PyObject*)metatype); +} + +//----------------------------------------------------------------------------- +static PyObject* meta_getcppname(CPPScope* meta, void*) +{ + if ((void*)meta == (void*)&CPPInstance_Type) + return CPyCppyy_PyUnicode_FromString("CPPInstance_Type"); + return CPyCppyy_PyUnicode_FromString(Cppyy::GetScopedFinalName(meta->fCppType).c_str()); +} + +//----------------------------------------------------------------------------- +static PyObject* meta_getmodule(CPPScope* meta, void*) +{ + if ((void*)meta == (void*)&CPPInstance_Type) + return CPyCppyy_PyUnicode_FromString("cppyy.gbl"); + + if (meta->fModuleName) + return CPyCppyy_PyUnicode_FromString(meta->fModuleName); + + std::string modname = Cppyy::GetScopedFinalName(meta->fCppType); + std::string::size_type pos1 = modname.rfind("::"); + if (modname.empty() || pos1 == std::string::npos) + return CPyCppyy_PyUnicode_FromString(const_cast("cppyy.gbl")); + + PyObject* pymodule = nullptr; + std::string::size_type pos2 = modname.rfind("::", pos1-1); + pos2 = (pos2 == std::string::npos) ? 0 : pos2 + 2; + PyObject* pyscope = CPyCppyy::GetScopeProxy(Cppyy::GetScope(modname.substr(0, pos1))); + if (pyscope) { + pymodule = PyObject_GetAttr(pyscope, PyStrings::gModule); + CPyCppyy_PyUnicode_AppendAndDel(&pymodule, + CPyCppyy_PyUnicode_FromString(('.'+modname.substr(pos2, pos1-pos2)).c_str())); + + Py_DECREF(pyscope); + } + + if (pymodule) + return pymodule; + PyErr_Clear(); + + TypeManip::cppscope_to_pyscope(modname); + return CPyCppyy_PyUnicode_FromString(("cppyy.gbl."+modname.substr(0, pos1)).c_str()); +} + +//----------------------------------------------------------------------------- +static int meta_setmodule(CPPScope* meta, PyObject* value, void*) +{ + if ((void*)meta == (void*)&CPPInstance_Type) { + PyErr_SetString(PyExc_AttributeError, + "attribute \'__module__\' of 'cppyy.CPPScope\' objects is not writable"); + return -1; + } + + const char* newname = CPyCppyy_PyUnicode_AsStringChecked(value); + if (!value) + return -1; + + free(meta->fModuleName); + Py_ssize_t sz = CPyCppyy_PyUnicode_GET_SIZE(value); + meta->fModuleName = (char*)malloc(sz+1); + memcpy(meta->fModuleName, newname, sz+1); + + return 0; +} + +//---------------------------------------------------------------------------- +static PyObject* meta_repr(CPPScope* metatype) +{ +// Specialized b/c type_repr expects __module__ to live in the dictionary, +// whereas it is a property (to save memory). + if ((void*)metatype == (void*)&CPPInstance_Type) + return CPyCppyy_PyUnicode_FromFormat( + const_cast(""), metatype); + + PyObject* modname = meta_getmodule(metatype, nullptr); + std::string clName = Cppyy::GetFinalName(metatype->fCppType); + const char* kind = Cppyy::IsNamespace(metatype->fCppType) ? "namespace" : "class"; + + PyObject* repr = CPyCppyy_PyUnicode_FromFormat("<%s %s.%s at %p>", + kind, CPyCppyy_PyUnicode_AsString(modname), clName.c_str(), metatype); + + Py_DECREF(modname); + return repr; +} + + +//= CPyCppyy type metaclass behavior ========================================= +static PyObject* pt_new(PyTypeObject* subtype, PyObject* args, PyObject* kwds) +{ +// Called when CPPScope acts as a metaclass; since type_new always resets +// tp_alloc, and since it does not call tp_init on types, the metaclass is +// being fixed up here, and the class is initialized here as well. + +// fixup of metaclass (left permanent, and in principle only called once b/c +// cppyy caches python classes) + subtype->tp_alloc = (allocfunc)meta_alloc; + subtype->tp_dealloc = (destructor)meta_dealloc; + +// creation of the python-side class + CPPScope* result = (CPPScope*)PyType_Type.tp_new(subtype, args, kwds); + if (!result) + return nullptr; + + result->fCppObjects = new CppToPyMap_t; + result->fModuleName = nullptr; + +// initialization of class (based on metatype) + const char* mp = strstr(subtype->tp_name, "_meta"); + if (!mp || !CPPScope_CheckExact(subtype)) { + // there has been a user meta class override in a derived class, so do + // the consistent thing, thus allowing user control over naming + result->fCppType = Cppyy::GetScope( + CPyCppyy_PyUnicode_AsString(PyTuple_GET_ITEM(args, 0))); + } else { + // coming here from cppyy or from sub-classing in python; take the + // C++ type from the meta class to make sure that the latter category + // has fCppType properly set (it inherits the meta class, but has an + // otherwise unknown (or wrong) C++ type) + result->fCppType = ((CPPScope*)subtype)->fCppType; + } + + return (PyObject*)result; +} + +//---------------------------------------------------------------------------- +static PyObject* meta_getattro(PyObject* pyclass, PyObject* pyname) +{ +// normal type-based lookup + PyObject* attr = PyType_Type.tp_getattro(pyclass, pyname); + if (attr || pyclass == (PyObject*)&CPPInstance_Type) + return attr; + + if (!CPyCppyy_PyUnicode_CheckExact(pyname) || !CPPScope_Check(pyclass)) + return nullptr; + +// filter for python specials + std::string name = CPyCppyy_PyUnicode_AsString(pyname); + if (name.size() >= 2 && name.compare(0, 2, "__") == 0 && + name.compare(name.size()-2, name.size(), "__") == 0) + return nullptr; + +// more elaborate search in case of failure (eg. for inner classes on demand) + std::vector errors; + Utility::FetchError(errors); + attr = CreateScopeProxy(name, pyclass); + + if (!attr) { + Utility::FetchError(errors); + Cppyy::TCppScope_t scope = ((CPPScope*)pyclass)->fCppType; + + // namespaces may have seen updates in their list of global functions, which + // are available as "methods" even though they're not really that + if (Cppyy::IsNamespace(scope)) { + // tickle lazy lookup of functions + const std::vector methods = + Cppyy::GetMethodIndicesFromName(scope, name); + if (!methods.empty()) { + // function exists, now collect overloads + std::vector overloads; + for (auto idx : methods) { + overloads.push_back( + new CPPFunction(scope, Cppyy::GetMethod(scope, idx))); + } + + // Note: can't re-use Utility::AddClass here, as there's the risk of + // a recursive call. Simply add method directly, as we're guaranteed + // that it doesn't exist yet. + attr = (PyObject*)CPPOverload_New(name, overloads); + + // If both templated and not, the templated one needs to be user-facing + // in order to expose the instantiation mechanims. + if (Cppyy::ExistsMethodTemplate(scope, name)) { + TemplateProxy* pytmpl = TemplateProxy_New(name, name, pyclass); + pytmpl->AddOverload((CPPOverload*)attr); + attr = (PyObject*)pytmpl; + } + } + + // tickle lazy lookup of data members + if (!attr) { + Cppyy::TCppIndex_t dmi = Cppyy::GetDatamemberIndex(scope, name); + if (0 <= dmi) attr = (PyObject*)CPPDataMember_New(scope, dmi); + } + } + + // function templates that have not been instantiated + if (!attr && Cppyy::ExistsMethodTemplate(scope, name)) { + attr = (PyObject*)TemplateProxy_New(name, name, pyclass); + } else { + // for completeness in error reporting + PyErr_Format(PyExc_TypeError, "\'%s\' is not a known C++ template", name.c_str()); + Utility::FetchError(errors); + } + + // enums types requested as type (rather than the constants) + // TODO: IsEnum should deal with the scope, using klass->GetListOfEnums()->FindObject() + if (!attr && Cppyy::IsEnum(scope == Cppyy::gGlobalScope ? name : Cppyy::GetScopedFinalName(scope)+"::"+name)) { + // special case; enum types; for now, pretend int + // TODO: although fine for C++98, this isn't correct in C++11 + Py_INCREF(&PyInt_Type); + attr = (PyObject*)&PyInt_Type; + } else { + // for completeness in error reporting + PyErr_Format(PyExc_TypeError, "\'%s\' is not a known C++ enum", name.c_str()); + Utility::FetchError(errors); + } + + if (attr) { + // cache the result + if (CPPDataMember_Check(attr)) { + PyObject_SetAttr((PyObject*)Py_TYPE(pyclass), pyname, attr); + Py_DECREF(attr); + attr = PyType_Type.tp_getattro(pyclass, pyname); + } else + PyObject_SetAttr(pyclass, pyname, attr); + + } else { + Utility::FetchError(errors); + } + } + + if (attr) + std::for_each(errors.begin(), errors.end(), Utility::PyError_t::Clear); + else { + // not found: prepare a full error report + PyObject* topmsg = nullptr; + PyObject* sklass = PyObject_Str(pyclass); + if (sklass) { + topmsg = CPyCppyy_PyUnicode_FromFormat("%s has no attribute \'%s\'. Full details:", + CPyCppyy_PyUnicode_AsString(sklass), CPyCppyy_PyUnicode_AsString(pyname)); + Py_DECREF(sklass); + } else { + topmsg = CPyCppyy_PyUnicode_FromFormat("no such attribute \'%s\'. Full details:", + CPyCppyy_PyUnicode_AsString(pyname)); + } + SetDetailedException(errors, topmsg /* steals */, PyExc_AttributeError /* default error */); + } + + return attr; +} + + +//---------------------------------------------------------------------------- +// p2.7 does not have a __dir__ in object, and object.__dir__ in p3 does not +// quite what I'd expected of it, so the following pulls in the internal code +#include "PyObjectDir27.inc" + +static PyObject* meta_dir(CPPScope* klass) +{ +// Collect a list of everything (currently) available in the namespace. +// The backend can filter by returning empty strings. Special care is +// taken for functions, which need not be unique (overloading). + using namespace Cppyy; + + if ((void*)klass == (void*)&CPPInstance_Type) + return PyList_New(0); + + if (!CPyCppyy::CPPScope_Check((PyObject*)klass)) { + PyErr_SetString(PyExc_TypeError, "C++ proxy scope expected"); + return nullptr; + } + + PyObject* dirlist = _generic_dir((PyObject*)klass); + if (!IsNamespace(klass->fCppType)) + return dirlist; + + std::set cppnames; + Cppyy::GetAllCppNames(klass->fCppType, cppnames); + +// get rid of duplicates + for (Py_ssize_t i = 0; i < PyList_GET_SIZE(dirlist); ++i) + cppnames.insert(CPyCppyy_PyUnicode_AsString(PyList_GET_ITEM(dirlist, i))); + + Py_DECREF(dirlist); + dirlist = PyList_New(cppnames.size()); + +// copy total onto python list + Py_ssize_t i = 0; + for (const auto& name : cppnames) { + PyList_SET_ITEM(dirlist, i++, CPyCppyy_PyUnicode_FromString(name.c_str())); + } + return dirlist; +} + +//----------------------------------------------------------------------------- +static PyMethodDef meta_methods[] = { + {(char*)"__dir__", (PyCFunction)meta_dir, METH_NOARGS, nullptr}, + {(char*)nullptr, nullptr, 0, nullptr} +}; + + +//----------------------------------------------------------------------------- +static PyGetSetDef meta_getset[] = { + {(char*)"__cppname__", (getter)meta_getcppname, nullptr, nullptr, nullptr}, + {(char*)"__module__", (getter)meta_getmodule, (setter)meta_setmodule, nullptr, nullptr}, + {(char*)nullptr, nullptr, nullptr, nullptr, nullptr} +}; + + +//= CPyCppyy object proxy type type ========================================== +PyTypeObject CPPScope_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.CPPScope", // tp_name + sizeof(CPyCppyy::CPPScope), // tp_basicsize + 0, // tp_itemsize + 0, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + (reprfunc)meta_repr, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + (getattrofunc)meta_getattro, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, // tp_flags + (char*)"CPyCppyy metatype (internal)", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + meta_methods, // tp_methods + 0, // tp_members + meta_getset, // tp_getset + &PyType_Type, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + (newfunc)pt_new, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.h new file mode 100644 index 0000000000000..f707fdfb12846 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPScope.h @@ -0,0 +1,66 @@ +#ifndef CPYCPPYY_CPPSCOPE_H +#define CPYCPPYY_CPPSCOPE_H + +#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION == 2 + +// In p2.2, PyHeapTypeObject is not yet part of the interface +#include "structmember.h" + +typedef struct { + PyTypeObject type; + PyNumberMethods as_number; + PySequenceMethods as_sequence; + PyMappingMethods as_mapping; + PyBufferProcs as_buffer; + PyObject *name, *slots; + PyMemberDef members[1]; +} PyHeapTypeObject; + +#endif + +// Standard +#include + + +namespace CPyCppyy { + +/** Type object to hold class reference (this is only semantically a presentation + of CPPScope instances, not in a C++ sense) + @author WLAV + @date 07/06/2017 + @version 2.0 + */ + +typedef std::map CppToPyMap_t; + +class CPPScope { +public: + PyHeapTypeObject fType; + Cppyy::TCppType_t fCppType; + CppToPyMap_t* fCppObjects; + char* fModuleName; + +private: + CPPScope() = delete; +}; + +typedef CPPScope CPPClass; + +//- metatype type and type verification -------------------------------------- +extern PyTypeObject CPPScope_Type; + +template +inline bool CPPScope_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &CPPScope_Type); +} + +template +inline bool CPPScope_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &CPPScope_Type; +} + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPSCOPE_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.cxx new file mode 100644 index 0000000000000..1f94abfbd5396 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.cxx @@ -0,0 +1,73 @@ +// Bindings +#include "CPyCppyy.h" +#include "CPPSetItem.h" +#include "Executors.h" + + +//- protected members --------------------------------------------------------- +bool CPyCppyy::CPPSetItem::InitExecutor_(Executor*& executor, CallContext*) +{ +// basic call will do + if (!CPPMethod::InitExecutor_(executor)) + return false; + +// check to make sure we're dealing with a RefExecutor + if (!dynamic_cast(executor)) { + PyErr_Format(PyExc_NotImplementedError, + "no __setitem__ handler for return type (%s)", + this->GetReturnTypeName().c_str()); + return false; + } + + return true; +} + +//----------------------------------------------------------------------------- +PyObject* CPyCppyy::CPPSetItem::PreProcessArgs( + CPPInstance*& self, PyObject* args, PyObject* kwds) +{ +// Prepare executor with a buffer for the return value. + int nArgs = PyTuple_GET_SIZE(args); + if (nArgs <= 1) { + PyErr_SetString(PyExc_TypeError, "insufficient arguments to __setitem__"); + return nullptr; + } + +// strip the last element of args to be used on return + ((RefExecutor*)this->GetExecutor())->SetAssignable(PyTuple_GET_ITEM(args, nArgs-1)); + PyObject* subset = PyTuple_GetSlice(args, 0, nArgs-1); + +// see whether any of the arguments is a tuple itself + Py_ssize_t realsize = 0; + for (int i = 0; i < nArgs - 1; ++i) { + PyObject* item = PyTuple_GetItem(subset, i); + realsize += PyTuple_Check(item) ? PyTuple_GET_SIZE(item) : 1; + } + +// unroll any tuples, if present in the arguments + PyObject* unrolled = 0; + if (realsize != nArgs-1) { + unrolled = PyTuple_New(realsize); + + int current = 0; + for (int i = 0; i < nArgs - 1; ++i, ++current) { + PyObject* item = PyTuple_GetItem(subset, i); + if (PyTuple_Check(item)) { + for (int j = 0; j < PyTuple_GET_SIZE(item); ++j, ++current) { + PyObject* subitem = PyTuple_GetItem(item, j); + Py_INCREF(subitem); + PyTuple_SetItem(unrolled, current, subitem); + } + } else { + Py_INCREF(item); + PyTuple_SetItem(unrolled, current, item); + } + } + } + +// actual call into C++ + PyObject* result = CPPMethod::PreProcessArgs(self, unrolled ? unrolled : subset, kwds); + Py_XDECREF(unrolled); + Py_DECREF(subset); + return result; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.h new file mode 100644 index 0000000000000..fe2dea75aa8ab --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPPSetItem.h @@ -0,0 +1,24 @@ +#ifndef CPYCPPYY_CPPSETITEM_H +#define CPYCPPYY_CPPSETITEM_H + +// Bindings +#include "CPPMethod.h" + + +namespace CPyCppyy { + +class CPPSetItem : public CPPMethod { +public: + using CPPMethod::CPPMethod; + +public: + virtual PyCallable* Clone() { return new CPPSetItem(*this); } + virtual PyObject* PreProcessArgs(CPPInstance*& self, PyObject* args, PyObject* kwds); + +protected: + virtual bool InitExecutor_(Executor*&, CallContext* ctxt = nullptr); +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CPPSETITEM_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyy.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyy.h new file mode 100644 index 0000000000000..c63c4f4aa5af3 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyy.h @@ -0,0 +1,253 @@ +#ifndef CPYCPPYY_CPYCPPYY_H +#define CPYCPPYY_CPYCPPYY_H + +#ifdef _WIN32 +// Disable warning C4275: non dll-interface class +#pragma warning (disable : 4275) +// Disable warning C4251: needs to have dll-interface to be used by clients +#pragma warning (disable : 4251) +// Disable warning C4800: 'int' : forcing value to bool +#pragma warning (disable : 4800) +// Avoid that pyconfig.h decides using a #pragma what library python library to use +//#define MS_NO_COREDLL 1 +#endif + +// to prevent problems with fpos_t and redefinition warnings +#if defined(linux) + +#include + +#ifdef _POSIX_C_SOURCE +#undef _POSIX_C_SOURCE +#endif + +#ifdef _FILE_OFFSET_BITS +#undef _FILE_OFFSET_BITS +#endif + +#ifdef _XOPEN_SOURCE +#undef _XOPEN_SOURCE +#endif + +#endif // linux + + +#include "Python.h" +#include + +// selected ROOT types from RtypesCore.h +#ifdef R__INT16 +typedef long Int_t; //Signed integer 4 bytes +typedef unsigned long UInt_t; //Unsigned integer 4 bytes +#else +typedef int Int_t; //Signed integer 4 bytes (int) +typedef unsigned int UInt_t; //Unsigned integer 4 bytes (unsigned int) +#endif +#ifdef R__B64 // Note: Long_t and ULong_t are currently not portable types +typedef long Long_t; //Signed long integer 8 bytes (long) +typedef unsigned long ULong_t; //Unsigned long integer 8 bytes (unsigned long) +#else +typedef long Long_t; //Signed long integer 4 bytes (long) +typedef unsigned long ULong_t; //Unsigned long integer 4 bytes (unsigned long) +#endif +typedef float Float16_t; //Float 4 bytes written with a truncated mantissa +typedef double Double32_t; //Double 8 bytes in memory, written as a 4 bytes float +typedef long double LongDouble_t;//Long Double +#if defined(R__WIN32) && !defined(__CINT__) +typedef __int64 Long64_t; //Portable signed long integer 8 bytes +typedef unsigned __int64 ULong64_t; //Portable unsigned long integer 8 bytes +#else +typedef long long Long64_t; //Portable signed long integer 8 bytes +typedef unsigned long long ULong64_t;//Portable unsigned long integer 8 bytes +#endif + + +// for 3.3 support +#if PY_VERSION_HEX < 0x03030000 + typedef PyDictEntry* (*dict_lookup_func)(PyDictObject*, PyObject*, long); +#else +#if PY_VERSION_HEX >= 0x03060000 + typedef Py_ssize_t (*dict_lookup_func)( + PyDictObject*, PyObject*, Py_hash_t, PyObject***, Py_ssize_t*); +#else + struct PyDictKeyEntry; + typedef PyDictKeyEntry* (*dict_lookup_func)(PyDictObject*, PyObject*, Py_hash_t, PyObject***); +#define PyDictEntry PyDictKeyEntry +#endif +#endif + +// for 3.0 support (backwards compatibility, really) +#if PY_VERSION_HEX < 0x03000000 +#define PyBytes_Check PyString_Check +#define PyBytes_CheckExact PyString_CheckExact +#define PyBytes_AS_STRING PyString_AS_STRING +#define PyBytes_AsString PyString_AsString +#define PyBytes_GET_SIZE PyString_GET_SIZE +#define PyBytes_Size PyString_Size +#define PyBytes_FromFormat PyString_FromFormat +#define PyBytes_FromString PyString_FromString +#define PyBytes_FromStringAndSize PyString_FromStringAndSize + +#define PyBytes_Type PyString_Type + +#define CPyCppyy_PyUnicode_Check PyString_Check +#define CPyCppyy_PyUnicode_CheckExact PyString_CheckExact +#define CPyCppyy_PyUnicode_AsString PyString_AS_STRING +#define CPyCppyy_PyUnicode_AsStringChecked PyString_AsString +#define CPyCppyy_PyUnicode_GET_SIZE PyString_GET_SIZE +#define CPyCppyy_PyUnicode_GetSize PyString_Size +#define CPyCppyy_PyUnicode_FromFormat PyString_FromFormat +#define CPyCppyy_PyUnicode_FromString PyString_FromString +#define CPyCppyy_PyUnicode_InternFromString PyString_InternFromString +#define CPyCppyy_PyUnicode_Append PyString_Concat +#define CPyCppyy_PyUnicode_AppendAndDel PyString_ConcatAndDel +#define CPyCppyy_PyUnicode_FromStringAndSize PyString_FromStringAndSize + +#define CPyCppyy_PyUnicode_Type PyString_Type + +static inline PyObject* CPyCppyy_PyCapsule_New( + void* cobj, const char* /* name */, void (*destr)(void*)) +{ + return PyCObject_FromVoidPtr(cobj, destr); +} +#define CPyCppyy_PyCapsule_CheckExact PyCObject_Check +static inline void* CPyCppyy_PyCapsule_GetPointer(PyObject* capsule, const char* /* name */) +{ + return (void*)PyCObject_AsVoidPtr(capsule); +} + +#define CPPYY__long__ "__long__" +#define CPPYY__idiv__ "__idiv__" +#define CPPYY__div__ "__div__" +#define CPPYY__next__ "next" + +#endif // ! 3.0 + +// for 3.0 support (backwards compatibility, really) +#if PY_VERSION_HEX >= 0x03000000 +#define CPyCppyy_PyUnicode_Check PyUnicode_Check +#define CPyCppyy_PyUnicode_CheckExact PyUnicode_CheckExact +#define CPyCppyy_PyUnicode_AsString _PyUnicode_AsString +#define CPyCppyy_PyUnicode_AsStringChecked _PyUnicode_AsString +#define CPyCppyy_PyUnicode_GetSize PyUnicode_GetSize +#define CPyCppyy_PyUnicode_GET_SIZE PyUnicode_GET_SIZE +#define CPyCppyy_PyUnicode_FromFormat PyUnicode_FromFormat +#define CPyCppyy_PyUnicode_FromString PyUnicode_FromString +#define CPyCppyy_PyUnicode_InternFromString PyUnicode_InternFromString +#define CPyCppyy_PyUnicode_Append PyUnicode_Append +#define CPyCppyy_PyUnicode_AppendAndDel PyUnicode_AppendAndDel +#define CPyCppyy_PyUnicode_FromStringAndSize PyUnicode_FromStringAndSize + +#define CPyCppyy_PyUnicode_Type PyUnicode_Type + +#define PyIntObject PyLongObject +#define PyInt_Check PyLong_Check +#define PyInt_AsLong PyLong_AsLong +#define PyInt_AS_LONG PyLong_AsLong +#define PyInt_AsSsize_t PyLong_AsSsize_t +#define PyInt_CheckExact PyLong_CheckExact +#define PyInt_FromLong PyLong_FromLong +#define PyInt_FromSsize_t PyLong_FromSsize_t + +#define PyInt_Type PyLong_Type + +#define CPyCppyy_PyCapsule_New PyCapsule_New +#define CPyCppyy_PyCapsule_CheckExact PyCapsule_CheckExact +#define CPyCppyy_PyCapsule_GetPointer PyCapsule_GetPointer + +#define CPPYY__long__ "__int__" +#define CPPYY__idiv__ "__itruediv__" +#define CPPYY__div__ "__truediv__" +#define CPPYY__next__ "__next__" + +#define Py_TPFLAGS_HAVE_RICHCOMPARE 0 +#define Py_TPFLAGS_CHECKTYPES 0 + +#define PyClass_Check PyType_Check + +#define PyBuffer_Type PyMemoryView_Type +#endif // ! 3.0 + +#if PY_VERSION_HEX >= 0x03020000 +#define CPyCppyy_PySliceCast PyObject* +#else +#define CPyCppyy_PySliceCast PySliceObject* +#endif // >= 3.2 + +// feature of 3.0 not in 2.5 and earlier +#if PY_VERSION_HEX < 0x02060000 +#define PyVarObject_HEAD_INIT(type, size) \ + PyObject_HEAD_INIT(type) size, +#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) +#endif + +// backwards compatibility, pre python 2.5 +#if PY_VERSION_HEX < 0x02050000 +typedef int Py_ssize_t; +#define PyInt_AsSsize_t PyInt_AsLong +#define PyInt_FromSsize_t PyInt_FromLong +# define PY_SSIZE_T_FORMAT "%d" +# if !defined(PY_SSIZE_T_MIN) +# define PY_SSIZE_T_MAX INT_MAX +# define PY_SSIZE_T_MIN INT_MIN +# endif +#define ssizeobjargproc intobjargproc +#define lenfunc inquiry +#define ssizeargfunc intargfunc + +#define PyIndex_Check(obj) \ + (PyInt_Check(obj) || PyLong_Check(obj)) + +inline Py_ssize_t PyNumber_AsSsize_t(PyObject* obj, PyObject*) { + return (Py_ssize_t)PyLong_AsLong(obj); +} + +#else +# ifdef R__MACOSX +# if SIZEOF_SIZE_T == SIZEOF_INT +# if defined(MAC_OS_X_VERSION_10_4) +# define PY_SSIZE_T_FORMAT "%ld" +# else +# define PY_SSIZE_T_FORMAT "%d" +# endif +# elif SIZEOF_SIZE_T == SIZEOF_LONG +# define PY_SSIZE_T_FORMAT "%ld" +# endif +# else +# define PY_SSIZE_T_FORMAT "%zd" +# endif +#endif + +#if PY_VERSION_HEX < 0x02020000 +#define PyBool_FromLong PyInt_FromLong +#endif + +#if PY_VERSION_HEX < 0x03000000 +// the following should quiet Solaris +#ifdef Py_False +#undef Py_False +#define Py_False ((PyObject*)(void*)&_Py_ZeroStruct) +#endif + +#ifdef Py_True +#undef Py_True +#define Py_True ((PyObject*)(void*)&_Py_TrueStruct) +#endif +#endif + +#ifndef Py_RETURN_NONE +#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None +#endif + +#ifndef Py_RETURN_TRUE +#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True +#endif + +#ifndef Py_RETURN_FALSE +#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False +#endif + +// C++ version of the cppyy API +#include "Cppyy.h" + +#endif // !CPYCPPYY_CPYCPPYY_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyyModule.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyyModule.cxx new file mode 100644 index 0000000000000..35dc460281b31 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CPyCppyyModule.cxx @@ -0,0 +1,840 @@ +// Bindings +#include "CPyCppyy.h" +#include "CallContext.h" +#include "CPPDataMember.h" +#include "CPPInstance.h" +#include "CPPOverload.h" +#include "CPPScope.h" +#include "CustomPyTypes.h" +#include "LowLevelViews.h" +#include "MemoryRegulator.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" +#include "TemplateProxy.h" +#include "TupleOfInstances.h" +#include "Utility.h" + +// Standard +#include +#include +#include +#include +#include +#include +#include + + +//- from Python's dictobject.c ------------------------------------------------- +#if PY_VERSION_HEX >= 0x03030000 + typedef struct PyDictKeyEntry { + /* Cached hash code of me_key. */ + Py_hash_t me_hash; + PyObject *me_key; + PyObject *me_value; /* This field is only meaningful for combined tables */ + } PyDictEntry; + + typedef struct _dictkeysobject { + Py_ssize_t dk_refcnt; + Py_ssize_t dk_size; + dict_lookup_func dk_lookup; + Py_ssize_t dk_usable; +#if PY_VERSION_HEX >= 0x03060000 + Py_ssize_t dk_nentries; + union { + int8_t as_1[8]; + int16_t as_2[4]; + int32_t as_4[2]; +#if SIZEOF_VOID_P > 4 + int64_t as_8[1]; +#endif + } dk_indices; +#else + PyDictKeyEntry dk_entries[1]; +#endif + } PyDictKeysObject; + +#define CPYCPPYY_GET_DICT_LOOKUP(mp) \ + ((dict_lookup_func&)mp->ma_keys->dk_lookup) + +#else + +#define CPYCPPYY_GET_DICT_LOOKUP(mp) \ + ((dict_lookup_func&)mp->ma_lookup) + +#endif + +//- data ----------------------------------------------------------------------- +static PyObject* nullptr_repr(PyObject*) +{ + return CPyCppyy_PyUnicode_FromString("nullptr"); +} + +static void nullptr_dealloc(PyObject*) +{ + Py_FatalError("deallocating nullptr"); +} + +static int nullptr_nonzero(PyObject*) +{ + return 0; +} + +static PyNumberMethods nullptr_as_number = { + 0, 0, 0, +#if PY_VERSION_HEX < 0x03000000 + 0, +#endif + 0, 0, 0, 0, 0, 0, + (inquiry)nullptr_nonzero, // tp_nonzero (nb_bool in p3) + 0, 0, 0, 0, 0, 0, +#if PY_VERSION_HEX < 0x03000000 + 0, // nb_coerce +#endif + 0, 0, 0, +#if PY_VERSION_HEX < 0x03000000 + 0, 0, +#endif + 0, 0, 0, +#if PY_VERSION_HEX < 0x03000000 + 0, // nb_inplace_divide +#endif + 0, 0, 0, 0, 0, 0, 0 +#if PY_VERSION_HEX >= 0x02020000 + , 0 // nb_floor_divide +#if PY_VERSION_HEX < 0x03000000 + , 0 // nb_true_divide +#else + , 0 // nb_true_divide +#endif + , 0, 0 +#endif +#if PY_VERSION_HEX >= 0x02050000 + , 0 // nb_index +#endif +#if PY_VERSION_HEX >= 0x03050000 + , 0 // nb_matrix_multiply + , 0 // nb_inplace_matrix_multiply +#endif +}; + +static PyTypeObject PyNullPtr_t_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + "nullptr_t", // tp_name + sizeof(PyObject), // tp_basicsize + 0, // tp_itemsize + nullptr_dealloc, // tp_dealloc (never called) + 0, 0, 0, 0, + nullptr_repr, // tp_repr + &nullptr_as_number, // tp_as_number + 0, 0, + (hashfunc)_Py_HashPointer, // tp_hash + 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +namespace { + +PyObject _CPyCppyy_NullPtrStruct = { + _PyObject_EXTRA_INIT + 1, &PyNullPtr_t_Type +}; + +} // unnamed namespace + +namespace CPyCppyy { + PyObject* gThisModule = nullptr; + PyObject* gNullPtrObject = nullptr; + std::map> gPythonizations; + std::set gPinnedTypes; +} + + +//- private helpers ------------------------------------------------------------ +namespace { + +using namespace CPyCppyy; + +//---------------------------------------------------------------------------- +namespace { + +class GblGetter { +public: + GblGetter() { + PyObject* cppyy = PyImport_AddModule((char*)"cppyy"); + fGbl = PyObject_GetAttrString(cppyy, (char*)"gbl"); + } + ~GblGetter() { Py_DECREF(fGbl); } + + PyObject* operator*() { return fGbl; } + +private: + PyObject* fGbl; +}; + +} // unnamed namespace + +#if PY_VERSION_HEX >= 0x03060000 +inline Py_ssize_t OrgDictLookup(PyDictObject* mp, PyObject* key, + Py_hash_t hash, PyObject*** value_addr, Py_ssize_t* hashpos) +{ + return (*gDictLookupOrg)(mp, key, hash, value_addr, hashpos); +} +#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos) \ + OrgDictLookup(mp, key, hash, value_addr, hashpos) + +Py_ssize_t CPyCppyyLookDictString(PyDictObject* mp, PyObject* key, + Py_hash_t hash, PyObject*** value_addr, Py_ssize_t* hashpos) + +#elif PY_VERSION_HEX >= 0x03030000 +inline PyDictKeyEntry* OrgDictLookup( + PyDictObject* mp, PyObject* key, Py_hash_t hash, PyObject*** value_addr) +{ + return (*gDictLookupOrg)(mp, key, hash, value_addr); +} + +#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos) \ + OrgDictLookup(mp, key, hash, value_addr) + +PyDictKeyEntry* CPyCppyyLookDictString( + PyDictObject* mp, PyObject* key, Py_hash_t hash, PyObject*** value_addr) + +#else /* < 3.3 */ + +inline PyDictEntry* OrgDictLookup(PyDictObject* mp, PyObject* key, Long_t hash) +{ + return (*gDictLookupOrg)(mp, key, hash); +} + +#define CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos) \ + OrgDictLookup(mp, key, hash) + +PyDictEntry* CPyCppyyLookDictString(PyDictObject* mp, PyObject* key, Long_t hash) +#endif +{ + static GblGetter gbl; +#if PY_VERSION_HEX >= 0x03060000 + Py_ssize_t ep; +#else + PyDictEntry* ep; +#endif + +// first search dictionary itself + ep = CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos); + if (gDictLookupActive) + return ep; + +#if PY_VERSION_HEX >= 0x03060000 + if (ep >= 0) +#else + if (!ep || (ep->me_key && ep->me_value)) +#endif + return ep; + +// filter for builtins + if (PyDict_GetItem(PyEval_GetBuiltins(), key) != 0) + return ep; + +// normal lookup failed, attempt to get C++ enum/global/class from top-level + gDictLookupActive = true; + +// attempt to get C++ enum/global/class from top-level + PyObject* val = PyObject_GetAttr(*gbl, key); + + if (val) { + // success ... + + if (CPPDataMember_CheckExact(val)) { + // don't want to add to dictionary (the proper place would be the + // dictionary of the (meta)class), but modifying ep will be noticed no + // matter what; just return the actual value and live with the copy in + // the dictionary (mostly, this is correct) + PyObject* actual_val = Py_TYPE(val)->tp_descr_get(val, nullptr, nullptr); + Py_DECREF(val); + val = actual_val; + } + + // add reference to C++ entity in the given dictionary + CPYCPPYY_GET_DICT_LOOKUP(mp) = gDictLookupOrg; // prevent recursion + if (PyDict_SetItem((PyObject*)mp, key, val) == 0) { + ep = CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos); + } else { +#if PY_VERSION_HEX >= 0x03060000 + ep = -1; +#else + ep->me_key = nullptr; + ep->me_value = nullptr; +#endif + } + CPYCPPYY_GET_DICT_LOOKUP(mp) = CPyCppyyLookDictString; // restore + + // done with val + Py_DECREF(val); + } else + PyErr_Clear(); + +#if PY_VERSION_HEX >= 0x03030000 + if (mp->ma_keys->dk_usable <= 0) { + // big risk that this lookup will result in a resize, so force it here + // to be able to reset the lookup function; of course, this is nowhere + // near fool-proof, but should cover interactive usage ... + CPYCPPYY_GET_DICT_LOOKUP(mp) = gDictLookupOrg; + const int maxinsert = 5; + PyObject* buf[maxinsert]; + for (int varmax = 1; varmax <= maxinsert; ++varmax) { + for (int ivar = 0; ivar < varmax; ++ivar) { + buf[ivar] = CPyCppyy_PyUnicode_FromFormat("__CPYCPPYY_FORCE_RESIZE_%d", ivar); + PyDict_SetItem((PyObject*)mp, buf[ivar], Py_None); + } + for (int ivar = 0; ivar < varmax; ++ivar) { + PyDict_DelItem((PyObject*)mp, buf[ivar]); + Py_DECREF(buf[ivar]); + } + if (0 < mp->ma_keys->dk_usable) + break; + } + + // make sure the entry pointer is still valid by re-doing the lookup + ep = CPYCPPYY_ORGDICT_LOOKUP(mp, key, hash, value_addr, hashpos); + + // full reset of all lookup functions + gDictLookupOrg = CPYCPPYY_GET_DICT_LOOKUP(mp); + CPYCPPYY_GET_DICT_LOOKUP(mp) = CPyCppyyLookDictString; // restore + } +#endif + +// stopped calling into the reflection system + gDictLookupActive = false; + return ep; +} + +//---------------------------------------------------------------------------- +PyObject* SetCppLazyLookup(PyObject*, PyObject* args) +{ +// Modify the given dictionary to install the lookup function that also +// tries the global C++ namespace before failing. Called on a module's dictionary, +// this allows for lazy lookups. This works fine for p3.2 and earlier, but should +// not be used beyond interactive code for p3.3 and later b/c resizing causes the +// lookup function to revert to the default (lookdict_unicode_nodummy). + PyDictObject* dict = nullptr; + if (!PyArg_ParseTuple(args, const_cast("O!"), &PyDict_Type, &dict)) + return nullptr; + + CPYCPPYY_GET_DICT_LOOKUP(dict) = CPyCppyyLookDictString; + + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* MakeCppTemplateClass(PyObject*, PyObject* args) +{ +// Create a binding for a templated class instantiation. + +// args is class name + template arguments; build full instantiation + Py_ssize_t nArgs = PyTuple_GET_SIZE(args); + if (nArgs < 2) { + PyErr_Format(PyExc_TypeError, "too few arguments for template instantiation"); + return nullptr; + } + +// build "< type, type, ... >" part of class name (modifies pyname) + const std::string& tmpl_name = + Utility::ConstructTemplateArgs(PyTuple_GET_ITEM(args, 0), args, 1); + if (!tmpl_name.size()) + return nullptr; + + return CreateScopeProxy(tmpl_name); +} + +//---------------------------------------------------------------------------- +void* GetCPPInstanceAddress(PyObject*, PyObject* args) +{ +// Helper to get the address (address-of-address) of various object proxy types. + CPPInstance* pyobj = 0; + PyObject* pyname = 0; + if (PyArg_ParseTuple(args, const_cast("O|O!"), &pyobj, + &CPyCppyy_PyUnicode_Type, &pyname) && CPPInstance_Check(pyobj)) { + + if (pyname != 0) { + // locate property proxy for offset info + CPPDataMember* pyprop = nullptr; + + PyObject* pyclass = PyObject_GetAttr((PyObject*)pyobj, PyStrings::gClass); + + if (pyclass) { + PyObject* dict = PyObject_GetAttr(pyclass, PyStrings::gDict); + pyprop = (CPPDataMember*)PyObject_GetItem(dict, pyname); + Py_DECREF(dict); + } + Py_XDECREF(pyclass); + + if (CPPDataMember_Check(pyprop)) { + // this is an address of a value (i.e. &myobj->prop) + void* addr = (void*)pyprop->GetAddress(pyobj); + Py_DECREF(pyprop); + return addr; + } + + Py_XDECREF(pyprop); + + PyErr_Format(PyExc_TypeError, + "%s is not a valid data member", CPyCppyy_PyUnicode_AsString(pyname)); + return nullptr; + } + + // this is an address of an address (i.e. &myobj, with myobj of type MyObj*) + // note that pyobject->fObject may be null + return (void*)&pyobj->fObject; + } + + PyErr_SetString(PyExc_ValueError, "invalid argument for addressof()"); + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* addressof(PyObject* pyobj, PyObject* args) +{ +// Return object proxy address as a value (cppyy-style), or the same for an array. + void* addr = GetCPPInstanceAddress(pyobj, args); + if (addr) + return PyLong_FromLong(*(ptrdiff_t*)addr); + else if (!PyErr_Occurred()) { + return PyLong_FromLong(0); + } else if (PyTuple_Size(args)) { + PyErr_Clear(); + PyObject* arg0 = PyTuple_GetItem(args, 0); + if (arg0 == gNullPtrObject || (PyInt_Check(arg0) && PyInt_AsLong(arg0) == 0)) + return PyLong_FromLong(0); + Utility::GetBuffer(arg0, '*', 1, addr, false); + if (addr) return PyLong_FromLong((Long_t)addr); + } + +// error message + PyObject* str = PyObject_Str(pyobj); + if (str && CPyCppyy_PyUnicode_Check(str)) + PyErr_Format(PyExc_TypeError, "unknown object %s", PyBytes_AS_STRING(str)); + else + PyErr_Format(PyExc_TypeError, "unknown object at %p", (void*)pyobj); + Py_XDECREF(str); + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* AsCObject(PyObject* dummy, PyObject* args) +{ +// Return object proxy as an opaque CObject. + void* addr = GetCPPInstanceAddress(dummy, args); + if (addr) + return CPyCppyy_PyCapsule_New((void*)(*(Long_t*)addr), nullptr, nullptr); + + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* BindObject(PyObject*, PyObject* args, PyObject* kwds) +{ +// From a long representing an address or a PyCapsule/CObject, bind to a class. + Py_ssize_t argc = PyTuple_GET_SIZE(args); + if (argc != 2) { + PyErr_Format(PyExc_TypeError, + "BindObject takes exactly 2 argumenst (" PY_SSIZE_T_FORMAT " given)", argc); + return nullptr; + } + +// try to convert first argument: either PyCapsule/CObject or long integer + PyObject* pyaddr = PyTuple_GET_ITEM(args, 0); + + void* addr = nullptr; + if (pyaddr != &_CPyCppyy_NullPtrStruct) { + addr = CPyCppyy_PyCapsule_GetPointer(pyaddr, nullptr); + if (PyErr_Occurred()) { + PyErr_Clear(); + + addr = PyLong_AsVoidPtr(pyaddr); + if (PyErr_Occurred()) { + PyErr_Clear(); + + // last chance, perhaps it's a buffer/array (return from void*) + int buflen = Utility::GetBuffer(PyTuple_GetItem(args, 0), '*', 1, addr, false); + if (!addr || !buflen) { + PyErr_SetString(PyExc_TypeError, + "BindObject requires a CObject or long integer as first argument"); + return nullptr; + } + } + } + } + + Cppyy::TCppType_t klass = 0; + PyObject* pyname = PyTuple_GET_ITEM(args, 1); + if (!CPyCppyy_PyUnicode_Check(pyname)) { // not string, then class + if (CPPScope_Check(pyname)) + klass = ((CPPClass*)pyname)->fCppType; + else + pyname = PyObject_GetAttr(pyname, PyStrings::gName); + } else + Py_INCREF(pyname); + + if (!klass && pyname) { + klass = (Cppyy::TCppType_t)Cppyy::GetScope(CPyCppyy_PyUnicode_AsString(pyname)); + Py_DECREF(pyname); + } + + if (!klass) { + PyErr_SetString(PyExc_TypeError, + "BindObject expects a valid class or class name as an argument"); + return nullptr; + } + + bool do_cast = false; + if (kwds) { + PyObject* cast = PyDict_GetItemString(kwds, "cast"); + do_cast = cast && PyObject_IsTrue(cast); + } + + if (do_cast) + return BindCppObject(addr, klass); + + return BindCppObjectNoCast(addr, klass); +} + +//---------------------------------------------------------------------------- +static PyObject* Move(PyObject*, PyObject* pyobject) +{ +// Prepare the given C++ object for moving. + if (!CPPInstance_Check(pyobject)) { + PyErr_SetString(PyExc_TypeError, "C++ object expected"); + return nullptr; + } + + ((CPPInstance*)pyobject)->fFlags |= CPPInstance::kIsRValue; + Py_INCREF(pyobject); + return pyobject; +} + + +//---------------------------------------------------------------------------- +static PyObject* AddPythonization(PyObject*, PyObject* args) +{ +// Remove a previously registered pythonizor from the given scope. + PyObject* pythonizor = nullptr; const char* scope; + if (!PyArg_ParseTuple(args, const_cast("Os"), &pythonizor, &scope)) + return nullptr; + + if (!PyCallable_Check(pythonizor)) { + PyObject* pystr = PyObject_Str(pythonizor); + PyErr_Format(PyExc_TypeError, + "given \'%s\' object is not callable", CPyCppyy_PyUnicode_AsString(pystr)); + Py_DECREF(pystr); + return nullptr; + } + + Py_INCREF(pythonizor); + gPythonizations[scope].push_back(pythonizor); + + Py_RETURN_NONE; +} + + +//---------------------------------------------------------------------------- +static PyObject* RemovePythonization(PyObject*, PyObject* args) +{ +// Remove a previously registered pythonizor from the given scope. + PyObject* pythonizor = nullptr; const char* scope; + if (!PyArg_ParseTuple(args, const_cast("Os"), &pythonizor, &scope)) + return nullptr; + + auto p1 = gPythonizations.find(scope); + if (p1 != gPythonizations.end()) { + auto p2 = std::find(p1->second.begin(), p1->second.end(), pythonizor); + if (p2 != p1->second.end()) { + p1->second.erase(p2); + Py_RETURN_TRUE; + } + } + + Py_RETURN_FALSE; +} + +//---------------------------------------------------------------------------- +PyObject* SetMemoryPolicy(PyObject*, PyObject* args) +{ +// Set the global memory policy, which affects object ownership when objects +// are passed as function arguments. + PyObject* policy = nullptr; + if (!PyArg_ParseTuple(args, const_cast("O!"), &PyInt_Type, &policy)) + return nullptr; + + Long_t l = PyInt_AS_LONG(policy); + if (CallContext::SetMemoryPolicy((CallContext::ECallFlags)l)) { + Py_RETURN_NONE; + } + + PyErr_Format(PyExc_ValueError, "Unknown policy %ld", l); + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* SetSignalPolicy(PyObject*, PyObject* args) +{ +// Set the global signal policy, which determines whether a jmp address +// should be saved to return to after a C++ segfault. + PyObject* policy = 0; + if (!PyArg_ParseTuple(args, const_cast("O!"), &PyInt_Type, &policy)) + return nullptr; + + Long_t l = PyInt_AS_LONG(policy); + if (CallContext::SetSignalPolicy((CallContext::ECallFlags)l)) { + Py_RETURN_NONE; + } + + PyErr_Format(PyExc_ValueError, "Unknown policy %ld", l); + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* SetOwnership(PyObject*, PyObject* args) +{ +// Set the ownership (True is python-owns) for the given object. + CPPInstance* pyobj = nullptr; PyObject* pykeep = nullptr; + if (!PyArg_ParseTuple(args, const_cast("O!O!"), + &CPPInstance_Type, (void*)&pyobj, &PyInt_Type, &pykeep)) + return nullptr; + + (bool)PyLong_AsLong(pykeep) ? pyobj->PythonOwns() : pyobj->CppOwns(); + + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* AddSmartPtrType(PyObject*, PyObject* args) +{ +// Add a smart pointer to the list of known smart pointer types. + const char* type_name; + if (!PyArg_ParseTuple(args, const_cast("s"), &type_name)) + return nullptr; + + Cppyy::AddSmartPtrType(type_name); + + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* PinType(PyObject*, PyObject* pyclass) +{ +// Add a pinning so that objects of type `derived' are interpreted as +// objects of type `base'. + if (!CPPScope_Check(pyclass)) { + PyErr_SetString(PyExc_TypeError, "C++ class expected"); + return nullptr; + } + + gPinnedTypes.insert(((CPPClass*)pyclass)->fCppType); + + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* Cast(PyObject*, PyObject* args) +{ +// Cast `obj' to type `type'. + CPPInstance* obj = nullptr; + CPPClass* type = nullptr; + if (!PyArg_ParseTuple(args, const_cast("O!O!"), + &CPPInstance_Type, &obj, + &CPPScope_Type, &type)) + return nullptr; +// TODO: this misses an offset calculation, and reference type must not +// be cast ... + return BindCppObjectNoCast(obj->GetObject(), type->fCppType, + obj->fFlags & CPPInstance::kIsReference); +} + +} // unnamed namespace + + +//- data ----------------------------------------------------------------------- +static PyMethodDef gCPyCppyyMethods[] = { + {(char*) "CreateScopeProxy", (PyCFunction)CPyCppyy::CreateScopeProxy, + METH_VARARGS, (char*)"cppyy internal function"}, + {(char*) "MakeCppTemplateClass", (PyCFunction)MakeCppTemplateClass, + METH_VARARGS, (char*)"cppyy internal function"}, + {(char*) "_set_cpp_lazy_lookup", (PyCFunction)SetCppLazyLookup, + METH_VARARGS, (char*)"cppyy internal function"}, + {(char*) "_DestroyPyStrings", (PyCFunction)CPyCppyy::DestroyPyStrings, + METH_NOARGS, (char*)"cppyy internal function"}, + {(char*) "addressof", (PyCFunction)addressof, + METH_VARARGS, (char*)"Retrieve address of held object as a value"}, + {(char*) "AsCObject", (PyCFunction)AsCObject, + METH_VARARGS, (char*)"Retrieve held object in a CObject"}, + {(char*)"bind_object", (PyCFunction)BindObject, + METH_VARARGS | METH_KEYWORDS, (char*) "Create an object of given type, from given address"}, + {(char*) "move", (PyCFunction)Move, + METH_O, (char*)"Cast the C++ object to become movable"}, + {(char*) "add_pythonization", (PyCFunction)AddPythonization, + METH_VARARGS, (char*)"Add a pythonizor"}, + {(char*) "remove_pythonization", (PyCFunction)RemovePythonization, + METH_VARARGS, (char*)"Remove a pythonizor"}, + {(char*) "SetMemoryPolicy", (PyCFunction)SetMemoryPolicy, + METH_VARARGS, (char*)"Determines object ownership model"}, + {(char*) "SetSignalPolicy", (PyCFunction)SetSignalPolicy, + METH_VARARGS, (char*)"Trap signals in safe mode to prevent interpreter abort"}, + {(char*) "SetOwnership", (PyCFunction)SetOwnership, + METH_VARARGS, (char*)"Modify held C++ object ownership"}, + {(char*) "AddSmartPtrType", (PyCFunction)AddSmartPtrType, + METH_VARARGS, (char*) "Add a smart pointer to the list of known smart pointer types"}, + {(char*) "_pin_type", (PyCFunction)PinType, + METH_O, (char*)"Install a type pinning"}, + {(char*) "Cast", (PyCFunction)Cast, + METH_VARARGS, (char*)"Cast the given object to the given type"}, + {nullptr, nullptr, 0, nullptr} +}; + + +#if PY_VERSION_HEX >= 0x03000000 +struct module_state { + PyObject *error; +}; + +#define GETSTATE(m) ((struct module_state*)PyModule_GetState(m)) + +static int cpycppyymodule_traverse(PyObject* m, visitproc visit, void* arg) +{ + Py_VISIT(GETSTATE(m)->error); + return 0; +} + +static int cpycppyymodule_clear(PyObject* m) +{ + Py_CLEAR(GETSTATE(m)->error); + return 0; +} + + +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + "libcppyy", + nullptr, + sizeof(struct module_state), + gCPyCppyyMethods, + nullptr, + cpycppyymodule_traverse, + cpycppyymodule_clear, + nullptr +}; + + +//---------------------------------------------------------------------------- +#define CPYCPPYY_INIT_ERROR return nullptr +extern "C" PyObject* PyInit_libcppyy() +#else +#define CPYCPPYY_INIT_ERROR return +extern "C" void initlibcppyy() +#endif +{ +// Initialization of extension module libcppyy. + +// load commonly used python strings + if (!CPyCppyy::CreatePyStrings()) + CPYCPPYY_INIT_ERROR; + +// setup interpreter + PyEval_InitThreads(); + +// prepare for lazyness + PyObject* dict = PyDict_New(); +#if PY_VERSION_HEX >= 0x03030000 + gDictLookupOrg = (dict_lookup_func)((PyDictObject*)dict)->ma_keys->dk_lookup; +#else + gDictLookupOrg = (dict_lookup_func)((PyDictObject*)dict)->ma_lookup; +#endif + Py_DECREF(dict); + +// setup this module +#if PY_VERSION_HEX >= 0x03000000 + gThisModule = PyModule_Create(&moduledef); +#else + gThisModule = Py_InitModule(const_cast("libcppyy"), gCPyCppyyMethods); +#endif + if (!gThisModule) + CPYCPPYY_INIT_ERROR; + +// keep gThisModule, but do not increase its reference count even as it is borrowed, +// or a self-referencing cycle would be created + +// Pythonizations ... + PyModule_AddObject(gThisModule, "UserExceptions", PyDict_New()); + +// inject meta type + if (!Utility::InitProxy(gThisModule, &CPPScope_Type, "CPPScope")) + CPYCPPYY_INIT_ERROR; + +// inject object proxy type + if (!Utility::InitProxy(gThisModule, &CPPInstance_Type, "CPPInstance")) + CPYCPPYY_INIT_ERROR; + +// inject method proxy type + if (!Utility::InitProxy(gThisModule, &CPPOverload_Type, "CPPOverload")) + CPYCPPYY_INIT_ERROR; + +// inject template proxy type + if (!Utility::InitProxy(gThisModule, &TemplateProxy_Type, "TemplateProxy")) + CPYCPPYY_INIT_ERROR; + +// inject property proxy type + if (!Utility::InitProxy(gThisModule, &CPPDataMember_Type, "CPPDataMember")) + CPYCPPYY_INIT_ERROR; + +// inject custom data types + if (!Utility::InitProxy(gThisModule, &RefFloat_Type, "Double")) + CPYCPPYY_INIT_ERROR; + + if (!Utility::InitProxy(gThisModule, &RefInt_Type, "Long")) + CPYCPPYY_INIT_ERROR; + + if (!Utility::InitProxy(gThisModule, &CustomInstanceMethod_Type, "InstanceMethod")) + CPYCPPYY_INIT_ERROR; + + if (!Utility::InitProxy(gThisModule, &TupleOfInstances_Type, "InstancesArray")) + CPYCPPYY_INIT_ERROR; + + if (!Utility::InitProxy(gThisModule, &PyNullPtr_t_Type, "nullptr_t")) + CPYCPPYY_INIT_ERROR; + +// initialize low level ptr type, but do not inject in gThisModule + if (PyType_Ready(&LowLevelView_Type) < 0) + CPYCPPYY_INIT_ERROR; + +// inject identifiable nullptr + gNullPtrObject = (PyObject*)&_CPyCppyy_NullPtrStruct; + Py_INCREF(gNullPtrObject); + PyModule_AddObject(gThisModule, (char*)"nullptr", gNullPtrObject); + +// policy labels + PyModule_AddObject(gThisModule, (char*)"kMemoryHeuristics", + PyInt_FromLong((int)CallContext::kUseHeuristics)); + PyModule_AddObject(gThisModule, (char*)"kMemoryStrict", + PyInt_FromLong((int)CallContext::kUseStrict)); + PyModule_AddObject(gThisModule, (char*)"kSignalFast", + PyInt_FromLong((int)CallContext::kFast)); + PyModule_AddObject(gThisModule, (char*)"kSignalSafe", + PyInt_FromLong((int)CallContext::kSafe)); + +// gbl namespace is injected in cppyy.py + +// create the memory regulator + static MemoryRegulator s_memory_regulator; + +#if PY_VERSION_HEX >= 0x03000000 + Py_INCREF(gThisModule); + return gThisModule; +#endif +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.cxx new file mode 100644 index 0000000000000..0626c56a305a0 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.cxx @@ -0,0 +1,39 @@ +// Bindings +#include "CPyCppyy.h" +#include "CallContext.h" + + +//- data _____________________________________________________________________ +namespace CPyCppyy { + + CallContext::ECallFlags CallContext::sMemoryPolicy = CallContext::kUseStrict; +// this is just a data holder for linking; actual value is set in CPyCppyyModule.cxx + CallContext::ECallFlags CallContext::sSignalPolicy = CallContext::kSafe; + +} // namespace CPyCppyy + + +//----------------------------------------------------------------------------- +bool CPyCppyy::CallContext::SetMemoryPolicy(ECallFlags e) +{ +// Set the global memory policy, which affects object ownership when objects +// are passed as function arguments. + if (kUseHeuristics == e || e == kUseStrict) { + sMemoryPolicy = e; + return true; + } + return false; +} + +//----------------------------------------------------------------------------- +bool CPyCppyy::CallContext::SetSignalPolicy(ECallFlags e) +{ +// Set the global signal policy, which determines whether a jmp address +// should be saved to return to after a C++ segfault. + if (kFast == e || e == kSafe) { + sSignalPolicy = e; + return true; + } + return false; +} + diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.h new file mode 100644 index 0000000000000..da63e758e916e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CallContext.h @@ -0,0 +1,96 @@ +#ifndef CPYCPPYY_CALLCONTEXT_H +#define CPYCPPYY_CALLCONTEXT_H + +// Standard +#include + + +namespace CPyCppyy { + +// general place holder for function parameters +struct Parameter { + union Value { + bool fBool; + short fShort; + unsigned short fUShort; + Int_t fInt; + UInt_t fUInt; + Long_t fLong; + ULong_t fULong; + Long64_t fLongLong; + ULong64_t fULongLong; + float fFloat; + double fDouble; + LongDouble_t fLongDouble; + void* fVoidp; + } fValue; + void* fRef; + char fTypeCode; +}; + +// extra call information +struct CallContext { + CallContext(std::vector::size_type sz = 0) : fArgs(sz), fFlags(0) {} + + enum ECallFlags { + kNone = 0, + kIsSorted = 1, // if method overload priority determined + kIsCreator = 2, // if method creates python-owned objects + kIsConstructor = 4, // if method is a C++ constructor + kUseHeuristics = 8, // if method applies heuristics memory policy + kUseStrict = 16, // if method applies strict memory policy + kManageSmartPtr = 32, // if executor should manage smart pointers + kReleaseGIL = 64, // if method should release the GIL + kFast = 128, // if method should NOT handle signals + kSafe = 256 // if method should return on signals + }; + +// memory handling + static ECallFlags sMemoryPolicy; + static bool SetMemoryPolicy(ECallFlags e); + +// signal safety + static ECallFlags sSignalPolicy; + static bool SetSignalPolicy(ECallFlags e); + +// payload + std::vector fArgs; + uint64_t fFlags; +}; + +inline bool IsSorted(uint64_t flags) { + return flags & CallContext::kIsSorted; +} + +inline bool IsCreator(uint64_t flags) { + return flags & CallContext::kIsCreator; +} + +inline bool IsConstructor(uint64_t flags) { + return flags & CallContext::kIsConstructor; +} + +inline bool ManagesSmartPtr(CallContext* ctxt) { + return ctxt->fFlags & CallContext::kManageSmartPtr; +} + +inline bool ReleasesGIL(uint64_t flags) { + return flags & CallContext::kReleaseGIL; +} + +inline bool ReleasesGIL(CallContext* ctxt) { + return ctxt ? (ctxt->fFlags & CallContext::kReleaseGIL) : false; +} + +inline bool UseStrictOwnership(CallContext* ctxt) { + if (ctxt && (ctxt->fFlags & CallContext::kUseStrict)) + return true; + if (ctxt && (ctxt->fFlags & CallContext::kUseHeuristics)) + return false; + + return CallContext::sMemoryPolicy == CallContext::kUseStrict; +} + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CALLCONTEXT_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx new file mode 100644 index 0000000000000..5f032600c1a57 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx @@ -0,0 +1,1666 @@ +// Bindings +#include "CPyCppyy.h" +#include "DeclareConverters.h" +#include "CallContext.h" +#include "CPPInstance.h" +#include "CPPOverload.h" +#include "CustomPyTypes.h" +#include "LowLevelViews.h" +#include "MemoryRegulator.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" +#include "TupleOfInstances.h" +#include "TypeManip.h" +#include "Utility.h" + +// Standard +#include +#include // for ptrdiff_t +#include +#include +#include +#if __cplusplus > 201402L +#include +#endif + +// FIXME: Should refer to CPyCppyy::Parameter in the code. +#ifdef R__CXXMODULES + #define Parameter CPyCppyy::Parameter +#endif + + +//- data _____________________________________________________________________ +namespace CPyCppyy { + +// factories + typedef Converter* (*cf_t)(long size); + typedef std::map ConvFactories_t; + static ConvFactories_t gConvFactories; + extern PyObject* gNullPtrObject; + +} + +//- pretend-ctypes helpers --------------------------------------------------- +#if PY_VERSION_HEX >= 0x02050000 + +struct CPyCppyy_tagCDataObject { // non-public (but so far very stable) + PyObject_HEAD + char* b_ptr; +}; + +static inline PyTypeObject* GetCTypesType(const char* name) { + PyObject* ct = PyImport_ImportModule("ctypes"); + if (!ct) return nullptr; + PyTypeObject* ct_t = (PyTypeObject*)PyObject_GetAttrString(ct, name); + Py_DECREF(ct); + return ct_t; +} + +#endif + +//- custom helpers to check ranges ------------------------------------------- +static inline bool CPyCppyy_PyLong_AsBool(PyObject* pyobject) +{ +// range-checking python integer to C++ bool conversion + long l = PyLong_AsLong(pyobject); +// fail to pass float -> bool; the problem is rounding (0.1 -> 0 -> False) + if (!(l == 0|| l == 1) || PyFloat_Check(pyobject)) { + PyErr_SetString(PyExc_ValueError, "boolean value should be bool, or integer 1 or 0"); + return (bool)-1; + } + return (bool)l; +} + +static inline char CPyCppyy_PyUnicode_AsChar(PyObject* pyobject) { +// python string to C++ char conversion + return (char)CPyCppyy_PyUnicode_AsString(pyobject)[0]; +} + +static inline unsigned short CPyCppyy_PyLong_AsUShort(PyObject* pyobject) +{ +// range-checking python integer to C++ unsigend short int conversion + +// prevent p2.7 silent conversions and do a range check + if (!(PyLong_Check(pyobject) || PyInt_Check(pyobject))) { + PyErr_SetString(PyExc_TypeError, "unsigned short conversion expects an integer object"); + return (unsigned short)-1; + } + long l = PyLong_AsLong(pyobject); + if (l < 0 || USHRT_MAX < l) { + PyErr_Format(PyExc_ValueError, "integer %ld out of range for unsigned short", l); + return (unsigned short)-1; + + } + return (unsigned short)l; +} + +static inline short CPyCppyy_PyLong_AsShort(PyObject* pyobject) +{ +// range-checking python integer to C++ short int conversion +// prevent p2.7 silent conversions and do a range check + if (!(PyLong_Check(pyobject) || PyInt_Check(pyobject))) { + PyErr_SetString(PyExc_TypeError, "short int conversion expects an integer object"); + return (short)-1; + } + long l = PyLong_AsLong(pyobject); + if (l < SHRT_MIN || SHRT_MAX < l) { + PyErr_Format(PyExc_ValueError, "integer %ld out of range for short int", l); + return (short)-1; + + } + return (short)l; +} + +static inline int CPyCppyy_PyLong_AsStrictInt(PyObject* pyobject) +{ +// strict python integer to C++ integer conversion + +// p2.7 and later silently converts floats to long, therefore require this +// check; earlier pythons may raise a SystemError which should be avoided as +// it is confusing + if (!(PyLong_Check(pyobject) || PyInt_Check(pyobject))) { + PyErr_SetString(PyExc_TypeError, "int/long conversion expects an integer object"); + return -1; + } + long l = PyLong_AsLong(pyobject); + if (l < INT_MIN || INT_MAX < l) { + PyErr_Format(PyExc_ValueError, "integer %ld out of range for int", l); + return (int)-1; + + } + return (int)l; +} + +static inline long CPyCppyy_PyLong_AsStrictLong(PyObject* pyobject) +{ +// strict python integer to C++ long integer conversion + +// prevent float -> long (see CPyCppyy_PyLong_AsStrictInt) + if (!(PyLong_Check(pyobject) || PyInt_Check(pyobject))) { + PyErr_SetString(PyExc_TypeError, "int/long conversion expects an integer object"); + return (long)-1; + } + return (long)PyLong_AsLong(pyobject); +} + + +//- base converter implementation -------------------------------------------- +PyObject* CPyCppyy::Converter::FromMemory(void*) +{ +// could happen if no derived class override + PyErr_SetString(PyExc_TypeError, "C++ type can not be converted from memory"); + return nullptr; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Converter::ToMemory(PyObject*, void*) +{ +// could happen if no derived class override + PyErr_SetString(PyExc_TypeError, "C++ type can not be converted to memory"); + return false; +} + + +//- helper macro's ----------------------------------------------------------- +#define CPPYY_IMPL_BASIC_CONVERTER(name, type, stype, F1, F2, tc) \ +bool CPyCppyy::name##Converter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \ +{ \ +/* convert to C++ 'type', set arg for call */ \ + type val = (type)F2(pyobject); \ + if (val == (type)-1 && PyErr_Occurred()) \ + return false; \ + para.fValue.f##name = val; \ + para.fTypeCode = tc; \ + return true; \ +} \ + \ +PyObject* CPyCppyy::name##Converter::FromMemory(void* address) \ +{ \ + return F1((stype)*((type*)address)); \ +} \ + \ +bool CPyCppyy::name##Converter::ToMemory(PyObject* value, void* address) \ +{ \ + type s = (type)F2(value); \ + if (s == (type)-1 && PyErr_Occurred()) \ + return false; \ + *((type*)address) = (type)s; \ + return true; \ +} + +//---------------------------------------------------------------------------- +static inline Int_t ExtractChar(PyObject* pyobject, const char* tname, Int_t low, Int_t high) +{ + Int_t lchar = -1; + if (CPyCppyy_PyUnicode_Check(pyobject)) { + if (CPyCppyy_PyUnicode_GET_SIZE(pyobject) == 1) + lchar = (Int_t)CPyCppyy_PyUnicode_AsChar(pyobject); + else + PyErr_Format(PyExc_ValueError, "%s expected, got string of size " PY_SSIZE_T_FORMAT, + tname, CPyCppyy_PyUnicode_GET_SIZE(pyobject)); + } else if (!PyFloat_Check(pyobject)) { // don't allow truncating conversion + lchar = PyLong_AsLong(pyobject); + if (lchar == -1 && PyErr_Occurred()) + ; // empty, as error already set + else if (!(low <= lchar && lchar <= high)) { + PyErr_Format(PyExc_ValueError, + "integer to character: value %d not in range [%d,%d]", lchar, low, high); + lchar = -1; + } + } else + PyErr_SetString(PyExc_TypeError, "char or small int type expected"); + + return lchar; +} + +//---------------------------------------------------------------------------- +#define CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(name, type, F1) \ +bool CPyCppyy::Const##name##RefConverter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \ +{ \ + type val = (type)F1(pyobject); \ + if (val == (type)-1 && PyErr_Occurred()) \ + return false; \ + para.fValue.f##name = val; \ + para.fRef = ¶.fValue.f##name; \ + para.fTypeCode = 'r'; \ + return true; \ +} + +//---------------------------------------------------------------------------- +#define CPPYY_IMPL_BASIC_CONST_CHAR_REF_CONVERTER(name, type, low, high) \ +bool CPyCppyy::Const##name##RefConverter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \ +{ \ +/* convert to C++ <>, set arg for call, allow int -> char */\ + type val = (type)ExtractChar(pyobject, #type, low, high); \ + if (val == (type)-1 && PyErr_Occurred()) \ + return false; \ + para.fValue.fLong = val; \ + para.fTypeCode = 'l'; \ + return true; \ +} + +//---------------------------------------------------------------------------- +#define CPPYY_IMPL_BASIC_CHAR_CONVERTER(name, type, low, high) \ +bool CPyCppyy::name##Converter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \ +{ \ +/* convert to C++ <>, set arg for call, allow int -> char */\ + long val = ExtractChar(pyobject, #type, low, high); \ + if (val == -1 && PyErr_Occurred()) \ + return false; \ + para.fValue.fLong = val; \ + para.fTypeCode = 'l'; \ + return true; \ +} \ + \ +PyObject* CPyCppyy::name##Converter::FromMemory(void* address) \ +{ \ + return CPyCppyy_PyUnicode_FromFormat("%c", *((type*)address)); \ +} \ + \ +bool CPyCppyy::name##Converter::ToMemory(PyObject* value, void* address) \ +{ \ + if (CPyCppyy_PyUnicode_Check(value)) { \ + const char* buf = CPyCppyy_PyUnicode_AsString(value); \ + if (PyErr_Occurred()) \ + return false; \ + int len = CPyCppyy_PyUnicode_GET_SIZE(value); \ + if (len != 1) { \ + PyErr_Format(PyExc_TypeError, #type" expected, got string of size %d", len);\ + return false; \ + } \ + *((type*)address) = (type)buf[0]; \ + } else { \ + long l = PyLong_AsLong(value); \ + if (l == -1 && PyErr_Occurred()) \ + return false; \ + if (!(low <= l && l <= high)) { \ + PyErr_Format(PyExc_ValueError, \ + "integer to character: value %ld not in range [%d,%d]", l, low, high);\ + return false; \ + } \ + *((type*)address) = (type)l; \ + } \ + return true; \ +} + + +//- converters for built-ins ------------------------------------------------- +CPPYY_IMPL_BASIC_CONVERTER(Long, long, long, PyLong_FromLong, CPyCppyy_PyLong_AsStrictLong, 'l') + +//---------------------------------------------------------------------------- +bool CPyCppyy::LongRefConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ long&, set arg for call +#if PY_VERSION_HEX < 0x03000000 + if (RefInt_CheckExact(pyobject)) { + para.fValue.fVoidp = (void*)&((PyIntObject*)pyobject)->ob_ival; + para.fTypeCode = 'V'; + return true; + } +#endif + +#if PY_VERSION_HEX < 0x02050000 + PyErr_SetString(PyExc_TypeError, "use cppyy.Long for pass-by-ref of longs"); + return false; +#endif + +// TODO: this keeps a refcount to the type .. it should be okay to drop that + static PyTypeObject* c_long_type = GetCTypesType("c_long"); + if (Py_TYPE(pyobject) == c_long_type) { + para.fValue.fVoidp = (void*)((CPyCppyy_tagCDataObject*)pyobject)->b_ptr; + para.fTypeCode = 'V'; + return true; + } + + PyErr_SetString(PyExc_TypeError, "use ctypes.c_long for pass-by-ref of longs"); + return false; +} + +//---------------------------------------------------------------------------- +CPPYY_IMPL_BASIC_CONST_CHAR_REF_CONVERTER(Char, char, CHAR_MIN, CHAR_MAX) +CPPYY_IMPL_BASIC_CONST_CHAR_REF_CONVERTER(UChar, unsigned char, 0, UCHAR_MAX) + +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(Bool, bool, CPyCppyy_PyLong_AsBool) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(Short, short, CPyCppyy_PyLong_AsShort) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(UShort, unsigned short, CPyCppyy_PyLong_AsUShort) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(Int, Int_t, CPyCppyy_PyLong_AsStrictInt) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(UInt, UInt_t, PyLongOrInt_AsULong) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(Long, Long_t, CPyCppyy_PyLong_AsStrictLong) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(ULong, ULong_t, PyLongOrInt_AsULong) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(LongLong, Long64_t, PyLong_AsLongLong) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(ULongLong, ULong64_t, PyLongOrInt_AsULong64) + +//---------------------------------------------------------------------------- +bool CPyCppyy::IntRefConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ (pseudo)int&, set arg for call +#if PY_VERSION_HEX < 0x03000000 + if (RefInt_CheckExact(pyobject)) { + para.fValue.fVoidp = (void*)&((PyIntObject*)pyobject)->ob_ival; + para.fTypeCode = 'V'; + return true; + } +#endif + +#if PY_VERSION_HEX >= 0x02050000 +// TODO: this keeps a refcount to the type .. it should be okay to drop that + static PyTypeObject* c_int_type = GetCTypesType("c_int"); + if (Py_TYPE(pyobject) == c_int_type) { + para.fValue.fVoidp = (void*)((CPyCppyy_tagCDataObject*)pyobject)->b_ptr; + para.fTypeCode = 'V'; + return true; + } +#endif + +// alternate, pass pointer from buffer + int buflen = Utility::GetBuffer(pyobject, 'i', sizeof(int), para.fValue.fVoidp); + if (para.fValue.fVoidp && buflen) { + para.fTypeCode = 'V'; + return true; + }; + +#if PY_VERSION_HEX < 0x02050000 + PyErr_SetString(PyExc_TypeError, "use cppyy.Long for pass-by-ref of ints"); +#else + PyErr_SetString(PyExc_TypeError, "use ctypes.c_int for pass-by-ref of ints"); +#endif + return false; +} + +//---------------------------------------------------------------------------- +// convert to C++ bool, allow int/long -> bool, set arg for call +CPPYY_IMPL_BASIC_CONVERTER( + Bool, bool, long, PyInt_FromLong, CPyCppyy_PyLong_AsBool, 'l') + +//---------------------------------------------------------------------------- +CPPYY_IMPL_BASIC_CHAR_CONVERTER(Char, char, CHAR_MIN, CHAR_MAX) +CPPYY_IMPL_BASIC_CHAR_CONVERTER(UChar, unsigned char, 0, UCHAR_MAX) + +PyObject* CPyCppyy::UCharAsIntConverter::FromMemory(void* address) +{ +// special case to be used with arrays: return a Python int instead of str +// (following the same convention as module array.array) + return PyInt_FromLong((long)*((unsigned char*)address)); +} + + +//---------------------------------------------------------------------------- +CPPYY_IMPL_BASIC_CONVERTER( + Short, short, long, PyInt_FromLong, CPyCppyy_PyLong_AsShort, 'l') +CPPYY_IMPL_BASIC_CONVERTER( + UShort, unsigned short, long, PyInt_FromLong, CPyCppyy_PyLong_AsUShort, 'l') +CPPYY_IMPL_BASIC_CONVERTER( + Int, Int_t, long, PyInt_FromLong, CPyCppyy_PyLong_AsStrictInt, 'l') + +//---------------------------------------------------------------------------- +bool CPyCppyy::ULongConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ unsigned long, set arg for call + para.fValue.fULong = PyLongOrInt_AsULong(pyobject); + if (PyErr_Occurred()) + return false; + para.fTypeCode = 'L'; + return true; +} + +PyObject* CPyCppyy::ULongConverter::FromMemory(void* address) +{ +// construct python object from C++ unsigned long read at

    + return PyLong_FromUnsignedLong(*((unsigned long*)address)); +} + +bool CPyCppyy::ULongConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ unsigned long, write it at
    + unsigned long u = PyLongOrInt_AsULong(value); + if (PyErr_Occurred()) + return false; + *((unsigned long*)address) = u; + return true; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::UIntConverter::FromMemory(void* address) +{ +// construct python object from C++ unsigned int read at
    + return PyLong_FromUnsignedLong(*((UInt_t*)address)); +} + +bool CPyCppyy::UIntConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ unsigned int, write it at
    + ULong_t u = PyLongOrInt_AsULong(value); + if (PyErr_Occurred()) + return false; + + if (u > (ULong_t)UINT_MAX) { + PyErr_SetString(PyExc_OverflowError, "value too large for unsigned int"); + return false; + } + + *((UInt_t*)address) = (UInt_t)u; + return true; +} + +//- floating point converters ------------------------------------------------ +CPPYY_IMPL_BASIC_CONVERTER( + Float, float, double, PyFloat_FromDouble, PyFloat_AsDouble, 'f') +CPPYY_IMPL_BASIC_CONVERTER( + Double, double, double, PyFloat_FromDouble, PyFloat_AsDouble, 'd') + +CPPYY_IMPL_BASIC_CONVERTER( + LongDouble, LongDouble_t, LongDouble_t, PyFloat_FromDouble, PyFloat_AsDouble, 'g') + +//---------------------------------------------------------------------------- +bool CPyCppyy::DoubleRefConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ double&, set arg for call + if (RefFloat_CheckExact(pyobject)) { + para.fValue.fVoidp = (void*)&((PyFloatObject*)pyobject)->ob_fval; + para.fTypeCode = 'V'; + return true; + } + +// alternate, pass pointer from buffer + int buflen = Utility::GetBuffer(pyobject, 'd', sizeof(double), para.fValue.fVoidp); + if (para.fValue.fVoidp && buflen) { + para.fTypeCode = 'V'; + return true; + } + + PyErr_SetString(PyExc_TypeError, "use cppyy.Double for pass-by-ref of doubles"); + return false; +} + +//---------------------------------------------------------------------------- +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(Float, float, PyFloat_AsDouble) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(Double, double, PyFloat_AsDouble) +CPPYY_IMPL_BASIC_CONST_REF_CONVERTER(LongDouble, LongDouble_t, PyFloat_AsDouble) + +//---------------------------------------------------------------------------- +bool CPyCppyy::VoidConverter::SetArg(PyObject*, Parameter&, CallContext*) +{ +// can't happen (unless a type is mapped wrongly), but implemented for completeness + PyErr_SetString(PyExc_SystemError, "void/unknown arguments can\'t be set"); + return false; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::LongLongConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ long long, set arg for call + if (PyFloat_Check(pyobject)) { + // special case: float implements nb_int, but allowing rounding conversions + // interferes with overloading + PyErr_SetString(PyExc_ValueError, "can not convert float to long long"); + return false; + } + + para.fValue.fLongLong = PyLong_AsLongLong(pyobject); + if (PyErr_Occurred()) + return false; + para.fTypeCode = 'q'; + return true; +} + +PyObject* CPyCppyy::LongLongConverter::FromMemory(void* address) +{ +// construct python object from C++ long long read at
    + return PyLong_FromLongLong(*(Long64_t*)address); +} + +bool CPyCppyy::LongLongConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ long long, write it at
    + Long64_t ll = PyLong_AsLongLong(value); + if (ll == -1 && PyErr_Occurred()) + return false; + *((Long64_t*)address) = ll; + return true; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::ULongLongConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ unsigned long long, set arg for call + para.fValue.fULongLong = PyLongOrInt_AsULong64(pyobject); + if (PyErr_Occurred()) + return false; + para.fTypeCode = 'Q'; + return true; +} + +PyObject* CPyCppyy::ULongLongConverter::FromMemory(void* address) +{ +// construct python object from C++ unsigned long long read at
    + return PyLong_FromUnsignedLongLong(*(ULong64_t*)address); +} + +bool CPyCppyy::ULongLongConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ unsigned long long, write it at
    + Long64_t ull = PyLongOrInt_AsULong64(value); + if (PyErr_Occurred()) + return false; + *((ULong64_t*)address) = ull; + return true; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CStringConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// construct a new string and copy it in new memory + const char* s = CPyCppyy_PyUnicode_AsStringChecked(pyobject); + if (PyErr_Occurred()) + return false; + + fBuffer = std::string(s, CPyCppyy_PyUnicode_GET_SIZE(pyobject)); + +// verify (too long string will cause truncation, no crash) + if (fMaxSize != -1 && fMaxSize < (long)fBuffer.size()) + PyErr_Warn(PyExc_RuntimeWarning, (char*)"string too long for char array (truncated)"); + else if (fMaxSize != -1) + fBuffer.resize(fMaxSize, '\0'); // padd remainder of buffer as needed + +// set the value and declare success + para.fValue.fVoidp = (void*)fBuffer.c_str(); + para.fTypeCode = 'p'; + return true; +} + +PyObject* CPyCppyy::CStringConverter::FromMemory(void* address) +{ +// construct python object from C++ const char* read at
    + if (address && *(char**)address) { + if (fMaxSize != -1) { // need to prevent reading beyond boundary + std::string buf(*(char**)address, fMaxSize); // cut on fMaxSize + return CPyCppyy_PyUnicode_FromString(buf.c_str()); // cut on \0 + } + + return CPyCppyy_PyUnicode_FromString(*(char**)address); + } + +// empty string in case there's no address + Py_INCREF(PyStrings::gEmptyString); + return PyStrings::gEmptyString; +} + +bool CPyCppyy::CStringConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ const char*, write it at
    + const char* s = CPyCppyy_PyUnicode_AsStringChecked(value); + if (PyErr_Occurred()) + return false; + +// verify (too long string will cause truncation, no crash) + if (fMaxSize < (UInt_t)CPyCppyy_PyUnicode_GET_SIZE(value)) + PyErr_Warn(PyExc_RuntimeWarning, (char*)"string too long for char array (truncated)"); + + if (fMaxSize != -1) + strncpy(*(char**)address, s, fMaxSize); // padds remainder + else + // coverity[secure_coding] - can't help it, it's intentional. + strcpy(*(char**)address, s); + + return true; +} + + +//- pointer/array conversions ------------------------------------------------ +namespace { + +using namespace CPyCppyy; + +inline bool CArraySetArg(PyObject* pyobject, Parameter& para, char tc, int size) +{ +// general case of loading a C array pointer (void* + type code) as function argument + if (pyobject == gNullPtrObject || (PyInt_Check(pyobject) && PyInt_AsLong(pyobject) == 0)) { + para.fValue.fVoidp = nullptr; + } else { + int buflen = Utility::GetBuffer(pyobject, tc, size, para.fValue.fVoidp); + if (!para.fValue.fVoidp || buflen == 0) + return false; + } + para.fTypeCode = 'p'; + return true; +} + +} // unnamed namespace + + +//---------------------------------------------------------------------------- +bool CPyCppyy::NonConstCStringConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* ctxt) +{ +// attempt base class first (i.e. passing a string), but if that fails, try a buffer + if (this->CStringConverter::SetArg(pyobject, para, ctxt)) + return true; + +// apparently failed, try char buffer + PyErr_Clear(); + return CArraySetArg(pyobject, para, 'c', sizeof(char)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::NonConstCStringConverter::FromMemory(void* address) +{ +// assume this is a buffer access if the size is known; otherwise assume string + if (fMaxSize != -1) + return CPyCppyy_PyUnicode_FromStringAndSize(*(char**)address, fMaxSize); + return this->CStringConverter::FromMemory(address); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::VoidArrayConverter::GetAddressSpecialCase(PyObject* pyobject, void*& address) +{ +// (1): C++11 style "null pointer" + if (pyobject == gNullPtrObject) { + address = nullptr; + return true; + } + +// (2): allow integer zero to act as a null pointer (C NULL), no deriveds + if (PyInt_CheckExact(pyobject) || PyLong_CheckExact(pyobject)) { + long val = (long)PyLong_AsLong(pyobject); + if (val == 0l) { + address = (void*)val; + return true; + } + + return false; + } + +// (3): opaque PyCapsule (CObject in older pythons) from somewhere + if (CPyCppyy_PyCapsule_CheckExact(pyobject)) { + address = (void*)CPyCppyy_PyCapsule_GetPointer(pyobject, nullptr); + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::VoidArrayConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* ctxt) +{ +// just convert pointer if it is a C++ object + if (CPPInstance_Check(pyobject)) { + // depending on memory policy, some objects are no longer owned when passed to C++ + if (!fKeepControl && !UseStrictOwnership(ctxt)) + ((CPPInstance*)pyobject)->CppOwns(); + + // set pointer (may be null) and declare success + para.fValue.fVoidp = ((CPPInstance*)pyobject)->GetObject(); + para.fTypeCode = 'p'; + return true; + } + +// handle special cases + if (GetAddressSpecialCase(pyobject, para.fValue.fVoidp)) { + para.fTypeCode = 'p'; + return true; + } + +// final try: attempt to get buffer + int buflen = Utility::GetBuffer(pyobject, '*', 1, para.fValue.fVoidp, false); + +// ok if buffer exists (can't perform any useful size checks) + if (para.fValue.fVoidp && buflen != 0) { + para.fTypeCode = 'p'; + return true; + } + +// give up + return false; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::VoidArrayConverter::FromMemory(void* address) +{ +// nothing sensible can be done, just return
    as pylong + if (!address || *(ptrdiff_t*)address == 0) { + Py_INCREF(gNullPtrObject); + return gNullPtrObject; + } + return CreatePointerView(*(ptrdiff_t**)address); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::VoidArrayConverter::ToMemory(PyObject* value, void* address) +{ +// just convert pointer if it is a C++ object + if (CPPInstance_Check(value)) { + // depending on memory policy, some objects are no longer owned when passed to C++ + if (!fKeepControl && CallContext::sMemoryPolicy != CallContext::kUseStrict) + ((CPPInstance*)value)->CppOwns(); + + // set pointer (may be null) and declare success + *(void**)address = ((CPPInstance*)value)->GetObject(); + return true; + } + +// handle special cases + void* ptr = nullptr; + if (GetAddressSpecialCase(value, ptr)) { + *(void**)address = ptr; + return true; + } + +// final try: attempt to get buffer + void* buf = nullptr; + int buflen = Utility::GetBuffer(value, '*', 1, buf, false); + if (!buf || buflen == 0) + return false; + + *(void**)address = buf; + return true; +} + +//---------------------------------------------------------------------------- +#define CPPYY_IMPL_ARRAY_CONVERTER(name, type, code) \ +bool CPyCppyy::name##ArrayConverter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) \ +{ \ + return CArraySetArg(pyobject, para, code, sizeof(type)); \ +} \ + \ +PyObject* CPyCppyy::name##ArrayConverter::FromMemory(void* address) \ +{ \ + Py_ssize_t shape[] = {1, fSize}; \ + return CreateLowLevelView(*(type**)address, shape); \ +} \ + \ +bool CPyCppyy::name##ArrayConverter::ToMemory(PyObject* value, void* address)\ +{ \ + void* buf = nullptr; \ + int buflen = Utility::GetBuffer(value, code, sizeof(type), buf); \ + if (!buf || buflen == 0) \ + return false; \ + if (0 <= fSize) { \ + if (fSize < buflen/(int)sizeof(type)) { \ + PyErr_SetString(PyExc_ValueError, "buffer too large for value"); \ + return false; \ + } \ + memcpy(*(type**)address, buf, 0 < buflen ? ((size_t)buflen) : sizeof(type));\ + } else \ + *(type**)address = (type*)buf; \ + return true; \ +} + +#define CPPYY_IMPL_ARRAY_CONVERTER2(name, type, code) \ +CPPYY_IMPL_ARRAY_CONVERTER(name, type, code) \ + \ +bool CPyCppyy::name##ArrayRefConverter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* ctxt) \ +{ \ + bool result = name##ArrayConverter::SetArg(pyobject, para, ctxt); \ + para.fTypeCode = 'V'; \ + return result; \ +} + + +//---------------------------------------------------------------------------- +CPPYY_IMPL_ARRAY_CONVERTER2(Bool, bool, 'b') // signed char +CPPYY_IMPL_ARRAY_CONVERTER (UChar, unsigned char, 'B') +CPPYY_IMPL_ARRAY_CONVERTER2(Short, short, 'h') +CPPYY_IMPL_ARRAY_CONVERTER2(UShort, unsigned short, 'H') +CPPYY_IMPL_ARRAY_CONVERTER (Int, int, 'i') +CPPYY_IMPL_ARRAY_CONVERTER2(UInt, unsigned int, 'I') +CPPYY_IMPL_ARRAY_CONVERTER (Long, long, 'l') +CPPYY_IMPL_ARRAY_CONVERTER2(ULong, unsigned long, 'L') +CPPYY_IMPL_ARRAY_CONVERTER2(LLong, long long, 'q') +CPPYY_IMPL_ARRAY_CONVERTER2(ULLong, unsigned long long, 'Q') +CPPYY_IMPL_ARRAY_CONVERTER2(Float, float, 'f') +CPPYY_IMPL_ARRAY_CONVERTER (Double, double, 'd') + + +//- converters for special cases --------------------------------------------- +#define CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(name, type, F1, F2) \ +CPyCppyy::name##Converter::name##Converter(bool keepControl) : \ + CppObjectConverter(Cppyy::GetScope(#type), keepControl) {} \ + \ +bool CPyCppyy::name##Converter::SetArg( \ + PyObject* pyobject, Parameter& para, CallContext* ctxt) \ +{ \ + if (CPyCppyy_PyUnicode_Check(pyobject)) { \ + fBuffer = type(CPyCppyy_PyUnicode_AsString(pyobject), \ + CPyCppyy_PyUnicode_GET_SIZE(pyobject)); \ + para.fValue.fVoidp = &fBuffer; \ + para.fTypeCode = 'V'; \ + return true; \ + } \ + \ + if (!(PyInt_Check(pyobject) || PyLong_Check(pyobject))) { \ + bool result = CppObjectConverter::SetArg(pyobject, para, ctxt); \ + para.fTypeCode = 'V'; \ + return result; \ + } \ + return false; \ +} \ + \ +PyObject* CPyCppyy::name##Converter::FromMemory(void* address) \ +{ \ + if (address) \ + return CPyCppyy_PyUnicode_FromStringAndSize(((type*)address)->F1(), ((type*)address)->F2()); \ + Py_INCREF(PyStrings::gEmptyString); \ + return PyStrings::gEmptyString; \ +} \ + \ +bool CPyCppyy::name##Converter::ToMemory(PyObject* value, void* address) \ +{ \ + if (CPyCppyy_PyUnicode_Check(value)) { \ + *((type*)address) = CPyCppyy_PyUnicode_AsString(value); \ + return true; \ + } \ + \ + return CppObjectConverter::ToMemory(value, address); \ +} + +CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(STLString, std::string, c_str, size) +#if __cplusplus > 201402L +CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(STLStringView, std::string_view, data, size) +#endif + +//---------------------------------------------------------------------------- +bool CPyCppyy::CppObjectConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* ctxt) +{ +// convert to C++ instance*, set arg for call + if (!CPPInstance_Check(pyobject)) { + if (GetAddressSpecialCase(pyobject, para.fValue.fVoidp)) { + para.fTypeCode = 'p'; // allow special cases such as nullptr + return true; + } + + // not a cppyy object (TODO: handle SWIG etc.) + return false; + } + + CPPInstance* pyobj = (CPPInstance*)pyobject; + if (pyobj->ObjectIsA() && Cppyy::IsSubtype(pyobj->ObjectIsA(), fClass)) { + // depending on memory policy, some objects need releasing when passed into functions + if (!KeepControl() && !UseStrictOwnership(ctxt)) + ((CPPInstance*)pyobject)->CppOwns(); + + // calculate offset between formal and actual arguments + para.fValue.fVoidp = pyobj->GetObject(); + if (pyobj->ObjectIsA() != fClass) { + para.fValue.fLong += Cppyy::GetBaseOffset( + pyobj->ObjectIsA(), fClass, para.fValue.fVoidp, 1 /* up-cast */); + } + + // set pointer (may be null) and declare success + para.fTypeCode = 'p'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectConverter::FromMemory(void* address) +{ +// construct python object from C++ instance read at
    + return BindCppObject(address, fClass); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CppObjectConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ instance, write it at
    + if (!CPPInstance_Check(value)) { + void* ptr = nullptr; + if (GetAddressSpecialCase(value, ptr)) { + *(void**)address = ptr; // allow special cases such as nullptr + return true; + } + + // not a cppyy object (TODO: handle SWIG etc.) + return false; + } + + if (Cppyy::IsSubtype(((CPPInstance*)value)->ObjectIsA(), fClass)) { + // depending on memory policy, some objects need releasing when passed into functions + if (!KeepControl() && CallContext::sMemoryPolicy != CallContext::kUseStrict) + ((CPPInstance*)value)->CppOwns(); + + // call assignment operator through a temporarily wrapped object proxy + PyObject* pyobj = BindCppObjectNoCast(address, fClass); + ((CPPInstance*)pyobj)->CppOwns(); // TODO: might be recycled (?) + PyObject* result = PyObject_CallMethod(pyobj, (char*)"__assign__", (char*)"O", value); + Py_DECREF(pyobj); + if (result) { + Py_DECREF(result); + return true; + } + } + + return false; +} + +// TODO: CONSOLIDATE ValueCpp, RefCpp, and CppObject ... + +//---------------------------------------------------------------------------- +bool CPyCppyy::ValueCppObjectConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ instance, set arg for call + if (!CPPInstance_Check(pyobject)) + return false; + + CPPInstance* pyobj = (CPPInstance*)pyobject; + if (pyobj->ObjectIsA() && Cppyy::IsSubtype(pyobj->ObjectIsA(), fClass)) { + // calculate offset between formal and actual arguments + para.fValue.fVoidp = pyobj->GetObject(); + if (!para.fValue.fVoidp) + return false; + + if (pyobj->ObjectIsA() != fClass) { + para.fValue.fLong += Cppyy::GetBaseOffset( + pyobj->ObjectIsA(), fClass, para.fValue.fVoidp, 1 /* up-cast */); + } + + para.fTypeCode = 'V'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::RefCppObjectConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ instance&, set arg for call + if (!CPPInstance_Check(pyobject)) + return false; + CPPInstance* pyobj = (CPPInstance*)pyobject; + +// reject moves + if (pyobj->fFlags & CPPInstance::kIsRValue) + return false; + + if (pyobj->ObjectIsA() && Cppyy::IsSubtype(pyobj->ObjectIsA(), fClass)) { + // calculate offset between formal and actual arguments + para.fValue.fVoidp = pyobj->GetObject(); + if (pyobj->ObjectIsA() != fClass) { + para.fValue.fLong += Cppyy::GetBaseOffset( + pyobj->ObjectIsA(), fClass, para.fValue.fVoidp, 1 /* up-cast */); + } + + para.fTypeCode = 'V'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +#if PY_VERSION_HEX < 0x03000000 +const size_t refcount_cutoff = 1; +#else +// p3 has at least 2 ref-counts, as contrary to p2, it will create a descriptor +// copy for the method holding self in the case of __init__; but there can also +// be a reference held by the frame object, which is indistinguishable from a +// local variable reference, so the cut-off has to remain 2. +const size_t refcount_cutoff = 2; +#endif + +bool CPyCppyy::MoveCppObjectConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* ctxt) +{ +// convert to C++ instance&&, set arg for call + if (!CPPInstance_Check(pyobject)) + return false; + CPPInstance* pyobj = (CPPInstance*)pyobject; + +// moving is same as by-ref, but have to check that move is allowed + int moveit_reason = 0; + if (pyobj->fFlags & CPPInstance::kIsRValue) { + pyobj->fFlags &= ~CPPInstance::kIsRValue; + moveit_reason = 2; + } else if (pyobject->ob_refcnt == refcount_cutoff) { + moveit_reason = 1; + } + + if (moveit_reason) { + bool result = this->RefCppObjectConverter::SetArg(pyobject, para, ctxt); + if (!result && moveit_reason == 2) // restore the movability flag? + ((CPPInstance*)pyobject)->fFlags |= CPPInstance::kIsRValue; + return result; + } + + PyErr_SetString(PyExc_ValueError, "object is not an rvalue"); + return false; // not a temporary or movable object +} + +//---------------------------------------------------------------------------- +template +bool CPyCppyy::CppObjectPtrConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* ctxt) +{ +// convert to C++ instance**, set arg for call + if (!CPPInstance_Check(pyobject)) + return false; // not a cppyy object (TODO: handle SWIG etc.) + + CPPInstance* pyobj = (CPPInstance*)pyobject; + if (Cppyy::IsSubtype(pyobj->ObjectIsA(), fClass)) { + // depending on memory policy, some objects need releasing when passed into functions + if (!KeepControl() && !UseStrictOwnership(ctxt)) + pyobj->CppOwns(); + + // set pointer (may be null) and declare success + if (pyobj->fFlags & CPPInstance::kIsReference) + para.fValue.fVoidp = pyobj->fObject; // already a ptr to object + else + para.fValue.fVoidp = &pyobj->fObject; + para.fTypeCode = ISREFERENCE ? 'V' : 'p'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +template +PyObject* CPyCppyy::CppObjectPtrConverter::FromMemory(void* address) +{ +// construct python object from C++ instance* read at
    + return BindCppObject(address, fClass, CPPInstance::kIsReference); +} + +//---------------------------------------------------------------------------- +template +bool CPyCppyy::CppObjectPtrConverter::ToMemory(PyObject* value, void* address) +{ +// convert to C++ instance*, write it at
    + if (!CPPInstance_Check(value)) + return false; // not a cppyy object (TODO: handle SWIG etc.) + + if (Cppyy::IsSubtype(((CPPInstance*)value)->ObjectIsA(), fClass)) { + // depending on memory policy, some objects need releasing when passed into functions + if (!KeepControl() && CallContext::sMemoryPolicy != CallContext::kUseStrict) + ((CPPInstance*)value)->CppOwns(); + + // register the value for potential recycling + MemoryRegulator::RegisterPyObject((CPPInstance*)value, ((CPPInstance*)value)->GetObject()); + + // set pointer (may be null) and declare success + *(void**)address = ((CPPInstance*)value)->GetObject(); + return true; + } + + return false; +} + + +namespace CPyCppyy { +// Instantiate the templates + template class CPyCppyy::CppObjectPtrConverter; + template class CPyCppyy::CppObjectPtrConverter; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CppObjectArrayConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* txt */) +{ +// convert to C++ instance**, set arg for call + if (!TupleOfInstances_CheckExact(pyobject)) + return false; // no guarantee that the tuple is okay + +// treat the first instance of the tuple as the start of the array, and pass it +// by pointer (TODO: store and check sizes) + if (PyTuple_Size(pyobject) < 1) + return false; + + PyObject* first = PyTuple_GetItem(pyobject, 0); + if (!CPPInstance_Check(first)) + return false; // should not happen + + if (Cppyy::IsSubtype(((CPPInstance*)first)->ObjectIsA(), fClass)) { + // no memory policies supported; set pointer (may be null) and declare success + para.fValue.fVoidp = ((CPPInstance*)first)->fObject; + para.fTypeCode = 'p'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectArrayConverter::FromMemory(void* address) +{ +// construct python tuple of instances from C++ array read at
    + if (m_size <= 0) // if size unknown, just hand out the first object + return BindCppObjectNoCast(address, fClass); + + return BindCppObjectArray(address, fClass, m_size); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::CppObjectArrayConverter::ToMemory(PyObject* /* value */, void* /* address */) +{ +// convert to C++ array of instances, write it at
    + +// TODO: need to have size both for the array and from the input + PyErr_SetString(PyExc_NotImplementedError, + "access to C-arrays of objects not yet implemented!"); + return false; +} + +//___________________________________________________________________________ +// CLING WORKAROUND -- classes for STL iterators are completely undefined in that +// they come in a bazillion different guises, so just do whatever +bool CPyCppyy::STLIteratorConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ + if (!CPPInstance_Check(pyobject)) + return false; + +// just set the pointer value, no check + CPPInstance* pyobj = (CPPInstance*)pyobject; + para.fValue.fVoidp = pyobj->GetObject(); + para.fTypeCode = 'V'; + return true; +} +// -- END CLING WORKAROUND + +//---------------------------------------------------------------------------- +bool CPyCppyy::VoidPtrRefConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ void*&, set arg for call + if (CPPInstance_Check(pyobject)) { + para.fValue.fVoidp = &((CPPInstance*)pyobject)->fObject; + para.fTypeCode = 'V'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::VoidPtrPtrConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// convert to C++ void**, set arg for call + if (CPPInstance_Check(pyobject)) { + // this is a C++ object, take and set its address + para.fValue.fVoidp = &((CPPInstance*)pyobject)->fObject; + para.fTypeCode = 'p'; + return true; + } + +// buffer objects are allowed under "user knows best" + int buflen = Utility::GetBuffer(pyobject, '*', 1, para.fValue.fVoidp, false); + +// ok if buffer exists (can't perform any useful size checks) + if (para.fValue.fVoidp && buflen != 0) { + para.fTypeCode = 'p'; + return true; + } + + return false; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::VoidPtrPtrConverter::FromMemory(void* address) +{ +// read a void** from address; since this is unknown, long is used (user can cast) + if (!address || *(ptrdiff_t*)address == 0) { + Py_INCREF(gNullPtrObject); + return gNullPtrObject; + } + return CreatePointerView(*(ptrdiff_t**)address); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::PyObjectConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /* ctxt */) +{ +// by definition: set and declare success + para.fValue.fVoidp = pyobject; + para.fTypeCode = 'p'; + return true; +} + +PyObject* CPyCppyy::PyObjectConverter::FromMemory(void* address) +{ +// construct python object from C++ PyObject* read at
    + PyObject* pyobject = *((PyObject**)address); + + if (!pyobject) { + Py_RETURN_NONE; + } + + Py_INCREF(pyobject); + return pyobject; +} + +bool CPyCppyy::PyObjectConverter::ToMemory(PyObject* value, void* address) +{ +// no conversion needed, write at
    + Py_INCREF(value); + *((PyObject**)address) = value; + return true; +} + + +//- function pointer converter ----------------------------------------------- +bool CPyCppyy::FunctionPointerConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /*ctxt*/) +{ + if (!CPPOverload_Check(pyobject)) + return false; + + CPPOverload* ol = (CPPOverload*)pyobject; + if (!ol->fMethodInfo || ol->fMethodInfo->fMethods.empty()) + return false; + +// find the overload with matching signature + for (auto& m : ol->fMethodInfo->fMethods) { + PyObject* sig = m->GetSignature(false); + bool found = fSignature == CPyCppyy_PyUnicode_AsString(sig); + Py_DECREF(sig); + if (found) { + para.fValue.fVoidp = (void*)m->GetFunctionAddress(); + if (!para.fValue.fVoidp) + return false; + para.fTypeCode = 'p'; + return true; + } + } + + return false; +} + + +//- smart pointer converters ------------------------------------------------- +bool CPyCppyy::SmartPtrCppObjectConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* ctxt) +{ + char typeCode = fIsRef ? 'p' : 'V'; + + if (!CPPInstance_Check(pyobject)) { + if (fIsRef && GetAddressSpecialCase(pyobject, para.fValue.fVoidp)) { + para.fTypeCode = typeCode; // allow special cases such as nullptr + return true; + } + + return false; + } + + CPPInstance* pyobj = (CPPInstance*)pyobject; + +// for the case where we have a 'hidden' smart pointer: + if ((pyobj->fFlags & CPPInstance::kIsSmartPtr) && + Cppyy::IsSubtype(pyobj->fSmartPtrType, fSmartPtrType)) { + // depending on memory policy, some objects need releasing when passed into functions + if (fKeepControl && !UseStrictOwnership(ctxt)) + ((CPPInstance*)pyobject)->CppOwns(); + + // calculate offset between formal and actual arguments + para.fValue.fVoidp = pyobj->fObject; + if (pyobj->fSmartPtrType != fSmartPtrType) { + para.fValue.fLong += Cppyy::GetBaseOffset( + pyobj->fSmartPtrType, fSmartPtrType, para.fValue.fVoidp, 1 /* up-cast */); + } + + // set pointer (may be null) and declare success + para.fTypeCode = typeCode; + return true; + } + +// for the case where we have an 'exposed' smart pointer: + if (pyobj->ObjectIsA() && Cppyy::IsSubtype(pyobj->ObjectIsA(), fSmartPtrType)) { + // calculate offset between formal and actual arguments + para.fValue.fVoidp = pyobj->GetObject(); + if (pyobj->ObjectIsA() != fSmartPtrType) { + para.fValue.fLong += Cppyy::GetBaseOffset( + pyobj->ObjectIsA(), fSmartPtrType, para.fValue.fVoidp, 1 /* up-cast */); + } + + // set pointer (may be null) and declare success + para.fTypeCode = typeCode; + return true; + } + + return false; +} + +PyObject* CPyCppyy::SmartPtrCppObjectConverter::FromMemory(void* address) +{ + if (!address || !fSmartPtrType) + return nullptr; + +// TODO: note the mismatch between address, which is the smart pointer, and the +// declared type, which is the raw pointer + CPPInstance* pyobj = (CPPInstance*)BindCppObjectNoCast(address, fRawPtrType); + if (pyobj) + pyobj->SetSmartPtr(fSmartPtrType, fDereferencer); + + return (PyObject*)pyobj; +} + + +//---------------------------------------------------------------------------- +namespace { + +// clang libcpp and gcc use the same structure (ptr, size) +#if defined (_LIBCPP_INITIALIZER_LIST) || defined(__GNUC__) +struct faux_initlist +{ + typedef size_t size_type; + typedef void* iterator; + iterator _M_array; + size_type _M_len; +}; +#else +#define NO_KNOWN_INITIALIZER_LIST 1 +#endif + +} // unnamed namespace + +bool CPyCppyy::InitializerListConverter::SetArg( + PyObject* pyobject, Parameter& para, CallContext* /*ctxt*/) +{ +#ifdef NO_KNOWN_INITIALIZER_LIST + return false; +#else +// convert the given argument to an initializer list temporary + if (!PySequence_Check(pyobject)) + return false; + +// can only construct empty lists, so use a fake initializer list + size_t len = (size_t)PySequence_Size(pyobject); + faux_initlist* fake = (faux_initlist*)malloc(sizeof(faux_initlist)+fValueSize*len); + fake->_M_len = (faux_initlist::size_type)len; + fake->_M_array = (faux_initlist::iterator)((char*)fake+sizeof(faux_initlist)); + + for (faux_initlist::size_type i = 0; i < fake->_M_len; ++i) { + PyObject* item = PySequence_GetItem(pyobject, i); + if (!fConverter->ToMemory(item, (char*)fake->_M_array + i*fValueSize)) { + Py_DECREF(item); + free((void*)fake); + return false; + } + Py_DECREF(item); + } + +// TODO: this passes, but how to clean up? + para.fValue.fVoidp = (void*)fake; + para.fTypeCode = 'X'; + return true; +#endif +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::NotImplementedConverter::SetArg(PyObject*, Parameter&, CallContext*) +{ +// raise a NotImplemented exception to take a method out of overload resolution + PyErr_SetString(PyExc_NotImplementedError, "this method can not (yet) be called"); + return false; +} + + +//- factories ---------------------------------------------------------------- +CPyCppyy::Converter* CPyCppyy::CreateConverter(const std::string& fullType, long size) +{ +// The matching of the fulltype to a converter factory goes through up to five levels: +// 1) full, exact match +// 2) match of decorated, unqualified type +// 3) accept const ref as by value +// 4) accept ref as pointer +// 5) generalized cases (covers basically all C++ classes) +// +// If all fails, void is used, which will generate a run-time warning when used. + +// an exactly matching converter is best + ConvFactories_t::iterator h = gConvFactories.find(fullType); + if (h != gConvFactories.end()) + return (h->second)(size); + +// resolve typedefs etc. + const std::string& resolvedType = Cppyy::ResolveName(fullType); + +// a full, qualified matching converter is preferred + if (resolvedType != fullType) { + h = gConvFactories.find(resolvedType); + if (h != gConvFactories.end()) + return (h->second)(size); + } + +//-- nothing? ok, collect information about the type and possible qualifiers/decorators + bool isConst = strncmp(resolvedType.c_str(), "const", 5) == 0; + const std::string& cpd = Utility::Compound(resolvedType); + std::string realType = TypeManip::clean_type(resolvedType, false, true); + +// accept unqualified type (as python does not know about qualifiers) + h = gConvFactories.find(realType + cpd); + if (h != gConvFactories.end()) + return (h->second)(size); + +// drop const, as that is mostly meaningless to python (with the exception +// of c-strings, but those are specialized in the converter map) + if (isConst) { + realType = TypeManip::remove_const(realType); + h = gConvFactories.find(realType + cpd); + if (h != gConvFactories.end()) + return (h->second)(size); + } + +// CLING WORKAROUND -- if the type is a fixed-size array, it will have a funky +// resolved type like MyClass(&)[N], which TClass::GetClass() fails on. So, strip +// it down: +/* TODO: remove TClassEdit usage + if (cpd == "[]") + realType = TClassEdit::CleanType(realType.substr(0, realType.rfind("(")).c_str(), 1); +*/ +// -- CLING WORKAROUND + +//-- still nothing? try pointer instead of array (for builtins) + if (cpd == "[]") { + h = gConvFactories.find(realType + "*"); + if (h != gConvFactories.end()) + return (h->second)(size); + } + +//-- special case: initializer list + auto pos = realType.find("initializer_list"); + if (pos == 0 /* no std:: */ || pos == 5 /* with std:: */) { + // get the type of the list and create a converter (TODO: get hold of value_type?) + auto pos2 = realType.find('<'); + std::string value_type = realType.substr(pos2+1, realType.size()-pos2-2); + Converter* cnv = CreateConverter(value_type); + if (cnv) + return new InitializerListConverter(cnv, Cppyy::SizeOf(value_type)); + } + +//-- still nothing? use a generalized converter + bool control = cpd == "&" || isConst; + +// converters for known C++ classes and default (void*) + Converter* result = nullptr; + if (Cppyy::TCppScope_t klass = Cppyy::GetScope(realType)) { + Cppyy::TCppType_t raw; Cppyy::TCppMethod_t deref; + if (Cppyy::GetSmartPtrInfo(realType, raw, deref)) { + if (cpd == "") { + result = new SmartPtrCppObjectConverter(klass, raw, deref, control); + } else if (cpd == "&") { + result = new SmartPtrCppObjectConverter(klass, raw, deref); + } else if (cpd == "*" && size <= 0) { + result = new SmartPtrCppObjectConverter(klass, raw, deref, control, true); + } + } + + if (!result) { + // CLING WORKAROUND -- special case for STL iterators + if (realType.find("__gnu_cxx::__normal_iterator", 0) /* vector */ == 0) + result = new STLIteratorConverter(); + else + // -- CLING WORKAROUND + if (cpd == "**" || cpd == "*[]" || cpd == "&*") + result = new CppObjectPtrConverter(klass, control); + else if (cpd == "*&") + result = new CppObjectPtrConverter(klass, control); + else if (cpd == "*" && size <= 0) + result = new CppObjectConverter(klass, control); + else if (cpd == "&") + result = new RefCppObjectConverter(klass); + else if (cpd == "&&") + result = new MoveCppObjectConverter(klass); + else if (cpd == "[]" || size > 0) + result = new CppObjectArrayConverter(klass, size, false); + else if (cpd == "") // by value + result = new ValueCppObjectConverter(klass, true); + } + } else if (resolvedType.find("(*)") != std::string::npos || + (resolvedType.find("::*)") != std::string::npos)) { + // this is a function function pointer + // TODO: find better way of finding the type + // TODO: a converter that generates wrappers as appropriate + auto pos2 = resolvedType.find("*)"); + result = new FunctionPointerConverter(resolvedType.substr(pos2+2)); + } + + if (!result && cpd == "&&") // unhandled moves + result = new NotImplementedConverter(); + + if (!result && h != gConvFactories.end()) + // converter factory available, use it to create converter + result = (h->second)(size); + else if (!result) { + if (cpd != "") { + result = new VoidArrayConverter(); // "user knows best" + } else { + result = new VoidConverter(); // fails on use + } + } + + return result; +} + +//---------------------------------------------------------------------------- +namespace { + +using namespace CPyCppyy; + +static struct InitConvFactories_t { +public: + InitConvFactories_t() { + // load all converter factories in the global map 'gConvFactories' + CPyCppyy::ConvFactories_t& gf = gConvFactories; + + // factories for built-ins + gf["bool"] = (cf_t)+[](long) { return new BoolConverter{}; }; + gf["const bool&"] = (cf_t)+[](long) { return new ConstBoolRefConverter{}; }; + gf["char"] = (cf_t)+[](long) { return new CharConverter{}; }; + gf["const char&"] = (cf_t)+[](long) { return new ConstCharRefConverter{}; }; + gf["signed char"] = (cf_t)+[](long) { return new CharConverter{}; }; + gf["const signed char&"] = (cf_t)+[](long) { return new ConstCharRefConverter{}; }; + gf["unsigned char"] = (cf_t)+[](long) { return new UCharConverter{}; }; + gf["const unsigned char&"] = (cf_t)+[](long) { return new ConstUCharRefConverter{}; }; + gf["UCharAsInt"] = (cf_t)+[](long) { return new UCharAsIntConverter{}; }; + gf["short"] = (cf_t)+[](long) { return new ShortConverter{}; }; + gf["const short&"] = (cf_t)+[](long) { return new ConstShortRefConverter{}; }; + gf["unsigned short"] = (cf_t)+[](long) { return new UShortConverter{}; }; + gf["const unsigned short&"] = (cf_t)+[](long) { return new ConstUShortRefConverter{}; }; + gf["int"] = (cf_t)+[](long) { return new IntConverter{}; }; + gf["int&"] = (cf_t)+[](long) { return new IntRefConverter{}; }; + gf["const int&"] = (cf_t)+[](long) { return new ConstIntRefConverter{}; }; + gf["unsigned int"] = (cf_t)+[](long) { return new UIntConverter{}; }; + gf["const unsigned int&"] = (cf_t)+[](long) { return new ConstUIntRefConverter{}; }; + gf["internal_enum_type_t"] = (cf_t)+[](long) { return new IntConverter{}; }; + gf["internal_enum_type_t&"] = (cf_t)+[](long) { return new IntRefConverter{}; }; + gf["long"] = (cf_t)+[](long) { return new LongConverter{}; }; + gf["long&"] = (cf_t)+[](long) { return new LongRefConverter{}; }; + gf["const long&"] = (cf_t)+[](long) { return new ConstLongRefConverter{}; }; + gf["unsigned long"] = (cf_t)+[](long) { return new ULongConverter{}; }; + gf["const unsigned long&"] = (cf_t)+[](long) { return new ConstULongRefConverter{}; }; + gf["long long"] = (cf_t)+[](long) { return new LongLongConverter{}; }; + gf["const long long&"] = (cf_t)+[](long) { return new ConstLongLongRefConverter{}; }; + gf["unsigned long long"] = (cf_t)+[](long) { return new ULongLongConverter{}; }; + gf["const unsigned long long&"] = (cf_t)+[](long) { return new ConstULongLongRefConverter{}; }; + + gf["float"] = (cf_t)+[](long) { return new FloatConverter{}; }; + gf["const float&"] = (cf_t)+[](long) { return new ConstFloatRefConverter{}; }; + gf["double"] = (cf_t)+[](long) { return new DoubleConverter{}; }; + gf["double&"] = (cf_t)+[](long) { return new DoubleRefConverter{}; }; + gf["const double&"] = (cf_t)+[](long) { return new ConstDoubleRefConverter{}; }; + gf["long double"] = (cf_t)+[](long) { return new LongDoubleConverter{}; }; + gf["const long double&"] = (cf_t)+[](long) { return new ConstLongDoubleRefConverter{}; }; + gf["void"] = (cf_t)+[](long) { return new VoidConverter{}; }; + + // pointer/array factories + gf["bool*"] = (cf_t)+[](long sz) { return new BoolArrayConverter{sz}; }; + gf["bool&"] = (cf_t)+[](long sz) { return new BoolArrayRefConverter{sz}; }; + gf["const unsigned char*"] = (cf_t)+[](long sz) { return new UCharArrayConverter{sz}; }; + gf["unsigned char*"] = (cf_t)+[](long sz) { return new UCharArrayConverter{sz}; }; + gf["short*"] = (cf_t)+[](long sz) { return new ShortArrayConverter{sz}; }; + gf["short&"] = (cf_t)+[](long sz) { return new ShortArrayRefConverter{sz}; }; + gf["unsigned short*"] = (cf_t)+[](long sz) { return new UShortArrayConverter{sz}; }; + gf["unsigned short&"] = (cf_t)+[](long sz) { return new UShortArrayRefConverter{sz}; }; + gf["int*"] = (cf_t)+[](long sz) { return new IntArrayConverter{sz}; }; + gf["unsigned int*"] = (cf_t)+[](long sz) { return new UIntArrayConverter{sz}; }; + gf["unsigned int&"] = (cf_t)+[](long sz) { return new UIntArrayRefConverter{sz}; }; + gf["long*"] = (cf_t)+[](long sz) { return new LongArrayConverter{sz}; }; + gf["unsigned long*"] = (cf_t)+[](long sz) { return new ULongArrayConverter{sz}; }; + gf["unsigned long&"] = (cf_t)+[](long sz) { return new ULongArrayRefConverter{sz}; }; + gf["float*"] = (cf_t)+[](long sz) { return new FloatArrayConverter{sz}; }; + gf["float&"] = (cf_t)+[](long sz) { return new FloatArrayRefConverter{sz}; }; + gf["double*"] = (cf_t)+[](long sz) { return new DoubleArrayConverter{sz}; }; + gf["long long*"] = (cf_t)+[](long sz) { return new LLongArrayConverter{sz}; }; + gf["long long&"] = (cf_t)+[](long sz) { return new LLongArrayRefConverter{sz}; }; + gf["unsigned long long*"] = (cf_t)+[](long sz) { return new ULLongArrayConverter{sz}; }; + gf["unsigned long long&"] = (cf_t)+[](long sz) { return new ULLongArrayRefConverter{sz}; }; + gf["void*"] = (cf_t)+[](long sz) { return new VoidArrayConverter{static_cast(sz)}; }; + + // aliases + gf["Long64_t"] = gf["long long"]; + gf["Long64_t*"] = gf["long long*"]; + gf["Long64_t&"] = gf["long long&"]; + gf["const Long64_t&"] = gf["const long long&"]; + gf["ULong64_t"] = gf["unsigned long long"]; + gf["ULong64_t*"] = gf["unsigned long long*"]; + gf["ULong64_t&"] = gf["unsigned long long&"]; + gf["const ULong64_t&"] = gf["const unsigned long long&"]; + + // factories for special cases + gf["const char*"] = (cf_t)+[](long) { return new CStringConverter{}; }; + gf["const char[]"] = (cf_t)+[](long) { return new CStringConverter{}; }; + gf["char*"] = (cf_t)+[](long) { return new NonConstCStringConverter{}; }; + gf["std::string"] = (cf_t)+[](long) { return new STLStringConverter{}; }; + gf["string"] = (cf_t)+[](long) { return new STLStringConverter{}; }; + gf["const std::string&"] = (cf_t)+[](long) { return new STLStringConverter{}; }; + gf["const string&"] = (cf_t)+[](long) { return new STLStringConverter{}; }; +#if __cplusplus > 201402L + gf["std::string_view"] = (cf_t)+[](long) { return new STLStringViewConverter{}; }; + gf["string_view"] = (cf_t)+[](long) { return new STLStringViewConverter{}; }; + gf["experimental::basic_string_view >"] = (cf_t)+[](long) { return new STLStringViewConverter{}; }; +#endif + gf["void*&"] = (cf_t)+[](long) { return new VoidPtrRefConverter{}; }; + gf["void**"] = (cf_t)+[](long) { return new VoidPtrPtrConverter{}; }; + gf["void*[]"] = (cf_t)+[](long) { return new VoidPtrPtrConverter{}; }; + gf["PyObject*"] = (cf_t)+[](long) { return new PyObjectConverter{}; }; + gf["_object*"] = (cf_t)+[](long) { return new PyObjectConverter{}; }; + gf["FILE*"] = (cf_t)+[](long) { return new VoidArrayConverter{}; }; + gf["Float16_t"] = (cf_t)+[](long) { return new FloatConverter{}; }; + gf["const Float16_t&"] = (cf_t)+[](long) { return new ConstFloatRefConverter{}; }; + gf["Double32_t"] = (cf_t)+[](long) { return new DoubleConverter{}; }; + gf["Double32_t&"] = (cf_t)+[](long) { return new DoubleRefConverter{}; }; + gf["const Double32_t&"] = (cf_t)+[](long) { return new ConstDoubleRefConverter{}; }; + } +} initConvFactories_; + +} // unnamed namespace diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.h new file mode 100644 index 0000000000000..d1e9637b1a01e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.h @@ -0,0 +1,69 @@ +#ifndef CPYCPPYY_CONVERTERS_H +#define CPYCPPYY_CONVERTERS_H + +// Standard +#include + + +namespace CPyCppyy { + +struct Parameter; +struct CallContext; + +class Converter { +public: + virtual ~Converter() {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr) = 0; + virtual PyObject* FromMemory(void* address); + virtual bool ToMemory(PyObject* value, void* address); +}; + +// create converter from fully qualified type +Converter* CreateConverter(const std::string& fullType, Long_t size = -1); + + +// converters for special cases (only here b/c of external use of StrictCppObjectConverter) +class VoidArrayConverter : public Converter { +public: + VoidArrayConverter(bool keepControl = true) { fKeepControl = keepControl; } + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); + virtual bool ToMemory(PyObject* value, void* address); + +protected: + virtual bool GetAddressSpecialCase(PyObject* pyobject, void*& address); + bool KeepControl() { return fKeepControl; } + +private: + bool fKeepControl; +}; + +class CppObjectConverter : public VoidArrayConverter { +public: + CppObjectConverter(Cppyy::TCppType_t klass, bool keepControl = false) : + VoidArrayConverter(keepControl), fClass(klass) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); + virtual bool ToMemory(PyObject* value, void* address); + +protected: + Cppyy::TCppType_t fClass; +}; + +class StrictCppObjectConverter : public CppObjectConverter { +public: + using CppObjectConverter::CppObjectConverter; + +protected: + virtual bool GetAddressSpecialCase(PyObject*, void*&) { return false; } +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CONVERTERS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Cppyy.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Cppyy.h new file mode 100644 index 0000000000000..1e13cc9a58d34 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Cppyy.h @@ -0,0 +1,139 @@ +#ifndef CPYCPPYY_CPPYY_H +#define CPYCPPYY_CPPYY_H + +// Standard +#include +#include +#include +#include + + +namespace Cppyy { + + typedef ptrdiff_t TCppScope_t; + typedef TCppScope_t TCppType_t; + typedef void* TCppObject_t; + typedef ptrdiff_t TCppMethod_t; + + typedef long TCppIndex_t; + typedef void* TCppFuncAddr_t; + +// name to opaque C++ scope representation ----------------------------------- + std::string ResolveName(const std::string& cppitem_name); + std::string ResolveEnum(const std::string& enum_type); + TCppScope_t GetScope(const std::string& scope_name); + TCppType_t GetActualClass(TCppType_t klass, TCppObject_t obj); + size_t SizeOf(TCppType_t klass); + size_t SizeOf(const std::string& type_name); + + bool IsBuiltin(const std::string& type_name); + bool IsComplete(const std::string& type_name); + + extern TCppScope_t gGlobalScope; // for fast access + +// memory management --------------------------------------------------------- + TCppObject_t Allocate(TCppType_t type); + void Deallocate(TCppType_t type, TCppObject_t instance); + TCppObject_t Construct(TCppType_t type); + void Destruct(TCppType_t type, TCppObject_t instance); + +// method/function dispatching ----------------------------------------------- + void CallV(TCppMethod_t method, TCppObject_t self, void* args); + unsigned char CallB(TCppMethod_t method, TCppObject_t self, void* args); + char CallC(TCppMethod_t method, TCppObject_t self, void* args); + short CallH(TCppMethod_t method, TCppObject_t self, void* args); + int CallI(TCppMethod_t method, TCppObject_t self, void* args); + long CallL(TCppMethod_t method, TCppObject_t self, void* args); + Long64_t CallLL(TCppMethod_t method, TCppObject_t self, void* args); + float CallF(TCppMethod_t method, TCppObject_t self, void* args); + double CallD(TCppMethod_t method, TCppObject_t self, void* args); + LongDouble_t CallLD(TCppMethod_t method, TCppObject_t self, void* args); + void* CallR(TCppMethod_t method, TCppObject_t self, void* args); + char* CallS(TCppMethod_t method, TCppObject_t self, void* args, size_t* length); + TCppObject_t CallConstructor(TCppMethod_t method, TCppType_t type, void* args); + void CallDestructor(TCppType_t type, TCppObject_t self); + TCppObject_t CallO(TCppMethod_t method, TCppObject_t self, void* args, TCppType_t result_type); + + TCppFuncAddr_t GetFunctionAddress(TCppScope_t scope, TCppIndex_t imeth); + TCppFuncAddr_t GetFunctionAddress(TCppMethod_t method); + +// handling of function argument buffer -------------------------------------- + void* AllocateFunctionArgs(size_t nargs); + void DeallocateFunctionArgs(void* args); + size_t GetFunctionArgSizeof(); + size_t GetFunctionArgTypeoffset(); + +// scope reflection information ---------------------------------------------- + bool IsNamespace(TCppScope_t scope); + bool IsTemplate(const std::string& template_name); + bool IsAbstract(TCppType_t type); + bool IsEnum(const std::string& type_name); + + void GetAllCppNames(TCppScope_t scope, std::set& cppnames); + +// class reflection information ---------------------------------------------- + std::string GetFinalName(TCppType_t type); + std::string GetScopedFinalName(TCppType_t type); + bool HasComplexHierarchy(TCppType_t type); + TCppIndex_t GetNumBases(TCppType_t type); + std::string GetBaseName(TCppType_t type, TCppIndex_t ibase); + bool IsSubtype(TCppType_t derived, TCppType_t base); + bool GetSmartPtrInfo(const std::string&, TCppType_t& raw, TCppMethod_t& deref); + void AddSmartPtrType(const std::string&); + +// calculate offsets between declared and actual type, up-cast: direction > 0; down-cast: direction < 0 + ptrdiff_t GetBaseOffset( + TCppType_t derived, TCppType_t base, TCppObject_t address, int direction, bool rerror = false); + +// method/function reflection information ------------------------------------ + TCppIndex_t GetNumMethods(TCppScope_t scope); + std::vector GetMethodIndicesFromName( + TCppScope_t scope, const std::string& name); + + TCppMethod_t GetMethod(TCppScope_t scope, TCppIndex_t imeth); + + std::string GetMethodName(TCppMethod_t); + std::string GetMethodMangledName(TCppMethod_t); + std::string GetMethodResultType(TCppMethod_t); + TCppIndex_t GetMethodNumArgs(TCppMethod_t); + TCppIndex_t GetMethodReqArgs(TCppMethod_t); + std::string GetMethodArgName(TCppMethod_t, int iarg); + std::string GetMethodArgType(TCppMethod_t, int iarg); + std::string GetMethodArgDefault(TCppMethod_t, int iarg); + std::string GetMethodSignature(TCppScope_t scope, TCppIndex_t imeth, bool show_formalargs); + std::string GetMethodPrototype(TCppScope_t scope, TCppIndex_t imeth, bool show_formalargs); + bool IsConstMethod(TCppMethod_t); + + bool ExistsMethodTemplate(TCppScope_t scope, const std::string& name); + bool IsMethodTemplate(TCppScope_t scope, TCppIndex_t imeth); + TCppIndex_t GetMethodNumTemplateArgs(TCppScope_t scope, TCppIndex_t imeth); + std::string GetMethodTemplateArgName(TCppScope_t scope, TCppIndex_t imeth, TCppIndex_t iarg); + + TCppMethod_t GetMethodTemplate( + TCppScope_t scope, const std::string& name, const std::string& proto); + TCppIndex_t GetGlobalOperator( + TCppType_t scope, TCppType_t lc, TCppScope_t rc, const std::string& op); + +// method properties --------------------------------------------------------- + bool IsPublicMethod(TCppMethod_t method); + bool IsConstructor(TCppMethod_t method); + bool IsDestructor(TCppMethod_t method); + bool IsStaticMethod(TCppMethod_t method); + +// data member reflection information ---------------------------------------- + TCppIndex_t GetNumDatamembers(TCppScope_t scope); + std::string GetDatamemberName(TCppScope_t scope, TCppIndex_t idata); + std::string GetDatamemberType(TCppScope_t scope, TCppIndex_t idata); + ptrdiff_t GetDatamemberOffset(TCppScope_t scope, TCppIndex_t idata); + TCppIndex_t GetDatamemberIndex(TCppScope_t scope, const std::string& name); + +// data member properties ---------------------------------------------------- + bool IsPublicData(TCppScope_t scope, TCppIndex_t idata); + bool IsStaticData(TCppScope_t scope, TCppIndex_t idata); + bool IsConstData(TCppScope_t scope, TCppIndex_t idata); + bool IsEnumData(TCppScope_t scope, TCppIndex_t idata); + int GetDimensionSize(TCppScope_t scope, TCppIndex_t idata, int dimension); + +} // namespace Cppyy + +#endif // !CPYCPPYY_CPPYY_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.cxx new file mode 100644 index 0000000000000..52b5d66c6d02b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.cxx @@ -0,0 +1,327 @@ +// Bindings +#include "CPyCppyy.h" +#include "CustomPyTypes.h" + +#if PY_VERSION_HEX >= 0x03000000 +// TODO: this will break functionality +#define PyMethod_GET_CLASS(meth) Py_None +#endif + + +namespace CPyCppyy { + +//= float type allowed for reference passing ================================= +PyTypeObject RefFloat_Type = { // python float is a C/C++ double + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.Double", // tp_name + 0, // tp_basicsize + 0, // tp_itemsize + 0, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_BASETYPE, // tp_flags + (char*)"CPyCppyy float object for pass by reference", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + &PyFloat_Type, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + 0, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +//= long type allowed for reference passing ================================== +PyTypeObject RefInt_Type = { // python int is a C/C++ long + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.Long", // tp_name + 0, // tp_basicsize + 0, // tp_itemsize + 0, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_BASETYPE, // tp_flags + (char*)"CPyCppyy long object for pass by reference", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + &PyInt_Type, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + 0, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +//= instancemethod object with a more efficient call function ================ +static PyMethodObject* free_list; +static int numfree = 0; +#ifndef PyMethod_MAXFREELIST +#define PyMethod_MAXFREELIST 256 +#endif + +//----------------------------------------------------------------------------- +PyObject* CustomInstanceMethod_New(PyObject* func, PyObject* self, PyObject* +#if PY_VERSION_HEX < 0x03000000 + pyclass +#endif + ) +{ +// from instancemethod, but with custom type (at issue is that instancemethod is not +// meant to be derived from) + PyMethodObject* im; + if (!PyCallable_Check(func)) { + PyErr_Format(PyExc_SystemError, + "%s:%d: bad argument to internal function", __FILE__, __LINE__); + return nullptr; + } + + im = free_list; + if (im != nullptr) { + free_list = (PyMethodObject*)(im->im_self); + (void)PyObject_INIT(im, &CustomInstanceMethod_Type); + } + else { + im = PyObject_GC_New(PyMethodObject, &CustomInstanceMethod_Type); + if (im == nullptr) + return nullptr; + } + + im->im_weakreflist = nullptr; + Py_INCREF(func); + im->im_func = func; + Py_XINCREF(self); + im->im_self = self; +#if PY_VERSION_HEX < 0x03000000 + Py_XINCREF(pyclass); + im->im_class = pyclass; +#endif + PyObject_GC_Track(im); + return (PyObject*)im; +} + +//----------------------------------------------------------------------------- +static void im_dealloc(PyMethodObject* im) +{ +// from instancemethod, but with custom type (at issue is that instancemethod is not +// meant to be derived from) + PyObject_GC_UnTrack(im); + + if (im->im_weakreflist != nullptr) + PyObject_ClearWeakRefs((PyObject*)im); + + Py_DECREF(im->im_func); + Py_XDECREF(im->im_self); +#if PY_VERSION_HEX < 0x03000000 + Py_XDECREF(im->im_class); +#endif + + if (numfree < PyMethod_MAXFREELIST) { + im->im_self = (PyObject*)free_list; + free_list = im; + numfree++; + } else { + PyObject_GC_Del(im); + } +} + +//----------------------------------------------------------------------------- +static PyObject* im_call(PyObject* meth, PyObject* args, PyObject* kw) +{ +// The mapping from a method to a function involves reshuffling of self back +// into the list of arguments. However, the pythonized methods will then have +// to undo that shuffling, which is inefficient. This method is the same as +// the one for the instancemethod object, except for the shuffling. + PyObject* self = PyMethod_GET_SELF(meth); + + if (!self) { + // unbound methods must be called with an instance of the class (or a + // derived class) as first argument + Py_ssize_t argc = PyTuple_GET_SIZE(args); + PyObject* pyclass = PyMethod_GET_CLASS(meth); + if (1 <= argc && PyObject_IsInstance(PyTuple_GET_ITEM(args, 0), pyclass) == 1) { + self = PyTuple_GET_ITEM(args, 0); + + PyObject* newArgs = PyTuple_New(argc-1); + for (int i = 1; i < argc; ++i) { + PyObject* v = PyTuple_GET_ITEM(args, i); + Py_INCREF(v); + PyTuple_SET_ITEM(newArgs, i-1, v); + } + + args = newArgs; + + } else + return PyMethod_Type.tp_call(meth, args, kw); // will set proper error msg + + } else + Py_INCREF(args); + + PyCFunctionObject* func = (PyCFunctionObject*)PyMethod_GET_FUNCTION(meth); + +// the function is globally shared, so set and reset its "self" (ok, b/c of GIL) + Py_INCREF(self); + func->m_self = self; + PyObject* result = PyCFunction_Call((PyObject*)func, args, kw); + func->m_self = nullptr; + Py_DECREF(self); + Py_DECREF(args); + return result; +} + +//----------------------------------------------------------------------------- +static PyObject* im_descr_get(PyObject* meth, PyObject* obj, PyObject* pyclass) +{ +// from instancemethod: don't rebind an already bound method, or an unbound method +// of a class that's not a base class of pyclass + if (PyMethod_GET_SELF(meth) +#if PY_VERSION_HEX < 0x03000000 + || (PyMethod_GET_CLASS(meth) && + !PyObject_IsSubclass(pyclass, PyMethod_GET_CLASS(meth))) +#endif + ) { + Py_INCREF(meth); + return meth; + } + + if (obj == Py_None) + obj = nullptr; + + return CustomInstanceMethod_New(PyMethod_GET_FUNCTION(meth), obj, pyclass); +} + +//= CPyCppyy custom instance method type ===================================== +PyTypeObject CustomInstanceMethod_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.InstanceMethod", // tp_name + 0, // tp_basicsize + 0, // tp_itemsize + (destructor)im_dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + im_call, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_BASETYPE, // tp_flags + (char*)"CPyCppyy custom instance method (internal)", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + &PyMethod_Type, // tp_base + 0, // tp_dict + im_descr_get, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + 0, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.h new file mode 100644 index 0000000000000..7078ad491c17e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/CustomPyTypes.h @@ -0,0 +1,59 @@ +#ifndef CPYCPPYY_CUSTOMPYTYPES_H +#define CPYCPPYY_CUSTOMPYTYPES_H + +namespace CPyCppyy { + +/** Custom "builtins," detectable by type, for pass by ref and improved + performance. + */ + +//- reference float object type and type verification ------------------------ +extern PyTypeObject RefFloat_Type; + +template +inline bool RefFloat_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &RefFloat_Type); +} + +template +inline bool RefFloat_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &RefFloat_Type; +} + +//- reference long object type and type verification ------------------------- +extern PyTypeObject RefInt_Type; + +template +inline bool RefInt_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &RefInt_Type); +} + +template +inline bool RefInt_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &RefInt_Type; +} + +//- custom instance method object type and type verification ----------------- +extern PyTypeObject CustomInstanceMethod_Type; + +template +inline bool CustomInstanceMethod_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &CustomInstanceMethod_Type); +} + +template +inline bool CustomInstanceMethod_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &CustomInstanceMethod_Type; +} + +PyObject* CustomInstanceMethod_New(PyObject* func, PyObject* self, PyObject* pyclass); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_CUSTOMPYTYPES_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareConverters.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareConverters.h new file mode 100644 index 0000000000000..264ecbdc53f54 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareConverters.h @@ -0,0 +1,291 @@ +#ifndef CPYCPPYY_DECLARECONVERTERS_H +#define CPYCPPYY_DECLARECONVERTERS_H + +// Bindings +#include "Converters.h" + +// Standard +#include + + +namespace CPyCppyy { + +namespace { + +#define CPPYY_DECLARE_BASIC_CONVERTER(name) \ +class name##Converter : public Converter { \ +public: \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ + virtual PyObject* FromMemory(void*); \ + virtual bool ToMemory(PyObject*, void*); \ +}; \ + \ +class Const##name##RefConverter : public Converter { \ +public: \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ +} + + +#define CPPYY_DECLARE_BASIC_CONVERTER2(name, base) \ +class name##Converter : public base##Converter { \ +public: \ + virtual PyObject* FromMemory(void*); \ + virtual bool ToMemory(PyObject*, void*); \ +}; \ + \ +class Const##name##RefConverter : public Converter { \ +public: \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ +} + +#define CPPYY_DECLARE_REF_CONVERTER(name) \ +class name##RefConverter : public Converter { \ +public: \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ +}; + +#define CPPYY_DECLARE_ARRAY_CONVERTER(name) \ +class name##Converter : public Converter { \ +public: \ + name##Converter(Py_ssize_t size = -1) { fSize = size; } \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ + virtual PyObject* FromMemory(void*); \ + virtual bool ToMemory(PyObject*, void*); \ +private: \ + Py_ssize_t fSize; \ +}; \ + \ +class name##RefConverter : public name##Converter { \ +public: \ + using name##Converter::name##Converter; \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ +} + +// converters for built-ins +CPPYY_DECLARE_BASIC_CONVERTER(Long); +CPPYY_DECLARE_BASIC_CONVERTER(Bool); +CPPYY_DECLARE_BASIC_CONVERTER(Char); +CPPYY_DECLARE_BASIC_CONVERTER(UChar); +class UCharAsIntConverter : public UCharConverter { +public: + using UCharConverter::UCharConverter; + virtual PyObject* FromMemory(void*); +}; +CPPYY_DECLARE_BASIC_CONVERTER(Short); +CPPYY_DECLARE_BASIC_CONVERTER(UShort); +CPPYY_DECLARE_BASIC_CONVERTER(Int); +CPPYY_DECLARE_BASIC_CONVERTER(ULong); +CPPYY_DECLARE_BASIC_CONVERTER2(UInt, ULong); +CPPYY_DECLARE_BASIC_CONVERTER(LongLong); +CPPYY_DECLARE_BASIC_CONVERTER(ULongLong); +CPPYY_DECLARE_BASIC_CONVERTER(Double); +CPPYY_DECLARE_BASIC_CONVERTER(Float); +CPPYY_DECLARE_BASIC_CONVERTER(LongDouble); + +CPPYY_DECLARE_REF_CONVERTER(Int); +CPPYY_DECLARE_REF_CONVERTER(Long); +CPPYY_DECLARE_REF_CONVERTER(Double); + +class VoidConverter : public Converter { +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; + +class CStringConverter : public Converter { +public: + CStringConverter(long maxSize = -1) : fMaxSize(maxSize) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); + virtual bool ToMemory(PyObject* value, void* address); + +protected: + std::string fBuffer; + long fMaxSize; +}; + +class NonConstCStringConverter : public CStringConverter { +public: + NonConstCStringConverter(long maxSize = -1) : CStringConverter(maxSize) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); +}; + +// pointer/array conversions +CPPYY_DECLARE_ARRAY_CONVERTER(BoolArray); +CPPYY_DECLARE_ARRAY_CONVERTER(UCharArray); +CPPYY_DECLARE_ARRAY_CONVERTER(ShortArray); +CPPYY_DECLARE_ARRAY_CONVERTER(UShortArray); +CPPYY_DECLARE_ARRAY_CONVERTER(IntArray); +CPPYY_DECLARE_ARRAY_CONVERTER(UIntArray); +CPPYY_DECLARE_ARRAY_CONVERTER(LongArray); +CPPYY_DECLARE_ARRAY_CONVERTER(ULongArray); +CPPYY_DECLARE_ARRAY_CONVERTER(LLongArray); +CPPYY_DECLARE_ARRAY_CONVERTER(ULLongArray); +CPPYY_DECLARE_ARRAY_CONVERTER(FloatArray); +CPPYY_DECLARE_ARRAY_CONVERTER(DoubleArray); + +class LongLongArrayConverter : public VoidArrayConverter { +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; + +// converters for special cases +class ValueCppObjectConverter : public StrictCppObjectConverter { +public: + using StrictCppObjectConverter::StrictCppObjectConverter; + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; + +class RefCppObjectConverter : public Converter { +public: + RefCppObjectConverter(Cppyy::TCppType_t klass) : fClass(klass) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + +protected: + Cppyy::TCppType_t fClass; +}; + +class MoveCppObjectConverter : public RefCppObjectConverter { +public: + using RefCppObjectConverter::RefCppObjectConverter; + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; + +template +class CppObjectPtrConverter : public CppObjectConverter { +public: + using CppObjectConverter::CppObjectConverter; + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); + virtual bool ToMemory(PyObject* value, void* address); +}; + +extern template class CppObjectPtrConverter; +extern template class CppObjectPtrConverter; + +class CppObjectArrayConverter : public CppObjectConverter { +public: + CppObjectArrayConverter(Cppyy::TCppType_t klass, size_t size, bool keepControl = false) : + CppObjectConverter(klass, keepControl), m_size(size) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); + virtual bool ToMemory(PyObject* value, void* address); + +protected: + size_t m_size; +}; + +// CLING WORKAROUND -- classes for STL iterators are completely undefined in that +// they come in a bazillion different guises, so just do whatever +class STLIteratorConverter : public Converter { +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; +// -- END CLING WORKAROUND + +class VoidPtrRefConverter : public Converter { +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; + +class VoidPtrPtrConverter : public Converter { +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); +}; + +CPPYY_DECLARE_BASIC_CONVERTER(PyObject); + +#define CPPYY_DECLARE_STRING_CONVERTER(name, strtype) \ +class name##Converter : public CppObjectConverter { \ +public: \ + name##Converter(bool keepControl = true); \ +public: \ + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); \ + virtual PyObject* FromMemory(void* address); \ + virtual bool ToMemory(PyObject* value, void* address); \ +private: \ + strtype fBuffer; \ +} + +CPPYY_DECLARE_STRING_CONVERTER(STLString, std::string); +#if __cplusplus > 201402L +CPPYY_DECLARE_STRING_CONVERTER(STLStringView, std::string_view); +#endif + +// function pointers +class FunctionPointerConverter : public Converter { +public: + FunctionPointerConverter(const std::string& sig) : fSignature(sig) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + +protected: + std::string fSignature; +}; + +// smart pointer converter +class SmartPtrCppObjectConverter : public Converter { +public: + SmartPtrCppObjectConverter(Cppyy::TCppType_t smart, + Cppyy::TCppType_t raw, + Cppyy::TCppMethod_t deref, + bool keepControl = false, + bool isRef = false) + : fSmartPtrType(smart), fRawPtrType(raw), fDereferencer(deref), + fKeepControl(keepControl), fIsRef(isRef) {} + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + virtual PyObject* FromMemory(void* address); + //virtual bool ToMemory(PyObject* value, void* address); + +protected: + virtual bool GetAddressSpecialCase(PyObject*, void*&) { return false; } + + Cppyy::TCppType_t fSmartPtrType; + Cppyy::TCppType_t fRawPtrType; + Cppyy::TCppMethod_t fDereferencer; + bool fKeepControl; + bool fIsRef; +}; + +// initializer lists +class InitializerListConverter : public Converter { +public: + InitializerListConverter(Converter* cnv, size_t sz) : + fConverter(cnv), fValueSize(sz) {} + ~InitializerListConverter() { + delete fConverter; + } + +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); + +protected: + Converter* fConverter; + size_t fValueSize; +}; + +// raising converter to take out overloads +class NotImplementedConverter : public Converter { +public: + virtual bool SetArg(PyObject*, Parameter&, CallContext* = nullptr); +}; + +} // unnamed namespace + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_DECLARECONVERTERS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareExecutors.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareExecutors.h new file mode 100644 index 0000000000000..fc89188f3cb7e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/DeclareExecutors.h @@ -0,0 +1,178 @@ +#ifndef CPYCPPYY_DECLAREEXECUTORS_H +#define CPYCPPYY_DECLAREEXECUTORS_H + +// Bindings +#include "Executors.h" +#include "CallContext.h" + + +namespace CPyCppyy { + +namespace { + +#define CPPYY_DECL_EXEC(name) \ +class name##Executor : public Executor { \ +public: \ + virtual PyObject* Execute( \ + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); \ +} + +// executors for built-ins +CPPYY_DECL_EXEC(Bool); +CPPYY_DECL_EXEC(BoolConstRef); +CPPYY_DECL_EXEC(Char); +CPPYY_DECL_EXEC(CharConstRef); +CPPYY_DECL_EXEC(UChar); +CPPYY_DECL_EXEC(UCharConstRef); +CPPYY_DECL_EXEC(Short); +CPPYY_DECL_EXEC(Int); +CPPYY_DECL_EXEC(Long); +CPPYY_DECL_EXEC(ULong); +CPPYY_DECL_EXEC(LongLong); +CPPYY_DECL_EXEC(ULongLong); +CPPYY_DECL_EXEC(Float); +CPPYY_DECL_EXEC(Double); +CPPYY_DECL_EXEC(LongDouble); +CPPYY_DECL_EXEC(Void); +CPPYY_DECL_EXEC(CString); + +// pointer/array executors +CPPYY_DECL_EXEC(VoidArray); +CPPYY_DECL_EXEC(BoolArray); +CPPYY_DECL_EXEC(UCharArray); +CPPYY_DECL_EXEC(ShortArray); +CPPYY_DECL_EXEC(UShortArray); +CPPYY_DECL_EXEC(IntArray); +CPPYY_DECL_EXEC(UIntArray); +CPPYY_DECL_EXEC(LongArray); +CPPYY_DECL_EXEC(ULongArray); +CPPYY_DECL_EXEC(LLongArray); +CPPYY_DECL_EXEC(ULLongArray); +CPPYY_DECL_EXEC(FloatArray); +CPPYY_DECL_EXEC(DoubleArray); + +// special cases +CPPYY_DECL_EXEC(STLString); + +class CppObjectExecutor : public Executor { +public: + CppObjectExecutor(Cppyy::TCppType_t klass) : fClass(klass) {} + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); + +protected: + Cppyy::TCppType_t fClass; +}; + +class CppObjectByValueExecutor : public CppObjectExecutor { +public: + using CppObjectExecutor::CppObjectExecutor; + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); +}; + +CPPYY_DECL_EXEC(Constructor); +CPPYY_DECL_EXEC(PyObject); + +#define CPPYY_DECL_REFEXEC(name) \ +class name##RefExecutor : public RefExecutor { \ +public: \ + virtual PyObject* Execute( \ + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); \ +} + +CPPYY_DECL_REFEXEC(Bool); +CPPYY_DECL_REFEXEC(Char); +CPPYY_DECL_REFEXEC(UChar); +CPPYY_DECL_REFEXEC(Short); +CPPYY_DECL_REFEXEC(UShort); +CPPYY_DECL_REFEXEC(Int); +CPPYY_DECL_REFEXEC(UInt); +CPPYY_DECL_REFEXEC(Long); +CPPYY_DECL_REFEXEC(ULong); +CPPYY_DECL_REFEXEC(LongLong); +CPPYY_DECL_REFEXEC(ULongLong); +CPPYY_DECL_REFEXEC(Float); +CPPYY_DECL_REFEXEC(Double); +CPPYY_DECL_REFEXEC(LongDouble); +CPPYY_DECL_REFEXEC(STLString); + +// special cases +class CppObjectRefExecutor : public RefExecutor { +public: + CppObjectRefExecutor(Cppyy::TCppType_t klass) : fClass(klass) {} + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); + +protected: + Cppyy::TCppType_t fClass; +}; + +class CppObjectPtrPtrExecutor : public CppObjectRefExecutor { +public: + using CppObjectRefExecutor::CppObjectRefExecutor; + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); +}; + +class CppObjectPtrRefExecutor : public CppObjectRefExecutor { +public: + using CppObjectRefExecutor::CppObjectRefExecutor; + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); +}; + +class CppObjectArrayExecutor : public CppObjectExecutor { +public: + CppObjectArrayExecutor(Cppyy::TCppType_t klass, Py_ssize_t array_size) + : CppObjectExecutor(klass), fArraySize(array_size) {} + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); + +protected: + Py_ssize_t fArraySize; +}; + +// smart pointer executors +class CppObjectBySmartPtrExecutor : public Executor { +public: + CppObjectBySmartPtrExecutor(Cppyy::TCppType_t smart, + Cppyy::TCppType_t raw, Cppyy::TCppMethod_t deref) + : fSmartPtrType(smart), fRawPtrType(raw), fDereferencer(deref) {} + + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); + +protected: + Cppyy::TCppType_t fSmartPtrType; + Cppyy::TCppType_t fRawPtrType; + Cppyy::TCppMethod_t fDereferencer; +}; + +class CppObjectBySmartPtrPtrExecutor : public CppObjectBySmartPtrExecutor { +public: + using CppObjectBySmartPtrExecutor::CppObjectBySmartPtrExecutor; + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); +}; + +class CppObjectBySmartPtrRefExecutor : public RefExecutor { +public: + CppObjectBySmartPtrRefExecutor(Cppyy::TCppType_t smart, + Cppyy::TCppType_t raw, Cppyy::TCppMethod_t deref) + : fSmartPtrType(smart), fRawPtrType(raw), fDereferencer(deref) {} + + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*); + +protected: + Cppyy::TCppType_t fSmartPtrType; + Cppyy::TCppType_t fRawPtrType; + Cppyy::TCppMethod_t fDereferencer; +}; + +} // unnamed namespace + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_DECLAREEXECUTORS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.cxx new file mode 100644 index 0000000000000..e9d0075c89d76 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.cxx @@ -0,0 +1,839 @@ +// Bindings +#include "CPyCppyy.h" +#include "DeclareExecutors.h" +#include "CPPInstance.h" +#include "LowLevelViews.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" +#include "TypeManip.h" +#include "Utility.h" + +// Standard +#include +#include +#include +#include +#include + + +//- data _____________________________________________________________________ +namespace CPyCppyy { + + typedef Executor* (*ef_t) (); + typedef std::map ExecFactories_t; + static ExecFactories_t gExecFactories; + + extern PyObject* gNullPtrObject; +} + + +//- helpers ------------------------------------------------------------------ +namespace { + + class GILControl { + public: + GILControl(CPyCppyy::CallContext* ctxt) : + fSave(nullptr), fRelease(ReleasesGIL(ctxt)) { +#ifdef WITH_THREAD + if (fRelease) fSave = PyEval_SaveThread(); +#endif + } + ~GILControl() { +#ifdef WITH_THREAD + if (fRelease) PyEval_RestoreThread(fSave); +#endif + } + private: + PyThreadState* fSave; + bool fRelease; + }; + +} // unnamed namespace + +#define CPPYY_IMPL_GILCALL(rtype, tcode) \ +static inline rtype GILCall##tcode( \ + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext* ctxt)\ +{ \ + GILControl gc(ctxt); \ + return Cppyy::Call##tcode(method, self, &ctxt->fArgs); \ +} + +CPPYY_IMPL_GILCALL(void, V) +CPPYY_IMPL_GILCALL(unsigned char, B) +CPPYY_IMPL_GILCALL(char, C) +CPPYY_IMPL_GILCALL(short, H) +CPPYY_IMPL_GILCALL(Int_t, I) +CPPYY_IMPL_GILCALL(Long_t, L) +CPPYY_IMPL_GILCALL(Long64_t, LL) +CPPYY_IMPL_GILCALL(float, F) +CPPYY_IMPL_GILCALL(double, D) +CPPYY_IMPL_GILCALL(LongDouble_t, LD) +CPPYY_IMPL_GILCALL(void*, R) + +/* +// TODO: CallS may not have a use here; CallO is used instead for std::string +static inline char* GILCallS( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CPyCppyy::CallContext* ctxt) +{ + GILControl gc(ctxt); +// TODO: make use of getting the string length returned ... + size_t len; + return Cppyy::CallS(method, self, &ctxt->fArgs, &len); +} +*/ + +static inline Cppyy::TCppObject_t GILCallO(Cppyy::TCppMethod_t method, + Cppyy::TCppObject_t self, CPyCppyy::CallContext* ctxt, Cppyy::TCppType_t klass) +{ + GILControl gc(ctxt); + return Cppyy::CallO(method, self, &ctxt->fArgs, klass); +} + +static inline Cppyy::TCppObject_t GILCallConstructor( + Cppyy::TCppMethod_t method, Cppyy::TCppType_t klass, CPyCppyy::CallContext* ctxt) +{ + GILControl gc(ctxt); + return Cppyy::CallConstructor(method, klass, &ctxt->fArgs); +} + +static inline PyObject* CPyCppyy_PyUnicode_FromInt(int c) +{ +// python chars are range(256) + if (c < 0) return CPyCppyy_PyUnicode_FromFormat("%c", 256 - std::abs(c)); + return CPyCppyy_PyUnicode_FromFormat("%c", c); +} + +static inline PyObject* CPyCppyy_PyBool_FromInt(int b) +{ + PyObject* result = (bool)b ? Py_True : Py_False; + Py_INCREF(result); + return result; +} + + +//- executors for built-ins -------------------------------------------------- +PyObject* CPyCppyy::BoolExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python bool return value + bool retval = GILCallB(method, self, ctxt); + PyObject* result = retval ? Py_True : Py_False; + Py_INCREF(result); + return result; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::BoolConstRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python bool return value + return CPyCppyy_PyBool_FromInt(*((bool*)GILCallR(method, self, ctxt))); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CharExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute , construct python string return value +// with the single char + return CPyCppyy_PyUnicode_FromInt((int)GILCallC(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CharConstRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python string return value +// with the single char + return CPyCppyy_PyUnicode_FromInt(*((char*)GILCallR(method, self, ctxt))); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::UCharExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python string return value +// with the single char + return CPyCppyy_PyUnicode_FromInt((unsigned char)GILCallB(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::UCharConstRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python string return value +// with the single char from the pointer return + return CPyCppyy_PyUnicode_FromInt(*((unsigned char*)GILCallR(method, self, ctxt))); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::IntExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python int return value + return PyInt_FromLong((int)GILCallI(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::ShortExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python int return value + return PyInt_FromLong((short)GILCallH(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::LongExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python long return value + return PyLong_FromLong((Long_t)GILCallL(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::ULongExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python unsigned long return value + return PyLong_FromUnsignedLong((ULong_t)GILCallLL(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::LongLongExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python long long return value + Long64_t result = GILCallLL(method, self, ctxt); + return PyLong_FromLongLong(result); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::ULongLongExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python unsigned long long return value + ULong64_t result = (ULong64_t)GILCallLL(method, self, ctxt); + return PyLong_FromUnsignedLongLong(result); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::FloatExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python float return value + return PyFloat_FromDouble((double)GILCallF(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::DoubleExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python float return value + return PyFloat_FromDouble((double)GILCallD(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::LongDoubleExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python float return value + return PyFloat_FromDouble((double)GILCallLD(method, self, ctxt)); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::RefExecutor::SetAssignable(PyObject* pyobject) +{ +// prepare "buffer" for by-ref returns, used with __setitem__ + if (pyobject) { + Py_INCREF(pyobject); + fAssignable = pyobject; + return true; + } + + fAssignable = nullptr; + return false; +} + +//---------------------------------------------------------------------------- +#define CPPYY_IMPL_REFEXEC(name, type, stype, F1, F2) \ +PyObject* CPyCppyy::name##RefExecutor::Execute( \ + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \ +{ \ + type* ref = (type*)GILCallR(method, self, ctxt); \ + if (!fAssignable) \ + return F1((stype)*ref); \ + else { \ + *ref = (type)F2(fAssignable); \ + Py_DECREF(fAssignable); \ + fAssignable = nullptr; \ + Py_INCREF(Py_None); \ + return Py_None; \ + } \ +} + +CPPYY_IMPL_REFEXEC(Bool, bool, Long_t, CPyCppyy_PyBool_FromInt, PyLong_AsLong) +CPPYY_IMPL_REFEXEC(Char, char, Long_t, CPyCppyy_PyUnicode_FromInt, PyLong_AsLong) +CPPYY_IMPL_REFEXEC(UChar, unsigned char, ULong_t, CPyCppyy_PyUnicode_FromInt, PyLongOrInt_AsULong) +CPPYY_IMPL_REFEXEC(Short, short, Long_t, PyInt_FromLong, PyLong_AsLong) +CPPYY_IMPL_REFEXEC(UShort, unsigned short, ULong_t, PyInt_FromLong, PyLongOrInt_AsULong) +CPPYY_IMPL_REFEXEC(Int, Int_t, Long_t, PyInt_FromLong, PyLong_AsLong) +CPPYY_IMPL_REFEXEC(UInt, UInt_t, ULong_t, PyLong_FromUnsignedLong, PyLongOrInt_AsULong) +CPPYY_IMPL_REFEXEC(Long, Long_t, Long_t, PyLong_FromLong, PyLong_AsLong) +CPPYY_IMPL_REFEXEC(ULong, ULong_t, ULong_t, PyLong_FromUnsignedLong, PyLongOrInt_AsULong) +CPPYY_IMPL_REFEXEC(LongLong, Long64_t, Long64_t, PyLong_FromLongLong, PyLong_AsLongLong) +CPPYY_IMPL_REFEXEC(ULongLong, ULong64_t, ULong64_t, PyLong_FromUnsignedLongLong, PyLongOrInt_AsULong64) +CPPYY_IMPL_REFEXEC(Float, float, double, PyFloat_FromDouble, PyFloat_AsDouble) +CPPYY_IMPL_REFEXEC(Double, double, double, PyFloat_FromDouble, PyFloat_AsDouble) +CPPYY_IMPL_REFEXEC(LongDouble, LongDouble_t, LongDouble_t, PyFloat_FromDouble, PyFloat_AsDouble) + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::STLStringRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , return python string return value + std::string* result = (std::string*)GILCallR(method, self, ctxt); + if (!fAssignable) + return CPyCppyy_PyUnicode_FromStringAndSize(result->c_str(), result->size()); + + *result = std::string( + CPyCppyy_PyUnicode_AsString(fAssignable), CPyCppyy_PyUnicode_GET_SIZE(fAssignable)); + + Py_DECREF(fAssignable); + fAssignable = nullptr; + + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::VoidExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , return None + GILCallV(method, self, ctxt); + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CStringExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python string return value + char* result = (char*)GILCallR(method, self, ctxt); + if (!result) { + Py_INCREF(PyStrings::gEmptyString); + return PyStrings::gEmptyString; + } + + return CPyCppyy_PyUnicode_FromString(result); +} + + +//- pointer/array executors -------------------------------------------------- +PyObject* CPyCppyy::VoidArrayExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python long return value + Long_t* result = (Long_t*)GILCallR(method, self, ctxt); + if (!result) { + Py_INCREF(gNullPtrObject); + return gNullPtrObject; + } + return CreatePointerView(result); +} + +//---------------------------------------------------------------------------- +#define CPPYY_IMPL_ARRAY_EXEC(name, type) \ +PyObject* CPyCppyy::name##ArrayExecutor::Execute( \ + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) \ +{ \ + return CreateLowLevelView((type*)GILCallR(method, self, ctxt)); \ +} + +CPPYY_IMPL_ARRAY_EXEC(Bool, bool) +CPPYY_IMPL_ARRAY_EXEC(UChar, unsigned char) +CPPYY_IMPL_ARRAY_EXEC(Short, short) +CPPYY_IMPL_ARRAY_EXEC(UShort, unsigned short) +CPPYY_IMPL_ARRAY_EXEC(Int, int) +CPPYY_IMPL_ARRAY_EXEC(UInt, unsigned int) +CPPYY_IMPL_ARRAY_EXEC(Long, long) +CPPYY_IMPL_ARRAY_EXEC(ULong, unsigned long) +CPPYY_IMPL_ARRAY_EXEC(LLong, long long) +CPPYY_IMPL_ARRAY_EXEC(ULLong, unsigned long long) +CPPYY_IMPL_ARRAY_EXEC(Float, float) +CPPYY_IMPL_ARRAY_EXEC(Double, double) + + +//- special cases ------------------------------------------------------------ +PyObject* CPyCppyy::STLStringExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python string return value + +// TODO: make use of GILLCallS (?!) + static Cppyy::TCppScope_t sSTLStringScope = Cppyy::GetScope("std::string"); + std::string* result = (std::string*)GILCallO(method, self, ctxt, sSTLStringScope); + if (!result) { + Py_INCREF(PyStrings::gEmptyString); + return PyStrings::gEmptyString; + } + + PyObject* pyresult = + CPyCppyy_PyUnicode_FromStringAndSize(result->c_str(), result->size()); + ::operator delete(result); // calls Cppyy::CallO which calls ::operator new + + return pyresult; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python proxy object return value + return BindCppObject((void*)GILCallR(method, self, ctxt), fClass); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectByValueExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execution will bring a temporary in existence + Cppyy::TCppObject_t value = GILCallO(method, self, ctxt, fClass); + + if (!value) { + if (!PyErr_Occurred()) // callee may have set a python error itself + PyErr_SetString(PyExc_ValueError, "nullptr result where temporary expected"); + return nullptr; + } + +// the result can then be bound + PyObject* pyobj = BindCppObjectNoCast(value, fClass, CPPInstance::kIsValue); + if (!pyobj) + return nullptr; + +// python ref counting will now control this object's life span + ((CPPInstance*)pyobj)->PythonOwns(); + return pyobj; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// executor binds the result to the left-hand side, overwriting if an old object + PyObject* result = BindCppObject((void*)GILCallR(method, self, ctxt), fClass); + if (!result || !fAssignable) + return result; + else { + // this generic code is quite slow compared to its C++ equivalent ... + PyObject* assign = PyObject_GetAttr(result, PyStrings::gAssign); + if (!assign) { + PyErr_Clear(); + PyObject* descr = PyObject_Str(result); + if (descr && CPyCppyy_PyUnicode_CheckExact(descr)) { + PyErr_Format(PyExc_TypeError, "can not assign to return object (%s)", + CPyCppyy_PyUnicode_AsString(descr)); + } else { + PyErr_SetString(PyExc_TypeError, "can not assign to result"); + } + Py_XDECREF(descr); + Py_DECREF(result); + Py_DECREF(fAssignable); fAssignable = nullptr; + return nullptr; + } + + PyObject* res2 = PyObject_CallFunction(assign, const_cast("O"), fAssignable); + + Py_DECREF(assign); + Py_DECREF(result); + Py_DECREF(fAssignable); fAssignable = nullptr; + + if (res2) { + Py_DECREF(res2); // typically, *this from operator=() + Py_RETURN_NONE; + } + + return nullptr; + } +} + +//---------------------------------------------------------------------------- +static inline PyObject* SetInstanceCheckError(PyObject* pyobj) { + PyObject* pystr = PyObject_Str(pyobj); + if (pystr) { + PyErr_Format(PyExc_TypeError, + "C++ object expected, got %s", CPyCppyy_PyUnicode_AsString(pystr)); + Py_DECREF(pystr); + } else + PyErr_SetString(PyExc_TypeError, "C++ object expected"); + return nullptr; +} + +PyObject* CPyCppyy::CppObjectPtrPtrExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python C++ proxy object +// return ptr value + if (fAssignable && !CPPInstance_Check(fAssignable)) + return SetInstanceCheckError(fAssignable); + + void** result = (void**)GILCallR(method, self, ctxt); + if (!fAssignable) + return BindCppObject((void*)result, fClass, + CPPInstance::kIsPtrPtr | CPPInstance::kIsReference); + + CPPInstance* cppinst = (CPPInstance*)fAssignable; + *result = cppinst->fObject; + + Py_DECREF(fAssignable); + fAssignable = nullptr; + + Py_RETURN_NONE; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectPtrRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct python C++ proxy object +// ignoring ref) return ptr value + if (fAssignable && !CPPInstance_Check(fAssignable)) + return SetInstanceCheckError(fAssignable); + + void** result = (void**)GILCallR(method, self, ctxt); + if (!fAssignable) + return BindCppObject(*result, fClass); + + CPPInstance* cppinst = (CPPInstance*)fAssignable; + *result = cppinst->fObject; + + Py_DECREF(fAssignable); + fAssignable = nullptr; + + Py_RETURN_NONE; +} + + +//- smart pointers ----------------------------------------------------------- +PyObject* CPyCppyy::CppObjectBySmartPtrExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// smart pointer executor + Cppyy::TCppObject_t value = GILCallO(method, self, ctxt, fSmartPtrType); + + if (!value) { + if (!PyErr_Occurred()) // callee may have set a python error itself + PyErr_SetString(PyExc_ValueError, "NULL result where temporary expected"); + return nullptr; + } + +// fixme? - why doesn't this do the same as `self.__smartptr__().get()' + CPPInstance* pyobj = (CPPInstance*)BindCppObjectNoCast(value, fRawPtrType); + + if (pyobj) { + pyobj->SetSmartPtr(fSmartPtrType, fDereferencer); + pyobj->PythonOwns(); // life-time control by python ref-counting + } + + return (PyObject*)pyobj; +} + +PyObject* CPyCppyy::CppObjectBySmartPtrPtrExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ + Cppyy::TCppObject_t value = GILCallR(method, self, ctxt); + if (!value) + return nullptr; + +// todo: why doesn't this do the same as `self.__smartptr__().get()' + CPPInstance* pyobj = (CPPInstance*)BindCppObjectNoCast(value, fRawPtrType); + + if (pyobj) + pyobj->SetSmartPtr(fSmartPtrType, fDereferencer); + + return (PyObject*)pyobj; +} + +PyObject* CPyCppyy::CppObjectBySmartPtrRefExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ + Cppyy::TCppObject_t value = GILCallR(method, self, ctxt); + if (!value) + return nullptr; + + //if (!fAssignable) { + +// fixme? - why doesn't this do the same as `self.__smartptr__().get()' + CPPInstance* pyobj = (CPPInstance*)BindCppObjectNoCast(value, fRawPtrType); + + if (pyobj) + pyobj->SetSmartPtr(fSmartPtrType, fDereferencer); + + return (PyObject*)pyobj; + + // todo: assignment not done yet + // + /*} else { + + PyObject* result = BindCppObject((void*)value, fClass); + + // this generic code is quite slow compared to its C++ equivalent ... + PyObject* assign = PyObject_GetAttrString(result, const_cast("__assign__")); + if (!assign) { + PyErr_Clear(); + PyObject* descr = PyObject_Str(result); + if (descr && PyBytes_CheckExact(descr)) { + PyErr_Format(PyExc_TypeError, "can not assign to return object (%s)", + PyBytes_AS_STRING(descr)); + } else { + PyErr_SetString(PyExc_TypeError, "can not assign to result"); + } + Py_XDECREF(descr); + Py_DECREF(result); + Py_DECREF(fAssignable); fAssignable = nullptr; + return nullptr; + } + + PyObject* res2 = PyObject_CallFunction( + assign, const_cast("O"), fAssignable); + + + Py_DECREF(assign); + Py_DECREF(result); + Py_DECREF(fAssignable); fAssignable = nullptr; + + if (res2) { + Py_DECREF(res2); // typically, *this from operator=() + Py_RETURN_NONE; + } + + return nullptr; + } + */ +} + + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CppObjectArrayExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , construct TupleOfInstances from +// return value + return BindCppObjectArray((void*)GILCallR(method, self, ctxt), fClass, fArraySize); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::ConstructorExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t klass, CallContext* ctxt) +{ +// package return address in PyObject* for caller to handle appropriately (see +// CPPConstructor for the actual build of the PyObject) + return (PyObject*)GILCallConstructor(method, (Cppyy::TCppType_t)klass, ctxt); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::PyObjectExecutor::Execute( + Cppyy::TCppMethod_t method, Cppyy::TCppObject_t self, CallContext* ctxt) +{ +// execute with argument , return python object + return (PyObject*)GILCallR(method, self, ctxt); +} + + +//- factories ---------------------------------------------------------------- +CPyCppyy::Executor* CPyCppyy::CreateExecutor( + const std::string& fullType, bool manage_smart_ptr) +{ +// The matching of the fulltype to an executor factory goes through up to 4 levels: +// 1) full, qualified match +// 2) drop '&' as by ref/full type is often pretty much the same python-wise +// 3) C++ classes, either by ref/ptr or by value +// 4) additional special case for enums +// +// If all fails, void is used, which will cause the return type to be ignored on use + +// an exactly matching executor is best + ExecFactories_t::iterator h = gExecFactories.find(fullType); + if (h != gExecFactories.end()) + return (h->second)(); + +// resolve typedefs etc. + const std::string& resolvedType = Cppyy::ResolveName(fullType); + +// a full, qualified matching executor is preferred + if (resolvedType != fullType) { + h = gExecFactories.find(resolvedType); + if (h != gExecFactories.end()) + return (h->second)(); + } + +//-- nothing? ok, collect information about the type and possible qualifiers/decorators + bool isConst = strncmp(resolvedType.c_str(), "const", 5) == 0; + const std::string& cpd = Utility::Compound(resolvedType); + std::string realType = TypeManip::clean_type(resolvedType, false); + +// accept unqualified type (as python does not know about qualifiers) + h = gExecFactories.find(realType + cpd); + if (h != gExecFactories.end()) + return (h->second)(); + +// drop const, as that is mostly meaningless to python (with the exception +// of c-strings, but those are specialized in the converter map) + if (isConst) { + realType = TypeManip::remove_const(realType); + h = gExecFactories.find(realType + cpd); + if (h != gExecFactories.end()) + return (h->second)(); + } + +//-- still nothing? try pointer instead of array (for builtins) + if (cpd == "[]") { + /* // CLING WORKAROUND -- if the type is a fixed-size array, it will have a funky + // resolved type like MyClass(&)[N], which TClass::GetClass() fails on. So, strip + // it down: + realType = TClassEdit::CleanType(realType.substr(0, realType.rfind("(")).c_str(), 1); + // -- CLING WORKAROUND */ + h = gExecFactories.find(realType + "*"); + if (h != gExecFactories.end()) + return (h->second)(); // TODO: use array size + } + +// C++ classes and special cases (enum) + Executor* result = 0; + if (Cppyy::TCppType_t klass = Cppyy::GetScope(realType)) { + Cppyy::TCppType_t raw; Cppyy::TCppMethod_t deref; + if (manage_smart_ptr && Cppyy::GetSmartPtrInfo(realType, raw, deref)) { + if (cpd == "") { + result = new CppObjectBySmartPtrExecutor(klass, raw, deref); + } else if (cpd == "*") { + result = new CppObjectBySmartPtrPtrExecutor(klass, raw, deref); + } else if (cpd == "&") { + result = new CppObjectBySmartPtrRefExecutor(klass, raw, deref); + } + } + + if (!result) { + if (cpd == "") + result = new CppObjectByValueExecutor(klass); + else if (cpd == "&") + result = new CppObjectRefExecutor(klass); + else if (cpd == "**" || cpd == "*[]" || cpd == "&*") + result = new CppObjectPtrPtrExecutor(klass); + else if (cpd == "*&") + result = new CppObjectPtrRefExecutor(klass); + else if (cpd == "[]") { + Py_ssize_t asize = Utility::ArraySize(resolvedType); + if (0 < asize) + result = new CppObjectArrayExecutor(klass, asize); + else + result = new CppObjectPtrRefExecutor(klass); + } else + result = new CppObjectExecutor(klass); + } + } else { + // unknown: void* may work ("user knows best"), void will fail on use of return value + h = (cpd == "") ? gExecFactories.find("void") : gExecFactories.find("void*"); + } + + if (!result && h != gExecFactories.end()) + // executor factory available, use it to create executor + result = (h->second)(); + + return result; // may still be null +} + + +//---------------------------------------------------------------------------- +namespace { + +using namespace CPyCppyy; + +struct InitExecFactories_t { +public: + InitExecFactories_t() { + // load all executor factories in the global map 'gExecFactories' + CPyCppyy::ExecFactories_t& gf = gExecFactories; + + // factories for built-ins + gf["bool"] = (ef_t)+[]() { return new BoolExecutor{}; }; + gf["bool&"] = (ef_t)+[]() { return new BoolRefExecutor{}; }; + gf["const bool&"] = (ef_t)+[]() { return new BoolConstRefExecutor{}; }; + gf["char"] = (ef_t)+[]() { return new CharExecutor{}; }; + gf["signed char"] = (ef_t)+[]() { return new CharExecutor{}; }; + gf["unsigned char"] = (ef_t)+[]() { return new UCharExecutor{}; }; + gf["char&"] = (ef_t)+[]() { return new CharRefExecutor{}; }; + gf["signed char&"] = (ef_t)+[]() { return new CharRefExecutor{}; }; + gf["unsigned char&"] = (ef_t)+[]() { return new UCharRefExecutor{}; }; + gf["const char&"] = (ef_t)+[]() { return new CharConstRefExecutor{}; }; + gf["const signed char&"] = (ef_t)+[]() { return new CharConstRefExecutor{}; }; + gf["const unsigned char&"] = (ef_t)+[]() { return new UCharConstRefExecutor{}; }; + gf["short"] = (ef_t)+[]() { return new ShortExecutor{}; }; + gf["short&"] = (ef_t)+[]() { return new ShortRefExecutor{}; }; + gf["unsigned short"] = (ef_t)+[]() { return new IntExecutor{}; }; + gf["unsigned short&"] = (ef_t)+[]() { return new UShortRefExecutor{}; }; + gf["int"] = (ef_t)+[]() { return new IntExecutor{}; }; + gf["int&"] = (ef_t)+[]() { return new IntRefExecutor{}; }; + gf["unsigned int"] = (ef_t)+[]() { return new ULongExecutor{}; }; + gf["unsigned int&"] = (ef_t)+[]() { return new UIntRefExecutor{}; }; + gf["internal_enum_type_t"] = (ef_t)+[]() { return new IntExecutor{}; }; + gf["internal_enum_type_t&"] = (ef_t)+[]() { return new IntRefExecutor{}; }; + gf["long"] = (ef_t)+[]() { return new LongExecutor{}; }; + gf["long&"] = (ef_t)+[]() { return new LongRefExecutor{}; }; + gf["unsigned long"] = (ef_t)+[]() { return new ULongExecutor{}; }; + gf["unsigned long&"] = (ef_t)+[]() { return new ULongRefExecutor{}; }; + gf["long long"] = (ef_t)+[]() { return new LongLongExecutor{}; }; + gf["Long64_t"] = (ef_t)+[]() { return new LongLongExecutor{}; }; + gf["long long&"] = (ef_t)+[]() { return new LongLongRefExecutor{}; }; + gf["Long64_t&"] = (ef_t)+[]() { return new LongLongRefExecutor{}; }; + gf["unsigned long long"] = (ef_t)+[]() { return new ULongLongExecutor{}; }; + gf["ULong64_t"] = (ef_t)+[]() { return new ULongLongExecutor{}; }; + gf["unsigned long long&"] = (ef_t)+[]() { return new ULongLongRefExecutor{}; }; + gf["ULong64_t&"] = (ef_t)+[]() { return new ULongLongRefExecutor{}; }; + + gf["float"] = (ef_t)+[]() { return new FloatExecutor{}; }; + gf["float&"] = (ef_t)+[]() { return new FloatRefExecutor{}; }; + gf["Float16_t"] = (ef_t)+[]() { return new FloatExecutor{}; }; + gf["Float16_t&"] = (ef_t)+[]() { return new FloatRefExecutor{}; }; + gf["double"] = (ef_t)+[]() { return new DoubleExecutor{}; }; + gf["double&"] = (ef_t)+[]() { return new DoubleRefExecutor{}; }; + gf["Double32_t"] = (ef_t)+[]() { return new DoubleExecutor{}; }; + gf["Double32_t&"] = (ef_t)+[]() { return new DoubleRefExecutor{}; }; + gf["long double"] = (ef_t)+[]() { return new LongDoubleExecutor{}; }; // TODO: lost precision + gf["long double&"] = (ef_t)+[]() { return new LongDoubleRefExecutor{}; }; + gf["void"] = (ef_t)+[]() { return new VoidExecutor{}; }; + + // pointer/array factories + gf["void*"] = (ef_t)+[]() { return new VoidArrayExecutor{}; }; + gf["bool*"] = (ef_t)+[]() { return new BoolArrayExecutor{}; }; + gf["const unsigned char*"] = (ef_t)+[]() { return new UCharArrayExecutor{}; }; + gf["unsigned char*"] = (ef_t)+[]() { return new UCharArrayExecutor{}; }; + gf["short*"] = (ef_t)+[]() { return new ShortArrayExecutor{}; }; + gf["unsigned short*"] = (ef_t)+[]() { return new UShortArrayExecutor{}; }; + gf["int*"] = (ef_t)+[]() { return new IntArrayExecutor{}; }; + gf["unsigned int*"] = (ef_t)+[]() { return new UIntArrayExecutor{}; }; + gf["internal_enum_type_t*"] = (ef_t)+[]() { return new UIntArrayExecutor{}; }; + gf["long*"] = (ef_t)+[]() { return new LongArrayExecutor{}; }; + gf["unsigned long*"] = (ef_t)+[]() { return new ULongArrayExecutor{}; }; + gf["long long*"] = (ef_t)+[]() { return new LLongArrayExecutor{}; }; + gf["Long64_t*"] = (ef_t)+[]() { return new LLongArrayExecutor{}; }; + gf["unsigned long long*"] = (ef_t)+[]() { return new ULLongArrayExecutor{}; }; + gf["ULong64_t*"] = (ef_t)+[]() { return new ULLongArrayExecutor{}; }; + gf["float*"] = (ef_t)+[]() { return new FloatArrayExecutor{}; }; + gf["double*"] = (ef_t)+[]() { return new DoubleArrayExecutor{}; }; + + // factories for special cases + gf["const char*"] = (ef_t)+[]() { return new CStringExecutor{}; }; + gf["char*"] = (ef_t)+[]() { return new CStringExecutor{}; }; + gf["const signed char*"] = (ef_t)+[]() { return new CStringExecutor{}; }; + gf["signed char*"] = (ef_t)+[]() { return new CStringExecutor{}; }; + gf["std::string"] = (ef_t)+[]() { return new STLStringExecutor{}; }; + gf["string"] = (ef_t)+[]() { return new STLStringExecutor{}; }; + gf["std::string&"] = (ef_t)+[]() { return new STLStringRefExecutor{}; }; + gf["string&"] = (ef_t)+[]() { return new STLStringRefExecutor{}; }; + gf["__init__"] = (ef_t)+[]() { return new ConstructorExecutor{}; }; + gf["PyObject*"] = (ef_t)+[]() { return new PyObjectExecutor{}; }; + gf["_object*"] = (ef_t)+[]() { return new PyObjectExecutor{}; }; + gf["FILE*"] = (ef_t)+[]() { return new VoidArrayExecutor{}; }; + } +} initExecvFactories_; + +} // unnamed namespace diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.h new file mode 100644 index 0000000000000..cf16dbba2bb4a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Executors.h @@ -0,0 +1,34 @@ +#ifndef CPYCPPYY_EXECUTORS_H +#define CPYCPPYY_EXECUTORS_H + +// Standard +#include + + +namespace CPyCppyy { + +struct CallContext; + +class Executor { +public: + virtual ~Executor() {} + virtual PyObject* Execute( + Cppyy::TCppMethod_t, Cppyy::TCppObject_t, CallContext*) = 0; +}; + +// special case needed for CPPSetItem +class RefExecutor : public Executor { +public: + RefExecutor() : fAssignable(nullptr) {} + virtual bool SetAssignable(PyObject*); + +protected: + PyObject* fAssignable; +}; + +// create executor from fully qualified type +Executor* CreateExecutor(const std::string& fullType, bool manage_smart_ptr = true); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_EXECUTORS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.cxx new file mode 100644 index 0000000000000..d81fdac9bb6a0 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.cxx @@ -0,0 +1,836 @@ +// Bindings +#include "CPyCppyy.h" +#include "LowLevelViews.h" +#include "Converters.h" + +// Standard +#include +#include +#include + + +//= memoryview-like object =================================================== +// This is largely setup just like Python builtin memory view objects, with +// the exceptions that there is no need of a "base" object (it views on C++ +// memory, not a Python object with a buffer interface), it uses the CPyCppyy +// converters, and typed results and assignments are supported. Code reused +// under PSF License Version 2. + +namespace CPyCppyy { + +class LowLevelView { +public: + PyObject_HEAD + Py_buffer fBufInfo; + Converter* fConverter; +}; + +} // namespace CPyCppyy + +//= CPyCppyy low level view construction/destruction ========================= +static CPyCppyy::LowLevelView* ll_new(PyTypeObject* subtype, PyObject*, PyObject*) +{ +// Create a new low level ptr type + CPyCppyy::LowLevelView* pyobj = (CPyCppyy::LowLevelView*)subtype->tp_alloc(subtype, 0); + if (!pyobj) PyErr_Print(); + memset(&pyobj->fBufInfo, 0, sizeof(Py_buffer)); + pyobj->fConverter = nullptr; + + return pyobj; +} + +//---------------------------------------------------------------------------- +static void ll_dealloc(CPyCppyy::LowLevelView* pyobj) +{ +// Destruction requires the deletion of the converter (if any) + PyMem_Free(pyobj->fBufInfo.shape); + PyMem_Free(pyobj->fBufInfo.strides); + delete pyobj->fConverter; + Py_TYPE(pyobj)->tp_free((PyObject*)pyobj); +} + + +//--------------------------------------------------------------------------- +static PyObject* ll_typecode(CPyCppyy::LowLevelView* self, void*) +{ + return CPyCppyy_PyUnicode_FromString((char*)self->fBufInfo.format); +} + +//--------------------------------------------------------------------------- +static PyGetSetDef ll_getset[] = { + {(char*)"format", (getter)ll_typecode, nullptr, nullptr, nullptr}, + {(char*)"typecode", (getter)ll_typecode, nullptr, nullptr, nullptr}, + {(char*)nullptr, nullptr, nullptr, nullptr, nullptr } +}; + + +//--------------------------------------------------------------------------- +static PyObject* ll_reshape(CPyCppyy::LowLevelView* self, PyObject* shape) +{ +// Allow the user to fix up the actual (type-strided) size of the buffer. + if (!PyTuple_Check(shape) || PyTuple_GET_SIZE(shape) != 1) { + if (shape) { + PyObject* pystr = PyObject_Str(shape); + if (pystr) { + PyErr_Format(PyExc_TypeError, "tuple object of length 1 expected, received %s", + CPyCppyy_PyUnicode_AsStringChecked(pystr)); + Py_DECREF(pystr); + return nullptr; + } + } + PyErr_SetString(PyExc_TypeError, "tuple object of length 1 expected"); + return nullptr; + } + + Py_ssize_t nlen = PyInt_AsSsize_t(PyTuple_GET_ITEM(shape, 0)); + if (nlen == -1 && PyErr_Occurred()) + return nullptr; + + self->fBufInfo.len = nlen * self->fBufInfo.itemsize; + if (self->fBufInfo.ndim == 1 && self->fBufInfo.shape) + self->fBufInfo.shape[0] = nlen; + else { + PyErr_SetString(PyExc_TypeError, "unsupported buffer dimensions"); + return nullptr; + } + + Py_RETURN_NONE; +} + +//--------------------------------------------------------------------------- +static PyMethodDef ll_methods[] = { + {(char*)"reshape", (PyCFunction)ll_reshape, METH_O, nullptr}, + {(char*)nullptr, nullptr, 0, nullptr} +}; + + +//- Copy memoryview buffers ================================================= + +// The functions in this section take a source and a destination buffer +// with the same logical structure: format, itemsize, ndim and shape +// are identical, with ndim > 0. + +// Check for the presence of suboffsets in the first dimension. +#define HAVE_PTR(suboffsets, dim) (suboffsets && suboffsets[dim] >= 0) +// Adjust ptr if suboffsets are present. +#define ADJUST_PTR(ptr, suboffsets, dim) \ + (HAVE_PTR(suboffsets, dim) ? *((char**)ptr) + suboffsets[dim] : ptr) + +// Assumptions: ndim >= 1. The macro tests for a corner case that should +// perhaps be explicitly forbidden in the PEP. +#define HAVE_SUBOFFSETS_IN_LAST_DIM(view) \ + (view->suboffsets && view->suboffsets[dest->ndim-1] >= 0) + +//--------------------------------------------------------------------------- +static inline int last_dim_is_contiguous(const Py_buffer *dest, const Py_buffer *src) +{ + assert(dest->ndim > 0 && src->ndim > 0); + return (!HAVE_SUBOFFSETS_IN_LAST_DIM(dest) && + !HAVE_SUBOFFSETS_IN_LAST_DIM(src) && + dest->strides[dest->ndim-1] == dest->itemsize && + src->strides[src->ndim-1] == src->itemsize); +} + +//--------------------------------------------------------------------------- +static inline bool equiv_shape(const Py_buffer* dest, const Py_buffer* src) +{ +// Two shapes are equivalent if they are either equal or identical up +// to a zero element at the same position. For example, in NumPy arrays +// the shapes [1, 0, 5] and [1, 0, 7] are equivalent. + if (dest->ndim != src->ndim) + return false; + + for (int i = 0; i < dest->ndim; i++) { + if (dest->shape[i] != src->shape[i]) + return 0; + if (dest->shape[i] == 0) + break; + } + + return true; +} + +//--------------------------------------------------------------------------- +static bool equiv_structure(const Py_buffer* dest, const Py_buffer* src) +{ +// Check that the logical structure of the destination and source buffers +// is identical. + if (strcmp(dest->format, src->format) != 0 || dest->itemsize != src->itemsize || + !equiv_shape(dest, src)) { + PyErr_SetString(PyExc_ValueError, + "low level pointer assignment: lvalue and rvalue have different structures"); + return false; + } + + return true; +} + +//--------------------------------------------------------------------------- +static void copy_base(const Py_ssize_t* shape, Py_ssize_t itemsize, + char* dptr, const Py_ssize_t* dstrides, const Py_ssize_t* dsuboffsets, + char* sptr, const Py_ssize_t* sstrides, const Py_ssize_t* ssuboffsets, + char* mem) +{ +// Base case for recursive multi-dimensional copying. Contiguous arrays are +// copied with very little overhead. Assumptions: ndim == 1, mem == nullptr or +// sizeof(mem) == shape[0] * itemsize. + if (!mem) { // contiguous + Py_ssize_t size = shape[0] * itemsize; + if (dptr + size < sptr || sptr + size < dptr) + memcpy(dptr, sptr, size); // no overlapping + else + memmove(dptr, sptr, size); + } + else { + char *p; + Py_ssize_t i; + for (i=0, p=mem; i < shape[0]; p+=itemsize, sptr+=sstrides[0], i++) { + char *xsptr = ADJUST_PTR(sptr, ssuboffsets, 0); + memcpy(p, xsptr, itemsize); + } + for (i=0, p=mem; i < shape[0]; p+=itemsize, dptr+=dstrides[0], i++) { + char *xdptr = ADJUST_PTR(dptr, dsuboffsets, 0); + memcpy(xdptr, p, itemsize); + } + } + +} + +//--------------------------------------------------------------------------- +static int copy_single(Py_buffer* dest, Py_buffer* src) +{ +// Faster copying of one-dimensional arrays. + char* mem = nullptr; + + assert(dest->ndim == 1); + + if (!equiv_structure(dest, src)) + return -1; + + if (!last_dim_is_contiguous(dest, src)) { + mem = (char*)PyMem_Malloc(dest->shape[0] * dest->itemsize); + if (!mem) { + PyErr_NoMemory(); + return -1; + } + } + + copy_base(dest->shape, dest->itemsize, + (char*)dest->buf, dest->strides, dest->suboffsets, + (char*)src->buf, src->strides, src->suboffsets, + mem); + + if (mem) + PyMem_Free(mem); + + return 0; +} + + +//- Indexing and slicing ---------------------------------------------------- +static char* lookup_dimension(Py_buffer& view, char* ptr, int dim, Py_ssize_t index) +{ + Py_ssize_t nitems; // items in the given dimension + + assert(view.shape); + assert(view.strides); + + nitems = view.shape[dim]; + if (index < 0) + index += nitems; + + if (index < 0 || index >= nitems) { + PyErr_Format(PyExc_IndexError, + "index out of bounds on dimension %d", dim + 1); + return nullptr; + } + + ptr += view.strides[dim] * index; + ptr = ADJUST_PTR(ptr, view.suboffsets, dim); + + return ptr; +} + +// Get the pointer to the item at index. +//--------------------------------------------------------------------------- +static inline void* ptr_from_index(Py_buffer& view, Py_ssize_t index) +{ + return lookup_dimension(view, (char*)view.buf, 0, index); +} + +// Get the pointer to the item at tuple. +//--------------------------------------------------------------------------- +static void* ptr_from_tuple(Py_buffer& view, PyObject* tup) +{ + Py_ssize_t nindices = PyTuple_GET_SIZE(tup); + if (nindices > view.ndim) { + PyErr_Format(PyExc_TypeError, + "cannot index %d-dimension view with %zd-element tuple", view.ndim, nindices); + return nullptr; + } + + char* ptr = (char*)view.buf; + for (Py_ssize_t dim = 0; dim < nindices; dim++) { + Py_ssize_t index; + index = PyNumber_AsSsize_t(PyTuple_GET_ITEM(tup, dim), + PyExc_IndexError); + if (index == -1 && PyErr_Occurred()) + return nullptr; + ptr = lookup_dimension(view, ptr, (int)dim, index); + if (!ptr) + return nullptr; + } + return ptr; +} + + +//= mapping methods ========================================================= +static Py_ssize_t ll_length(CPyCppyy::LowLevelView* self) +{ + if (!self->fBufInfo.buf) + return 0; + return self->fBufInfo.ndim == 0 ? 1 : self->fBufInfo.shape[0]; +} + +//--------------------------------------------------------------------------- +static inline int init_slice(Py_buffer* base, PyObject* key, int dim) +{ + Py_ssize_t start, stop, step, slicelength; + + if (PySlice_GetIndicesEx( +#if PY_VERSION_HEX < 0x03000000 + (PySliceObject*) +#endif + key, base->shape[dim], &start, &stop, &step, &slicelength) < 0) { + return -1; + } + + if (!base->suboffsets || dim == 0) { + adjust_buf: + base->buf = (char *)base->buf + base->strides[dim] * start; + } + else { + Py_ssize_t n = dim-1; + while (n >= 0 && base->suboffsets[n] < 0) + n--; + if (n < 0) + goto adjust_buf; // all suboffsets are negative + base->suboffsets[n] = base->suboffsets[n] + base->strides[dim] * start; + } + base->shape[dim] = slicelength; + base->strides[dim] = base->strides[dim] * step; + + return 0; +} + +//--------------------------------------------------------------------------- +static bool is_multislice(PyObject* key) +{ + if (!PyTuple_Check(key)) + return false; + + Py_ssize_t size = PyTuple_GET_SIZE(key); + if (size == 0) + return false; + + for (Py_ssize_t i = 0; i < size; i++) { + PyObject *x = PyTuple_GET_ITEM(key, i); + if (!PySlice_Check(x)) + return false; + } + return true; +} + +//--------------------------------------------------------------------------- +static Py_ssize_t is_multiindex(PyObject* key) +{ + if (!PyTuple_Check(key)) + return 0; + + Py_ssize_t size = PyTuple_GET_SIZE(key); + for (Py_ssize_t i = 0; i < size; i++) { + PyObject *x = PyTuple_GET_ITEM(key, i); + if (!PyIndex_Check(x)) + return 0; + } + return 1; +} + + +// Return the item at index. In a one-dimensional view, this is an object +// with the type specified by view->format. Otherwise, the item is a sub-view. +// The function is used in ll_subscript() and ll_as_sequence. +//--------------------------------------------------------------------------- +static PyObject* ll_item(CPyCppyy::LowLevelView* self, Py_ssize_t index) +{ + Py_buffer& view = self->fBufInfo; + + if (!view.buf) { + PyErr_SetString(PyExc_ReferenceError, "attempt to access a null-pointer"); + return nullptr; + } + + if (view.ndim == 0) { + PyErr_SetString(PyExc_TypeError, "invalid indexing of 0-dim memory"); + return nullptr; + } + + if (view.ndim == 1) { + void* ptr = ptr_from_index(view, index); + if (!ptr) + return nullptr; + return self->fConverter->FromMemory(ptr); + } + +// TODO: implement sub-views + PyErr_SetString(PyExc_NotImplementedError, + "multi-dimensional sub-views are not implemented"); + return nullptr; +} + +// Return the item at position *key* (a tuple of indices). +//--------------------------------------------------------------------------- +static PyObject* ll_item_multi(CPyCppyy::LowLevelView* self, PyObject *tup) +{ + Py_buffer& view = self->fBufInfo; + Py_ssize_t nindices = PyTuple_GET_SIZE(tup); + + if (nindices < view.ndim) { + // TODO: implement + PyErr_SetString(PyExc_NotImplementedError, + "sub-views are not implemented"); + return nullptr; + } + + void* ptr = ptr_from_tuple(view, tup); + if (!ptr) + return nullptr; + return self->fConverter->FromMemory(ptr); +} + + +// llp[obj] returns an object holding the data for one element if obj +// fully indexes the lowlevelptr or another lowlevelptr object if it +// does not. +// +// 0-d lowlevelptr objects can be referenced using llp[...] or llp[()] +// but not with anything else. +//--------------------------------------------------------------------------- +static PyObject* ll_subscript(CPyCppyy::LowLevelView* self, PyObject *key) +{ + Py_buffer& view = self->fBufInfo; + + if (view.ndim == 0) { + if (PyTuple_Check(key) && PyTuple_GET_SIZE(key) == 0) { + return self->fConverter->FromMemory(view.buf); + } + else if (key == Py_Ellipsis) { + Py_INCREF(self); + return (PyObject*)self; + } + else { + PyErr_SetString(PyExc_TypeError, + "invalid indexing of 0-dim memory"); + return nullptr; + } + } + + if (PyIndex_Check(key)) { + Py_ssize_t index = PyNumber_AsSsize_t(key, PyExc_IndexError); + if (index == -1 && PyErr_Occurred()) + return nullptr; + return ll_item(self, index); + } + else if (PySlice_Check(key)) { + // TODO: handle slicing. This should be simpler than the memoryview + // case as there is no Python object holding the buffer. + PyErr_SetString(PyExc_NotImplementedError, + "multi-dimensional slicing is not implemented"); + return nullptr; + } + else if (is_multiindex(key)) { + return ll_item_multi(self, key); + } + else if (is_multislice(key)) { + PyErr_SetString(PyExc_NotImplementedError, + "multi-dimensional slicing is not implemented"); + return nullptr; + } + + PyErr_SetString(PyExc_TypeError, "invalid slice key"); + return nullptr; +} + +//--------------------------------------------------------------------------- +static int ll_ass_sub(CPyCppyy::LowLevelView* self, PyObject* key, PyObject* value) +{ + Py_buffer& view = self->fBufInfo; + Py_buffer src; + + if (view.readonly) { + PyErr_SetString(PyExc_TypeError, "cannot modify read-only memory"); + return -1; + } + + if (value == nullptr) { + PyErr_SetString(PyExc_TypeError, "cannot delete memory"); + return -1; + } + + if (view.ndim == 0) { + if (key == Py_Ellipsis || + (PyTuple_Check(key) && PyTuple_GET_SIZE(key) == 0)) { + return self->fConverter->ToMemory(value, view.buf) ? 0 : -1; + } + else { + PyErr_SetString(PyExc_TypeError, + "invalid indexing of 0-dim memory"); + return -1; + } + } + + if (PyIndex_Check(key)) { + Py_ssize_t index; + if (1 < view.ndim) { + PyErr_SetString(PyExc_NotImplementedError, + "sub-views are not implemented"); + return -1; + } + index = PyNumber_AsSsize_t(key, PyExc_IndexError); + if (index == -1 && PyErr_Occurred()) + return -1; + void* ptr = ptr_from_index(view, index); + if (ptr == nullptr) + return -1; + return self->fConverter->ToMemory(value, ptr) ? 0 : -1; + } + + // one-dimensional: fast path + if (PySlice_Check(key) && view.ndim == 1) { + Py_buffer dest; // sliced view + Py_ssize_t arrays[3]; + int ret = -1; + + // rvalue must be an exporter + if (PyObject_GetBuffer(value, &src, PyBUF_FULL_RO) < 0) + return ret; + + dest = view; + dest.shape = &arrays[0]; dest.shape[0] = view.shape[0]; + dest.strides = &arrays[1]; dest.strides[0] = view.strides[0]; + if (view.suboffsets) { + dest.suboffsets = &arrays[2]; dest.suboffsets[0] = view.suboffsets[0]; + } + + if (init_slice(&dest, key, 0) < 0) + return -1; + dest.len = dest.shape[0] * dest.itemsize; + + return copy_single(&dest, &src); + } + + if (is_multiindex(key)) { + // TODO: implement + if (PyTuple_GET_SIZE(key) < view.ndim) { + PyErr_SetString(PyExc_NotImplementedError, + "sub-views are not implemented"); + return -1; + } + void* ptr = ptr_from_tuple(view, key); + if (ptr == nullptr) + return -1; + return self->fConverter->ToMemory(value, ptr) ? 0 : -1; + } + + if (PySlice_Check(key) || is_multislice(key)) { + // TODO: implement + PyErr_SetString(PyExc_NotImplementedError, + "LowLevelView slice assignments are currently restricted " + "to ndim = 1"); + return -1; + } + + PyErr_SetString(PyExc_TypeError, "invalid slice key"); + return -1; +} + +#if PY_VERSION_HEX < 0x03000000 +//--------------------------------------------------------------------------- +static Py_ssize_t ll_oldgetbuf(CPyCppyy::LowLevelView* self, Py_ssize_t seg, void** pptr) +{ + if (seg != 0) { + PyErr_SetString(PyExc_TypeError, "accessing non-existent segment"); + return -1; + } + + *pptr = self->fBufInfo.buf; + return self->fBufInfo.len; +} + +//--------------------------------------------------------------------------- +static Py_ssize_t ll_getsegcount(PyObject*, Py_ssize_t* lenp) +{ + if (lenp) *lenp = 1; + return 1; +} +#endif + +//--------------------------------------------------------------------------- +static int ll_getbuf(CPyCppyy::LowLevelView* self, Py_buffer* view, int flags) +{ +// Simplified from memoryobject, as we're always dealing with C arrays. + +// start with full copy + *view = self->fBufInfo; + + if (!(flags & PyBUF_FORMAT)) { + /* NULL indicates that the buffer's data type has been cast to 'B'. + view->itemsize is the _previous_ itemsize. If shape is present, + the equality product(shape) * itemsize = len still holds at this + point. The equality calcsize(format) = itemsize does _not_ hold + from here on! */ + view->format = NULL; + } + + if ((flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS) { + PyErr_SetString(PyExc_BufferError, + "underlying buffer is not Fortran contiguous"); + return -1; + } + + if (!(flags & PyBUF_FORMAT)) { + /* PyBUF_SIMPLE or PyBUF_WRITABLE: at this point buf is C-contiguous, + so base->buf = ndbuf->data. */ + if (view->format != NULL) { + /* PyBUF_SIMPLE|PyBUF_FORMAT and PyBUF_WRITABLE|PyBUF_FORMAT do + not make sense. */ + PyErr_Format(PyExc_BufferError, + "cannot cast to unsigned bytes if the format flag is present"); + return -1; + } + /* product(shape) * itemsize = len and calcsize(format) = itemsize + do _not_ hold from here on! */ + view->ndim = 1; + view->shape = NULL; + } + + view->obj = (PyObject*)self; + Py_INCREF(view->obj); + + return 0; +} + + +//- mapping methods --------------------------------------------------------- +static PyMappingMethods ll_as_mapping = { + (lenfunc) ll_length, // mp_length + (binaryfunc) ll_subscript, // mp_subscript + (objobjargproc)ll_ass_sub, // mp_ass_subscript +}; + +//- sequence methods -------------------------------------------------------- +static PySequenceMethods ll_as_sequence = { + (lenfunc)ll_length, // sq_length + 0, // sq_concat + 0, // sq_repeat + (ssizeargfunc)ll_item, // sq_item + 0, // sq_slice + 0, // sq_ass_item + 0, // sq_ass_slice + 0, // sq_contains + 0, // sq_inplace_concat + 0, // sq_inplace_repeat +}; + +//- buffer methods ---------------------------------------------------------- +static PyBufferProcs ll_as_buffer = { +#if PY_VERSION_HEX < 0x03000000 + (readbufferproc)ll_oldgetbuf, // bf_getreadbuffer + (writebufferproc)ll_oldgetbuf, // bf_getwritebuffer + (segcountproc)ll_getsegcount, // bf_getsegcount + 0, // bf_getcharbuffer +#endif + (getbufferproc)ll_getbuf, // bf_getbuffer + 0, // bf_releasebuffer +}; + + +namespace CPyCppyy { + +//= CPyCppyy low level view type ============================================ +PyTypeObject LowLevelView_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.LowLevelView", // tp_name + sizeof(CPyCppyy::LowLevelView),// tp_basicsize + 0, // tp_itemsize + (destructor)ll_dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + &ll_as_sequence, // tp_as_sequence + &ll_as_mapping, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + &ll_as_buffer, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_BASETYPE, // tp_flags + (char*)"memory view on C++ pointer", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + ll_methods, // tp_methods + 0, // tp_members + ll_getset, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + (newfunc)ll_new, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy + +namespace { + +template struct typecode_traits {}; +template<> struct typecode_traits { + static constexpr const char* format = "?"; static constexpr const char* name = "bool"; }; +template<> struct typecode_traits { + static constexpr const char* format = "B"; static constexpr const char* name = "UCharAsInt"; }; +template<> struct typecode_traits { + static constexpr const char* format = "h"; static constexpr const char* name = "short"; }; +template<> struct typecode_traits { + static constexpr const char* format = "H"; static constexpr const char* name = "unsigned short"; }; +template<> struct typecode_traits { + static constexpr const char* format = "i"; static constexpr const char* name = "int"; }; +template<> struct typecode_traits { + static constexpr const char* format = "I"; static constexpr const char* name = "unsigned int"; }; +template<> struct typecode_traits { + static constexpr const char* format = "l"; static constexpr const char* +#if PY_VERSION_HEX < 0x03000000 + name = "int"; +#else + name = "long"; +#endif +}; +template<> struct typecode_traits { + static constexpr const char* format = "L"; static constexpr const char* name = "unsigned long"; }; +template<> struct typecode_traits { + static constexpr const char* format = "q"; static constexpr const char* name = "long long"; }; +template<> struct typecode_traits { + static constexpr const char* format = "Q"; static constexpr const char* name = "unsigned long long"; }; +template<> struct typecode_traits { + static constexpr const char* format = "f"; static constexpr const char* name = "float"; }; +template<> struct typecode_traits { + static constexpr const char* format = "d"; static constexpr const char* name = "double"; }; + +} // unnamed namespace + + +//--------------------------------------------------------------------------- +template +static inline PyObject* CreateLowLevelViewT(T* address, Py_ssize_t* shape) +{ + using namespace CPyCppyy; + Py_ssize_t nx = (shape && 0 <= shape[1]) ? shape[1] : INT_MAX/sizeof(T); + PyObject* args = PyTuple_New(0); + LowLevelView* llp = + (LowLevelView*)LowLevelView_Type.tp_new(&LowLevelView_Type, args, nullptr); + Py_DECREF(args); + + Py_buffer& view = llp->fBufInfo; + view.buf = address; + view.obj = nullptr; + view.len = nx * sizeof(T); + view.readonly = 0; + view.itemsize = sizeof(T); + view.format = (char*)typecode_traits::format; + view.ndim = shape ? shape[0] : 1; + view.shape = (Py_ssize_t*)PyMem_Malloc(view.ndim * sizeof(Py_ssize_t)); + view.shape[0] = nx; // view.len / view.itemsize + view.strides = (Py_ssize_t*)PyMem_Malloc(view.ndim * sizeof(Py_ssize_t)); + view.strides[0] = view.itemsize; + view.suboffsets = nullptr; + view.internal = nullptr; + + llp->fConverter = CreateConverter(typecode_traits::name); + + return (PyObject*)llp; +} + +//--------------------------------------------------------------------------- +PyObject* CPyCppyy::CreateLowLevelView(bool* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(unsigned char* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(short* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(unsigned short* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(int* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(unsigned int* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(long* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(unsigned long* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(long long* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(unsigned long long* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(float* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} + +PyObject* CPyCppyy::CreateLowLevelView(double* address, Py_ssize_t* shape) { + return CreateLowLevelViewT(address, shape); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.h new file mode 100644 index 0000000000000..a792bd4cc27a2 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/LowLevelViews.h @@ -0,0 +1,43 @@ +#ifndef CPYCPPYY_LOWLEVELVIEWS_H +#define CPYCPPYY_LOWLEVELVIEWS_H + +#include + +namespace CPyCppyy { + +PyObject* CreateLowLevelView(bool*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(unsigned char*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(short*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(unsigned short*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(int*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(unsigned int*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(long*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(unsigned long*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(long long*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(unsigned long long*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(float*, Py_ssize_t* shape = nullptr); +PyObject* CreateLowLevelView(double*, Py_ssize_t* shape = nullptr); + +inline PyObject* CreatePointerView(void* ptr) { + Py_ssize_t shape[] = {1, 1}; + return CreateLowLevelView((long*)ptr, shape); +} + +//- low level view type and type verification -------------------------------- +extern PyTypeObject LowLevelView_Type; + +template +inline bool LowLevelView_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &LowLevelView_Type); +} + +template +inline bool LowLevelView_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &LowLevelView_Type; +} + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_LOWLEVELVIEWS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.cxx new file mode 100644 index 0000000000000..c7ceef7ebd5dc --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.cxx @@ -0,0 +1,267 @@ +// Bindings +#include "CPyCppyy.h" +#include "MemoryRegulator.h" +#include "CPPInstance.h" +#include "ProxyWrappers.h" + +// Standard +#include +#include +#include + + +// memory regulater callback for deletion of registered objects +static PyMethodDef methoddef_ = { + const_cast("MemoryRegulator_internal_raseCallback"), + (PyCFunction)CPyCppyy::MemoryRegulator::EraseCallback, + METH_O, nullptr +}; + +static PyObject* gEraseCallback = PyCFunction_New(&methoddef_, nullptr); + + +//= pseudo-None type for masking out objects on the python side =============== +static PyTypeObject CPyCppyy_NoneType; + +//----------------------------------------------------------------------------- +static Py_ssize_t AlwaysNullLength(PyObject*) +{ + return 0; +} + +//----------------------------------------------------------------------------- +static PyMappingMethods CPyCppyy_NoneType_mapping = { + AlwaysNullLength, + (binaryfunc) 0, + (objobjargproc) 0 +}; + +// silence warning about some cast operations +#if defined(__GNUC__) && (__GNUC__ >= 5 || (__GNUC__ >= 4 && ((__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >= 1) || (__GNUC_MINOR__ >= 3)))) && !__INTEL_COMPILER +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + + +//----------------------------------------------------------------------------- +namespace { + +struct InitCPyCppyy_NoneType_t { + InitCPyCppyy_NoneType_t() { + // create a CPyCppyy NoneType (for references that went dodo) from NoneType + memset(&CPyCppyy_NoneType, 0, sizeof(CPyCppyy_NoneType)); + + ((PyObject&)CPyCppyy_NoneType).ob_type = &PyType_Type; + ((PyObject&)CPyCppyy_NoneType).ob_refcnt = 1; + ((PyVarObject&)CPyCppyy_NoneType).ob_size = 0; + + CPyCppyy_NoneType.tp_name = const_cast("CPyCppyy_NoneType"); + CPyCppyy_NoneType.tp_flags = Py_TPFLAGS_HAVE_RICHCOMPARE | Py_TPFLAGS_HAVE_GC; + + CPyCppyy_NoneType.tp_traverse = (traverseproc)0; + CPyCppyy_NoneType.tp_clear = (inquiry)0; + CPyCppyy_NoneType.tp_dealloc = (destructor)&InitCPyCppyy_NoneType_t::DeAlloc; + CPyCppyy_NoneType.tp_repr = Py_TYPE(Py_None)->tp_repr; + CPyCppyy_NoneType.tp_richcompare = (richcmpfunc)&InitCPyCppyy_NoneType_t::RichCompare; +#if PY_VERSION_HEX < 0x03000000 + // tp_compare has become tp_reserved (place holder only) in p3 + CPyCppyy_NoneType.tp_compare = (cmpfunc)&InitCPyCppyy_NoneType_t::Compare; +#endif + CPyCppyy_NoneType.tp_hash = (hashfunc)&InitCPyCppyy_NoneType_t::PtrHash; + + CPyCppyy_NoneType.tp_as_mapping = &CPyCppyy_NoneType_mapping; + + PyType_Ready(&CPyCppyy_NoneType); + } + + static void DeAlloc(PyObject* pyobj) { Py_TYPE(pyobj)->tp_free(pyobj); } + static int PtrHash(PyObject* pyobj) { return (int)ptrdiff_t(pyobj); } + + static PyObject* RichCompare(PyObject*, PyObject* other, int opid) { + return PyObject_RichCompare(other, Py_None, opid); + } + + static int Compare(PyObject*, PyObject* other) { +#if PY_VERSION_HEX < 0x03000000 + return PyObject_Compare(other, Py_None); +#else + // TODO the following isn't correct as it doesn't order, but will do for now ... + return !PyObject_RichCompareBool(other, Py_None, Py_EQ); +#endif + } +}; + +} // unnamed namespace + + +//- ctor/dtor ---------------------------------------------------------------- +CPyCppyy::MemoryRegulator::MemoryRegulator() +{ +// setup NoneType for referencing and create weakref cache + static InitCPyCppyy_NoneType_t initCPyCppyy_NoneType; +} + + +//- public members ----------------------------------------------------------- +bool CPyCppyy::MemoryRegulator::RecursiveRemove( + Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass) +{ +// if registerd by the framework, called whenever a cppobj gets destroyed + if (!cppobj) + return false; + + PyObject* pyscope = GetScopeProxy(klass); + if (!CPPScope_Check(pyscope)) + return false; + + CPPClass* pyclass = (CPPClass*)pyscope; + if (!pyclass->fCppObjects) // table may have been deleted on shutdown + return false; + +// see whether we're tracking this object + CppToPyMap_t* cppobjs = pyclass->fCppObjects; + CppToPyMap_t::iterator ppo = cppobjs->find(cppobj); + + if (ppo != cppobjs->end()) { + // get the tracked object and cleanup weak reference + CPPInstance* pyobj = (CPPInstance*)PyWeakref_GetObject(ppo->second); + Py_DECREF(ppo->second); + if (!pyobj) { + cppobjs->erase(ppo); + return false; + } + + // nullify the object + if (!CPyCppyy_NoneType.tp_traverse) { + // take a reference as we're copying its function pointers + Py_INCREF(Py_TYPE(pyobj)); + + // all object that arrive here are expected to be of the same type ("instance") + CPyCppyy_NoneType.tp_traverse = Py_TYPE(pyobj)->tp_traverse; + CPyCppyy_NoneType.tp_clear = Py_TYPE(pyobj)->tp_clear; + CPyCppyy_NoneType.tp_free = Py_TYPE(pyobj)->tp_free; + } else if (CPyCppyy_NoneType.tp_traverse != Py_TYPE(pyobj)->tp_traverse) { + std::cerr << "in CPyCppyy::MemoryRegulater, unexpected object of type: " + << Py_TYPE(pyobj)->tp_name << std::endl; + + // drop object and leave before too much damage is done + cppobjs->erase(ppo); + return false; + } + + // notify any other weak referents by playing dead + int refcnt = ((PyObject*)pyobj)->ob_refcnt; + ((PyObject*)pyobj)->ob_refcnt = 0; + PyObject_ClearWeakRefs((PyObject*)pyobj); + ((PyObject*)pyobj)->ob_refcnt = refcnt; + + // cleanup object internals + pyobj->CppOwns(); // held object is out of scope now anyway + op_dealloc_nofree(pyobj); // normal object cleanup, while keeping memory + + // reset type object + Py_INCREF((PyObject*)(void*)&CPyCppyy_NoneType); + Py_DECREF(Py_TYPE(pyobj)); + ((PyObject*)pyobj)->ob_type = &CPyCppyy_NoneType; + + // erase the object from tracking (weakref table already cleared, above) + cppobjs->erase(ppo); + return true; + } + +// unknown cppobj + return false; +} + +//----------------------------------------------------------------------------- +bool CPyCppyy::MemoryRegulator::RegisterPyObject( + CPPInstance* pyobj, Cppyy::TCppObject_t cppobj) +{ +// start tracking proxied by + if (!(pyobj && cppobj)) + return false; + + CPPClass* pyclass = (CPPClass*)Py_TYPE(pyobj); + CppToPyMap_t* cppobjs = ((CPPClass*)Py_TYPE(pyobj))->fCppObjects; + CppToPyMap_t::iterator ppo = cppobjs->find(cppobj); + if (ppo == pyclass->fCppObjects->end()) { + PyObject* pyref = PyWeakref_NewRef((PyObject*)pyobj, gEraseCallback); + pyclass->fCppObjects->insert(std::make_pair(cppobj, pyref)); + return true; + } + + return false; +} + +//----------------------------------------------------------------------------- +bool CPyCppyy::MemoryRegulator::UnregisterPyObject( + Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass) +{ +// stop tracking , without notification + if (!(cppobj && klass)) + return false; + + PyObject* pyscope = GetScopeProxy(klass); + if (!CPPScope_Check(pyscope)) + return false; + + CPPClass* pyclass = (CPPClass*)pyscope; + CppToPyMap_t::iterator ppo = pyclass->fCppObjects->find(cppobj); + if (ppo != pyclass->fCppObjects->end()) { + Py_DECREF(ppo->second); + pyclass->fCppObjects->erase(ppo); + return true; + } + + return false; +} + +//----------------------------------------------------------------------------- +PyObject* CPyCppyy::MemoryRegulator::RetrievePyObject( + Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass) +{ +// lookup , return old proxy if tracked + if (!(cppobj && klass)) + return nullptr; + + PyObject* pyscope = GetScopeProxy(klass); + if (!CPPScope_Check(pyscope)) + return nullptr; + + CPPClass* pyclass = (CPPClass*)pyscope; + CppToPyMap_t::iterator ppo = pyclass->fCppObjects->find(cppobj); + if (ppo != pyclass->fCppObjects->end() ) { + PyObject* pyobj = PyWeakref_GetObject(ppo->second); + if (pyobj == Py_None) { + Py_DECREF(ppo->second); + pyclass->fCppObjects->erase(ppo); + return nullptr; + } + Py_INCREF(pyobj); + return pyobj; + } + + return nullptr; +} + + +//- private static members ------------------------------------------------------ +PyObject* CPyCppyy::MemoryRegulator::EraseCallback(PyObject*, PyObject* pyref) +{ +// called when one of the python objects we've registered is going away + CPPInstance* pyobj = (CPPInstance*)PyWeakref_GetObject(pyref); + if ((PyObject*)pyobj != Py_None) { + CPPClass* pyclass = (CPPClass*)Py_TYPE(pyobj); + if (pyobj->GetObject()) { + // erase if tracked + void* cppobj = pyobj->GetObject(); + CppToPyMap_t::iterator ppo = pyclass->fCppObjects->find(cppobj); + if (ppo != pyclass->fCppObjects->end()) { + Py_DECREF(ppo->second); + pyclass->fCppObjects->erase(ppo); + } + } + } + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.h new file mode 100644 index 0000000000000..3828014d58e0f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/MemoryRegulator.h @@ -0,0 +1,31 @@ +#ifndef CPYCPPYY_MEMORYREGULATOR_H +#define CPYCPPYY_MEMORYREGULATOR_H + + +namespace CPyCppyy { + +class CPPInstance; + +class MemoryRegulator { +public: + MemoryRegulator(); + +// callback from C++-side frameworks + static bool RecursiveRemove(Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass); + +// add a python object to the table of managed objects + static bool RegisterPyObject(CPPInstance* pyobj, void* cppobj); + +// remove a python object from the table of managed objects, w/o notification + static bool UnregisterPyObject(Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass); + +// new reference to python object matching cppobj, or 0 on failure + static PyObject* RetrievePyObject(Cppyy::TCppObject_t cppobj, Cppyy::TCppType_t klass); + +// callback when weak refs to managed objects are destroyed + static PyObject* EraseCallback(PyObject*, PyObject* pyref); +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_MEMORYREGULATOR_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.cxx new file mode 100644 index 0000000000000..6f830c3187aa5 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.cxx @@ -0,0 +1,726 @@ +// Bindings +#include "CPyCppyy.h" +#include "ProxyWrappers.h" +#include "CPPClassMethod.h" +#include "CPPConstructor.h" +#include "CPPDataMember.h" +#include "CPPFunction.h" +#include "CPPInstance.h" +#include "CPPMethod.h" +#include "CPPOverload.h" +#include "CPPScope.h" +#include "CPPSetItem.h" +#include "MemoryRegulator.h" +#include "PyStrings.h" +#include "Pythonize.h" +#include "TemplateProxy.h" +#include "TupleOfInstances.h" +#include "TypeManip.h" +#include "Utility.h" + +// Standard +#include +#include +#include +#include +#include +#include + + +//- data _______________________________________________________________________ +namespace CPyCppyy { + extern PyObject* gThisModule; + extern std::set gPinnedTypes; +} + +// to prevent having to walk scopes, track python classes by C++ class +typedef std::map PyClassMap_t; +static PyClassMap_t gPyClasses; + + +//- helpers -------------------------------------------------------------------- + +namespace CPyCppyy { + +typedef struct { + PyObject_HEAD + PyObject *dict; +} proxyobject; + +// helper for creating new C++ proxy python types +static PyObject* CreateNewCppProxyClass(Cppyy::TCppScope_t klass, PyObject* pybases) +{ +// Create a new python shadow class with the required hierarchy and meta-classes. + Py_XINCREF(pybases); + if (!pybases) { + pybases = PyTuple_New(1); + Py_INCREF((PyObject*)(void*)&CPPInstance_Type); + PyTuple_SET_ITEM(pybases, 0, (PyObject*)(void*)&CPPInstance_Type); + } + + PyObject* pymetabases = PyTuple_New(PyTuple_GET_SIZE(pybases)); + for (int i = 0; i < PyTuple_GET_SIZE(pybases); ++i) { + PyObject* btype = (PyObject*)Py_TYPE(PyTuple_GetItem(pybases, i)); + Py_INCREF(btype); + PyTuple_SET_ITEM(pymetabases, i, btype); + } + + std::string name = Cppyy::GetFinalName(klass); + +// create meta-class, add a dummy __module__ to pre-empt the default setting + PyObject* args = Py_BuildValue((char*)"sO{}", (name+"_meta").c_str(), pymetabases); + PyDict_SetItem(PyTuple_GET_ITEM(args, 2), PyStrings::gModule, Py_True); + Py_DECREF(pymetabases); + + PyObject* pymeta = PyType_Type.tp_new(&CPPScope_Type, args, nullptr); + + Py_DECREF(args); + if (!pymeta) { + PyErr_Print(); + Py_DECREF(pybases); + return nullptr; + } + +// set the klass id, in case there is derivation Python-side + ((CPPClass*)pymeta)->fCppType = klass; + +// alright, and now we really badly want to get rid of the dummy ... + PyObject* dictproxy = PyObject_GetAttr(pymeta, PyStrings::gDict); + PyDict_DelItem(((proxyobject*)dictproxy)->dict, PyStrings::gModule); + +// create actual class + args = Py_BuildValue((char*)"sO{}", name.c_str(), pybases); + PyObject* pyclass = + ((PyTypeObject*)pymeta)->tp_new((PyTypeObject*)pymeta, args, nullptr); + + Py_DECREF(args); + Py_DECREF(pymeta); + Py_DECREF(pybases); + + return pyclass; +} + +static inline +void AddPropertyToClass(PyObject* pyclass, + Cppyy::TCppScope_t scope, Cppyy::TCppIndex_t idata) +{ + CPyCppyy::CPPDataMember* property = CPyCppyy::CPPDataMember_New(scope, idata); + +// allow access at the instance level + PyObject_SetAttrString(pyclass, + const_cast(property->GetName().c_str()), (PyObject*)property); + +// allow access at the class level (always add after setting instance level) + if (Cppyy::IsStaticData(scope, idata)) { + PyObject_SetAttrString((PyObject*)Py_TYPE(pyclass), + const_cast(property->GetName().c_str()), (PyObject*)property); + } + +// done + Py_DECREF(property); +} + +} // namespace CPyCppyy + + +//- public functions --------------------------------------------------------- +namespace CPyCppyy { + +static int BuildScopeProxyDict(Cppyy::TCppScope_t scope, PyObject* pyclass) { +// Collect methods and data for the given scope, and add them to the given python +// proxy object. + +// some properties that'll affect building the dictionary + bool isNamespace = Cppyy::IsNamespace(scope); + bool hasConstructor = false; + +// load all public methods and data members + typedef std::vector Callables_t; + typedef std::map CallableCache_t; + CallableCache_t cache; + +// bypass custom __getattr__ for efficiency + getattrofunc oldgetattro = Py_TYPE(pyclass)->tp_getattro; + Py_TYPE(pyclass)->tp_getattro = PyType_Type.tp_getattro; + +// functions in namespaces are properly found through lazy lookup, so do not +// create them until needed (the same is not true for data members) + const Cppyy::TCppIndex_t nMethods = + Cppyy::IsNamespace(scope) ? 0 : Cppyy::GetNumMethods(scope); + for (Cppyy::TCppIndex_t imeth = 0; imeth < nMethods; ++imeth) { + Cppyy::TCppMethod_t method = Cppyy::GetMethod(scope, imeth); + + // process the method based on its name + std::string mtCppName = Cppyy::GetMethodName(method); + + // special case trackers + bool setupSetItem = false; + bool isConstructor = Cppyy::IsConstructor(method); + bool isTemplate = isConstructor ? false : Cppyy::IsMethodTemplate(scope, imeth); + + // filter empty names (happens for namespaces, is bug?) + if (mtCppName == "") + continue; + + // filter C++ destructors + if (mtCppName[0] == '~') + continue; + + // translate operators + std::string mtName = Utility::MapOperatorName(mtCppName, Cppyy::GetMethodNumArgs(method)); + + // operator[]/() returning a reference type will be used for __setitem__ + if (mtName == "__call__" || mtName == "__getitem__") { + const std::string& qual_return = Cppyy::ResolveName(Cppyy::GetMethodResultType(method)); + if (qual_return.find("const", 0, 5) == std::string::npos) { + const std::string& cpd = Utility::Compound(qual_return); + if (!cpd.empty() && cpd[cpd.size()- 1] == '&') { + setupSetItem = true; + } + } + } + + // public methods are normally visible, private methods are mangled python-wise + // note the overload implications which are name based, and note that genreflex + // does not create the interface methods for private/protected methods ... + // TODO: check whether Cling allows private method calling; otherwise delete this + if (!Cppyy::IsPublicMethod(method)) { + if (isConstructor) // don't expose private ctors + continue; + else { // mangle private methods + // TODO: drop use of TClassEdit here ... + // const std::string& clName = TClassEdit::ShortType( + // Cppyy::GetFinalName(scope).c_str(), TClassEdit::kDropAlloc); + const std::string& clName = Cppyy::GetFinalName(scope); + mtName = "_" + clName + "__" + mtName; + } + } + + // template members; handled by adding a dispatcher to the class + if (isTemplate) { + // TODO: the following is incorrect if both base and derived have the same + // templated method (but that is an unlikely scenario anyway) + PyObject* attr = PyObject_GetAttrString(pyclass, const_cast(mtName.c_str())); + if (!TemplateProxy_Check(attr)) { + PyErr_Clear(); + TemplateProxy* pytmpl = TemplateProxy_New(mtCppName, mtName, pyclass); + if (CPPOverload_Check(attr)) pytmpl->AddOverload((CPPOverload*)attr); + PyObject_SetAttrString( + pyclass, const_cast(mtName.c_str()), (PyObject*)pytmpl); + Py_DECREF(pytmpl); + } + Py_XDECREF(attr); + // continue processing to actually add the method so that the proxy can find + // it on the class when called explicitly + } + + // construct the holder + PyCallable* pycall = 0; + if (Cppyy::IsStaticMethod(method)) // class method + pycall = new CPPClassMethod(scope, method); + else if (isNamespace) // free function + pycall = new CPPFunction(scope, method); + else if (isConstructor) { // constructor + pycall = new CPPConstructor(scope, method); + mtName = "__init__"; + hasConstructor = true; + } else // member function + pycall = new CPPMethod(scope, method); + + // lookup method dispatcher and store method + Callables_t& md = (*(cache.insert( + std::make_pair(mtName, Callables_t())).first)).second; + md.push_back(pycall); + + // special case for operator[]/() that returns by ref, use for getitem/call and setitem + if (setupSetItem) { + Callables_t& setitem = (*(cache.insert( + std::make_pair(std::string("__setitem__"), Callables_t())).first)).second; + setitem.push_back(new CPPSetItem(scope, method)); + } + + if (isTemplate) { + PyObject* attr = PyObject_GetAttrString(pyclass, const_cast(mtName.c_str())); + ((TemplateProxy*)attr)->AddTemplate(pycall->Clone()); + Py_DECREF(attr); + } + } + +// add a pseudo-default ctor, if none defined + if (!isNamespace && !hasConstructor) + cache["__init__"].push_back(new CPPConstructor(scope, (Cppyy::TCppMethod_t)0)); + +// add the methods to the class dictionary + for (CallableCache_t::iterator imd = cache.begin(); imd != cache.end(); ++imd) { + // in order to prevent removing templated editions of this method (which were set earlier, + // above, as a different proxy object), we'll check and add this method flagged as a generic + // one (to be picked up by the templated one as appropriate) if a template exists + PyObject* attr = PyObject_GetAttrString(pyclass, const_cast(imd->first.c_str())); + if (TemplateProxy_Check(attr)) { + // template exists, supply it with the non-templated method overloads + for (Callables_t::iterator cit = imd->second.begin(); cit != imd->second.end(); ++cit) + ((TemplateProxy*)attr)->AddOverload(*cit); + } else { + if (!attr) PyErr_Clear(); + // normal case, add a new method + CPPOverload* method = CPPOverload_New(imd->first, imd->second); + PyObject_SetAttrString( + pyclass, const_cast(method->GetName().c_str()), (PyObject*)method); + Py_DECREF(method); + } + + Py_XDECREF(attr); // could have be found in base class or non-existent + } + + // collect data members (including enums) + const Cppyy::TCppIndex_t nDataMembers = Cppyy::GetNumDatamembers(scope); + for (Cppyy::TCppIndex_t idata = 0; idata < nDataMembers; ++idata) { + // allow only public members + if (!Cppyy::IsPublicData(scope, idata)) + continue; + + // enum datamembers (this in conjunction with previously collected enums above) + if (Cppyy::IsEnumData(scope, idata) && Cppyy::IsStaticData(scope, idata)) { + // some implementation-specific data members have no address: ignore them + if (!Cppyy::GetDatamemberOffset(scope, idata)) + continue; + + // two options: this is a static variable, or it is the enum value, the latter + // already exists, so check for it and move on if set + PyObject* eset = PyObject_GetAttrString(pyclass, + const_cast(Cppyy::GetDatamemberName(scope, idata).c_str())); + if (eset) { + Py_DECREF(eset); + continue; + } + + PyErr_Clear(); + + // it could still be that this is an anonymous enum, which is not in the list + // provided by the class + if (strstr(Cppyy::GetDatamemberType(scope, idata).c_str(), "(anonymous)") != 0) { + AddPropertyToClass(pyclass, scope, idata); + continue; + } + } + + // properties (aka public (static) data members) + AddPropertyToClass(pyclass, scope, idata); + } + +// restore custom __getattr__ + Py_TYPE(pyclass)->tp_getattro = oldgetattro; + +// all ok, done + return 0; +} + +//---------------------------------------------------------------------------- +static PyObject* BuildCppClassBases(Cppyy::TCppType_t klass) +{ +// Build a tuple of python proxy classes of all the bases of the given 'klass'. + + size_t nbases = Cppyy::GetNumBases(klass); + +// collect bases in acceptable mro order, while removing duplicates (this may +// break the overload resolution in esoteric cases, but otherwise the class can +// not be used at all, as CPython will refuse the mro). + std::deque uqb; + std::deque bids; + for (size_t ibase = 0; ibase < nbases; ++ibase) { + const std::string& name = Cppyy::GetBaseName(klass, ibase); + int decision = 2; + Cppyy::TCppType_t tp = Cppyy::GetScope(name); + for (size_t ibase2 = 0; ibase2 < uqb.size(); ++ibase2) { + if (uqb[ibase2] == name) { // not unique ... skip + decision = 0; + break; + } + + if (Cppyy::IsSubtype(tp, bids[ibase2])) { + // mro requirement: sub-type has to follow base + decision = 1; + break; + } + } + + if (decision == 1) { + uqb.push_front(name); + bids.push_front(tp); + } else if (decision == 2) { + uqb.push_back(name); + bids.push_back(tp); + } + // skipped if decision == 0 (not unique) + } + +// allocate a tuple for the base classes, special case for first base + nbases = uqb.size(); + + PyObject* pybases = PyTuple_New(nbases ? nbases : 1); + if (!pybases) + return nullptr; + +// build all the bases + if (nbases == 0) { + Py_INCREF((PyObject*)(void*)&CPPInstance_Type); + PyTuple_SET_ITEM(pybases, 0, (PyObject*)(void*)&CPPInstance_Type); + } else { + for (std::vector::size_type ibase = 0; ibase < nbases; ++ibase) { + PyObject* pyclass = CreateScopeProxy(uqb[ibase]); + if (!pyclass) { + Py_DECREF(pybases); + return nullptr; + } + + PyTuple_SET_ITEM(pybases, ibase, pyclass); + } + + // special case, if true python types enter the hierarchy, make sure that + // the first base seen is still the CPPInstance_Type + if (!PyObject_IsSubclass(PyTuple_GET_ITEM(pybases, 0), (PyObject*)&CPPInstance_Type)) { + PyObject* newpybases = PyTuple_New(nbases+1); + Py_INCREF((PyObject*)(void*)&CPPInstance_Type); + PyTuple_SET_ITEM(newpybases, 0, (PyObject*)(void*)&CPPInstance_Type); + for (int ibase = 0; ibase < (int)nbases; ++ibase) { + PyObject* pyclass = PyTuple_GET_ITEM(pybases, ibase); + Py_INCREF(pyclass); + PyTuple_SET_ITEM(newpybases, ibase+1, pyclass); + } + Py_DECREF(pybases); + pybases = newpybases; + } + } + + return pybases; +} + +} // namespace CPyCppyy + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::GetScopeProxy(Cppyy::TCppScope_t scope) +{ +// Retrieve scope proxy from the known ones. + PyClassMap_t::iterator pci = gPyClasses.find(scope); + if (pci != gPyClasses.end()) { + PyObject* pyclass = PyWeakref_GetObject(pci->second); + if (pyclass != Py_None) { + Py_INCREF(pyclass); + return pyclass; + } + } + + return nullptr; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CreateScopeProxy(Cppyy::TCppScope_t scope) +{ +// Convenience function with a lookup first through the known existing proxies. + PyObject* pyclass = GetScopeProxy(scope); + if (pyclass) + return pyclass; + + return CreateScopeProxy(Cppyy::GetScopedFinalName(scope)); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CreateScopeProxy(PyObject*, PyObject* args) +{ +// Build a python shadow class for the named C++ class. + std::string cname = CPyCppyy_PyUnicode_AsString(PyTuple_GetItem(args, 0)); + if (PyErr_Occurred()) + return nullptr; + + return CreateScopeProxy(cname); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::CreateScopeProxy(const std::string& scope_name, PyObject* parent) +{ +// Build a python shadow class for the named C++ class or namespace. + +// force building of the class if a parent is specified (prevents loops) + bool force = parent != 0; + +// working copy + std::string name = scope_name; + +// determine complete scope name, if a python parent has been given + std::string scName = ""; + if (parent) { + if (CPPScope_Check(parent)) + scName = Cppyy::GetScopedFinalName(((CPPScope*)parent)->fCppType); + else { + PyObject* parname = PyObject_GetAttr(parent, PyStrings::gName); + if (!parname) { + PyErr_Format(PyExc_SystemError, "given scope has no name for %s", name.c_str()); + return nullptr; + } + + // should be a string + scName = CPyCppyy_PyUnicode_AsString(parname); + Py_DECREF(parname); + if (PyErr_Occurred()) + return nullptr; + } + + // accept this parent scope and use it's name for prefixing + Py_INCREF(parent); + } + +// retrieve C++ class (this verifies name, and is therefore done first) + const std::string& lookup = scName.empty() ? name : (scName+"::"+name); + Cppyy::TCppScope_t klass = Cppyy::GetScope(lookup); + + if (!(bool)klass && Cppyy::IsTemplate(lookup)) { + // a "naked" templated class is requested: return callable proxy for instantiations + PyObject* pytcl = PyObject_GetAttr(gThisModule, PyStrings::gTemplate); + PyObject* pytemplate = PyObject_CallFunction( + pytcl, const_cast("s"), const_cast(lookup.c_str())); + Py_DECREF(pytcl); + + // cache the result + PyObject_SetAttrString(parent ? parent : gThisModule, (char*)name.c_str(), pytemplate); + + // done, next step should be a call into this template + Py_XDECREF(parent); + return pytemplate; + } + + if (!(bool)klass) { // if so, all options have been exhausted: it doesn't exist as such + PyErr_Format(PyExc_TypeError, "\'%s\' is not a known C++ class", lookup.c_str()); + Py_XDECREF(parent); + return nullptr; + } + +// locate class by ID, if possible, to prevent parsing scopes/templates anew + PyObject* pyscope = GetScopeProxy(klass); + if (pyscope) { + if (parent) PyObject_SetAttrString(parent, (char*)scope_name.c_str(), pyscope); + return pyscope; + } + +// locate the parent, if necessary, for building the class if not specified + std::string::size_type last = 0; + if (!parent) { + // TODO: move this to TypeManip + // need to deal with template paremeters that can have scopes themselves + int tpl_open = 0; + for (std::string::size_type pos = 0; pos < name.size(); ++pos) { + std::string::value_type c = name[pos]; + + // count '<' and '>' to be able to skip template contents + if (c == '<') + ++tpl_open; + else if (c == '>') + --tpl_open; + + // by only checking for "::" the last part (class name) is dropped + else if (tpl_open == 0 && \ + c == ':' && pos+1 < name.size() && name[ pos+1 ] == ':') { + // found a new scope part + const std::string& part = name.substr(last, pos-last); + + PyObject* next = PyObject_GetAttrString( + parent ? parent : gThisModule, const_cast(part.c_str())); + + if (!next) { // lookup failed, try to create it + PyErr_Clear(); + next = CreateScopeProxy(part, parent); + } + Py_XDECREF(parent); + + if (!next) // create failed, give up + return nullptr; + + // found scope part + parent = next; + + // done with part (note that pos is moved one ahead here) + last = pos+2; ++pos; + } + + } + + if (parent && !CPPScope_Check(parent)) { + // Special case: parent found is not one of ours (it's e.g. a pure Python module), so + // continuing would fail badly. One final lookup, then out of here ... + std::string unscoped = scope_name.substr(last, std::string::npos); + return PyObject_GetAttrString(parent, unscoped.c_str()); + } + } + +// use the module as a fake cope if no outer scope found + if (!parent) { + parent = gThisModule; + Py_INCREF(parent); + } + +// use actual class name for binding + const std::string& actual = Cppyy::GetFinalName(klass); + +// first try to retrieve an existing class representation + PyObject* pyactual = CPyCppyy_PyUnicode_FromString(actual.c_str()); + PyObject* pyclass = force ? nullptr : PyObject_GetAttr(parent, pyactual); + + bool bClassFound = (bool)pyclass; + +// build if the class does not yet exist + if (!pyclass) { + // ignore error generated from the failed lookup + PyErr_Clear(); + + // construct the base classes + PyObject* pybases = BuildCppClassBases(klass); + if (pybases != 0) { + // create a fresh Python class, given bases, name, and empty dictionary + pyclass = CreateNewCppProxyClass(klass, pybases); + Py_DECREF(pybases); + } + + // fill the dictionary, if successful + if (pyclass) { + if (BuildScopeProxyDict(klass, pyclass)) { + // something failed in building the dictionary + Py_DECREF(pyclass); + pyclass = nullptr; + } else { + PyObject_SetAttr(parent, pyactual, pyclass); + } + } + } + +// give up, if not constructed + if (!pyclass) + return nullptr; + + if (name != actual) // exists, but typedef-ed: simply map reference + PyObject_SetAttrString(parent, const_cast(name.c_str()), pyclass); + +// if this was a recycled class, we're done + if (bClassFound) + return pyclass; + +// store a ref from cppyy scope id to new python class + gPyClasses[klass] = PyWeakref_NewRef(pyclass, nullptr); + + Py_DECREF(pyactual); + Py_DECREF(parent); + + if (!Cppyy::IsNamespace(klass)) { + // add python-style features to classes + if (!Pythonize(pyclass, Cppyy::GetScopedFinalName(klass))) { + Py_XDECREF(pyclass); + pyclass = nullptr; + } + } else { + // add to sys.modules to allow importing from this namespace + PyObject* pyfullname = PyObject_GetAttr(pyclass, PyStrings::gModule); + CPyCppyy_PyUnicode_AppendAndDel( + &pyfullname, CPyCppyy_PyUnicode_FromString(".")); + CPyCppyy_PyUnicode_AppendAndDel( + &pyfullname, PyObject_GetAttr(pyclass, PyStrings::gName)); + PyObject* modules = PySys_GetObject(const_cast("modules")); + if (modules && PyDict_Check(modules)) + PyDict_SetItem(modules, pyfullname, pyclass); + Py_DECREF(pyfullname); + } + +// all done + return pyclass; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::BindCppObjectNoCast(Cppyy::TCppObject_t address, + Cppyy::TCppType_t klass, int flags) +{ +// only known or knowable objects will be bound (null object is ok) + if (!klass) { + PyErr_SetString(PyExc_TypeError, "attempt to bind C++ object w/o class"); + return nullptr; + } + +// retrieve python class + PyObject* pyclass = CreateScopeProxy(klass); + if (!pyclass) + return nullptr; // error has been set in CreateScopeProxy + + bool isRef = flags & CPPInstance::kIsReference; + bool isValue = flags & CPPInstance::kIsValue; + +// TODO: add convenience function to MemoryRegulator to use pyclass directly +// TODO: make sure that a consistent address is used (may have to be done in BindCppObject) + if (address && !isValue /* always fresh */) { + PyObject* oldPyObject = MemoryRegulator::RetrievePyObject( + isRef ? *(void**)address : address, klass); + // ptr-ptr requires old object to be a reference to enable re-use + if (oldPyObject && (!(flags & CPPInstance::kIsPtrPtr) || + ((CPPInstance*)oldPyObject)->fFlags & CPPInstance::kIsReference)) + return oldPyObject; + } + +// instantiate an object of this class + PyObject* args = PyTuple_New(0); + CPPInstance* pyobj = + (CPPInstance*)((PyTypeObject*)pyclass)->tp_new((PyTypeObject*)pyclass, args, nullptr); + Py_DECREF(args); + Py_DECREF(pyclass); + +// bind, register and return if successful + if (pyobj != 0) { // fill proxy value? + unsigned flags = + (isRef ? CPPInstance::kIsReference : 0) | (isValue ? CPPInstance::kIsValue : 0); + pyobj->Set(address, (CPPInstance::EFlags)flags); + + if (address && !isRef) + MemoryRegulator::RegisterPyObject(pyobj, address); + } + +// successful completion + return (PyObject*)pyobj; +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::BindCppObject(Cppyy::TCppObject_t address, + Cppyy::TCppType_t klass, int flags) +{ +// if the object is a null pointer, return a typed one (as needed for overloading) + if (!address) + return BindCppObjectNoCast(address, klass, flags); + +// only known or knowable objects will be bound + if (!klass) { + PyErr_SetString(PyExc_TypeError, "attempt to bind C++ object w/o class"); + return nullptr; + } + + bool isRef = flags & CPPInstance::kIsReference; + +// get actual class for recycling checking and/or downcasting + Cppyy::TCppType_t clActual = isRef ? 0 : Cppyy::GetActualClass(klass, address); + +// downcast to real class for object returns, unless pinned + if (clActual && klass != clActual) { + auto pci = gPinnedTypes.find(klass); + if (pci == gPinnedTypes.end()) { + ptrdiff_t offset = Cppyy::GetBaseOffset( + clActual, klass, address, -1 /* down-cast */, true /* report errors */); + if (offset != -1) { // may fail if clActual not fully defined + address = (void*)((Long_t)address + offset); + klass = clActual; + } + } + } + +// actual binding (returned object may be zero w/ a python exception set) + return BindCppObjectNoCast(address, klass, flags); +} + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::BindCppObjectArray( + Cppyy::TCppObject_t address, Cppyy::TCppType_t klass, Int_t size) +{ +// TODO: this function exists for symmetry; need to figure out if it's useful + return TupleOfInstances_New(address, klass, size); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.h new file mode 100644 index 0000000000000..4b7d35068230c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/ProxyWrappers.h @@ -0,0 +1,27 @@ +#ifndef CPYCPPYY_PROXYWRAPPERS_H +#define CPYCPPYY_PROXYWRAPPERS_H + +// Standard +#include + + +namespace CPyCppyy { + +// construct a Python shadow class for the named C++ class +PyObject* GetScopeProxy(Cppyy::TCppScope_t); +PyObject* CreateScopeProxy(Cppyy::TCppScope_t); +PyObject* CreateScopeProxy(PyObject*, PyObject* args); +PyObject* CreateScopeProxy( + const std::string& scope_name, PyObject* parent = nullptr); + +// bind a C++ object into a Python proxy object +PyObject* BindCppObjectNoCast(Cppyy::TCppObject_t object, + Cppyy::TCppType_t klass, int flags = 0x0); +PyObject* BindCppObject(Cppyy::TCppObject_t object, + Cppyy::TCppType_t klass, int flags = 0x0); +PyObject* BindCppObjectArray( + Cppyy::TCppObject_t address, Cppyy::TCppType_t klass, Int_t size); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_PROXYWRAPPERS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyCallable.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyCallable.h new file mode 100644 index 0000000000000..ff2b247889264 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyCallable.h @@ -0,0 +1,39 @@ +#ifndef CPYCPPYY_PYCALLABLE_H +#define CPYCPPYY_PYCALLABLE_H + +// Bindings +#include "CallContext.h" + + +namespace CPyCppyy { + +class CPPInstance; + +class PyCallable { +public: + virtual ~PyCallable() {} + +public: + virtual PyObject* GetSignature(bool show_formalargs = true) = 0; + virtual PyObject* GetPrototype(bool show_formalargs = true) = 0; + virtual PyObject* GetDocString() { return GetPrototype(); } + + virtual int GetPriority() = 0; + + virtual int GetMaxArgs() = 0; + virtual PyObject* GetCoVarNames() = 0; + virtual PyObject* GetArgDefault(int /* iarg */) = 0; + + virtual PyObject* GetScopeProxy() = 0; + virtual Cppyy::TCppFuncAddr_t GetFunctionAddress() = 0; + + virtual PyCallable* Clone() = 0; + +public: + virtual PyObject* Call( + CPPInstance*& self, PyObject* args, PyObject* kwds, CallContext* ctxt = nullptr) = 0; +}; + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_PYCALLABLE_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyObjectDir27.inc b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyObjectDir27.inc new file mode 100644 index 0000000000000..3274a7559983a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyObjectDir27.inc @@ -0,0 +1,237 @@ +/* Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014 Python Software Foundation; All Rights Reserved + +Copied from Objects/object.c under the PSF License Version 2. + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +2011, 2012, 2013, 2014 Python Software Foundation; All Rights Reserved" are retained +in Python alone or in any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. + +*/ + +/* Helper for PyObject_Dir. + Merge the __dict__ of aclass into dict, and recursively also all + the __dict__s of aclass's base classes. The order of merging isn't + defined, as it's expected that only the final set of dict keys is + interesting. + Return 0 on success, -1 on error. +*/ + +static int merge_class_dict(PyObject* dict, PyObject* aclass) +{ + PyObject *classdict; + PyObject *bases; + + assert(PyDict_Check(dict)); + assert(aclass); + + /* Merge in the type's dict (if any). */ + classdict = PyObject_GetAttrString(aclass, "__dict__"); + if (classdict == NULL) + PyErr_Clear(); + else { + int status = PyDict_Update(dict, classdict); + Py_DECREF(classdict); + if (status < 0) + return -1; + } + + /* Recursively merge in the base types' (if any) dicts. */ + bases = PyObject_GetAttrString(aclass, "__bases__"); + if (bases == NULL) + PyErr_Clear(); + else { + /* We have no guarantee that bases is a real tuple */ + Py_ssize_t i, n; + n = PySequence_Size(bases); /* This better be right */ + if (n < 0) + PyErr_Clear(); + else { + for (i = 0; i < n; i++) { + int status; + PyObject *base = PySequence_GetItem(bases, i); + if (base == NULL) { + Py_DECREF(bases); + return -1; + } + status = merge_class_dict(dict, base); + Py_DECREF(base); + if (status < 0) { + Py_DECREF(bases); + return -1; + } + } + } + Py_DECREF(bases); + } + return 0; +} + +#if PY_VERSION_HEX < 0x03000000 + +/* Helper for PyObject_Dir. + If obj has an attr named attrname that's a list, merge its string + elements into keys of dict. + Return 0 on success, -1 on error. Errors due to not finding the attr, + or the attr not being a list, are suppressed. +*/ + +static int +merge_list_attr(PyObject* dict, PyObject* obj, const char *attrname) +{ + PyObject *list; + int result = 0; + + assert(PyDict_Check(dict)); + assert(obj); + assert(attrname); + + list = PyObject_GetAttrString(obj, attrname); + if (list == NULL) + PyErr_Clear(); + + else if (PyList_Check(list)) { + int i; + for (i = 0; i < PyList_GET_SIZE(list); ++i) { + PyObject *item = PyList_GET_ITEM(list, i); + if (PyString_Check(item)) { + result = PyDict_SetItem(dict, item, Py_None); + if (result < 0) + break; + } + } + if (Py_Py3kWarningFlag && + (strcmp(attrname, "__members__") == 0 || + strcmp(attrname, "__methods__") == 0)) { + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "__members__ and __methods__ not " + "supported in 3.x", 1) < 0) { + Py_XDECREF(list); + return -1; + } + } + } + + Py_XDECREF(list); + return result; +} + +#endif + +/* Helper for PyObject_Dir of type objects: returns __dict__ and __bases__. + We deliberately don't suck up its __class__, as methods belonging to the + metaclass would probably be more confusing than helpful. +*/ +static PyObject * +_specialized_dir_type(PyObject *obj) +{ + PyObject *result = NULL; + PyObject *dict = PyDict_New(); + + if (dict != NULL && merge_class_dict(dict, obj) == 0) + result = PyDict_Keys(dict); + + Py_XDECREF(dict); + return result; +} + +static PyObject* _generic_dir(PyObject *obj) +{ + if (PyType_Check(obj) || PyClass_Check(obj)) + return _specialized_dir_type(obj); + + PyObject *result = NULL; + PyObject *dict = NULL; + PyObject *itsclass = NULL; + + /* Get __dict__ (which may or may not be a real dict...) */ + dict = PyObject_GetAttrString(obj, "__dict__"); + if (dict == NULL) { + PyErr_Clear(); + dict = PyDict_New(); + } + else if (!PyDict_Check(dict)) { + Py_DECREF(dict); + dict = PyDict_New(); + } + else { + /* Copy __dict__ to avoid mutating it. */ + PyObject *temp = PyDict_Copy(dict); + Py_DECREF(dict); + dict = temp; + } + + if (dict == NULL) + goto error; + +#if PY_VERSION_HEX < 0x03000000 + /* Merge in __members__ and __methods__ (if any). + * This is removed in Python 3000. */ + if (merge_list_attr(dict, obj, "__members__") < 0) + goto error; + if (merge_list_attr(dict, obj, "__methods__") < 0) + goto error; +#endif + + /* Merge in attrs reachable from its class. */ + itsclass = PyObject_GetAttrString(obj, "__class__"); + if (itsclass == NULL) + /* XXX(tomer): Perhaps fall back to obj->ob_type if no + __class__ exists? */ + PyErr_Clear(); + else { + if (merge_class_dict(dict, itsclass) != 0) + goto error; + } + + result = PyDict_Keys(dict); + /* fall through */ +error: + Py_XDECREF(itsclass); + Py_XDECREF(dict); + return result; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.cxx new file mode 100644 index 0000000000000..df3c9418ecf01 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.cxx @@ -0,0 +1,138 @@ +// Bindings +#include "CPyCppyy.h" +#include "PyStrings.h" + + +//- data _____________________________________________________________________ +PyObject* CPyCppyy::PyStrings::gAssign = nullptr; +PyObject* CPyCppyy::PyStrings::gBases = nullptr; +PyObject* CPyCppyy::PyStrings::gBase = nullptr; +PyObject* CPyCppyy::PyStrings::gClass = nullptr; +PyObject* CPyCppyy::PyStrings::gCppEq = nullptr; +PyObject* CPyCppyy::PyStrings::gCppNe = nullptr; +PyObject* CPyCppyy::PyStrings::gDeref = nullptr; +PyObject* CPyCppyy::PyStrings::gDict = nullptr; +PyObject* CPyCppyy::PyStrings::gEmptyString = nullptr; +PyObject* CPyCppyy::PyStrings::gEq = nullptr; +PyObject* CPyCppyy::PyStrings::gFollow = nullptr; +PyObject* CPyCppyy::PyStrings::gGetItem = nullptr; +PyObject* CPyCppyy::PyStrings::gInit = nullptr; +PyObject* CPyCppyy::PyStrings::gIter = nullptr; +PyObject* CPyCppyy::PyStrings::gLen = nullptr; +PyObject* CPyCppyy::PyStrings::gLifeLine = nullptr; +PyObject* CPyCppyy::PyStrings::gModule = nullptr; +PyObject* CPyCppyy::PyStrings::gMRO = nullptr; +PyObject* CPyCppyy::PyStrings::gName = nullptr; +PyObject* CPyCppyy::PyStrings::gNe = nullptr; +PyObject* CPyCppyy::PyStrings::gTypeCode = nullptr; + +PyObject* CPyCppyy::PyStrings::gAdd = nullptr; +PyObject* CPyCppyy::PyStrings::gSub = nullptr; +PyObject* CPyCppyy::PyStrings::gMul = nullptr; +PyObject* CPyCppyy::PyStrings::gDiv = nullptr; + +PyObject* CPyCppyy::PyStrings::gAt = nullptr; +PyObject* CPyCppyy::PyStrings::gBegin = nullptr; +PyObject* CPyCppyy::PyStrings::gEnd = nullptr; +PyObject* CPyCppyy::PyStrings::gFirst = nullptr; +PyObject* CPyCppyy::PyStrings::gSecond = nullptr; +PyObject* CPyCppyy::PyStrings::gSize = nullptr; +PyObject* CPyCppyy::PyStrings::gTemplate = nullptr; +PyObject* CPyCppyy::PyStrings::gVectorAt = nullptr; + +PyObject* CPyCppyy::PyStrings::gThisModule = nullptr; + + +//----------------------------------------------------------------------------- +#define CPPYY_INITIALIZE_STRING(var, str) \ + if (!(PyStrings::var = CPyCppyy_PyUnicode_InternFromString((char*)#str))) \ + return false + +bool CPyCppyy::CreatePyStrings() { +// Build cache of commonly used python strings (the cache is python intern, so +// all strings are shared python-wide, not just in cppyy). + CPPYY_INITIALIZE_STRING(gBases, __assign__); + CPPYY_INITIALIZE_STRING(gBases, __bases__); + CPPYY_INITIALIZE_STRING(gBase, __base__); + CPPYY_INITIALIZE_STRING(gClass, __class__); + CPPYY_INITIALIZE_STRING(gCppEq, __cpp_eq__); + CPPYY_INITIALIZE_STRING(gCppNe, __cpp_ne__); + CPPYY_INITIALIZE_STRING(gDeref, __deref__); + CPPYY_INITIALIZE_STRING(gDict, __dict__); + if (!(PyStrings::gEmptyString = CPyCppyy_PyUnicode_FromString((char*)""))) + return false; + CPPYY_INITIALIZE_STRING(gEq, __eq__); + CPPYY_INITIALIZE_STRING(gFollow, __follow__); + CPPYY_INITIALIZE_STRING(gGetItem, __getitem__); + CPPYY_INITIALIZE_STRING(gInit, __init__); + CPPYY_INITIALIZE_STRING(gIter, __iter__); + CPPYY_INITIALIZE_STRING(gLen, __len__); + CPPYY_INITIALIZE_STRING(gLifeLine, __lifeline); + CPPYY_INITIALIZE_STRING(gModule, __module__); + CPPYY_INITIALIZE_STRING(gMRO, __mro__); + CPPYY_INITIALIZE_STRING(gName, __name__); + CPPYY_INITIALIZE_STRING(gNe, __ne__); + CPPYY_INITIALIZE_STRING(gTypeCode, typecode); + + CPPYY_INITIALIZE_STRING(gAdd, __add__); + CPPYY_INITIALIZE_STRING(gSub, __sub__); + CPPYY_INITIALIZE_STRING(gMul, __mul__); + CPPYY_INITIALIZE_STRING(gDiv, CPPYY__div__); + + CPPYY_INITIALIZE_STRING(gAt, at); + CPPYY_INITIALIZE_STRING(gBegin, begin); + CPPYY_INITIALIZE_STRING(gEnd, end); + CPPYY_INITIALIZE_STRING(gFirst, first); + CPPYY_INITIALIZE_STRING(gSecond, second); + CPPYY_INITIALIZE_STRING(gSize, size); + CPPYY_INITIALIZE_STRING(gTemplate, Template); + CPPYY_INITIALIZE_STRING(gVectorAt, _vector__at); + + CPPYY_INITIALIZE_STRING(gThisModule, cppyy); + + return true; +} + + +//----------------------------------------------------------------------------- +PyObject* CPyCppyy::DestroyPyStrings() { +// Remove all cached python strings. + Py_DECREF(PyStrings::gBases); PyStrings::gBases = nullptr; + Py_DECREF(PyStrings::gBase); PyStrings::gBase = nullptr; + Py_DECREF(PyStrings::gClass); PyStrings::gClass = nullptr; + Py_DECREF(PyStrings::gCppEq); PyStrings::gCppEq = nullptr; + Py_DECREF(PyStrings::gCppNe); PyStrings::gCppNe = nullptr; + Py_DECREF(PyStrings::gDeref); PyStrings::gDeref = nullptr; + Py_DECREF(PyStrings::gDict); PyStrings::gDict = nullptr; + Py_DECREF(PyStrings::gEmptyString); PyStrings::gEmptyString = nullptr; + Py_DECREF(PyStrings::gEq); PyStrings::gEq = nullptr; + Py_DECREF(PyStrings::gFollow); PyStrings::gFollow = nullptr; + Py_DECREF(PyStrings::gGetItem); PyStrings::gGetItem = nullptr; + Py_DECREF(PyStrings::gInit); PyStrings::gInit = nullptr; + Py_DECREF(PyStrings::gIter); PyStrings::gIter = nullptr; + Py_DECREF(PyStrings::gLen); PyStrings::gLen = nullptr; + Py_DECREF(PyStrings::gLifeLine); PyStrings::gLifeLine = nullptr; + Py_DECREF(PyStrings::gModule); PyStrings::gModule = nullptr; + Py_DECREF(PyStrings::gMRO); PyStrings::gMRO = nullptr; + Py_DECREF(PyStrings::gName); PyStrings::gName = nullptr; + Py_DECREF(PyStrings::gNe); PyStrings::gNe = nullptr; + Py_DECREF(PyStrings::gTypeCode); PyStrings::gTypeCode = nullptr; + + Py_DECREF(PyStrings::gAdd); PyStrings::gAdd = nullptr; + Py_DECREF(PyStrings::gSub); PyStrings::gSub = nullptr; + Py_DECREF(PyStrings::gMul); PyStrings::gMul = nullptr; + Py_DECREF(PyStrings::gDiv); PyStrings::gDiv = nullptr; + + Py_DECREF(PyStrings::gAt); PyStrings::gAt = nullptr; + Py_DECREF(PyStrings::gBegin); PyStrings::gBegin = nullptr; + Py_DECREF(PyStrings::gEnd); PyStrings::gEnd = nullptr; + Py_DECREF(PyStrings::gFirst); PyStrings::gFirst = nullptr; + Py_DECREF(PyStrings::gSecond); PyStrings::gSecond = nullptr; + Py_DECREF(PyStrings::gSize); PyStrings::gSize = nullptr; + Py_DECREF(PyStrings::gTemplate); PyStrings::gTemplate = nullptr; + Py_DECREF(PyStrings::gVectorAt); PyStrings::gVectorAt = nullptr; + + Py_DECREF(PyStrings::gThisModule); PyStrings::gThisModule = nullptr; + + Py_RETURN_NONE; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.h new file mode 100644 index 0000000000000..f7dcbeaf77b3a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/PyStrings.h @@ -0,0 +1,55 @@ +#ifndef CPYCPPYY_PYSTRINGS_H +#define CPYCPPYY_PYSTRINGS_H + +namespace CPyCppyy { + +// python strings kept for performance reasons + +namespace PyStrings { + + extern PyObject* gAssign; + extern PyObject* gBases; + extern PyObject* gBase; + extern PyObject* gClass; + extern PyObject* gCppEq; + extern PyObject* gCppNe; + extern PyObject* gDeref; + extern PyObject* gDict; + extern PyObject* gEmptyString; + extern PyObject* gEq; + extern PyObject* gFollow; + extern PyObject* gGetItem; + extern PyObject* gInit; + extern PyObject* gIter; + extern PyObject* gLen; + extern PyObject* gLifeLine; + extern PyObject* gModule; + extern PyObject* gMRO; + extern PyObject* gName; + extern PyObject* gNe; + extern PyObject* gTypeCode; + + extern PyObject* gAdd; + extern PyObject* gSub; + extern PyObject* gMul; + extern PyObject* gDiv; + + extern PyObject* gAt; + extern PyObject* gBegin; + extern PyObject* gEnd; + extern PyObject* gFirst; + extern PyObject* gSecond; + extern PyObject* gSize; + extern PyObject* gTemplate; + extern PyObject* gVectorAt; + + extern PyObject* gThisModule; + +} // namespace PyStrings + +bool CreatePyStrings(); +PyObject* DestroyPyStrings(); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_PYSTRINGS_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.cxx new file mode 100644 index 0000000000000..5c94788e2e969 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.cxx @@ -0,0 +1,840 @@ +// Bindings +#include "CPyCppyy.h" +#include "Pythonize.h" +#include "Converters.h" +#include "CPPInstance.h" +#include "CPPOverload.h" +#include "ProxyWrappers.h" +#include "PyCallable.h" +#include "PyStrings.h" +#include "Utility.h" + +// Standard +#include +#include +#include + + +//- data and local helpers --------------------------------------------------- +namespace CPyCppyy { + extern PyObject* gThisModule; + extern std::map> gPythonizations; +} + +namespace { + +// for convenience +using namespace CPyCppyy; + +//----------------------------------------------------------------------------- +bool HasAttrDirect(PyObject* pyclass, PyObject* pyname, bool mustBeCPyCppyy = false) { +// prevents calls to Py_TYPE(pyclass)->tp_getattr, which is unnecessary for our +// purposes here and could tickle problems w/ spurious lookups into ROOT meta + PyObject* attr = PyType_Type.tp_getattro(pyclass, pyname); + if (attr != 0 && (!mustBeCPyCppyy || CPPOverload_Check(attr))) { + Py_DECREF(attr); + return true; + } + + PyErr_Clear(); + return false; +} + +//----------------------------------------------------------------------------- +inline bool IsTemplatedSTLClass(const std::string& name, const std::string& klass) { +// Scan the name of the class and determine whether it is a template instantiation. + const int nsize = (int)name.size(); + const int ksize = (int)klass.size(); + + return ((ksize < nsize && name.substr(0,ksize) == klass) || + (ksize+5 < nsize && name.substr(5,ksize) == klass)) && + name.find("::", name.find(">")) == std::string::npos; +} + +// to prevent compiler warnings about const char* -> char* +inline PyObject* CallPyObjMethod(PyObject* obj, const char* meth) +{ +// Helper; call method with signature: obj->meth(). + Py_INCREF(obj); + PyObject* result = PyObject_CallMethod(obj, const_cast(meth), const_cast("")); + Py_DECREF(obj); + return result; +} + +//----------------------------------------------------------------------------- +inline PyObject* CallPyObjMethod(PyObject* obj, const char* meth, PyObject* arg1) +{ +// Helper; call method with signature: obj->meth(arg1). + Py_INCREF(obj); + PyObject* result = PyObject_CallMethod( + obj, const_cast(meth), const_cast("O"), arg1); + Py_DECREF(obj); + return result; +} + + +//- helpers -------------------------------------------------------------------- +static std::string ExtractNamespace(const std::string& name) +{ +// Find the namespace the named class lives in, take care of templates + int tpl_open = 0; + for (std::string::size_type pos = name.size()-1; 0 < pos; --pos) { + std::string::value_type c = name[pos]; + + // count '<' and '>' to be able to skip template contents + if (c == '>') + ++tpl_open; + else if (c == '<') + --tpl_open; + + // collect name up to "::" + else if (tpl_open == 0 && c == ':' && name[pos-1] == ':') { + // found the extend of the scope ... done + return name.substr(0, pos-1); + } + } + +// no namespace; assume outer scope + return ""; +} + +//----------------------------------------------------------------------------- +PyObject* PyStyleIndex(PyObject* self, PyObject* index) +{ +// Helper; converts python index into straight C index. + Py_ssize_t idx = PyInt_AsSsize_t(index); + if (idx == (Py_ssize_t)-1 && PyErr_Occurred()) + return nullptr; + + Py_ssize_t size = PySequence_Size(self); + if (idx >= size || (idx < 0 && idx < -size)) { + PyErr_SetString(PyExc_IndexError, "index out of range"); + return nullptr; + } + + PyObject* pyindex = nullptr; + if (idx >= 0) { + Py_INCREF(index); + pyindex = index; + } else + pyindex = PyLong_FromLong(size+idx); + + return pyindex; +} + +//----------------------------------------------------------------------------- +inline PyObject* CallSelfIndex(CPPInstance* self, PyObject* idx, const char* meth) +{ +// Helper; call method with signature: meth(pyindex). + Py_INCREF((PyObject*)self); + PyObject* pyindex = PyStyleIndex((PyObject*)self, idx); + if (!pyindex) { + Py_DECREF((PyObject*)self); + return nullptr; + } + + PyObject* result = CallPyObjMethod((PyObject*)self, meth, pyindex); + Py_DECREF(pyindex); + Py_DECREF((PyObject*)self); + return result; +} + +//- "smart pointer" behavior --------------------------------------------------- +PyObject* DeRefGetAttr(PyObject* self, PyObject* name) +{ +// Follow operator*() if present (available in python as __deref__), so that +// smart pointers behave as expected. + if (!CPyCppyy_PyUnicode_Check(name)) + PyErr_SetString(PyExc_TypeError, "getattr(): attribute name must be string"); + + PyObject* pyptr = CallPyObjMethod(self, "__deref__"); + if (!pyptr) + return nullptr; + +// prevent a potential infinite loop + if (Py_TYPE(pyptr) == Py_TYPE(self)) { + PyObject* val1 = PyObject_Str(self); + PyObject* val2 = PyObject_Str(name); + PyErr_Format(PyExc_AttributeError, "%s has no attribute \'%s\'", + CPyCppyy_PyUnicode_AsString(val1), CPyCppyy_PyUnicode_AsString(val2)); + Py_DECREF(val2); + Py_DECREF(val1); + + Py_DECREF(pyptr); + return nullptr; + } + + PyObject* result = PyObject_GetAttr(pyptr, name); + Py_DECREF(pyptr); + return result; +} + +//----------------------------------------------------------------------------- +PyObject* FollowGetAttr(PyObject* self, PyObject* name) +{ +// Follow operator->() if present (available in python as __follow__), so that +// smart pointers behave as expected. + if (!CPyCppyy_PyUnicode_Check(name)) + PyErr_SetString(PyExc_TypeError, "getattr(): attribute name must be string"); + + PyObject* pyptr = CallPyObjMethod(self, "__follow__"); + if (!pyptr) + return nullptr; + + PyObject* result = PyObject_GetAttr(pyptr, name); + Py_DECREF(pyptr); + return result; +} + +//----------------------------------------------------------------------------- +PyObject* GenObjectIsEqual(PyObject* self, PyObject* obj) +{ +// Call the C++ operator==() if available, otherwise default. + PyObject* result = CallPyObjMethod(self, "__cpp_eq__", obj); + if (result) + return result; + +// failed: fallback like python would do by reversing the arguments + PyErr_Clear(); + result = CallPyObjMethod(obj, "__cpp_eq__", self); + if (result) + return result; + +// failed: fallback to generic rich comparison + PyErr_Clear(); + return CPPInstance_Type.tp_richcompare(self, obj, Py_EQ); +} + +//----------------------------------------------------------------------------- +PyObject* GenObjectIsNotEqual(PyObject* self, PyObject* obj) +{ +// Reverse of GenObjectIsEqual, if operator!= defined. + PyObject* result = CallPyObjMethod(self, "__cpp_ne__", obj); + if (result) + return result; + +// failed: fallback like python would do by reversing the arguments + PyErr_Clear(); + result = CallPyObjMethod(obj, "__cpp_ne__", self); + if (result) + return result; + +// failed: fallback to generic rich comparison + PyErr_Clear(); + return CPPInstance_Type.tp_richcompare(self, obj, Py_NE); +} + +//- vector behavior as primitives ---------------------------------------------- +typedef struct { + PyObject_HEAD + PyObject* vi_vector; + void* vi_data; + CPyCppyy::Converter* vi_converter; + Py_ssize_t vi_pos; + Py_ssize_t vi_len; + Py_ssize_t vi_stride; +} vectoriterobject; + +static void vectoriter_dealloc(vectoriterobject* vi) { + Py_XDECREF(vi->vi_vector); + delete vi->vi_converter; + PyObject_GC_Del(vi); +} + +static int vectoriter_traverse(vectoriterobject* vi, visitproc visit, void* arg) { + Py_VISIT(vi->vi_vector); + return 0; +} + +static PyObject* vectoriter_iternext(vectoriterobject* vi) { + if (vi->vi_pos >= vi->vi_len) + return nullptr; + + PyObject* result = nullptr; + + if (vi->vi_data && vi->vi_converter) { + void* location = (void*)((ptrdiff_t)vi->vi_data + vi->vi_stride * vi->vi_pos); + result = vi->vi_converter->FromMemory(location); + } else { + PyObject* pyindex = PyLong_FromLong(vi->vi_pos); + result = CallPyObjMethod((PyObject*)vi->vi_vector, "_vector__at", pyindex); + Py_DECREF(pyindex); + } + + vi->vi_pos += 1; + return result; +} + +PyTypeObject VectorIter_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.vectoriter", // tp_name + sizeof(vectoriterobject), // tp_basicsize + 0, + (destructor)vectoriter_dealloc, // tp_dealloc + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + Py_TPFLAGS_DEFAULT | + Py_TPFLAGS_HAVE_GC, // tp_flags + 0, + (traverseproc)vectoriter_traverse, // tp_traverse + 0, 0, 0, + PyObject_SelfIter, // tp_iter + (iternextfunc)vectoriter_iternext, // tp_iternext + 0, // tp_methods + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +static PyObject* vector_iter(PyObject* v) { + vectoriterobject* vi = PyObject_GC_New(vectoriterobject, &VectorIter_Type); + if (!vi) return nullptr; + + Py_INCREF(v); + vi->vi_vector = v; + + PyObject* pyvalue_type = PyObject_GetAttrString((PyObject*)Py_TYPE(v), "value_type"); + PyObject* pyvalue_size = PyObject_GetAttrString((PyObject*)Py_TYPE(v), "value_size"); + + if (pyvalue_type && pyvalue_size) { + PyObject* pydata = CallPyObjMethod(v, "data"); + if (!pydata || Utility::GetBuffer(pydata, '*', 1, vi->vi_data, false) == 0) + vi->vi_data = nullptr; + Py_XDECREF(pydata); + + vi->vi_converter = CPyCppyy::CreateConverter(CPyCppyy_PyUnicode_AsString(pyvalue_type)); + vi->vi_stride = PyLong_AsLong(pyvalue_size); + } else { + PyErr_Clear(); + vi->vi_data = nullptr; + vi->vi_converter = nullptr; + vi->vi_stride = 0; + } + + Py_XDECREF(pyvalue_size); + Py_XDECREF(pyvalue_type); + + vi->vi_len = vi->vi_pos = 0; + vi->vi_len = PySequence_Size(v); + + _PyObject_GC_TRACK(vi); + return (PyObject*)vi; +} + +PyObject* VectorGetItem(CPPInstance* self, PySliceObject* index) +{ +// Implement python's __getitem__ for std::vector<>s. + if (PySlice_Check(index)) { + if (!self->GetObject()) { + PyErr_SetString(PyExc_TypeError, "unsubscriptable object"); + return nullptr; + } + + PyObject* pyclass = PyObject_GetAttr((PyObject*)self, PyStrings::gClass); + PyObject* nseq = PyObject_CallObject(pyclass, nullptr); + Py_DECREF(pyclass); + + Py_ssize_t start, stop, step; + PySlice_GetIndices((CPyCppyy_PySliceCast)index, PyObject_Length((PyObject*)self), &start, &stop, &step); + for (Py_ssize_t i = start; i < stop; i += step) { + PyObject* pyidx = PyInt_FromSsize_t(i); + CallPyObjMethod(nseq, "push_back", CallPyObjMethod((PyObject*)self, "_vector__at", pyidx)); + Py_DECREF(pyidx); + } + + return nseq; + } + + return CallSelfIndex(self, (PyObject*)index, "_vector__at"); +} + + +static Cppyy::TCppType_t sVectorBoolTypeID = (Cppyy::TCppType_t)0; + +PyObject* VectorBoolGetItem(CPPInstance* self, PyObject* idx) +{ +// std::vector is a special-case in C++, and its return type depends on +// the compiler: treat it special here as well + if (!CPPInstance_Check(self) || self->ObjectIsA() != sVectorBoolTypeID) { + PyErr_Format(PyExc_TypeError, + "require object of type std::vector, but %s given", + Cppyy::GetScopedFinalName(self->ObjectIsA()).c_str()); + return nullptr; + } + + if (!self->GetObject()) { + PyErr_SetString(PyExc_TypeError, "unsubscriptable object"); + return nullptr; + } + + if (PySlice_Check(idx)) { + PyObject* pyclass = PyObject_GetAttr((PyObject*)self, PyStrings::gClass); + PyObject* nseq = PyObject_CallObject(pyclass, nullptr); + Py_DECREF(pyclass); + + Py_ssize_t start, stop, step; + PySlice_GetIndices((CPyCppyy_PySliceCast)idx, PyObject_Length((PyObject*)self), &start, &stop, &step); + for (Py_ssize_t i = start; i < stop; i += step) { + PyObject* pyidx = PyInt_FromSsize_t(i); + CallPyObjMethod(nseq, "push_back", CallPyObjMethod((PyObject*)self, "__getitem__", pyidx)); + Py_DECREF(pyidx); + } + + return nseq; + } + + PyObject* pyindex = PyStyleIndex((PyObject*)self, idx); + if (!pyindex) + return nullptr; + + int index = (int)PyLong_AsLong(pyindex); + Py_DECREF(pyindex); + +// get hold of the actual std::vector (no cast, as vector is never a base) + std::vector* vb = (std::vector*)self->GetObject(); + +// finally, return the value + if (bool((*vb)[index])) + Py_RETURN_TRUE; + Py_RETURN_FALSE; +} + +PyObject* VectorBoolSetItem(CPPInstance* self, PyObject* args) +{ +// std::vector is a special-case in C++, and its return type depends on +// the compiler: treat it special here as well + if (!CPPInstance_Check(self) || self->ObjectIsA() != sVectorBoolTypeID) { + PyErr_Format(PyExc_TypeError, + "require object of type std::vector, but %s given", + Cppyy::GetScopedFinalName(self->ObjectIsA()).c_str()); + return nullptr; + } + + if (!self->GetObject()) { + PyErr_SetString(PyExc_TypeError, "unsubscriptable object"); + return nullptr; + } + + int bval = 0; PyObject* idx = nullptr; + if (!PyArg_ParseTuple(args, const_cast("Oi:__setitem__"), &idx, &bval)) + return nullptr; + + PyObject* pyindex = PyStyleIndex((PyObject*)self, idx); + if (!pyindex) + return nullptr; + + int index = (int)PyLong_AsLong(pyindex); + Py_DECREF(pyindex); + +// get hold of the actual std::vector (no cast, as vector is never a base) + std::vector* vb = (std::vector*)self->GetObject(); + +// finally, set the value + (*vb)[index] = (bool)bval; + + Py_RETURN_NONE; +} + +//- map behavior as primitives ------------------------------------------------ +PyObject* MapContains(PyObject* self, PyObject* obj) +{ +// Implement python's __contains__ for std::map<>s. + PyObject* result = nullptr; + + PyObject* iter = CallPyObjMethod(self, "find", obj); + if (CPPInstance_Check(iter)) { + PyObject* end = CallPyObjMethod(self, "end"); + if (CPPInstance_Check(end)) { + if (!PyObject_RichCompareBool(iter, end, Py_EQ)) { + Py_INCREF(Py_True); + result = Py_True; + } + } + Py_XDECREF(end); + } + Py_XDECREF(iter); + + if (!result) { + PyErr_Clear(); // e.g. wrong argument type, which should always lead to False + Py_INCREF(Py_False); + result = Py_False; + } + + return result; +} + +//- STL container iterator support -------------------------------------------- +PyObject* StlSequenceIter(PyObject* self) +{ +// Implement python's __iter__ for std::iterator<>s. + PyObject* iter = CallPyObjMethod(self, "begin"); + if (iter) { + PyObject* end = CallPyObjMethod(self, "end"); + if (end) + PyObject_SetAttr(iter, PyStrings::gEnd, end); + Py_XDECREF(end); + + // add iterated collection as attribute so its refcount stays >= 1 while it's being iterated over + PyObject_SetAttr(iter, PyUnicode_FromString("_collection"), self); + } + return iter; +} + +//- safe indexing for STL-like vector w/o iterator dictionaries --------------- +/* +PyObject* CheckedGetItem(PyObject* self, PyObject* obj) +{ +// Implement a generic python __getitem__ for std::vector<>s that are missing +// their std::vector<>::iterator dictionary. This is then used for iteration +// by means of consecutive index. + bool inbounds = false; + Py_ssize_t size = PySequence_Size(self); + Py_ssize_t idx = PyInt_AsSsize_t(obj); + if (0 <= idx && 0 <= size && idx < size) + inbounds = true; + + if (inbounds) { + return CallPyObjMethod(self, "_getitem__unchecked", obj); + } else if (PyErr_Occurred()) { + // argument conversion problem: let method itself resolve anew and report + PyErr_Clear(); + return CallPyObjMethod(self, "_getitem__unchecked", obj); + } else { + PyErr_SetString(PyExc_IndexError, "index out of range"); + } + + return nullptr; +} +*/ + +//- pair as sequence to allow tuple unpacking -------------------------------- +PyObject* PairUnpack(PyObject* self, PyObject* pyindex) +{ +// For std::map<> iteration, unpack std::pair<>s into tuples for the loop. + long idx = PyLong_AsLong(pyindex); + if (idx == -1 && PyErr_Occurred()) + return nullptr; + + if (!CPPInstance_Check(self) || !((CPPInstance*)self)->GetObject()) { + PyErr_SetString(PyExc_TypeError, "unsubscriptable object"); + return nullptr; + } + + if ((int)idx == 0) + return PyObject_GetAttr(self, PyStrings::gFirst); + else if ((int)idx == 1) + return PyObject_GetAttr(self, PyStrings::gSecond); + +// still here? Trigger stop iteration + PyErr_SetString(PyExc_IndexError, "out of bounds"); + return nullptr; +} + +//- simplistic len() functions ----------------------------------------------- +PyObject* ReturnTwo(CPPInstance*, PyObject*) { + return PyInt_FromLong(2); +} + +//- string behavior as primitives -------------------------------------------- +#if PY_VERSION_HEX >= 0x03000000 +// TODO: this is wrong, b/c it doesn't order +static int PyObject_Compare(PyObject* one, PyObject* other) { + return !PyObject_RichCompareBool(one, other, Py_EQ); +} +#endif +static inline PyObject* CPyCppyy_PyString_FromCppString(std::string* s) { + return CPyCppyy_PyUnicode_FromStringAndSize(s->c_str(), s->size()); +} + +#define CPPYY_IMPL_STRING_PYTHONIZATION(type, name) \ +inline PyObject* name##GetData(PyObject* self) \ +{ \ + if (CPyCppyy::CPPInstance_Check(self)) { \ + type* obj = ((type*)((CPPInstance*)self)->GetObject()); \ + if (obj) { \ + return CPyCppyy_PyString_FromCppString(obj); \ + } else { \ + return CPPInstance_Type.tp_str(self); \ + } \ + } \ + PyErr_Format(PyExc_TypeError, "object mismatch (%s expected)", #type); \ + return nullptr; \ +} \ + \ +PyObject* name##StringRepr(PyObject* self) \ +{ \ + PyObject* data = name##GetData(self); \ + if (data) { \ + PyObject* repr = CPyCppyy_PyUnicode_FromFormat("\'%s\'", CPyCppyy_PyUnicode_AsString(data));\ + Py_DECREF(data); \ + return repr; \ + } \ + return nullptr; \ +} \ + \ +PyObject* name##StringIsEqual(PyObject* self, PyObject* obj) \ +{ \ + PyObject* data = name##GetData(self); \ + if (data) { \ + PyObject* result = PyObject_RichCompare(data, obj, Py_EQ); \ + Py_DECREF(data); \ + return result; \ + } \ + return nullptr; \ +} \ + \ +PyObject* name##StringIsNotEqual(PyObject* self, PyObject* obj) \ +{ \ + PyObject* data = name##GetData(self); \ + if (data) { \ + PyObject* result = PyObject_RichCompare(data, obj, Py_NE); \ + Py_DECREF(data); \ + return result; \ + } \ + return nullptr; \ +} + +// Only define StlStringCompare: +#define CPPYY_IMPL_STRING_PYTHONIZATION_CMP(type, name) \ +CPPYY_IMPL_STRING_PYTHONIZATION(type, name) \ +PyObject* name##StringCompare(PyObject* self, PyObject* obj) \ +{ \ + PyObject* data = name##GetData(self); \ + int result = 0; \ + if (data) { \ + result = PyObject_Compare(data, obj); \ + Py_DECREF(data); \ + } \ + if (PyErr_Occurred()) \ + return nullptr; \ + return PyInt_FromLong(result); \ +} + +CPPYY_IMPL_STRING_PYTHONIZATION_CMP(std::string, Stl) + + +//- STL iterator behavior ---------------------------------------------------- +PyObject* StlIterNext(PyObject* self) +{ +// Python iterator protocol __next__ for STL forward iterators. + PyObject* next = nullptr; + PyObject* last = PyObject_GetAttr(self, PyStrings::gEnd); + + if (last) { + // handle special case of empty container (i.e. self is end) + if (PyObject_RichCompareBool(last, self, Py_EQ)) { + PyErr_SetString(PyExc_StopIteration, ""); + } else { + PyObject* dummy = PyInt_FromLong(1l); + PyObject* iter = CallPyObjMethod(self, "__postinc__", dummy); + Py_DECREF(dummy); + if (iter != 0) { + if (PyObject_RichCompareBool(last, iter, Py_EQ)) + PyErr_SetString(PyExc_StopIteration, ""); + else + next = CallPyObjMethod(iter, "__deref__"); + } else { + PyErr_SetString(PyExc_StopIteration, ""); + } + Py_XDECREF(iter); + } + } else { + PyErr_SetString(PyExc_StopIteration, ""); + } + + Py_XDECREF(last); + return next; +} + +//---------------------------------------------------------------------------- +PyObject* StlIterIsEqual(PyObject* self, PyObject* other) +{ +// Called if operator== not available (e.g. if a global overload as under gcc). +// An exception is raised as the user should fix the dictionary. + return PyErr_Format(PyExc_LookupError, + "No operator==(const %s&, const %s&) available in the dictionary!", + Utility::ClassName(self).c_str(), Utility::ClassName(other).c_str()); +} + +//---------------------------------------------------------------------------- +PyObject* StlIterIsNotEqual(PyObject* self, PyObject* other) +{ +// Called if operator!= not available (e.g. if a global overload as under gcc). +// An exception is raised as the user should fix the dictionary. + return PyErr_Format(PyExc_LookupError, + "No operator!=(const %s&, const %s&) available in the dictionary!", + Utility::ClassName(self).c_str(), Utility::ClassName(other).c_str()); +} + +} // unnamed namespace + + +//- public functions --------------------------------------------------------- +bool CPyCppyy::Pythonize(PyObject* pyclass, const std::string& name) +{ +// Add pre-defined pythonizations (for STL and ROOT) to classes based on their +// signature and/or class name. + if (!pyclass) + return false; + +//- method name based pythonization ------------------------------------------ + +// for smart pointer style classes (note fall-through) + if (HasAttrDirect(pyclass, PyStrings::gDeref)) { + Utility::AddToClass(pyclass, "__getattr__", (PyCFunction)DeRefGetAttr, METH_O); + } else if (HasAttrDirect(pyclass, PyStrings::gFollow)) { + Utility::AddToClass(pyclass, "__getattr__", (PyCFunction)FollowGetAttr, METH_O); + } + +// for STL containers, and user classes modeled after them + if (HasAttrDirect(pyclass, PyStrings::gSize)) + Utility::AddToClass(pyclass, "__len__", "size"); + + if (!IsTemplatedSTLClass(name, "vector")) { // vector is dealt with below + if (HasAttrDirect(pyclass, PyStrings::gBegin) && HasAttrDirect(pyclass, PyStrings::gEnd)) { + // TODO: check whether iterator type is available + + // if yes: install iterator protocol + ((PyTypeObject*)pyclass)->tp_iter = (getiterfunc)StlSequenceIter; + Utility::AddToClass(pyclass, "__iter__", (PyCFunction) StlSequenceIter, METH_NOARGS); + + // if not and if (HasAttrDirect(pyclass, PyStrings::gGetItem) && HasAttrDirect(pyclass, PyStrings::gLen)) { + // install increment until StopIteration "protocol" + //Utility::AddToClass(pyclass, "_getitem__unchecked", "__getitem__"); + //Utility::AddToClass(pyclass, "__getitem__", (PyCFunction) CheckedGetItem, METH_O); + } + } + +// search for global comparator overloads (may fail; not sure whether it isn't better to +// do this lazily just as is done for math operators, but this interplays nicely with the +// generic versions) + Utility::AddBinaryOperator(pyclass, "==", "__eq__"); + Utility::AddBinaryOperator(pyclass, "!=", "__ne__"); + +// map operator==() through GenObjectIsEqual to allow comparison to None (true is to +// require that the located method is a CPPOverload; this prevents circular calls as +// GenObjectIsEqual is no CPPOverload) + if (HasAttrDirect(pyclass, PyStrings::gEq, true)) { + Utility::AddToClass(pyclass, "__cpp_eq__", "__eq__"); + Utility::AddToClass(pyclass, "__eq__", (PyCFunction)GenObjectIsEqual, METH_O); + } + +// map operator!=() through GenObjectIsNotEqual to allow comparison to None (see note +// on true above for __eq__) + if (HasAttrDirect(pyclass, PyStrings::gNe, true)) { + Utility::AddToClass(pyclass, "__cpp_ne__", "__ne__"); + Utility::AddToClass(pyclass, "__ne__", (PyCFunction)GenObjectIsNotEqual, METH_O); + } + + +//- class name based pythonization ------------------------------------------- + + if (IsTemplatedSTLClass(name, "vector")) { + + // std::vector is a special case in C++ + if (!sVectorBoolTypeID) sVectorBoolTypeID = (Cppyy::TCppType_t)Cppyy::GetScope("std::vector"); + if (CPPScope_Check(pyclass) && ((CPPClass*)pyclass)->fCppType == sVectorBoolTypeID) { + Utility::AddToClass(pyclass, "__getitem__", (PyCFunction)VectorBoolGetItem, METH_O); + Utility::AddToClass(pyclass, "__setitem__", (PyCFunction)VectorBoolSetItem); + } else { + + if (HasAttrDirect(pyclass, PyStrings::gLen) && HasAttrDirect(pyclass, PyStrings::gAt)) { + Utility::AddToClass(pyclass, "_vector__at", "at"); + // remove iterator that was set earlier (checked __getitem__ will do the trick) + if (HasAttrDirect(pyclass, PyStrings::gIter)) + PyObject_DelAttr(pyclass, PyStrings::gIter); + } else if (HasAttrDirect(pyclass, PyStrings::gGetItem)) { + Utility::AddToClass(pyclass, "_vector__at", "__getitem__"); // unchecked! + } + + // vector-optimized iterator protocol + ((PyTypeObject*)pyclass)->tp_iter = (getiterfunc)vector_iter; + + // helpers for iteration + /*TODO: remove this use of gInterpreter + TypedefInfo_t* ti = gInterpreter->TypedefInfo_Factory((name+"::value_type").c_str()); + if (gInterpreter->TypedefInfo_IsValid(ti)) { + PyObject* pyvalue_size = PyLong_FromLong(gInterpreter->TypedefInfo_Size(ti)); + PyObject_SetAttrString(pyclass, "value_size", pyvalue_size); + Py_DECREF(pyvalue_size); + + PyObject* pyvalue_type = CPyCppyy_PyUnicode_FromString(gInterpreter->TypedefInfo_TrueName(ti)); + PyObject_SetAttrString(pyclass, "value_type", pyvalue_type); + Py_DECREF(pyvalue_type); + } + gInterpreter->TypedefInfo_Delete(ti); + */ + + // provide a slice-able __getitem__, if possible + if (HasAttrDirect(pyclass, PyStrings::gVectorAt)) + Utility::AddToClass(pyclass, "__getitem__", (PyCFunction)VectorGetItem, METH_O); + } + } + + else if (IsTemplatedSTLClass(name, "map")) { + Utility::AddToClass(pyclass, "__contains__", (PyCFunction)MapContains, METH_O); + } + + else if (IsTemplatedSTLClass(name, "pair")) { + Utility::AddToClass(pyclass, "__getitem__", (PyCFunction)PairUnpack, METH_O); + Utility::AddToClass(pyclass, "__len__", (PyCFunction)ReturnTwo, METH_NOARGS); + } + + else if (name.find("iterator") != std::string::npos) { + ((PyTypeObject*)pyclass)->tp_iternext = (iternextfunc)StlIterNext; + Utility::AddToClass(pyclass, CPPYY__next__, (PyCFunction)StlIterNext, METH_NOARGS); + + // special case, if operator== is a global overload and included in the dictionary + if (!HasAttrDirect(pyclass, PyStrings::gCppEq, true)) + Utility::AddToClass(pyclass, "__eq__", (PyCFunction)StlIterIsEqual, METH_O); + if (!HasAttrDirect(pyclass, PyStrings::gCppNe, true)) + Utility::AddToClass(pyclass, "__ne__", (PyCFunction)StlIterIsNotEqual, METH_O); + } + + else if (name == "string" || name == "std::string") { // TODO: ask backend as well + Utility::AddToClass(pyclass, "__repr__", (PyCFunction)StlStringRepr, METH_NOARGS); + Utility::AddToClass(pyclass, "__str__", "c_str"); + Utility::AddToClass(pyclass, "__cmp__", (PyCFunction)StlStringCompare, METH_O); + Utility::AddToClass(pyclass, "__eq__", (PyCFunction)StlStringIsEqual, METH_O); + Utility::AddToClass(pyclass, "__ne__", (PyCFunction)StlStringIsNotEqual, METH_O); + } + + PyObject* args = PyTuple_New(2); + Py_INCREF(pyclass); + PyTuple_SET_ITEM(args, 0, pyclass); + + std::string outer_scope = ExtractNamespace(name); + + bool pstatus = true; + auto p = outer_scope.empty() ? gPythonizations.end() : gPythonizations.find(outer_scope); + if (p == gPythonizations.end()) { + p = gPythonizations.find(""); + PyTuple_SET_ITEM(args, 1, CPyCppyy_PyUnicode_FromString(name.c_str())); + } else { + PyTuple_SET_ITEM(args, 1, CPyCppyy_PyUnicode_FromString( + name.substr(outer_scope.size()+2, std::string::npos).c_str())); + } + + if (p != gPythonizations.end()) { + for (auto pythonizor : p->second) { + PyObject* result = PyObject_CallObject(pythonizor, args); + if (!result) { + // TODO: detail error handling for the pythonizors + pstatus = false; + break; + } + Py_DECREF(result); + } + } + + Py_DECREF(args); + +// phew! all done ... + return pstatus; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.h new file mode 100644 index 0000000000000..cbdec834a24cd --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Pythonize.h @@ -0,0 +1,15 @@ +#ifndef CPYCPPYY_PYTHONIZE_H +#define CPYCPPYY_PYTHONIZE_H + +// Standard +#include + + +namespace CPyCppyy { + +// make the named C++ class more python-like +bool Pythonize(PyObject* pyclass, const std::string& name); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_PYTHONIZE_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyArg.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyArg.cxx new file mode 100644 index 0000000000000..2061ac5b47e46 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyArg.cxx @@ -0,0 +1,129 @@ +// Bindings +#include "CPyCppyy.h" +#include "TPyArg.h" + + +//______________________________________________________________________________ +// Generic wrapper for arguments +// ============================= +// +// Transport class for bringing C++ values and objects from Cling to Python. It +// provides, from the selected constructor, the proper conversion to a PyObject. +// In principle, there should be no need to use this class directly: it relies +// on implicit conversions. + + +//- constructor dispatcher --------------------------------------------------- +void TPyArg::CallConstructor( + PyObject*& pyself, PyObject* pyclass, const std::vector& args) +{ + int nArgs = args.size(); + PyObject* pyargs = PyTuple_New(nArgs); + for (int i = 0; i < nArgs; ++i) + PyTuple_SET_ITEM(pyargs, i, (PyObject*)args[i]); + pyself = PyObject_Call(pyclass, pyargs, nullptr); + Py_DECREF(pyargs); +} + +//---------------------------------------------------------------------------- +void CallConstructor(PyObject*& pyself, PyObject* pyclass) +{ + PyObject* pyargs = PyTuple_New(0); + pyself = PyObject_Call(pyclass, pyargs, nullptr); + Py_DECREF(pyargs); +} + +//- generic dispatcher ------------------------------------------------------- +PyObject* TPyArg::CallMethod(PyObject* pymeth, const std::vector& args) +{ + int nArgs = args.size(); + PyObject* pyargs = PyTuple_New(nArgs); + for (int i = 0; i < nArgs; ++i) + PyTuple_SET_ITEM(pyargs, i, (PyObject*)args[i]); + PyObject* result = PyObject_Call(pymeth, pyargs, nullptr); + Py_DECREF(pyargs); + return result; +} + +//- destructor dispatcher ---------------------------------------------------- +void TPyArg::CallDestructor(PyObject*& pyself, PyObject*, const std::vector&) +{ + Py_XDECREF(pyself); // calls actual dtor if ref-count down to 0 +} + +//---------------------------------------------------------------------------- +void TPyArg::CallDestructor(PyObject*& pyself) +{ + Py_XDECREF(pyself); +} + +//- constructors/destructor -------------------------------------------------- +TPyArg::TPyArg(PyObject* pyobject) +{ +// Construct a TPyArg from a python object. + Py_XINCREF(pyobject); + fPyObject = pyobject; +} + +//---------------------------------------------------------------------------- +TPyArg::TPyArg(int value) +{ +// Construct a TPyArg from an integer value. + fPyObject = PyInt_FromLong(value); +} + +//---------------------------------------------------------------------------- +TPyArg::TPyArg(long value) +{ +// Construct a TPyArg from an integer value. + fPyObject = PyLong_FromLong(value); +} + +//---------------------------------------------------------------------------- +TPyArg::TPyArg(double value) +{ +// Construct a TPyArg from a double value. + fPyObject = PyFloat_FromDouble(value); +} + +//---------------------------------------------------------------------------- +TPyArg::TPyArg(const char* value) +{ +// Construct a TPyArg from a C-string. + fPyObject = CPyCppyy_PyUnicode_FromString(value); +} + +//---------------------------------------------------------------------------- +TPyArg::TPyArg(const TPyArg& s) +{ +// Copy constructor. + Py_XINCREF(s.fPyObject); + fPyObject = s.fPyObject; +} + +//---------------------------------------------------------------------------- +TPyArg& TPyArg::operator=(const TPyArg& s) +{ +// Assignment operator. + if (this != &s) { + Py_XINCREF(s.fPyObject); + fPyObject = s.fPyObject; + } + return *this; +} + +//---------------------------------------------------------------------------- +TPyArg::~TPyArg() +{ +// Done with held PyObject. + Py_XDECREF(fPyObject); + fPyObject = nullptr; +} + +//- public members ----------------------------------------------------------- +TPyArg::operator PyObject*() const +{ +// Extract the python object. + Py_XINCREF(fPyObject); + return fPyObject; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.cxx new file mode 100644 index 0000000000000..e07f86af869a7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.cxx @@ -0,0 +1,300 @@ +// Bindings +#include "CPyCppyy.h" +#include "PyStrings.h" +#include "TPyClassGenerator.h" +#include "TPyReturn.h" +#include "Utility.h" + +// TODO: not sure if any of this still makes sense ... +#if 0 + +// ROOT +#include "TClass.h" +#include "TInterpreter.h" +#include "TROOT.h" + +// Standard +#include +#include +#include + + +//= helper ================================================================== +namespace { + + class PyGILRAII { + PyGILState_STATE m_GILState; + public: + PyGILRAII() : m_GILState(PyGILState_Ensure()) {} + ~PyGILRAII() { PyGILState_Release(m_GILState); } + }; + +} // unnamed namespace + + +//- public members ----------------------------------------------------------- +TClass* TPyClassGenerator::GetClass( const char* name, bool load ) +{ +// Just forward. + return GetClass( name, load, false ); +} + +//- public members ----------------------------------------------------------- +TClass* TPyClassGenerator::GetClass( const char* name, bool load, bool silent ) +{ +// Class generator to make python classes available to Cling + +// called if all other class generators failed, attempt to build from python class + if ( PyROOT::gDictLookupActive == true ) + return 0; // call originated from python + + if ( ! load || ! name ) + return 0; + + PyGILRAII thePyGILRAII; + +// first, check whether the name is of a module + PyObject* modules = PySys_GetObject( const_cast("modules") ); + PyObject* pyname = PyROOT_PyUnicode_FromString( name ); + PyObject* keys = PyDict_Keys( modules ); + bool isModule = PySequence_Contains( keys, pyname ); + Py_DECREF( keys ); + Py_DECREF( pyname ); + + if ( isModule ) { + // the normal TClass::GetClass mechanism doesn't allow direct returns, so + // do our own check + TClass* cl = (TClass*)gROOT->GetListOfClasses()->FindObject( name ); + if ( cl ) return cl; + + std::ostringstream nsCode; + nsCode << "namespace " << name << " {\n"; + + // add all free functions + PyObject* mod = PyDict_GetItemString( modules, const_cast(name) ); + PyObject* dct = PyModule_GetDict( mod ); + keys = PyDict_Keys( dct ); + + for ( int i = 0; i < PyList_GET_SIZE( keys ); ++i ) { + PyObject* key = PyList_GET_ITEM( keys, i ); + Py_INCREF( key ); + + PyObject* attr = PyDict_GetItem( dct, key ); + Py_INCREF( attr ); + + // TODO: refactor the code below with the class method code + if ( PyCallable_Check( attr ) && \ + ! (PyClass_Check( attr ) || PyObject_HasAttr( attr, PyROOT::PyStrings::gBases )) ) { + std::string func_name = PyROOT_PyUnicode_AsString( key ); + + // figure out number of variables required + PyObject* func_code = PyObject_GetAttrString( attr, (char*)"func_code" ); + PyObject* var_names = + func_code ? PyObject_GetAttrString( func_code, (char*)"co_varnames" ) : NULL; + int nVars = var_names ? PyTuple_GET_SIZE( var_names ) : 0 /* TODO: probably large number, all default? */; + if ( nVars < 0 ) nVars = 0; + Py_XDECREF( var_names ); + Py_XDECREF( func_code ); + + nsCode << " TPyReturn " << func_name << "("; + for ( int ivar = 0; ivar < nVars; ++ivar ) { + nsCode << "const TPyArg& a" << ivar; + if ( ivar != nVars-1 ) nsCode << ", "; + } + nsCode << ") {\n"; + nsCode << " std::vector v; v.reserve(" << nVars << ");\n"; + + // add the variables + for ( int ivar = 0; ivar < nVars; ++ ivar ) + nsCode << " v.push_back(a" << ivar << ");\n"; + + // call dispatch (method or class pointer hard-wired) + nsCode << " return TPyReturn(TPyArg::CallMethod((PyObject*)" << (void*)attr << ", v)); }\n"; + } + + Py_DECREF( attr ); + Py_DECREF( key ); + } + + Py_DECREF( keys ); + + nsCode << " }"; + + if ( gInterpreter->LoadText( nsCode.str().c_str() ) ) { + TClass* klass = new TClass( name, silent ); + TClass::AddClass( klass ); + return klass; + } + + return nullptr; + } + +// determine module and class name part + std::string clName = name; + std::string::size_type pos = clName.rfind( '.' ); + + if ( pos == std::string::npos ) + return 0; // this isn't a python style class + + std::string mdName = clName.substr( 0, pos ); + clName = clName.substr( pos+1, std::string::npos ); + +// create class in namespace, if it exists (no load, silent) + bool useNS = gROOT->GetListOfClasses()->FindObject( mdName.c_str() ) != 0; + if ( ! useNS ) { + // the class itself may exist if we're using the global scope + TClass* cl = (TClass*)gROOT->GetListOfClasses()->FindObject( clName.c_str() ); + if ( cl ) return cl; + } + +// locate and get class + PyObject* mod = PyImport_AddModule( const_cast< char* >( mdName.c_str() ) ); + if ( ! mod ) { + PyErr_Clear(); + return 0; // module apparently disappeared + } + + Py_INCREF( mod ); + PyObject* pyclass = + PyDict_GetItemString( PyModule_GetDict( mod ), const_cast< char* >( clName.c_str() ) ); + Py_XINCREF( pyclass ); + Py_DECREF( mod ); + + if ( ! pyclass ) { + PyErr_Clear(); // the class is no longer available?! + return 0; + } + +// get a listing of all python-side members + PyObject* attrs = PyObject_Dir( pyclass ); + if ( ! attrs ) { + PyErr_Clear(); + Py_DECREF( pyclass ); + return 0; + } + +// pre-amble Cling proxy class + std::ostringstream proxyCode; + if ( useNS ) proxyCode << "namespace " << mdName << " { "; + proxyCode << "class " << clName << " {\nprivate:\n PyObject* fPyObject;\npublic:\n"; + +// loop over and add member functions + bool hasConstructor = false, hasDestructor = false; + for ( int i = 0; i < PyList_GET_SIZE( attrs ); ++i ) { + PyObject* label = PyList_GET_ITEM( attrs, i ); + Py_INCREF( label ); + PyObject* attr = PyObject_GetAttr( pyclass, label ); + + // collect only member functions (i.e. callable elements in __dict__) + if ( PyCallable_Check( attr ) ) { + std::string mtName = PyROOT_PyUnicode_AsString( label ); + + if ( mtName == "__del__" ) { + hasDestructor = true; + proxyCode << " ~" << clName << "() { TPyArg::CallDestructor(fPyObject); }\n"; + continue; + } + + bool isConstructor = mtName == "__init__"; + if ( !isConstructor && mtName.find("__", 0, 2) == 0 ) + continue; // skip all other python special funcs + + // figure out number of variables required +#if PY_VERSION_HEX < 0x03000000 + PyObject* im_func = PyObject_GetAttrString( attr, (char*)"im_func" ); + PyObject* func_code = + im_func ? PyObject_GetAttrString( im_func, (char*)"func_code" ) : NULL; +#else + PyObject* func_code = PyObject_GetAttrString( attr, "__code__" ); +#endif + PyObject* var_names = + func_code ? PyObject_GetAttrString( func_code, (char*)"co_varnames" ) : NULL; + if (PyErr_Occurred()) PyErr_Clear(); // happens for slots; default to 0 arguments + + int nVars = var_names ? PyTuple_GET_SIZE( var_names ) - 1 /* self */ : 0 /* TODO: probably large number, all default? */; + if ( nVars < 0 ) nVars = 0; + Py_XDECREF( var_names ); + Py_XDECREF( func_code ); +#if PY_VERSION_HEX < 0x03000000 + Py_XDECREF( im_func ); +#endif + + // method declaration as appropriate + if ( isConstructor ) { + hasConstructor = true; + proxyCode << " " << clName << "("; + } else // normal method + proxyCode << " TPyReturn " << mtName << "("; + for ( int ivar = 0; ivar < nVars; ++ivar ) { + proxyCode << "const TPyArg& a" << ivar; + if ( ivar != nVars-1 ) proxyCode << ", "; + } + proxyCode << ") {\n"; + proxyCode << " std::vector v; v.reserve(" << nVars+(isConstructor ? 0 : 1) << ");\n"; + + // add the 'self' argument as appropriate + if ( ! isConstructor ) + proxyCode << " v.push_back(fPyObject);\n"; + + // then add the remaining variables + for ( int ivar = 0; ivar < nVars; ++ ivar ) + proxyCode << " v.push_back(a" << ivar << ");\n"; + + // call dispatch (method or class pointer hard-wired) + if ( ! isConstructor ) + proxyCode << " return TPyReturn(TPyArg::CallMethod((PyObject*)" << (void*)attr << ", v))"; + else + proxyCode << " TPyArg::CallConstructor(fPyObject, (PyObject*)" << (void*)pyclass << ", v)"; + proxyCode << ";\n }\n"; + } + + // no decref of attr for now (b/c of hard-wired ptr); need cleanup somehow + Py_DECREF( label ); + } + +// special case if no constructor or destructor + if ( ! hasConstructor ) + proxyCode << " " << clName << "() {\n TPyArg::CallConstructor(fPyObject, (PyObject*)" << (void*)pyclass << "); }\n"; + + if ( ! hasDestructor ) + proxyCode << " ~" << clName << "() { TPyArg::CallDestructor(fPyObject); }\n"; + +// for now, don't allow copying (ref-counting wouldn't work as expected anyway) + proxyCode << " " << clName << "(const " << clName << "&) = delete;\n"; + proxyCode << " " << clName << "& operator=(const " << clName << "&) = delete;\n"; + +// closing and building of Cling proxy class + proxyCode << "};"; + if ( useNS ) proxyCode << " }"; + + Py_DECREF( attrs ); +// done with pyclass, decref here, assuming module is kept + Py_DECREF( pyclass ); + +// body compilation + if ( ! gInterpreter->LoadText( proxyCode.str().c_str() ) ) + return nullptr; + +// done, let ROOT manage the new class + TClass* klass = new TClass( useNS ? (mdName+"::"+clName).c_str() : clName.c_str(), silent ); + TClass::AddClass( klass ); + + return klass; +} + +//////////////////////////////////////////////////////////////////////////////// +/// Just forward; based on type name only. + +TClass* TPyClassGenerator::GetClass( const std::type_info& typeinfo, bool load, bool silent ) +{ + return GetClass( typeinfo.name(), load, silent ); +} + +//////////////////////////////////////////////////////////////////////////////// +/// Just forward; based on type name only + +TClass* TPyClassGenerator::GetClass( const std::type_info& typeinfo, bool load ) +{ + return GetClass( typeinfo.name(), load ); +} +#endif diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.h new file mode 100644 index 0000000000000..ed55fa27fd6fa --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyClassGenerator.h @@ -0,0 +1,21 @@ +#ifndef CPYCPPYY_TPYCLASSGENERATOR +#define CPYCPPYY_TPYCLASSGENERATOR + +// TODO: not sure if any of this still makes sense ... +#if 0 + +// ROOT +#include "TClassGenerator.h" + + +class TPyClassGenerator : public TClassGenerator { +public: + virtual TClass* GetClass(const char* name, bool load); + virtual TClass* GetClass(const std::type_info& typeinfo, bool load); + virtual TClass* GetClass(const char* name, bool load, bool silent); + virtual TClass* GetClass(const std::type_info& typeinfo, bool load, bool silent); +}; + +#endif + +#endif // !CPYCPPYY_TPYCLASSGENERATOR diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyException.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyException.cxx new file mode 100644 index 0000000000000..1641cd10e14a2 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyException.cxx @@ -0,0 +1,36 @@ +// Bindings +#include "CPyCppyy.h" +#include "TPyException.h" + + +//______________________________________________________________________________ +// C++ exception for throwing python exceptions +// ============================================ +// Purpose: A C++ exception class for throwing python exceptions +// through C++ code. +// Created: Apr, 2004, Scott Snyder, from the version in D0's python_util. +// +// Note: Don't be tempted to declare the virtual functions defined here +// as inline. +// If you do, you may not be able to properly throw these +// exceptions across shared libraries. + + +//- constructors/destructor -------------------------------------------------- +CPyCppyy::TPyException::TPyException() +{ +// default constructor +} + +CPyCppyy::TPyException::~TPyException() noexcept +{ +// destructor +} + + +//- public members ----------------------------------------------------------- +const char* CPyCppyy::TPyException::what() const noexcept +{ +// Return reason for throwing this exception: a python exception was raised. + return "python exception"; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyReturn.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyReturn.cxx new file mode 100644 index 0000000000000..402cd6e3bf102 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPyReturn.cxx @@ -0,0 +1,174 @@ +// Bindings +#include "CPyCppyy.h" +#include "TPyReturn.h" +#include "CPPInstance.h" + +// Standard +#include + + +//______________________________________________________________________________ +// Python expression eval result +// ============================= +// +// Transport class for bringing objects from python (dynamically typed) to Cling +// (statically typed). It is best to immediately cast a TPyReturn to the real +// type, either implicitly (for builtin types) or explicitly (through a void* +// cast for pointers to ROOT objects). +// +// Examples: +// +// root [0] TBrowser* b = (void*)TPython::Eval("ROOT.TBrowser()"); +// root [1] int i = TPython::Eval("1+1"); +// root [2] i +// (int)2 +// root [3] double d = TPython::Eval("1+3.1415"); +// root [4] d +// (double)4.14150000000000063e+00 + + +//- constructors/destructor -------------------------------------------------- +TPyReturn::TPyReturn() +{ +// Construct a TPyReturn object from Py_None. + Py_INCREF(Py_None); + fPyObject = Py_None; +} + +//////////////////////////////////////////////////////////////////////////////// +//---------------------------------------------------------------------------- +TPyReturn::TPyReturn(PyObject* pyobject) +{ +// Construct a TPyReturn from a python object. The python object may represent +// a ROOT object. Steals reference to given python object. + if (!pyobject) { + Py_INCREF(Py_None); + fPyObject = Py_None; + } else + fPyObject = pyobject; // steals reference +} + +//---------------------------------------------------------------------------- +TPyReturn::TPyReturn(const TPyReturn& other) +{ +// Copy constructor. Applies python object reference counting. + Py_INCREF(other.fPyObject); + fPyObject = other.fPyObject; +} + +//---------------------------------------------------------------------------- +TPyReturn& TPyReturn::operator=(const TPyReturn& other) +{ +// Assignment operator. Applies python object reference counting. + if (this != &other) { + Py_INCREF(other.fPyObject); + Py_DECREF(fPyObject); + fPyObject = other.fPyObject; + } + + return *this; +} + +//---------------------------------------------------------------------------- +TPyReturn::~TPyReturn() +{ +// Destructor. Reference counting for the held python object is in effect. + Py_DECREF(fPyObject); +} + + +//- public members ----------------------------------------------------------- +TPyReturn::operator char*() const +{ +// Cast python return value to C-style string (may fail). + return (char*)((const char*)*this); +} + +//---------------------------------------------------------------------------- +TPyReturn::operator const char*() const +{ +// Cast python return value to C-style string (may fail). + if (fPyObject == Py_None) // for void returns + return nullptr; + + const char* s = CPyCppyy_PyUnicode_AsString(fPyObject); + if (PyErr_Occurred()) { + PyErr_Print(); + return nullptr; + } + + return s; +} + +//---------------------------------------------------------------------------- +TPyReturn::operator char() const +{ +// Cast python return value to C++ char (may fail). + std::string s = operator const char*(); + if (s.size()) + return s[0]; + + return '\0'; +} + +//---------------------------------------------------------------------------- +TPyReturn::operator long() const +{ +// Cast python return value to C++ long (may fail). + long l = PyLong_AsLong(fPyObject); + + if (PyErr_Occurred()) + PyErr_Print(); + + return l; +} + +//---------------------------------------------------------------------------- +TPyReturn::operator unsigned long() const +{ +// Cast python return value to C++ unsigned long (may fail). + unsigned long ul = PyLong_AsUnsignedLong(fPyObject); + + if (PyErr_Occurred()) + PyErr_Print(); + + return ul; +} + +//---------------------------------------------------------------------------- +TPyReturn::operator double() const +{ +// Cast python return value to C++ double (may fail). + double d = PyFloat_AsDouble(fPyObject); + + if (PyErr_Occurred()) + PyErr_Print(); + + return d; +} + +//---------------------------------------------------------------------------- +TPyReturn::operator void*() const +{ +// Cast python return value to ROOT object with dictionary (may fail; note that +// you have to use the void* converter, as CINT will not call any other). + if (fPyObject == Py_None) + return nullptr; + + if (CPyCppyy::CPPInstance_Check(fPyObject)) { + ((CPyCppyy::CPPInstance*)fPyObject)->CppOwns(); + return ((CPyCppyy::CPPInstance*)fPyObject)->GetObject(); + } else + return fPyObject; // borrows reference +} + +//---------------------------------------------------------------------------- +TPyReturn::operator PyObject*() const +{ +// Direct return of the held PyObject; note the new reference. + if (fPyObject == Py_None) + return nullptr; + + Py_INCREF(fPyObject); + return fPyObject; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPython.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPython.cxx new file mode 100644 index 0000000000000..a60a34b1c8734 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TPython.cxx @@ -0,0 +1,499 @@ +// Bindings +#include "CPyCppyy.h" +#include "TPython.h" +#include "CPPInstance.h" +#include "CPPOverload.h" +#include "ProxyWrappers.h" +#include "PyStrings.h" + +// Standard +#include +#include +#include + +//______________________________________________________________________________ +// Python interpreter access +// ========================= +// +// The TPython class allows for access to python objects from Cling. The current +// functionality is only basic: cppyy objects and builtin types can freely cross +// the boundary between the two interpreters, python objects can be instantiated +// and their methods can be called. All other cross-coding is based on strings +// that are run on the python interpreter. +// +// Examples: +// +// $ cat MyPyClass.py +// print 'creating class MyPyClass ... ' +// +// class MyPyClass: +// def __init__(self): +// print 'in MyPyClass.__init__' +// +// def gime(self, what): +// return what +// +// $ root -l +// // Execute a string of python code. +// root [0] TPython::Exec("print \'Hello World!\'"); +// Hello World! +// +// // Create a TBrowser on the python side, and transfer it back and forth. +// // Note the required explicit (void*) cast! +// root [1] TBrowser* b = (void*)TPython::Eval("ROOT.TBrowser()"); +// root [2] TPython::Bind(b, "b"); +// root [3] b == (void*) TPython::Eval("b") +// (int)1 +// +// // Builtin variables can cross-over by using implicit casts. +// root [4] int i = TPython::Eval("1 + 1"); +// root [5] i +// (int)2 +// +// // Load a python module with a class definition, and use it. Casts are +// // necessary as the type information can not be otherwise derived. +// root [6] TPython::LoadMacro("MyPyClass.py"); +// creating class MyPyClass ... +// root [7] MyPyClass m; +// in MyPyClass.__init__ +// root [8] std::string s = (char*)m.gime("aap"); +// root [9] s +// (class TString)"aap" +// +// It is possible to switch between interpreters by calling "TPython::Prompt()" +// on the Cling side, while returning with ^D (EOF). State is preserved between +// successive switches. +// +// The API part provides (direct) C++ access to the bindings functionality of +// CPyCppyy. It allows verifying that you deal with a CPyCppyy pyobject in the +// first place (CPPInstance_Check for CPPInstance and any derived types, as well +// as CPPInstance_CheckExact for CPPInstance's only); and it allows conversions +// of void* to an CPPInstance and vice versa. + + +//- data --------------------------------------------------------------------- +static PyObject* gMainDict = nullptr; + +namespace CPyCppyy { + extern PyObject* gThisModule; +} + + +//- static public members ---------------------------------------------------- +bool TPython::Initialize() +{ +// Private initialization method: setup the python interpreter and load the +// cppyy module. + + static bool isInitialized = false; + if (isInitialized) + return true; + + if (!Py_IsInitialized()) { + // this happens if Cling comes in first +#if PY_VERSION_HEX < 0x03020000 + PyEval_InitThreads(); +#endif + Py_Initialize(); +#if PY_VERSION_HEX >= 0x03020000 + PyEval_InitThreads(); +#endif + + // try again to see if the interpreter is initialized + if (!Py_IsInitialized()) { + // give up ... + std::cerr << "Error: python has not been intialized; returning." << std::endl; + return false; + } + + // set the command line arguments on python's sys.argv +#if PY_VERSION_HEX < 0x03000000 + char* argv[] = {const_cast("cppyy")}; +#else + wchar_t* argv[] = {const_cast(L"cppyy")}; +#endif + PySys_SetArgv(sizeof(argv)/sizeof(argv[0]), argv); + + // force loading of the cppyy module + PyRun_SimpleString(const_cast("import cppyy")); + } + + if (!gMainDict) { + // retrieve the main dictionary + gMainDict = PyModule_GetDict( + PyImport_AddModule(const_cast("__main__"))); + Py_INCREF(gMainDict); + } + +// declare success ... + isInitialized = true; + return true; +} + +//----------------------------------------------------------------------------- +bool TPython::Import(const char* mod_name) +{ +// Import the named python module and create Cling equivalents for its classes +// and methods. + if (!Initialize()) + return false; + + PyObject* mod = PyImport_ImportModule(mod_name); + if (!mod) { + PyErr_Print(); + return false; + } + +// allow finding to prevent creation of a python proxy for the C++ proxy + Py_INCREF(mod); + PyModule_AddObject(CPyCppyy::gThisModule, mod_name, mod); + +// force creation of the module as a namespace +// TODO: the following is broken (and should live in Cppyy.cxx) +// TClass::GetClass(mod_name, true); + + PyObject* dct = PyModule_GetDict(mod); + +// create Cling classes for all new python classes + PyObject* values = PyDict_Values(dct); + for (int i = 0; i < PyList_GET_SIZE(values); ++i) { + PyObject* value = PyList_GET_ITEM(values, i); + Py_INCREF(value); + + // collect classes + if (PyClass_Check(value) || PyObject_HasAttr(value, CPyCppyy::PyStrings::gBases)) { + // get full class name (including module) + PyObject* pyClName = PyObject_GetAttr(value, CPyCppyy::PyStrings::gName); + if (PyErr_Occurred()) + PyErr_Clear(); + + // build full, qualified name + std::string fullname = mod_name; + fullname += "."; + fullname += CPyCppyy_PyUnicode_AsString(pyClName); + + // force class creation (this will eventually call TPyClassGenerator) + // TODO: the following is broken (and should live in Cppyy.cxx) to + // TClass::GetClass(fullname.c_str(), true); + + Py_XDECREF(pyClName); + } + + Py_DECREF(value); + } + + Py_DECREF(values); + +// TODO: mod "leaks" here + if (PyErr_Occurred()) + return false; + return true; +} + +//----------------------------------------------------------------------------- +void TPython::LoadMacro(const char* name) +{ +// Execute the give python script as if it were a macro (effectively an +// execfile in __main__), and create Cling equivalents for any newly available +// python classes. + if (!Initialize()) + return; + +// obtain a reference to look for new classes later + PyObject* old = PyDict_Values(gMainDict); + +// actual execution +#if PY_VERSION_HEX < 0x03000000 + Exec((std::string("execfile(\"") + name + "\")").c_str()); +#else + Exec((std::string("__cpycppyy_f = open(\"") + name + "\"); " + "exec(__cpycppyy_f.read()); " + "__cpycppyy_f.close(); del __cpycppyy_f").c_str()); +#endif + +// obtain new __main__ contents + PyObject* current = PyDict_Values(gMainDict); + +// create Cling classes for all new python classes + for (int i = 0; i < PyList_GET_SIZE(current); ++i) { + PyObject* value = PyList_GET_ITEM(current, i); + Py_INCREF(value); + + if (!PySequence_Contains(old, value)) { + // collect classes + if (PyClass_Check(value) || PyObject_HasAttr(value, CPyCppyy::PyStrings::gBases)) { + // get full class name (including module) + PyObject* pyModName = PyObject_GetAttr(value, CPyCppyy::PyStrings::gModule); + PyObject* pyClName = PyObject_GetAttr(value, CPyCppyy::PyStrings::gName); + + if (PyErr_Occurred()) + PyErr_Clear(); + + // need to check for both exact and derived (differences exist between older and newer + // versions of python ... bug?) + if ((pyModName && pyClName) && \ + ((CPyCppyy_PyUnicode_CheckExact(pyModName) && \ + CPyCppyy_PyUnicode_CheckExact(pyClName)) || \ + (CPyCppyy_PyUnicode_Check(pyModName) && \ + CPyCppyy_PyUnicode_Check(pyClName)) \ + )) { + // build full, qualified name + std::string fullname = CPyCppyy_PyUnicode_AsString(pyModName); + fullname += '.'; + fullname += CPyCppyy_PyUnicode_AsString(pyClName); + + // force class creation (this will eventually call TPyClassGenerator) + // the following is broken (and should live in Cppyy.cxx) + // TClass::GetClass(fullname.c_str(), true); + } + + Py_XDECREF(pyClName); + Py_XDECREF(pyModName); + } + } + + Py_DECREF(value); + } + + Py_DECREF(current); + Py_DECREF(old); +} + +//----------------------------------------------------------------------------- +void TPython::ExecScript(const char* name, int argc, const char** +#if PY_VERSION_HEX < 0x03000000 + argv +#endif + ) +{ +// Execute a python stand-alone script, with argv CLI arguments. +// +// example of use: +// const char* argv[] = {"1", "2", "3"}; +// TPython::ExecScript("test.py", sizeof(argv)/sizeof(argv[0]), argv); + if (!Initialize()) + return; + +// verify arguments + if (!name) { + std::cerr << "Error: no file name specified." << std::endl; + return; + } + + FILE* fp = fopen(name, "r"); + if (!fp) { + std::cerr << "Error: could not open file \"" << name << "\"." << std::endl; + return; + } + +// store a copy of the old cli for restoration + PyObject* oldargv = PySys_GetObject(const_cast("argv")); // borrowed + if (!oldargv) // e.g. apache + PyErr_Clear(); + else { + PyObject* l = PyList_New(PyList_GET_SIZE(oldargv)); + for (int i = 0; i < PyList_GET_SIZE(oldargv); ++i) { + PyObject* item = PyList_GET_ITEM(oldargv, i); + Py_INCREF(item); + PyList_SET_ITEM(l, i, item); // steals ref + } + oldargv = l; + } + +// create and set (add progam name) the new command line + argc += 1; +#if PY_VERSION_HEX < 0x03000000 + const char** argv2 = new const char*[argc]; + for (int i = 1; i < argc; ++i) argv2[i] = argv[i-1]; + argv2[0] = Py_GetProgramName(); + PySys_SetArgv(argc, const_cast(argv2)); + delete [] argv2; +#else +// TODO: fix this to work like above ... +#endif + +// actual script execution + PyObject* gbl = PyDict_Copy(gMainDict); + PyObject* result = // PyRun_FileEx closes fp (b/c of last argument "1") + PyRun_FileEx(fp, const_cast(name), Py_file_input, gbl, gbl, 1); + if (!result) + PyErr_Print(); + Py_XDECREF(result); + Py_DECREF(gbl); + +// restore original command line + if (oldargv) { + PySys_SetObject(const_cast("argv"), oldargv); + Py_DECREF(oldargv); + } +} + +//----------------------------------------------------------------------------- +bool TPython::Exec(const char* cmd) +{ +// Execute a python statement (e.g. "import noddy"). + if (!Initialize()) + return false; + +// execute the command + PyObject* result = + PyRun_String(const_cast(cmd), Py_file_input, gMainDict, gMainDict); + +// test for error + if (result) { + Py_DECREF(result); + return true; + } + + PyErr_Print(); + return false; +} + +//----------------------------------------------------------------------------- +const TPyReturn TPython::Eval(const char* expr) +{ +// Evaluate a python expression. +// +// Caution: do not hold on to the return value: either store it in a builtin +// type (implicit casting will work), or in a pointer to a cppyy object (explicit +// casting to a void* is required). + if (!Initialize()) + return TPyReturn(); + +// evaluate the expression + PyObject* result = + PyRun_String(const_cast(expr), Py_eval_input, gMainDict, gMainDict); + +// report errors as appropriate; return void + if (!result) { + PyErr_Print(); + return TPyReturn(); + } + +// results that require no convserion + if (result == Py_None || CPyCppyy::CPPInstance_Check(result) || + PyBytes_Check(result) || + PyFloat_Check(result) || PyLong_Check(result) || PyInt_Check(result)) + return TPyReturn(result); + +// explicit conversion for python type required + PyObject* pyclass = PyObject_GetAttr(result, CPyCppyy::PyStrings::gClass); + if (pyclass) { + // retrieve class name and the module in which it resides + PyObject* name = PyObject_GetAttr(pyclass, CPyCppyy::PyStrings::gName); + PyObject* module = PyObject_GetAttr(pyclass, CPyCppyy::PyStrings::gModule); + + // concat name + std::string qname = + std::string(CPyCppyy_PyUnicode_AsString(module)) + \ + '.' + CPyCppyy_PyUnicode_AsString(name); + Py_DECREF(module); + Py_DECREF(name); + Py_DECREF(pyclass); + + // locate cppyy style class with this name + // TODO: use Cppyy.cxx ... + //TClass* klass = TClass::GetClass(qname.c_str()); + void* klass = nullptr; + + // construct general cppyy python object that pretends to be of class 'klass' + if (klass) + return TPyReturn(result); + } else + PyErr_Clear(); + +// no conversion, return null pointer object + Py_DECREF(result); + return TPyReturn(); +} + +//----------------------------------------------------------------------------- +void TPython::Prompt() { +// Enter an interactive python session (exit with ^D). State is preserved +// between successive calls. + if (!Initialize()) { + return; + } + +// enter i/o interactive mode + PyRun_InteractiveLoop(stdin, const_cast("\0")); +} + +//----------------------------------------------------------------------------- +bool TPython::CPPInstance_Check(PyObject* pyobject) +{ +// Test whether the type of the given pyobject is of CPPInstance type or any +// derived type. + if (!Initialize()) + return false; + +// detailed walk through inheritance hierarchy + return CPyCppyy::CPPInstance_Check(pyobject); +} + +//----------------------------------------------------------------------------- +bool TPython::CPPInstance_CheckExact(PyObject* pyobject) +{ +// Test whether the type of the given pyobject is CPPInstance type. + if (!Initialize()) + return false; + +// direct pointer comparison of type member + return CPyCppyy::CPPInstance_CheckExact(pyobject); +} + +//----------------------------------------------------------------------------- +bool TPython::CPPOverload_Check(PyObject* pyobject) +{ +// Test whether the type of the given pyobject is of CPPOverload type or any +// derived type. + if (!Initialize()) + return false; + +// detailed walk through inheritance hierarchy + return CPyCppyy::CPPOverload_Check(pyobject); +} + +//----------------------------------------------------------------------------- +bool TPython::CPPOverload_CheckExact(PyObject* pyobject) +{ +// Test whether the type of the given pyobject is CPPOverload type. + if (!Initialize()) + return false; + +// direct pointer comparison of type member + return CPyCppyy::CPPOverload_CheckExact(pyobject); +} + +//----------------------------------------------------------------------------- +void* TPython::CPPInstance_AsVoidPtr(PyObject* pyobject) +{ +// Extract the object pointer held by the CPPInstance pyobject. + if (!Initialize()) + return nullptr; + +// check validity of cast + if (!CPyCppyy::CPPInstance_Check(pyobject)) + return nullptr; + +// get held object (may be null) + return ((CPyCppyy::CPPInstance*)pyobject)->GetObject(); +} + +//----------------------------------------------------------------------------- +PyObject* TPython::CPPInstance_FromVoidPtr( + void* addr, const char* classname, bool python_owns) +{ +// Bind the addr to a python object of class defined by classname. + if (!Initialize()) + return nullptr; + +// perform cast (the call will check TClass and addr, and set python errors) + PyObject* pyobject = CPyCppyy::BindCppObjectNoCast(addr, Cppyy::GetScope(classname), false); + +// give ownership, for ref-counting, to the python side, if so requested + if (python_owns && CPyCppyy::CPPInstance_Check(pyobject)) + ((CPyCppyy::CPPInstance*)pyobject)->PythonOwns(); + + return pyobject; +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.cxx new file mode 100644 index 0000000000000..282a66822712d --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.cxx @@ -0,0 +1,449 @@ +// Bindings +#include "CPyCppyy.h" +#include "TemplateProxy.h" +#include "CPPClassMethod.h" +#include "CPPConstructor.h" +#include "CPPFunction.h" +#include "CPPMethod.h" +#include "CPPOverload.h" +#include "PyCallable.h" +#include "PyStrings.h" +#include "Utility.h" + + +namespace CPyCppyy { + +//---------------------------------------------------------------------------- +void TemplateProxy::Set(const std::string& cppname, const std::string& pyname, PyObject* pyclass) +{ +// Initialize the proxy for the given 'pyclass.' + fCppName = CPyCppyy_PyUnicode_FromString(const_cast(cppname.c_str())); + fPyName = CPyCppyy_PyUnicode_FromString(const_cast(pyname.c_str())); + fTemplateArgs = nullptr; + Py_XINCREF(pyclass); + fPyClass = pyclass; + fSelf = nullptr; + std::vector dummy; + fNonTemplated = CPPOverload_New(pyname, dummy); + fTemplated = CPPOverload_New(pyname, dummy); +} + +//---------------------------------------------------------------------------- +void TemplateProxy::AddOverload(CPPOverload* mp) { +// Store overloads of this templated method. + fNonTemplated->AddMethod(mp); +} + +void TemplateProxy::AddOverload(PyCallable* pc) { +// Store overload of this templated method. + fNonTemplated->AddMethod(pc); +} + +void TemplateProxy::AddTemplate(PyCallable* pc) +{ +// Store know template methods. + fTemplated->AddMethod(pc); +} + +//---------------------------------------------------------------------------- +PyCallable* TemplateProxy::Instantiate(const std::string& fullname, PyObject* args) +{ +// Instantiate (and cache) templated methods, return method if any + std::string proto = ""; + + Py_ssize_t nArgs = PyTuple_GET_SIZE(args); + if (nArgs != 0) { + PyObject* tpArgs = PyTuple_New(nArgs); + for (int i = 0; i < nArgs; ++i) { + PyObject* itemi = PyTuple_GET_ITEM(args, i); + + // special case for arrays + PyObject* pytc = PyObject_GetAttr(itemi, PyStrings::gTypeCode); + if (!(pytc && CPyCppyy_PyUnicode_Check(pytc))) { + // normal case (not an array) + PyErr_Clear(); + PyObject* tp = (PyObject*)Py_TYPE(itemi); + Py_INCREF(tp); + PyTuple_SET_ITEM(tpArgs, i, tp); + } else { + // array, build up a pointer type + char tc = ((char*)CPyCppyy_PyUnicode_AsString(pytc))[0]; + const char* ptrname = 0; + switch (tc) { + case 'b': ptrname = "char*"; break; + case 'h': ptrname = "short*"; break; + case 'H': ptrname = "unsigned short*"; break; + case 'i': ptrname = "int*"; break; + case 'I': ptrname = "unsigned int*"; break; + case 'l': ptrname = "long*"; break; + case 'L': ptrname = "unsigned long*"; break; + case 'f': ptrname = "float*"; break; + case 'd': ptrname = "double*"; break; + default: ptrname = "void*"; // TODO: verify if this is right + } + if (ptrname) { + PyObject* pyptrname = PyBytes_FromString(ptrname); + PyTuple_SET_ITEM(tpArgs, i, pyptrname); + // string added, but not counted towards nStrings + } else { + // this should cleanly fail instantiation + Py_INCREF(Py_None); + PyTuple_SET_ITEM(tpArgs, i, Py_None); + } + } + Py_XDECREF(pytc); + } + + const std::string& name_v1 = Utility::ConstructTemplateArgs(nullptr, tpArgs, 0); + Py_DECREF(tpArgs); + if (name_v1.size()) + proto = name_v1.substr(1, name_v1.size()-2); + } + +// the following causes instantiation as necessary + Cppyy::TCppScope_t scope = ((CPPClass*)fPyClass)->fCppType; + Cppyy::TCppMethod_t cppmeth = Cppyy::GetMethodTemplate(scope, fullname, proto); + if (cppmeth) { // overload stops here + PyCallable* meth = nullptr; + if (Cppyy::IsNamespace(scope)) + meth = new CPPFunction(scope, cppmeth); + else if (Cppyy::IsStaticMethod(cppmeth)) + meth = new CPPClassMethod(scope, cppmeth); + else if (Cppyy::IsConstructor(cppmeth)) + meth = new CPPConstructor(scope, cppmeth); + else + meth = new CPPMethod(scope, cppmeth); + + // add to overload of instantiated templates + AddTemplate(meth); + + return meth; + } + + return nullptr; +} + + +//= CPyCppyy template proxy construction/destruction ========================= +static TemplateProxy* tpp_new(PyTypeObject*, PyObject*, PyObject*) +{ +// Create a new empty template method proxy. + TemplateProxy* pytmpl = PyObject_GC_New(TemplateProxy, &TemplateProxy_Type); + pytmpl->fCppName = nullptr; + pytmpl->fPyName = nullptr; + pytmpl->fTemplateArgs = nullptr; + pytmpl->fPyClass = nullptr; + pytmpl->fSelf = nullptr; + pytmpl->fNonTemplated = nullptr; + pytmpl->fTemplated = nullptr; + + PyObject_GC_Track(pytmpl); + return pytmpl; +} + +//---------------------------------------------------------------------------- +static int tpp_clear(TemplateProxy* pytmpl) +{ +// Garbage collector clear of held python member objects. + Py_CLEAR(pytmpl->fCppName); + Py_CLEAR(pytmpl->fPyName); + Py_CLEAR(pytmpl->fTemplateArgs); + Py_CLEAR(pytmpl->fPyClass); + Py_CLEAR(pytmpl->fSelf); + Py_CLEAR(pytmpl->fNonTemplated); + Py_CLEAR(pytmpl->fTemplated); + + return 0; +} + +//---------------------------------------------------------------------------- +static void tpp_dealloc(TemplateProxy* pytmpl) +{ +// Destroy the given template method proxy. + PyObject_GC_UnTrack(pytmpl); + tpp_clear(pytmpl); + PyObject_GC_Del(pytmpl); +} + +//---------------------------------------------------------------------------- +static PyObject* tpp_doc(TemplateProxy* pytmpl, void*) +{ +// Forward to method proxies to doc all overloads + PyObject* doc = nullptr; + if (pytmpl->fNonTemplated) + doc = PyObject_GetAttrString((PyObject*)pytmpl->fNonTemplated, "__doc__"); + if (pytmpl->fTemplated) { + PyObject* doc2 = PyObject_GetAttrString((PyObject*)pytmpl->fTemplated, "__doc__"); + if (doc && doc2) { + CPyCppyy_PyUnicode_AppendAndDel(&doc, CPyCppyy_PyUnicode_FromString("\n")); + CPyCppyy_PyUnicode_AppendAndDel(&doc, doc2); + } else if (!doc && doc2) { + doc = doc2; + } + } + + if (doc) + return doc; + + return CPyCppyy_PyUnicode_FromString(TemplateProxy_Type.tp_doc); +} + +//---------------------------------------------------------------------------- +static int tpp_traverse(TemplateProxy* pytmpl, visitproc visit, void* arg) +{ +// Garbage collector traverse of held python member objects. + Py_VISIT(pytmpl->fCppName); + Py_VISIT(pytmpl->fPyName); + Py_VISIT(pytmpl->fTemplateArgs); + Py_VISIT(pytmpl->fPyClass); + Py_VISIT(pytmpl->fSelf); + Py_VISIT(pytmpl->fNonTemplated); + Py_VISIT(pytmpl->fTemplated); + + return 0; +} + +//= CPyCppyy template proxy callable behavior ================================ +static PyObject* tpp_call(TemplateProxy* pytmpl, PyObject* args, PyObject* kwds) +{ +// Dispatcher to the actual member method, several uses possible; in order: +// +// case 1: explicit template previously selected through subscript +// +// case 2: select known non-template overload +// +// obj.method(a0, a1, ...) +// => obj->method(a0, a1, ...) // non-template +// +// case 3: select known template overload +// +// obj.method(a0, a1, ...) +// => obj->method(a0, a1, ...) // all known templates +// +// case 4: auto-instantiation from types of arguments +// +// obj.method(a0, a1, ...) +// => obj->method(a0, a1, ...) +// +// Note: explicit instantiation needs to use [] syntax: +// +// obj.method[type, type, ...](a0, a1, ...) +// + +// case 1: explicit template previously selected through subscript + + if (pytmpl->fTemplateArgs) { + // instantiate explicitly + PyObject* pyfullname = CPyCppyy_PyUnicode_FromString(CPyCppyy_PyUnicode_AsString(pytmpl->fCppName)); + CPyCppyy_PyUnicode_Append(&pyfullname, pytmpl->fTemplateArgs); + PyCallable* meth = pytmpl->Instantiate(CPyCppyy_PyUnicode_AsString(pyfullname), args); + if (meth) { + // store overload + PyObject* pymeth = (PyObject*)CPPOverload_New(CPyCppyy_PyUnicode_AsString(pyfullname), meth); + PyObject_SetAttr(pytmpl->fPyClass, pyfullname, pymeth); + Py_DECREF(pymeth); + pymeth = PyObject_GetAttr(pytmpl->fSelf ? pytmpl->fSelf : pytmpl->fPyClass, pyfullname); + Py_DECREF(pyfullname); + PyObject* result = CPPOverload_Type.tp_call(pymeth, args, kwds); + Py_DECREF(pymeth); + return result; + } else { + Py_DECREF(pyfullname); + // debatable ... should this drop through? + } + } + +// case 2: select known non-template overload + +// simply forward the call: all non-templated methods are defined on class definition +// and thus already available + PyObject* pymeth = CPPOverload_Type.tp_descr_get( + (PyObject*)pytmpl->fNonTemplated, pytmpl->fSelf, (PyObject*)&CPPOverload_Type); +// now call the method with the arguments (loops internally) + PyObject* result = CPPOverload_Type.tp_call(pymeth, args, kwds); + Py_DECREF(pymeth); pymeth = nullptr; + if (result) + return result; +// TODO: collect error here, as the failure may be either an overload +// failure after which we should continue; or a real failure, which should +// be reported. + PyErr_Clear(); + +// case 3: select known template overload + pymeth = CPPOverload_Type.tp_descr_get( + (PyObject*)pytmpl->fTemplated, pytmpl->fSelf, (PyObject*)&CPPOverload_Type); +// now call the method with the arguments (loops internally) + result = CPPOverload_Type.tp_call(pymeth, args, kwds); + Py_DECREF(pymeth); pymeth = nullptr; + if (result) + return result; +// TODO: collect error here, as the failure may be either an overload +// failure after which we should continue; or a real failure, which should +// be reported. + PyErr_Clear(); + +// case 4: auto-instantiation from types of arguments + PyCallable* meth = pytmpl->Instantiate(CPyCppyy_PyUnicode_AsString(pytmpl->fCppName), args); + if (meth) { + // re-retrieve the cached method to bind it, then call it + PyObject* pymeth = CPPOverload_Type.tp_descr_get( + (PyObject*)pytmpl->fTemplated, pytmpl->fSelf, (PyObject*)&CPPOverload_Type); + result = CPPOverload_Type.tp_call(pymeth, args, kwds); + Py_DECREF(pymeth); + if (result) + return result; + } + +// moderately generic error message, but should be clear enough + PyErr_Format(PyExc_TypeError, "can not resolve method template call for \'%s\'", + CPyCppyy_PyUnicode_AsString(pytmpl->fPyName)); + return nullptr; +} + +//---------------------------------------------------------------------------- +static TemplateProxy* tpp_descrget(TemplateProxy* pytmpl, PyObject* pyobj, PyObject*) +{ +// create and use a new template proxy (language requirement) + TemplateProxy* newPyTmpl = (TemplateProxy*)TemplateProxy_Type.tp_alloc(&TemplateProxy_Type, 0); + +// new method is to be bound to current object (may be nullptr) + Py_XINCREF(pyobj); + newPyTmpl->fSelf = pyobj; + +// copy name and class pointers + Py_INCREF(pytmpl->fCppName); + newPyTmpl->fCppName = pytmpl->fCppName; + + Py_INCREF(pytmpl->fPyName); + newPyTmpl->fPyName = pytmpl->fPyName; + + Py_XINCREF(pytmpl->fTemplateArgs); + newPyTmpl->fTemplateArgs = pytmpl->fTemplateArgs; + + Py_XINCREF(pytmpl->fPyClass); + newPyTmpl->fPyClass = pytmpl->fPyClass; + +// copy non-templated method proxy pointer + Py_INCREF(pytmpl->fNonTemplated); + newPyTmpl->fNonTemplated = pytmpl->fNonTemplated; + +// copy templated method proxy pointer + Py_INCREF(pytmpl->fTemplated); + newPyTmpl->fTemplated = pytmpl->fTemplated; + + return newPyTmpl; +} + +//---------------------------------------------------------------------------- +static PyObject* tpp_subscript(TemplateProxy* pytmpl, PyObject* args) +{ +// Explicit template member lookup/instantiation. + PyObject* newArgs; + if (!PyTuple_Check(args)) { + newArgs = PyTuple_New(1); + Py_INCREF(args); + PyTuple_SET_ITEM(newArgs, 0, args); + } else { + Py_INCREF(args); + newArgs = args; + } + + PyObject* pymeth = nullptr; + +// construct full, explicit name of function + PyObject* pyfullname = CPyCppyy_PyUnicode_FromString(CPyCppyy_PyUnicode_AsString(pytmpl->fCppName)); + PyObject* tmpl_args = CPyCppyy_PyUnicode_FromString(Utility::ConstructTemplateArgs(nullptr, newArgs, 0).c_str()); + Py_DECREF(newArgs); + CPyCppyy_PyUnicode_Append(&pyfullname, tmpl_args); + +// find template cached in dictionary, if any + PyObject* dct = PyObject_GetAttr(pytmpl->fPyClass, PyStrings::gDict); + bool hasTmpl = dct ? false : (bool)PyDict_GetItem(dct, pyfullname); + Py_XDECREF(dct); + if (hasTmpl) // overloads stop here, as there is an explicit match + pymeth = PyObject_GetAttr(pytmpl->fSelf ? pytmpl->fSelf : pytmpl->fPyClass, pyfullname); + Py_DECREF(pyfullname); + +// if found, return the overload, otherwise return fresh + if (pymeth) { + Py_DECREF(tmpl_args); + return pymeth; + } + +// nothing found, return fresh template trampoline with constructed types + TemplateProxy* typeBoundMethod = tpp_descrget(pytmpl, pytmpl->fSelf, nullptr); + Py_XDECREF(typeBoundMethod->fTemplateArgs); + typeBoundMethod->fTemplateArgs = tmpl_args; + return (PyObject*)typeBoundMethod; +} + +//---------------------------------------------------------------------------- +static PyMappingMethods tpp_as_mapping = { + nullptr, (binaryfunc)tpp_subscript, nullptr +}; + +static PyGetSetDef tpp_getset[] = { + {(char*)"__doc__", (getter)tpp_doc, nullptr, nullptr, nullptr}, + {(char*)nullptr, nullptr, nullptr, nullptr, nullptr} +}; + + +//= CPyCppyy template proxy type ============================================= +PyTypeObject TemplateProxy_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.TemplateProxy", // tp_name + sizeof(TemplateProxy), // tp_basicsize + 0, // tp_itemsize + (destructor)tpp_dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + &tpp_as_mapping, // tp_as_mapping + 0, // tp_hash + (ternaryfunc)tpp_call, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, // tp_flags + (char*)"cppyy template proxy (internal)", // tp_doc + (traverseproc)tpp_traverse,// tp_traverse + (inquiry)tpp_clear, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + tpp_getset, // tp_getset + 0, // tp_base + 0, // tp_dict + (descrgetfunc)tpp_descrget,// tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + (newfunc)tpp_new, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.h new file mode 100644 index 0000000000000..7d266cbb45bff --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TemplateProxy.h @@ -0,0 +1,79 @@ +#ifndef CPYCPPYY_TEMPLATEPROXY_H +#define CPYCPPYY_TEMPLATEPROXY_H + +// Bindings +#include "CPPScope.h" + +// Standard +#include + + +namespace CPyCppyy { + +class PyCallable; +class CPPOverload; + +/** Template proxy object to return functions and methods + @author WLAV + @date 01/15/2008 + @version 1.0 + */ + +class TemplateProxy { +private: + friend TemplateProxy* TemplateProxy_New( + const std::string& cppname, const std::string& pyname, PyObject* pyclass); + void Set(const std::string& cppname, const std::string& pyname, PyObject* pyclass); + +public: // public, as the python C-API works with C structs + PyObject_HEAD + PyObject* fSelf; // must be first (same layout as CPPOverload) + PyObject* fCppName; + PyObject* fPyName; + PyObject* fTemplateArgs; + PyObject* fPyClass; + CPPOverload* fNonTemplated; // holder for non-template overloads + CPPOverload* fTemplated; // holder for templated overloads + +public: + void AddOverload(CPPOverload* mp); + void AddOverload(PyCallable* pc); + void AddTemplate(PyCallable* pc); + PyCallable* Instantiate(const std::string& fullname, PyObject* tmplArgs); + +private: // private, as the python C-API will handle creation + TemplateProxy() = delete; +}; + + +//- template proxy type and type verification -------------------------------- +extern PyTypeObject TemplateProxy_Type; + +template +inline bool TemplateProxy_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &TemplateProxy_Type); +} + +template +inline bool TemplateProxy_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &TemplateProxy_Type; +} + +//- creation ----------------------------------------------------------------- +inline TemplateProxy* TemplateProxy_New( + const std::string& cppname, const std::string& pyname, PyObject* pyclass) +{ +// Create and initialize a new template method proxy for the class. + if (!CPPScope_Check(pyclass)) return nullptr; + + TemplateProxy* pytmpl = + (TemplateProxy*)TemplateProxy_Type.tp_new(&TemplateProxy_Type, nullptr, nullptr); + pytmpl->Set(cppname, pyname, pyclass); + return pytmpl; +} + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_TEMPLATEPROXY_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.cxx new file mode 100644 index 0000000000000..cdfb48aaaa2f9 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.cxx @@ -0,0 +1,96 @@ +// Bindings +#include "CPyCppyy.h" +#include "TupleOfInstances.h" +#include "CPPInstance.h" +#include "ProxyWrappers.h" + + +namespace CPyCppyy { + +//= support for C-style arrays of objects ==================================== +PyObject* TupleOfInstances_New( + Cppyy::TCppObject_t address, Cppyy::TCppType_t klass, Py_ssize_t nelems) +{ +// TODO: the extra copy is inefficient, but it appears that the only way to +// initialize a subclass of a tuple is through a sequence + PyObject* tup = PyTuple_New(nelems); + for (int i = 0; i < nelems; ++i) { + // TODO: there's an assumption here that there is no padding, which is bound + // to be incorrect in certain cases + PyTuple_SetItem(tup, i, + BindCppObject((char*)address + i*Cppyy::SizeOf(klass), klass, CPPInstance::kIsReference)); + // Note: objects are bound as pointers, yet since the pointer value stays in + // place, updates propagate just as if they were bound by-reference + } + + PyObject* args = PyTuple_New(1); + Py_INCREF(tup); PyTuple_SET_ITEM(args, 0, tup); + PyObject* arr = PyTuple_Type.tp_new(&TupleOfInstances_Type, args, nullptr); + if (PyErr_Occurred()) PyErr_Print(); + + Py_DECREF(args); + // tup ref eaten by SET_ITEM on args + + return arr; +} + +//= CPyCppyy custom tuple-like array type ==================================== +PyTypeObject TupleOfInstances_Type = { + PyVarObject_HEAD_INIT(&PyType_Type, 0) + (char*)"cppyy.InstancesArray", // tp_name + 0, // tp_basicsize + 0, // tp_itemsize + 0, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + 0, // tp_compare + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_BASETYPE, // tp_flags + (char*)"array of C++ instances", // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + &PyTuple_Type, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + 0, // tp_new + 0, // tp_free + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0 // tp_weaklist +#if PY_VERSION_HEX >= 0x02030000 + , 0 // tp_del +#endif +#if PY_VERSION_HEX >= 0x02060000 + , 0 // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + , 0 // tp_finalize +#endif +}; + +} // namespace CPyCppyy diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.h new file mode 100644 index 0000000000000..ee3c43bdd388a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TupleOfInstances.h @@ -0,0 +1,32 @@ +#ifndef CPYCPPYY_TUPLEOFINSTANCES_H +#define CPYCPPYY_TUPLEOFINSTANCES_H + +namespace CPyCppyy { + +/** Representation of C-style array of instances + @author WLAV + @date 02/10/2014 + @version 1.0 + */ + +//- custom tuple type that can pass through C-style arrays ------------------- +extern PyTypeObject TupleOfInstances_Type; + +template +inline bool TupleOfInstances_Check(T* object) +{ + return object && PyObject_TypeCheck(object, &TupleOfInstances_Type); +} + +template +inline bool TupleOfInstances_CheckExact(T* object) +{ + return object && Py_TYPE(object) == &TupleOfInstances_Type; +} + +PyObject* TupleOfInstances_New( + Cppyy::TCppObject_t address, Cppyy::TCppType_t klass, Py_ssize_t nelems); + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_TUPLEOFINSTANCES_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.cxx new file mode 100644 index 0000000000000..8370bda9ef90e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.cxx @@ -0,0 +1,105 @@ +// Bindings +#include "CPyCppyy.h" +#include "TypeManip.h" + +// Standard +#include + + +//- helpers ------------------------------------------------------------------ +static inline +std::string::size_type find_qualifier_index(const std::string& name) +{ +// Find the first location that is not part of the class name proper. + std::string::size_type i = name.size() - 1; + for ( ; 0 < i; --i) { + std::string::value_type c = name[i]; + if (isalnum((int)c) || c == '>') + break; + } + + return i+1; +} + +static inline void erase_const(std::string& name) +{ +// Find and remove all occurrence of 'const'. + std::string::size_type spos = std::string::npos; + while ((spos = name.find("const") ) != std::string::npos) { + std::string::size_type i = 5; + while (name[spos+i] == ' ') ++i; + name.swap(name.erase(spos, i)); + } +} + +static inline void rstrip(std::string& name) +{ +// Remove space from the right side of name. + std::string::size_type i = name.size(); + for ( ; 0 < i; --i) { + if (!isspace(name[i])) + break; + } + + if (i != name.size()) + name = name.substr(0, i); +} + + +//---------------------------------------------------------------------------- +std::string CPyCppyy::TypeManip::remove_const(const std::string& cppname) +{ +// Remove 'const' qualifiers from the given C++ name. + std::string::size_type tmplt_start = cppname.find('<'); + std::string::size_type tmplt_stop = cppname.rfind('>'); + if (tmplt_start != std::string::npos && tmplt_stop != std::string::npos) { + // only replace const qualifying cppname, not in template parameters + std::string pre = cppname.substr(0, tmplt_start); + erase_const(pre); + std::string post = cppname.substr(tmplt_stop+1, std::string::npos); + erase_const(post); + + return pre + cppname.substr(tmplt_start, tmplt_stop+1) + post; + } + + std::string clean_name = cppname; + erase_const(clean_name); + return clean_name; +} + + +//---------------------------------------------------------------------------- +std::string CPyCppyy::TypeManip::clean_type( + const std::string& cppname, bool template_strip, bool const_strip) +{ +// Strip C++ name from all qualifiers and compounds. + std::string::size_type i = find_qualifier_index(cppname); + std::string name = cppname.substr(0, i); + rstrip(name); + + if (name.back() == ']') { // array type? + // TODO: this fails templates instantiated on arrays (not common) + name = name.substr(0, name.find('[')); + } else if (template_strip && name.back() == '>') { + name = name.substr(0, name.find('<')); + } + + if (const_strip) { + if (template_strip) + erase_const(name); + else + name = remove_const(name); + } + return name; +} + +//---------------------------------------------------------------------------- +void CPyCppyy::TypeManip::cppscope_to_pyscope(std::string& cppscope) +{ +// Change '::' in C++ scope into '.' as in a Python scope. + std::string::size_type pos = 0; + while ((pos = cppscope.find("::", pos)) != std::string::npos) { + cppscope.replace(pos, 2, "."); + pos += 1; + } +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.h new file mode 100644 index 0000000000000..2c0fea71c243c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/TypeManip.h @@ -0,0 +1,21 @@ +#ifndef CPYCPPYY_TYPEMANIP_H +#define CPYCPPYY_TYPEMANIP_H + +#include + + +namespace CPyCppyy { + +namespace TypeManip { + + std::string remove_const(const std::string& cppname); + std::string clean_type(const std::string& cppname, + bool template_strip = true, bool const_strip = true); + + void cppscope_to_pyscope(std::string& cppscope); + +} // namespace TypeManip + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_TYPEMANIP_H diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.cxx new file mode 100644 index 0000000000000..04e588c9b7f4f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.cxx @@ -0,0 +1,775 @@ +// Bindings +#include "CPyCppyy.h" +#include "Utility.h" +#include "CPPFunction.h" +#include "CPPInstance.h" +#include "CPPOverload.h" +#include "ProxyWrappers.h" +#include "PyCallable.h" +#include "PyStrings.h" +#include "CustomPyTypes.h" +#include "TemplateProxy.h" + +// Standard +#include +#include +#include +#include +#include +#include + + +//- data _____________________________________________________________________ +dict_lookup_func CPyCppyy::gDictLookupOrg = 0; +bool CPyCppyy::gDictLookupActive = false; + +typedef std::map TC2POperatorMapping_t; +static TC2POperatorMapping_t gC2POperatorMapping; + +namespace { + + using namespace CPyCppyy::Utility; + + struct InitOperatorMapping_t { + public: + InitOperatorMapping_t() { + // Initialize the global map of operator names C++ -> python. + + // gC2POperatorMapping["[]"] = "__setitem__"; // depends on return type + // gC2POperatorMapping["+"] = "__add__"; // depends on # of args (see __pos__) + // gC2POperatorMapping["-"] = "__sub__"; // id. (eq. __neg__) + // gC2POperatorMapping["*"] = "__mul__"; // double meaning in C++ + + gC2POperatorMapping["[]"] = "__getitem__"; + gC2POperatorMapping["()"] = "__call__"; + gC2POperatorMapping["/"] = CPPYY__div__; + gC2POperatorMapping["%"] = "__mod__"; + gC2POperatorMapping["**"] = "__pow__"; + gC2POperatorMapping["<<"] = "__lshift__"; + gC2POperatorMapping[">>"] = "__rshift__"; + gC2POperatorMapping["&"] = "__and__"; + gC2POperatorMapping["|"] = "__or__"; + gC2POperatorMapping["^"] = "__xor__"; + gC2POperatorMapping["~"] = "__inv__"; + gC2POperatorMapping["+="] = "__iadd__"; + gC2POperatorMapping["-="] = "__isub__"; + gC2POperatorMapping["*="] = "__imul__"; + gC2POperatorMapping["/="] = CPPYY__idiv__; + gC2POperatorMapping["%="] = "__imod__"; + gC2POperatorMapping["**="] = "__ipow__"; + gC2POperatorMapping["<<="] = "__ilshift__"; + gC2POperatorMapping[">>="] = "__irshift__"; + gC2POperatorMapping["&="] = "__iand__"; + gC2POperatorMapping["|="] = "__ior__"; + gC2POperatorMapping["^="] = "__ixor__"; + gC2POperatorMapping["=="] = "__eq__"; + gC2POperatorMapping["!="] = "__ne__"; + gC2POperatorMapping[">"] = "__gt__"; + gC2POperatorMapping["<"] = "__lt__"; + gC2POperatorMapping[">="] = "__ge__"; + gC2POperatorMapping["<="] = "__le__"; + + // the following type mappings are "exact" + gC2POperatorMapping["const char*"] = "__str__"; + gC2POperatorMapping["char*"] = "__str__"; + gC2POperatorMapping["const char *"] = gC2POperatorMapping[ "const char*" ]; + gC2POperatorMapping["char *"] = gC2POperatorMapping[ "char*" ]; + gC2POperatorMapping["int"] = "__int__"; + gC2POperatorMapping["long"] = CPPYY__long__; + gC2POperatorMapping["double"] = "__float__"; + + // the following type mappings are "okay"; the assumption is that they + // are not mixed up with the ones above or between themselves (and if + // they are, that it is done consistently) + gC2POperatorMapping["short"] = "__int__"; + gC2POperatorMapping["unsigned short"] = "__int__"; + gC2POperatorMapping["unsigned int"] = CPPYY__long__; + gC2POperatorMapping["unsigned long"] = CPPYY__long__; + gC2POperatorMapping["long long"] = CPPYY__long__; + gC2POperatorMapping["unsigned long long"] = CPPYY__long__; + gC2POperatorMapping["float"] = "__float__"; + + gC2POperatorMapping["->"] = "__follow__"; // not an actual python operator + gC2POperatorMapping["="] = "__assign__"; // id. + +#if PY_VERSION_HEX < 0x03000000 + gC2POperatorMapping["bool"] = "__nonzero__"; +#else + gC2POperatorMapping["bool"] = "__bool__"; +#endif + } + } initOperatorMapping_; + + std::once_flag sOperatorTemplateFlag; + void InitOperatorTemplate() { + /* TODO: move to Cppyy.cxx + gROOT->ProcessLine( + "namespace _pycppyy_internal { template" + " bool is_equal(const C1& c1, const C2& c2){ return (bool)(c1 == c2); } }"); + gROOT->ProcessLine( + "namespace _cpycppyy_internal { template" + " bool is_not_equal(const C1& c1, const C2& c2){ return (bool)(c1 != c2); } }"); + */ + } + +// TODO: this should live with Helpers + inline void RemoveConst(std::string& cleanName) { + std::string::size_type spos = std::string::npos; + while ((spos = cleanName.find("const")) != std::string::npos) { + cleanName.swap(cleanName.erase(spos, 5)); + } + } + +} // unnamed namespace + + +//- public functions --------------------------------------------------------- +unsigned long CPyCppyy::PyLongOrInt_AsULong(PyObject* pyobject) +{ +// Convert to C++ unsigned long, with bounds checking, allow int -> ulong. + unsigned long ul = PyLong_AsUnsignedLong(pyobject); + if (PyErr_Occurred() && PyInt_Check(pyobject)) { + PyErr_Clear(); + long i = PyInt_AS_LONG(pyobject); + if (0 <= i) { + ul = (unsigned long)i; + } else { + PyErr_SetString(PyExc_ValueError, + "can\'t convert negative value to unsigned long"); + } + } + + return ul; +} + +//---------------------------------------------------------------------------- +ULong64_t CPyCppyy::PyLongOrInt_AsULong64(PyObject* pyobject) +{ +// Convert to C++ unsigned long long, with bounds checking. + ULong64_t ull = PyLong_AsUnsignedLongLong(pyobject); + if (PyErr_Occurred() && PyInt_Check(pyobject)) { + PyErr_Clear(); + long i = PyInt_AS_LONG(pyobject); + if (0 <= i) { + ull = (ULong64_t)i; + } else { + PyErr_SetString(PyExc_ValueError, + "can\'t convert negative value to unsigned long long"); + } + } + + return ull; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::AddToClass( + PyObject* pyclass, const char* label, PyCFunction cfunc, int flags) +{ +// Add the given function to the class under name 'label'. + +// use list for clean-up (.so's are unloaded only at interpreter shutdown) + static std::list s_pymeths; + + s_pymeths.push_back(PyMethodDef()); + PyMethodDef* pdef = &s_pymeths.back(); + pdef->ml_name = const_cast(label); + pdef->ml_meth = cfunc; + pdef->ml_flags = flags; + pdef->ml_doc = nullptr; + + PyObject* func = PyCFunction_New(pdef, nullptr); + PyObject* method = CustomInstanceMethod_New(func, nullptr, pyclass); + bool isOk = PyObject_SetAttrString(pyclass, pdef->ml_name, method) == 0; + Py_DECREF(method); + Py_DECREF(func); + + if (PyErr_Occurred()) + return false; + + if (!isOk) { + PyErr_Format(PyExc_TypeError, "could not add method %s", label); + return false; + } + + return true; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::AddToClass(PyObject* pyclass, const char* label, const char* func) +{ +// Add the given function to the class under name 'label'. + PyObject* pyfunc = PyObject_GetAttrString(pyclass, const_cast(func)); + if (!pyfunc) + return false; + + bool isOk = PyObject_SetAttrString(pyclass, const_cast(label), pyfunc) == 0; + + Py_DECREF(pyfunc); + return isOk; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::AddToClass(PyObject* pyclass, const char* label, PyCallable* pyfunc) +{ +// Add the given function to the class under name 'label'. + CPPOverload* method = + (CPPOverload*)PyObject_GetAttrString(pyclass, const_cast(label)); + + if (!method || !CPPOverload_Check(method)) { + // not adding to existing CPPOverload; add callable directly to the class + if (PyErr_Occurred()) + PyErr_Clear(); + Py_XDECREF((PyObject*)method); + method = CPPOverload_New(label, pyfunc); + bool isOk = PyObject_SetAttrString( + pyclass, const_cast(label), (PyObject*)method) == 0; + Py_DECREF(method); + return isOk; + } + + method->AddMethod(pyfunc); + + Py_DECREF(method); + return true; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::AddUsingToClass(PyObject* pyclass, const char* method) +{ +// Helper to add base class methods to the derived class one (this covers the +// 'using' cases, which the dictionary does not provide). + CPPOverload* derivedMethod = + (CPPOverload*)PyObject_GetAttrString(pyclass, const_cast(method)); + if (!CPPOverload_Check(derivedMethod)) { + Py_XDECREF(derivedMethod); + return false; + } + + PyObject* mro = PyObject_GetAttr(pyclass, PyStrings::gMRO); + if (!mro || ! PyTuple_Check(mro)) { + Py_XDECREF(mro); + Py_DECREF(derivedMethod); + return false; + } + + CPPOverload* baseMethod = 0; + for (int i = 1; i < PyTuple_GET_SIZE(mro); ++i) { + baseMethod = (CPPOverload*)PyObject_GetAttrString( + PyTuple_GET_ITEM(mro, i), const_cast(method)); + + if (!baseMethod) { + PyErr_Clear(); + continue; + } + + if (CPPOverload_Check(baseMethod)) + break; + + Py_DECREF(baseMethod); + baseMethod = 0; + } + + Py_DECREF(mro); + + if (!CPPOverload_Check(baseMethod)) { + Py_XDECREF(baseMethod); + Py_DECREF(derivedMethod); + return false; + } + + derivedMethod->AddMethod(baseMethod); + + Py_DECREF(baseMethod); + Py_DECREF(derivedMethod); + + return true; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::AddBinaryOperator( + PyObject* left, PyObject* right, const char* op, const char* label, const char* alt) +{ +// Install the named operator (op) into the left object's class if such a function +// exists as a global overload; a label must be given if the operator is not in +// gC2POperatorMapping (i.e. if it is ambiguous at the member level). + +// this should be a given, nevertheless ... + if (!CPPInstance_Check(left)) + return false; + +// retrieve the class names to match the signature of any found global functions + std::string rcname = ClassName(right); + std::string lcname = ClassName(left); + PyObject* pyclass = PyObject_GetAttr(left, PyStrings::gClass); + + bool result = AddBinaryOperator(pyclass, lcname, rcname, op, label, alt); + + Py_DECREF(pyclass); + return result; +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::AddBinaryOperator( + PyObject* pyclass, const char* op, const char* label, const char* alt) +{ +// Install binary operator op in pyclass, working on two instances of pyclass. + std::string cname; + if (CPPScope_Check(pyclass)) + cname = Cppyy::GetScopedFinalName(((CPPScope*)pyclass)->fCppType); + else { + PyObject* pyname = PyObject_GetAttr(pyclass, PyStrings::gName); + cname = Cppyy::ResolveName(CPyCppyy_PyUnicode_AsString(pyname)); + Py_DECREF(pyname); + } + + return AddBinaryOperator(pyclass, cname, cname, op, label, alt); +} + +//---------------------------------------------------------------------------- +static inline +Cppyy::TCppMethod_t FindAndAddOperator(const std::string& lcname, const std::string& rcname, + const char* op, Cppyy::TCppScope_t scope = Cppyy::gGlobalScope) { +// Helper to find a function with matching signature in 'funcs'. + std::string opname = "operator"; + opname += op; + + Cppyy::TCppIndex_t idx = Cppyy::GetGlobalOperator( + scope, Cppyy::GetScope(lcname), Cppyy::GetScope(rcname), opname); + if (idx == (Cppyy::TCppIndex_t)-1) + return (Cppyy::TCppMethod_t)0; + + return Cppyy::GetMethod(scope, idx); +} + +bool CPyCppyy::Utility::AddBinaryOperator(PyObject* pyclass, const std::string& lcname, + const std::string& rcname, const char* op, const char* label, const char* alt) +{ +// Find a global function with a matching signature and install the result on pyclass; +// in addition, __gnu_cxx, std::__1, and _cpycppyy_internal are searched pro-actively (as +// there's AFAICS no way to unearth using information). + +// For GNU on clang, search the internal __gnu_cxx namespace for binary operators (is +// typically the case for STL iterators operator==/!=. +// TODO: only look in __gnu_cxx for iterators (and more generally: do lookups in the +// namespace where the class is defined + static Cppyy::TCppScope_t gnucxx = Cppyy::GetScope("__gnu_cxx"); + +// Same for clang on Mac. TODO: find proper pre-processor magic to only use those specific +// namespaces that are actually around; although to be sure, this isn't expensive. + static Cppyy::TCppScope_t std__1 = Cppyy::GetScope("std::__1"); + +// One more, mostly for Mac, but again not sure whether this is not a general issue. Some +// operators are declared as friends only in classes, so then they're not found in the +// global namespace. That's why there's this little helper. + std::call_once(sOperatorTemplateFlag, InitOperatorTemplate); +// static Cppyy::TCppScope_t _pr_int = Cppyy::GetScope("_cpycppyy_internal"); + + PyCallable* pyfunc = 0; + if (gnucxx) { + Cppyy::TCppMethod_t func = FindAndAddOperator(lcname, rcname, op, gnucxx); + if (func) pyfunc = new CPPFunction(gnucxx, func); + } + + if (!pyfunc && std__1) { + Cppyy::TCppMethod_t func = FindAndAddOperator(lcname, rcname, op, std__1); + if (func) pyfunc = new CPPFunction(std__1, func); + } + + if (!pyfunc) { + std::string::size_type pos = lcname.substr(0, lcname.find('<')).rfind("::"); + if (pos != std::string::npos) { + Cppyy::TCppScope_t lcscope = Cppyy::GetScope(lcname.substr(0, pos).c_str()); + if (lcscope) { + Cppyy::TCppMethod_t func = FindAndAddOperator(lcname, rcname, op, lcscope); + if (func) pyfunc = new CPPFunction(lcscope, func); + } + } + } + + if (!pyfunc) { + Cppyy::TCppMethod_t func = FindAndAddOperator(lcname, rcname, op); + if (func) pyfunc = new CPPFunction(Cppyy::gGlobalScope, func); + } + +#if 0 + // TODO: figure out what this was for ... + if (!pyfunc && _pr_int.GetClass() && + lcname.find("iterator") != std::string::npos && + rcname.find("iterator") != std::string::npos) { + // TODO: gets called too often; make sure it's purely lazy calls only; also try to + // find a better notion for which classes (other than iterators) this is supposed to + // work; right now it fails for cases where None is passed + std::stringstream fname; + if (strncmp(op, "==", 2) == 0) { fname << "is_equal<"; } + else if (strncmp(op, "!=", 2) == 0) { fname << "is_not_equal<"; } + else { fname << "not_implemented<"; } + fname << lcname << ", " << rcname << ">"; + Cppyy::TCppMethod_t func = (Cppyy::TCppMethod_t)Cppyy_pr_int->GetMethodAny(fname.str().c_str()); + if (func) pyfunc = new CPpFunction(Cppyy::GetScope("_cpycppyy_internal"), func); + } + +// last chance: there could be a non-instantiated templated method + TClass* lc = TClass::GetClass(lcname.c_str()); + if (lc && strcmp(op, "==") != 0 && strcmp(op, "!=") != 0) { + std::string opname = "operator"; opname += op; + gInterpreter->LoadFunctionTemplates(lc); + gInterpreter->GetFunctionTemplate(lc->GetClassInfo(), opname.c_str()); + TFunctionTemplate* f = lc->GetFunctionTemplate(opname.c_str()); + Cppyy::TCppMethod_t func = + (Cppyy::TCppMethod_t)lc->GetMethodWithPrototype(opname.c_str(), rcname.c_str()); + if (func && f) pyfunc = new CPPMethod(Cppyy::GetScope(lcname), func); + } +#endif + + if (pyfunc) { // found a matching overload; add to class + bool ok = AddToClass(pyclass, label, pyfunc); + if (ok && alt) + return AddToClass(pyclass, alt, label); + } + + return false; +} + +//---------------------------------------------------------------------------- +std::string CPyCppyy::Utility::ConstructTemplateArgs(PyObject* pyname, PyObject* args, int argoff) +{ +// Helper to construct the "" part of a templated name (either +// for a class or method lookup + std::stringstream tmpl_name; + if (pyname) + tmpl_name << CPyCppyy_PyUnicode_AsString(pyname); + tmpl_name << '<'; + + Py_ssize_t nArgs = PyTuple_GET_SIZE(args); + for (int i = argoff; i < nArgs; ++i) { + // add type as string to name + PyObject* tn = PyTuple_GET_ITEM(args, i); + if (CPyCppyy_PyUnicode_Check(tn)) { + tmpl_name << CPyCppyy_PyUnicode_AsString(tn); + } else if (CPPScope_Check(tn)) { + tmpl_name << Cppyy::GetScopedFinalName(((CPPClass*)tn)->fCppType); + } else if (PyObject_HasAttr(tn, PyStrings::gName)) { + PyObject* tpName = PyObject_GetAttr(tn, PyStrings::gName); + + // special case for strings + if (strcmp(CPyCppyy_PyUnicode_AsString(tpName), "str") == 0) + tmpl_name << "std::string"; + else + tmpl_name << CPyCppyy_PyUnicode_AsString(tpName); + Py_DECREF(tpName); + } else if (PyInt_Check(tn) || PyLong_Check(tn) || PyFloat_Check(tn)) { + // last ditch attempt, works for things like int values; since this is a + // source of errors otherwise, it is limited to specific types and not + // generally used (str(obj) can print anything ...) + PyObject* pystr = PyObject_Str(tn); + tmpl_name << CPyCppyy_PyUnicode_AsString(pystr); + Py_DECREF(pystr); + } else { + PyErr_SetString(PyExc_SyntaxError, + "could not construct C++ name from provided template argument."); + return ""; + } + + // add a comma, as needed + if (i != nArgs-1) + tmpl_name << ", "; + } + +// close template name + tmpl_name << '>'; + + return tmpl_name.str(); +} + +//---------------------------------------------------------------------------- +bool CPyCppyy::Utility::InitProxy(PyObject* module, PyTypeObject* pytype, const char* name) +{ +// Initialize a proxy class for use by python, and add it to the module. + +// finalize proxy type + if (PyType_Ready(pytype) < 0) + return false; + +// add proxy type to the given module + Py_INCREF(pytype); // PyModule_AddObject steals reference + if (PyModule_AddObject(module, (char*)name, (PyObject*)pytype) < 0) { + Py_DECREF(pytype); + return false; + } + +// declare success + return true; +} + +//---------------------------------------------------------------------------- +int CPyCppyy::Utility::GetBuffer(PyObject* pyobject, char tc, int size, void*& buf, bool check) +{ +// Retrieve a linear buffer pointer from the given pyobject. + +// special case: don't handle character strings here (yes, they're buffers, but not quite) + if (PyBytes_Check(pyobject)) + return 0; + +// new-style buffer interface + if (PyObject_CheckBuffer(pyobject)) { + Py_buffer bufinfo; + memset(&bufinfo, 0, sizeof(Py_buffer)); + if (PyObject_GetBuffer(pyobject, &bufinfo, PyBUF_FORMAT) == 0) { + if (tc == '*' || strchr(bufinfo.format, tc)) { + buf = bufinfo.buf; + if (buf && bufinfo.ndim == 0) { + return 1; + } else if (buf && bufinfo.ndim == 1 && bufinfo.shape) { + int size1d = (int)bufinfo.shape[0]; + PyBuffer_Release(&bufinfo); + return size1d; + } + } else { + // have buf, but format mismatch: bail out now, otherwise the old + // code will return based on itemsize match + return 0; + } + } + PyErr_Clear(); + } + +// attempt to retrieve pointer through old-style buffer interface + PyBufferProcs* bufprocs = Py_TYPE(pyobject)->tp_as_buffer; + + PySequenceMethods* seqmeths = Py_TYPE(pyobject)->tp_as_sequence; + if (seqmeths != 0 && bufprocs != 0 +#if PY_VERSION_HEX < 0x03000000 + && bufprocs->bf_getwritebuffer != 0 + && (*(bufprocs->bf_getsegcount))(pyobject, 0) == 1 +#else + && bufprocs->bf_getbuffer != 0 +#endif + ) { + + // get the buffer +#if PY_VERSION_HEX < 0x03000000 + Py_ssize_t buflen = (*(bufprocs->bf_getwritebuffer))(pyobject, 0, &buf); +#else + Py_buffer bufinfo; + (*(bufprocs->bf_getbuffer))(pyobject, &bufinfo, PyBUF_WRITABLE); + buf = (char*)bufinfo.buf; + Py_ssize_t buflen = bufinfo.len; +#if PY_VERSION_HEX < 0x03010000 + PyBuffer_Release(pyobject, &bufinfo); +#else + PyBuffer_Release(&bufinfo); +#endif +#endif + + if (buf && check == true) { + // determine buffer compatibility (use "buf" as a status flag) + PyObject* pytc = PyObject_GetAttr(pyobject, PyStrings::gTypeCode); + if (pytc != 0) { // for array objects + if (CPyCppyy_PyUnicode_AsString(pytc)[0] != tc) + buf = 0; // no match + Py_DECREF(pytc); + } else if (seqmeths->sq_length && + (int)(buflen/(*(seqmeths->sq_length))(pyobject)) == size) { + // this is a gamble ... may or may not be ok, but that's for the user + PyErr_Clear(); + } else if (buflen == size) { + // also a gamble, but at least 1 item will fit into the buffer, so very likely ok ... + PyErr_Clear(); + } else { + buf = 0; // not compatible + + // clarify error message + PyObject* pytype = 0, *pyvalue = 0, *pytrace = 0; + PyErr_Fetch(&pytype, &pyvalue, &pytrace); + PyObject* pyvalue2 = CPyCppyy_PyUnicode_FromFormat( + (char*)"%s and given element size (%ld) do not match needed (%d)", + CPyCppyy_PyUnicode_AsString(pyvalue), + seqmeths->sq_length ? (Long_t)(buflen/(*(seqmeths->sq_length))(pyobject)) : (Long_t)buflen, + size); + Py_DECREF(pyvalue); + PyErr_Restore(pytype, pyvalue2, pytrace); + } + } + + return buflen; + } + + return 0; +} + +//---------------------------------------------------------------------------- +std::string CPyCppyy::Utility::MapOperatorName(const std::string& name, bool bTakesParams) +{ +// Map the given C++ operator name on the python equivalent. + if (8 < name.size() && name.substr(0, 8) == "operator") { + std::string op = name.substr(8, std::string::npos); + + // stripping ... + std::string::size_type start = 0, end = op.size(); + while (start < end && isspace(op[start])) ++start; + while (start < end && isspace(op[end-1])) --end; + // TODO: resolve name only if mapping failed + op = Cppyy::ResolveName(op.substr(start, end - start)); + + // map C++ operator to python equivalent, or made up name if no equivalent exists + TC2POperatorMapping_t::iterator pop = gC2POperatorMapping.find(op); + if (pop != gC2POperatorMapping.end()) { + return pop->second; + + } else if (op == "*") { + // dereference v.s. multiplication of two instances + return bTakesParams ? "__mul__" : "__deref__"; + + } else if (op == "+") { + // unary positive v.s. addition of two instances + return bTakesParams ? "__add__" : "__pos__"; + + } else if (op == "-") { + // unary negative v.s. subtraction of two instances + return bTakesParams ? "__sub__" : "__neg__"; + + } else if (op == "++") { + // prefix v.s. postfix increment + return bTakesParams ? "__postinc__" : "__preinc__"; + + } else if (op == "--") { + // prefix v.s. postfix decrement + return bTakesParams ? "__postdec__" : "__predec__"; + } + + } + +// might get here, as not all operator methods are handled (new, delete, etc.) + return name; +} + +//---------------------------------------------------------------------------- +const std::string CPyCppyy::Utility::Compound(const std::string& name) +{ +// TODO: consolidate with other string manipulations in Helpers.cxx +// Break down the compound of a fully qualified type name. + std::string cleanName = name; + RemoveConst(cleanName); + + std::string compound = ""; + for (int ipos = (int)cleanName.size()-1; 0 <= ipos; --ipos) { + char c = cleanName[ipos]; + if (isspace(c)) continue; + if (isalnum(c) || c == '_' || c == '>' || c == ')') break; + + compound = c + compound; + } + +// for arrays (TODO: deal with the actual size) + if (compound == "]") + return "[]"; + + return compound; +} + +//---------------------------------------------------------------------------- +Py_ssize_t CPyCppyy::Utility::ArraySize(const std::string& name) +{ +// TODO: consolidate with other string manipulations in Helpers.cxx +// Extract size from an array type, if available. + std::string cleanName = name; + RemoveConst(cleanName); + + if (cleanName[cleanName.size()-1] == ']') { + std::string::size_type idx = cleanName.rfind('['); + if (idx != std::string::npos) { + const std::string asize = cleanName.substr(idx+1, cleanName.size()-2); + return strtoul(asize.c_str(), nullptr, 0); + } + } + + return -1; +} + +//---------------------------------------------------------------------------- +std::string CPyCppyy::Utility::ClassName(PyObject* pyobj) +{ +// Retrieve the class name from the given Python instance. + if (CPPInstance_Check(pyobj)) + return Cppyy::GetScopedFinalName(((CPPInstance*)pyobj)->ObjectIsA()); + +// generic Python object ... + std::string clname = ""; + PyObject* pyclass = PyObject_GetAttr(pyobj, PyStrings::gClass); + if (pyclass) { + PyObject* pyname = PyObject_GetAttr(pyclass, PyStrings::gName); + if (pyname) { + clname = CPyCppyy_PyUnicode_AsString(pyname); + Py_DECREF(pyname); + } else { + PyErr_Clear(); + } + Py_DECREF(pyclass); + } else { + PyErr_Clear(); + } + + return clname; +} + + +//---------------------------------------------------------------------------- +PyObject* CPyCppyy::Utility::PyErr_Occurred_WithGIL() +{ +// Re-acquire the GIL before calling PyErr_Occurred() in case it has been +// released; note that the p2.2 code assumes that there are no callbacks in +// C++ to python (or at least none returning errors). +#if PY_VERSION_HEX >= 0x02030000 + PyGILState_STATE gstate = PyGILState_Ensure(); + PyObject* e = PyErr_Occurred(); + PyGILState_Release(gstate); +#else + if (PyThreadState_GET()) + return PyErr_Occurred(); + PyObject* e = 0; +#endif + + return e; +} + + +//---------------------------------------------------------------------------- +size_t CPyCppyy::Utility::FetchError(std::vector& errors) +{ +// Fetch the current python error, if any, and store it for future use. + if (PyErr_Occurred()) { + PyError_t e; + PyErr_Fetch(&e.fType, &e.fValue, &e.fTrace); + errors.push_back(e); + } + return errors.size(); +} + +//---------------------------------------------------------------------------- +void CPyCppyy::Utility::SetDetailedException(std::vector& errors, PyObject* topmsg, PyObject* defexc) +{ +// Use the collected exceptions to build up a detailed error log. + if (errors.empty()) { + // should not happen ... + Py_DECREF(topmsg); + return; + } + +// add the details to the topmsg + PyObject* separator = CPyCppyy_PyUnicode_FromString("\n "); + + PyObject* exc_type = nullptr; + for (auto& e : errors) { + if (!exc_type) exc_type = e.fType; + else if (exc_type != e.fType) exc_type = defexc; + CPyCppyy_PyUnicode_Append(&topmsg, separator); + CPyCppyy_PyUnicode_Append(&topmsg, e.fValue); + } + + Py_DECREF(separator); + std::for_each(errors.begin(), errors.end(), PyError_t::Clear); + +// set the python exception + PyErr_SetObject(exc_type, topmsg); + Py_DECREF(topmsg); +} diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.h b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.h new file mode 100644 index 0000000000000..54a34c895ea07 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Utility.h @@ -0,0 +1,83 @@ +#ifndef CPYCPPYY_UTILITY_H +#define CPYCPPYY_UTILITY_H + +// Standard +#include +#include +#include + + +namespace CPyCppyy { + +class PyCallable; + +extern dict_lookup_func gDictLookupOrg; +extern bool gDictLookupActive; + +// additional converter functions +unsigned long PyLongOrInt_AsULong(PyObject* pyobject); +ULong64_t PyLongOrInt_AsULong64(PyObject* pyobject); + +namespace Utility { + +// convenience functions for adding methods to classes +bool AddToClass(PyObject* pyclass, const char* label, PyCFunction cfunc, + int flags = METH_VARARGS); +bool AddToClass(PyObject* pyclass, const char* label, const char* func); +bool AddToClass(PyObject* pyclass, const char* label, PyCallable* pyfunc); + +bool AddUsingToClass(PyObject* pyclass, const char* method); + +// helpers for dynamically constructing binary operators +bool AddBinaryOperator(PyObject* left, PyObject* right, + const char* op, const char* label, const char* alt_label = nullptr); +bool AddBinaryOperator(PyObject* pyclass, + const char* op, const char* label, const char* alt_label = nullptr); +bool AddBinaryOperator(PyObject* pyclass, const std::string& lcname, const std::string& rcname, + const char* op, const char* label, const char* alt_label = nullptr); + +// helper for template classes and methods +std::string ConstructTemplateArgs(PyObject* pyname, PyObject* args, int argoff); + +// initialize proxy type objects +bool InitProxy(PyObject* module, PyTypeObject* pytype, const char* name); + +// retrieve the memory buffer from pyobject, return buflength, tc (optional) is python +// array.array type code, size is type size, buf will point to buffer, and if check is +// true, some heuristics will be applied to check buffer compatibility with the type +int GetBuffer(PyObject* pyobject, char tc, int size, void*& buf, bool check = true); + +// data/operator mappings +std::string MapOperatorName(const std::string& name, bool bTakesParames); + +// meta information +const std::string Compound(const std::string& name); +Py_ssize_t ArraySize(const std::string& name); +std::string ClassName(PyObject* pyobj); + +// for threading: save call to PyErr_Occurred() +PyObject* PyErr_Occurred_WithGIL(); + +// helpers for collecting/maintaining python exception data +struct PyError_t { + PyError_t() { fType = fValue = fTrace = 0; } + + static void Clear(PyError_t& e) + { + // Remove exception information. + Py_XDECREF(e.fType); Py_XDECREF(e.fValue); Py_XDECREF(e.fTrace); + e.fType = e.fValue = e.fTrace = 0; + } + + PyObject *fType, *fValue, *fTrace; +}; + +size_t FetchError(std::vector&); +void SetDetailedException( + std::vector& errors /* clears */, PyObject* topmsg /* steals ref */, PyObject* defexc); + +} // namespace Utility + +} // namespace CPyCppyy + +#endif // !CPYCPPYY_UTILITY_H From 4884a54e5eefc2941f8dfb2f5b725bd304220865 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 19:30:00 +0000 Subject: [PATCH 254/344] Import cppyy into ROOT --- .../cppyy/cppyy/.gitignore | 35 + .../cppyy/cppyy/LICENSE.txt | 52 ++ .../cppyy/cppyy/MANIFEST.in | 6 + .../cppyy/cppyy/README.rst | 15 + .../cppyy/cppyy/bench/Makefile | 29 + .../cppyy/cppyy/bench/bench_functioncalls.py | 39 + .../cppyy/cppyy/bench/functioncalls.cxx | 16 + .../cppyy/cppyy/bench/functioncalls.h | 10 + .../cppyy/cppyy/bench/functioncalls.xml | 6 + .../cppyy/cppyy/bench/support.py | 14 + .../cppyy/cppyy/doc/.gitignore | 1 + .../cppyy/cppyy/doc/Makefile | 192 +++++ .../cppyy/cppyy/doc/make.bat | 263 ++++++ .../cppyy/doc/source/_static/css/custom.css | 7 + .../cppyy/cppyy/doc/source/basic_types.rst | 105 +++ .../cppyy/doc/source/bindings_generation.rst | 306 +++++++ .../cppyy/cppyy/doc/source/classes.rst | 213 +++++ .../cppyy/cppyy/doc/source/conf.py | 358 ++++++++ .../doc/source/cppyy_features_header.rst | 104 +++ .../cppyy/cppyy/doc/source/dictionaries.rst | 97 +++ .../cppyy/cppyy/doc/source/features.rst | 72 ++ .../cppyy/cppyy/doc/source/functions.rst | 81 ++ .../cppyy/cppyy/doc/source/index.rst | 141 ++++ .../cppyy/cppyy/doc/source/installation.rst | 64 ++ .../cppyy/cppyy/doc/source/packages.rst | 73 ++ .../cppyy/cppyy/doc/source/python.rst | 74 ++ .../cppyy/cppyy/doc/source/pythonizations.rst | 50 ++ .../cppyy/cppyy/doc/source/repositories.rst | 16 + .../cppyy/doc/source/type_conversions.rst | 90 +++ .../cppyy/doc/tutorial/CppyyTutorial.ipynb | 496 ++++++++++++ .../tutorial/GSLPythonizationTutorial.ipynb | 202 +++++ .../cppyy/cppyy/etc/valgrind-cppyy-cling.supp | 575 +++++++++++++ .../cppyy/cppyy/python/cppyy/__init__.py | 150 ++++ .../cppyy/python/cppyy/_cpython_cppyy.py | 123 +++ .../cppyy/cppyy/python/cppyy/_pypy_cppyy.py | 51 ++ .../cppyy/python/cppyy/_pythonization.py | 341 ++++++++ .../cppyy/cppyy/python/cppyy/_stdcpp_fix.py | 13 + .../cppyy/python/cppyy_compat/__init__.py | 69 ++ .../pyroot_experimental/cppyy/cppyy/setup.cfg | 5 + .../pyroot_experimental/cppyy/cppyy/setup.py | 68 ++ .../cppyy/cppyy/test/Makefile | 35 + .../cppyy/cppyy/test/__init__.py | 0 .../cppyy/cppyy/test/advancedcpp.cxx | 127 +++ .../cppyy/cppyy/test/advancedcpp.h | 432 ++++++++++ .../cppyy/cppyy/test/advancedcpp.xml | 65 ++ .../cppyy/cppyy/test/advancedcpp2.cxx | 13 + .../cppyy/cppyy/test/advancedcpp2.h | 36 + .../cppyy/cppyy/test/advancedcpp2.xml | 11 + .../cppyy/cppyy/test/conftest.py | 1 + .../cppyy/cppyy/test/cpp11features.cxx | 18 + .../cppyy/cppyy/test/cpp11features.h | 52 ++ .../cppyy/cppyy/test/cpp11features.xml | 7 + .../cppyy/cppyy/test/datatypes.cxx | 356 ++++++++ .../cppyy/cppyy/test/datatypes.h | 387 +++++++++ .../cppyy/cppyy/test/datatypes.xml | 23 + .../cppyy/cppyy/test/example01.cxx | 214 +++++ .../cppyy/cppyy/test/example01.h | 115 +++ .../cppyy/cppyy/test/example01.xml | 19 + .../cppyy/cppyy/test/fragile.cxx | 39 + .../cppyy/cppyy/test/fragile.h | 124 +++ .../cppyy/cppyy/test/fragile.xml | 32 + .../cppyy/cppyy/test/operators.cxx | 16 + .../cppyy/cppyy/test/operators.h | 115 +++ .../cppyy/cppyy/test/operators.xml | 7 + .../cppyy/cppyy/test/overloads.cxx | 56 ++ .../cppyy/cppyy/test/overloads.h | 108 +++ .../cppyy/cppyy/test/overloads.xml | 19 + .../cppyy/cppyy/test/pythonizables.cxx | 52 ++ .../cppyy/cppyy/test/pythonizables.h | 106 +++ .../cppyy/cppyy/test/pythonizables.xml | 7 + .../cppyy/cppyy/test/std_streams.cxx | 3 + .../cppyy/cppyy/test/std_streams.h | 13 + .../cppyy/cppyy/test/std_streams.xml | 12 + .../cppyy/cppyy/test/stltypes.cxx | 43 + .../cppyy/cppyy/test/stltypes.h | 78 ++ .../cppyy/cppyy/test/stltypes.xml | 11 + .../cppyy/cppyy/test/support.py | 21 + .../cppyy/cppyy/test/templates.cxx | 12 + .../cppyy/cppyy/test/templates.h | 145 ++++ .../cppyy/cppyy/test/templates.xml | 19 + .../cppyy/cppyy/test/test_aclassloader.py | 24 + .../cppyy/cppyy/test/test_advancedcpp.py | 722 +++++++++++++++++ .../cppyy/cppyy/test/test_boost_any.py | 44 + .../cppyy/cppyy/test/test_cpp11features.py | 137 ++++ .../cppyy/cppyy/test/test_datatypes.py | 765 ++++++++++++++++++ .../cppyy/cppyy/test/test_doc_features.py | 280 +++++++ .../cppyy/cppyy/test/test_fragile.py | 325 ++++++++ .../cppyy/cppyy/test/test_operators.py | 173 ++++ .../cppyy/cppyy/test/test_overloads.py | 138 ++++ .../cppyy/cppyy/test/test_pythonify.py | 414 ++++++++++ .../cppyy/cppyy/test/test_pythonization.py | 196 +++++ .../cppyy/cppyy/test/test_regression.py | 93 +++ .../cppyy/cppyy/test/test_stltypes.py | 547 +++++++++++++ .../cppyy/cppyy/test/test_streams.py | 33 + .../cppyy/cppyy/test/test_templates.py | 172 ++++ 95 files changed, 11634 insertions(+) create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/.gitignore create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/LICENSE.txt create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/MANIFEST.in create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/README.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/bench/Makefile create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/bench/bench_functioncalls.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/bench/support.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/.gitignore create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/Makefile create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/make.bat create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/_static/css/custom.css create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/basic_types.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/bindings_generation.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/classes.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/conf.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/cppyy_features_header.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/dictionaries.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/features.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/functions.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/index.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/installation.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/packages.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/python.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/pythonizations.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/repositories.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/source/type_conversions.rst create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/CppyyTutorial.ipynb create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/GSLPythonizationTutorial.ipynb create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/etc/valgrind-cppyy-cling.supp create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/__init__.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_cpython_cppyy.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pypy_cppyy.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pythonization.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_stdcpp_fix.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/python/cppyy_compat/__init__.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/setup.cfg create mode 100755 bindings/pyroot_experimental/cppyy/cppyy/setup.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/Makefile create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/__init__.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/conftest.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/example01.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/example01.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/example01.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/fragile.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/fragile.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/fragile.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/operators.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/operators.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/operators.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/overloads.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/overloads.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/overloads.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/support.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/templates.cxx create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/templates.h create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/templates.xml create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_aclassloader.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_advancedcpp.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_boost_any.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_cpp11features.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_datatypes.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_doc_features.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_fragile.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_operators.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_overloads.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonify.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonization.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_regression.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_stltypes.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_streams.py create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/test/test_templates.py diff --git a/bindings/pyroot_experimental/cppyy/cppyy/.gitignore b/bindings/pyroot_experimental/cppyy/cppyy/.gitignore new file mode 100644 index 0000000000000..1423e4842d179 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/.gitignore @@ -0,0 +1,35 @@ +# python compiled files +*.pyc +*.pyo + +# dictionary products +*.so +*.pcm +*.rootmap +*_rflx.cpp + +.cache +.pytest_cache + +# distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# notebook products +.ipynb_checkpoints +doc/tutorial/gsl_selection.xml diff --git a/bindings/pyroot_experimental/cppyy/cppyy/LICENSE.txt b/bindings/pyroot_experimental/cppyy/cppyy/LICENSE.txt new file mode 100644 index 0000000000000..d0ed7576ad457 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/LICENSE.txt @@ -0,0 +1,52 @@ +Copyright (c) 2003, The Regents of the University of California, +through Lawrence Berkeley National Laboratory (subject to receipt of +any required approvals from the U.S. Dept. of Energy). All rights +reserved. Redistribution and use in source and binary forms, with or +without modification, are permitted provided that the following +conditions are met: + +(1) Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +(2) Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +(3) Neither the name of the University of California, Lawrence Berkeley +National Laboratory, U.S. Dept. of Energy nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE +GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. + +You are under no obligation whatsoever to provide any bug fixes, +patches, or upgrades to the features, functionality or performance of +the source code ("Enhancements") to anyone; however, if you choose to +make your Enhancements available either publicly, or directly to +Lawrence Berkeley National Laboratory, without imposing a separate +written license agreement for such Enhancements, then you hereby grant +the following license: a non-exclusive, royalty-free perpetual license +to install, use, modify, prepare derivative works, incorporate into +other computer software, distribute, and sublicense such Enhancements +or derivative works thereof, in binary and source code form. + + + +Additional copyright holders +---------------------------- + +Except when otherwise stated (look for LICENSE files or information in +source files), this package contains files copyrighted by one or more of +the following people and organizations: + + Aditi Dutta + Shaheed Haque + Toby StClere-Smithe diff --git a/bindings/pyroot_experimental/cppyy/cppyy/MANIFEST.in b/bindings/pyroot_experimental/cppyy/cppyy/MANIFEST.in new file mode 100644 index 0000000000000..face07acf0693 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/MANIFEST.in @@ -0,0 +1,6 @@ +# Include the license file +include LICENSE.txt + +# Do not add the test or doc directories +prune test +prune doc diff --git a/bindings/pyroot_experimental/cppyy/cppyy/README.rst b/bindings/pyroot_experimental/cppyy/cppyy/README.rst new file mode 100644 index 0000000000000..f3aca84184951 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/README.rst @@ -0,0 +1,15 @@ +.. -*- mode: rst -*- + +cppyy: Python-C++ bindings interface based on Cling/LLVM +======================================================== + +cppyy provides dynamic Python-C++ bindings by leveraging the Cling C++ +interpreter and LLVM. +It supports both PyPy and CPython. + +Details and performance are described in +`this paper `_. + +Full documentation: `cppyy.readthedocs.io `_. + +Notebook-based tutorial: `Cppyy Tutorial `_. diff --git a/bindings/pyroot_experimental/cppyy/cppyy/bench/Makefile b/bindings/pyroot_experimental/cppyy/cppyy/bench/Makefile new file mode 100644 index 0000000000000..d2b3022931190 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/bench/Makefile @@ -0,0 +1,29 @@ +dicts = functioncallsDict.so +all : $(dicts) + +ifeq ($(ROOTSYS),) + clingconfig := cling-config +else + clingconfig := root-config +endif + +cppflags=$(shell $(clingconfig) --cflags) -O3 -fPIC + +PLATFORM := $(shell uname -s) +ifeq ($(PLATFORM),Darwin) + cppflags+=-dynamiclib -single_module -arch x86_64 -undefined dynamic_lookup +endif + +%Dict.so: %_rflx.cpp %.cxx + $(CXX) $(cppflags) -shared -o $@ $^ + +%_rflx.cpp: %.h %.xml + genreflex $< --selection=$*.xml --rootmap=$*Dict.rootmap --rootmap-lib=$*Dict.so + +.PHONY: test clean + +test: + pytest test_*.py + +clean: + -rm -f $(dicts) $(subst .so,.rootmap,$(dicts)) $(subst Dict.so,_rflx_rdict.pcm,$(dicts)) $(subst Dict.so,_rflx.cpp,$(dicts)) $(wildcard *.pyc) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/bench/bench_functioncalls.py b/bindings/pyroot_experimental/cppyy/cppyy/bench/bench_functioncalls.py new file mode 100644 index 0000000000000..1aa1d4a38027b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/bench/bench_functioncalls.py @@ -0,0 +1,39 @@ +import py, pytest, os, sys +from support import setup_make + + +setup_make("functioncallsDict.so") + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("functioncallsDict.so")) + +import cppyy +cppyy.load_reflection_info(test_dct) + + +#- group: empty -------------------------------------------------------------- +def py_empty_call(): + pass + +group = 'empty' +@pytest.mark.benchmark(group=group, warmup=True) +def test_py_empty_call(benchmark): + benchmark(py_empty_call) + +@pytest.mark.benchmark(group=group, warmup=True) +def test_empty_call(benchmark): + benchmark(cppyy.gbl.empty_call) + + +#- group: builtin-args ------------------------------------------------------- +def py_take_a_value(val): + pass + +group = 'builtin-args' +@pytest.mark.benchmark(group=group, warmup=True) +def test_py_take_a_value(benchmark): + benchmark(py_take_a_value, 1) + +@pytest.mark.benchmark(group=group, warmup=True) +def test_take_an_int(benchmark): + benchmark(cppyy.gbl.take_an_int, 1) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.cxx b/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.cxx new file mode 100644 index 0000000000000..d49a83df5760b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.cxx @@ -0,0 +1,16 @@ +#include "functioncalls.h" + + +//- group: empty ------------------------------------------------------------- +void empty_call() +{ +/* empty, to measure pure call overhead */ +} + + +//- group: builtin-args ------------------------------------------------------ +void take_an_int(int /* unused */) +{ +/* empty, to measure pure call overhead */ +} + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.h b/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.h new file mode 100644 index 0000000000000..b7b46fd785035 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.h @@ -0,0 +1,10 @@ +#ifndef CPPYY_FUNCTIONCALLS_H +#define CPPYY_FUNCTIONCALLS_H + +//- group: empty ------------------------------------------------------------- +void empty_call(); + +//- group: builtin-args ------------------------------------------------------ +void take_an_int(int); + +#endif // !CPPYY_FUNCTIONCALLS_H diff --git a/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.xml b/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.xml new file mode 100644 index 0000000000000..62726289cbf62 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/bench/functioncalls.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/bench/support.py b/bindings/pyroot_experimental/cppyy/cppyy/bench/support.py new file mode 100644 index 0000000000000..a2eeeaf289773 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/bench/support.py @@ -0,0 +1,14 @@ +from __future__ import print_function +import py, sys, subprocess + +currpath = py.path.local(__file__).dirpath() + + +def setup_make(targetname): + if sys.platform == 'win32': + raise OSError("win32 not supported yet") + popen = subprocess.Popen(["make", targetname], cwd=str(currpath), + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + stdout, _ = popen.communicate() + if popen.returncode: + raise OSError("'make' failed:\n%s" % (stdout,)) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/.gitignore b/bindings/pyroot_experimental/cppyy/cppyy/doc/.gitignore new file mode 100644 index 0000000000000..378eac25d3117 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/.gitignore @@ -0,0 +1 @@ +build diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/Makefile b/bindings/pyroot_experimental/cppyy/cppyy/doc/Makefile new file mode 100644 index 0000000000000..cbe159e5ce7fe --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/Makefile @@ -0,0 +1,192 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " applehelp to make an Apple Help Book" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + @echo " coverage to run coverage check of the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/cppyy.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/cppyy.qhc" + +applehelp: + $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp + @echo + @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." + @echo "N.B. You won't be able to view it unless you put it in" \ + "~/Library/Documentation/Help or install it in your application" \ + "bundle." + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/cppyy" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/cppyy" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +coverage: + $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage + @echo "Testing of coverage in the sources finished, look at the " \ + "results in $(BUILDDIR)/coverage/python.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/make.bat b/bindings/pyroot_experimental/cppyy/cppyy/doc/make.bat new file mode 100644 index 0000000000000..a89c8bd30100c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/make.bat @@ -0,0 +1,263 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set BUILDDIR=build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source +set I18NSPHINXOPTS=%SPHINXOPTS% source +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^` where ^ is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. xml to make Docutils-native XML files + echo. pseudoxml to make pseudoxml-XML files for display purposes + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + echo. coverage to run coverage check of the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + + +REM Check if sphinx-build is available and fallback to Python version if any +%SPHINXBUILD% 2> nul +if errorlevel 9009 goto sphinx_python +goto sphinx_ok + +:sphinx_python + +set SPHINXBUILD=python -m sphinx.__init__ +%SPHINXBUILD% 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +:sphinx_ok + + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\cppyy.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\cppyy.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "latexpdfja" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + cd %BUILDDIR%/latex + make all-pdf-ja + cd %~dp0 + echo. + echo.Build finished; the PDF files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +if "%1" == "coverage" ( + %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage + if errorlevel 1 exit /b 1 + echo. + echo.Testing of coverage in the sources finished, look at the ^ +results in %BUILDDIR%/coverage/python.txt. + goto end +) + +if "%1" == "xml" ( + %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The XML files are in %BUILDDIR%/xml. + goto end +) + +if "%1" == "pseudoxml" ( + %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. + goto end +) + +:end diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/_static/css/custom.css b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/_static/css/custom.css new file mode 100644 index 0000000000000..5402ff8e7bd6d --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/_static/css/custom.css @@ -0,0 +1,7 @@ +.rst-content .toconly { + display: none; +} + +nav .toconly { + display: unset; +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/basic_types.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/basic_types.rst new file mode 100644 index 0000000000000..19dd5d244e2fb --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/basic_types.rst @@ -0,0 +1,105 @@ +.. _basic_types: + +.. role:: toconly + :class: toconly + + +Basic Types +=========== + +C++ has a far richer set of builtin types than Python. +Most Python code can remain relatively agnostic to that, and ``cppyy`` +provides automatic conversions as appropriate. +On the other hand, Python builtin types such as lists and maps are far +richer than any builtin types in C++. +These are mapped to their Standard Template Library equivalents instead. + +The C++ code used for the examples below can be found +:doc:`here `, and it is assumed that that code is +loaded at the start of any session. +Download it, save it under the name ``features.h``, and load it: + + .. code-block:: python + + >>> import cppyy + >>> cppyy.include('features.h') + >>> + + +:toconly:`Basics` +""""""""""""""""" + +Most builtin data types map onto the expected equivalent Python types, with +the caveats that there may be size differences, different precision or +rounding. +For example, a C++ ``float`` is returned as a Python ``float``, which is in +fact a C++ ``double``. +If sizes allow, conversions are automatic. +For example, a C++ ``unsigned int`` becomes a Python ``long``, but +unsigned-ness is still honored: + + .. code-block:: python + + >>> type(cppyy.gbl.gUint) + + >>> cppyy.gbl.gUint = -1 + Traceback (most recent call last): + File "", line 1, in + ValueError: cannot convert negative integer to unsigned + >>> + + +:toconly:`Arrays` +""""""""""""""""" + +Builtin arrays are supported by through arrays from module ``array`` (or any +other builtin-type array that implements the Python buffer interface). +Out-of-bounds checking is limited to those cases where the size is known at +compile time. +Example: + + .. code-block:: python + + >>> from cppyy.gbl import Concrete + >>> from array import array + >>> c = Concrete() + >>> c.array_method(array('d', [1., 2., 3., 4.]), 4) + 1 2 3 4 + >>> c.m_data[4] # static size is 4, so out of bounds + Traceback (most recent call last): + File "", line 1, in + IndexError: buffer index out of range + >>> + + +:toconly:`Pointers` +""""""""""""""""""" + +When the C++ code takes a pointer or reference type to a specific builtin +type (such as an ``unsigned int`` for example), then types need to match +exactly. +``cppyy`` supports the types provided by the standard modules ``ctypes`` and +``array`` for those cases. + +For objects, a pointer to an object and an object are represented the same, +with the necessary (de)referencing applied automatically. +Pointer variables are also bound by reference, so that updates on either the +C++ or Python side are reflected on the other side as well. + + +:toconly:`Enums` +"""""""""""""""" + +Both named and anonymous enums are supported. +The type of an enum is implementation dependent and may even be different for +different enums on the same compiler. +Typically, however, the types are ``int`` or ``unsigned int``, which +translates to Python's ``int`` or ``long`` on Python2 or class ``int`` on +Python3: + + .. code-block:: python + + >>> from cppyy.gbl import kApple, kBanana, kCitrus + >>> cppyy.gbl.kApple + 78L + >>> diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/bindings_generation.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/bindings_generation.rst new file mode 100644 index 0000000000000..11361740c6997 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/bindings_generation.rst @@ -0,0 +1,306 @@ +.. _bindings_generation: + +=================== +Bindings Generation +=================== + +Binding developers have two levels of access to cling via ``cppyy``: + +* A simple command line interface. +* Automated generation of an end-user bindings package from a CMake-based + project build. + +Both are installed as part of the ``cppyy-backend`` component since they are +not needed by users of the bindings. + +Command Line Interface +====================== + +rootcling +--------- + +This provides basic access to ``cling``:: + + $ rootcling + Usage: rootcling [-v][-v0-4] [-f] [out.cxx] [opts] file1.h[+][-][!] file2.h[+][-][!] ...[LinkDef.h] + For more extensive help type: /usr/local/lib/python2.7/dist-packages/cppyy_backend/bin/rootcling -h + +The basic mode of operation is to process the header files ('fileN.h') +according to certain `#pragmas in the LinkDef.h `_ +file in order to generate bindings accessible in Python under the 'cppyy.gbl' +namespace. + +The output is + +* A .cpp file (which, when compiled to a shared library) +* A .rootmap file +* A .pcm file + +which are used at runtime by ``cling`` to expose the semantics expressed by the +header files to Python. Nominally, the compiled .cpp provides low-level Python +access to the library API defined by the header files, while ``cling`` uses the +other files to provide the rich features it supports. Thus, the shipping form +of the bindings contains: + +* A shared library (which must be compiled from the .cpp) +* A .rootmap file +* A .pcm file + +cling-config +------------ + +This is a small utility whose main purpose is to provide access to the +as-installed configuration of other components. For-example:: + + $ cling-config --help + Usage: cling-config [--cflags] [--cppflags] [--cmake] + $ cling-config --cmake + /usr/local/lib/python2.7/dist-packages/cppyy_backend/cmake + +cppyy-generator +--------------- + +This is a clang-based utility program which takes a set of C++ header files +and generate a JSON output file describing the objects found in them. This +output is intended to support more convenient access to a set of +cppyy-supported bindings:: + + $ cppyy-generator --help + usage: cppyy-generator [-h] [-v] [--flags FLAGS] [--libclang LIBCLANG] + output sources [sources ...] + ... + +See the ``Cmake interface`` for details. + +CMake interface +=============== + +The bindings generated by rootcling, are 'raw' in the sense that: + +* The .cpp file be compiled. The required compilation steps are + platform-dependent. +* The bindings are not packaged for distribution. Typically, users expect + to have a pip-compatible package. +* The binding are in the 'cppyy.gbl' namespace. This is an inconvenience at + best for users who might expect C++ code from KF5::Config to appear in + Python via "import KF5.Config". +* The bindings are loaded lazily, which limits the discoverability of the + content of the bindings. +* ``cppyy`` supports customisation of the bindings via 'Pythonization' but + there is no automated way to load them. + +These issues are addressed by the CMake support. This is a blend of Python +packaging and CMake where CMake provides: + +* Platform-independent scripting of the creation of a Python 'wheel' package + for the bindings. +* An facility for CMake-based projects to automate the entire bindings + generation process, including basic automated tests. + +Python packaging of bindings +---------------------------- + +Modern Python packaging usage is based on the 'wheel'. This is places the onus +on the creation of binary artefacts in the package on the distributor. In this +case, this includes the platform-dependent steps necessary to compile the .cpp +file. + +The generated package also takes advantage of the __init__.py load-time +mechanism to enhance the bindings: + +* The bindings are rehosted in a "native" namespace so that C++ code from + KF5::Config appears in Python via "import KF5.Config". +* (TBD) Load Pythonizations. + +Both of these need/can use the output of the cppyy-generator (included in the +package) as well as other runtime support included in ``cppyy``. + +CMake usage +----------- + +The CMake usage is via two modules: + +* FindLibClang.cmake provides some bootstrap support needed to locate clang. + This is provided mostly as a temporary measure; hopefully upstream support + will allow this to be eliminated in due course. +* FindCppyy.cmake provides the interface described further here. + +Details of the usage of these modules is within the modules themselves, but +here is a summary of the usage. ``FindLibClang.cmake`` sets the following +variables: + +:: + + LibClang_FOUND - True if libclang is found. + LibClang_LIBRARY - Clang library to link against. + LibClang_VERSION - Version number as a string (e.g. "3.9"). + LibClang_PYTHON_EXECUTABLE - Compatible python version. + + +``FindCppyy.cmake`` sets the following variables: + +:: + + Cppyy_FOUND - set to true if Cppyy is found + Cppyy_DIR - the directory where Cppyy is installed + Cppyy_EXECUTABLE - the path to the Cppyy executable + Cppyy_INCLUDE_DIRS - Where to find the ROOT header files. + Cppyy_VERSION - the version number of the Cppyy backend. + +and also defines the following functions:: + + cppyy_add_bindings - Generate a set of bindings from a set of header files. + cppyy_find_pips - Return a list of available pip programs. + +cppyy_add_bindings +^^^^^^^^^^^^^^^^^^ + +Generate a set of bindings from a set of header files. Somewhat like CMake's +add_library(), the output is a compiler target. In addition ancilliary files +are also generated to allow a complete set of bindings to be compiled, +packaged and installed:: + + cppyy_add_bindings( + pkg + pkg_version + author + author_email + [URL url] + [LICENSE license] + [LANGUAGE_STANDARD std] + [LINKDEFS linkdef...] + [IMPORTS pcm...] + [GENERATE_OPTIONS option...] + [COMPILE_OPTIONS option...] + [INCLUDE_DIRS dir...] + [LINK_LIBRARIES library...] + [H_DIRS H_DIRSectory] + H_FILES h_file...) + +The bindings are based on https://cppyy.readthedocs.io/en/latest/, and can be +used as per the documentation provided via the cppyy.cgl namespace. First add +the directory of the .rootmap file to the LD_LIBRARY_PATH environment +variable, then "import cppyy; from cppyy.gbl import ". + +Alternatively, use "import ". This convenience wrapper supports +"discovery" of the available C++ entities using, for example Python 3's command +line completion support. + +The bindings are complete with a setup.py, supporting Wheel-based +packaging, and a test.py supporting pytest/nosetest sanity test of the bindings. + +The bindings are generated/built/packaged using 3 environments: + +- One compatible with the header files being bound. This is used to + generate the generic C++ binding code (and some ancilliary files) using + a modified C++ compiler. The needed options must be compatible with the + normal build environment of the header files. +- One to compile the generated, generic C++ binding code using a standard + C++ compiler. The resulting library code is "universal" in that it is + compatible with both Python2 and Python3. +- One to package the library and ancilliary files into standard Python2/3 + wheel format. The packaging is done using native Python tooling. + ++----------------------+---------------------------------------------------------------------------------------------+ +|Arguments and options | Description | ++======================+=============================================================================================+ +|pkg | The name of the package to generate. This can be either | +| | of the form "simplename" (e.g. "Akonadi"), or of the | +| | form "namespace.simplename" (e.g. "KF5.Akonadi"). | ++----------------------+---------------------------------------------------------------------------------------------+ +|pkg_version | The version of the package. | ++----------------------+---------------------------------------------------------------------------------------------+ +|author | The name of the library author. | ++----------------------+---------------------------------------------------------------------------------------------+ +|author_email | The email address of the library author. | ++----------------------+---------------------------------------------------------------------------------------------+ +|URL url | The home page for the library. Default is | +| | "https://pypi.python.org/pypi/". | ++----------------------+---------------------------------------------------------------------------------------------+ +|LICENSE license | The license, default is "LGPL 2.0". | ++----------------------+---------------------------------------------------------------------------------------------+ +|LANGUAGE_STANDARD std | The version of C++ in use, "14" by default. | ++----------------------+---------------------------------------------------------------------------------------------+ +|IMPORTS pcm | Files which contain previously-generated bindings | +| | which pkg depends on. | ++----------------------+---------------------------------------------------------------------------------------------+ +|GENERATE_OPTIONS optio| Options which are to be passed into the rootcling | +| | command. For example, bindings which depend on Qt | +| | may need "-D__PIC__;-Wno-macro-redefined" as per | +| | https://sft.its.cern.ch/jira/browse/ROOT-8719. | ++----------------------+---------------------------------------------------------------------------------------------+ +|LINKDEFS def | Files or lines which contain extra #pragma content | +| | for the linkdef.h file used by rootcling. See | +| | https://root.cern.ch/root/html/guides/users-guide/AddingaClass.html#the-linkdef.h-file. | +| | | +| | In lines, literal semi-colons must be escaped: "\;". | ++----------------------+---------------------------------------------------------------------------------------------+ +|EXTRA_CODES code | Files which contain extra code needed by the bindings. | +| | Customisation is by routines named "c13n_"; | +| | each such routine is passed the module for : | +| | | +| | :: code-block python | +| | | +| | def c13n_doit(pkg_module): | +| | print(pkg_module.__dict__) | +| | | +| | The files and individual routines within files are | +| | processed in alphabetical order. | ++----------------------+---------------------------------------------------------------------------------------------+ +|EXTRA_HEADERS hdr | Files which contain extra headers needed by the bindings. | ++----------------------+---------------------------------------------------------------------------------------------+ +|EXTRA_PYTHONS py | Files which contain extra Python code needed by the bindings. | ++----------------------+---------------------------------------------------------------------------------------------+ +|COMPILE_OPTIONS option| Options which are to be passed into the compile/link | +| | command. | ++----------------------+---------------------------------------------------------------------------------------------+ +|INCLUDE_DIRS dir | Include directories. | ++----------------------+---------------------------------------------------------------------------------------------+ +|LINK_LIBRARIES library| Libraries to link against. | ++----------------------+---------------------------------------------------------------------------------------------+ +|H_DIRS directory | Base directories for H_FILES. | ++----------------------+---------------------------------------------------------------------------------------------+ +|H_FILES h_file | Header files for which to generate bindings in pkg. | +| | Absolute filenames, or filenames relative to H_DIRS. All | +| | definitions found directly in these files will contribute | +| | to the bindings. (NOTE: This means that if "forwarding | +| | headers" are present, the real "legacy" headers must be | +| | specified as H_FILES). | +| | All header files which contribute to a given C++ namespace | +| | should be grouped into a single pkg to ensure a 1-to-1 | +| | mapping with the implementing Python class. | ++----------------------+---------------------------------------------------------------------------------------------+ + +Returns via PARENT_SCOPE variables:: + + target The CMake target used to build. + setup_py The setup.py script used to build or install pkg. + +Examples:: + + find_package(Qt5Core NO_MODULE) + find_package(KF5KDcraw NO_MODULE) + get_target_property(_H_DIRS KF5::KDcraw INTERFACE_INCLUDE_DIRECTORIES) + get_target_property(_LINK_LIBRARIES KF5::KDcraw INTERFACE_LINK_LIBRARIES) + set(_LINK_LIBRARIES KF5::KDcraw ${_LINK_LIBRARIES}) + include(${KF5KDcraw_DIR}/KF5KDcrawConfigVersion.cmake) + + cppyy_add_bindings( + "KDCRAW" "${PACKAGE_VERSION}" "Shaheed" "srhaque@theiet.org" + LANGUAGE_STANDARD "14" + LINKDEFS "../linkdef_overrides.h" + GENERATE_OPTIONS "-D__PIC__;-Wno-macro-redefined" + INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} + LINK_LIBRARIES ${_LINK_LIBRARIES} + H_DIRS ${_H_DIRS} + H_FILES "dcrawinfocontainer.h;kdcraw.h;rawdecodingsettings.h;rawfiles.h") + +There is a fuller example of embedding the use of cppyy_add_bindings for a +large set of bindings:: + + https://cgit.kde.org/pykde5.git/plain/KF5/CMakeLists.txt?h=include_qt_binding + +cppyy_find_pips +^^^^^^^^^^^^^^^ + +Return a list of available pip programs. diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/classes.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/classes.rst new file mode 100644 index 0000000000000..bedd21cbd4337 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/classes.rst @@ -0,0 +1,213 @@ +.. _classes: + +.. role:: toconly + :class: toconly + + +Classes +======= + +Both Python and C++ support object-oriented code through classes and thus +it is logical to expose C++ classes as Python ones, including the full +inheritance hierarchy. + +The C++ code used for the examples below can be found +:doc:`here `, and it is assumed that that code is +loaded at the start of any session. +Download it, save it under the name ``features.h``, and load it: + + .. code-block:: python + + >>> import cppyy + >>> cppyy.include('features.h') + >>> + + +:toconly:`Basics` +""""""""""""""""" + +All bound C++ code starts off from the global C++ namespace, represented in +Python by ``gbl``. +This namespace, as any other namespace, is treated as a module after it has +been loaded. +Thus, we can import C++ classes that live underneath it: + + .. code-block:: python + + >>> from cppyy.gbl import Concrete + >>> Concrete + + >>> + +Placing classes in the same structure as imposed by C++ guarantees identity, +even if multiple Python modules bind the same class. +There is, however, no necessity to expose that structure to end-users: when +developing a Python package that exposes C++ classes through ``cppyy``, +consider ``cppyy.gbl`` an "internal" module, and expose the classes in any +structure you see fit. +The C++ names will continue to follow the C++ structure, however, as is needed +for e.g. pickling: + + .. code-block:: python + + >>> from cppyy.gbl import Namespace + >>> Concrete == Namespace.Concrete + False + >>> n = Namespace.Concrete.NestedClass() + >>> type(n) + + >>> type(n).__name__ + NestedClass + >>> type(n).__module__ + cppyy.gbl.Namespace.Concrete + >>> type(n).__cppname__ + Namespace::Concrete::NestedClass + >>> + + +:toconly:`Inheritance` +"""""""""""""""""""""" + +The output of help shows the inheritance hierarchy, constructors, public +methods, and public data. +For example, ``Concrete`` inherits from ``Abstract`` and it has +a constructor that takes an ``int`` argument, with a default value of 42. +Consider: + + .. code-block:: python + + >>> from cppyy.gbl import Abstract + >>> issubclass(Concrete, Abstract) + True + >>> a = Abstract() + Traceback (most recent call last): + File "", line 1, in + TypeError: cannot instantiate abstract class 'Abstract' + >>> c = Concrete() + >>> isinstance(c, Concrete) + True + >>> isinstance(c, Abstract) + True + >>> d = Concrete(13) + >>> + +Just like in C++, interface classes that define pure virtual methods, such +as ``Abstract`` does, can not be instantiated, but their concrete +implementations can. +As the output of ``help`` showed, the ``Concrete`` constructor takes +an integer argument, that by default is 42. + + +:toconly:`Typedefs` +"""""""""""""""""""" + +Typedefs are simple python references to the actual classes to which +they refer. + + .. code-block:: python + + >>> from cppyy.gbl import Concrete_t + >>> Concrete is Concrete_t + True + >>> + + +:toconly:`Data members` +""""""""""""""""""""""" + +The ``Concrete`` instances have a public data member ``m_int`` that +is treated as a Python property, albeit a typed one: + + .. code-block:: python + + >>> c.m_int, d.m_int + (42, 13) + >>> c.m_int = 3.14 # a float does not fit in an int + Traceback (most recent call last): + File "", line 1, in + TypeError: int/long conversion expects an integer object + >>> c.m_int = int(3.14) + >>> c.m_int, d.m_int + (3, 13) + >>> + +Note that private and protected data members are not accessible and C++ +const-ness is respected: + + .. code-block:: python + + >>> c.m_const_int = 71 # declared 'const int' in class definition + Traceback (most recent call last): + File "", line 1, in + TypeError: assignment to const data not allowed + >>> + +Static C++ data members act like Python class-level data members. +They are also represented by property objects and both read and write access +behave as expected: + + .. code-block:: python + + >>> Concrete.s_int # access through class + 321 + >>> c.s_int = 123 # access through instance + >>> Concrete.s_int + 123 + + +:toconly:`Methods` +"""""""""""""""""" + +C++ methods are represented as Python ones: these are first-class objects and +can be bound to an instance. +If a method is virtual in C++, the proper concrete method is called, whether +or not the concrete class is bound. +Similarly, if all classes are bound, the normal Python rules apply: + + .. code-block:: python + + >>> c.abstract_method() + called Concrete::abstract_method + >>> c.concrete_method() + called Concrete::concrete_method + >>> m = c.abstract_method + >>> m() + called Concrete::abstract_method + >>> + + +:toconly:`Templates` +"""""""""""""""""""" + +Templated classes are instantiated using square brackets. +(For backwards compatibility reasons, parentheses work as well.) +The instantiation of a templated class yields a class, which can then +be used to create instances. + +Templated classes need not pre-exist in the bound code, just their +declaration needs to be available. +This is true for e.g. all of STL: + + .. code-block:: python + + >>> cppyy.gbl.std.vector # template metatype + + >>> cppyy.gbl.std.vector(int) # instantiates template -> class + at 0x1532190> + cppyy.gbl.std.vector[int]() # instantiates class -> object + object at 0x2341ec0> + >>> + +The template arguments may be actual types or their names as a string, +whichever is more convenient. +Thus, the following are equivalent: + + .. code-block:: python + + >>> from cppyy.gbl.std import vector + >>> type1 = vector[Concrete] + >>> type2 = vector['Concrete'] + >>> type1 == type2 + True + >>> + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/conf.py b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/conf.py new file mode 100644 index 0000000000000..99b4b6fdd6130 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/conf.py @@ -0,0 +1,358 @@ +# -*- coding: utf-8 -*- +# +# cppyy documentation build configuration file, created by +# sphinx-quickstart on Wed Jul 12 14:35:45 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'cppyy' +copyright = u'2017, Wim Lavrijsen' +author = u'Wim Lavrijsen' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '1.0' +# The full version, including alpha/beta/rc tags. +release = '1.0.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +import sphinx_rtd_theme +html_theme = "sphinx_rtd_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'cppyydoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', + +# Latex figure (float) alignment +#'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'cppyy.tex', u'cppyy Documentation', + u'Wim Lavrijsen', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'cppyy', u'cppyy Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'cppyy', u'cppyy Documentation', + author, 'cppyy', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + + +# -- Options for Epub output ---------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project +epub_author = author +epub_publisher = author +epub_copyright = copyright + +# The basename for the epub file. It defaults to the project name. +#epub_basename = project + +# The HTML theme for the epub output. Since the default themes are not optimized +# for small screen space, using the same theme for HTML and epub output is +# usually not wise. This defaults to 'epub', a theme designed to save visual +# space. +#epub_theme = 'epub' + +# The language of the text. It defaults to the language option +# or 'en' if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# A sequence of (type, uri, title) tuples for the guide element of content.opf. +#epub_guide = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + +# Choose between 'default' and 'includehidden'. +epub_tocscope = 'default' + +# Fix unsupported image types using the Pillow. +#epub_fix_images = False + +# Scale large images. +#epub_max_image_width = 0 + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#epub_show_urls = 'inline' + +# If false, no index is generated. +#epub_use_index = True + +def setup(app): + app.add_stylesheet('css/custom.css') diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/cppyy_features_header.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/cppyy_features_header.rst new file mode 100644 index 0000000000000..b45c18ad1883f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/cppyy_features_header.rst @@ -0,0 +1,104 @@ +File features.h +=============== + +.. code-block:: C++ + + #include + #include + #include + + + //----- + unsigned int gUint = 0; + + //----- + class Abstract { + public: + virtual ~Abstract() {} + virtual void abstract_method() = 0; + virtual void concrete_method() = 0; + }; + + void Abstract::concrete_method() { + std::cout << "called Abstract::concrete_method" << std::endl; + } + + //----- + class Concrete : Abstract { + public: + Concrete(int n=42) : m_int(n), m_const_int(17) {} + ~Concrete() {} + + virtual void abstract_method() { + std::cout << "called Concrete::abstract_method" << std::endl; + } + + virtual void concrete_method() { + std::cout << "called Concrete::concrete_method" << std::endl; + } + + void array_method(int* ad, int size) { + for (int i=0; i < size; ++i) + std::cout << ad[i] << ' '; + std::cout << std::endl; + } + + void array_method(double* ad, int size) { + for (int i=0; i < size; ++i) + std::cout << ad[i] << ' '; + std::cout << std::endl; + } + + Abstract* show_autocast() { + return this; + } + + operator const char*() { + return "Hello operator const char*!"; + } + + public: + double m_data[4]; + int m_int; + const int m_const_int; + + static int s_int; + }; + + typedef Concrete Concrete_t; + + int Concrete::s_int = 321; + + //----- + int global_function(int) { + return 42; + } + + double global_function(double) { + return std::exp(1); + } + + //----- + namespace Namespace { + + class Concrete { + public: + class NestedClass { + public: + std::vector m_v; + }; + + }; + + int global_function(int i) { + return 2*::global_function(i); + } + + double global_function(double d) { + return 2*::global_function(d); + } + + } // namespace Namespace + + //----- + enum EFruit {kApple=78, kBanana=29, kCitrus=34}; diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/dictionaries.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/dictionaries.rst new file mode 100644 index 0000000000000..8c6e311ee9e5e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/dictionaries.rst @@ -0,0 +1,97 @@ +.. _dictionaries: + +Dictionaries +============ + +Loading code directly into Cling is fine for interactive work and small +scripts, but large scale applications should take advantage of pre-packaging +code, linking in libraries, and describing other dependencies. +The necessary tools are installed as part of the backend. + + +Dictionary generation +--------------------- + +A "reflection dictionary" makes it simple to combine the necessary headers and +libraries into a single package for use and distribution. +The relevant headers are read by a tool called `genreflex`_ which generates +C++ files that are to be compiled into a shared library. +That library can further be linked with any relevant project libraries that +contain the implementation of the functionality declared in the headers. +For example, given a file called ``project_header.h`` and an implementation +residing in ``libproject.so``, the following will generate a +``libProjectDict.so`` reflection dictionary:: + + $ genreflex project_header.h + $ g++ -std=c++11 -fPIC -rdynamic -O2 -shared `genreflex --cppflags` project_header_rflx.cpp -o libProjectDict.so -L$PROJECTHOME/lib -lproject + +Instead of loading the header text into Cling, you can now load the +dictionary: + +.. code-block:: python + + >>> import cppyy + >>> cppyy.load_reflection_info('libProjectDict.so') + + >>> from cppyy.gbl import SomeClassFromProject + >>> + +and use the C++ entities from the header as before. + +.. _`genreflex`: https://linux.die.net/man/1/genreflex + + +Automatic class loader +---------------------- + +Explicitly loading dictionaries is fine if this is hidden under the hood of +a Python package and thus simply done on import. +Otherwise, the automatic class loader is more convenient, as it allows direct +use without having to manually find and load dictionaries. + +The class loader utilizes so-called rootmap files, which by convention should +live alongside the dictionaries in places reachable by LD_LIBRARY_PATH. +These are simple text files, which map C++ entities (such as classes) to the +dictionaries and other libraries that need to be loaded for their use. + +The ``genreflex`` tool can produce rootmap files automatically. +For example:: + + $ genreflex project_header.h --rootmap=libProjectDict.rootmap --rootmap-lib=libProjectDict.so + $ g++ -std=c++11 -fPIC -rdynamic -O2 -shared `genreflex --cppflags` project_header_rflx.cpp -o libProjectDict.so -L$CPPYYHOME/lib -lCling -L$PROJECTHOME/lib -lproject + +where the first option (``--rootmap``) specifies the output file name, and the +second option (``--rootmap-lib``) the name of the reflection library. +It is necessary to provide that name explicitly, since it is only in the +separate linking step where these names are fixed (if the second option is not +given, the library is assumed to be libproject_header.so). + +With the rootmap file in place, the above example can be rerun without explicit +loading of the reflection info library: + +.. code-block:: python + + >>> import cppyy + >>> from cppyy.gbl import SomeClassFromProject + >>> + + +Selection files +--------------- +.. _selection-files: + +Sometimes it is necessary to restrict or expand what genreflex will pick up +from the header files. +For example, to add or remove standard classes or to hide implementation +details. +This is where `selection files`_ come in. +These are XML specifications that allow exact or pattern matching to classes, +functions, etc. +See ``genreflex --help`` for a detailed specification and add +``--selection=project_selection.xml`` to the ``genreflex`` command line. + +With the aid of a selection file, a large project can be easily managed: +simply ``#include`` all relevant headers into a single header file that is +handed to ``genreflex``. + +.. _`selection files`: https://linux.die.net/man/1/genreflex diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/features.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/features.rst new file mode 100644 index 0000000000000..e18b16ac1dbc4 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/features.rst @@ -0,0 +1,72 @@ +.. _features: + +More Features +============= + +.. toctree:: + :hidden: + + cppyy_features_header + + +The following is not meant to be an exhaustive list, but more of a show case. +Most features will be fairly obvious in their use. + +The C++ code used for the examples below can be found +:doc:`here `, and it is assumed that that code is +loaded at the start of any session. +Download it, save it under the name ``features.h``, and load it: + + .. code-block:: python + + >>> import cppyy + >>> cppyy.include('features.h') + >>> + + +* **memory**: C++ instances created by calling their constructor from python + are owned by python. + You can check/change the ownership with the __python_owns__ flag that every + bound instance carries. + Example: + + .. code-block:: python + + >>> from cppyy.gbl import Concrete + >>> c = Concrete() + >>> c.__python_owns__ # True: object created in Python + True + >>> + +* **namespaces**: Are represented as python classes. + Namespaces are more open-ended than classes, so sometimes initial access may + result in updates as data and functions are looked up and constructed + lazily. + Thus the result of ``dir()`` on a namespace shows the classes available, + even if they may not have been created yet. + It does not show classes that could potentially be loaded by the class + loader. + Once created, namespaces are registered as modules, to allow importing from + them. + Namespace currently do not work with the class loader. + Fixing these bootstrap problems is on the TODO list. + The global namespace is ``cppyy.gbl``. + +* **NULL**: Is represented as ``cppyy.gbl.nullptr``. + In C++11, the keyword ``nullptr`` is used to represent ``NULL``. + For clarity of intent, it is recommended to use this instead of ``None`` + (or the integer ``0``, which can serve in some cases), as ``None`` is better + understood as ``void`` in C++. + +* **static methods**: Are represented as python's ``staticmethod`` objects + and can be called both from the class as well as from instances. + +* **templated functions**: Automatically participate in overloading and are + used in the same way as other global functions. + +* **templated methods**: For now, require an explicit selection of the + template parameters. + This will be changed to allow them to participate in overloads as expected. + +* **unary operators**: Are supported if a python equivalent exists, and if the + operator is defined in the C++ class. diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/functions.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/functions.rst new file mode 100644 index 0000000000000..19c502e39b24a --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/functions.rst @@ -0,0 +1,81 @@ +.. _functions: + +Functions +========= + +C++ functions are first-class objects in Python and can be used wherever +Python functions can be used, including for dynamically constructing +classes. + +The C++ code used for the examples below can be found +:doc:`here `, and it is assumed that that code is +loaded at the start of any session. +Download it, save it under the name ``features.h``, and load it: + + .. code-block:: python + + >>> import cppyy + >>> cppyy.include('features.h') + >>> + + +All bound C++ code starts off from the global C++ namespace, represented in +Python by ``gbl``. +This namespace, as any other namespace, is treated as a module after it has +been loaded. +Thus, we can directly import C++ functions that live underneath it. + + .. code-block:: python + + >>> from cppyy.gbl import global_function, Namespace + >>> global_function == Namespace.global_function + False + >>> + +C++ supports overloading, whereas Python supports "duck typing", so C++ +overloads have to be selected dynamically: + + .. code-block:: python + + >>> global_function(1.) # selects 'double' overload + 2.718281828459045 + >>> global_function(1) # selects 'int' overload + 42 + >>> + +C++ does a static dispatch at compile time based on the argument types. +The dispatch is a selection among overloads (incl. templates) visible at that +point in the translation unit. +Bound C++ in Python does a dynamic dispatch: it considers all overloads +visible _globally_ at that point in the execution. +Because the dispatch is fundamentally different (albeit in line with the +expectation of the respective languages), differences can occur. +Especially if overloads live in different header files and are only an +implicit conversion apart. + +If the overload selection fails in a specific case, the ``__overload__`` +function can be called directly with a signature: + + .. code-block:: python + + >>> global_function.__overload__('double')(1) # int implicitly converted + 2.718281828459045 + >>> + +C++ default arguments work as expected, but python keywords are not yet +supported. +(It is technically possible to support keywords, but for the C++ interface, +the formal argument names have no meaning and are not considered part of the +API, hence it is not a good idea to use keywords.) +Example: + + .. code-block:: python + + >>> from cppyy.gbl import Concrete + >>> c = Concrete() # uses default argument + >>> c.m_int + 42 + >>> c = Concrete(13) # uses provided argument + >>> c.m_int + 13 + >>> diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/index.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/index.rst new file mode 100644 index 0000000000000..847c7dd9d9105 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/index.rst @@ -0,0 +1,141 @@ +.. cppyy documentation master file, created by + sphinx-quickstart on Wed Jul 12 14:35:45 2017. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +cppyy: Automatic Python-C++ bindings +==================================== + +cppyy is an automatic Python-C++ bindings generator designed for large scale +programs in high performance computing that use modern C++. +Design and performance are described in this `PyHPC paper`_. + +cppyy is based on `Cling`_, the C++ interpreter, to match Python's dynamism +and interactivity. +Consider this session, showing dynamic, interactive, mixing of C++ and Python +features (more examples are in the `tutorial`_): + +.. code-block:: python + + >>> import cppyy + >>> cppyy.cppdef(""" + ... class MyClass { + ... public: + ... MyClass(int i) : m_data(i) {} + ... int m_data; + ... };""") + True + >>> from cppyy.gbl import MyClass + >>> m = MyClass(42) + >>> cppyy.cppdef(""" + ... void say_hello(MyClass* m) { + ... std::cout << "Hello, the number is: " << m->m_data << std::endl; + ... }""") + True + >>> MyClass.say_hello = cppyy.gbl.say_hello + >>> m.say_hello() + Hello, the number is: 42 + >>> m.m_data = 13 + >>> m.say_hello() + Hello, the number is: 13 + >>> + +With a modern C++ compiler having its back, cppyy is future-proof. +Consider the following session using ``boost::any``, a capsule-type that +allows for heterogeneous containers in C++. +The `Boost`_ library is well known for its no holds barred use of modern C++ +and heavy use of templates: + +.. code-block:: python + + >>> import cppyy + >>> cppyy.include('boost/any.hpp') + >>> from cppyy.gbl import std, boost + >>> val = boost.any() # the capsule + >>> val.__assign__(std.vector[int]()) # assign it a std::vector + + >>> val.type() == cppyy.typeid(std.vector[int]) # verify type + True + >>> extract = boost.any_cast[int](std.move(val)) # wrong cast + Traceback (most recent call last): + File "", line 1, in + Exception: int boost::any_cast(boost::any&& operand) => + boost::bad_any_cast: failed conversion using boost::any_cast (C++ exception) + >>> extract = boost.any_cast[std.vector[int]](std.move(val)) # correct + >>> type(extract) is std.vector[int] + True + >>> extract += xrange(100) + >>> len(extract) + 100 + >>> val.__assign__(std.move(extract)) # move forced + + >>> len(extract) # now empty + 0 + >>> extract = boost.any_cast[std.vector[int]](std.move(val)) + >>> list(extract) + [0, 1, 2, 3, 4, 5, 6, ..., 97, 98, 99] + >>> + +And yes, there is no reason to use Boost from Python (in fact, this example +calls out for :doc:`pythonizations `), but the example shows +that cppyy seamlessly supports many advanced C++ features. + +cppyy is available for both `CPython`_ (v2 and v3) and `PyPy`_, reaching +C++-like performance with the latter. +It makes judicious use of precompiled headers, dynamic loading, and lazy +instantiation, to support C++ programs consisting of millions of lines of +code and many thousands of classes. +cppyy minimizes dependencies to allow its use in distributed, heterogeneous, +development environments. + +.. _Cling: https://root.cern.ch/cling +.. _tutorial: https://bitbucket.org/wlav/cppyy/src/master/doc/tutorial/CppyyTutorial.ipynb?viewer=nbviewer&fileviewer=notebook-viewer%3Anbviewer +.. _`PyHPC paper`: http://wlav.web.cern.ch/wlav/Cppyy_LavrijsenDutta_PyHPC16.pdf +.. _`Boost`: http://www.boost.org/ +.. _`CPython`: http://python.org +.. _`PyPy`: http://pypy.org + + +.. only: not latex + + Contents: + +.. toctree:: + :caption: Getting Started + :maxdepth: 1 + + installation + +.. toctree:: + :caption: Features + :maxdepth: 1 + + basic_types + classes + functions + type_conversions + python + features + +.. toctree:: + :caption: Redistribution + :maxdepth: 1 + + pythonizations + dictionaries + bindings_generation + +.. toctree:: + :caption: Developers + :maxdepth: 1 + + packages + repositories + + +Comments and bugs +----------------- + +Please report bugs or requests for improvement on the `issue tracker`_. + +.. _`issue tracker`: https://bitbucket.org/wlav/cppyy/issues diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/installation.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/installation.rst new file mode 100644 index 0000000000000..8a3987e398be5 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/installation.rst @@ -0,0 +1,64 @@ +.. _installation: + +Installation +============ + +The ``cppyy`` module and its dependencies are available through `PyPI`_ for +both CPython (2 and 3) and PyPy (5.9.0 and later). +Build-time only dependencies are ``cmake`` (for general build), ``python2.7`` +(for LLVM), and a modern C++ compiler (one that supports at least C++11). +The cleanest/easiest way to install cppyy is using `virtualenv`_. + +Compilation of the backend, which contains a customized version of +Clang/LLVM, can take a long time, so by default the setup script will use all +cores (x2 if hyperthreading is enabled). +To change that behavior, set the MAKE_NPROCS environment variable to the +desired number of processes to use. +To see progress while waiting, use ``--verbose``:: + + $ MAKE_NPROCS=32 pip install --verbose cppyy + +The bdist_wheel of the backend is reused by pip for all versions of CPython +and PyPy, thus the long compilation is needed only once. +Prepared wheels of cppyy-cling (which contains LLVM) for Mac 10.12 and +Linux/Gentoo `are available`_. +To use them, tell ``pip``:: + + $ pip install --extra-index https://cern.ch/wlav/wheels cppyy + +If you use the ``--user`` option to pip, make sure that the PATH envar points +to the bin directory that will contain the installed entry points during the +installation, as the build process needs them. +You may also need to install wheel first. +Example:: + + $ pip install wheel --user + $ PATH=$HOME/.local/bin:$PATH pip install cppyy --user + +PyPy 5.7 and 5.8 have a built-in module ``cppyy``. +You can still install the ``cppyy`` package, but the built-in module takes +precedence. +To use ``cppyy``, first import a compatibility module:: + + $ pypy + [PyPy 5.8.0 with GCC 5.4.0] on linux2 + >>>> import cppyy_compat, cppyy + >>>> + +You will have to set ``LD_LIBRARY_PATH`` appropriately if you get an +``EnvironmentError`` (it will indicate the needed directory). + +Note that your python interpreter (whether CPython or ``pypy-c``) may not have +been linked by the C++ compiler. +This can lead to problems during loading of C++ libraries and program shutdown. +In that case, re-linking is highly recommended. + +Older versions of PyPy (5.6.0 and earlier) have a built-in ``cppyy`` based on +`Reflex`_, which is less feature-rich and no longer supported. +However, both the :doc:`distribution tools ` and user-facing +Python codes are very backwards compatible. + +.. _`PyPI`: https://pypi.python.org/pypi/cppyy/ +.. _`virtualenv`: https://pypi.python.org/pypi/virtualenv +.. _`are available`: https://cern.ch/wlav/wheels/ +.. _`Reflex`: https://root.cern.ch/how/how-use-reflex diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/packages.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/packages.rst new file mode 100644 index 0000000000000..9c8981313cbc4 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/packages.rst @@ -0,0 +1,73 @@ +.. _packages: + +Packages +======== + +Cppyy +----- + +The ``cppyy`` module is a frontend (see :ref:`Package Structure +`), and most of the code is elsewhere. However, it does +contain the docs for all of the modules, which are built using +Sphinx: http://www.sphinx-doc.org/en/stable/ and published to +http://cppyy.readthedocs.io/en/latest/index.html using a webhook. To create +the docs:: + + $ pip install sphinx_rtd_theme + Collecting sphinx_rtd_theme + ... + Successfully installed sphinx-rtd-theme-0.2.4 + $ cd docs + $ make html + +The Python code in this module supports: + +* Interfacing to the correct backend for CPython or PyPy. +* Pythonizations (TBD) + +Cppyy-backend +------------- + +The ``cppyy-backend`` module contains two areas: + +* A patched copy of cling +* Wrapper code + + +Package structure +----------------- +.. _package-structure: + +There are four PyPA packages involved in a full installation, with the +following structure:: + + (A) _cppyy (PyPy) + / \ + (1) cppyy (3) cling-backend -- (4) cppyy-cling + \ / + (2) CPyCppyy (CPython) + +The user-facing package is always ``cppyy`` (1). +It is used to select the other (versioned) required packages, based on the +python interpreter for which it is being installed. + +Below (1) follows a bifurcation based on interpreter. +This is needed for functionality and performance: for CPython, there is the +CPyCppyy package (2). +It is written in C++, makes use of the Python C-API, and installs as a Python +extension module. +For PyPy, there is the builtin module ``_cppyy`` (A). +This is not a PyPA package. +It is written in RPython as it needs access to low-level pointers, JIT hints, +and the ``_cffi_backend`` backend module (itself builtin). + +Shared again across interpreters is the backend, which is split in a small +wrapper (3) and a large package that contains Cling/LLVM (4). +The former is still under development and expected to be updated frequently. +It is small enough to download and build very quickly. +The latter, however, takes a long time to build, but since it is very stable, +splitting it off allows the creation of binary wheels that need updating +only infrequently (expected about twice a year). + +All code is publicly available; see the +:doc:`section on repositories `. diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/python.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/python.rst new file mode 100644 index 0000000000000..9e3d7ab9d97fe --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/python.rst @@ -0,0 +1,74 @@ +.. _python: + +.. role:: toconly + :class: toconly + + +Python +====== + +The C++ code used for the examples below can be found +:doc:`here `, and it is assumed that that code is +loaded at the start of any session. +Download it, save it under the name ``features.h``, and load it: + + .. code-block:: python + + >>> import cppyy + >>> cppyy.include('features.h') + >>> + + +:toconly:`PyObject` +""""""""""""""""""" + +Arguments and return types of ``PyObject*`` can be used, and passed on to +CPython API calls (or through ``cpyext`` in PyPy). + + +:toconly:`Doc Strings` +"""""""""""""""""""""" + +The documentation string of a method or function contains the C++ +arguments and return types of all overloads of that name, as applicable. +Example: + + .. code-block:: python + + >>> from cppyy.gbl import Concrete + >>> print Concrete.array_method.__doc__ + void Concrete::array_method(int* ad, int size) + void Concrete::array_method(double* ad, int size) + >>> + + +:toconly:`Help` +""""""""""""""" + +Bound C++ class is first-class Python and can thus be inspected like any +Python objects can. +For example, we can ask for ``help()``: + + .. code-block:: python + + >>> help(Concrete) + Help on class Concrete in module gbl: + + class Concrete(Abstract) + | Method resolution order: + | Concrete + | Abstract + | CPPInstance + | __builtin__.object + | + | Methods defined here: + | + | __assign__(self, const Concrete&) + | Concrete& Concrete::operator=(const Concrete&) + | + | __init__(self, *args) + | Concrete::Concrete(int n = 42) + | Concrete::Concrete(const Concrete&) + | + etc. .... + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/pythonizations.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/pythonizations.rst new file mode 100644 index 0000000000000..0e0b8dd7c517c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/pythonizations.rst @@ -0,0 +1,50 @@ +.. _pythonizations: + +Pythonizations +============== + +Automatic bindings generation mostly gets the job done, but unless a C++ +library was designed with expressiveness and interactivity in mind, using it +will feel stilted. +Thus, if you are not the end-user of a set of bindings, it is beneficial to +implement *pythonizations*. +Some of these are already provided by default, e.g. for STL containers. +Consider the following code, iterating over an STL map, using naked bindings +(i.e. "the C++ way"): + +.. code-block:: python + + >>> from cppyy.gbl import std + >>> m = std.map[int, int]() + >>> for i in range(10): + ... m[i] = i*2 + ... + >>> b = m.begin() + >>> while b != m.end(): + ... print(b.__deref__().second, end=' ') + ... b.__preinc__() + ... + 0 2 4 6 8 10 12 14 16 18 + >>> + +Yes, that is perfectly functional, but it is also very clunky. +Contrast this to the (automatic) pythonization: + +.. code-block:: python + + >>> for key, value in m: + ... print(value, end=' ') + ... + 0 2 4 6 8 10 12 14 16 18 + >>> + +Such a pythonization can be written completely in python using the bound C++ +methods, with no intermediate language necessary. +Since it is written on abstract features, there is also only one such +pythonization that works for all STL map instantiations. + + +Installing callbacks +-------------------- + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/repositories.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/repositories.rst new file mode 100644 index 0000000000000..fe03909f7202e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/repositories.rst @@ -0,0 +1,16 @@ +.. _repositories: + +Repositories +============ + +The ``cppyy`` module is a frontend that requires an intermediate (Python +interpreter dependent) layer, and a backend (see +:ref:`Package Structure `). +Because of this layering and because it leverages several existing packages +through reuse, the relevant codes are contained across a number of +repositories. + +* Frontend, cppyy: https://bitbucket.org/wlav/cppyy +* CPython (v2/v3) intermediate: https://bitbucket.org/wlav/cpycppyy +* PyPy intermediate (module _cppyy): https://bitbucket.org/pypy/pypy/ +* Backend, cppyy: https://bitbucket.org/wlav/cppyy-backend diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/source/type_conversions.rst b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/type_conversions.rst new file mode 100644 index 0000000000000..774c7480752fe --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/source/type_conversions.rst @@ -0,0 +1,90 @@ +.. _type_conversions: + +.. role:: toconly + :class: toconly + + +Type Conversions +================ + +Most type conversions are done implicitly, e.g. between Python ``str`` and +C++ ``std::string`` and ``const char*``, but low-level APIs exist to perform +explicit conversions. + +The C++ code used for the examples below can be found +:doc:`here `, and it is assumed that that code is +loaded at the start of any session. +Download it, save it under the name ``features.h``, and load it: + + .. code-block:: python + + >>> import cppyy + >>> cppyy.include('features.h') + >>> + + +:toconly:`Casting` +"""""""""""""""""" + +Object pointer returns from functions provide the most derived class known +(i.e. exposed in header files) in the hierarchy of the object being returned. +This is important to preserve object identity as well as to make casting, +a pure C++ feature after all, superfluous. +Example: + + .. code-block:: python + + >>> from cppyy.gbl import Abstract, Concrete + >>> c = Concrete() + >>> Concrete.show_autocast.__doc__ + 'Abstract* Concrete::show_autocast()' + >>> d = c.show_autocast() + >>> type(d) + + >>> + +As a consequence, if your C++ classes should only be used through their +interfaces, then no bindings should be provided to the concrete classes +(e.g. by excluding them using a :ref:`selection file `). +Otherwise, more functionality will be available in Python than in C++. + +Sometimes, however, full control over a cast is needed. +For example, if the instance is bound by another tool or even a 3rd party, +hand-written, extension library. +Assuming the object supports the ``PyCapsule`` or ``CObject`` abstraction, +then a C++-style reinterpret_cast (i.e. without implicitly taking offsets +into account), can be done by taking and rebinding the address of an +object: + + .. code-block:: python + + >>> from cppyy import addressof, bind_object + >>> e = bind_object(addressof(d), Abstract) + >>> type(e) + + >>> + + +:toconly:`Operators` +"""""""""""""""""""" + +If conversion operators are defined in the C++ class and a Python equivalent +exists (i.e. all builtin integer and floating point types, as well as +``bool``), then these will map onto those Python conversions. +Note that ``char*`` is mapped onto ``__str__``. +Example: + + .. code-block:: python + + >>> from cppyy.gbl import Concrete + >>> print(Concrete()) + Hello operator const char*! + >>> + +C++ code can overload conversion operators by providing methods in a class or +global functions. +Special care needs to be taken for the latter: first, make sure that they are +actually available in some header file. +Second, make sure that headers are loaded in the desired order. +I.e. that these global overloads are available before use. + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/CppyyTutorial.ipynb b/bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/CppyyTutorial.ipynb new file mode 100644 index 0000000000000..b5387dee9b140 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/CppyyTutorial.ipynb @@ -0,0 +1,496 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cppyy Tutorial\n", + "\n", + "_(Modified from Enrico Guiraud's cppyy tutorial.)_\n", + "\n", + "This tutorial introduces the basic concepts for using cppyy, the automatic Python-C++ generator. To install cppyy on your system, simply run (this may take a while as it will pull in and compile a custom version of LLVM):\n", + "\n", + "```\n", + "$ pip install cppyy\n", + "```\n", + "\n", + "For further details on the installation, as well as the location of binary wheels, see:\n", + " http://cppyy.readthedocs.io/en/latest/installation.html\n", + "\n", + "To start, import module cppyy. All functionality, including using bound classes, always starts at this top-level." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import cppyy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are three layers to cppyy: at the top there are the module 'gbl' (the _global_ namespace), a range of helper functions, and a set of sub-modules (such as `py`) that serve specific purposes. Let's start with defining a little helper class in C++ using the helper function `cppdef`, to make the example more interesting:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "cppyy.cppdef(\"\"\"\n", + "class Integer1 {\n", + "public:\n", + " Integer1(int i) : m_data(i) {}\n", + " int m_data;\n", + "};\"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have a class 'Integer1'. Note that this class exists on the C++ side and has to follow C++ rules. For example, whereas in Python we can simply redefine a class, we can't do that in C++. Therefore, we will number the `Integer` classes as we go along, to be able to extend the example as we see fit.\n", + "\n", + "Python classes are constructed dynamically. It doesn't matter where or how they are defined, whether in a Python script, \"compiled\" into a C extension module, or otherwise. Cppyy takes advantage of this fact to generate bindings on-the-fly. This leads to performance advantages for large libraries with thousands of C++ classes; general distribution advantages since, other than the module cppyy itself, no code depends on any specific version of Python; and it enablers, through the Cling backend, interactive access to C++.\n", + "\n", + "To access our first class, find it in gbl, the global namespace:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "print(cppyy.gbl.Integer1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Namespaces have simularities to modules, so we could have imported the class as well.\n", + "\n", + "Bound C++ classes are first-class Python object. We can instantiate them, use normal Python introspection tools, call `help()`, they raise Python exceptions on failure, manage memory through Python's ref-counting and garbage collection, etc., etc. Furthermore, we can use them in conjunction with other C++ classes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Variable has an 'm_data' data member? Yes!\n", + "Variable is an instance of int? No!\n", + "Variable is an instance of Integer1? Yes!\n" + ] + } + ], + "source": [ + "# for convenience, bring Integer1 into __main__\n", + "from cppyy.gbl import Integer1\n", + "\n", + "# create a C++ Integer1 object\n", + "i = Integer1(42)\n", + "\n", + "# use Python inspection\n", + "print(\"Variable has an 'm_data' data member?\", hasattr(i, 'm_data') and 'Yes!' or 'No!')\n", + "print(\"Variable is an instance of int?\", isinstance(i, int) and 'Yes!' or 'No!')\n", + "print(\"Variable is an instance of Integer1?\", isinstance(i, Integer1) and 'Yes!' or 'No!')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " object at 0x336ddb0>\n" + ] + } + ], + "source": [ + "# pull in the STL vector class\n", + "from cppyy.gbl.std import vector\n", + "\n", + "# create a vector of Integer1 objects; note how [] instantiates the template and () instantiates the class\n", + "v = vector[Integer1]()\n", + "\n", + "# populate it\n", + "v += [Integer1(j) for j in range(10)]\n", + "\n", + "# display our vector\n", + "print(v)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hum, that doesn't look very pretty. However, since Integer1 is now a Python class we can decorate it, with a custom `__repr__` function (we'll punt on the `vector` and instead convert it to a Python `list` for printing)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n" + ] + } + ], + "source": [ + "# add a custom conversion for printing\n", + "Integer1.__repr__ = lambda self: repr(self.m_data)\n", + "\n", + "# now try again (note the conversion of the vector to a Python list)\n", + "print(list(v))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pythonizations\n", + "\n", + "As we have seen so far, automatic bindings are simple and easy to use. However, even though they are first-class Python objects, they do have some rough C++ edges left. There is some _pythonization_ going on in the background: the vector, for example, played nice with `+=` and the list conversion. But for presenting your own classes to end-users, specific pythonizations are desirable. To have this work correctly with lazy binding, a callback-based API exists.\n", + "\n", + "Now, it's too late for Integer1, so let's create Integer2, which lives in a namespace and in addition has a conversion feature." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# create an Integer2 class, living in namespace Math\n", + "cppyy.cppdef(\"\"\"\n", + "namespace Math {\n", + " class Integer2 : public Integer1 {\n", + " public:\n", + " using Integer1::Integer1;\n", + " operator int() { return m_data; }\n", + " };\n", + "}\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# prepare a pythonizor\n", + "def pythonizor(klass, name):\n", + " # A pythonizor receives the freshly prepared bound C++ class, and a name stripped down to\n", + " # the namespace the pythonizor is applied. Also accessible are klass.__name__ (for the\n", + " # Python name) and klass.__cppname__ (for the C++ name)\n", + " if name == 'Integer2':\n", + " klass.__repr__ = lambda self: repr(self.m_data)\n", + "\n", + "# install the pythonizor as a callback on namespace 'Math' (default is the global namespace)\n", + "cppyy.py.add_pythonization(pythonizor, 'Math')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", + "Converted Integer2 variable: 13\n" + ] + } + ], + "source": [ + "# when we next get the Integer2 class, it will have been decorated\n", + "Integer2 = cppyy.gbl.Math.Integer2 # first time a new namespace is used, it can not be imported from\n", + "v2 = vector[Integer2]()\n", + "v2 += [Integer2(j) for j in range(10)]\n", + "\n", + "# now test the effect of the pythonizor:\n", + "print(list(v2))\n", + "\n", + "# in addition, Integer2 has a conversion function, which is automatically recognized and pythonized\n", + "i2 = Integer2(13)\n", + "print(\"Converted Integer2 variable:\", int(i2))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# continue the decoration on the C++ side, by adding an operator+ overload\n", + "cppyy.cppdef(\"\"\"\n", + "namespace Math {\n", + " Integer2 operator+(const Integer2& left, const Integer1& right) {\n", + " return left.m_data + right.m_data;\n", + " }\n", + "}\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "55 55\n" + ] + } + ], + "source": [ + "# now use that fresh decoration (it will be located and bound on use):\n", + "k = i2 + i\n", + "print(k, i2.m_data + i.m_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Class Hierarchies\n", + "\n", + "Both Python and C++ support multiple programming paradigms, making it relatively straightforward to map language features (e.g. class inheritance, free functions, etc.); many other features can be cleanly hidden, merely because the syntax is very similar or otherwise natural (e.g. overloading, abstract classes, static data members, etc.); and yet others map gracefully because their semantic intent is expressed clearly in the syntax (e.g. smart pointers, STL, etc.).\n", + "\n", + "The following presents a range of C++ features that map naturally, and exercises them in Python." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# create some animals to play with\n", + "cppyy.cppdef(\"\"\"\n", + "namespace Zoo {\n", + "\n", + " enum EAnimal { eLion, eMouse };\n", + " \n", + " class Animal {\n", + " public:\n", + " virtual ~Animal() {}\n", + " virtual std::string make_sound() = 0;\n", + " };\n", + " \n", + " class Lion : public Animal {\n", + " public:\n", + " virtual std::string make_sound() { return s_lion_sound; }\n", + " static std::string s_lion_sound;\n", + " };\n", + " std::string Lion::s_lion_sound = \"growl!\";\n", + "\n", + " class Mouse : public Animal {\n", + " public:\n", + " virtual std::string make_sound() { return \"peep!\"; }\n", + " };\n", + "\n", + " Animal* release_animal(EAnimal animal) {\n", + " if (animal == eLion) return new Lion{};\n", + " if (animal == eMouse) return new Mouse{};\n", + " return nullptr;\n", + " }\n", + "\n", + " std::string identify_animal(Lion*) {\n", + " return \"the animal is a lion\";\n", + " }\n", + "\n", + " std::string identify_animal(Mouse*) {\n", + " return \"the animal is a mouse\";\n", + " }\n", + "\n", + "}\n", + "\"\"\")\n", + "\n", + "# pull in the Zoo (after which we can import from it)\n", + "Zoo = cppyy.gbl.Zoo\n", + "\n", + "# pythonize the animal release function to take ownership on return\n", + "Zoo.release_animal._creates = True" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Failed: none of the 2 overloaded methods succeeded. Full details:\n", + " cannot instantiate abstract class 'Zoo::Animal'\n", + " cannot instantiate abstract class 'Zoo::Animal' \n", + "\n", + "A Lion is an Animal? Yes! \n", + "\n", + "Type of mouse: \n", + "Type of lion: \n", + "\n", + "Does Python own the 'lion'? Yes!\n", + "Does Python own the 'mouse'? Yes! \n", + "\n", + "The mouse says: peep!\n", + "The lion says: growl! \n", + "\n", + "The lion says: mooh! \n", + "\n", + "Identification of 'mouse': the animal is a mouse\n", + "Identification of 'lion': the animal is a lion\n" + ] + } + ], + "source": [ + "# abstract base classes can not be instantiated:\n", + "try:\n", + " animal = Zoo.Animal()\n", + "except TypeError as e:\n", + " print('Failed:', e, '\\n')\n", + "\n", + "# derived classes can be inspected in the same class hierarchy on the Python side\n", + "print('A Lion is an Animal?', issubclass(Zoo.Lion, Zoo.Animal) and 'Yes!' or 'No!', '\\n')\n", + "\n", + "# returned pointer types are auto-casted to the lowest known derived type:\n", + "mouse = Zoo.release_animal(Zoo.eMouse)\n", + "print('Type of mouse:', type(mouse))\n", + "lion = Zoo.release_animal(Zoo.eLion)\n", + "print('Type of lion:', type(lion), '\\n')\n", + "\n", + "# as pythonized, the ownership of the return value from release_animal is Python's\n", + "print(\"Does Python own the 'lion'?\", lion.__python_owns__ and 'Yes!' or 'No!')\n", + "print(\"Does Python own the 'mouse'?\", mouse.__python_owns__ and 'Yes!' or 'No!', '\\n')\n", + "\n", + "# virtual functions work as expected:\n", + "print('The mouse says:', mouse.make_sound())\n", + "print('The lion says:', lion.make_sound(), '\\n')\n", + "\n", + "# now change what the lion says through its static (class) variable\n", + "Zoo.Lion.s_lion_sound = \"mooh!\"\n", + "print('The lion says:', lion.make_sound(), '\\n')\n", + "\n", + "# overloads are combined into a single function on the Python side and resolved dynamically\n", + "print(\"Identification of \\'mouse\\':\", Zoo.identify_animal(mouse))\n", + "print(\"Identification of \\'lion\\':\", Zoo.identify_animal(lion))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modern C++\n", + "\n", + "As C++ matures, more and more semantic intent (such as object ownership) is expressed in the syntax. This not for the benefit of bindings generators, but for the poor programmer having to read the code. Still, a bindings generator benefits greatly from this increased expression." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "cppyy.cppdef(\"\"\"\n", + "namespace Zoo {\n", + " std::shared_ptr free_lion{new Lion{}};\n", + "\n", + " std::string identify_animal_smart(std::shared_ptr& smart) {\n", + " return \"the animal is a lion\";\n", + " }\n", + "}\n", + "\"\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Type of the 'free_lion' global: Lion\n", + "Type of the 'free_lion' smart ptr: shared_ptr\n", + "Dumb passing: the animal is a lion\n", + "Smart passing: the animal is a lion\n" + ] + } + ], + "source": [ + "# shared pointers are presented transparently as the wrapped type\n", + "print(\"Type of the 'free_lion' global:\", type(Zoo.free_lion).__name__)\n", + "\n", + "# if need be, the smart pointer is accessible with a helper\n", + "smart_lion = Zoo.free_lion.__smartptr__()\n", + "print(\"Type of the 'free_lion' smart ptr:\", type(smart_lion).__name__)\n", + "\n", + "# pass through functions that expect a naked pointer or smart pointer\n", + "print(\"Dumb passing: \", Zoo.identify_animal(Zoo.free_lion))\n", + "print(\"Smart passing:\", Zoo.identify_animal_smart(Zoo.free_lion))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/GSLPythonizationTutorial.ipynb b/bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/GSLPythonizationTutorial.ipynb new file mode 100644 index 0000000000000..58cf576cb186e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/doc/tutorial/GSLPythonizationTutorial.ipynb @@ -0,0 +1,202 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## GSL Pythonization Tutorial\n", + "\n", + "_(Hat tip to Neil Dhir for the idea.)_\n", + "\n", + "This tutorial introduces pythonizations and how they can be used to solve low-level problems.\n", + "\n", + "The setup: imagine you want to use numpy, but are given a C or C++ library that is based on the GNU Scientific Library (GSL). How do make the two of them play nice together?\n", + "\n", + "GSL is written in C, but is very structured: it has consistent naming conventions, provides allocators/deallocators for its main structs, and has clear ownership rules. Because of this structure, it is possible to write pythonizations based on reflection information that end up being very simple and therefore easy to maintain." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import cppyy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For simplicity, we will use `gsl_blas_dgemm` as a stand-in for the \"C/C++ library based on GSL.\" To make our life easier, we will wrap up the bindings to GSL and GSLBLAS into a single reflection dictionary. This is overkill for simple projects, but if we want access to all of GSL (as opposed to GSL and GSLBLAS separately, say), this approach is fine." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# first, pull in all headers from the GSL installation directory (/usr/include on my system).\n", + "import glob, os\n", + "GSL_HOME = '/usr/include'\n", + "gsl_headers = [os.path.relpath(x, GSL_HOME) for x in glob.glob(GSL_HOME+'/gsl/*.h')]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we write a selection file that picks up all interesting bits from GSL. This file can be kept simple because of the proper naming conventions (it could have been simpler still if GSL were a C++ library, living in a single namespace). We then run the genreflex command to generate the dictionary file and compile it, linking in GSL and GSLBLAS. Finally, we're ready to load the dictionary reflection file into cppyy." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwriting gsl_selection.xml\n" + ] + } + ], + "source": [ + "%%file gsl_selection.xml\n", + "\n", + " \n", + " \n", + " \n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "genreflex done\n" + ] + } + ], + "source": [ + "# conventional name for generated output\n", + "rfldct = 'GSLDict'\n", + "\n", + "if not os.path.exists('%s_rflx.cpp' % rfldct):\n", + " import subprocess, sys\n", + "\n", + " # generate the reflection dictionary\n", + " try:\n", + " subprocess.check_output(\n", + " ['genreflex', # utility installed by pip when installing cppyy\n", + " '-s', 'gsl_selection.xml', # selection file (see above)\n", + " '-o', '%s_rflx.cpp'%rfldct, # intermediate output file\n", + " '-I'+GSL_HOME]+ # include search path for GSL headers\n", + " gsl_headers) # headers themselves\n", + " except subprocess.CalledProcessError as e:\n", + " print(\"genreflex failed (%d):\" % e.returncode, e.output)\n", + " else:\n", + " print(\"genreflex done\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "cling-config done\n", + "compilation done\n" + ] + } + ], + "source": [ + "if not os.path.exists('%s.so' % rfldct):\n", + " # get command line arguments for compiler from cling\n", + " try:\n", + " clingflags = subprocess.check_output(\n", + " ['cling-config', # utility installed by pip when installing cppyy\n", + " '--cppflags'])\n", + " except subprocess.CalledProcessError as e:\n", + " print('cling-config failed (%d):' % e.returncode, e.output)\n", + " raise\n", + " else:\n", + " print('cling-config done')\n", + "\n", + " # compile generated file\n", + " try:\n", + " subprocess.check_output(\n", + " ['g++', # C++ compiler\n", + " '-fPIC', # require position independent code\n", + " '-shared', # generate shared library\n", + " '-o', '%s.so'%rfldct, # output file\n", + " '-I'+GSL_HOME, # include search path for GSL headers\n", + " '%s_rflx.cpp'%rfldct]+ # intermediate file to compile\n", + " clingflags.split()+ # extra flags provided by cling\n", + " ['-lgsl', '-lgslcblas']) # link in GSL and GSLBLAS\n", + " except subprocess.CalledProcessError as e:\n", + " print('compilation failed (%d):' % e.returncode, e.output)\n", + " else:\n", + " print('compilation done')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# load the generated dictionary\n", + "cppyy.load_reflection_info(rfldct)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/etc/valgrind-cppyy-cling.supp b/bindings/pyroot_experimental/cppyy/cppyy/etc/valgrind-cppyy-cling.supp new file mode 100644 index 0000000000000..610e8f9a726f6 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/etc/valgrind-cppyy-cling.supp @@ -0,0 +1,575 @@ +# +# Cling/LLVM code generation: since cppyy is a python module, there is no +# proper control over offload ands since functions may be used during atexit() +# calls, we'll just leak all JITed code rather than risk spurious crashes in +# hard-to-reproduce cases. +# +{ + lazily JITed callfuncs + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN4llvm4UsernwEm + fun:_ZN5clang7CodeGen13CodeGenModule23GetOrCreateLLVMFunctionEN4llvm9StringRefEPNS2_4TypeENS_10GlobalDeclEbbbNS2_13AttributeListENS0_15ForDefinition_tE +} + +{ + lazily JITed template instantiations + match-leak-kinds: possible + fun:_Znwm + ... + fun:__ZN5clang24TemplateDeclInstantiator18VisitCXXMethodDeclEPNS_13CXXMethodDeclEPNS_21TemplateParameterListEb +} + +{ + lazily JITed template instantiations + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang4Sema38InstantiateClassTemplateSpecializationENS_14SourceLocationEPNS_31ClassTemplateSpecializationDeclENS_26TemplateSpecializationKindEb +} + +{ + lazily JITed global operators + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN4llvm4UsernwEmj + fun:_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineEPS1_ +} + +{ + lazily JITed casts + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN4llvm4UsernwEmj + fun:_ZN4llvm8CastInst6CreateENS_11Instruction7CastOpsEPNS_5ValueEPNS_4TypeERKNS_5TwineEPS1_ +} + +{ + lazily JITed casts + Memcheck:Leak + match-leak-kinds: definite + fun:_Znam + ... + fun:_ZN20TClingDataMemberInfo6OffsetEv +} + +{ + cling initialization + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5cling11InterpreterC1EiPKPKcS2_bb +} + +{ + clang module symbol table + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:allocate + ... + fun:_ZN5clang7CodeGen13CodeGenModule7ReleaseEv + fun:_ZN5cling17IncrementalParser18codeGenTransactionEPNS_11TransactionE + fun:_ZN5cling17IncrementalParser17commitTransactionEN4llvm14PointerIntPairIPNS_11TransactionELj2ENS0_12EParseResultENS1_21PointerLikeTypeTraitsIS4_EEEE +} + +{ + CodeGen + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZL21EmitMemberInitializerRN5clang7CodeGen15CodeGenFunctionEPKNS_13CXXRecordDeclEPNS_18CXXCtorInitializerEPKNS_18CXXConstructorDeclERNS0_15FunctionArgListE +} + +{ + CodeGen cleanup + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZL11EmitCleanupRN5clang7CodeGen15CodeGenFunctionEPNS0_12EHScopeStack7CleanupENS4_5FlagsEPN4llvm5ValueE +} + +{ + CodeGen globals + Memcheck:Leak + match-leak-kinds: possible + fun:_Zn* + ... + fun:_ZN5clang7CodeGen13CodeGenModule20EmitGlobalDefinitionENS_10GlobalDeclEPN4llvm11GlobalValueE +} + +{ + CodeGen cleanup + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN4llvm4UsernwEmj + ... + fun:_ZN5clang7CodeGen15CodeGenFunction15PopCleanupBlockEb +} + +{ + cling Module use + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN4llvm6ModuleC1ENS_9StringRefERNS_11LLVMContextE +} + +{ + cling Module use + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang17CodeGeneratorImpl11StartModuleERKSsRN4llvm11LLVMContextERKNS_14CodeGenOptionsE +} + +{ + cling macro + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang19PreprocessorOptions11addMacroDefEN4llvm9StringRefE +} + +{ + llvm target + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN4llvm21RegisterTargetMachineINS_16X86TargetMachineEE9AllocatorERKNS_6TargetENS_9StringRefES6_S6_RKNS_13TargetOptionsENS_5Reloc5ModelENS_9CodeModel5ModelENS_10CodeGenOpt5LevelE +} + +{ + CodeGent SetFunctionAttributes + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang7CodeGen13CodeGenModule21SetFunctionAttributesENS_10GlobalDeclEPN4llvm8FunctionEbb +} + +{ + clang using statement + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZNK5clang11DeclContext16using_directivesEv +} + +{ + clang 'make decl visible' + Memcheck:Leak + match-leak-kinds: possible + ... + fun:_ZN5clang11DeclContext28makeDeclVisibleInContextImplEPNS_9NamedDeclEb +} + +{ + clang visibility + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZL24getExplicitVisibilityAuxPKN5clang9NamedDeclENS0_22ExplicitVisibilityKindEb +} + +{ + clang result of lookup declaration name + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang11DeclContext6lookupENS_15DeclarationNameE +} + +{ + clang result of lookup declaration name + Memcheck:Leak + match-leak-kinds: possible + fun:malloc + ... + fun:_ZN5clang11DeclContext6lookupENS_15DeclarationNameE +} + +{ + clang ASTReader + Memcheck:Leak + match-leak-kinds: possible + fun:malloc + ... + fun:_ZN5clang9ASTReader* +} + +{ + clang ASTReader + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang9ASTReader* +} + +{ + clang ASTReader + Memcheck:Leak + match-leak-kinds: possible + fun:realloc + ... + fun:_ZN5clang9ASTReader* +} + +{ + Sema ActOnEndOfTranslation + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang4Sema25ActOnEndOfTranslationUnitEv +} + +{ + Function CodeGen + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang7CodeGen15CodeGenFunction12GenerateCodeENS_10GlobalDeclEPN4llvm8FunctionERKNS0_14CGFunctionInfoE +} + +{ + clang CodeGenFunction Emit* + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang7CodeGen15CodeGenFunction*Emit* +} + +{ + clang CodeGenFunction global state + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN4llvm4UsernwEmj + ... + fun:_ZL21emitPointerArithmeticRN5clang7CodeGen15CodeGenFunctionERKN12_GLOBAL__N_19BinOpInfoEb +} + +{ + clang CodeGenModule Emit* + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang7CodeGen13CodeGenModule*Emit* +} + +{ + clang CodeGenModule Emit* + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang7CodeGen13CodeGenModule*emit* +} + +{ + CodeGen VTables + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN4llvm4UsernwEmj + ... + fun:_ZN5clang7CodeGen14CodeGenVTables17* +} + +{ + clang AddIncludePath + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang19HeaderSearchOptions7AddPathEN4llvm9StringRefENS_8frontend15IncludeDirGroupEbb +} + +{ + clang FileManager + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang12HeaderSearch10LookupFileEN4llvm9StringRefENS_14SourceLocationEbPKNS_15DirectoryLookupERS6_NS1_8ArrayRefISt4pairIPKNS_9FileEntryEPKNS_14DirectoryEntryEEEEPNS1_15SmallVectorImplIcEESK_PNS_9ModuleMap11KnownHeaderEbbb +} + +{ + clang getFile + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang11FileManager7getFileEN4llvm9StringRefEbb +} + +{ + clang ScalarExprEmitter + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN12_GLOBAL__N_117ScalarExprEmitter20EmitScalarConversionEPN4llvm5ValueEN5clang8QualTypeES5_ +} + +{ + llvm pass manager + Memcheck:Leak + match-leak-kinds: possible + ... + fun:_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE +} + + +{ + llvm PassManager initialization + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN4llvm13FPPassManager16doInitializationERNS_6ModuleE +} + +{ + llvm SubTarget initialization + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN4llvm15MCSubtargetInfo19InitMCSubtargetInfoENS_9StringRefES1_S1_NS_8ArrayRefINS_18SubtargetFeatureKVEEES4_PKNS_15SubtargetInfoKVEPKNS_19MCWriteProcResEntryEPKNS_19MCWriteLatencyEntryEPKNS_18MCReadAdvanceEntryEPKNS_10InstrStageEPKjSL_ +} + +{ + cling dynamic library manager + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5cling21DynamicLibraryManager11loadLibraryERKSsb +} + +{ + llvm compile layer + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN4llvm18ObjectMemoryBufferC1EONS_15SmallVectorImplIcEE + fun:_ZNK4llvm14SimpleCompilerclERNS_6ModuleE + fun:_ZNSt17_Function_handlerIFN4llvm6object12OwningBinaryINS1_10ObjectFileEEERNS0_6ModuleEENS0_14SimpleCompilerEE9_M_invokeERKSt9_Any_dataS6_ + fun:_ZNKSt8functionIFN4llvm6object12OwningBinaryINS1_10ObjectFileEEERNS0_6ModuleEEEclES6_ + fun:_ZN4llvm14IRCompileLayerINS_18ObjectLinkingLayerIN5cling14IncrementalJIT19NotifyObjectLoadedTEEEE12addModuleSetISt6vectorIPNS_6ModuleESaISA_EEEESt14_List_iteratorINS_22ObjectLinkingLayerBase15LinkedObjectSetEET_St10unique_ptrINS_19RTDyldMemoryManagerESt14default_deleteISJ_EE +} + +{ + InputValidator string + Memcheck:Leak + match-leak-kinds: possible + ... + fun:_ZNSs15_M_replace_safeEmmPKcm + fun:_ZN5cling14InputValidator5resetEv +} + +{ + cling pointer checker on uninitialized memory (ROOT-8144) + Memcheck:Param + write(buf) + fun:__write_nocancel + ... + fun:cling_runtime_internal_throwIfInvalidPointer +} + + +# +# ROOT/meta wrappers to JITed Cling code, same as above: kept around so as to +# not have to deal with complicated shutdown sequences. +# +{ + typedef string + Memcheck:Leak + match-leak-kinds: definite + fun:_Znam + ... + fun:_ZN10TClassEdit14ResolveTypedefB5cxx11EPKcb +} + +{ + TEnums leak + Memcheck:Leak + fun:_Znwm + fun:_ZN8TStorage11ObjectAllocEm + fun:_ZN7TObjectnwEm + fun:_ZN5TROOT14GetListOfEnumsEv +} + +{ + list of enums + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + fun:_ZN8TStorage11ObjectAllocEm + fun:_ZN7TObjectnwEm + fun:_ZN12TListOfEnumsC1EP6TClass +} + +{ + list of enums + Memcheck:Leak + match-leak-kinds: definite + fun:_Znwm + fun:_ZN8TStorage11ObjectAllocEm + fun:operator new + fun:_ZN6TClass14GetListOfEnumsEb +} + +{ + TObject::TObject() uses uninitialized value when allocated on the stack + Memcheck:Cond + fun:_ZN7TObjectC1Ev +} + +{ + TObject::TObject() uses uninitialized value when allocated on the stack + Memcheck:Cond + fun:TObject +} + +{ + dictgen fwd decls + Memcheck:Leak + match-leak-kinds: possible + fun:_Znwm + ... + fun:_ZN5clang6Parser30ParseCXXClassMemberDeclarationENS_15AccessSpecifierEPNS_13AttributeListERKNS0_18ParsedTemplateInfoEPNS_21ParsingDeclRAIIObjectE +} + +{ + exception translation + Memcheck:Leak + match-leak-kinds: possible + fun:_Znam + ... + fun:_ZL26HandleInterpreterExceptionPN5cling13MetaProcessorEPKcRNS_11Interpreter17CompilationResultEPNS_5ValueE +} + +{ + Ignore deficient in dlopen and/or pthread and/or valgrind. See for example https://bugs.kde.org/show_bug.cgi?id=358980. + Memcheck:Leak + match-leak-kinds: definite + ... + fun:_dl_signal_error +} + + +# +# Python Arena magic checkers +# +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Addr4 + fun:Py_ADDRESS_IN_RANGE +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Value4 + fun:Py_ADDRESS_IN_RANGE +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64) + Memcheck:Value8 + fun:Py_ADDRESS_IN_RANGE +} + +{ + ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value + Memcheck:Cond + fun:Py_ADDRESS_IN_RANGE +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Addr4 + fun:PyObject_Free +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Addr4 + fun:PyObject_Free +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 8 + Memcheck:Value8 + fun:PyObject_Free +} + +{ + ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value + Memcheck:Cond + fun:PyObject_Free +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 4 + Memcheck:Addr4 + fun:PyObject_Realloc +} + +{ + ADDRESS_IN_RANGE/Invalid read of size 8 + Memcheck:Value8 + fun:PyObject_Realloc +} + +{ + ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value + Memcheck:Cond + fun:PyObject_Realloc +} + +{ + Handle PyMalloc confusing valgrind (possibly leaked) + Memcheck:Leak + fun:malloc + ... + fun:_PyObject_GC_Resize +} + +{ + Handle PyMalloc confusing valgrind (possibly leaked) + Memcheck:Leak + fun:realloc + ... + fun:_PyObject_GC_Resize +} + +{ + Handle PyMalloc confusing valgrind (possibly leaked) + Memcheck:Leak + fun:malloc + ... + fun:_PyObject_GC_NewVar +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/__init__.py b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/__init__.py new file mode 100644 index 0000000000000..f16b233e991f9 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/__init__.py @@ -0,0 +1,150 @@ +"""Dynamic C++ bindings generator. + +This module provides dynamic bindings to C++ through Cling, the LLVM-based C++ +interpreter, allowing interactive mixing of Python and C++. Example: + + >>> import cppyy + >>> cppyy.cppdef(\"\"\" + ... class MyClass { + ... public: + ... MyClass(int i) : m_data(i) {} + ... int m_data; + ... };\"\"\") + True + >>> from cppyy.gbl import MyClass + >>> m = MyClass(42) + >>> cppyy.cppdef(\"\"\" + ... void say_hello(MyClass* m) { + ... std::cout << "Hello, the number is: " << m->m_data << std::endl; + ... }\"\"\") + True + >>> MyClass.say_hello = cppyy.gbl.say_hello + >>> m.say_hello() + Hello, the number is: 42 + >>> m.m_data = 13 + >>> m.say_hello() + Hello, the number is: 13 + >>> + +For full documentation, see: + https://cppyy.readthedocs.io/ + +""" + +__author__ = 'Wim Lavrijsen ' + +__all__ = [ + 'cppdef', # declare C++ source to Cling + 'include', # load and jit a header file + 'load_library', # load a shared library + 'sizeof', # size of a C++ type + 'typeid', # typeid of a C++ type + 'add_include_path', # add a path to search for headers + 'add_autoload_map', # explicitly include an autoload map + ] + +import os, sys + +try: + import __pypy__ + del __pypy__ + ispypy = True +except ImportError: + ispypy = False + +# import separately instead of in the above try/except block for easier to +# understand tracebacks +if ispypy: + from ._pypy_cppyy import * +else: + from ._cpython_cppyy import * +del ispypy + + +#- allow importing from gbl -------------------------------------------------- +sys.modules['cppyy.gbl'] = gbl +sys.modules['cppyy.gbl.std'] = gbl.std + + +#- enable auto-loading ------------------------------------------------------- +try: gbl.gInterpreter.EnableAutoLoading() +except: pass + + +#--- pythonization factories ------------------------------------------------- +from . import _pythonization as py +py._set_backend(_backend) + + +#--- CFFI style interface ---------------------------------------------------- +def cppdef(src): + """Declare C++ source to Cling.""" + gbl.gInterpreter.Declare(src) + +def load_library(name): + if name[:3] != 'lib': + if not gbl.gSystem.FindDynamicLibrary(gbl.TString(name), True) and\ + gbl.gSystem.FindDynamicLibrary(gbl.TString('lib'+name), True): + name = 'lib'+name + sc = gbl.gSystem.Load(name) + if sc == -1: + raise RuntimeError("Unable to load library "+name) + +def include(header): + """Load (and JIT) header file
    into Cling.""" + gbl.gInterpreter.ProcessLine('#include "%s"' % header) + +def c_include(header): + """Load (and JIT) header file
    into Cling.""" + gbl.gInterpreter.ProcessLine("""extern "C" { +#include "%s" +}""" % header) + +def add_include_path(path): + """Add a path to the include paths available to Cling.""" + if not os.path.isdir(path): + raise OSError("no such directory: %s" % path) + gbl.gInterpreter.AddIncludePath(path) + +def add_autoload_map(fname): + """Add the entries from a autoload (.rootmap) file to Cling.""" + if not os.path.isfile(fname): + raise OSError("no such file: %s" % fname) + gbl.gInterpreter.LoadLibraryMap(fname) + +def _get_name(tt): + if type(tt) == str: + return tt + try: + ttname = tt.__cppname__ + except AttributeError: + ttname = tt.__name__ + return ttname + +_sizes = {} +def sizeof(tt): + """Returns the storage size (in chars) of C++ type .""" + if not isinstance(tt, type) and not type(tt) == str: + tt = type(tt) + try: + return _sizes[tt] + except KeyError: + sz = gbl.gInterpreter.ProcessLine("sizeof(%s);" % (_get_name(tt),)) + _sizes[tt] = sz + return sz + +_typeids = {} +def typeid(tt): + """Returns the C++ runtime type information for type .""" + if not isinstance(tt, type): + tt = type(tt) + try: + return _typeids[tt] + except KeyError: + tidname = 'typeid_'+str(len(_typeids)) + gbl.gInterpreter.ProcessLine( + "namespace _cppyy_internal { auto* %s = &typeid(%s); }" %\ + (tidname, _get_name(tt),)) + tid = getattr(gbl._cppyy_internal, tidname) + _typeids[tt] = tid + return tid diff --git a/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_cpython_cppyy.py b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_cpython_cppyy.py new file mode 100644 index 0000000000000..1e3a0eb868714 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_cpython_cppyy.py @@ -0,0 +1,123 @@ +""" CPython-specific touch-ups +""" + +from . import _stdcpp_fix +from cppyy_backend import loader + +__all__ = [ + 'gbl', + 'load_reflection_info', + 'addressof', + 'bind_object', + 'nullptr', + '_backend', + ] + +# first load the dependency libraries of the backend, then pull in the +# libcppyy extension module +c = loader.load_cpp_backend() +import libcppyy as _backend +_backend._cpp_backend = c + + +import sys +if sys.hexversion < 0x3000000: + # TODO: this reliese on CPPOverload cooking up a func_code object, which atm + # is simply not implemented for p3 :/ + + # convince inspect that PyROOT method proxies are possible drop-ins for python + # methods and classes for pydoc + import inspect + + inspect._old_isfunction = inspect.isfunction + def isfunction(object): + if type(object) == _backend.CPPOverload and not object.im_class: + return True + return inspect._old_isfunction( object ) + inspect.isfunction = isfunction + + inspect._old_ismethod = inspect.ismethod + def ismethod(object): + if type(object) == _backend.CPPOverload: + return True + return inspect._old_ismethod(object) + inspect.ismethod = ismethod + del isfunction, ismethod + + +### template support --------------------------------------------------------- +class Template(object): # expected/used by ProxyWrappers.cxx in CPyCppyy + def __init__(self, name): + self.__name__ = name + + def __repr__(self): + return "" % (self.__name__, hex(id(self))) + + def __call__(self, *args): + newargs = [self.__name__] + for arg in args: + if type(arg) == str: + arg = ','.join(map(lambda x: x.strip(), arg.split(','))) + newargs.append(arg) + result = _backend.MakeCppTemplateClass(*newargs) + + # special case pythonization (builtin_map is not available from the C-API) + if 'push_back' in result.__dict__: + def iadd(self, ll): + [self.push_back(x) for x in ll] + return self + result.__iadd__ = iadd + + return result + + def __getitem__(self, *args): + if args and type(args[0]) == tuple: + return self.__call__(*(args[0])) + return self.__call__(*args) + +_backend.Template = Template + + +#- :: and std:: namespaces --------------------------------------------------- +gbl = _backend.CreateScopeProxy('') +gbl.__class__.__repr__ = lambda cls : '' % id(cls) +gbl.std = _backend.CreateScopeProxy('std') +# for move, we want our "pythonized" one, not the C++ template +gbl.std.move = _backend.move + + +#- fake namespace for interactive lazy lookups ------------------------------- +class InteractiveLazy(object): + def __getattr__(self, attr): + if attr == '__all__': + caller = sys.modules[sys._getframe(1).f_globals['__name__']] + _backend._set_cpp_lazy_lookup(caller.__dict__) + return [] + +sys.modules['cppyy.interactive'] = InteractiveLazy() +del InteractiveLazy + + +#- add to the dynamic path as needed ----------------------------------------- +import os +def add_default_paths(): + try: + for line in open('/etc/ld.so.conf'): + f = line.strip() + if (os.path.exists(f)): + gbl.gSystem.AddDynamicPath(f) + except IOError: + pass +add_default_paths() +del add_default_paths + + +#- exports ------------------------------------------------------------------- +addressof = _backend.addressof +bind_object = _backend.bind_object +nullptr = _backend.nullptr + +def load_reflection_info(name): + sc = gbl.gSystem.Load(name) + if sc == -1: + raise RuntimeError("Unable to load reflection library "+name) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pypy_cppyy.py b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pypy_cppyy.py new file mode 100644 index 0000000000000..dc47c9e750b65 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pypy_cppyy.py @@ -0,0 +1,51 @@ +""" PyPy-specific touch-ups +""" + +from . import _stdcpp_fix + +import os, sys +from cppyy_backend import loader + +__all__ = [ + 'gbl', + 'addressof', + 'bind_object', + 'nullptr', + ] + +# first load the dependency libraries of the backend, then +# pull in the built-in low-level cppyy +c = loader.load_cpp_backend() +os.environ['CPPYY_BACKEND_LIBRARY'] = c._name + +# some older versions can be fixed up through a compatibility +# module on the python side; load it, if available +try: + import cppyy_compat +except ImportError: + pass + +import _cppyy as _backend # built-in module +try: + _backend._post_import_startup() +except AttributeError: + pass +_backend._cpp_backend = c + + +#- exports ------------------------------------------------------------------- +import sys +_thismodule = sys.modules[__name__] +for name in __all__: + setattr(_thismodule, name, getattr(_backend, name)) +del name, sys +nullptr = _backend.nullptr + +def load_reflection_info(name): + sc = _backend.gbl.gSystem.Load(name) + if sc == -1: + raise RuntimeError("Unable to load reflection library "+name) + +# add other exports to all +__all__.append('load_reflection_info') +__all__.append('_backend') diff --git a/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pythonization.py b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pythonization.py new file mode 100644 index 0000000000000..a580eb47fee9e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_pythonization.py @@ -0,0 +1,341 @@ +""" Pythonization API. +""" + +__all__ = [ + 'make_interface', + ] + +def _set_backend(backend): + global _backend + _backend = backend + + +# user-provided, general pythonizations +def add_pythonization(pythonizor, scope = ''): + """ should be a callable taking two arguments: a class proxy, + and its C++ name. It is called on each time a named class from + (the global one by default, but a relevant C++ namespace is recommended) + is bound. + """ + return _backend.add_pythonization(pythonizor, scope) + +def remove_pythonization(pythonizor, scope = ''): + """Remove previously registered from . + """ + return _backend.remove_pythonization(pythonizor, scope) + + +# prevent auto-casting (e.g. for interfaces) +def pin_type(klass): + return _backend._pin_type(klass) + +# TODO: move this to something like cppyy.lowlevel +def cast(some_object, new_type): + return _backend.Cast(some_object, new_type) + + +# exception pythonizations +def add_exception_mapping(cpp_exception, py_exception): + _backend.UserExceptions[cpp_exception] = py_exception + + + +#--- Pythonization factories -------------------------------------------- + +def set_gil_policy(match_class, match_method, release_gil=True): + return set_method_property(match_class, match_method, '_threaded', int(release_gil)) + + +def set_ownership_policy(match_class, match_method, python_owns_result): + return set_method_property(match_class, match_method, + '_creates', int(python_owns_result)) + +def set_smart_ptr_policy(match_class, match_method, manage_smart_ptr=False): + return set_method_property(match_class, match_method, + '_manage_smart_ptr', bool(manage_smart_ptr)) + + +# NB: Ideally, we'd use the version commented out below, but for now, we +# make do with the hackier version here. +def rename_attribute(match_class, orig_attribute, new_attribute, keep_orig=False): + class attribute_pythonizor(object): + class getter(object): + def __init__(self, attr): + self.attr = attr + def __call__(self, obj): + return getattr(obj, self.attr) + + class setter(object): + def __init__(self, attr): + self.attr = attr + def __call__(self, obj, value): + return setattr(obj, self.attr, value) + + class deleter(object): + def __init__(self, attr): + self.attr = attr + def __call__(self, obj): + return delattr(obj, self.attr) + + def __init__(self, match_class, orig_attribute, new_attribute, keep_orig): + import re + self.match_class = re.compile(match_class) + self.match_attr = re.compile(orig_attribute) + self.new_attr = new_attribute + self.keep_orig = keep_orig + + def __call__(self, obj, name): + if not self.match_class.match(name): + return + for k in dir(obj): #.__dict__: + if self.match_attr.match(k): + tmp = property(self.getter(k), self.setter(k), self.deleter(k)) + setattr(obj, self.new_attr, tmp) + #if not self.keep_orig: delattr(obj, k) + return attribute_pythonizor(match_class, orig_attribute, new_attribute, keep_orig) + +# def rename_attribute(match_class, orig_attribute, new_attribute, keep_orig=False): +# class method_pythonizor: +# def __init__(self, match_class, orig_attribute, new_attribute, keep_orig): +# import re +# self.match_class = re.compile(match_class) +# self.match_attr = re.compile(orig_attribute) +# self.new_attr = new_attribute +# self.keep_orig = keep_orig + +# def __call__(self, obj, name): +# import sys +# if not self.match_class.match(name): +# return +# sys.stderr.write("%s %s %s %s" % ("!!!", obj, name, "\n")) +# for k in dir(obj): #obj.__dict__: +# if not self.match_attr.match(k): continue +# try: +# tmp = getattr(obj, k) +# except Exception as e: +# continue +# setattr(obj, self.new_attr, tmp) +# if not self.keep_orig: delattr(obj, k) +# return method_pythonizor(match_class, orig_attribute, new_attribute, keep_orig) + + +# Shared with PyPy: + +def add_overload(match_class, match_method, overload): + class method_pythonizor(object): + def __init__(self, match_class, match_method, overload): + import re + self.match_class = re.compile(match_class) + self.match_method = re.compile(match_method) + self.overload = overload + + def __call__(self, obj, name): + if not self.match_class.match(name): + return + for k in dir(obj): #.__dict__: + try: + tmp = getattr(obj, k) + except: + continue + if self.match_method.match(k): + try: + tmp.__add_overload__(overload) + except AttributeError: pass + return method_pythonizor(match_class, match_method, overload) + + +def compose_method(match_class, match_method, g): + class composition_pythonizor(object): + def __init__(self, match_class, match_method, g): + import re + self.match_class = re.compile(match_class) + self.match_method = re.compile(match_method) + self.g = g + + def __call__(self, obj, name): + if not self.match_class.match(name): + return + g = self.g + for k in obj.__dict__: + if not self.match_method.match(k): + continue + try: + f = getattr(obj, k) + except: + continue + def make_fun(f, g): + def h(self, *args, **kwargs): + return g(self, f(self, *args, **kwargs)) + return h + h = make_fun(f, g) + setattr(obj, k, h) + return composition_pythonizor(match_class, match_method, g) + + +def set_method_property(match_class, match_method, prop, value): + class method_pythonizor(object): + def __init__(self, match_class, match_method, prop, value): + import re + self.match_class = re.compile(match_class) + self.match_method = re.compile(match_method) + self.prop = prop + self.value = value + + def __call__(self, obj, name): + if not self.match_class.match(name): + return + for k in dir(obj): #.__dict__: + try: + tmp = getattr(obj, k) + except: + continue + if self.match_method.match(k): + setattr(tmp, self.prop, self.value) + return method_pythonizor(match_class, match_method, prop, value) + + +def make_property(match_class, match_get, match_set=None, match_del=None, prop_name=None): + class property_pythonizor(object): + def __init__(self, match_class, match_get, match_set, match_del, prop_name): + import re + self.match_class = re.compile(match_class) + + self.match_get = re.compile(match_get) + match_many_getters = self.match_get.groups == 1 + + if match_set: + self.match_set = re.compile(match_set) + match_many_setters = self.match_set.groups == 1 + if match_many_getters ^ match_many_setters: + raise ValueError('Must match getters and setters equally') + else: + self.match_set = None + + if match_del: + self.match_del = re.compile(match_del) + match_many_deleters = self.match_del.groups == 1 + if match_many_getters ^ match_many_deleters: + raise ValueError('Must match getters and deleters equally') + else: + self.match_del = None + + self.match_many = match_many_getters + if not (self.match_many or prop_name): + raise ValueError("If not matching properties by regex, need a property name with exactly one substitution field") + if self.match_many and prop_name: + if prop_name.format(').!:(') == prop_name: + raise ValueError("If matching properties by regex and providing a property name, the name needs exactly one substitution field") + + self.prop_name = prop_name + + def make_get_del_proxy(self, getter): + class proxy(object): + def __init__(self, getter): + self.getter = getter + + def __call__(self, obj): + return getattr(obj, self.getter)() + return proxy(getter) + + def make_set_proxy(self, setter): + class proxy(object): + def __init__(self, setter): + self.setter = setter + + def __call__(self, obj, arg): + return getattr(obj, self.setter)(arg) + return proxy(setter) + + def __call__(self, obj, name): + if not self.match_class.match(name): + return + + names = [] + named_getters = {} + named_setters = {} + named_deleters = {} + + if not self.match_many: + fget, fset, fdel = None, None, None + + for k in dir(obj): #.__dict__: + match = self.match_get.match(k) + try: + tmp = getattr(obj, k) + except: + continue + if match and hasattr(tmp, '__call__'): + if self.match_many: + name = match.group(1) + named_getters[name] = k + else: + fget = self.make_get_del_proxy(k) + break + + if self.match_set: + for k in dir(obj): #.__dict__: + match = self.match_set.match(k) + try: + tmp = getattr(obj, k) + except: + continue + if match and hasattr(tmp, '__call__'): + if self.match_many: + name = match.group(1) + named_setters[name] = k + else: + fset = self.make_set_proxy(k) + break + + if self.match_del: + for k in dir(obj): #.__dict__: + match = self.match_del.match(k) + try: + tmp = getattr(obj, k) + except: + continue + if match and hasattr(tmp, '__call__'): + if self.match_many: + name = match.group(1) + named_deleters[name] = k + else: + fdel = self.make_get_del_proxy(k) + break + + if not self.match_many: + new_prop = property(fget, fset, fdel) + setattr(obj, self.prop_name, new_prop) + return + + names += list(named_getters.keys()) + names += list(named_setters.keys()) + names += list(named_deleters.keys()) + names = set(names) + + properties = [] + for name in names: + if name in named_getters: + fget = self.make_get_del_proxy(named_getters[name]) + else: + fget = None + + if name in named_setters: + fset = self.make_set_proxy(named_setters[name]) + else: + fset = None + + if name in named_deleters: + fdel = self.make_get_del_proxy(named_deleters[name]) + else: + fdel = None + + new_prop = property(fget, fset, fdel) + if self.prop_name: + prop_name = self.prop_name.format(name) + else: + prop_name = name + + setattr(obj, prop_name, new_prop) + + return property_pythonizor(match_class, match_get, match_set, match_del, prop_name) + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_stdcpp_fix.py b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_stdcpp_fix.py new file mode 100644 index 0000000000000..90c3687b41696 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy/_stdcpp_fix.py @@ -0,0 +1,13 @@ +import sys + +# It may be that the interpreter (wether python or pypy-c) was not linked +# with C++; force its loading before doing anything else (note that not +# linking with C++ spells trouble anyway for any C++ libraries ...) +if 'linux' in sys.platform and 'GCC' in sys.version: + # TODO: check executable to see whether linking indeed didn't happen + import ctypes + try: + stdcpp = ctypes.CDLL('libstdc++.so', ctypes.RTLD_GLOBAL) + except Exception: + pass +# TODO: what if Linux/clang and what if Mac? diff --git a/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy_compat/__init__.py b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy_compat/__init__.py new file mode 100644 index 0000000000000..d9d360553699d --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/python/cppyy_compat/__init__.py @@ -0,0 +1,69 @@ +"""Compatibility layer for PyPy 5.7-9 +""" + +def pypy58_57_compat(): + import imp, os + + # first load and move the builtin cppyy module + if not 'cppyy' in sys.modules: + try: + olddir = os.getcwd() + from cppyy_backend import loader + c = loader.load_cpp_backend() + # move to the location of the backend, just in case '.' is + # in the dynloader's path + os.chdir(os.path.dirname(c._name)) + imp.init_builtin('cppyy') + except ImportError: + raise EnvironmentError('"%s" missing in LD_LIBRARY_PATH' %\ + os.path.dirname(c._name)) + finally: + os.chdir(olddir) + + sys.modules['_cppyy'] = sys.modules['cppyy'] + del sys.modules['cppyy'] + + # now locate and load the pip cppyy module + decdir = os.path.join(os.path.dirname(__file__), os.path.pardir) + for path in sys.path: # walk over sys.path skips builtins + try: + fp, pathname, description = imp.find_module('cppyy', [path]) + sys.modules['cppyy'] = imp.load_module('cppyy_', fp, pathname, description) + break + except ImportError: + pass + + # copy over the _cppyy functions into cppyy + old = sys.modules['_cppyy'] + new = sys.modules['cppyy'] + for name in dir(old): + if not hasattr(new, name): + setattr(new, name, getattr(old, name)) + +# for pypy5.9 we may need to move to the location of the backend, if '.' happens +# to be in LD_LIBRARY_PATH, but not the full directory +def py59_compat(): + import os, cppyy_backend + olddir = os.getcwd() + c = cppyy_backend.loader.load_cpp_backend() + os.chdir(os.path.dirname(c._name)) + try: + global __name__ + actual_name = __name__; __name__ = '' + import _cppyy as _backend + except ImportError: + raise EnvironmentError('"%s" missing in LD_LIBRARY_PATH' % os.path.dirname(c._name)) + finally: + __name__ = actual_name + os.chdir(olddir) + _backend.nullptr = _backend.gbl.nullptr + + +import sys +version = sys.pypy_version_info +if version[0] == 5: + if 6 < version[1] <= 8: + pypy58_57_compat() + elif version[1] == 9: + py59_compat() +del version, sys diff --git a/bindings/pyroot_experimental/cppyy/cppyy/setup.cfg b/bindings/pyroot_experimental/cppyy/cppyy/setup.cfg new file mode 100644 index 0000000000000..8debd01371e4f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/setup.cfg @@ -0,0 +1,5 @@ +[bdist_wheel] +universal=0 + +[metadata] +license_file = LICENSE.txt diff --git a/bindings/pyroot_experimental/cppyy/cppyy/setup.py b/bindings/pyroot_experimental/cppyy/cppyy/setup.py new file mode 100755 index 0000000000000..e121ba6ae5b6b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/setup.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python + +import os, glob +from setuptools import setup, find_packages, Extension +from codecs import open + + +here = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(here, 'README.rst'), encoding='utf-8') as f: + long_description = f.read() + +add_pkg = ['cppyy'] +try: + import __pypy__, sys + version = sys.pypy_version_info + requirements = ['cppyy-backend'] + if version[0] == 5: + if version[1] <= 9: + requirements = ['cppyy-cling<6.12', 'cppyy-backend<0.3'] + add_pkg += ['cppyy_compat'] + elif version[1] <= 10: + requirements = ['cppyy-cling', 'cppyy-backend<0.4'] +except ImportError: + # CPython + requirements = ['CPyCppyy>=1.0.0'] + +setup( + name='cppyy', + version='1.0.0', + description='Cling-based Python-C++ bindings', + long_description=long_description, + + url='http://cppyy.readthedocs.org', + + # Author details + author='Wim Lavrijsen', + author_email='WLavrijsen@lbl.gov', + + license='LBNL BSD', + + classifiers=[ + 'Development Status :: 5 - Production/Stable', + + 'Intended Audience :: Developers', + + 'Topic :: Software Development', + 'Topic :: Software Development :: Interpreters', + + 'License :: OSI Approved :: BSD License', + + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: Implementation :: PyPy', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: C', + 'Programming Language :: C++', + + 'Natural Language :: English' + ], + + install_requires=requirements, + + keywords='C++ bindings data science', + + package_dir={'': 'python'}, + packages=find_packages('python', include=add_pkg), +) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/Makefile b/bindings/pyroot_experimental/cppyy/cppyy/test/Makefile new file mode 100644 index 0000000000000..8a56b4f0f6a29 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/Makefile @@ -0,0 +1,35 @@ +dicts = advancedcppDict.so \ + advancedcpp2Dict.so \ + cpp11featuresDict.so \ + datatypesDict.so \ + example01Dict.so \ + fragileDict.so \ + operatorsDict.so \ + overloadsDict.so \ + pythonizablesDict.so \ + std_streamsDict.so \ + stltypesDict.so \ + templatesDict.so +all : $(dicts) + +genreflex_flags := $(shell genreflex --cppflags) +cppflags=$(shell cling-config --cppflags) $(genreflex_flags) -O3 -fPIC + +PLATFORM := $(shell uname -s) +ifeq ($(PLATFORM),Darwin) + cppflags+=-dynamiclib -single_module -arch x86_64 -undefined dynamic_lookup -Wno-delete-non-virtual-dtor +endif + +%Dict.so: %_rflx.cpp %.cxx + $(CXX) $(cppflags) -shared -o $@ $^ + +%_rflx.cpp: %.h %.xml + genreflex $< --selection=$*.xml --rootmap=$*Dict.rootmap --rootmap-lib=$*Dict.so + +.PHONY: test clean + +test: + pytest test_*.py + +clean: + -rm -f $(dicts) $(subst .so,.rootmap,$(dicts)) $(subst Dict.so,_rflx_rdict.pcm,$(dicts)) $(subst Dict.so,_rflx.cpp,$(dicts)) $(wildcard *.pyc) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/__init__.py b/bindings/pyroot_experimental/cppyy/cppyy/test/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.cxx new file mode 100644 index 0000000000000..94d237148cb06 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.cxx @@ -0,0 +1,127 @@ +#include "advancedcpp.h" + +#include + + +// for testing of default arguments +#define IMPLEMENT_DEFAULTER_CLASS(type, tname) \ +tname##_defaulter::tname##_defaulter(type a, type b, type c) { \ + m_a = a; m_b = b; m_c = c; \ +} +IMPLEMENT_DEFAULTER_CLASS(short, short) +IMPLEMENT_DEFAULTER_CLASS(unsigned short, ushort) +IMPLEMENT_DEFAULTER_CLASS(int, int) +IMPLEMENT_DEFAULTER_CLASS(unsigned, uint) +IMPLEMENT_DEFAULTER_CLASS(long, long) +IMPLEMENT_DEFAULTER_CLASS(unsigned long, ulong) +IMPLEMENT_DEFAULTER_CLASS(long long, llong) +IMPLEMENT_DEFAULTER_CLASS(unsigned long long, ullong) +IMPLEMENT_DEFAULTER_CLASS(float, float) +IMPLEMENT_DEFAULTER_CLASS(double, double) + + +// for esoteric inheritance testing +a_class* create_c1() { return new c_class_1; } +a_class* create_c2() { return new c_class_2; } + +int get_a( a_class& a ) { return a.m_a; } +int get_b( b_class& b ) { return b.m_b; } +int get_c( c_class& c ) { return c.m_c; } +int get_d( d_class& d ) { return d.m_d; } + + +// for namespace testing +int a_ns::g_a = 11; +int a_ns::b_class::s_b = 22; +int a_ns::b_class::c_class::s_c = 33; +int a_ns::d_ns::g_d = 44; +int a_ns::d_ns::e_class::s_e = 55; +int a_ns::d_ns::e_class::f_class::s_f = 66; + +int a_ns::get_g_a() { return g_a; } +int a_ns::d_ns::get_g_d() { return g_d; } + + +// for template testing +template class T1; +template class T2 >; +template class T3; +template class T3, T2 > >; +template class a_ns::T4; +template class a_ns::T4 > >; + + +// helpers for checking pass-by-ref +void set_int_through_ref(int& i, int val) { i = val; } +int pass_int_through_const_ref(const int& i) { return i; } +void set_long_through_ref(long& l, long val) { l = val; } +long pass_long_through_const_ref(const long& l) { return l; } +void set_double_through_ref(double& d, double val) { d = val; } +double pass_double_through_const_ref(const double& d) { return d; } + + +// for math conversions testing +bool operator==(const some_comparable& c1, const some_comparable& c2 ) +{ + return &c1 != &c2; // the opposite of a pointer comparison +} + +bool operator!=( const some_comparable& c1, const some_comparable& c2 ) +{ + return &c1 == &c2; // the opposite of a pointer comparison +} + + +// a couple of globals for access testing +double my_global_double = 12.; +double my_global_array[500]; +static double sd = 1234.; +double* my_global_ptr = &sd; +const char my_global_string2[] = "zus jet teun"; + +// for life-line and identity testing +int some_class_with_data::some_data::s_num_data = 0; + + +// for testing multiple inheritance +multi1::~multi1() {} +multi2::~multi2() {} +multi::~multi() {} + + +// for testing calls to overloaded new +int new_overloader::s_instances = 0; + +void* new_overloader::operator new(std::size_t size) { + ++s_instances; + return ::operator new(size); +} + +void* new_overloader::operator new(std::size_t, void* p) throw() { + // no ++s_instances, as no memory is allocated + return p; +} + +void new_overloader::operator delete(void* p, std::size_t) { + if (p == 0) return; + --s_instances; + ::operator delete(p); +} + + +// overload order testing +int overload_one_way::gime() const { return 1; } +std::string overload_one_way::gime() { return "aap"; } + +std::string overload_the_other_way::gime() { return "aap"; } +int overload_the_other_way::gime() const { return 1; } + + +// exception handling testing +void Thrower::throw_anything() { + throw 1; +} + +void Thrower::throw_exception() { + throw std::runtime_error("C++ function failed"); +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.h b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.h new file mode 100644 index 0000000000000..d37544925ef79 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.h @@ -0,0 +1,432 @@ +#include +#include +#include + + +//=========================================================================== +#define DECLARE_DEFAULTER_CLASS(type, tname) \ +class tname##_defaulter { \ +public: \ + tname##_defaulter(type a = 11, type b = 22, type c = 33); \ + \ +public: \ + type m_a, m_b, m_c; \ +}; +DECLARE_DEFAULTER_CLASS(short, short) // for testing of default arguments +DECLARE_DEFAULTER_CLASS(unsigned short, ushort) +DECLARE_DEFAULTER_CLASS(int, int) +DECLARE_DEFAULTER_CLASS(unsigned, uint) +DECLARE_DEFAULTER_CLASS(long, long) +DECLARE_DEFAULTER_CLASS(unsigned long, ulong) +DECLARE_DEFAULTER_CLASS(long long, llong) +DECLARE_DEFAULTER_CLASS(unsigned long long, ullong) +DECLARE_DEFAULTER_CLASS(float, float) +DECLARE_DEFAULTER_CLASS(double, double) + + +//=========================================================================== +class base_class { // for simple inheritance testing +public: + base_class() { m_b = 1; m_db = 1.1; } + virtual ~base_class() {} + virtual int get_value() { return m_b; } + double get_base_value() { return m_db; } + + virtual base_class* cycle(base_class* b) { return b; } + virtual base_class* clone() { return new base_class; } + + virtual void* mask(void* p) { return p; } + +public: + int m_b; + double m_db; +}; + +class derived_class : public base_class { +public: + derived_class() { m_d = 2; m_dd = 2.2;} + virtual int get_value() { return m_d; } + double get_derived_value() { return m_dd; } + virtual base_class* clone() { return new derived_class; } + +public: + int m_d; + double m_dd; +}; + + +//=========================================================================== +class a_class { // for esoteric inheritance testing +public: + a_class() { m_a = 1; m_da = 1.1; } + virtual ~a_class() {} + virtual int get_value() = 0; + +public: + int m_a; + double m_da; +}; + +class b_class : public virtual a_class { +public: + b_class() { m_b = 2; m_db = 2.2;} + virtual int get_value() { return m_b; } + +public: + int m_b; + double m_db; +}; + +class c_class_1 : public virtual a_class, public virtual b_class { +public: + c_class_1() { m_c = 3; } + virtual int get_value() { return m_c; } + +public: + int m_c; +}; + +class c_class_2 : public virtual b_class, public virtual a_class { +public: + c_class_2() { m_c = 3; } + virtual int get_value() { return m_c; } + +public: + int m_c; +}; + +typedef c_class_2 c_class; + +class d_class : public virtual c_class, public virtual a_class { +public: + d_class() { m_d = 4; } + virtual int get_value() { return m_d; } + +public: + int m_d; +}; + +a_class* create_c1(); +a_class* create_c2(); + +int get_a(a_class& a); +int get_b(b_class& b); +int get_c(c_class& c); +int get_d(d_class& d); + + +//=========================================================================== +namespace a_ns { // for namespace testing + extern int g_a; + int get_g_a(); + + struct b_class { + b_class() { m_b = -2; } + int m_b; + static int s_b; + + struct c_class { + c_class() { m_c = -3; } + int m_c; + static int s_c; + }; + }; + + namespace d_ns { + extern int g_d; + int get_g_d(); + + struct e_class { + e_class() { m_e = -5; } + int m_e; + static int s_e; + + struct f_class { + f_class() { m_f = -6; } + int m_f; + static int s_f; + }; + }; + + } // namespace d_ns + +} // namespace a_ns + + +//=========================================================================== +template // for template testing +class T1 { +public: + T1(T t = T(1)) : m_t1(t) {} + T get_value() { return m_t1; } + +public: + T m_t1; +}; + +template +class T2 { +public: + T2(T t = T(2)) : m_t2(t) {} + T get_value() { return m_t2; } + +public: + T m_t2; +}; + +template +class T3 { +public: + T3(T t = T(3), U u = U(33)) : m_t3(t), m_u3(u) {} + T get_value_t() { return m_t3; } + U get_value_u() { return m_u3; } + +public: + T m_t3; + U m_u3; +}; + +namespace a_ns { + + template + class T4 { + public: + T4(T t = T(4)) : m_t4(t) {} + T get_value() { return m_t4; } + + public: + T m_t4; + }; + +} // namespace a_ns + +extern template class T1; +extern template class T2 >; +extern template class T3; +extern template class T3, T2 > >; +extern template class a_ns::T4; +extern template class a_ns::T4 > >; + + +//=========================================================================== +// for checking pass-by-reference of builtin types +void set_int_through_ref(int& i, int val); +int pass_int_through_const_ref(const int& i); +void set_long_through_ref(long& l, long val); +long pass_long_through_const_ref(const long& l); +void set_double_through_ref(double& d, double val); +double pass_double_through_const_ref(const double& d); + + +//=========================================================================== +class some_abstract_class { // to test abstract class handling +public: + virtual ~some_abstract_class() {} + virtual void a_virtual_method() = 0; +}; + +class some_concrete_class : public some_abstract_class { +public: + virtual void a_virtual_method() {} +}; + + +//=========================================================================== +class ref_tester { // for assignment by-ref testing +public: + ref_tester() : m_i(-99) {} + ref_tester(int i) : m_i(i) {} + ref_tester(const ref_tester& s) : m_i(s.m_i) {} + ref_tester& operator=(const ref_tester& s) { + if (&s != this) m_i = s.m_i; + return *this; + } + ~ref_tester() {} + +public: + int m_i; +}; + + +//=========================================================================== +class some_convertible { // for math conversions testing +public: + some_convertible() : m_i(-99), m_d(-99.) {} + + operator int() { return m_i; } + operator long() { return m_i; } + operator double() { return m_d; } + +public: + int m_i; + double m_d; +}; + + +class some_comparable { +}; + +bool operator==(const some_comparable& c1, const some_comparable& c2 ); +bool operator!=( const some_comparable& c1, const some_comparable& c2 ); + + +//=========================================================================== +extern double my_global_double; // a couple of globals for access testing +extern double my_global_array[500]; +extern double* my_global_ptr; +static const char my_global_string1[] = "aap " " noot " " mies"; +extern const char my_global_string2[]; + +//=========================================================================== +class some_class_with_data { // for life-line and identity testing +public: + class some_data { + public: + some_data() { ++s_num_data; } + some_data(const some_data&) { ++s_num_data; } + ~some_data() { --s_num_data; } + + static int s_num_data; + }; + + some_class_with_data gime_copy() { + return *this; + } + + const some_data& gime_data() { /* TODO: methptrgetter const support */ + return m_data; + } + + int m_padding; + some_data m_data; +}; + +class refers_to_self { // for data member reuse testing +public: + refers_to_self* m_other = nullptr; +}; + + +//=========================================================================== +class pointer_pass { // for testing passing of void*'s +public: + long gime_address_ptr(void* obj) { + return (long)obj; + } + + long gime_address_ptr_ptr(void** obj) { + return (long)*((long**)obj); + } + + long gime_address_ptr_ref(void*& obj) { + return (long)obj; + } + + static long set_address_ptr_ptr(void** obj) { + (*(long**)obj) = (long*)0x4321; + return 42; + } + + static long set_address_ptr_ref(void*& obj) { + obj = (void*)0x1234; + return 21; + } +}; + + +//=========================================================================== +class multi1 { // for testing multiple inheritance +public: + multi1(int val) : m_int(val) {} + virtual ~multi1(); + int get_multi1_int() { return m_int; } + +private: + int m_int; +}; + +class multi2 { +public: + multi2(int val) : m_int(val) {} + virtual ~multi2(); + int get_multi2_int() { return m_int; } + +private: + int m_int; +}; + +class multi : public multi1, public multi2 { +public: + multi(int val1, int val2, int val3) : + multi1(val1), multi2(val2), m_int(val3) {} + virtual ~multi(); + int get_my_own_int() { return m_int; } + +private: + int m_int; +}; + + +//=========================================================================== +class new_overloader { // for testing calls to overloaded new +public: + static int s_instances; + +public: + void* operator new(std::size_t size); + void* operator new(std::size_t, void* p) throw(); + void operator delete(void* p, std::size_t size); +}; + + +//=========================================================================== +template // more template testing +class my_templated_class { +public: + T m_b; +}; + +template +T my_templated_function(T t) { return t; } + +template class my_templated_class >; +template char my_templated_function(char); +template double my_templated_function(double); + + +//=========================================================================== +class overload_one_way { // overload order testing +public: + int gime() const; + std::string gime(); +}; + +class overload_the_other_way { +public: + std::string gime(); + int gime() const; +}; + + +//=========================================================================== +class Thrower { // exception handling testing +public: + void throw_anything(); + void throw_exception(); +}; + + +//=========================================================================== +class UsingBase { // using declaration testing +public: + UsingBase(int n = 13) : m_int(n) {} + virtual char vcheck() { return 'A'; } + int m_int; +}; + +class UsingDerived : public UsingBase { +public: + using UsingBase::UsingBase; + virtual char vcheck() { return 'B'; } + int m_int2 = 42; +}; diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.xml new file mode 100644 index 0000000000000..8d8d18cb91567 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.cxx new file mode 100644 index 0000000000000..3eb76b26eba81 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.cxx @@ -0,0 +1,13 @@ +#include "advancedcpp2.h" + + +// for namespace testing +int a_ns::g_g = 77; +int a_ns::g_class::s_g = 88; +int a_ns::g_class::h_class::s_h = 99; +int a_ns::d_ns::g_i = 111; +int a_ns::d_ns::i_class::s_i = 222; +int a_ns::d_ns::i_class::j_class::s_j = 333; + +int a_ns::get_g_g() { return g_g; } +int a_ns::d_ns::get_g_i() { return g_i; } diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.h b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.h new file mode 100644 index 0000000000000..86167cce99aec --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.h @@ -0,0 +1,36 @@ +//=========================================================================== +namespace a_ns { // for namespace testing + extern int g_g; + int get_g_g(); + + struct g_class { + g_class() { m_g = -7; } + int m_g; + static int s_g; + + struct h_class { + h_class() { m_h = -8; } + int m_h; + static int s_h; + }; + }; + + namespace d_ns { + extern int g_i; + int get_g_i(); + + struct i_class { + i_class() { m_i = -9; } + int m_i; + static int s_i; + + struct j_class { + j_class() { m_j = -10; } + int m_j; + static int s_j; + }; + }; + + } // namespace d_ns + +} // namespace a_ns diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.xml new file mode 100644 index 0000000000000..43925d1039ef3 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/advancedcpp2.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/conftest.py b/bindings/pyroot_experimental/cppyy/cppyy/test/conftest.py new file mode 100644 index 0000000000000..c2931cdc64be7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/conftest.py @@ -0,0 +1 @@ +disabled = None diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.cxx new file mode 100644 index 0000000000000..6989cf6d3193e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.cxx @@ -0,0 +1,18 @@ +#if __cplusplus >= 201103L + +#include "cpp11features.h" + + +// for std::shared_ptr<> testing +int TestSharedPtr::s_counter = 0; + +std::shared_ptr create_shared_ptr_instance() { + return std::shared_ptr(new TestSharedPtr); +} + + +// for move ctors etc. +int TestMoving1::s_move_counter = 0; +int TestMoving2::s_move_counter = 0; + +#endif // c++11 and later diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.h b/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.h new file mode 100644 index 0000000000000..451bdb88f24cc --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.h @@ -0,0 +1,52 @@ +#if __cplusplus >= 201103L + +#include + + +//=========================================================================== +class TestSharedPtr { // for std::shared_ptr<> testing +public: + static int s_counter; + +public: + TestSharedPtr() { ++s_counter; } + TestSharedPtr(const TestSharedPtr&) { ++s_counter; } + ~TestSharedPtr() { --s_counter; } +}; + +std::shared_ptr create_shared_ptr_instance(); + + +//=========================================================================== +class TestMoving1 { // for move ctors etc. +public: + static int s_move_counter; + +public: + TestMoving1() {} + TestMoving1(TestMoving1&&) { ++s_move_counter; } + TestMoving1(const TestMoving1&) {} + TestMoving1& operator=(TestMoving1&&) { ++s_move_counter; return *this; } + TestMoving1& operator=(TestMoving1&) { return *this; } +}; + +class TestMoving2 { // note opposite method order from TestMoving1 +public: + static int s_move_counter; + +public: + TestMoving2() {} + TestMoving2(const TestMoving2&) {} + TestMoving2(TestMoving2&& other) { ++s_move_counter; } + TestMoving2& operator=(TestMoving2&) { return *this; } + TestMoving2& operator=(TestMoving2&&) { ++s_move_counter; return *this; } +}; + + +//=========================================================================== +struct TestData { // for initializer list construction + TestData(int i) : m_int(i) {} + int m_int; +}; + +#endif // c++11 and later diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.xml new file mode 100644 index 0000000000000..5e250a30461a7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/cpp11features.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.cxx new file mode 100644 index 0000000000000..2266727903624 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.cxx @@ -0,0 +1,356 @@ +#include "datatypes.h" + + +//=========================================================================== +std::vector vecFruits{kCitrus, kApple}; + + +//=========================================================================== +CppyyTestData::CppyyTestData() : m_const_int(17), m_owns_arrays(false) +{ + m_bool = false; + m_char = 'a'; + m_schar = 'b'; + m_uchar = 'c'; + m_short = -11; + m_ushort = 11u; + m_int = -22; + m_uint = 22u; + m_long = -33l; + m_ulong = 33ul; + m_llong = -44ll; + m_ullong = 44ull; + m_long64 = -55ll; + m_ulong64 = 55ull; + m_float = -66.f; + m_double = -77.; + m_ldouble = -88.l; + m_enum = kNothing; + m_voidp = (void*)0; + + m_bool_array2 = new bool[N]; + m_uchar_array2 = new unsigned char[N]; + m_short_array2 = new short[N]; + m_ushort_array2 = new unsigned short[N]; + m_int_array2 = new int[N]; + m_uint_array2 = new unsigned int[N]; + m_long_array2 = new long[N]; + m_ulong_array2 = new unsigned long[N]; + + m_float_array2 = new float[N]; + m_double_array2 = new double[N]; + + for (int i = 0; i < N; ++i) { + m_bool_array[i] = bool(i%2); + m_bool_array2[i] = bool((i+1)%2); + m_uchar_array[i] = 1u*i; + m_uchar_array2[i] = 2u*i; + m_short_array[i] = -1*i; + m_short_array2[i] = -2*i; + m_ushort_array[i] = 3u*i; + m_ushort_array2[i] = 4u*i; + m_int_array[i] = -5*i; + m_int_array2[i] = -6*i; + m_uint_array[i] = 7u*i; + m_uint_array2[i] = 8u*i; + m_long_array[i] = -9l*i; + m_long_array2[i] = -10l*i; + m_ulong_array[i] = 11ul*i; + m_ulong_array2[i] = 12ul*i; + + m_float_array[i] = -13.f*i; + m_float_array2[i] = -14.f*i; + m_double_array[i] = -15.*i; + m_double_array2[i] = -16.*i; + } + + m_owns_arrays = true; + + m_pod.m_int = 888; + m_pod.m_double = 3.14; + + m_ppod = &m_pod; +}; + +CppyyTestData::~CppyyTestData() +{ + destroy_arrays(); +} + +void CppyyTestData::destroy_arrays() { + if (m_owns_arrays == true) { + delete[] m_bool_array2; + delete[] m_uchar_array2; + delete[] m_short_array2; + delete[] m_ushort_array2; + delete[] m_int_array2; + delete[] m_uint_array2; + delete[] m_long_array2; + delete[] m_ulong_array2; + + delete[] m_float_array2; + delete[] m_double_array2; + + m_owns_arrays = false; + } +} + +//- getters ----------------------------------------------------------------- +bool CppyyTestData::get_bool() { return m_bool; } +char CppyyTestData::get_char() { return m_char; } +signed char CppyyTestData::get_schar() { return m_schar; } +unsigned char CppyyTestData::get_uchar() { return m_uchar; } +short CppyyTestData::get_short() { return m_short; } +unsigned short CppyyTestData::get_ushort() { return m_ushort; } +int CppyyTestData::get_int() { return m_int; } +unsigned int CppyyTestData::get_uint() { return m_uint; } +long CppyyTestData::get_long() { return m_long; } +unsigned long CppyyTestData::get_ulong() { return m_ulong; } +long long CppyyTestData::get_llong() { return m_llong; } +unsigned long long CppyyTestData::get_ullong() { return m_ullong; } +Long64_t CppyyTestData::get_long64() { return m_long64; } +ULong64_t CppyyTestData::get_ulong64() { return m_ulong64; } +float CppyyTestData::get_float() { return m_float; } +double CppyyTestData::get_double() { return m_double; } +long double CppyyTestData::get_ldouble() { return m_ldouble; } +CppyyTestData::EWhat CppyyTestData::get_enum() { return m_enum; } +void* CppyyTestData::get_voidp() { return m_voidp; } + +bool* CppyyTestData::get_bool_array() { return m_bool_array; } +bool* CppyyTestData::get_bool_array2() { return m_bool_array2; } +unsigned char* CppyyTestData::get_uchar_array() { return m_uchar_array; } +unsigned char* CppyyTestData::get_uchar_array2() { return m_uchar_array2; } +short* CppyyTestData::get_short_array() { return m_short_array; } +short* CppyyTestData::get_short_array2() { return m_short_array2; } +unsigned short* CppyyTestData::get_ushort_array() { return m_ushort_array; } +unsigned short* CppyyTestData::get_ushort_array2() { return m_ushort_array2; } +int* CppyyTestData::get_int_array() { return m_int_array; } +int* CppyyTestData::get_int_array2() { return m_int_array2; } +unsigned int* CppyyTestData::get_uint_array() { return m_uint_array; } +unsigned int* CppyyTestData::get_uint_array2() { return m_uint_array2; } +long* CppyyTestData::get_long_array() { return m_long_array; } +long* CppyyTestData::get_long_array2() { return m_long_array2; } +unsigned long* CppyyTestData::get_ulong_array() { return m_ulong_array; } +unsigned long* CppyyTestData::get_ulong_array2() { return m_ulong_array2; } + +float* CppyyTestData::get_float_array() { return m_float_array; } +float* CppyyTestData::get_float_array2() { return m_float_array2; } +double* CppyyTestData::get_double_array() { return m_double_array; } +double* CppyyTestData::get_double_array2() { return m_double_array2; } + +CppyyTestPod CppyyTestData::get_pod_val() { return m_pod; } +CppyyTestPod* CppyyTestData::get_pod_val_ptr() { return &m_pod; } +CppyyTestPod& CppyyTestData::get_pod_val_ref() { return m_pod; } +CppyyTestPod*& CppyyTestData::get_pod_ptrref() { return m_ppod; } + +CppyyTestPod* CppyyTestData::get_pod_ptr() { return m_ppod; } + +//- getters const-ref ------------------------------------------------------- +const bool& CppyyTestData::get_bool_cr() { return m_bool; } +const char& CppyyTestData::get_char_cr() { return m_char; } +const signed char& CppyyTestData::get_schar_cr() { return m_schar; } +const unsigned char& CppyyTestData::get_uchar_cr() { return m_uchar; } +const short& CppyyTestData::get_short_cr() { return m_short; } +const unsigned short& CppyyTestData::get_ushort_cr() { return m_ushort; } +const int& CppyyTestData::get_int_cr() { return m_int; } +const unsigned int& CppyyTestData::get_uint_cr() { return m_uint; } +const long& CppyyTestData::get_long_cr() { return m_long; } +const unsigned long& CppyyTestData::get_ulong_cr() { return m_ulong; } +const long long& CppyyTestData::get_llong_cr() { return m_llong; } +const unsigned long long& CppyyTestData::get_ullong_cr() { return m_ullong; } +const Long64_t& CppyyTestData::get_long64_cr() { return m_long64; } +const ULong64_t& CppyyTestData::get_ulong64_cr() { return m_ulong64; } +const float& CppyyTestData::get_float_cr() { return m_float; } +const double& CppyyTestData::get_double_cr() { return m_double; } +const long double& CppyyTestData::get_ldouble_cr() { return m_ldouble; } +const CppyyTestData::EWhat& CppyyTestData::get_enum_cr() { return m_enum; } + +//- getters ref ------------------------------------------------------------- +bool& CppyyTestData::get_bool_r() { return m_bool; } +char& CppyyTestData::get_char_r() { return m_char; } +signed char& CppyyTestData::get_schar_r() { return m_schar; } +unsigned char& CppyyTestData::get_uchar_r() { return m_uchar; } +short& CppyyTestData::get_short_r() { return m_short; } +unsigned short& CppyyTestData::get_ushort_r() { return m_ushort; } +int& CppyyTestData::get_int_r() { return m_int; } +unsigned int& CppyyTestData::get_uint_r() { return m_uint; } +long& CppyyTestData::get_long_r() { return m_long; } +unsigned long& CppyyTestData::get_ulong_r() { return m_ulong; } +long long& CppyyTestData::get_llong_r() { return m_llong; } +unsigned long long& CppyyTestData::get_ullong_r() { return m_ullong; } +Long64_t& CppyyTestData::get_long64_r() { return m_long64; } +ULong64_t& CppyyTestData::get_ulong64_r() { return m_ulong64; } +float& CppyyTestData::get_float_r() { return m_float; } +double& CppyyTestData::get_double_r() { return m_double; } +long double& CppyyTestData::get_ldouble_r() { return m_ldouble; } +CppyyTestData::EWhat& CppyyTestData::get_enum_r() { return m_enum; } + +//- setters ----------------------------------------------------------------- +void CppyyTestData::set_bool(bool b) { m_bool = b; } +void CppyyTestData::set_char(char c) { m_char = c; } +void CppyyTestData::set_schar(signed char sc) { m_schar = sc; } +void CppyyTestData::set_uchar(unsigned char uc) { m_uchar = uc; } +void CppyyTestData::set_short(short s) { m_short = s; } +void CppyyTestData::set_ushort(unsigned short us) { m_ushort = us; } +void CppyyTestData::set_int(int i) { m_int = i; } +void CppyyTestData::set_uint(unsigned int ui) { m_uint = ui; } +void CppyyTestData::set_long(long l) { m_long = l; } +void CppyyTestData::set_ulong(unsigned long ul) { m_ulong = ul; } +void CppyyTestData::set_llong(long long ll) { m_llong = ll; } +void CppyyTestData::set_ullong(unsigned long long ull) { m_ullong = ull; } +void CppyyTestData::set_long64(Long64_t l64) { m_long64 = l64; } +void CppyyTestData::set_ulong64(ULong64_t ul64) { m_ulong64 = ul64; } +void CppyyTestData::set_float(float f) { m_float = f; } +void CppyyTestData::set_double(double d) { m_double = d; } +void CppyyTestData::set_ldouble(long double ld) { m_ldouble = ld; } +void CppyyTestData::set_enum(EWhat w) { m_enum = w; } +void CppyyTestData::set_voidp(void* p) { m_voidp = p; } + +void CppyyTestData::set_pod_val(CppyyTestPod p) { m_pod = p; } +void CppyyTestData::set_pod_ptr_in(CppyyTestPod* pp) { m_pod = *pp; } +void CppyyTestData::set_pod_ptr_out(CppyyTestPod* pp) { *pp = m_pod; } +void CppyyTestData::set_pod_ref(const CppyyTestPod& rp) { m_pod = rp; } +void CppyyTestData::set_pod_ptrptr_in(CppyyTestPod** ppp) { m_pod = **ppp; } +void CppyyTestData::set_pod_void_ptrptr_in(void** pp) { m_pod = **((CppyyTestPod**)pp); } +void CppyyTestData::set_pod_ptrptr_out(CppyyTestPod** ppp) { delete *ppp; *ppp = new CppyyTestPod(m_pod); } +void CppyyTestData::set_pod_void_ptrptr_out(void** pp) { delete *((CppyyTestPod**)pp); + *((CppyyTestPod**)pp) = new CppyyTestPod(m_pod); } + +void CppyyTestData::set_pod_ptr(CppyyTestPod* pp) { m_ppod = pp; } + +//- setters const-ref ------------------------------------------------------- +void CppyyTestData::set_bool_cr(const bool& b) { m_bool = b; } +void CppyyTestData::set_char_cr(const char& c) { m_char = c; } +void CppyyTestData::set_schar_cr(const signed char& sc) { m_schar = sc; } +void CppyyTestData::set_uchar_cr(const unsigned char& uc) { m_uchar = uc; } +void CppyyTestData::set_short_cr(const short& s) { m_short = s; } +void CppyyTestData::set_ushort_cr(const unsigned short& us) { m_ushort = us; } +void CppyyTestData::set_int_cr(const int& i) { m_int = i; } +void CppyyTestData::set_uint_cr(const unsigned int& ui) { m_uint = ui; } +void CppyyTestData::set_long_cr(const long& l) { m_long = l; } +void CppyyTestData::set_ulong_cr(const unsigned long& ul) { m_ulong = ul; } +void CppyyTestData::set_llong_cr(const long long& ll) { m_llong = ll; } +void CppyyTestData::set_ullong_cr(const unsigned long long& ull) { m_ullong = ull; } +void CppyyTestData::set_long64_cr(const Long64_t& l64) { m_long64 = l64; } +void CppyyTestData::set_ulong64_cr(const ULong64_t& ul64) { m_ulong64 = ul64; } +void CppyyTestData::set_float_cr(const float& f) { m_float = f; } +void CppyyTestData::set_double_cr(const double& d) { m_double = d; } +void CppyyTestData::set_ldouble_cr(const long double& ld) { m_ldouble = ld; } +void CppyyTestData::set_enum_cr(const EWhat& w) { m_enum = w; } + +//- passers ----------------------------------------------------------------- +unsigned char* CppyyTestData::pass_array(unsigned char* a) { return a; } +short* CppyyTestData::pass_array(short* a) { return a; } +unsigned short* CppyyTestData::pass_array(unsigned short* a) { return a; } +int* CppyyTestData::pass_array(int* a) { return a; } +unsigned int* CppyyTestData::pass_array(unsigned int* a) { return a; } +long* CppyyTestData::pass_array(long* a) { return a; } +unsigned long* CppyyTestData::pass_array(unsigned long* a) { return a; } +float* CppyyTestData::pass_array(float* a) { return a; } +double* CppyyTestData::pass_array(double* a) { return a; } + +//- static data members ----------------------------------------------------- +bool CppyyTestData::s_bool = false; +char CppyyTestData::s_char = 'c'; +signed char CppyyTestData::s_schar = 's'; +unsigned char CppyyTestData::s_uchar = 'u'; +short CppyyTestData::s_short = -101; +unsigned short CppyyTestData::s_ushort = 255u; +int CppyyTestData::s_int = -202; +unsigned int CppyyTestData::s_uint = 202u; +long CppyyTestData::s_long = -303l; +unsigned long CppyyTestData::s_ulong = 303ul; +long long CppyyTestData::s_llong = -404ll; +unsigned long long CppyyTestData::s_ullong = 404ull; +Long64_t CppyyTestData::s_long64 = -505ll; +ULong64_t CppyyTestData::s_ulong64 = 505ull; +float CppyyTestData::s_float = -606.f; +double CppyyTestData::s_double = -707.; +long double CppyyTestData::s_ldouble = -808.l; +CppyyTestData::EWhat CppyyTestData::s_enum = CppyyTestData::kNothing; +void* CppyyTestData::s_voidp = (void*)0; + +//- strings ----------------------------------------------------------------- +const char* CppyyTestData::get_valid_string(const char* in) { return in; } +const char* CppyyTestData::get_invalid_string() { return (const char*)0; } + + +//= global functions ======================================================== +long get_pod_address(CppyyTestData& c) +{ + return (long)&c.m_pod; +} + +long get_int_address(CppyyTestData& c) +{ + return (long)&c.m_pod.m_int; +} + +long get_double_address(CppyyTestData& c) +{ + return (long)&c.m_pod.m_double; +} + + +//= global variables/pointers =============================================== +bool g_bool = false; +char g_char = 'w'; +signed char g_schar = 'v'; +unsigned char g_uchar = 'u'; +short g_short = -88; +unsigned short g_ushort = 88u; +int g_int = -188; +unsigned int g_uint = 188u; +long g_long = -288; +unsigned long g_ulong = 288ul; +long long g_llong = -388ll; +unsigned long long g_ullong = 388ull; +Long64_t g_long64 = -488ll; +ULong64_t g_ulong64 = 488ull; +float g_float = -588.f; +double g_double = -688.; +long double g_ldouble = -788.l; +EFruit g_enum = kBanana; +void* g_voidp = nullptr; + + +//= global accessors ======================================================== +void set_global_int(int i) { + g_int = i; +} + +int get_global_int() { + return g_int; +} + +CppyyTestPod* g_pod = (CppyyTestPod*)0; + +bool is_global_pod(CppyyTestPod* t) { + return t == g_pod; +} + +void set_global_pod(CppyyTestPod* t) { + g_pod = t; +} + +CppyyTestPod* get_global_pod() { + return g_pod; +} + +CppyyTestPod* get_null_pod() { + return (CppyyTestPod*)0; +} + + +//= function pointer passing ================================================ +int sum_of_int(int i1, int i2) { + return i1+i2; +} + +double sum_of_double(double d1, double d2) { + return d1+d2; +} + +double call_double_double(double (*d)(double, double), double d1, double d2) { + return d(d1, d2); +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.h b/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.h new file mode 100644 index 0000000000000..0bb757d40fef9 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.h @@ -0,0 +1,387 @@ +#ifndef CPPYY_DUMMY_BACKEND +#include "RtypesCore.h" +#else +// copied from RtypesCore.h ... +#if defined(R__WIN32) && !defined(__CINT__) +typedef __int64 Long64_t; //Portable signed long integer 8 bytes +typedef unsigned __int64 ULong64_t; //Portable unsigned long integer 8 bytes +#else +typedef long long Long64_t; //Portable signed long integer 8 bytes +typedef unsigned long long ULong64_t;//Portable unsigned long integer 8 bytes +#endif +#endif +#include + +const int N = 5; + + +//=========================================================================== +struct CppyyTestPod { + int m_int; + double m_double; +}; + + +//=========================================================================== +enum EFruit {kApple=78, kBanana=29, kCitrus=34}; +extern std::vector vecFruits; + + +//=========================================================================== +namespace EnumSpace { + enum E {E1 = 1, E2}; + class EnumClass { + public: + enum {E1 = -1}; + enum EE {E2 = -1}; + }; +} + + +//=========================================================================== +class FourVector { +public: + FourVector(double x, double y, double z, double t) : + m_cc_called(false), m_x(x), m_y(y), m_z(z), m_t(t) {} + FourVector(const FourVector& s) : + m_cc_called(true), m_x(s.m_x), m_y(s.m_y), m_z(s.m_z), m_t(s.m_t) {} + + double operator[](int i) { + if (i == 0) return m_x; + if (i == 1) return m_y; + if (i == 2) return m_z; + if (i == 3) return m_t; + return -1; + } + + bool operator==(const FourVector& o) { + return (m_x == o.m_x && m_y == o.m_y && + m_z == o.m_z && m_t == o.m_t); + } + +public: + bool m_cc_called; + +private: + double m_x, m_y, m_z, m_t; +}; + + +//=========================================================================== +class CppyyTestData { +public: + CppyyTestData(); + ~CppyyTestData(); + +// special cases + enum EWhat { kNothing=6, kSomething=111, kLots=42 }; + +// helper + void destroy_arrays(); + +// getters + bool get_bool(); + char get_char(); + signed char get_schar(); + unsigned char get_uchar(); + short get_short(); + unsigned short get_ushort(); + int get_int(); + unsigned int get_uint(); + long get_long(); + unsigned long get_ulong(); + long long get_llong(); + unsigned long long get_ullong(); + Long64_t get_long64(); + ULong64_t get_ulong64(); + float get_float(); + double get_double(); + long double get_ldouble(); + EWhat get_enum(); + void* get_voidp(); + + bool* get_bool_array(); + bool* get_bool_array2(); + unsigned char* get_uchar_array(); + unsigned char* get_uchar_array2(); + short* get_short_array(); + short* get_short_array2(); + unsigned short* get_ushort_array(); + unsigned short* get_ushort_array2(); + int* get_int_array(); + int* get_int_array2(); + unsigned int* get_uint_array(); + unsigned int* get_uint_array2(); + long* get_long_array(); + long* get_long_array2(); + unsigned long* get_ulong_array(); + unsigned long* get_ulong_array2(); + + float* get_float_array(); + float* get_float_array2(); + double* get_double_array(); + double* get_double_array2(); + + CppyyTestPod get_pod_val(); // for m_pod + CppyyTestPod* get_pod_val_ptr(); + CppyyTestPod& get_pod_val_ref(); + CppyyTestPod*& get_pod_ptrref(); + + CppyyTestPod* get_pod_ptr(); // for m_ppod + +// getters const-ref + const bool& get_bool_cr(); + const char& get_char_cr(); + const signed char& get_schar_cr(); + const unsigned char& get_uchar_cr(); + const short& get_short_cr(); + const unsigned short& get_ushort_cr(); + const int& get_int_cr(); + const unsigned int& get_uint_cr(); + const long& get_long_cr(); + const unsigned long& get_ulong_cr(); + const long long& get_llong_cr(); + const unsigned long long& get_ullong_cr(); + const Long64_t& get_long64_cr(); + const ULong64_t& get_ulong64_cr(); + const float& get_float_cr(); + const double& get_double_cr(); + const long double& get_ldouble_cr(); + const EWhat& get_enum_cr(); + +// getters ref + bool& get_bool_r(); + char& get_char_r(); + signed char& get_schar_r(); + unsigned char& get_uchar_r(); + short& get_short_r(); + unsigned short& get_ushort_r(); + int& get_int_r(); + unsigned int& get_uint_r(); + long& get_long_r(); + unsigned long& get_ulong_r(); + long long& get_llong_r(); + unsigned long long& get_ullong_r(); + Long64_t& get_long64_r(); + ULong64_t& get_ulong64_r(); + float& get_float_r(); + double& get_double_r(); + long double& get_ldouble_r(); + EWhat& get_enum_r(); + +// setters + void set_bool(bool); + void set_char(char); + void set_schar(signed char); + void set_uchar(unsigned char); + void set_short(short); + void set_ushort(unsigned short); + void set_int(int); + void set_uint(unsigned int); + void set_long(long); + void set_ulong(unsigned long); + void set_llong(long long); + void set_ullong(unsigned long long); + void set_long64(Long64_t); + void set_ulong64(ULong64_t); + void set_float(float); + void set_double(double); + void set_ldouble(long double); + void set_enum(EWhat); + void set_voidp(void*); + + void set_pod_val(CppyyTestPod); // for m_pod + void set_pod_ptr_in(CppyyTestPod*); + void set_pod_ptr_out(CppyyTestPod*); + void set_pod_ref(const CppyyTestPod&); + void set_pod_ptrptr_in(CppyyTestPod**); + void set_pod_void_ptrptr_in(void**); + void set_pod_ptrptr_out(CppyyTestPod**); + void set_pod_void_ptrptr_out(void**); + + void set_pod_ptr(CppyyTestPod*); // for m_ppod + +// setters const-ref + void set_bool_cr(const bool&); + void set_char_cr(const char&); + void set_schar_cr(const signed char&); + void set_uchar_cr(const unsigned char&); + void set_short_cr(const short&); + void set_ushort_cr(const unsigned short&); + void set_int_cr(const int&); + void set_uint_cr(const unsigned int&); + void set_long_cr(const long&); + void set_ulong_cr(const unsigned long&); + void set_llong_cr(const long long&); + void set_ullong_cr(const unsigned long long&); + void set_long64_cr(const Long64_t&); + void set_ulong64_cr(const ULong64_t&); + void set_float_cr(const float&); + void set_double_cr(const double&); + void set_ldouble_cr(const long double&); + void set_enum_cr(const EWhat&); + +// passers + unsigned char* pass_array(unsigned char*); + short* pass_array(short*); + unsigned short* pass_array(unsigned short*); + int* pass_array(int*); + unsigned int* pass_array(unsigned int*); + long* pass_array(long*); + unsigned long* pass_array(unsigned long*); + float* pass_array(float*); + double* pass_array(double*); + + unsigned char* pass_void_array_B(void* a) { return pass_array((unsigned char*)a); } + short* pass_void_array_h(void* a) { return pass_array((short*)a); } + unsigned short* pass_void_array_H(void* a) { return pass_array((unsigned short*)a); } + int* pass_void_array_i(void* a) { return pass_array((int*)a); } + unsigned int* pass_void_array_I(void* a) { return pass_array((unsigned int*)a); } + long* pass_void_array_l(void* a) { return pass_array((long*)a); } + unsigned long* pass_void_array_L(void* a) { return pass_array((unsigned long*)a); } + float* pass_void_array_f(void* a) { return pass_array((float*)a); } + double* pass_void_array_d(void* a) { return pass_array((double*)a); } + +// strings + const char* get_valid_string(const char* in); + const char* get_invalid_string(); + +public: +// basic types + bool m_bool; + char m_char; + signed char m_schar; + unsigned char m_uchar; + short m_short; + unsigned short m_ushort; + int m_int; + const int m_const_int; // special case: const testing + unsigned int m_uint; + long m_long; + unsigned long m_ulong; + long long m_llong; + unsigned long long m_ullong; + Long64_t m_long64; + ULong64_t m_ulong64; + float m_float; + double m_double; + long double m_ldouble; + EWhat m_enum; + void* m_voidp; + +// array types + bool m_bool_array[N]; + bool* m_bool_array2; + unsigned char m_uchar_array[N]; + unsigned char* m_uchar_array2; + short m_short_array[N]; + short* m_short_array2; + unsigned short m_ushort_array[N]; + unsigned short* m_ushort_array2; + int m_int_array[N]; + int* m_int_array2; + unsigned int m_uint_array[N]; + unsigned int* m_uint_array2; + long m_long_array[N]; + long* m_long_array2; + unsigned long m_ulong_array[N]; + unsigned long* m_ulong_array2; + + float m_float_array[N]; + float* m_float_array2; + double m_double_array[N]; + double* m_double_array2; + +// object types + CppyyTestPod m_pod; + CppyyTestPod* m_ppod; + +public: + static bool s_bool; + static char s_char; + static signed char s_schar; + static unsigned char s_uchar; + static short s_short; + static unsigned short s_ushort; + static int s_int; + static unsigned int s_uint; + static long s_long; + static unsigned long s_ulong; + static long long s_llong; + static unsigned long long s_ullong; + static Long64_t s_long64; + static ULong64_t s_ulong64; + static float s_float; + static double s_double; + static long double s_ldouble; + static EWhat s_enum; + static void* s_voidp; + +private: + bool m_owns_arrays; +}; + + +//= global functions ======================================================== +long get_pod_address(CppyyTestData& c); +long get_int_address(CppyyTestData& c); +long get_double_address(CppyyTestData& c); + + +//= global variables/pointers =============================================== +extern bool g_bool; +extern char g_char; +extern signed char g_schar; +extern unsigned char g_uchar; +extern short g_short; +extern unsigned short g_ushort; +extern int g_int; +extern unsigned int g_uint; +extern long g_long; +extern unsigned long g_ulong; +extern long long g_llong; +extern unsigned long long g_ullong; +extern Long64_t g_long64; +extern ULong64_t g_ulong64; +extern float g_float; +extern double g_double; +extern long double g_ldouble; +extern EFruit g_enum; +extern void* g_voidp; + +static const bool g_c_bool = true; +static const char g_c_char = 'z'; +static const signed char g_c_schar = 'y'; +static const unsigned char g_c_uchar = 'x'; +static const short g_c_short = -99; +static const unsigned short g_c_ushort = 99u; +static const int g_c_int = -199; +static const unsigned int g_c_uint = 199u; +static const long g_c_long = -299; +static const unsigned long g_c_ulong = 299ul; +static const long long g_c_llong = -399ll; +static const unsigned long long g_c_ullong = 399ull; +static const Long64_t g_c_long64 = -499ll; +static const ULong64_t g_c_ulong64 = 499ull; +static const float g_c_float = -599.f; +static const double g_c_double = -699.; +static const long double g_c_ldouble = -799.l; +static const EFruit g_c_enum = kApple; +static const void* g_c_voidp = nullptr; + + +//= global accessors ======================================================== +void set_global_int(int i); +int get_global_int(); + +extern CppyyTestPod* g_pod; +bool is_global_pod(CppyyTestPod* t); +void set_global_pod(CppyyTestPod* t); +CppyyTestPod* get_global_pod(); +CppyyTestPod* get_null_pod(); + + +//= function pointer passing ================================================ +int sum_of_int(int i1, int i2); +double sum_of_double(double d1, double d2); +double call_double_double(double (*d)(double, double), double d1, double d2); diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.xml new file mode 100644 index 0000000000000..9b626cf12ab56 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/datatypes.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/example01.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/example01.cxx new file mode 100644 index 0000000000000..c70f23f47e6f6 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/example01.cxx @@ -0,0 +1,214 @@ +#include +#include +#include +#include + +#include "example01.h" + +//=========================================================================== +payload::payload(double d) : m_data(d) { + count++; +} +payload::payload(const payload& p) : m_data(p.m_data) { + count++; +} +payload& payload::operator=(const payload& p) { + if (this != &p) { + m_data = p.m_data; + } + return *this; +} +payload::~payload() { + count--; +} + +double payload::getData() { return m_data; } +void payload::setData(double d) { m_data = d; } + +// class-level data +int payload::count = 0; + + +//=========================================================================== +example01::example01() : m_somedata(-99) { + count++; +} +example01::example01(int a) : m_somedata(a) { + count++; +} +example01::example01(const example01& e) : m_somedata(e.m_somedata) { + count++; +} +example01& example01::operator=(const example01& e) { + if (this != &e) { + m_somedata = e.m_somedata; + } + return *this; +} +example01::~example01() { + count--; +} + +// class-level methods +int example01::staticAddOneToInt(int a) { + return a + 1; +} +int example01::staticAddOneToInt(int a, int b) { + return a + b + 1; +} +double example01::staticAddToDouble(double a) { + return a + 0.01; +} +int example01::staticAtoi(const char* str) { + return ::atoi(str); +} +char* example01::staticStrcpy(const char* strin) { + char* strout = (char*)malloc(::strlen(strin)+1); + ::strcpy(strout, strin); + return strout; +} +void example01::staticSetPayload(payload* p, double d) { + p->setData(d); +} + +payload* example01::staticCyclePayload(payload* p, double d) { + staticSetPayload(p, d); + return p; +} + +payload example01::staticCopyCyclePayload(payload* p, double d) { + staticSetPayload(p, d); + return *p; +} + +int example01::getCount() { + return count; +} + +void example01::setCount(int value) { + count = value; +} + +// instance methods +int example01::addDataToInt(int a) { + return m_somedata + a; +} + +int example01::addDataToIntConstRef(const int& a) { + return m_somedata + a; +} + +int example01::overloadedAddDataToInt(int a, int b) { + return m_somedata + a + b; +} + +int example01::overloadedAddDataToInt(int a) { + return m_somedata + a; +} + +int example01::overloadedAddDataToInt(int a, int b, int c) { + return m_somedata + a + b + c; +} + +double example01::addDataToDouble(double a) { + return m_somedata + a; +} + +int example01::addDataToAtoi(const char* str) { + return ::atoi(str) + m_somedata; +} + +char* example01::addToStringValue(const char* str) { + int out = ::atoi(str) + m_somedata; + std::ostringstream ss; + ss << out << std::ends; + std::string result = ss.str(); + char* cresult = (char*)malloc(result.size()+1); + ::strcpy(cresult, result.c_str()); + return cresult; +} + +void example01::setPayload(payload* p) { + p->setData(m_somedata); +} + +payload* example01::cyclePayload(payload* p) { + setPayload(p); + return p; +} + +payload example01::copyCyclePayload(payload* p) { + setPayload(p); + return *p; +} + +// class-level data +int example01::count = 0; + + +// global +int globalAddOneToInt(int a) { + return a + 1; +} + +int ns_example01::globalAddOneToInt(int a) { + return ::globalAddOneToInt(a); +} + +int installableAddOneToInt(example01& e, int a) { + return e.staticAddOneToInt(a); +} + +int ns_example01::gMyGlobalInt = 99; + + +// argument passing +#define typeValueImp(itype, tname) \ +itype ArgPasser::tname##Value(itype arg0, int argn, itype arg1, itype arg2) \ +{ \ + switch (argn) { \ + case 0: \ + return arg0; \ + case 1: \ + return arg1; \ + case 2: \ + return arg2; \ + default: \ + break; \ + } \ + \ + return (itype)-1; \ +} + +typeValueImp(short, short) +typeValueImp(unsigned short, ushort) +typeValueImp(int, int) +typeValueImp(unsigned int, uint) +typeValueImp(long, long) +typeValueImp(unsigned long, ulong) + +typeValueImp(float, float) +typeValueImp(double, double) + +std::string ArgPasser::stringValue(std::string arg0, int argn, std::string arg1) +{ + switch (argn) { + case 0: + return arg0; + case 1: + return arg1; + default: + break; + } + + return "argn invalid"; +} + +std::string ArgPasser::stringRef(const std::string& arg0, int argn, const std::string& arg1) +{ + return stringValue(arg0, argn, arg1); +} + + +// special case naming +z_& z_::gime_z_(z_& z) { return z; } diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/example01.h b/bindings/pyroot_experimental/cppyy/cppyy/test/example01.h new file mode 100644 index 0000000000000..4ecdd6645ebf4 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/example01.h @@ -0,0 +1,115 @@ +#include + +class payload { +public: + payload(double d = 0.); + payload(const payload& p); + payload& operator=(const payload& e); + ~payload(); + + double getData(); + void setData(double d); + +public: // class-level data + static int count; + +private: + double m_data; +}; + + +class example01 { +public: + example01(); + example01(int a); + example01(const example01& e); + example01& operator=(const example01& e); + virtual ~example01(); + +public: // class-level methods + static int staticAddOneToInt(int a); + static int staticAddOneToInt(int a, int b); + static double staticAddToDouble(double a); + static int staticAtoi(const char* str); + static char* staticStrcpy(const char* strin); + static void staticSetPayload(payload* p, double d); + static payload* staticCyclePayload(payload* p, double d); + static payload staticCopyCyclePayload(payload* p, double d); + static int getCount(); + static void setCount(int); + +public: // instance methods + int addDataToInt(int a); + int addDataToIntConstRef(const int& a); + int overloadedAddDataToInt(int a, int b); + int overloadedAddDataToInt(int a); + int overloadedAddDataToInt(int a, int b, int c); + double addDataToDouble(double a); + int addDataToAtoi(const char* str); + char* addToStringValue(const char* str); + + void setPayload(payload* p); + payload* cyclePayload(payload* p); + payload copyCyclePayload(payload* p); + +public: // class-level data + static int count; + +public: // instance data + int m_somedata; +}; + + +// global functions and data +int globalAddOneToInt(int a); +namespace ns_example01 { + int globalAddOneToInt(int a); + extern int gMyGlobalInt; +} + +int installableAddOneToInt(example01&, int a); + +#define itypeValue(itype, tname) \ + itype tname##Value(itype arg0, int argn=0, itype arg1=1, itype arg2=2) + +#define ftypeValue(ftype) \ + ftype ftype##Value(ftype arg0, int argn=0, ftype arg1=1., ftype arg2=2.) + + +// argument passing +class ArgPasser { // use a class for now as methptrgetter not +public: // implemented for global functions + itypeValue(short, short); + itypeValue(unsigned short, ushort); + itypeValue(int, int); + itypeValue(unsigned int, uint); + itypeValue(long, long); + itypeValue(unsigned long, ulong); + + ftypeValue(float); + ftypeValue(double); + + std::string stringValue( + std::string arg0, int argn=0, std::string arg1 = "default"); + + std::string stringRef( + const std::string& arg0, int argn=0, const std::string& arg1="default"); +}; + + +// typedefs +typedef example01 example01_t; + + +// special case naming +class z_ { +public: + z_& gime_z_(z_& z); + int myint; +}; + +// for pythonization checking +class example01a : public example01 { +public: + example01a(int a) : example01(a) {} +}; diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/example01.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/example01.xml new file mode 100644 index 0000000000000..bc1dfcf2e4165 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/example01.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.cxx new file mode 100644 index 0000000000000..78082576380de --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.cxx @@ -0,0 +1,39 @@ +#include "fragile.h" + +fragile::H::HH* fragile::H::HH::copy() { + return (HH*)0; +} + +fragile::I fragile::gI; + +void fragile::fglobal(int, double, char) { + /* empty; only used for doc-string testing */ +} + +namespace fragile { + + class Kderived : public K { + public: + virtual ~Kderived(); + }; + +} // namespace fragile + +fragile::Kderived::~Kderived() {} + +fragile::K::~K() {} + +fragile::K* fragile::K::GimeK(bool derived) { + if (!derived) return this; + else { + static Kderived kd; + return &kd; + } +}; + +fragile::K* fragile::K::GimeL() { + static L l; + return &l; +} + +fragile::L::~L() {} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.h b/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.h new file mode 100644 index 0000000000000..ff857e6c4e656 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.h @@ -0,0 +1,124 @@ +namespace fragile { + +class no_such_class; + +class A { +public: + virtual int check() { return (int)'A'; } + virtual A* gime_null() { return (A*)0; } +}; + +class B { +public: + virtual int check() { return (int)'B'; } + no_such_class* gime_no_such() { return 0; } +}; + +class C { +public: + virtual int check() { return (int)'C'; } + void use_no_such(no_such_class*) {} +}; + +class D { +public: + virtual int check() { return (int)'D'; } + virtual int check(int, int) { return (int)'D'; } + void overload() {} + void overload(no_such_class*) {} + void overload(char, int i = 0) {} // Reflex requires a named arg + void overload(int, no_such_class* p = 0) {} +}; + + +static const int dummy_location = 0xdead; + +class E { +public: + E() : m_pp_no_such((no_such_class**)&dummy_location), m_pp_a(0) {} + + virtual int check() { return (int)'E'; } + void overload(no_such_class**) {} + + no_such_class** m_pp_no_such; + A** m_pp_a; +}; + +class F { +public: + F() : m_int(0) {} + virtual int check() { return (int)'F'; } + int m_int; +}; + +class G { +public: + enum { unnamed1=24, unnamed2=96 }; + + class GG {}; +}; + +class H { +public: + class HH { + public: + HH* copy(); + }; + HH* m_h; +}; + +class I { +public: + operator bool() { return 0; } +}; + +extern I gI; + +class J { +public: + int method1(int, double) { return 0; } +}; + +void fglobal(int, double, char); + +namespace nested1 { + class A {}; + namespace nested2 { + class A {}; + namespace nested3 { + class A {}; + } // namespace nested3 + } // namespace nested2 +} // namespace nested1 + +class K { +public: + virtual ~K(); + K* GimeK(bool derived); + K* GimeL(); +}; + +class L : public K { +public: + virtual ~L(); + no_such_class* m_no_such; +}; + +class M { +public: + virtual ~M() {} + enum E1 { kOnce=42 }; + enum E2 { kTwice=12 }; +}; + +class N : public M { +public: + enum E2 { kTwice=12 }; +}; + +class O { +public: + virtual int abstract() = 0; +}; + +} // namespace fragile diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.xml new file mode 100644 index 0000000000000..a9a0d1fafa30c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/fragile.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/operators.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/operators.cxx new file mode 100644 index 0000000000000..4bd502924f051 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/operators.cxx @@ -0,0 +1,16 @@ +#include "operators.h" + +// for testing the case of virtual operator== +v_opeq_base::v_opeq_base(int val) : m_val(val) {} +v_opeq_base::~v_opeq_base() {} + +bool v_opeq_base::operator==(const v_opeq_base& other) { + return m_val == other.m_val; +} + +v_opeq_derived::v_opeq_derived(int val) : v_opeq_base(val) {} +v_opeq_derived::~v_opeq_derived() {} + +bool v_opeq_derived::operator==(const v_opeq_derived& other) { + return m_val != other.m_val; +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/operators.h b/bindings/pyroot_experimental/cppyy/cppyy/test/operators.h new file mode 100644 index 0000000000000..43ceaf5f74d59 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/operators.h @@ -0,0 +1,115 @@ +class number { +public: + number() { m_int = 0; } + number(int i) { m_int = i; } + + number operator+(const number& n) const { return number(m_int + n.m_int); } + number operator+(int n) const { return number(m_int + n); } + number operator-(const number& n) const { return number(m_int - n.m_int); } + number operator-(int n) const { return number(m_int - n); } + number operator*(const number& n) const { return number(m_int * n.m_int); } + number operator*(int n) const { return number(m_int * n); } + number operator/(const number& n) const { return number(m_int / n.m_int); } + number operator/(int n) const { return number(m_int / n); } + number operator%(const number& n) const { return number(m_int % n.m_int); } + number operator%(int n) const { return number(m_int % n); } + + number& operator+=(const number& n) { m_int += n.m_int; return *this; } + number& operator-=(const number& n) { m_int -= n.m_int; return *this; } + number& operator*=(const number& n) { m_int *= n.m_int; return *this; } + number& operator/=(const number& n) { m_int /= n.m_int; return *this; } + number& operator%=(const number& n) { m_int %= n.m_int; return *this; } + + number operator-() { return number( -m_int ); } + + bool operator<(const number& n) const { return m_int < n.m_int; } + bool operator>(const number& n) const { return m_int > n.m_int; } + bool operator<=(const number& n) const { return m_int <= n.m_int; } + bool operator>=(const number& n) const { return m_int >= n.m_int; } + bool operator!=(const number& n) const { return m_int != n.m_int; } + bool operator==(const number& n) const { return m_int == n.m_int; } + + operator bool() { return m_int != 0; } + + number operator&(const number& n) const { return number(m_int & n.m_int); } + number operator|(const number& n) const { return number(m_int | n.m_int); } + number operator^(const number& n) const { return number(m_int ^ n.m_int); } + + number& operator&=(const number& n) { m_int &= n.m_int; return *this; } + number& operator|=(const number& n) { m_int |= n.m_int; return *this; } + number& operator^=(const number& n) { m_int ^= n.m_int; return *this; } + + number operator<<(int i) const { return number(m_int << i); } + number operator>>(int i) const { return number(m_int >> i); } + +private: + int m_int; +}; + +//---------------------------------------------------------------------------- +struct operator_char_star { // for testing user-defined implicit casts + operator_char_star() : m_str((char*)"operator_char_star") {} + operator char*() { return m_str; } + char* m_str; +}; + +struct operator_const_char_star { + operator_const_char_star() : m_str("operator_const_char_star" ) {} + operator const char*() { return m_str; } + const char* m_str; +}; + +struct operator_int { + operator int() { return m_int; } + int m_int; +}; + +struct operator_long { + operator long() { return m_long; } + long m_long; +}; + +struct operator_double { + operator double() { return m_double; } + double m_double; +}; + +struct operator_short { + operator short() { return m_short; } + unsigned short m_short; +}; + +struct operator_unsigned_int { + operator unsigned int() { return m_uint; } + unsigned int m_uint; +}; + +struct operator_unsigned_long { + operator unsigned long() { return m_ulong; } + unsigned long m_ulong; +}; + +struct operator_float { + operator float() { return m_float; } + float m_float; +}; + +//---------------------------------------------------------------------------- +class v_opeq_base { +public: + v_opeq_base(int val); + virtual ~v_opeq_base(); + + virtual bool operator==(const v_opeq_base& other); + +protected: + int m_val; +}; + +class v_opeq_derived : public v_opeq_base { +public: + v_opeq_derived(int val); + virtual ~v_opeq_derived(); + + virtual bool operator==(const v_opeq_derived& other); +}; diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/operators.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/operators.xml new file mode 100644 index 0000000000000..00ee89a3ae402 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/operators.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.cxx new file mode 100644 index 0000000000000..c463b941b4bc0 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.cxx @@ -0,0 +1,56 @@ +#include "overloads.h" + + +a_overload::a_overload() { i1 = 42; i2 = -1; } + +ns_a_overload::a_overload::a_overload() { i1 = 88; i2 = -34; } +int ns_a_overload::b_overload::f(const std::vector* v) { return (*v)[0]; } + +ns_b_overload::a_overload::a_overload() { i1 = -33; i2 = 89; } + +b_overload::b_overload() { i1 = -2; i2 = 13; } + +c_overload::c_overload() {} +int c_overload::get_int(a_overload* a) { return a->i1; } +int c_overload::get_int(ns_a_overload::a_overload* a) { return a->i1; } +int c_overload::get_int(ns_b_overload::a_overload* a) { return a->i1; } +int c_overload::get_int(short* p) { return *p; } +int c_overload::get_int(b_overload* b) { return b->i2; } +int c_overload::get_int(int* p) { return *p; } + +d_overload::d_overload() {} +int d_overload::get_int(int* p) { return *p; } +int d_overload::get_int(b_overload* b) { return b->i2; } +int d_overload::get_int(short* p) { return *p; } +int d_overload::get_int(ns_b_overload::a_overload* a) { return a->i1; } +int d_overload::get_int(ns_a_overload::a_overload* a) { return a->i1; } +int d_overload::get_int(a_overload* a) { return a->i1; } + + +more_overloads::more_overloads() {} +std::string more_overloads::call(const aa_ol&) { return "aa_ol"; } +std::string more_overloads::call(const bb_ol&, void* n) { n = 0; return "bb_ol"; } +std::string more_overloads::call(const cc_ol&) { return "cc_ol"; } +std::string more_overloads::call(const dd_ol&) { return "dd_ol"; } + +std::string more_overloads::call_unknown(const dd_ol&) { return "dd_ol"; } + +std::string more_overloads::call(double) { return "double"; } +std::string more_overloads::call(int) { return "int"; } +std::string more_overloads::call1(int) { return "int"; } +std::string more_overloads::call1(double) { return "double"; } + + +more_overloads2::more_overloads2() {} +std::string more_overloads2::call(const bb_ol&) { return "bb_olref"; } +std::string more_overloads2::call(const bb_ol*) { return "bb_olptr"; } + +std::string more_overloads2::call(const dd_ol*, int) { return "dd_olptr"; } +std::string more_overloads2::call(const dd_ol&, int) { return "dd_olref"; } + + +double calc_mean(long n, const float* a) { return calc_mean(n, a); } +double calc_mean(long n, const double* a) { return calc_mean(n, a); } +double calc_mean(long n, const int* a) { return calc_mean(n, a); } +double calc_mean(long n, const short* a) { return calc_mean(n, a); } +double calc_mean(long n, const long* a) { return calc_mean(n, a); } diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.h b/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.h new file mode 100644 index 0000000000000..23cfddc27cb12 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.h @@ -0,0 +1,108 @@ +#include +#include + +class a_overload { +public: + a_overload(); + int i1, i2; +}; + +namespace ns_a_overload { + class a_overload { + public: + a_overload(); + int i1, i2; + }; + + class b_overload { + public: + int f(const std::vector* v); + }; +} + +namespace ns_b_overload { + class a_overload { + public: + a_overload(); + int i1, i2; + }; +} + +class b_overload { +public: + b_overload(); + int i1, i2; +}; + +class c_overload { +public: + c_overload(); + int get_int(a_overload* a); + int get_int(ns_a_overload::a_overload* a); + int get_int(ns_b_overload::a_overload* a); + int get_int(short* p); + int get_int(b_overload* b); + int get_int(int* p); +}; + +class d_overload { +public: + d_overload(); +// int get_int(void* p) { return *(int*)p; } + int get_int(int* p); + int get_int(b_overload* b); + int get_int(short* p); + int get_int(ns_b_overload::a_overload* a); + int get_int(ns_a_overload::a_overload* a); + int get_int(a_overload* a); +}; + + +class aa_ol {}; +class bb_ol; +class cc_ol {}; +class dd_ol; + +class more_overloads { +public: + more_overloads(); + std::string call(const aa_ol&); + std::string call(const bb_ol&, void* n=0); + std::string call(const cc_ol&); + std::string call(const dd_ol&); + + std::string call_unknown(const dd_ol&); + + std::string call(double); + std::string call(int); + std::string call1(int); + std::string call1(double); +}; + +class more_overloads2 { +public: + more_overloads2(); + std::string call(const bb_ol&); + std::string call(const bb_ol*); + + std::string call(const dd_ol*, int); + std::string call(const dd_ol&, int); +}; + +template +double calc_mean(long n, const T* a) { + double sum = 0., sumw = 0.; + const T* end = a+n; + while (a != end) { + sum += *a++; + sumw += 1; + } + + return sum/sumw; +} + +double calc_mean(long n, const float* a); +double calc_mean(long n, const double* a); +double calc_mean(long n, const int* a); +double calc_mean(long n, const short* a); +double calc_mean(long n, const long* a); diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.xml new file mode 100644 index 0000000000000..131296e72d41d --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/overloads.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.cxx new file mode 100644 index 0000000000000..9f18923c6fa52 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.cxx @@ -0,0 +1,52 @@ +#include "pythonizables.h" + + +//=========================================================================== +pyzables::NakedBuffers::NakedBuffers(int size, double valx, double valy) : m_size(size) { + m_Xbuf = new double[size]; + m_Ybuf = new double[size]; + + for (int i=0; i(new Countable); } + +pyzables::SharedCountable_t pyzables::gime_mine() { return mine; } +pyzables::SharedCountable_t* pyzables::gime_mine_ptr() { return &mine; } +pyzables::SharedCountable_t& pyzables::gime_mine_ref() { return mine; } + +unsigned int pyzables::pass_mine_sp(std::shared_ptr ptr) { return ptr->m_check; } +unsigned int pyzables::pass_mine_sp_ref(std::shared_ptr& ptr) { return ptr->m_check; } +unsigned int pyzables::pass_mine_sp_ptr(std::shared_ptr* ptr) { return (*ptr)->m_check; } + +unsigned int pyzables::pass_mine_rp(Countable c) { return c.m_check; } +unsigned int pyzables::pass_mine_rp_ref(const Countable& c) { return c.m_check; } +unsigned int pyzables::pass_mine_rp_ptr(const Countable* c) { return c->m_check; } diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.h b/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.h new file mode 100644 index 0000000000000..f2472c74ba0ee --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.h @@ -0,0 +1,106 @@ +#include +#include + + +namespace pyzables { + +//=========================================================================== +class SomeDummy1 {}; +class SomeDummy2 {}; + + +//=========================================================================== +class NakedBuffers { +public: + NakedBuffers(int size, double valx, double valy); + NakedBuffers(const NakedBuffers&) = delete; + NakedBuffers& operator=(const NakedBuffers&) = delete; + ~NakedBuffers(); + +public: + int GetN(); + double* GetX(); + double* GetY(); + +private: + double* m_Xbuf; + double* m_Ybuf; + int m_size; +}; + +template +class NakedBuffers2 { +public: + NakedBuffers2(int size, double valx, double valy) : m_Xbuf(size), m_Ybuf(size) { + for (int i=0; i { +public: + Vector(int size) : std::vector(size) {} +}; + + +//=========================================================================== +class MyBase { +public: + virtual ~MyBase(); +}; +class MyDerived : public MyBase { +public: + virtual ~MyDerived(); +}; + +MyBase* GimeDerived(); + + +//=========================================================================== +class Countable { +public: + Countable() { ++sInstances; } + Countable(const Countable&) { ++sInstances; } + Countable& operator=(const Countable&) { return *this; } + ~Countable() { --sInstances; } + +public: + virtual const char* say_hi() { return "Hi!"; } + +public: + unsigned int m_check = 0xcdcdcdcd; + +public: + static int sInstances; +}; + +typedef std::shared_ptr SharedCountable_t; +extern SharedCountable_t mine; + +void renew_mine(); + +SharedCountable_t gime_mine(); +SharedCountable_t* gime_mine_ptr(); +SharedCountable_t& gime_mine_ref(); + +unsigned int pass_mine_sp(SharedCountable_t p); +unsigned int pass_mine_sp_ref(SharedCountable_t& p); +unsigned int pass_mine_sp_ptr(SharedCountable_t* p); + +unsigned int pass_mine_rp(Countable); +unsigned int pass_mine_rp_ref(const Countable&); +unsigned int pass_mine_rp_ptr(const Countable*); + +} // namespace pyzables diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.xml new file mode 100644 index 0000000000000..154869de9f10e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/pythonizables.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.cxx new file mode 100644 index 0000000000000..94e924b7b2bde --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.cxx @@ -0,0 +1,3 @@ +#include "std_streams.h" + +template class std::basic_ios >; diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.h b/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.h new file mode 100644 index 0000000000000..4088e4302dfa4 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.h @@ -0,0 +1,13 @@ +#ifndef STD_STREAMS_H +#define STD_STREAMS_H 1 + +#ifndef __CINT__ +#include +#endif +#include + +#ifndef __CINT__ +extern template class std::basic_ios >; +#endif + +#endif // STD_STREAMS_H diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.xml new file mode 100644 index 0000000000000..01eb8c73b5427 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/std_streams.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.cxx new file mode 100644 index 0000000000000..df5832d4f239f --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.cxx @@ -0,0 +1,43 @@ +#include "stltypes.h" + + +//- explicit instantiations of used comparisons +#if defined __clang__ +namespace std { +#define ns_prefix std:: +#elif defined(__GNUC__) || defined(__GNUG__) +namespace __gnu_cxx { +#define ns_prefix +#endif +template bool ns_prefix operator==(const std::vector::iterator&, + const std::vector::iterator&); +template bool ns_prefix operator!=(const std::vector::iterator&, + const std::vector::iterator&); +} + +//- class with lots of std::string handling +stringy_class::stringy_class(const char* s) : m_string(s) {} + +std::string stringy_class::get_string1() { return m_string; } +void stringy_class::get_string2(std::string& s) { s = m_string; } + +void stringy_class::set_string1(const std::string& s) { m_string = s; } +void stringy_class::set_string2(std::string s) { m_string = s; } + + +//- helpers for testing array +int ArrayTest::get_pp_px(Point** p, int idx) { + return p[idx]->px; +} + +int ArrayTest::get_pp_py(Point** p, int idx) { + return p[idx]->py; +} + +int ArrayTest::get_pa_px(Point* p[], int idx) { + return p[idx]->px; +} + +int ArrayTest::get_pa_py(Point* p[], int idx) { + return p[idx]->py; +} diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.h b/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.h new file mode 100644 index 0000000000000..10541d3a486fa --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.h @@ -0,0 +1,78 @@ +#include +#include +#include +#include +#include + +//- basic example class +class just_a_class { +public: + int m_i; +}; + +//- class with lots of std::string handling +class stringy_class { +public: + stringy_class(const char* s); + + std::string get_string1(); + void get_string2(std::string& s); + + void set_string1(const std::string& s); + void set_string2(std::string s); + + std::string m_string; +}; + +//- class that has an STL-like interface +class no_dict_available; + +template +class stl_like_class { +public: + no_dict_available* begin() { return 0; } + no_dict_available* end() { return 0; } + int size() { return 4; } + int operator[](int i) { return i; } + std::string operator[](double) { return "double"; } + std::string operator[](const std::string&) { return "string"; } +}; + + +//- instantiations of used STL types +namespace { + + stl_like_class stlc_1; + +} // unnamed namespace + + +// comps for int only to allow testing: normal use of vector is looping over a +// range-checked version of __getitem__ +#if defined(__clang__) && defined(__APPLE__) +namespace std { +#define ns_prefix std:: +#elif defined(__GNUC__) || defined(__GNUG__) +namespace __gnu_cxx { +#define ns_prefix +#endif +extern template bool ns_prefix operator==(const std::vector::iterator&, + const std::vector::iterator&); +extern template bool ns_prefix operator!=(const std::vector::iterator&, + const std::vector::iterator&); +} + + +//- helpers for testing array +namespace ArrayTest { + +struct Point { + int px, py; +}; + +int get_pp_px(Point** p, int idx); +int get_pp_py(Point** p, int idx); +int get_pa_px(Point* p[], int idx); +int get_pa_py(Point* p[], int idx); + +} // namespace ArrayTest diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.xml new file mode 100644 index 0000000000000..0043d8dc74540 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/stltypes.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/support.py b/bindings/pyroot_experimental/cppyy/cppyy/test/support.py new file mode 100644 index 0000000000000..569591703ca78 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/support.py @@ -0,0 +1,21 @@ +from __future__ import print_function +import py, sys, subprocess + +currpath = py.path.local(__file__).dirpath() + + +def setup_make(targetname): + if sys.platform == 'win32': + raise OSError("win32 not supported yet") + popen = subprocess.Popen(["make", targetname], cwd=str(currpath), + stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + stdout, _ = popen.communicate() + if popen.returncode: + raise OSError("'make' failed:\n%s" % (stdout,)) + +if sys.hexversion >= 0x3000000: + pylong = int + maxvalue = sys.maxsize +else: + pylong = long + maxvalue = sys.maxint diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/templates.cxx b/bindings/pyroot_experimental/cppyy/cppyy/test/templates.cxx new file mode 100644 index 0000000000000..90489166467b0 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/templates.cxx @@ -0,0 +1,12 @@ +#include "templates.h" + + +// template methods +long MyTemplatedMethodClass::get_size() { return -1; } + +long MyTemplatedMethodClass::get_char_size() { return (long)sizeof(char); } +long MyTemplatedMethodClass::get_int_size() { return (long)sizeof(int); } +long MyTemplatedMethodClass::get_long_size() { return (long)42; /* "lying" */ } +long MyTemplatedMethodClass::get_float_size() { return (long)sizeof(float); } +long MyTemplatedMethodClass::get_double_size() { return (long)sizeof(double); } +long MyTemplatedMethodClass::get_self_size() { return (long)sizeof(MyTemplatedMethodClass); } diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/templates.h b/bindings/pyroot_experimental/cppyy/cppyy/test/templates.h new file mode 100644 index 0000000000000..bb6febf38480e --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/templates.h @@ -0,0 +1,145 @@ +#include +#include + + +//=========================================================================== +class MyTemplatedMethodClass { // template methods +public: + long get_size(); // to get around bug in genreflex + template long get_size(); + + long get_char_size(); + long get_int_size(); + long get_long_size(); + long get_float_size(); + long get_double_size(); + + long get_self_size(); + +private: + double m_data[3]; +}; + +template +inline long MyTemplatedMethodClass::get_size() { + return sizeof(B); +} + +// +typedef MyTemplatedMethodClass MyTMCTypedef_t; + +// explicit instantiation +template long MyTemplatedMethodClass::get_size(); +template long MyTemplatedMethodClass::get_size(); + +// "lying" specialization +template<> +inline long MyTemplatedMethodClass::get_size() { + return 42; +} + + +//=========================================================================== +// global templated functions +template +long global_get_size() { + return sizeof(T); +} + +template +int global_some_foo(T) { + return 42; +} + +template +int global_some_bar(T) { + return 13; +} + + +//=========================================================================== +// variadic functions +inline bool isSomeInt(int) { return true; } +inline bool isSomeInt(double) { return false; } +template +inline bool isSomeInt(Args...) { return false; } + +namespace AttrTesting { + +struct Obj1 { int var1; }; +struct Obj2 { int var2; }; + +template +constexpr auto has_var1(T t) -> decltype(t.var1, true) { return true; } + +template +constexpr bool has_var1(Args...) { return false; } + +template +constexpr bool call_has_var1(T&& t) { return AttrTesting::has_var1(std::forward(t)); } + +template +struct select_template_arg {}; + +template +struct select_template_arg<0, T0, T...> { + typedef T0 type; +}; + +template +struct select_template_arg { + typedef typename select_template_arg::type argument; +}; + +} // AttrTesting + + +namespace SomeNS { + +template +int some_foo(T) { + return 42; +} + +template +int some_bar() { + return T; +} + +inline std::string tuplify(std::ostringstream& out) { + out.seekp(-2, out.cur); out << ')'; + return out.str(); +} + +template +std::string tuplify(std::ostringstream& out, T value, Args... args) +{ + out << value << ", "; + return tuplify(out, args...); +} + +} // namespace SomeNS + + +//=========================================================================== +// using of static data +// TODO: this should live here instead of in test_templates.test08 +/* +template struct BaseClassWithStatic { + static T const ref_value; +}; + +template +T const BaseClassWithStatic::ref_value = 42; + +template +struct DerivedClassUsingStatic : public BaseClassWithStatic { + using BaseClassWithStatic::ref_value; + + explicit DerivedClassUsingStatic(T x) : BaseClassWithStatic() { + m_value = x > ref_value ? ref_value : x; + } + + T m_value; +}; +*/ diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/templates.xml b/bindings/pyroot_experimental/cppyy/cppyy/test/templates.xml new file mode 100644 index 0000000000000..17c4ffa9617a1 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/templates.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_aclassloader.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_aclassloader.py new file mode 100644 index 0000000000000..f304af57b7670 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_aclassloader.py @@ -0,0 +1,24 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("example01Dict.so")) + +def setup_module(mod): + setup_make("example01Dict.so") + + +class TestACLASSLOADER: + + def setup_class(cls): + import cppyy + + def test01_class_autoloading(self): + """Test whether a class can be found through .rootmap.""" + import cppyy + example01_class = cppyy.gbl.example01 + assert example01_class + cl2 = cppyy.gbl.example01 + assert cl2 + assert example01_class is cl2 diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_advancedcpp.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_advancedcpp.py new file mode 100644 index 0000000000000..dbf2f3540db17 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_advancedcpp.py @@ -0,0 +1,722 @@ +import py, os, sys +from pytest import raises +from .support import setup_make, pylong + +try: + import __pypy__ + is_pypy = True +except ImportError: + is_pypy = False + + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("advancedcppDict.so")) + +def setup_module(mod): + setup_make("advancedcppDict.so") + setup_make("advancedcpp2Dict.so") + + +class TestADVANCEDCPP: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.advanced = cppyy.load_reflection_info(cls.test_dct) + + def test01_default_arguments(self): + """Test usage of default arguments""" + + import cppyy + def test_defaulter(n, t): + defaulter = getattr(cppyy.gbl, '%s_defaulter' % n) + + d = defaulter() + assert d.m_a == t(11) + assert d.m_b == t(22) + assert d.m_c == t(33) + d.__destruct__() + + d = defaulter(0) + assert d.m_a == t(0) + assert d.m_b == t(22) + assert d.m_c == t(33) + d.__destruct__() + + d = defaulter(1, 2) + assert d.m_a == t(1) + assert d.m_b == t(2) + assert d.m_c == t(33) + d.__destruct__() + + d = defaulter(3, 4, 5) + assert d.m_a == t(3) + assert d.m_b == t(4) + assert d.m_c == t(5) + d.__destruct__() + test_defaulter('short', int) + test_defaulter('ushort', int) + test_defaulter('int', int) + test_defaulter('uint', int) + test_defaulter('long', pylong) + test_defaulter('ulong', pylong) + test_defaulter('llong', pylong) + test_defaulter('ullong', pylong) + test_defaulter('float', float) + test_defaulter('double', float) + + def test02_simple_inheritance(self): + """Test binding of a basic inheritance structure""" + + import cppyy + base_class = cppyy.gbl.base_class + derived_class = cppyy.gbl.derived_class + + assert issubclass(derived_class, base_class) + assert not issubclass(base_class, derived_class) + + b = base_class() + assert isinstance(b, base_class) + assert not isinstance(b, derived_class) + + assert b.m_b == 1 + assert b.get_value() == 1 + assert b.m_db == 1.1 + assert b.get_base_value() == 1.1 + + b.m_b, b.m_db = 11, 11.11 + assert b.m_b == 11 + assert b.get_value() == 11 + assert b.m_db == 11.11 + assert b.get_base_value() == 11.11 + + b.__destruct__() + + d = derived_class() + assert isinstance(d, derived_class) + assert isinstance(d, base_class) + + assert d.m_d == 2 + assert d.get_value() == 2 + assert d.m_dd == 2.2 + assert d.get_derived_value() == 2.2 + + assert d.m_b == 1 + assert d.m_db == 1.1 + assert d.get_base_value() == 1.1 + + d.m_b, d.m_db = 11, 11.11 + d.m_d, d.m_dd = 22, 22.22 + + assert d.m_d == 22 + assert d.get_value() == 22 + assert d.m_dd == 22.22 + assert d.get_derived_value() == 22.22 + + assert d.m_b == 11 + assert d.m_db == 11.11 + assert d.get_base_value() == 11.11 + + d.__destruct__() + + def test03_namespaces(self): + """Test access to namespaces and inner classes""" + + import cppyy + gbl = cppyy.gbl + + assert gbl.a_ns is gbl.a_ns + assert gbl.a_ns.d_ns is gbl.a_ns.d_ns + + assert gbl.a_ns.b_class is gbl.a_ns.b_class + assert gbl.a_ns.b_class.c_class is gbl.a_ns.b_class.c_class + assert gbl.a_ns.d_ns.e_class is gbl.a_ns.d_ns.e_class + assert gbl.a_ns.d_ns.e_class.f_class is gbl.a_ns.d_ns.e_class.f_class + + assert gbl.a_ns.g_a == 11 + assert gbl.a_ns.get_g_a() == 11 + assert gbl.a_ns.b_class.s_b == 22 + assert gbl.a_ns.b_class().m_b == -2 + assert gbl.a_ns.b_class.c_class.s_c == 33 + assert gbl.a_ns.b_class.c_class().m_c == -3 + assert gbl.a_ns.d_ns.g_d == 44 + assert gbl.a_ns.d_ns.get_g_d() == 44 + assert gbl.a_ns.d_ns.e_class.s_e == 55 + assert gbl.a_ns.d_ns.e_class().m_e == -5 + assert gbl.a_ns.d_ns.e_class.f_class.s_f == 66 + assert gbl.a_ns.d_ns.e_class.f_class().m_f == -6 + + def test03a_namespace_lookup_on_update(self): + """Test whether namespaces can be shared across dictionaries.""" + + import cppyy + gbl = cppyy.gbl + + lib2 = cppyy.load_reflection_info("advancedcpp2Dict.so") + + assert gbl.a_ns is gbl.a_ns + assert gbl.a_ns.d_ns is gbl.a_ns.d_ns + + assert gbl.a_ns.g_class is gbl.a_ns.g_class + assert gbl.a_ns.g_class.h_class is gbl.a_ns.g_class.h_class + assert gbl.a_ns.d_ns.i_class is gbl.a_ns.d_ns.i_class + assert gbl.a_ns.d_ns.i_class.j_class is gbl.a_ns.d_ns.i_class.j_class + + assert gbl.a_ns.g_g == 77 + assert gbl.a_ns.get_g_g() == 77 + assert gbl.a_ns.g_class.s_g == 88 + assert gbl.a_ns.g_class().m_g == -7 + assert gbl.a_ns.g_class.h_class.s_h == 99 + assert gbl.a_ns.g_class.h_class().m_h == -8 + assert gbl.a_ns.d_ns.g_i == 111 + assert gbl.a_ns.d_ns.get_g_i() == 111 + assert gbl.a_ns.d_ns.i_class.s_i == 222 + assert gbl.a_ns.d_ns.i_class().m_i == -9 + assert gbl.a_ns.d_ns.i_class.j_class.s_j == 333 + assert gbl.a_ns.d_ns.i_class.j_class().m_j == -10 + + def test04_template_types(self): + """Test bindings of templated types""" + + import cppyy + gbl = cppyy.gbl + + assert gbl.T1 is gbl.T1 + assert gbl.T2 is gbl.T2 + assert gbl.T3 is gbl.T3 + assert not gbl.T1 is gbl.T2 + assert not gbl.T2 is gbl.T3 + + assert gbl.T1('int') is gbl.T1('int') + assert gbl.T1(int) is gbl.T1('int') + assert gbl.T2('T1') is gbl.T2('T1') + assert gbl.T2(gbl.T1('int')) is gbl.T2('T1') + assert gbl.T2(gbl.T1(int)) is gbl.T2('T1') + assert gbl.T3('int,double') is gbl.T3('int,double') + assert gbl.T3('int', 'double') is gbl.T3('int,double') + assert gbl.T3(int, 'double') is gbl.T3('int,double') + assert gbl.T3('T1,T2 >') is gbl.T3('T1,T2 >') + assert gbl.T3('T1', gbl.T2(gbl.T1(int))) is gbl.T3('T1,T2 >') + + assert gbl.a_ns.T4(int) is gbl.a_ns.T4('int') + assert gbl.a_ns.T4('a_ns::T4 >')\ + is gbl.a_ns.T4(gbl.a_ns.T4(gbl.T3(int, 'double'))) + + #----- mix in some of the alternative syntax + assert gbl.T1['int'] is gbl.T1('int') + assert gbl.T1[int] is gbl.T1('int') + assert gbl.T2['T1'] is gbl.T2('T1') + assert gbl.T2[gbl.T1('int')] is gbl.T2('T1') + assert gbl.T2[gbl.T1(int)] is gbl.T2('T1') + assert gbl.T3['int,double'] is gbl.T3('int,double') + assert gbl.T3['int', 'double'] is gbl.T3('int,double') + assert gbl.T3[int, 'double'] is gbl.T3('int,double') + assert gbl.T3['T1,T2 >'] is gbl.T3('T1,T2 >') + assert gbl.T3['T1', gbl.T2[gbl.T1[int]]] is gbl.T3('T1,T2 >') + + assert gbl.a_ns.T4[int] is gbl.a_ns.T4('int') + assert gbl.a_ns.T4['a_ns::T4 >']\ + is gbl.a_ns.T4(gbl.a_ns.T4(gbl.T3(int, 'double'))) + + #----- + t1 = gbl.T1(int)() + assert t1.m_t1 == 1 + assert t1.get_value() == 1 + t1.__destruct__() + + #----- + t1 = gbl.T1(int)(11) + assert t1.m_t1 == 11 + assert t1.get_value() == 11 + t1.m_t1 = 111 + assert t1.get_value() == 111 + assert t1.m_t1 == 111 + t1.__destruct__() + + #----- + t2 = gbl.T2(gbl.T1(int))(gbl.T1(int)(32)) + t2.m_t2.m_t1 = 32 + assert t2.m_t2.get_value() == 32 + assert t2.m_t2.m_t1 == 32 + t2.__destruct__() + + + def test05_abstract_classes(self): + """Test non-instatiatability of abstract classes""" + + import cppyy + gbl = cppyy.gbl + + raises(TypeError, gbl.a_class) + raises(TypeError, gbl.some_abstract_class) + + assert issubclass(gbl.some_concrete_class, gbl.some_abstract_class) + + c = gbl.some_concrete_class() + assert isinstance(c, gbl.some_concrete_class) + assert isinstance(c, gbl.some_abstract_class) + + def test06_datamembers(self): + """Test data member access when using virtual inheritence""" + + import cppyy + a_class = cppyy.gbl.a_class + b_class = cppyy.gbl.b_class + c_class_1 = cppyy.gbl.c_class_1 + c_class_2 = cppyy.gbl.c_class_2 + d_class = cppyy.gbl.d_class + + assert issubclass(b_class, a_class) + assert issubclass(c_class_1, a_class) + assert issubclass(c_class_1, b_class) + assert issubclass(c_class_2, a_class) + assert issubclass(c_class_2, b_class) + assert issubclass(d_class, a_class) + assert issubclass(d_class, b_class) + assert issubclass(d_class, c_class_2) + + #----- + b = b_class() + assert b.m_a == 1 + assert b.m_da == 1.1 + assert b.m_b == 2 + assert b.m_db == 2.2 + + b.m_a = 11 + assert b.m_a == 11 + assert b.m_b == 2 + + b.m_da = 11.11 + assert b.m_da == 11.11 + assert b.m_db == 2.2 + + b.m_b = 22 + assert b.m_a == 11 + assert b.m_da == 11.11 + assert b.m_b == 22 + assert b.get_value() == 22 + + b.m_db = 22.22 + assert b.m_db == 22.22 + + b.__destruct__() + + #----- + c1 = c_class_1() + assert c1.m_a == 1 + assert c1.m_b == 2 + assert c1.m_c == 3 + + c1.m_a = 11 + assert c1.m_a == 11 + + c1.m_b = 22 + assert c1.m_a == 11 + assert c1.m_b == 22 + + c1.m_c = 33 + assert c1.m_a == 11 + assert c1.m_b == 22 + assert c1.m_c == 33 + assert c1.get_value() == 33 + + c1.__destruct__() + + #----- + d = d_class() + assert d.m_a == 1 + assert d.m_b == 2 + assert d.m_c == 3 + assert d.m_d == 4 + + d.m_a = 11 + assert d.m_a == 11 + + d.m_b = 22 + assert d.m_a == 11 + assert d.m_b == 22 + + d.m_c = 33 + assert d.m_a == 11 + assert d.m_b == 22 + assert d.m_c == 33 + + d.m_d = 44 + assert d.m_a == 11 + assert d.m_b == 22 + assert d.m_c == 33 + assert d.m_d == 44 + assert d.get_value() == 44 + + d.__destruct__() + + def test07_pass_by_reference(self): + """Test reference passing when using virtual inheritance""" + + import cppyy + gbl = cppyy.gbl + b_class = gbl.b_class + c_class = gbl.c_class_2 + d_class = gbl.d_class + + #----- + b = b_class() + b.m_a, b.m_b = 11, 22 + assert gbl.get_a(b) == 11 + assert gbl.get_b(b) == 22 + b.__destruct__() + + #----- + c = c_class() + c.m_a, c.m_b, c.m_c = 11, 22, 33 + assert gbl.get_a(c) == 11 + assert gbl.get_b(c) == 22 + assert gbl.get_c(c) == 33 + c.__destruct__() + + #----- + d = d_class() + d.m_a, d.m_b, d.m_c, d.m_d = 11, 22, 33, 44 + assert gbl.get_a(d) == 11 + assert gbl.get_b(d) == 22 + assert gbl.get_c(d) == 33 + assert gbl.get_d(d) == 44 + d.__destruct__() + + def test08_void_pointer_passing(self): + """Test passing of variants of void pointer arguments""" + + import cppyy + pointer_pass = cppyy.gbl.pointer_pass + some_concrete_class = cppyy.gbl.some_concrete_class + + pp = pointer_pass() + o = some_concrete_class() + + assert cppyy.addressof(o) == pp.gime_address_ptr(o) + assert cppyy.addressof(o) == pp.gime_address_ptr_ptr(o) + assert cppyy.addressof(o) == pp.gime_address_ptr_ref(o) + + import array + addressofo = array.array('l', [cppyy.addressof(o)]) + assert addressofo[0] == pp.gime_address_ptr_ptr(addressofo) + + assert 0 == pp.gime_address_ptr(0) + raises(TypeError, pp.gime_address_ptr, None) + + ptr = cppyy.bind_object(0, some_concrete_class) + assert cppyy.addressof(ptr) == 0 + pp.set_address_ptr_ref(ptr) + assert cppyy.addressof(ptr) == 0x1234 + pp.set_address_ptr_ptr(ptr) + assert cppyy.addressof(ptr) == 0x4321 + + assert cppyy.addressof(cppyy.nullptr) == 0 + raises(TypeError, cppyy.addressof, None) + assert cppyy.addressof(0) == 0 + + def test09_opaque_pointer_passing(self): + """Test passing around of opaque pointers""" + + import cppyy + some_concrete_class = cppyy.gbl.some_concrete_class + + o = some_concrete_class() + + # TODO: figure out the PyPy equivalent of CObject (may have to do this + # through the C-API from C++) + + #cobj = cppyy.as_cobject(o) + addr = cppyy.addressof(o) + + #assert o == cppyy.bind_object(cobj, some_concrete_class) + #assert o == cppyy.bind_object(cobj, type(o)) + #assert o == cppyy.bind_object(cobj, o.__class__) + #assert o == cppyy.bind_object(cobj, "some_concrete_class") + assert cppyy.addressof(o) == cppyy.addressof(cppyy.bind_object(addr, some_concrete_class)) + assert o == cppyy.bind_object(addr, some_concrete_class) + assert o == cppyy.bind_object(addr, type(o)) + assert o == cppyy.bind_object(addr, o.__class__) + assert o == cppyy.bind_object(addr, "some_concrete_class") + raises(TypeError, cppyy.bind_object, addr, "does_not_exist") + raises(TypeError, cppyy.bind_object, addr, 1) + + def test10_object_identity(self): + """Test object identity""" + + import cppyy + some_concrete_class = cppyy.gbl.some_concrete_class + some_class_with_data = cppyy.gbl.some_class_with_data + + o = some_concrete_class() + addr = cppyy.addressof(o) + + o2 = cppyy.bind_object(addr, some_concrete_class) + assert o is o2 + + o3 = cppyy.bind_object(addr, some_class_with_data) + assert not o is o3 + + d1 = some_class_with_data() + d2 = d1.gime_copy() + assert not d1 is d2 + + dd1a = d1.gime_data() + dd1b = d1.gime_data() + assert dd1a is dd1b + + dd2 = d2.gime_data() + assert not dd1a is dd2 + assert not dd1b is dd2 + + d2.__destruct__() + d1.__destruct__() + + RTS = cppyy.gbl.refers_to_self + + r1 = RTS() + r2 = RTS() + r1.m_other = r2 + + r3 = r1.m_other + r4 = r1.m_other + assert r3 is r4 + + assert r3 == r2 + assert r3 is r2 + + r3.extra = 42 + assert r2.extra == 42 + assert r4.extra == 42 + + def test11_multi_methods(self): + """Test calling of methods from multiple inheritance""" + + import cppyy + multi = cppyy.gbl.multi + + assert cppyy.gbl.multi1 is multi.__bases__[0] + assert cppyy.gbl.multi2 is multi.__bases__[1] + + dict_keys = list(multi.__dict__.keys()) + assert dict_keys.count('get_my_own_int') == 1 + assert dict_keys.count('get_multi1_int') == 0 + assert dict_keys.count('get_multi2_int') == 0 + + m = multi(1, 2, 3) + assert m.get_multi1_int() == 1 + assert m.get_multi2_int() == 2 + assert m.get_my_own_int() == 3 + + def test12_actual_type(self): + """Test that a pointer to base return does an auto-downcast""" + + import cppyy + base_class = cppyy.gbl.base_class + derived_class = cppyy.gbl.derived_class + + b = base_class() + d = derived_class() + + assert b == b.cycle(b) + assert id(b) == id(b.cycle(b)) + assert b == d.cycle(b) + assert id(b) == id(d.cycle(b)) + assert d == b.cycle(d) + assert id(d) == id(b.cycle(d)) + assert d == d.cycle(d) + assert id(d) == id(d.cycle(d)) + + assert isinstance(b.cycle(b), base_class) + assert isinstance(d.cycle(b), base_class) + assert isinstance(b.cycle(d), derived_class) + assert isinstance(d.cycle(d), derived_class) + + assert isinstance(b.clone(), base_class) # TODO: clone() leaks + assert isinstance(d.clone(), derived_class) # TODO: clone() leaks + + # special case when round-tripping through a void* ptr + voidp = b.mask(d) + assert not isinstance(voidp, base_class) + assert not isinstance(voidp, derived_class) + + d1 = cppyy.bind_object(voidp, base_class, cast=True) + assert isinstance(d1, derived_class) + assert d1 is d + + b1 = cppyy.bind_object(voidp, base_class) + assert isinstance(b1, base_class) + assert cppyy.addressof(b1) == cppyy.addressof(d) + assert not (b1 is d) + + def test13_actual_type_virtual_multi(self): + """Test auto-downcast in adverse inheritance situation""" + + import cppyy + + c1 = cppyy.gbl.create_c1() + assert type(c1) == cppyy.gbl.c_class_1 + assert c1.m_c == 3 + c1.__destruct__() + + c2 = cppyy.gbl.create_c2() + assert type(c2) == cppyy.gbl.c_class_2 + assert c2.m_c == 3 + c2.__destruct__() + + def test14_new_overloader(self): + """Verify that class-level overloaded new/delete are called""" + + import cppyy + + assert cppyy.gbl.new_overloader.s_instances == 0 + nl = cppyy.gbl.new_overloader() + assert cppyy.gbl.new_overloader.s_instances == 1 + nl.__destruct__() + + import gc + gc.collect() + assert cppyy.gbl.new_overloader.s_instances == 0 + + def test15_template_instantiation_with_vector_of_float(self): + """Test template instantiation with a std::vector""" + + import cppyy + + # the following will simply fail if there is a naming problem (e.g. + # std::, allocator, etc., etc.); note the parsing required ... + b = cppyy.gbl.my_templated_class(cppyy.gbl.std.vector(float))() + + for i in range(5): + b.m_b.push_back(i) + assert round(b.m_b[i], 5) == float(i) + + def test16_template_global_functions(self): + """Test template global function lookup and calls""" + + import cppyy + + f = cppyy.gbl.my_templated_function + + assert f('c') == 'c' + assert type(f('c')) == type('c') + assert f(3.) == 3. + assert type(f(4.)) == type(4.) + + def test17_assign_to_return_byref( self ): + """Test assignment to an instance returned by reference""" + + from cppyy import gbl + + a = gbl.std.vector(gbl.ref_tester)() + a.push_back(gbl.ref_tester(42)) + + assert len(a) == 1 + assert a[0].m_i == 42 + + # TODO: + # a[0] = gbl.ref_tester(33) + # assert len(a) == 1 + # assert a[0].m_i == 33 + + def test18_math_converters(self): + """Test operator int/long/double incl. typedef""" + + from cppyy import gbl + + a = gbl.some_convertible() + a.m_i = 1234 + a.m_d = 4321. + + assert int(a) == 1234 + assert int(a) == a.m_i + assert pylong(a) == a.m_i + + assert float(a) == 4321. + assert float(a) == a.m_d + + def test19_comparator(self): + """Check that the global operator!=/== is picked up""" + + from cppyy import gbl + + a, b = gbl.some_comparable(), gbl.some_comparable() + + assert a == b + assert b == a + assert a.__eq__(b) + assert b.__eq__(a) + assert a.__ne__(a) + assert b.__ne__(b) + assert a.__eq__(b) == True + assert b.__eq__(a) == True + assert a.__eq__(a) == False + assert b.__eq__(b) == False + + def test20_overload_order_with_proper_return(self): + """Test return type against proper overload w/ const and covariance""" + + import cppyy + + assert cppyy.gbl.overload_one_way().gime() == 1 + assert cppyy.gbl.overload_the_other_way().gime() == "aap" + + def test21_access_to_global_variables(self): + """Access global_variables_and_pointers""" + + import cppyy + + if is_pypy: + raise RuntimeError("test fails with crash") + + assert cppyy.gbl.my_global_double == 12. + assert len(cppyy.gbl.my_global_array) == 500 + assert cppyy.gbl.my_global_string1 == "aap noot mies" + assert cppyy.gbl.my_global_string2 == "zus jet teun" + # TODO: currently fails b/c double** not understood as &double* + #assert cppyy.gbl.my_global_ptr[0] == 1234. + + def test22_exceptions(self): + """Catching of C++ exceptions""" + + import cppyy + Thrower = cppyy.gbl.Thrower + + if is_pypy: + # TODO: clean up this interface: + Thrower.__cppdecl__.get_overload('throw_anything').__useffi__ = False + Thrower.__cppdecl__.get_overload('throw_exception').__useffi__ = False + + t = Thrower() + + assert raises(Exception, t.throw_anything) + assert raises(Exception, t.throw_exception) + + try: + t.throw_exception() + except Exception as e: + "C++ function failed" in str(e) + + def test23_using(self): + """Accessibility of using declarations""" + + import cppyy + + assert cppyy.gbl.UsingBase().vcheck() == 'A' + + B = cppyy.gbl.UsingDerived + assert not 'UsingBase' in B.__init__.__doc__ + + b1 = B() + assert b1.m_int == 13 + assert b1.m_int2 == 42 + assert b1.vcheck() == 'B' + + b2 = B(10) + assert b2.m_int == 10 + assert b2.m_int2 == 42 + assert b2.vcheck() == 'B' + + b3 = B(b2) + assert b3.m_int == 10 + assert b3.m_int2 == 42 + assert b3.vcheck() == 'B' diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_boost_any.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_boost_any.py new file mode 100644 index 0000000000000..231eb8a2ae629 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_boost_any.py @@ -0,0 +1,44 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + + +class TestBOOSTANY: + def setup_class(cls): + import cppyy + cppyy.include('boost/any.hpp') + + def test01_any_class(self): + """Availability of boost::any""" + + import cppyy + assert cppyy.gbl.boost.any + + from cppyy.gbl import std + from cppyy.gbl.boost import any + + assert std.list(any) + + def test02_any_usage(self): + """boost::any assignment and casting""" + + import cppyy + assert cppyy.gbl.boost + + from cppyy.gbl import std, boost + + val = boost.any() + val.__assign__(std.vector[int]()) + assert val.type() == cppyy.typeid(std.vector[int]) + + extract = boost.any_cast[std.vector[int]](std.move(val)) + assert type(extract) is std.vector[int] + extract += range(100) + + val.__assign__(std.move(extract)) + assert len(extract) == 0 + + raises(Exception, boost.any_cast[int], std.move(val)) + + extract = boost.any_cast[std.vector[int]](std.move(val)) + assert len(extract) == 100 diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_cpp11features.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_cpp11features.py new file mode 100644 index 0000000000000..6461899fbbc9d --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_cpp11features.py @@ -0,0 +1,137 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + +try: + import __pypy__ + is_pypy = True +except ImportError: + is_pypy = False + + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("cpp11featuresDict.so")) + +def setup_module(mod): + setup_make("cpp11featuresDict.so") + +class TestCPP11FEATURES: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.cpp11features = cppyy.load_reflection_info(cls.test_dct) + + def test01_shared_ptr(self): + """Usage and access of std::shared_ptr<>""" + + from cppyy.gbl import TestSharedPtr, create_shared_ptr_instance + + # proper memory accounting + assert TestSharedPtr.s_counter == 0 + + ptr1 = create_shared_ptr_instance() + assert ptr1 + assert not not ptr1 + assert TestSharedPtr.s_counter == 1 + + ptr2 = create_shared_ptr_instance() + assert ptr2 + assert not not ptr2 + assert TestSharedPtr.s_counter == 2 + + del ptr2 + import gc; gc.collect() + assert TestSharedPtr.s_counter == 1 + + del ptr1 + gc.collect() + assert TestSharedPtr.s_counter == 0 + + def test02_nullptr(self): + """Allow the programmer to pass NULL in certain cases""" + + import cppyy + + # test existence + nullptr = cppyy.nullptr + # assert not hasattr(cppyy.gbl, 'nullptr') + + # usage is tested in datatypes.py:test15_nullptr_passing + + def test03_move(self): + """Move construction, assignment, and methods""" + + import cppyy + + def moveit(T): + from cppyy.gbl import std + + # move constructor + i1 = T() + assert T.s_move_counter == 0 + + i2 = T(i1) # cctor + assert T.s_move_counter == 0 + + if is_pypy or 0x3000000 <= sys.hexversion: + i3 = T(std.move(T())) # can't check ref-count + else: + i3 = T(T()) # should call move, not memoized cctor + assert T.s_move_counter == 1 + + i3 = T(std.move(T())) # both move and ref-count + assert T.s_move_counter == 2 + + i4 = T(std.move(i1)) + assert T.s_move_counter == 3 + + # move assignment + i4.__assign__(i2) + assert T.s_move_counter == 3 + + if is_pypy or 0x3000000 <= sys.hexversion: + i4.__assign__(std.move(T())) # can't check ref-count + else: + i4.__assign__(T()) + assert T.s_move_counter == 4 + + i4.__assign__(std.move(i2)) + assert T.s_move_counter == 5 + + # order of moving and normal functions are reversed in 1, 2, for + # overload resolution testing + moveit(cppyy.gbl.TestMoving1) + moveit(cppyy.gbl.TestMoving2) + + def test04_initializer_list(self): + """Initializer list construction""" + + from cppyy.gbl import std, TestData + + v = std.vector[int]((1, 2, 3, 4)) + assert list(v) == [1, 2, 3, 4] + + v = std.vector['double']((1, 2, 3, 4)) + assert list(v) == [1., 2., 3., 4.] + + raises(TypeError, std.vector[int], [1., 2., 3., 4.]) + + l = list() + for i in range(10): + l.append(TestData(i)) + + v = std.vector[TestData](l) + assert len(v) == len(l) + for i in range(len(l)): + assert v[i].m_int == l[i].m_int + + def test05_lambda_calls(self): + """Call (global) lambdas""" + + import cppyy + + cppyy.cppdef("auto gMyLambda = [](int a) { return 40 + a; };") + + assert cppyy.gbl.gMyLambda + assert cppyy.gbl.gMyLambda(2) == 42 + assert cppyy.gbl.gMyLambda(40) == 80 diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_datatypes.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_datatypes.py new file mode 100644 index 0000000000000..040618e6f9690 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_datatypes.py @@ -0,0 +1,765 @@ +import py, os, sys +from pytest import raises +from .support import setup_make, pylong + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("datatypesDict.so")) + +def setup_module(mod): + setup_make("datatypesDict.so") + + +class TestDATATYPES: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.datatypes = cppyy.load_reflection_info(cls.test_dct) + cls.N = cppyy.gbl.N + + def test01_instance_data_read_access(self): + """Read access to instance public data and verify values""" + + import cppyy + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + # reading boolean type + assert c.m_bool == False + assert not c.get_bool(); assert not c.get_bool_cr(); assert not c.get_bool_r() + + # reading char types + assert c.m_char == 'a' + assert c.m_schar == 'b' + assert c.m_uchar == 'c' + + # reading integer types + assert c.m_short == -11; assert c.get_short_cr() == -11; assert c.get_short_r() == -11 + assert c.m_ushort == 11; assert c.get_ushort_cr() == 11; assert c.get_ushort_r() == 11 + assert c.m_int == -22; assert c.get_int_cr() == -22; assert c.get_int_r() == -22 + assert c.m_uint == 22; assert c.get_uint_cr() == 22; assert c.get_uint_r() == 22 + assert c.m_long == -33; assert c.get_long_cr() == -33; assert c.get_long_r() == -33 + assert c.m_ulong == 33; assert c.get_ulong_cr() == 33; assert c.get_ulong_r() == 33 + assert c.m_llong == -44; assert c.get_llong_cr() == -44; assert c.get_llong_r() == -44 + assert c.m_ullong == 44; assert c.get_ullong_cr() == 44; assert c.get_ullong_r() == 44 + assert c.m_long64 == -55; assert c.get_long64_cr() == -55; assert c.get_long64_r() == -55 + assert c.m_ulong64 == 55; assert c.get_ulong64_cr() == 55; assert c.get_ulong64_r() == 55 + + # reading floating point types + assert round(c.m_float + 66., 5) == 0 + assert round(c.get_float_cr() + 66., 5) == 0 + assert round(c.get_float_r() + 66., 5) == 0 + assert round(c.m_double + 77., 11) == 0 + assert round(c.get_double_cr() + 77., 11) == 0 + assert round(c.get_double_r() + 77., 11) == 0 + #assert round(c.m_ldouble + 88., 24) == 0 + #assert round(c.get_ldouble_cr() + 88., 24) == 0 + #assert round(c.get_ldouble_r() + 88., 24) == 0 + assert round(c.m_double + 77., 8) == 0 + + # reading of enum types + assert c.m_enum == CppyyTestData.kNothing + assert c.m_enum == c.kNothing + + # reading of boolean array + for i in range(self.N): + assert c.m_bool_array[i] == bool(i%2) + assert c.get_bool_array()[i] == bool(i%2) + assert c.m_bool_array2[i] == bool((i+1)%2) + assert c.get_bool_array2()[i] == bool((i+1)%2) + + # reading of integer array types + names = ['uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong'] + alpha = [ (1, 2), (-1, -2), (3, 4), (-5, -6), (7, 8), (-9, -10), (11, 12)] + for j in range(self.N): + assert getattr(c, 'm_%s_array' % names[i])[i] == alpha[i][0]*i + assert getattr(c, 'get_%s_array' % names[i])()[i] == alpha[i][0]*i + assert getattr(c, 'm_%s_array2' % names[i])[i] == alpha[i][1]*i + assert getattr(c, 'get_%s_array2' % names[i])()[i] == alpha[i][1]*i + + # reading of floating point array types + for k in range(self.N): + assert round(c.m_float_array[k] + 13.*k, 5) == 0 + assert round(c.m_float_array2[k] + 14.*k, 5) == 0 + assert round(c.m_double_array[k] + 15.*k, 8) == 0 + assert round(c.m_double_array2[k] + 16.*k, 8) == 0 + + # out-of-bounds checks + raises(IndexError, c.m_uchar_array.__getitem__, self.N) + raises(IndexError, c.m_short_array.__getitem__, self.N) + raises(IndexError, c.m_ushort_array.__getitem__, self.N) + raises(IndexError, c.m_int_array.__getitem__, self.N) + raises(IndexError, c.m_uint_array.__getitem__, self.N) + raises(IndexError, c.m_long_array.__getitem__, self.N) + raises(IndexError, c.m_ulong_array.__getitem__, self.N) + raises(IndexError, c.m_float_array.__getitem__, self.N) + raises(IndexError, c.m_double_array.__getitem__, self.N) + + # can not access an instance member on the class + raises(AttributeError, getattr, CppyyTestData, 'm_bool') + raises(AttributeError, getattr, CppyyTestData, 'm_int') + + assert not hasattr(CppyyTestData, 'm_bool') + assert not hasattr(CppyyTestData, 'm_int') + + c.__destruct__() + + def test02_instance_data_write_access(self): + """Test write access to instance public data and verify values""" + + import cppyy + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + # boolean types through functions + c.set_bool(True); assert c.get_bool() == True + c.set_bool(0); assert c.get_bool() == False + + # boolean types through data members + c.m_bool = True; assert c.get_bool() == True + c.set_bool(True); assert c.m_bool == True + c.m_bool = 0; assert c.get_bool() == False + c.set_bool(0); assert c.m_bool == False + + raises(ValueError, 'c.set_bool(10)') + + # char types through functions + c.set_char('c'); assert c.get_char() == 'c' + c.set_uchar('e'); assert c.get_uchar() == 'e' + + # char types through data members + c.m_char = 'b'; assert c.get_char() == 'b' + c.m_char = 40; assert c.get_char() == chr(40) + c.set_char('c'); assert c.m_char == 'c' + c.set_char(41); assert c.m_char == chr(41) + c.m_uchar = 'd'; assert c.get_uchar() == 'd' + c.m_uchar = 42; assert c.get_uchar() == chr(42) + c.set_uchar('e'); assert c.m_uchar == 'e' + c.set_uchar(43); assert c.m_uchar == chr(43) + + raises(ValueError, 'c.set_char("string")') + raises(ValueError, 'c.set_char(500)') + raises(ValueError, 'c.set_uchar("string")') + raises(ValueError, 'c.set_uchar(-1)') + + # integer types + names = ['short', 'ushort', 'int', 'uint', 'long', 'ulong', 'llong', 'ullong'] + for i in range(len(names)): + setattr(c, 'm_'+names[i], i) + assert eval('c.get_%s()' % names[i]) == i + + for i in range(len(names)): + getattr(c, 'set_'+names[i])(2*i) + assert eval('c.m_%s' % names[i]) == 2*i + + for i in range(len(names)): + getattr(c, 'set_'+names[i]+'_cr')(3*i) + assert eval('c.m_%s' % names[i]) == 3*i + + # float types through functions + c.set_float( 0.123 ); assert round(c.get_float() - 0.123, 5) == 0 + c.set_double( 0.456 ); assert round(c.get_double() - 0.456, 8) == 0 + + # float types through data members + c.m_float = 0.123; assert round(c.get_float() - 0.123, 5) == 0 + c.set_float(0.234); assert round(c.m_float - 0.234, 5) == 0 + c.set_float_cr(0.456); assert round(c.m_float - 0.456, 5) == 0 + c.m_double = 0.678; assert round(c.get_double() - 0.678, 8) == 0 + c.set_double(0.890); assert round(c.m_double - 0.890, 8) == 0 + c.set_double_cr(0.012); assert round(c.m_double - 0.012, 8) == 0 + + # arrays; there will be pointer copies, so destroy the current ones + c.destroy_arrays() + + # integer arrays + names = ['uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong'] + import array + a = range(self.N) + atypes = ['B', 'h', 'H', 'i', 'I', 'l', 'L' ] + for j in range(len(names)): + b = array.array(atypes[j], a) + setattr(c, 'm_'+names[j]+'_array', b) # buffer copies + for i in range(self.N): + assert eval('c.m_%s_array[i]' % names[j]) == b[i] + + setattr(c, 'm_'+names[j]+'_array2', b) # pointer copies + assert 3 < self.N + b[3] = 28 + for i in range(self.N): + assert eval('c.m_%s_array2[i]' % names[j]) == b[i] + + # can not write to constant data + assert c.m_const_int == 17 + raises(TypeError, setattr, c, 'm_const_int', 71) + + c.__destruct__() + + def test03_array_passing(self): + """Test passing of array arguments""" + + import cppyy, array, sys + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + a = range(self.N) + # test arrays in mixed order, to give overload resolution a workout + for t in ['d', 'i', 'f', 'H', 'I', 'h', 'L', 'l' ]: + b = array.array(t, a) + + # typed passing + ca = c.pass_array(b) + assert type(ca[0]) == type(b[0]) + assert len(b) == self.N + for i in range(self.N): + assert ca[i] == b[i] + + # void* passing + ca = eval('c.pass_void_array_%s(b)' % t) + assert type(ca[0]) == type(b[0]) + assert len(b) == self.N + for i in range(self.N): + assert ca[i] == b[i] + + # NULL/nullptr passing (will use short*) + assert not c.pass_array(0) + raises(Exception, c.pass_array(0).__getitem__, 0) # raises SegfaultException + assert raises(TypeError, c.pass_array, None) + assert not c.pass_array(cppyy.nullptr) + raises(Exception, c.pass_array(cppyy.nullptr).__getitem__, 0) # id. id. + + c.__destruct__() + + def test04_class_read_access(self): + """Test read access to class public data and verify values""" + + import cppyy, sys + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + # char types + assert CppyyTestData.s_char == 'c' + assert c.s_char == 'c' + assert c.s_uchar == 'u' + assert CppyyTestData.s_uchar == 'u' + + # integer types + assert CppyyTestData.s_short == -101 + assert c.s_short == -101 + assert c.s_ushort == 255 + assert CppyyTestData.s_ushort == 255 + assert CppyyTestData.s_int == -202 + assert c.s_int == -202 + assert c.s_uint == 202 + assert CppyyTestData.s_uint == 202 + assert CppyyTestData.s_long == -pylong(303) + assert c.s_long == -pylong(303) + assert c.s_ulong == pylong(303) + assert CppyyTestData.s_ulong == pylong(303) + assert CppyyTestData.s_llong == -pylong(404) + assert c.s_llong == -pylong(404) + assert c.s_ullong == pylong(404) + assert CppyyTestData.s_ullong == pylong(404) + + # floating point types + assert round(CppyyTestData.s_float + 606., 5) == 0 + assert round(c.s_float + 606., 5) == 0 + assert round(CppyyTestData.s_double + 707., 8) == 0 + assert round(c.s_double + 707., 8) == 0 + + c.__destruct__() + + def test05_class_data_write_access(self): + """Test write access to class public data and verify values""" + + import cppyy, sys + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + # char types + CppyyTestData.s_char = 'a' + assert c.s_char == 'a' + c.s_char = 'b' + assert CppyyTestData.s_char == 'b' + CppyyTestData.s_uchar = 'c' + assert c.s_uchar == 'c' + c.s_uchar = 'd' + assert CppyyTestData.s_uchar == 'd' + raises(ValueError, setattr, CppyyTestData, 's_uchar', -1) + raises(ValueError, setattr, c, 's_uchar', -1) + + # integer types + c.s_short = -102 + assert CppyyTestData.s_short == -102 + CppyyTestData.s_short = -203 + assert c.s_short == -203 + c.s_ushort = 127 + assert CppyyTestData.s_ushort == 127 + CppyyTestData.s_ushort = 227 + assert c.s_ushort == 227 + CppyyTestData.s_int = -234 + assert c.s_int == -234 + c.s_int = -321 + assert CppyyTestData.s_int == -321 + CppyyTestData.s_uint = 1234 + assert c.s_uint == 1234 + c.s_uint = 4321 + assert CppyyTestData.s_uint == 4321 + raises(ValueError, setattr, c, 's_uint', -1) + raises(ValueError, setattr, CppyyTestData, 's_uint', -1) + CppyyTestData.s_long = -pylong(87) + assert c.s_long == -pylong(87) + c.s_long = pylong(876) + assert CppyyTestData.s_long == pylong(876) + CppyyTestData.s_ulong = pylong(876) + assert c.s_ulong == pylong(876) + c.s_ulong = pylong(678) + assert CppyyTestData.s_ulong == pylong(678) + raises(ValueError, setattr, CppyyTestData, 's_ulong', -1) + raises(ValueError, setattr, c, 's_ulong', -1) + + # floating point types + CppyyTestData.s_float = -3.1415 + assert round(c.s_float, 5) == -3.1415 + c.s_float = 3.1415 + assert round(CppyyTestData.s_float, 5) == 3.1415 + import math + c.s_double = -math.pi + assert CppyyTestData.s_double == -math.pi + CppyyTestData.s_double = math.pi + assert c.s_double == math.pi + + c.__destruct__() + + def test06_range_access(self): + """Test the ranges of integer types""" + + import cppyy, sys + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + # TODO: should these be TypeErrors, or should char/bool raise + # ValueErrors? In any case, consistency is needed ... + raises(ValueError, setattr, c, 'm_uint', -1) + raises(ValueError, setattr, c, 'm_ulong', -1) + + c.__destruct__() + + def test07_type_conversions(self): + """Test conversions between builtin types""" + + import cppyy, sys + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + c.m_double = -1 + assert round(c.m_double + 1.0, 8) == 0 + + raises(TypeError, c.m_double, 'c') + raises(TypeError, c.m_int, -1.) + raises(TypeError, c.m_int, 1.) + + c.__destruct__() + + def test08_global_builtin_type(self): + """Test access to a global builtin type""" + + import cppyy + gbl = cppyy.gbl + + assert gbl.g_int == gbl.get_global_int() + + gbl.set_global_int(32) + assert gbl.get_global_int() == 32 + assert gbl.g_int == 32 + + gbl.g_int = 22 + assert gbl.get_global_int() == 22 + assert gbl.g_int == 22 + + def test09_global_ptr(self): + """Test access of global objects through a pointer""" + + import cppyy + gbl = cppyy.gbl + + raises(ReferenceError, 'gbl.g_pod.m_int') + + c = gbl.CppyyTestPod() + c.m_int = 42 + c.m_double = 3.14 + + gbl.set_global_pod(c) + assert gbl.is_global_pod(c) + assert gbl.g_pod.m_int == 42 + assert gbl.g_pod.m_double == 3.14 + + d = gbl.get_global_pod() + assert gbl.is_global_pod(d) + assert c == d + assert id(c) == id(d) + + e = gbl.CppyyTestPod() + e.m_int = 43 + e.m_double = 2.14 + + gbl.g_pod = e + assert gbl.is_global_pod(e) + assert gbl.g_pod.m_int == 43 + assert gbl.g_pod.m_double == 2.14 + + def test10_enum(self): + """Test access to enums""" + + import cppyy + gbl = cppyy.gbl + + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + # test that the enum is accessible as a type + assert CppyyTestData.EWhat + + assert CppyyTestData.kNothing == 6 + assert CppyyTestData.kSomething == 111 + assert CppyyTestData.kLots == 42 + + assert CppyyTestData.EWhat(CppyyTestData.kNothing) == CppyyTestData.kNothing + assert CppyyTestData.EWhat(6) == CppyyTestData.kNothing + # TODO: only allow instantiations with correct values (C++11) + + assert c.get_enum() == CppyyTestData.kNothing + assert c.m_enum == CppyyTestData.kNothing + + c.m_enum = CppyyTestData.kSomething + assert c.get_enum() == CppyyTestData.kSomething + assert c.m_enum == CppyyTestData.kSomething + + c.set_enum(CppyyTestData.kLots) + assert c.get_enum() == CppyyTestData.kLots + assert c.m_enum == CppyyTestData.kLots + + assert c.s_enum == CppyyTestData.s_enum + assert c.s_enum == CppyyTestData.kNothing + assert CppyyTestData.s_enum == CppyyTestData.kNothing + + c.s_enum = CppyyTestData.kSomething + assert c.s_enum == CppyyTestData.s_enum + assert c.s_enum == CppyyTestData.kSomething + assert CppyyTestData.s_enum == CppyyTestData.kSomething + + # global enums + assert gbl.EFruit # test type accessible + assert gbl.kApple == 78 + assert gbl.kBanana == 29 + assert gbl.kCitrus == 34 + + assert gbl.EnumSpace.E + assert gbl.EnumSpace.EnumClass.E1 == -1 # anonymous + assert gbl.EnumSpace.EnumClass.E2 == -1 # named type + + def test11_string_passing(self): + """Test passing/returning of a const char*""" + + import cppyy + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert c.get_valid_string('aap') == 'aap' + #assert c.get_invalid_string() == '' + + def test12_copy_contructor(self): + """Test copy constructor""" + + import cppyy + FourVector = cppyy.gbl.FourVector + + t1 = FourVector(1., 2., 3., -4.) + t2 = FourVector(0., 0., 0., 0.) + t3 = FourVector(t1) + + assert t1 == t3 + assert t1 != t2 + + for i in range(4): + assert t1[i] == t3[i] + + def test13_object_returns(self): + """Test access to and return of PODs""" + + import cppyy + + c = cppyy.gbl.CppyyTestData() + + assert c.m_pod.m_int == 888 + assert c.m_pod.m_double == 3.14 + + pod = c.get_pod_val() + assert pod.m_int == 888 + assert pod.m_double == 3.14 + + assert c.get_pod_val_ptr().m_int == 888 + assert c.get_pod_val_ptr().m_double == 3.14 + c.get_pod_val_ptr().m_int = 777 + assert c.get_pod_val_ptr().m_int == 777 + + assert c.get_pod_val_ref().m_int == 777 + assert c.get_pod_val_ref().m_double == 3.14 + c.get_pod_val_ref().m_int = 666 + assert c.get_pod_val_ref().m_int == 666 + + assert c.get_pod_ptrref().m_int == 666 + assert c.get_pod_ptrref().m_double == 3.14 + + def test14_object_arguments(self): + """Test setting and returning of a POD through arguments""" + + import cppyy + + c = cppyy.gbl.CppyyTestData() + assert c.m_pod.m_int == 888 + assert c.m_pod.m_double == 3.14 + + p = cppyy.gbl.CppyyTestPod() + p.m_int = 123 + assert p.m_int == 123 + p.m_double = 321. + assert p.m_double == 321. + + c.set_pod_val(p) + assert c.m_pod.m_int == 123 + assert c.m_pod.m_double == 321. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_ptr_in(p) + assert c.m_pod.m_int == 123 + assert c.m_pod.m_double == 321. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_ptr_out(p) + assert p.m_int == 888 + assert p.m_double == 3.14 + + p.m_int = 555 + p.m_double = 666. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_ref(p) + assert c.m_pod.m_int == 555 + assert c.m_pod.m_double == 666. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_ptrptr_in(p) + assert c.m_pod.m_int == 555 + assert c.m_pod.m_double == 666. + assert p.m_int == 555 + assert p.m_double == 666. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_void_ptrptr_in(p) + assert c.m_pod.m_int == 555 + assert c.m_pod.m_double == 666. + assert p.m_int == 555 + assert p.m_double == 666. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_ptrptr_out(p) + assert c.m_pod.m_int == 888 + assert c.m_pod.m_double == 3.14 + assert p.m_int == 888 + assert p.m_double == 3.14 + + p.m_int = 777 + p.m_double = 888. + + c = cppyy.gbl.CppyyTestData() + c.set_pod_void_ptrptr_out(p) + assert c.m_pod.m_int == 888 + assert c.m_pod.m_double == 3.14 + assert p.m_int == 888 + assert p.m_double == 3.14 + + def test15_nullptr_passing(self): + """Integer 0 ('NULL') and nullptr allowed to pass through instance*""" + + import cppyy + + for o in (0, cppyy.nullptr): + c = cppyy.gbl.CppyyTestData() + assert c.m_pod.m_int == 888 + assert c.m_pod.m_double == 3.14 + assert not not c.m_ppod + + c.set_pod_ptr(o) + assert not c.m_ppod + assert not c.get_pod_ptr() + + def test16_respect_privacy(self): + """Test that privacy settings are respected""" + + import cppyy + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + assert isinstance(c, CppyyTestData) + + raises(AttributeError, getattr, c, 'm_owns_arrays') + + c.__destruct__() + + def test17_object_and_pointer_comparisons(self): + """Verify object and pointer comparisons""" + + import cppyy + gbl = cppyy.gbl + + c1 = cppyy.bind_object(0, gbl.CppyyTestData) + assert c1 == None + assert None == c1 + + c2 = cppyy.bind_object(0, gbl.CppyyTestData) + assert c1 == c2 + assert c2 == c1 + + # FourVector overrides operator== + l1 = cppyy.bind_object(0, gbl.FourVector) + assert l1 == None + assert None == l1 + + assert c1 != l1 + assert l1 != c1 + + l2 = cppyy.bind_object(0, gbl.FourVector) + assert l1 == l2 + assert l2 == l1 + + l3 = gbl.FourVector(1, 2, 3, 4) + l4 = gbl.FourVector(1, 2, 3, 4) + l5 = gbl.FourVector(4, 3, 2, 1) + assert l3 == l4 + assert l4 == l3 + + assert l3 != None # like this to ensure __ne__ is called + assert None != l3 # id. + assert l3 != l5 + assert l5 != l3 + + def test18_object_validity(self): + """Test object validity checking""" + + from cppyy import gbl + + d = gbl.CppyyTestPod() + + assert d + assert not not d + + d2 = gbl.get_null_pod() + + assert not d2 + + def test19_buffer_reshaping(self): + """Test usage of buffer sizing""" + + import cppyy + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + for func in ['get_bool_array', 'get_bool_array2', + 'get_uchar_array', 'get_uchar_array2', + 'get_ushort_array', 'get_ushort_array2', + 'get_int_array', 'get_int_array2', + 'get_uint_array', 'get_uint_array2', + 'get_long_array', 'get_long_array2', + 'get_ulong_array', 'get_ulong_array2']: + arr = getattr(c, func)() + arr.reshape((self.N,)) + assert len(arr) == self.N + + raises(TypeError, arr.reshape, (1, 2)) + assert len(arr) == self.N + + raises(TypeError, arr.reshape, 2*self.N) + assert len(arr) == self.N + + l = list(arr) + for i in range(self.N): + assert arr[i] == l[i] + + def test20_voidp(self): + """Test usage of void* data""" + + import cppyy + CppyyTestData = cppyy.gbl.CppyyTestData + + c = CppyyTestData() + + assert not cppyy.nullptr + + assert c.s_voidp is cppyy.nullptr + assert CppyyTestData.s_voidp is cppyy.nullptr + + assert c.m_voidp is cppyy.nullptr + assert c.get_voidp() is cppyy.nullptr + + c2 = CppyyTestData() + assert c2.m_voidp is cppyy.nullptr + c.set_voidp(c2.m_voidp) + assert c.m_voidp is cppyy.nullptr + c.set_voidp(c2.get_voidp()) + assert c.m_voidp is cppyy.nullptr + c.set_voidp(cppyy.nullptr) + assert c.m_voidp is cppyy.nullptr + + c.set_voidp(c2) + def address_equality_test(a, b): + assert cppyy.addressof(a) == cppyy.addressof(b) + b2 = cppyy.bind_object(a, CppyyTestData) + assert b is b2 # memory regulator recycles + b3 = cppyy.bind_object(cppyy.addressof(a), CppyyTestData) + assert b is b3 # likewise + + address_equality_test(c.m_voidp, c2) + address_equality_test(c.get_voidp(), c2) + + def null_test(null): + c.m_voidp = null + assert c.m_voidp is cppyy.nullptr + map(null_test, [0, cppyy.nullptr]) + + c.m_voidp = c2 + address_equality_test(c.m_voidp, c2) + address_equality_test(c.get_voidp(), c2) + + c.s_voidp = c2 + address_equality_test(c.s_voidp, c2) + + def test21_function_pointers(self): + """Function pointer passing""" + + import cppyy + + f1 = cppyy.gbl.sum_of_int + f2 = cppyy.gbl.sum_of_double + f3 = cppyy.gbl.call_double_double + + assert 5 == f1(2, 3) + assert 5. == f2(5., 0.) + + raises(TypeError, f3, f1, 2, 3) + + assert 5. == f3(f2, 5., 0.) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_doc_features.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_doc_features.py new file mode 100644 index 0000000000000..d189370969941 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_doc_features.py @@ -0,0 +1,280 @@ +import py, os, sys +from pytest import raises + + +class TestDOCFEATURES: + def setup_class(cls): + import cppyy + + cppyy.cppdef(""" +#include +#include +#include + + +//----- +unsigned int gUint = 0; + +//----- +class Abstract { +public: + virtual ~Abstract() {} + virtual void abstract_method() = 0; + virtual void concrete_method() = 0; +}; + +void Abstract::concrete_method() { + std::cout << "called Abstract::concrete_method" << std::endl; +} + +//----- +class Concrete : Abstract { +public: + Concrete(int n=42) : m_int(n), m_const_int(17) {} + ~Concrete() {} + + virtual void abstract_method() { + std::cout << "called Concrete::abstract_method" << std::endl; + } + + virtual void concrete_method() { + std::cout << "called Concrete::concrete_method" << std::endl; + } + + void array_method(int* ad, int size) { + for (int i=0; i < size; ++i) + std::cout << ad[i] << ' '; + std::cout << std::endl; + } + + void array_method(double* ad, int size) { + for (int i=0; i < size; ++i) + std::cout << ad[i] << ' '; + std::cout << std::endl; + } + + Abstract* show_autocast() { + return this; + } + + operator const char*() { + return "Hello operator const char*!"; + } + +public: + double m_data[4]; + int m_int; + const int m_const_int; +}; + +//----- +int global_function(int) { + return 42; +} + +double global_function(double) { + return std::exp(1); +} + +//----- +namespace Namespace { + + class Concrete { + public: + class NestedClass { + public: + std::vector m_v; + }; + + }; + + int global_function(int i) { + return 2*::global_function(i); + } + + double global_function(double d) { + return 2*::global_function(d); + } + +} // namespace Namespace + +""") + + def test_abstract_class(self): + import cppyy + from cppyy.gbl import Abstract, Concrete + + raises(TypeError, Abstract) + assert issubclass(Concrete, Abstract) + c = Concrete() + assert isinstance(c, Abstract) + + def test_array(self): + import cppyy + from cppyy.gbl import Concrete + from array import array + + c = Concrete() + c.array_method(array('d', [1., 2., 3., 4.]), 4) + raises(IndexError, c.m_data.__getitem__, 4) + + def test_builtin_data(self): + import cppyy + + assert cppyy.gbl.gUint == 0 + raises(ValueError, setattr, cppyy.gbl, 'gUint', -1) + + def test_casting(self): + import cppyy + from cppyy.gbl import Abstract, Concrete + + c = Concrete() + assert 'Abstract' in Concrete.show_autocast.__doc__ + d = c.show_autocast() + assert type(d) == cppyy.gbl.Concrete + + from cppyy import addressof, bind_object + e = bind_object(addressof(d), Abstract) + assert type(e) == cppyy.gbl.Abstract + + def test_classes_and_structs(self): + import cppyy + from cppyy.gbl import Concrete, Namespace + + assert Concrete != Namespace.Concrete + n = Namespace.Concrete.NestedClass() + assert 'Namespace.Concrete.NestedClass' in str(type(n)) + assert 'NestedClass' == type(n).__name__ + assert 'cppyy.gbl.Namespace.Concrete' == type(n).__module__ + assert 'Namespace::Concrete::NestedClass' == type(n).__cppname__ + + def test_data_members(self): + import cppyy + from cppyy.gbl import Concrete + + c = Concrete() + assert c.m_int == 42 + raises(TypeError, setattr, c, 'm_const_int', 71) + + def test_default_arguments(self): + import cppyy + from cppyy.gbl import Concrete + + c = Concrete() + assert c.m_int == 42 + c = Concrete(13) + assert c.m_int == 13 + + def test_doc_strings(self): + import cppyy + from cppyy.gbl import Concrete + assert 'void Concrete::array_method(int* ad, int size)' in Concrete.array_method.__doc__ + assert 'void Concrete::array_method(double* ad, int size)' in Concrete.array_method.__doc__ + + def test_enums(self): + import cppyy + + pass + + def test_functions(self): + import cppyy + + from cppyy.gbl import global_function, Namespace + assert not(global_function == Namespace.global_function) + + assert round(global_function(1.)-2.718281828459045, 8) == 0. + assert global_function(1) == 42 + + assert Namespace.global_function(1) == 42*2 + assert round(Namespace.global_function(1.)-2.718281828459045*2, 8) == 0. + + assert round(global_function.__overload__('double')(1)-2.718281828459045, 8) == 0. + + def test_inheritance(self): + import cppyy + + pass + + def test_memory(self): + import cppyy + from cppyy.gbl import Concrete + + c = Concrete() + assert c.__python_owns__ == True + + def test_methods(self): + import cppyy + + pass + + def test_namespaces(self): + import cppyy + + pass + + def test_null(self): + import cppyy + + assert hasattr(cppyy, 'nullptr') + assert not cppyy.nullptr + + def test_operator_conversions(self): + import cppyy + from cppyy.gbl import Concrete + + assert str(Concrete()) == 'Hello operator const char*!' + + def test_operator_overloads(self): + import cppyy + + pass + + def test_pointers(self): + import cppyy + + pass + + def test_pyobject(self): + import cppyy + + pass + + def test_static_data_members(self): + import cppyy + + def test_static_methods(self): + import cppyy + + pass + + def test_strings(self): + import cppyy + + pass + + def test_templated_classes(self): + import cppyy + + assert cppyy.gbl.std.vector + assert isinstance(cppyy.gbl.std.vector(int), type) + assert type(cppyy.gbl.std.vector(int)()) == cppyy.gbl.std.vector(int) + + def test_templated_functions(self): + import cppyy + + pass + + def test_templated_methods(self): + import cppyy + + pass + + def test_typedefs(self): + import cppyy + + pass + + def test_unary_operators(sef): + import cppyy + + pass diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_fragile.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_fragile.py new file mode 100644 index 0000000000000..81d4d3abad8da --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_fragile.py @@ -0,0 +1,325 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("fragileDict.so")) + +def setup_module(mod): + setup_make("fragileDict.so") + + +class TestFRAGILE: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.fragile = cppyy.load_reflection_info(cls.test_dct) + + def test01_load_failure(self): + """Test failure to load dictionary""" + + import cppyy + raises(RuntimeError, cppyy.load_reflection_info, "does_not_exist.so") + + try: + cppyy.load_reflection_info("does_not_exist.so") + except RuntimeError as e: + assert "does_not_exist.so" in str(e) + + def test02_missing_classes(self): + """Test (non-)access to missing classes""" + + import cppyy + + raises(AttributeError, getattr, cppyy.gbl, "no_such_class") + + assert cppyy.gbl.fragile is cppyy.gbl.fragile + assert cppyy.gbl.fragile == cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + + raises(AttributeError, getattr, fragile, "no_such_class") + + assert fragile.C is fragile.C + assert fragile.C == fragile.C + assert fragile.C().check() == ord('C') + + assert fragile.B is fragile.B + assert fragile.B == fragile.B + assert fragile.B().check() == ord('B') + raises(AttributeError, getattr, fragile.B().gime_no_such(), "_cpp_proxy") + + assert fragile.C is fragile.C + assert fragile.C == fragile.C + assert fragile.C().check() == ord('C') + raises(TypeError, fragile.C().use_no_such, None) + + def test03_arguments(self): + """Test reporting when providing wrong arguments""" + + import cppyy + + assert cppyy.gbl.fragile == cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + + assert fragile.D == fragile.D + assert fragile.D().check() == ord('D') + + d = fragile.D() + raises(TypeError, d.overload, None) + raises(TypeError, d.overload, None, None, None) + + d.overload('a') + d.overload(1) + + def test04_unsupported_arguments(self): + """Test arguments that are yet unsupported""" + + import cppyy + + assert cppyy.gbl.fragile == cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + + assert fragile.E == fragile.E + assert fragile.E().check() == ord('E') + + e = fragile.E() + raises(TypeError, e.overload, None) + # allowing access to e.m_pp_no_such is debatable, but it provides a raw pointer + # which may be useful ... + assert e.m_pp_no_such[0] == 0xdead + + def test05_wrong_arg_addressof(self): + """Test addressof() error reporting""" + + import cppyy + + assert cppyy.gbl.fragile == cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + + assert fragile.F == fragile.F + assert fragile.F().check() == ord('F') + + f = fragile.F() + o = object() + + cppyy.addressof(f) + raises(TypeError, cppyy.addressof, o) + raises(TypeError, cppyy.addressof, 1) + # see also test08_void_pointer_passing in test_advancedcpp.py + + def test06_wrong_this(self): + """Test that using an incorrect self argument raises""" + + import cppyy + + assert cppyy.gbl.fragile == cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + + a = fragile.A() + assert fragile.A.check(a) == ord('A') + + b = fragile.B() + assert fragile.B.check(b) == ord('B') + raises(TypeError, fragile.A.check, b) + raises(TypeError, fragile.B.check, a) + + assert not a.gime_null() + + assert isinstance(a.gime_null(), fragile.A) + raises(ReferenceError, fragile.A.check, a.gime_null()) + + def test07_unnamed_enum(self): + """Test that an unnamed enum does not cause infinite recursion""" + + import cppyy + + assert cppyy.gbl.fragile is cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + assert cppyy.gbl.fragile is fragile + + g = fragile.G() + + def test08_unhandled_scoped_datamember(self): + """Test that an unhandled scoped data member does not cause infinite recursion""" + + import cppyy + + assert cppyy.gbl.fragile is cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + assert cppyy.gbl.fragile is fragile + + h = fragile.H() + + def test09_operator_bool(self): + """Access to global vars with an operator bool() returning False""" + + import cppyy + + i = cppyy.gbl.fragile.I() + assert not i + + g = cppyy.gbl.fragile.gI + assert not g + + def test10_documentation(self): + """Check contents of documentation""" + + import cppyy + + assert cppyy.gbl.fragile == cppyy.gbl.fragile + fragile = cppyy.gbl.fragile + + d = fragile.D() + try: + d.check(None) # raises TypeError + assert 0 + except TypeError as e: + assert "fragile::D::check()" in str(e) + assert "TypeError: takes at most 0 arguments (1 given)" in str(e) + assert "TypeError: takes at least 2 arguments (1 given)" in str(e) + + try: + d.overload(None) # raises TypeError + assert 0 + except TypeError as e: + # TODO: pypy-c does not indicate which argument failed to convert, CPython does + # likewise there are still minor differences in descriptiveness of messages + assert "fragile::D::overload()" in str(e) + assert "TypeError: takes at most 0 arguments (1 given)" in str(e) + assert "fragile::D::overload(fragile::no_such_class*)" in str(e) + #assert "no converter available for 'fragile::no_such_class*'" in str(e) + assert "void fragile::D::overload(char, int i = 0)" in str(e) + #assert "char or small int type expected" in str(e) + assert "void fragile::D::overload(int, fragile::no_such_class* p = 0)" in str(e) + #assert "int/long conversion expects an integer object" in str(e) + + j = fragile.J() + assert fragile.J.method1.__doc__ == j.method1.__doc__ + assert j.method1.__doc__ == "int fragile::J::method1(int, double)" + + f = fragile.fglobal + assert f.__doc__ == "void fragile::fglobal(int, double, char)" + + try: + o = fragile.O() # raises TypeError + assert 0 + except TypeError as e: + assert "cannot instantiate abstract class 'fragile::O'" in str(e) + + def test11_dir(self): + """Test __dir__ method""" + + import cppyy + + members = dir(cppyy.gbl.fragile) + assert 'A' in members + assert 'B' in members + assert 'C' in members + assert 'D' in members # classes + + assert 'nested1' in members # namespace + + # TODO: think this through ... probably want this, but interferes with + # the (new) policy of lazy lookups + #assert 'fglobal' in members # function + #assert 'gI'in members # variable + + def test12_imports(self): + """Test ability to import from namespace (or fail with ImportError)""" + + import cppyy + + # TODO: namespaces aren't loaded (and thus not added to sys.modules) + # with just the from ... import statement; actual use is needed + from cppyy.gbl import fragile + + def fail_import(): + from cppyy.gbl import does_not_exist + raises(ImportError, fail_import) + + from cppyy.gbl.fragile import A, B, C, D + assert cppyy.gbl.fragile.A is A + assert cppyy.gbl.fragile.B is B + assert cppyy.gbl.fragile.C is C + assert cppyy.gbl.fragile.D is D + + # according to warnings, can't test "import *" ... + + from cppyy.gbl.fragile import nested1 + assert cppyy.gbl.fragile.nested1 is nested1 + assert nested1.__name__ == 'nested1' + assert nested1.__module__ == 'cppyy.gbl.fragile' + assert nested1.__cppname__ == 'fragile::nested1' + + from cppyy.gbl.fragile.nested1 import A, nested2 + assert cppyy.gbl.fragile.nested1.A is A + assert A.__name__ == 'A' + assert A.__module__ == 'cppyy.gbl.fragile.nested1' + assert A.__cppname__ == 'fragile::nested1::A' + assert cppyy.gbl.fragile.nested1.nested2 is nested2 + assert nested2.__name__ == 'nested2' + assert nested2.__module__ == 'cppyy.gbl.fragile.nested1' + assert nested2.__cppname__ == 'fragile::nested1::nested2' + + from cppyy.gbl.fragile.nested1.nested2 import A, nested3 + assert cppyy.gbl.fragile.nested1.nested2.A is A + assert A.__name__ == 'A' + assert A.__module__ == 'cppyy.gbl.fragile.nested1.nested2' + assert A.__cppname__ == 'fragile::nested1::nested2::A' + assert cppyy.gbl.fragile.nested1.nested2.nested3 is nested3 + assert nested3.__name__ == 'nested3' + assert nested3.__module__ == 'cppyy.gbl.fragile.nested1.nested2' + assert nested3.__cppname__ == 'fragile::nested1::nested2::nested3' + + from cppyy.gbl.fragile.nested1.nested2.nested3 import A + assert cppyy.gbl.fragile.nested1.nested2.nested3.A is nested3.A + assert A.__name__ == 'A' + assert A.__module__ == 'cppyy.gbl.fragile.nested1.nested2.nested3' + assert A.__cppname__ == 'fragile::nested1::nested2::nested3::A' + + # test writability of __module__ + nested3.__module__ = "peanut butter" + assert nested3.__module__ == "peanut butter" + + # classes in namespace should inherit + assert A.__module__ == 'peanut butter.nested3' + assert 'peanut butter' in repr(A) + assert 'class' in repr(A) + assert 'peanut butter' in repr(nested3) + assert 'namespace' in repr(nested3) + + # as should objects + a = A() + assert 'peanut butter' in repr(a) + assert 'object' in repr(a) + + def test13_missing_casts(self): + """Test proper handling when a hierarchy is not fully available""" + + import cppyy + + k = cppyy.gbl.fragile.K() + + assert k is k.GimeK(False) + assert k is not k.GimeK(True) + + kd = k.GimeK(True) + assert kd is k.GimeK(True) + assert kd is not k.GimeK(False) + + l = k.GimeL() + assert l is k.GimeL() + + def test14_double_enum_trouble(self): + """Test a redefinition of enum in a derived class""" + + return # don't bother; is fixed in cling-support + + import cppyy + + M = cppyy.gbl.fragile.M + N = cppyy.gbl.fragile.N + + assert M.kOnce == N.kOnce + assert M.kTwice == N.kTwice + assert M.__dict__['kTwice'] is not N.__dict__['kTwice'] diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_operators.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_operators.py new file mode 100644 index 0000000000000..bbeeeca8ec631 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_operators.py @@ -0,0 +1,173 @@ +import py, os, sys +from pytest import raises +from .support import setup_make, pylong, maxvalue + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("operatorsDict.so")) + +def setup_module(mod): + setup_make("operatorsDict.so") + + +class TestOPERATORS: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.operators = cppyy.load_reflection_info(cls.test_dct) + cls.N = cppyy.gbl.N + + def teardown_method(self, meth): + import gc + gc.collect() + + def test01_math_operators(self): + """Test overloading of math operators""" + + import cppyy + number = cppyy.gbl.number + + assert (number(20) + number(10)) == number(30) + assert (number(20) + 10 ) == number(30) + assert (number(20) - number(10)) == number(10) + assert (number(20) - 10 ) == number(10) + assert (number(20) / number(10)) == number(2) + assert (number(20) / 10 ) == number(2) + assert (number(20) * number(10)) == number(200) + assert (number(20) * 10 ) == number(200) + assert (number(20) % 10 ) == number(0) + assert (number(20) % number(10)) == number(0) + assert (number(5) & number(14)) == number(4) + assert (number(5) | number(14)) == number(15) + assert (number(5) ^ number(14)) == number(11) + assert (number(5) << 2) == number(20) + assert (number(20) >> 2) == number(5) + + def test02_unary_math_operators(self): + """Test overloading of unary math operators""" + + import cppyy + number = cppyy.gbl.number + + n = number(20) + n += number(10) + n -= number(10) + n *= number(10) + n /= number(2) + assert n == number(100) + + nn = -n; + assert nn == number(-100) + + def test03_comparison_operators(self): + """Test overloading of comparison operators""" + + import cppyy + number = cppyy.gbl.number + + assert (number(20) > number(10)) == True + assert (number(20) < number(10)) == False + assert (number(20) >= number(20)) == True + assert (number(20) <= number(10)) == False + assert (number(20) != number(10)) == True + assert (number(20) == number(10)) == False + + def test04_boolean_operator(self): + """Test implementation of operator bool""" + + import cppyy + number = cppyy.gbl.number + + n = number(20) + assert n + + n = number(0) + assert not n + + def test05_exact_types(self): + """Test converter operators of exact types""" + + import cppyy + gbl = cppyy.gbl + + o = gbl.operator_char_star() + assert o.m_str == 'operator_char_star' + assert str(o) == 'operator_char_star' + + o = gbl.operator_const_char_star() + assert o.m_str == 'operator_const_char_star' + assert str(o) == 'operator_const_char_star' + + o = gbl.operator_int(); o.m_int = -13 + assert o.m_int == -13 + assert int(o) == -13 + + o = gbl.operator_long(); o.m_long = 42 + assert o.m_long == 42 + assert pylong(o) == 42 + + o = gbl.operator_double(); o.m_double = 3.1415 + assert o.m_double == 3.1415 + assert float(o) == 3.1415 + + def test06_approximate_types(self): + """Test converter operators of approximate types""" + + import cppyy, sys + gbl = cppyy.gbl + + o = gbl.operator_short(); o.m_short = 256 + assert o.m_short == 256 + assert int(o) == 256 + + o = gbl.operator_unsigned_int(); o.m_uint = 2147483647 + 32 + assert o.m_uint == 2147483647 + 32 + assert pylong(o) == 2147483647 + 32 + + o = gbl.operator_unsigned_long(); + o.m_ulong = maxvalue + 128 + assert o.m_ulong == maxvalue + 128 + assert pylong(o) == maxvalue + 128 + + o = gbl.operator_float(); o.m_float = 3.14 + assert round(o.m_float - 3.14, 5) == 0. + assert round(float(o) - 3.14, 5) == 0. + + def test07_virtual_operator_eq(self): + """Test use of virtual bool operator==""" + + import cppyy + + b1 = cppyy.gbl.v_opeq_base(1) + b1a = cppyy.gbl.v_opeq_base(1) + b2 = cppyy.gbl.v_opeq_base(2) + b2a = cppyy.gbl.v_opeq_base(2) + + assert b1 == b1 + assert b1 == b1a + assert not b1 == b2 + assert not b1 == b2a + assert b2 == b2 + assert b2 == b2a + + d1 = cppyy.gbl.v_opeq_derived(1) + d1a = cppyy.gbl.v_opeq_derived(1) + d2 = cppyy.gbl.v_opeq_derived(2) + d2a = cppyy.gbl.v_opeq_derived(2) + + # derived operator== returns opposite + assert not d1 == d1 + assert not d1 == d1a + assert d1 == d2 + assert d1 == d2a + assert not d2 == d2 + assert not d2 == d2a + + # the following is a wee bit interesting due to python resolution + # rules on the one hand, and C++ inheritance on the other: python + # will never select the derived comparison b/c the call will fail + # to pass a base through a const derived& + assert b1 == d1 + assert d1 == b1 + assert not b1 == d2 + assert not d2 == b1 + diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_overloads.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_overloads.py new file mode 100644 index 0000000000000..82364876dc5de --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_overloads.py @@ -0,0 +1,138 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("overloadsDict.so")) + +def setup_module(mod): + setup_make("overloadsDict.so") + + +class TestOVERLOADS: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.overloads = cppyy.load_reflection_info(cls.test_dct) + + def test01_class_based_overloads(self): + """Test functions overloaded on different C++ clases""" + + import cppyy + a_overload = cppyy.gbl.a_overload + b_overload = cppyy.gbl.b_overload + c_overload = cppyy.gbl.c_overload + d_overload = cppyy.gbl.d_overload + + ns_a_overload = cppyy.gbl.ns_a_overload + ns_b_overload = cppyy.gbl.ns_b_overload + + assert c_overload().get_int(a_overload()) == 42 + assert c_overload().get_int(b_overload()) == 13 + assert d_overload().get_int(a_overload()) == 42 + assert d_overload().get_int(b_overload()) == 13 + + assert c_overload().get_int(ns_a_overload.a_overload()) == 88 + assert c_overload().get_int(ns_b_overload.a_overload()) == -33 + + assert d_overload().get_int(ns_a_overload.a_overload()) == 88 + assert d_overload().get_int(ns_b_overload.a_overload()) == -33 + + def test02_class_based_overloads_explicit_resolution(self): + """Test explicitly resolved function overloads""" + + import cppyy + a_overload = cppyy.gbl.a_overload + b_overload = cppyy.gbl.b_overload + c_overload = cppyy.gbl.c_overload + d_overload = cppyy.gbl.d_overload + + ns_a_overload = cppyy.gbl.ns_a_overload + + c = c_overload() + raises(TypeError, c.__dispatch__, 'get_int', 12) + raises(LookupError, c.__dispatch__, 'get_int', 'does_not_exist') + assert c.__dispatch__('get_int', 'a_overload*')(a_overload()) == 42 + assert c.__dispatch__('get_int', 'b_overload*')(b_overload()) == 13 + + assert c_overload().__dispatch__('get_int', 'a_overload*')(a_overload()) == 42 + # TODO: #assert c_overload.__dispatch__('get_int', 'b_overload*')(c, b_overload()) == 13 + + d = d_overload() + assert d.__dispatch__('get_int', 'a_overload*')(a_overload()) == 42 + assert d.__dispatch__('get_int', 'b_overload*')(b_overload()) == 13 + + nb = ns_a_overload.b_overload() + raises(TypeError, nb.f, c_overload()) + + def test03_fragile_class_based_overloads(self): + """Test functions overloaded on void* and non-existing classes""" + + # TODO: make Reflex generate unknown classes ... + + import cppyy + more_overloads = cppyy.gbl.more_overloads + aa_ol = cppyy.gbl.aa_ol +# bb_ol = cppyy.gbl.bb_ol + cc_ol = cppyy.gbl.cc_ol +# dd_ol = cppyy.gbl.dd_ol + + assert more_overloads().call(aa_ol()) == "aa_ol" +# assert more_overloads().call(bb_ol()) == "dd_ol" # <- bb_ol has an unknown + void* + assert more_overloads().call(cc_ol()) == "cc_ol" +# assert more_overloads().call(dd_ol()) == "dd_ol" # <- dd_ol has an unknown + + def test04_fully_fragile_overloads(self): + """Test that unknown* is preferred over unknown&""" + + # TODO: make Reflex generate unknown classes ... + return + + import cppyy + more_overloads2 = cppyy.gbl.more_overloads2 + bb_ol = cppyy.gbl.bb_ol + dd_ol = cppyy.gbl.dd_ol + + assert more_overloads2().call(bb_ol()) == "bb_olptr" + assert more_overloads2().call(dd_ol(), 1) == "dd_olptr" + + def test05_array_overloads(self): + """Test functions overloaded on different arrays""" + + import cppyy + c_overload = cppyy.gbl.c_overload + d_overload = cppyy.gbl.d_overload + + from array import array + + ai = array('i', [525252]) + assert c_overload().get_int(ai) == 525252 + assert d_overload().get_int(ai) == 525252 + + ah = array('h', [25]) + assert c_overload().get_int(ah) == 25 + assert d_overload().get_int(ah) == 25 + + def test06_double_int_overloads(self): + """Test overloads on int/doubles""" + + import cppyy + more_overloads = cppyy.gbl.more_overloads + + assert more_overloads().call(1) == "int" + assert more_overloads().call(1.) == "double" + assert more_overloads().call1(1) == "int" + assert more_overloads().call1(1.) == "double" + + def test07_mean_overloads(self): + """Adapted test for array overloading""" + + import cppyy, array + cmean = cppyy.gbl.calc_mean + + numbers = [8, 2, 4, 2, 4, 2, 4, 4, 1, 5, 6, 3, 7] + mean, median = 4.0, 4.0 + + for l in ['f', 'd', 'i', 'h', 'l']: + a = array.array(l, numbers) + assert round(cmean(len(a), a) - mean, 8) == 0 diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonify.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonify.py new file mode 100644 index 0000000000000..21ba401082e6d --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonify.py @@ -0,0 +1,414 @@ +import py, os, sys +from pytest import raises +from .support import setup_make, pylong + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("example01Dict.so")) + +def setup_module(mod): + setup_make("example01Dict.so") + + +class TestPYTHONIFY: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.example01 = cppyy.load_reflection_info(cls.test_dct) + + def test01_load_dictionary_cache(self): + """Test whether loading a dictionary twice results in the same object.""" + import cppyy + lib2 = cppyy.load_reflection_info(self.test_dct) + assert self.example01 is lib2 + + def test02_finding_classes(self): + """Test the lookup of a class, and its caching.""" + import cppyy + example01_class = cppyy.gbl.example01 + cl2 = cppyy.gbl.example01 + assert example01_class is cl2 + + raises(AttributeError, 'cppyy.gbl.nonexistingclass') + + def test03_calling_static_functions(self): + """Test calling of static methods.""" + import cppyy, sys, math + example01_class = cppyy.gbl.example01 + res = example01_class.staticAddOneToInt(1) + assert res == 2 + + res = example01_class.staticAddOneToInt(pylong(1)) + assert res == 2 + res = example01_class.staticAddOneToInt(1, 2) + assert res == 4 + res = example01_class.staticAddOneToInt(-1) + assert res == 0 + maxint32 = int(2 ** 31 - 1) + res = example01_class.staticAddOneToInt(maxint32-1) + assert res == maxint32 + res = example01_class.staticAddOneToInt(maxint32) + assert res == -maxint32-1 + + raises(TypeError, 'example01_class.staticAddOneToInt(1, [])') + raises(TypeError, 'example01_class.staticAddOneToInt(1.)') + raises(TypeError, 'example01_class.staticAddOneToInt(maxint32+1)') + res = example01_class.staticAddToDouble(0.09) + assert res == 0.09 + 0.01 + + res = example01_class.staticAtoi("1") + assert res == 1 + + res = example01_class.staticStrcpy("aap") # TODO: this leaks + assert res == "aap" + + res = example01_class.staticStrcpy(u"aap") # TODO: this leaks + assert res == "aap" + + raises(TypeError, 'example01_class.staticStrcpy(1.)') # TODO: this leaks + + def test04_constructing_and_calling(self): + """Test object and method calls.""" + import cppyy + example01_class = cppyy.gbl.example01 + assert example01_class.getCount() == 0 + instance = example01_class(7) + assert example01_class.getCount() == 1 + res = instance.addDataToInt(4) + assert res == 11 + res = instance.addDataToInt(-4) + assert res == 3 + instance.__destruct__() + assert example01_class.getCount() == 0 + raises(ReferenceError, 'instance.addDataToInt(4)') + + instance = example01_class(7) + instance2 = example01_class(8) + assert example01_class.getCount() == 2 + instance.__destruct__() + assert example01_class.getCount() == 1 + instance2.__destruct__() + assert example01_class.getCount() == 0 + + instance = example01_class(13) + res = instance.addDataToDouble(16) + assert round(res-29, 8) == 0. + instance.__destruct__() + instance = example01_class(-13) + res = instance.addDataToDouble(16) + assert round(res-3, 8) == 0. + instance.__destruct__() + + instance = example01_class(42) + assert example01_class.getCount() == 1 + + res = instance.addDataToAtoi("13") + assert res == 55 + + res = instance.addToStringValue("12") # TODO: this leaks + assert res == "54" + res = instance.addToStringValue("-12") # TODO: this leaks + assert res == "30" + + res = instance.staticAddOneToInt(pylong(1)) + assert res == 2 + + instance.__destruct__() + assert example01_class.getCount() == 0 + + def test05_passing_object_by_pointer(self): + import cppyy + example01_class = cppyy.gbl.example01 + payload_class = cppyy.gbl.payload + + e = example01_class(14) + pl = payload_class(3.14) + assert round(pl.getData()-3.14, 8) == 0 + + example01_class.staticSetPayload(pl, 41.) + assert pl.getData() == 41. + example01_class.staticSetPayload(pl, 43.) + assert pl.getData() == 43. + e.staticSetPayload(pl, 45.) + assert pl.getData() == 45. + + e.setPayload(pl) + assert round(pl.getData()-14., 8) == 0 + + pl.__destruct__() + e.__destruct__() + assert example01_class.getCount() == 0 + + def test06_returning_object_by_pointer(self): + import cppyy + example01_class = cppyy.gbl.example01 + payload_class = cppyy.gbl.payload + + pl = payload_class(3.14) + assert round(pl.getData()-3.14, 8) == 0 + + pl2 = example01_class.staticCyclePayload(pl, 38.) + assert pl2.getData() == 38. + + e = example01_class(14) + + pl2 = e.cyclePayload(pl) + assert round(pl2.getData()-14., 8) == 0 + + pl.__destruct__() + e.__destruct__() + assert example01_class.getCount() == 0 + + def test07_returning_object_by_value(self): + import cppyy + example01_class = cppyy.gbl.example01 + payload_class = cppyy.gbl.payload + + pl = payload_class(3.14) + assert round(pl.getData()-3.14, 8) == 0 + + pl2 = example01_class.staticCopyCyclePayload(pl, 38.) + assert pl2.getData() == 38. + pl2.__destruct__() + + e = example01_class(14) + + pl2 = e.copyCyclePayload(pl) + assert round(pl2.getData()-14., 8) == 0 + pl2.__destruct__() + + pl.__destruct__() + e.__destruct__() + assert example01_class.getCount() == 0 + + def test08_global_functions(self): + import cppyy + + assert cppyy.gbl.globalAddOneToInt(3) == 4 # creation lookup + assert cppyy.gbl.globalAddOneToInt(3) == 4 # cached lookup + + assert cppyy.gbl.ns_example01.globalAddOneToInt(4) == 5 + assert cppyy.gbl.ns_example01.globalAddOneToInt(4) == 5 + + def test09_memory(self): + """Test proper C++ destruction by the garbage collector""" + + import cppyy, gc + example01_class = cppyy.gbl.example01 + payload_class = cppyy.gbl.payload + + pl = payload_class(3.14) + assert payload_class.count == 1 + assert round(pl.getData()-3.14, 8) == 0 + + pl2 = example01_class.staticCopyCyclePayload(pl, 38.) + assert payload_class.count == 2 + assert pl2.getData() == 38. + pl2 = None + gc.collect() + assert payload_class.count == 1 + + e = example01_class(14) + + pl2 = e.copyCyclePayload(pl) + assert payload_class.count == 2 + assert round(pl2.getData()-14., 8) == 0 + pl2 = None + gc.collect() + assert payload_class.count == 1 + + pl = None + e = None + gc.collect() + assert payload_class.count == 0 + assert example01_class.getCount() == 0 + + pl = payload_class(3.14) + pl_a = example01_class.staticCyclePayload(pl, 66.) + pl_a.getData() == 66. + assert payload_class.count == 1 + pl_a = None + pl = None + gc.collect() + assert payload_class.count == 0 + + # TODO: need ReferenceError on touching pl_a + + def test10_default_arguments(self): + """Test propagation of default function arguments""" + + import cppyy + a = cppyy.gbl.ArgPasser() + + # NOTE: when called through the stub, default args are fine + f = a.stringRef + s = cppyy.gbl.std.string + assert f(s("aap"), 0, s("noot")) == "aap" + assert f(s("noot"), 1) == "default" + assert f(s("mies")) == "mies" + + for itype in ['short', 'ushort', 'int', 'uint', 'long', 'ulong']: + g = getattr(a, '%sValue' % itype) + raises(TypeError, 'g(1, 2, 3, 4, 6)') + assert g(11, 0, 12, 13) == 11 + assert g(11, 1, 12, 13) == 12 + assert g(11, 1, 12) == 12 + assert g(11, 2, 12) == 2 + assert g(11, 1) == 1 + assert g(11, 2) == 2 + assert g(11) == 11 + + for ftype in ['float', 'double']: + g = getattr(a, '%sValue' % ftype) + raises(TypeError, 'g(1., 2, 3., 4., 6.)') + assert g(11., 0, 12., 13.) == 11. + assert g(11., 1, 12., 13.) == 12. + assert g(11., 1, 12.) == 12. + assert g(11., 2, 12.) == 2. + assert g(11., 1) == 1. + assert g(11., 2) == 2. + assert g(11.) == 11. + + def test11_overload_on_arguments(self): + """Test functions overloaded on arguments""" + + import cppyy + e = cppyy.gbl.example01(1) + + assert e.addDataToInt(2) == 3 + assert e.overloadedAddDataToInt(3) == 4 + assert e.overloadedAddDataToInt(4, 5) == 10 + assert e.overloadedAddDataToInt(6, 7, 8) == 22 + + def test12_typedefs(self): + """Test access and use of typedefs""" + + import cppyy + + assert cppyy.gbl.example01 == cppyy.gbl.example01_t + + def test13_underscore_in_class_name(self): + """Test recognition of '_' as part of a valid class name""" + + import cppyy + + assert cppyy.gbl.z_ == cppyy.gbl.z_ + + z = cppyy.gbl.z_() + + assert hasattr(z, 'myint') + assert z.gime_z_(z) + + def test14_bound_unbound_calls(self): + """Test (un)bound method calls""" + + import cppyy + + raises(TypeError, cppyy.gbl.example01.addDataToInt, 1) + + meth = cppyy.gbl.example01.addDataToInt + raises(TypeError, meth) + raises(TypeError, meth, 1) + + e = cppyy.gbl.example01(2) + assert 5 == meth(e, 3) + + def test15_installable_function(self): + """Test installing and calling global C++ function as python method""" + + import cppyy + + cppyy.gbl.example01.fresh = cppyy.gbl.installableAddOneToInt + + e = cppyy.gbl.example01(0) + assert 2 == e.fresh(1) + assert 3 == e.fresh(2) + + + def test16_subclassing(self): + """A sub-class on the python side should have that class as type""" + + import cppyy, gc + gc.collect() + + example01 = cppyy.gbl.example01 + + assert example01.getCount() == 0 + + o = example01() + assert type(o) == example01 + assert example01.getCount() == 1 + o.__destruct__() + assert example01.getCount() == 0 + + class MyClass1(example01): + def myfunc(self): + return 1 + + o = MyClass1() + assert type(o) == MyClass1 + assert isinstance(o, example01) + assert example01.getCount() == 1 + assert o.myfunc() == 1 + o.__destruct__() + assert example01.getCount() == 0 + + class MyClass2(example01): + def __init__(self, what): + example01.__init__(self) + self.what = what + + o = MyClass2('hi') + assert type(o) == MyClass2 + assert example01.getCount() == 1 + assert o.what == 'hi' + o.__destruct__() + + assert example01.getCount() == 0 + + +class TestPYTHONIFY_UI: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.example01 = cppyy.load_reflection_info(cls.test_dct) + + def test01_pythonizations(self): + """Test addition of user-defined pythonizations""" + + import cppyy + + def example01a_pythonize(pyclass, pyname): + if pyname == 'example01a': + def getitem(self, idx): + return self.addDataToInt(idx) + pyclass.__getitem__ = getitem + + cppyy.py.add_pythonization(example01a_pythonize) + + e = cppyy.gbl.example01a(1) + + assert e[0] == 1 + assert e[1] == 2 + assert e[5] == 6 + + def test02_fragile_pythonizations(self): + """Test pythonizations error reporting""" + + import cppyy + + example01_pythonize = 1 + raises(TypeError, cppyy.py.add_pythonization, example01_pythonize) + + def test03_write_access_to_globals(self): + """Test overwritability of globals""" + + import cppyy + + oldval = cppyy.gbl.ns_example01.gMyGlobalInt + assert oldval == 99 + + proxy = cppyy.gbl.ns_example01.__class__.__dict__['gMyGlobalInt'] + cppyy.gbl.ns_example01.gMyGlobalInt = 3 + assert proxy.__get__(proxy, None) == 3 + + cppyy.gbl.ns_example01.gMyGlobalInt = oldval diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonization.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonization.py new file mode 100644 index 0000000000000..370ba3a3275f8 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_pythonization.py @@ -0,0 +1,196 @@ +import py, os, sys +from pytest import raises +from .support import setup_make, pylong + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("pythonizablesDict.so")) + +def setup_module(mod): + setup_make("pythonizablesDict.so") + + +class TestClassPYTHONIZATION: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.pyzables = cppyy.load_reflection_info(cls.test_dct) + + def test00_api(self): + """Test basic semantics of the pythonization API""" + + import cppyy + + raises(TypeError, cppyy.py.add_pythonization, 1) + + def pythonizor1(klass, name): + pass + + def pythonizor2(klass, name): + pass + + pythonizor3 = pythonizor1 + + cppyy.py.add_pythonization(pythonizor1) + assert cppyy.py.remove_pythonization(pythonizor2) == False + assert cppyy.py.remove_pythonization(pythonizor3) == True + + def pythonizor(klass, name): + if name == 'pyzables::SomeDummy1': + klass.test = 1 + + cppyy.py.add_pythonization(pythonizor) + assert cppyy.gbl.pyzables.SomeDummy1.test == 1 + + def pythonizor(klass, name): + if name == 'SomeDummy2': + klass.test = 2 + cppyy.py.add_pythonization(pythonizor, 'pyzables') + + def pythonizor(klass, name): + if name == 'pyzables::SomeDummy2': + klass.test = 3 + cppyy.py.add_pythonization(pythonizor) + + assert cppyy.gbl.pyzables.SomeDummy2.test == 2 + + def root_pythonizor(klass, name): + if name == 'TString': + klass.__len__ = klass.Length + + cppyy.py.add_pythonization(root_pythonizor) + + assert len(cppyy.gbl.TString("aap")) == 3 + + def test01_size_mapping(self): + """Use composites to map GetSize() onto buffer returns""" + + import cppyy + + def set_size(self, buf): + buf.reshape((self.GetN(),)) + return buf + + cppyy.py.add_pythonization( + cppyy.py.compose_method('NakedBuffers$', 'Get[XY]$', set_size), 'pyzables') + + bsize, xval, yval = 3, 2, 5 + m = cppyy.gbl.pyzables.NakedBuffers(bsize, xval, yval) + + x = m.GetX() + assert len(x) == bsize + assert list(x) == list(map(lambda x: x*xval, range(bsize))) + + y = m.GetY() + assert len(y) == bsize + assert list(y) == list(map(lambda x: x*yval, range(bsize))) + + def test02_size_mapping_of_templated_method(self): + """Use composites to map GetSize() onto buffer returns""" + + import cppyy + + def set_size(self, buf): + buf.reshape((self.GetN(),)) + return buf + + cppyy.py.add_pythonization( + cppyy.py.compose_method('NakedBuffers2.*Vector.*', 'Get[XY]$', set_size), 'pyzables') + + bsize, xval, yval = 3, 2, 5 + m = cppyy.gbl.pyzables.NakedBuffers2[cppyy.gbl.pyzables.Vector](bsize, xval, yval) + + x = m.GetX() + assert len(x) == bsize + assert list(x) == list(map(lambda x: x*xval, range(bsize))) + + y = m.GetY() + assert len(y) == bsize + assert list(y) == list(map(lambda x: x*yval, range(bsize))) + + def test03_type_pinning(self): + """Verify pinnability of returns""" + + import cppyy + + cppyy.gbl.pyzables.GimeDerived._creates = True + + result = cppyy.gbl.pyzables.GimeDerived() + assert type(result) == cppyy.gbl.pyzables.MyDerived + + cppyy.py.pin_type(cppyy.gbl.pyzables.MyBase) + assert type(result) == cppyy.gbl.pyzables.MyDerived + + + def test04_transparency(self): + """Transparent use of smart pointers""" + + import cppyy + + Countable = cppyy.gbl.pyzables.Countable + mine = cppyy.gbl.pyzables.mine + + assert type(mine) == Countable + assert mine.m_check == 0xcdcdcdcd + assert type(mine.__smartptr__()) == cppyy.gbl.std.shared_ptr(Countable) + assert mine.__smartptr__().get().m_check == 0xcdcdcdcd + assert mine.say_hi() == "Hi!" + + def test05_converters(self): + """Smart pointer argument passing""" + + import cppyy + + pz = cppyy.gbl.pyzables + mine = pz.mine + + assert 0xcdcdcdcd == pz.pass_mine_rp_ptr(mine) + assert 0xcdcdcdcd == pz.pass_mine_rp_ref(mine) + assert 0xcdcdcdcd == pz.pass_mine_rp(mine) + + assert 0xcdcdcdcd == pz.pass_mine_sp_ptr(mine) + assert 0xcdcdcdcd == pz.pass_mine_sp_ref(mine) + + assert 0xcdcdcdcd == pz.pass_mine_sp_ptr(mine.__smartptr__()) + assert 0xcdcdcdcd == pz.pass_mine_sp_ref(mine.__smartptr__()) + + assert 0xcdcdcdcd == pz.pass_mine_sp(mine) + assert 0xcdcdcdcd == pz.pass_mine_sp(mine.__smartptr__()) + + # TODO: + # cppyy.gbl.mine = mine + pz.renew_mine() + + def test06_executors(self): + """Smart pointer return types""" + + import cppyy + + pz = cppyy.gbl.pyzables + Countable = pz.Countable + + mine = pz.gime_mine_ptr() + assert type(mine) == Countable + assert mine.m_check == 0xcdcdcdcd + assert type(mine.__smartptr__()) == cppyy.gbl.std.shared_ptr(Countable) + assert mine.__smartptr__().get().m_check == 0xcdcdcdcd + assert mine.say_hi() == "Hi!" + + mine = pz.gime_mine_ref() + assert type(mine) == Countable + assert mine.m_check == 0xcdcdcdcd + assert type(mine.__smartptr__()) == cppyy.gbl.std.shared_ptr(Countable) + assert mine.__smartptr__().get().m_check == 0xcdcdcdcd + assert mine.say_hi() == "Hi!" + + mine = pz.gime_mine() + assert type(mine) == Countable + assert mine.m_check == 0xcdcdcdcd + assert type(mine.__smartptr__()) == cppyy.gbl.std.shared_ptr(Countable) + assert mine.__smartptr__().get().m_check == 0xcdcdcdcd + assert mine.say_hi() == "Hi!" + + +## actual test run +if __name__ == '__main__': + result = run_pytest(__file__) + sys.exit(result) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_regression.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_regression.py new file mode 100644 index 0000000000000..5cad0ce6df10c --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_regression.py @@ -0,0 +1,93 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + + +class TestREGRESSION: + helpout = [] + + def setup_class(cls): + import cppyy + + def stringpager(text, cls=cls): + cls.helpout.append(text) + + import pydoc + pydoc.pager = stringpager + + def test01_kdcraw(self): + """Doc strings for KDcrawIface (used to crash).""" + + import cppyy, pydoc + + # TODO: run a find for these paths + qtpath = "/usr/include/qt5" + kdcraw_h = "/usr/include/KF5/KDCRAW/kdcraw/kdcraw.h" + if not os.path.isdir(qtpath) or not os.path.exists(kdcraw_h): + import warnings + warnings.warn("no KDE/Qt found, skipping test01_kdcraw") + return + + # need to resolve qt_version_tag for the incremental compiler; since + # it's not otherwise used, just make something up + cppyy.cppdef("int qt_version_tag = 42;") + cppyy.add_include_path(qtpath) + cppyy.include(kdcraw_h) + + from cppyy.gbl import KDcrawIface + + self.__class__.helpout = [] + pydoc.doc(KDcrawIface.KDcraw) + helptext = ''.join(self.__class__.helpout) + assert 'KDcraw' in helptext + assert 'CPPInstance' in helptext + + def test02_dir(self): + """For the same reasons as test01_kdcraw, this used to crash.""" + + import cppyy, pydoc + + assert not '__abstractmethods__' in dir(cppyy.gbl.gInterpreter) + assert '__class__' in dir(cppyy.gbl.gInterpreter) + + self.__class__.helpout = [] + pydoc.doc(cppyy.gbl.gInterpreter) + helptext = ''.join(self.__class__.helpout) + assert 'TInterpreter' in helptext + assert 'CPPInstance' in helptext + assert 'AddIncludePath' in helptext + + cppyy.cppdef("namespace cppyy_regression_test { void iii() {}; }") + + assert not 'iii' in cppyy.gbl.cppyy_regression_test.__dict__ + assert not '__abstractmethods__' in dir(cppyy.gbl.cppyy_regression_test) + assert '__class__' in dir(cppyy.gbl.cppyy_regression_test) + assert 'iii' in dir(cppyy.gbl.cppyy_regression_test) + + assert not 'iii' in cppyy.gbl.cppyy_regression_test.__dict__ + assert cppyy.gbl.cppyy_regression_test.iii + assert 'iii' in cppyy.gbl.cppyy_regression_test.__dict__ + + self.__class__.helpout = [] + pydoc.doc(cppyy.gbl.cppyy_regression_test) + helptext = ''.join(self.__class__.helpout) + assert 'CPPInstance' in helptext + + def test03_pyfunc_doc(self): + """Help on a generated pyfunc used to crash.""" + + import cppyy, distutils, pydoc, sys + + cppyy.add_include_path(distutils.sysconfig_get_python_inc()) + if sys.hexversion < 0x3000000: + cppyy.cppdef("#undef _POSIX_C_SOURCE") + cppyy.cppdef("#undef _XOPEN_SOURCE") + else: + cppyy.cppdef("#undef slots") # potentially pulled in by Qt/xapian.h + + cppyy.cppdef("""#include "Python.h" + long py2long(PyObject* obj) { return PyLong_AsLong(obj); }""") + + pydoc.doc(cppyy.gbl.py2long) + + assert 1 == cppyy.gbl.py2long(1) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_stltypes.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_stltypes.py new file mode 100644 index 0000000000000..ddef4f84077ee --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_stltypes.py @@ -0,0 +1,547 @@ +import py, os, sys +from pytest import raises +from .support import setup_make, maxvalue + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("stltypesDict.so")) + +def setup_module(mod): + setup_make("stltypesDict.so") + + +class TestSTLVECTOR: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.stltypes = cppyy.load_reflection_info(cls.test_dct) + cls.N = cppyy.gbl.N + + def test01_builtin_type_vector_types(self): + """Test access to std::vector/std::vector""" + + import cppyy + + assert cppyy.gbl.std is cppyy.gbl.std + assert cppyy.gbl.std.vector is cppyy.gbl.std.vector + + assert callable(cppyy.gbl.std.vector) + + type_info = ( + ("int", int), + ("float", "float"), + ("double", "double"), + ) + + for c_type, p_type in type_info: + tv1 = getattr(cppyy.gbl.std, 'vector<%s>' % c_type) + tv2 = cppyy.gbl.std.vector(p_type) + assert tv1 is tv2 + assert tv1.iterator is cppyy.gbl.std.vector(p_type).iterator + + #----- + v = tv1(); v += range(self.N) # default args from Reflex are useless :/ + if p_type == int: # only type with == and != reflected in .xml + assert v.begin().__eq__(v.begin()) + assert v.begin() == v.begin() + assert v.end() == v.end() + assert v.begin() != v.end() + assert v.end() != v.begin() + + #----- + for i in range(self.N): + v[i] = i + assert v[i] == i + assert v.at(i) == i + + assert v.size() == self.N + assert len(v) == self.N + + #----- + v = tv1() + for i in range(self.N): + v.push_back(i) + assert v.size() == i+1 + assert v.at(i) == i + assert v[i] == i + + assert v.size() == self.N + assert len(v) == self.N + + def test02_user_type_vector_type(self): + """Test access to an std::vector""" + + import cppyy + + assert cppyy.gbl.std is cppyy.gbl.std + assert cppyy.gbl.std.vector is cppyy.gbl.std.vector + + assert callable(cppyy.gbl.std.vector) + + tv1 = getattr(cppyy.gbl.std, 'vector') + tv2 = cppyy.gbl.std.vector('just_a_class') + tv3 = cppyy.gbl.std.vector(cppyy.gbl.just_a_class) + + assert tv1 is tv2 + assert tv2 is tv3 + + v = tv3() + assert hasattr(v, 'size' ) + assert hasattr(v, 'push_back' ) + assert hasattr(v, '__getitem__' ) + assert hasattr(v, 'begin' ) + assert hasattr(v, 'end' ) + + for i in range(self.N): + v.push_back(cppyy.gbl.just_a_class()) + v[i].m_i = i + assert v[i].m_i == i + + assert len(v) == self.N + v.__destruct__() + + def test03_empty_vector_type(self): + """Test behavior of empty std::vector""" + + import cppyy + + v = cppyy.gbl.std.vector(int)() + for arg in v: + pass + v.__destruct__() + + def test04_vector_iteration(self): + """Test iteration over an std::vector""" + + import cppyy + + v = cppyy.gbl.std.vector(int)() + + for i in range(self.N): + v.push_back(i) + assert v.size() == i+1 + assert v.at(i) == i + assert v[i] == i + + assert v.size() == self.N + assert len(v) == self.N + + i = 0 + for arg in v: + assert arg == i + i += 1 + + assert list(v) == [i for i in range(self.N)] + + v.__destruct__() + + def test05_push_back_iterables_with_iadd(self): + """Test usage of += of iterable on push_back-able container""" + + import cppyy + + v = cppyy.gbl.std.vector(int)() + + v += [1, 2, 3] + assert len(v) == 3 + assert v[0] == 1 + assert v[1] == 2 + assert v[2] == 3 + + v += (4, 5, 6) + assert len(v) == 6 + assert v[3] == 4 + assert v[4] == 5 + assert v[5] == 6 + + raises(TypeError, v.__iadd__, (7, '8')) # string shouldn't pass + assert len(v) == 7 # TODO: decide whether this should roll-back + + v2 = cppyy.gbl.std.vector(int)() + v2 += [8, 9] + assert len(v2) == 2 + assert v2[0] == 8 + assert v2[1] == 9 + + v += v2 + assert len(v) == 9 + assert v[6] == 7 + assert v[7] == 8 + assert v[8] == 9 + + def test06_vector_indexing(self): + """Test python-style indexing to an std::vector""" + + import cppyy + + v = cppyy.gbl.std.vector(int)() + + for i in range(self.N): + v.push_back(i) + + raises(IndexError, 'v[self.N]') + raises(IndexError, 'v[self.N+1]') + + assert v[-1] == self.N-1 + assert v[-2] == self.N-2 + + assert len(v[0:0]) == 0 + assert v[1:2][0] == v[1] + + v2 = v[2:-1] + assert len(v2) == self.N-3 # 2 off from start, 1 from end + assert v2[0] == v[2] + assert v2[-1] == v[-2] + assert v2[self.N-4] == v[-2] + + def test07_vector_bool(self): + """Usability of std::vector which can be a specialization""" + + import cppyy + + vb = cppyy.gbl.std.vector(bool)(8) + assert [x for x in vb] == [False]*8 + + vb[0] = True + assert vb[0] + vb[-1] = True + assert vb[7] + + assert [x for x in vb] == [True]+[False]*6+[True] + + assert len(vb[4:8]) == 4 + assert list(vb[4:8]) == [False]*3+[True] + +class estSTLSTRING: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.stltypes = cppyy.load_reflection_info(cls.test_dct) + + def test01_string_argument_passing(self): + """Test mapping of python strings and std::string""" + + import cppyy + std = cppyy.gbl.std + stringy_class = cppyy.gbl.stringy_class + + c, s = stringy_class(""), std.string("test1") + + # pass through const std::string& + c.set_string1(s) + assert c.get_string1() == s + + c.set_string1("test2") + assert c.get_string1() == "test2" + + # pass through std::string (by value) + s = std.string("test3") + c.set_string2(s) + assert c.get_string1() == s + + c.set_string2("test4") + assert c.get_string1() == "test4" + + # getting through std::string& + s2 = std.string() + c.get_string2(s2) + assert s2 == "test4" + + raises(TypeError, c.get_string2, "temp string") + + def test02_string_data_access(self): + """Test access to std::string object data members""" + + import cppyy + std = cppyy.gbl.std + stringy_class = cppyy.gbl.stringy_class + + c, s = stringy_class("dummy"), std.string("test string") + + c.m_string = "another test" + assert c.m_string == "another test" + assert str(c.m_string) == c.m_string + assert c.get_string1() == "another test" + + c.m_string = s + assert str(c.m_string) == s + assert c.m_string == s + assert c.get_string1() == s + + def test03_string_with_null_character(self): + """Test that strings with NULL do not get truncated""" + + return # don't bother; is fixed in cling-support + + import cppyy + std = cppyy.gbl.std + stringy_class = cppyy.gbl.stringy_class + + t0 = "aap\0noot" + assert t0 == "aap\0noot" + + c, s = stringy_class(""), std.string(t0, len(t0)) + + c.set_string1(s) + assert t0 == c.get_string1() + assert s == c.get_string1() + + +class TestSTLLIST: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.stltypes = cppyy.load_reflection_info(cls.test_dct) + cls.N = 13 + + def test01_builtin_list_type(self): + """Test access to a list""" + + import cppyy + from cppyy.gbl import std + + type_info = ( + ("int", int), + ("float", "float"), + ("double", "double"), + ) + + for c_type, p_type in type_info: + tl1 = getattr(std, 'list<%s>' % c_type) + tl2 = cppyy.gbl.std.list(p_type) + assert tl1 is tl2 + assert tl1.iterator is cppyy.gbl.std.list(p_type).iterator + + #----- + a = tl1() + for i in range(self.N): + a.push_back( i ) + + assert len(a) == self.N + assert 11 < self.N + assert 11 in a + + #----- + ll = list(a) + for i in range(self.N): + assert ll[i] == i + + for val in a: + assert ll[ll.index(val)] == val + + def test02_empty_list_type(self): + """Test behavior of empty list""" + + import cppyy + from cppyy.gbl import std + + a = std.list(int)() + for arg in a: + pass + + +class TestSTLMAP: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.stltypes = cppyy.load_reflection_info(cls.test_dct) + cls.N = 13 + + def test01_builtin_map_type(self): + """Test access to a map""" + + import cppyy + std = cppyy.gbl.std + + a = std.map(int, int)() + for i in range(self.N): + a[i] = i + assert a[i] == i + + assert len(a) == self.N + + for key, value in a: + assert key == value + assert key == self.N-1 + assert value == self.N-1 + + # add a variation, just in case + m = std.map(int, int)() + for i in range(self.N): + m[i] = i*i + assert m[i] == i*i + + for key, value in m: + assert key*key == value + assert key == self.N-1 + assert value == (self.N-1)*(self.N-1) + + def test02_keyed_maptype(self): + """Test access to a map""" + + import cppyy + std = cppyy.gbl.std + + a = std.map(std.string, int)() + for i in range(self.N): + a[str(i)] = i + assert a[str(i)] == i + + assert len(a) == self.N + + def test03_empty_maptype(self): + """Test behavior of empty map""" + + import cppyy + std = cppyy.gbl.std + + m = std.map(int, int)() + for key, value in m: + pass + + def test04_unsignedvalue_typemap_types(self): + """Test assignability of maps with unsigned value types""" + + import cppyy, math, sys + std = cppyy.gbl.std + + mui = std.map(str, 'unsigned int')() + mui['one'] = 1 + assert mui['one'] == 1 + raises(TypeError, mui.__setitem__, 'minus one', -1) + + # UInt_t is always 32b, maxvalue is sys.maxint/maxsize and follows system int + maxint32 = int(math.pow(2,31)-1) + mui['maxint'] = maxint32 + 3 + assert mui['maxint'] == maxint32 + 3 + + mul = std.map(str, 'unsigned long')() + mul['two'] = 2 + assert mul['two'] == 2 + mul['maxint'] = maxvalue + 3 + assert mul['maxint'] == maxvalue + 3 + + raises(TypeError, mul.__setitem__, 'minus two', -2) + + def test05_STL_like_class_indexing_overloads(self): + """Test overloading of operator[] in STL like class""" + + import cppyy + stl_like_class = cppyy.gbl.stl_like_class + + a = stl_like_class(int)() + assert a["some string" ] == 'string' + assert a[3.1415] == 'double' + + def test06_STL_like_class_iterators(self): + """Test the iterator protocol mapping for an STL like class""" + + return + + # TODO: reconsider this (this is a case where there is no return + # type available and the code should (?) fall back onto getitem + # iteration. (Python does, and that would break this.) + + import cppyy + stl_like_class = cppyy.gbl.stl_like_class + + a = stl_like_class(int)() + for i in a: + pass + + assert i == 3 + + +class TestSTLITERATOR: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.stltypes = cppyy.load_reflection_info(cls.test_dct) + + def test01_builtin_vector_iterators(self): + """Test iterator comparison with operator== reflected""" + + import cppyy + from cppyy.gbl import std + + v = std.vector(int)() + v.resize(1) + + b1, e1 = v.begin(), v.end() + b2, e2 = v.begin(), v.end() + + assert b1 == b2 + assert not b1 != b2 + + assert e1 == e2 + assert not e1 != e2 + + assert not b1 == e1 + assert b1 != e1 + + b1.__preinc__() + assert not b1 == b2 + assert b1 == e2 + assert b1 != b2 + assert b1 == e2 + + +class TestSTLARRAY: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.stltypes = cppyy.load_reflection_info(cls.test_dct) + + def test01_array_of_basic_types(self): + """Usage of std::array of basic types""" + + import cppyy + from cppyy.gbl import std + + a = std.array[int, 4]() + assert len(a) == 4 + for i in range(len(a)): + a[i] = i + assert a[i] == i + + def test02_array_of_pods(self): + """Usage of std::array of PODs""" + + import cppyy + from cppyy import gbl + from cppyy.gbl import std + + a = std.array[gbl.ArrayTest.Point, 4]() + assert len(a) == 4 + for i in range(len(a)): + a[i].px = i + assert a[i].px == i + a[i].py = i**2 + assert a[i].py == i**2 + + def test03_array_of_pointer_to_pods(self): + """Usage of std::array of pointer to PODs""" + + import cppyy + from cppyy import gbl + from cppyy.gbl import std + + ll = [gbl.ArrayTest.Point() for i in range(4)] + for i in range(len(ll)): + ll[i].px = 13*i + ll[i].py = 42*i + + a = std.array['ArrayTest::Point*', 4]() + assert len(a) == 4 + for i in range(len(a)): + a[i] = ll[i] + assert a[i].px == 13*i + assert a[i].py == 42*i + + raises(TypeError, a.__setitem__, 1, 42) + + for i in range(len(a)): + assert gbl.ArrayTest.get_pp_px(a.data(), i) == 13*i + assert gbl.ArrayTest.get_pp_py(a.data(), i) == 42*i + + assert gbl.ArrayTest.get_pa_px(a.data(), i) == 13*i + assert gbl.ArrayTest.get_pa_py(a.data(), i) == 42*i diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_streams.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_streams.py new file mode 100644 index 0000000000000..70d644f535285 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_streams.py @@ -0,0 +1,33 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("std_streamsDict.so")) + +def setup_module(mod): + setup_make("std_streamsDict.so") + + +class TestSTDStreams: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.streams = cppyy.load_reflection_info(cls.test_dct) + + def test01_std_ostream(self): + """Test availability of std::ostream""" + + import cppyy + + assert cppyy.gbl.std is cppyy.gbl.std + assert cppyy.gbl.std.ostream is cppyy.gbl.std.ostream + + assert callable(cppyy.gbl.std.ostream) + + def test02_std_cout(self): + """Test access to std::cout""" + + import cppyy + + assert not (cppyy.gbl.std.cout is None) diff --git a/bindings/pyroot_experimental/cppyy/cppyy/test/test_templates.py b/bindings/pyroot_experimental/cppyy/cppyy/test/test_templates.py new file mode 100644 index 0000000000000..a16fc25f6cb3b --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/test/test_templates.py @@ -0,0 +1,172 @@ +import py, os, sys +from pytest import raises +from .support import setup_make + +currpath = py.path.local(__file__).dirpath() +test_dct = str(currpath.join("templatesDict.so")) + +def setup_module(mod): + setup_make("templatesDict.so") + + +class TestTEMPLATES: + def setup_class(cls): + cls.test_dct = test_dct + import cppyy + cls.templates = cppyy.load_reflection_info(cls.test_dct) + + def test01_template_member_functions(self): + """Template member functions lookup and calls""" + + import cppyy + + m = cppyy.gbl.MyTemplatedMethodClass() + + # pre-instantiated + assert m.get_size['char']() == m.get_char_size() + assert m.get_size[int]() == m.get_int_size() + + # specialized + if sys.hexversion >= 0x3000000: + targ = 'long' + else: + targ = long + assert m.get_size[targ]() == m.get_long_size() + + # auto-instantiation + assert m.get_size[float]() == m.get_float_size() + assert m.get_size['double']() == m.get_double_size() + assert m.get_size['MyTemplatedMethodClass']() == m.get_self_size() + + # auto through typedef + assert m.get_size['MyTMCTypedef_t']() == m.get_self_size() + + def test02_non_type_template_args(self): + """Use of non-types as template arguments""" + + import cppyy + + cppyy.cppdef("template int nt_templ_args() { return i; };") + + assert cppyy.gbl.nt_templ_args[1]() == 1 + assert cppyy.gbl.nt_templ_args[256]() == 256 + + def test03_templated_function(self): + """Templated global and static functions lookup and calls""" + + import cppyy + + # TODO: the following only works if something else has already + # loaded the headers associated with this template + ggs = cppyy.gbl.global_get_size + assert ggs['char']() == 1 + + gsf = cppyy.gbl.global_some_foo + + assert gsf[int](3) == 42 + assert gsf(3) == 42 + assert gsf(3.) == 42 + + gsb = cppyy.gbl.global_some_bar + + assert gsb(3) == 13 + assert gsb['double'](3.) == 13 + + # TODO: the following only works in a namespace + nsgsb = cppyy.gbl.SomeNS.some_bar + + assert nsgsb[3] + assert nsgsb[3]() == 3 + + # TODO: add some static template method + + def test04_variadic_function(self): + """Call a variadic function""" + + from cppyy import gbl + from cppyy.gbl import std + + s = std.ostringstream() + #s << '(' + #gbl.SomeNS.tuplify(s, 1, 4., "aap") + #assert s.str() == '(1, 4, aap) + + def test05_variadic_overload(self): + """Call an overloaded variadic function""" + + import cppyy + + assert cppyy.gbl.isSomeInt(3.) == False + assert cppyy.gbl.isSomeInt(1) == True + assert cppyy.gbl.isSomeInt() == False + assert cppyy.gbl.isSomeInt(1, 2, 3) == False + + def test06_variadic_sfinae(self): + """Attribute testing through SFINAE""" + + import cppyy + cppyy.gbl.AttrTesting # load + from cppyy.gbl.AttrTesting import Obj1, Obj2, has_var1, call_has_var1 + from cppyy.gbl.std import move + + assert has_var1(Obj1()) == hasattr(Obj1(), 'var1') + assert has_var1(Obj2()) == hasattr(Obj2(), 'var1') + assert has_var1(3) == hasattr(3, 'var1') + assert has_var1("aap") == hasattr("aap", 'var1') + + assert call_has_var1(move(Obj1())) == True + assert call_has_var1(move(Obj2())) == False + + def test07_type_deduction(self): + """Traits/type deduction""" + + import cppyy + cppyy.gbl.AttrTesting # load + from cppyy.gbl.AttrTesting import select_template_arg, Obj1, Obj2 + + #assert select_template_arg[0, Obj1, Obj2].argument == Obj1 + assert select_template_arg[1, Obj1, Obj2].argument == Obj2 + raises(TypeError, select_template_arg.__getitem__, 2, Obj1, Obj2) + + # TODO, this doesn't work for builtin types as the 'argument' + # typedef will not resolve to a class + #assert select_template_arg[1, int, float].argument == float + + def test08_using_of_static_data(self): + """Derived class using static data of base""" + + import cppyy + + # TODO: the following should live in templates.h, but currently fails + # in TClass::GetListOfMethods() + cppyy.cppdef(""" + template struct BaseClassWithStatic { + static T const ref_value; + }; + + template + T const BaseClassWithStatic::ref_value = 42; + + template + struct DerivedClassUsingStatic : public BaseClassWithStatic { + using BaseClassWithStatic::ref_value; + + explicit DerivedClassUsingStatic(T x) : BaseClassWithStatic() { + m_value = x > ref_value ? ref_value : x; + } + + T m_value; + };""") + + + # TODO: the ref_value property is inaccessible (offset == -1) + # assert cppyy.gbl.BaseClassWithStatic["size_t"].ref_value == 42 + + b1 = cppyy.gbl.DerivedClassUsingStatic["size_t"]( 0) + b2 = cppyy.gbl.DerivedClassUsingStatic["size_t"](100) + + # assert b1.ref_value == 42 + assert b1.m_value == 0 + + # assert b2.ref_value == 42 + assert b2.m_value == 42 From e60c1d108a986cead9b1503ec33c14c807bb8296 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 19:50:03 +0000 Subject: [PATCH 255/344] Integrate CpyCppyy with ROOT's build system --- .../cppyy/CPyCppyy/CMakeLists.txt | 81 +++++++++++-------- 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt b/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt index 55e01f43f9e49..ebaaf1e1ff784 100644 --- a/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/CMakeLists.txt @@ -1,33 +1,48 @@ -cmake_minimum_required(VERSION 3.4.3 FATAL_ERROR) -project (cppyy) - -set (CMAKE_CXX_STANDARD 14) -set (CMAKE_CXX_STANDARD_REQUIRED ON) -set (CMAKE_CXX_EXTENSIONS OFF) - -set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-strict-aliasing") - -message(STATUS "Looking for python interpreter") -#---First look for the python interpreter and fix the version of it for the libraries-- -find_package(PythonInterp) - -if (PYTHONINTERP_FOUND) - execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sys;sys.stdout.write(sys.version[:3])" - OUTPUT_VARIABLE PYTHON_VERSION) - execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sys;sys.stdout.write(sys.prefix)" - OUTPUT_VARIABLE PYTHON_PREFIX) - set (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${PYTHON_PREFIX}) -endif() - -set(Python_ADDITIONAL_VERSIONS ${PYTHON_VERSION}) -find_package(PythonLibs) - -if (NOT PYTHONLIBS_FOUND) - message(FATAL_ERROR "PythonLibs package not found and python component required") -endif() - -include_directories ("${PROJECT_SOURCE_DIR}/include" "${PYTHON_INCLUDE_PATH}") - -file (GLOB cppyy_src src/*.cxx) - -add_library(cppyy SHARED ${cppyy_src}) +set(headers + include/TPyArg.h + include/TPyException.h + include/TPyReturn.h + include/TPython.h +) + +set(sources + src/CallContext.cxx + src/Converters.cxx + src/CPPClassMethod.cxx + src/CPPConstructor.cxx + src/CPPDataMember.cxx + src/CPPFunction.cxx + src/CPPInstance.cxx + src/CPPMethod.cxx + src/CPPOverload.cxx + src/CPPScope.cxx + src/CPPSetItem.cxx + src/CPyCppyyModule.cxx + src/CustomPyTypes.cxx + src/Executors.cxx + src/LowLevelViews.cxx + src/MemoryRegulator.cxx + src/ProxyWrappers.cxx + src/PyStrings.cxx + src/Pythonize.cxx + src/TemplateProxy.cxx + src/TPyArg.cxx + src/TPyClassGenerator.cxx + src/TPyException.cxx + src/TPyReturn.cxx + src/TPython.cxx + src/TupleOfInstances.cxx + src/TypeManip.cxx + src/Utility.cxx +) + +add_library(cppyy SHARED ${headers} ${sources}) +target_compile_options(cppyy PRIVATE + -Wno-shadow -Wno-strict-aliasing -Wno-unused-but-set-parameter) +target_include_directories(cppyy PUBLIC ${PYTHON_INCLUDE_DIRS} + $ + $) +target_link_libraries(cppyy cppyy_backend ${PYTHON_LIBRARIES}) + +set_property(GLOBAL APPEND PROPERTY ROOT_EXPORTED_TARGETS cppyy) +install(TARGETS cppyy EXPORT ${CMAKE_PROJECT_NAME}Exports DESTINATION ${runtimedir}) From f45ec54feefa735d82929033236c97a8cc9e23db Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 19:56:44 +0000 Subject: [PATCH 256/344] Add CMakeLists.txt for cppyy-backend --- .../cppyy/cppyy-backend/CMakeLists.txt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/CMakeLists.txt diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/CMakeLists.txt b/bindings/pyroot_experimental/cppyy/cppyy-backend/CMakeLists.txt new file mode 100644 index 0000000000000..c13c90b947fb7 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy-backend/CMakeLists.txt @@ -0,0 +1,23 @@ +set(py_sources + cppyy_backend/__init__.py + cppyy_backend/loader.py +) + +set(d $ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${runtimedir}) +foreach(py_source ${py_sources}) + file(COPY clingwrapper/python/${py_source} DESTINATION ${localruntimedir}/cppyy_backend) + install(FILES clingwrapper/python/${py_source} DESTINATION ${runtimedir}/cppyy_backend) + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile ${d}/${py_source})") + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile ${d}/${py_source})") +endforeach() + +add_library(cppyy_backend SHARED clingwrapper/src/clingwrapper.cxx) +target_include_directories(cppyy_backend PRIVATE clingwrapper/src) +target_link_libraries(cppyy_backend Core ${CMAKE_DL_LIBS}) + +# cppyy uses ROOT headers from binary directory +add_dependencies(cppyy_backend move_headers) +target_include_directories(cppyy_backend PRIVATE ${CMAKE_BINARY_DIR}/include) + +set_property(GLOBAL APPEND PROPERTY ROOT_EXPORTED_TARGETS cppyy_backend) +install(TARGETS cppyy_backend EXPORT ROOTExports DESTINATION ${runtimedir}) From f6cec9caf0c67144499112ca795cb841a39784c5 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 20:12:28 +0000 Subject: [PATCH 257/344] Add CMakeLists.txt for cppyy --- .../pyroot_experimental/cppyy/cppyy/CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 bindings/pyroot_experimental/cppyy/cppyy/CMakeLists.txt diff --git a/bindings/pyroot_experimental/cppyy/cppyy/CMakeLists.txt b/bindings/pyroot_experimental/cppyy/cppyy/CMakeLists.txt new file mode 100644 index 0000000000000..dc0b75abadbc2 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/cppyy/CMakeLists.txt @@ -0,0 +1,14 @@ +set(py_sources + cppyy/_stdcpp_fix.py + cppyy/__init__.py + cppyy/_cpython_cppyy.py + cppyy/_pythonization.py +) + +set(d $ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${runtimedir}) +foreach(py_source ${py_sources}) + file(COPY python/${py_source} DESTINATION ${localruntimedir}/cppyy) + install(FILES python/${py_source} DESTINATION ${runtimedir}/cppyy) + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile ${d}/${py_source})") + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile ${d}/${py_source})") +endforeach() From 957a7c8f2c28faa97a098bf371e8bd59b9c4137c Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 19:57:43 +0000 Subject: [PATCH 258/344] Add CMakeLists.txt for cppyy projects --- bindings/pyroot_experimental/cppyy/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 bindings/pyroot_experimental/cppyy/CMakeLists.txt diff --git a/bindings/pyroot_experimental/cppyy/CMakeLists.txt b/bindings/pyroot_experimental/cppyy/CMakeLists.txt new file mode 100644 index 0000000000000..177202561a749 --- /dev/null +++ b/bindings/pyroot_experimental/cppyy/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(cppyy-backend) +add_subdirectory(CPyCppyy) +add_subdirectory(cppyy) From f7e8dc2e487dd29b17c0934a816d87fd49fb4a8f Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Thu, 7 Jun 2018 19:59:33 +0000 Subject: [PATCH 259/344] First skeleton for experimental PyROOT Includes a new mechanism for adding pythonizations and two examples of pythonizations for TTree that have been ported on top of the new Cppyy API (one in Python, one in C++). --- .../pyroot_experimental/PyROOT/CMakeLists.txt | 23 +++ .../PyROOT/python/ROOT/__init__.py | 16 ++ .../python/ROOT/pythonization/__init__.py | 0 .../python/ROOT/pythonization/_ttree.py | 31 ++++ .../PyROOT/src/PyROOTModule.cxx | 104 +++++++++++++ .../PyROOT/src/PyROOTPythonize.h | 13 ++ .../PyROOT/src/PyROOTStrings.cxx | 51 +++++++ .../PyROOT/src/PyROOTStrings.h | 28 ++++ .../PyROOT/src/PyROOTWrapper.cxx | 47 ++++++ .../PyROOT/src/PyROOTWrapper.h | 12 ++ .../PyROOT/src/TTreePyz.cxx | 143 ++++++++++++++++++ 11 files changed, 468 insertions(+) create mode 100644 bindings/pyroot_experimental/PyROOT/CMakeLists.txt create mode 100644 bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py create mode 100644 bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/__init__.py create mode 100644 bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py create mode 100644 bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx create mode 100644 bindings/pyroot_experimental/PyROOT/src/PyROOTPythonize.h create mode 100644 bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.cxx create mode 100644 bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.h create mode 100644 bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx create mode 100644 bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h create mode 100644 bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx diff --git a/bindings/pyroot_experimental/PyROOT/CMakeLists.txt b/bindings/pyroot_experimental/PyROOT/CMakeLists.txt new file mode 100644 index 0000000000000..e7152f521373d --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/CMakeLists.txt @@ -0,0 +1,23 @@ +set(py_sources + ROOT/__init__.py + ROOT/pythonization/__init__.py + ROOT/pythonization/_ttree.py +) + +set(sources + src/PyROOTModule.cxx + src/PyROOTStrings.cxx + src/PyROOTWrapper.cxx + src/TTreePyz.cxx +) + +file(COPY python/ROOT DESTINATION ${localruntimedir}) +install(DIRECTORY python/ROOT DESTINATION ${runtimedir}) + +set(d $ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${runtimedir}) +foreach(py_source ${py_sources}) + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile ${d}/${py_source})") + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile ${d}/${py_source})") +endforeach() + +ROOT_LINKER_LIBRARY(ROOTPython ${sources} LIBRARIES Core Tree cppyy) diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py new file mode 100644 index 0000000000000..960f2a8ee69e3 --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py @@ -0,0 +1,16 @@ + +import cppyy +import ROOT.pythonization as pyz + +import pkgutil +import importlib + +# Add pythonizations +for _, module_name, _ in pkgutil.walk_packages(pyz.__path__): + module = importlib.import_module(pyz.__name__ + '.' + module_name) + cppyy.py.add_pythonization(module.get_pythonizor()) + +# Redirect ROOT to cppyy.gbl +import sys +sys.modules['ROOT'] = cppyy.gbl + diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/__init__.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py new file mode 100644 index 0000000000000..a5fa41171c5e3 --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py @@ -0,0 +1,31 @@ + +from libROOTPython import PythonizeTTree + +# TTree iterator +def _TTree__iter__(self): + i = 0 + bytes_read = self.GetEntry(i) + while 0 < bytes_read: + yield self + i += 1 + bytes_read = self.GetEntry(i) + + if bytes_read == -1: + raise RuntimeError( "TTree I/O error" ) + +# Pythonizor function +def ttree_pythonizor(klass, name): + if name == 'TTree': + # Pythonic iterator + klass.__iter__ = _TTree__iter__ + + # C++ pythonizations + # - tree.branch syntax + PythonizeTTree(klass) + + return True + + +def get_pythonizor(): + return ttree_pythonizor + diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx new file mode 100644 index 0000000000000..ad66b5b5438fb --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx @@ -0,0 +1,104 @@ + +// Bindings +#include "PyROOTPythonize.h" +#include "PyROOTStrings.h" +#include "PyROOTWrapper.h" + +// Cppyy +#include "CPyCppyy.h" +#include "CallContext.h" +#include "ProxyWrappers.h" +#include "Utility.h" + +// ROOT +#include "TROOT.h" +#include "TSystem.h" + +// Standard +#include +#include +#include +#include + +using namespace CPyCppyy; + +namespace PyROOT { +PyObject *gRootModule = 0; +} + +// Methods offered by the interface +static PyMethodDef gPyROOTMethods[] = {{(char *)"PythonizeTTree", (PyCFunction)PyROOT::PythonizeTTree, METH_VARARGS, + (char *)"Pythonizations for class TTree"}, + {NULL, NULL, 0, NULL}}; + +#if PY_VERSION_HEX >= 0x03000000 +struct module_state { + PyObject *error; +}; + +#define GETSTATE(m) ((struct module_state *)PyModule_GetState(m)) + +static int rootmodule_traverse(PyObject *m, visitproc visit, void *arg) +{ + Py_VISIT(GETSTATE(m)->error); + return 0; +} + +static int rootmodule_clear(PyObject *m) +{ + Py_CLEAR(GETSTATE(m)->error); + return 0; +} + +static struct PyModuleDef moduledef = {PyModuleDef_HEAD_INIT, "libROOTPython", NULL, + sizeof(struct module_state), gPyROOTMethods, NULL, + rootmodule_traverse, rootmodule_clear, NULL}; + + +/// Initialization of extension module libROOTPython + +#define PYROOT_INIT_ERROR return NULL +extern "C" PyObject *PyInit_libROOTPython() +#else +#define PYROOT_INIT_ERROR return +extern "C" void initlibROOTPython() +#endif +{ + using namespace PyROOT; + + // load commonly used python strings + if (!PyROOT::CreatePyStrings()) + PYROOT_INIT_ERROR; + +// setup PyROOT +#if PY_VERSION_HEX >= 0x03000000 + gRootModule = PyModule_Create(&moduledef); +#else + gRootModule = Py_InitModule(const_cast("libROOTPython"), gPyROOTMethods); +#endif + if (!gRootModule) + PYROOT_INIT_ERROR; + + // keep gRootModule, but do not increase its reference count even as it is borrowed, + // or a self-referencing cycle would be created + + // policy labels + PyModule_AddObject(gRootModule, (char *)"kMemoryHeuristics", PyInt_FromLong((int)CallContext::kUseHeuristics)); + PyModule_AddObject(gRootModule, (char *)"kMemoryStrict", PyInt_FromLong((int)CallContext::kUseStrict)); + PyModule_AddObject(gRootModule, (char *)"kSignalFast", PyInt_FromLong((int)CallContext::kFast)); + PyModule_AddObject(gRootModule, (char *)"kSignalSafe", PyInt_FromLong((int)CallContext::kSafe)); + + // setup PyROOT + PyROOT::InitPyROOT(); + + // signal policy: don't abort interpreter in interactive mode + CallContext::SetSignalPolicy(gROOT->IsBatch() ? CallContext::kFast : CallContext::kSafe); + + // inject ROOT namespace for convenience + PyModule_AddObject(gRootModule, (char *)"ROOT", CreateScopeProxy("ROOT")); + +#if PY_VERSION_HEX >= 0x03000000 + Py_INCREF(gRootModule); + return gRootModule; +#endif +} diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTPythonize.h b/bindings/pyroot_experimental/PyROOT/src/PyROOTPythonize.h new file mode 100644 index 0000000000000..e5e562671b97b --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTPythonize.h @@ -0,0 +1,13 @@ + +#ifndef PYROOT_PYTHONIZE_H +#define PYROOT_PYTHONIZE_H + +#include "Python.h" + +namespace PyROOT { + +PyObject *PythonizeTTree(PyObject *self, PyObject *args); + +} // namespace PyROOT + +#endif // !PYROOT_PYTHONIZE_H diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.cxx new file mode 100644 index 0000000000000..774e8137cb6c5 --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.cxx @@ -0,0 +1,51 @@ + +// Bindings +#include "CPyCppyy.h" +#include "PyROOTStrings.h" + +// Define cached python strings +PyObject *PyROOT::PyStrings::gBranch = nullptr; +PyObject *PyROOT::PyStrings::gFitFCN = nullptr; +PyObject *PyROOT::PyStrings::gROOTns = nullptr; +PyObject *PyROOT::PyStrings::gSetBranchAddress = nullptr; +PyObject *PyROOT::PyStrings::gSetFCN = nullptr; +PyObject *PyROOT::PyStrings::gTClassDynCast = nullptr; + +#define PYROOT_INITIALIZE_STRING(var, str) \ + if (!(PyStrings::var = CPyCppyy_PyUnicode_InternFromString((char *)#str))) \ + return false + +bool PyROOT::CreatePyStrings() +{ + // Build cache of commonly used python strings (the cache is python intern, so + // all strings are shared python-wide, not just in PyROOT). + PYROOT_INITIALIZE_STRING(gBranch, Branch); + PYROOT_INITIALIZE_STRING(gFitFCN, FitFCN); + PYROOT_INITIALIZE_STRING(gROOTns, ROOT); + PYROOT_INITIALIZE_STRING(gSetBranchAddress, SetBranchAddress); + PYROOT_INITIALIZE_STRING(gSetFCN, SetFCN); + PYROOT_INITIALIZE_STRING(gTClassDynCast, _TClass__DynamicCast); + + return true; +} + +/// Remove all cached python strings. + +PyObject *PyROOT::DestroyPyStrings() +{ + Py_DECREF(PyStrings::gBranch); + PyStrings::gBranch = nullptr; + Py_DECREF(PyStrings::gFitFCN); + PyStrings::gFitFCN = nullptr; + Py_DECREF(PyStrings::gROOTns); + PyStrings::gROOTns = nullptr; + Py_DECREF(PyStrings::gSetBranchAddress); + PyStrings::gSetBranchAddress = nullptr; + Py_DECREF(PyStrings::gSetFCN); + PyStrings::gSetFCN = nullptr; + Py_DECREF(PyStrings::gTClassDynCast); + PyStrings::gTClassDynCast = nullptr; + + Py_INCREF(Py_None); + return Py_None; +} diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.h b/bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.h new file mode 100644 index 0000000000000..f6eb3b36b88ae --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTStrings.h @@ -0,0 +1,28 @@ + +#ifndef PYROOT_PYSTRINGS_H +#define PYROOT_PYSTRINGS_H + +#include "Python.h" +#include "DllImport.h" + +namespace PyROOT { + +// python strings kept for performance reasons + +namespace PyStrings { + +R__EXTERN PyObject *gBranch; +R__EXTERN PyObject *gFitFCN; +R__EXTERN PyObject *gROOTns; +R__EXTERN PyObject *gSetBranchAddress; +R__EXTERN PyObject *gSetFCN; +R__EXTERN PyObject *gTClassDynCast; + +} // namespace PyStrings + +bool CreatePyStrings(); +PyObject *DestroyPyStrings(); + +} // namespace PyROOT + +#endif // !PYROOT_PYSTRINGS_H diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx new file mode 100644 index 0000000000000..aaa990013664f --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx @@ -0,0 +1,47 @@ + +// Bindings +#include "PyROOTWrapper.h" + +// Cppyy +#include "CPyCppyy.h" +#include "ProxyWrappers.h" + +// ROOT +#include "TROOT.h" +#include "TSystem.h" +#include "TClass.h" +#include "TDataMember.h" +#include "TClassEdit.h" +#include "TEnum.h" +#include "TEnumConstant.h" +#include "TInterpreter.h" +#include "TGlobal.h" +#include "DllImport.h" + +namespace PyROOT { +R__EXTERN PyObject *gRootModule; +} + +using namespace PyROOT; + +namespace { + +inline void AddToGlobalScope(const char *label, const char * /* hdr */, TObject *obj, Cppyy::TCppType_t klass) +{ + // Bind the given object with the given class in the global scope with the + // given label for its reference. + PyModule_AddObject(gRootModule, const_cast(label), CPyCppyy::BindCppObjectNoCast(obj, klass)); +} + +} // unnamed namespace + +void PyROOT::InitPyROOT() +{ + // Initialize and acquire the GIL to allow for threading in ROOT + PyEval_InitThreads(); + + // Bind ROOT globals that will be needed in ROOT.py + AddToGlobalScope("gROOT", "TROOT.h", gROOT, Cppyy::GetScope(gROOT->IsA()->GetName())); + AddToGlobalScope("gSystem", "TSystem.h", gSystem, Cppyy::GetScope(gSystem->IsA()->GetName())); + AddToGlobalScope("gInterpreter", "TInterpreter.h", gInterpreter, Cppyy::GetScope(gInterpreter->IsA()->GetName())); +} diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h new file mode 100644 index 0000000000000..7f211e1d6d71a --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h @@ -0,0 +1,12 @@ + +#ifndef PYROOT_ROOTWRAPPER_H +#define PYROOT_ROOTWRAPPER_H + +namespace PyROOT { + +// initialize ROOT +void InitPyROOT(); + +} // namespace PyROOT + +#endif // !PYROOT_ROOTWRAPPER_H diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx new file mode 100644 index 0000000000000..0d3d2e53e4a47 --- /dev/null +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -0,0 +1,143 @@ + +// Bindings +#include "CPyCppyy.h" +#include "PyROOTStrings.h" +#include "PyROOTPythonize.h" +#include "CPPInstance.h" +#include "ProxyWrappers.h" +#include "Converters.h" +#include "Utility.h" + +// ROOT +#include "TClass.h" +#include "TInterpreter.h" +#include "TMethod.h" + +#include "TTree.h" +#include "TBranch.h" +#include "TBranchElement.h" +#include "TBranchObject.h" +#include "TLeaf.h" +#include "TLeafElement.h" +#include "TLeafObject.h" +#include "TStreamerElement.h" +#include "TStreamerInfo.h" + +#include "CustomPyTypes.h" +#include + +using namespace CPyCppyy; + +static inline TClass *OP2TCLASS(CPPInstance *pyobj) +{ + return TClass::GetClass(Cppyy::GetFinalName(pyobj->ObjectIsA()).c_str()); +} + +// Allow access to branches/leaves as if they were data members +PyObject *GetAttr(CPPInstance *self, PyObject *pyname) +{ + const char *name1 = CPyCppyy_PyUnicode_AsString(pyname); + if (!name1) + return 0; + + // get hold of actual tree + TTree *tree = (TTree *)OP2TCLASS(self)->DynamicCast(TTree::Class(), self->GetObject()); + + if (!tree) { + PyErr_SetString(PyExc_ReferenceError, "attempt to access a null-pointer"); + return 0; + } + + // deal with possible aliasing + const char *name = tree->GetAlias(name1); + if (!name) + name = name1; + + // search for branch first (typical for objects) + TBranch *branch = tree->GetBranch(name); + if (!branch) { + // for benefit of naming of sub-branches, the actual name may have a trailing '.' + branch = tree->GetBranch((std::string(name) + '.').c_str()); + } + + if (branch) { + // found a branched object, wrap its address for the object it represents + + // for partial return of a split object + if (branch->InheritsFrom(TBranchElement::Class())) { + TBranchElement *be = (TBranchElement *)branch; + if (be->GetCurrentClass() && (be->GetCurrentClass() != be->GetTargetClass()) && (0 <= be->GetID())) { + Long_t offset = ((TStreamerElement *)be->GetInfo()->GetElements()->At(be->GetID()))->GetOffset(); + return BindCppObjectNoCast(be->GetObject() + offset, Cppyy::GetScope(be->GetCurrentClass()->GetName())); + } + } + + // for return of a full object + if (branch->IsA() == TBranchElement::Class() || branch->IsA() == TBranchObject::Class()) { + TClass *klass = TClass::GetClass(branch->GetClassName()); + if (klass && branch->GetAddress()) + return BindCppObjectNoCast(*(void **)branch->GetAddress(), Cppyy::GetScope(branch->GetClassName())); + + // try leaf, otherwise indicate failure by returning a typed null-object + TObjArray *leaves = branch->GetListOfLeaves(); + if (klass && !tree->GetLeaf(name) && !(leaves->GetSize() && (leaves->First() == leaves->Last()))) + return BindCppObjectNoCast(NULL, Cppyy::GetScope(branch->GetClassName())); + } + } + + // if not, try leaf + TLeaf *leaf = tree->GetLeaf(name); + if (branch && !leaf) { + leaf = branch->GetLeaf(name); + if (!leaf) { + TObjArray *leaves = branch->GetListOfLeaves(); + if (leaves->GetSize() && (leaves->First() == leaves->Last())) { + // i.e., if unambiguously only this one + leaf = (TLeaf *)leaves->At(0); + } + } + } + + if (leaf) { + // found a leaf, extract value and wrap + if (1 < leaf->GetLenStatic() || leaf->GetLeafCount()) { + // array types + std::string typeName = leaf->GetTypeName(); + Converter *pcnv = CreateConverter(typeName + '*', leaf->GetNdata()); + + void *address = 0; + if (leaf->GetBranch()) + address = (void *)leaf->GetBranch()->GetAddress(); + if (!address) + address = (void *)leaf->GetValuePointer(); + + PyObject *value = pcnv->FromMemory(&address); + delete pcnv; + + return value; + } else if (leaf->GetValuePointer()) { + // value types + Converter *pcnv = CreateConverter(leaf->GetTypeName()); + PyObject *value = 0; + if (leaf->IsA() == TLeafElement::Class() || leaf->IsA() == TLeafObject::Class()) + value = pcnv->FromMemory((void *)*(void **)leaf->GetValuePointer()); + else + value = pcnv->FromMemory((void *)leaf->GetValuePointer()); + delete pcnv; + + return value; + } + } + + // confused + PyErr_Format(PyExc_AttributeError, "\'%s\' object has no attribute \'%s\'", tree->IsA()->GetName(), name); + return 0; +} + +// Public function +PyObject *PyROOT::PythonizeTTree(PyObject *, PyObject *args) +{ + PyObject *pyclass = PyTuple_GetItem(args, 0); + Utility::AddToClass(pyclass, "__getattr__", (PyCFunction)GetAttr, METH_O); + Py_RETURN_NONE; +} From 6e335d4232ca2094d6d486c05de8c76ced312c5c Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Thu, 7 Jun 2018 20:02:05 +0000 Subject: [PATCH 260/344] Add CMakeLists.txt for pyroot_experimental --- bindings/pyroot_experimental/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 bindings/pyroot_experimental/CMakeLists.txt diff --git a/bindings/pyroot_experimental/CMakeLists.txt b/bindings/pyroot_experimental/CMakeLists.txt new file mode 100644 index 0000000000000..0f9a014ddae6d --- /dev/null +++ b/bindings/pyroot_experimental/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(cppyy) +add_subdirectory(PyROOT) From 7ce059d7461e5befa1552fe3349752538d3aed84 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 5 Jun 2018 14:16:41 +0200 Subject: [PATCH 261/344] Add option to build only experimental PyROOT --- bindings/CMakeLists.txt | 6 +++++- cmake/modules/RootBuildOptions.cmake | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bindings/CMakeLists.txt b/bindings/CMakeLists.txt index 1c74e6e4e9f2c..3caed6ded3a6c 100644 --- a/bindings/CMakeLists.txt +++ b/bindings/CMakeLists.txt @@ -1,5 +1,9 @@ if(python) - add_subdirectory(pyroot) + if(NOT pyroot_experimental) + add_subdirectory(pyroot) + else() + add_subdirectory(pyroot_experimental) + endif() endif() if(ruby) add_subdirectory(ruby) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 128998d64cdea..538c58857b343 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -146,6 +146,7 @@ ROOT_BUILD_OPTION(pythia6 ON "Pythia6 EG support, requires libPythia6") ROOT_BUILD_OPTION(pythia6_nolink OFF "Delayed linking of Pythia6 library") ROOT_BUILD_OPTION(pythia8 ON "Pythia8 EG support, requires libPythia8") ROOT_BUILD_OPTION(python ON "Python ROOT bindings, requires python >= 2.2") +ROOT_BUILD_OPTION(pyroot_experimental OFF "Use experimental Python bindings for ROOT") ROOT_BUILD_OPTION(qt OFF "Qt4 graphics backend, requires Qt4 >= 4.8") ROOT_BUILD_OPTION(qtgsi OFF "GSI's Qt4 integration, requires Qt4 >= 4.8") ROOT_BUILD_OPTION(qt5web OFF "Qt5 web-based display, requires Qt5") From 4cd1e363bba14e2242bea16077b5a2f9dfc67505 Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Fri, 8 Jun 2018 13:20:36 +0200 Subject: [PATCH 262/344] Require cxx14=ON or cxx17=ON when building with upstream cppyy --- bindings/pyroot_experimental/cppyy/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bindings/pyroot_experimental/cppyy/CMakeLists.txt b/bindings/pyroot_experimental/cppyy/CMakeLists.txt index 177202561a749..420916b8726f6 100644 --- a/bindings/pyroot_experimental/cppyy/CMakeLists.txt +++ b/bindings/pyroot_experimental/cppyy/CMakeLists.txt @@ -1,3 +1,7 @@ +if(NOT (cxx14 OR cxx17)) + message(FATAL_ERROR "Cppyy requires C++14 standard or later") +endif() + add_subdirectory(cppyy-backend) add_subdirectory(CPyCppyy) add_subdirectory(cppyy) From 798fd3e9afa8f351fb4a2a6d9a4235819c0cc4ef Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 20 Jun 2018 11:39:30 +0200 Subject: [PATCH 263/344] Update PyROOT/Cppyy contributions --- README/CREDITS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README/CREDITS b/README/CREDITS index 7ba31a8c382f0..71ac2d8b48689 100644 --- a/README/CREDITS +++ b/README/CREDITS @@ -531,7 +531,7 @@ D: Integrating Minuit2 in Roofit and adding support for MPI N: Wim Lavrijsen E: WLavrijsen@lbl.gov -D: PyRoot package +D: PyROOT package, Cppyy package N: Kerry Lee E: kerry.t.lee@nasa.gov @@ -621,7 +621,7 @@ D: pioneer on many fronts, installation, support N: Pere Mato E: Pere.Mato@cern.ch -D: PyRoot package +D: PyROOT package D: cmake build system N: Richard Maunder @@ -917,7 +917,7 @@ D: Paint3DAlgorithms used by the LEGO and SURF options N: Enric Tejedor E: enric.tejedor@cern.ch -D: IO, Parallelisation, Jupyter integration, TDataFrame +D: IO, Parallelisation, Jupyter integration, TDataFrame, PyROOT N: Jan Therhaag E: therhaag@users.sourceforge.net From 993b34a98f3931dd7a6f1e34eaa8eeb86388cc63 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 20 Jun 2018 11:50:17 +0200 Subject: [PATCH 264/344] State which is the corresponding #if --- bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx index ad66b5b5438fb..29026c9cdaded 100644 --- a/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx @@ -59,7 +59,7 @@ static struct PyModuleDef moduledef = {PyModuleDef_HEAD_INIT, "libROOTPyth #define PYROOT_INIT_ERROR return NULL extern "C" PyObject *PyInit_libROOTPython() -#else +#else // PY_VERSION_HEX >= 0x03000000 #define PYROOT_INIT_ERROR return extern "C" void initlibROOTPython() #endif From effca730fc63397ad78957f8a4e9c9fbb11d12cd Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 20 Jun 2018 15:58:12 +0200 Subject: [PATCH 265/344] Make AddToGlobalScope static but not inline --- bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx index aaa990013664f..75ec318cbe4a8 100644 --- a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx @@ -26,7 +26,7 @@ using namespace PyROOT; namespace { -inline void AddToGlobalScope(const char *label, const char * /* hdr */, TObject *obj, Cppyy::TCppType_t klass) +static void AddToGlobalScope(const char *label, const char * /* hdr */, TObject *obj, Cppyy::TCppType_t klass) { // Bind the given object with the given class in the global scope with the // given label for its reference. From 5718bd8e7bc7f2df5612fc8eb3b5cc1e5aebbf8e Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Wed, 20 Jun 2018 16:40:53 +0200 Subject: [PATCH 266/344] Rename init function of PyROOT Eliminate previous redundancy with namespace. --- bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx | 2 +- bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx | 2 +- bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx index 29026c9cdaded..334b192ee044a 100644 --- a/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTModule.cxx @@ -89,7 +89,7 @@ extern "C" void initlibROOTPython() PyModule_AddObject(gRootModule, (char *)"kSignalSafe", PyInt_FromLong((int)CallContext::kSafe)); // setup PyROOT - PyROOT::InitPyROOT(); + PyROOT::Init(); // signal policy: don't abort interpreter in interactive mode CallContext::SetSignalPolicy(gROOT->IsBatch() ? CallContext::kFast : CallContext::kSafe); diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx index 75ec318cbe4a8..54b3e27444315 100644 --- a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx @@ -35,7 +35,7 @@ static void AddToGlobalScope(const char *label, const char * /* hdr */, TObject } // unnamed namespace -void PyROOT::InitPyROOT() +void PyROOT::Init() { // Initialize and acquire the GIL to allow for threading in ROOT PyEval_InitThreads(); diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h index 7f211e1d6d71a..fe104b8044b1b 100644 --- a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.h @@ -5,7 +5,7 @@ namespace PyROOT { // initialize ROOT -void InitPyROOT(); +void Init(); } // namespace PyROOT From 42bef863256ecddedff5322cc27e1862289367d8 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Thu, 21 Jun 2018 13:54:48 +0200 Subject: [PATCH 267/344] Remove unnecessary includes --- bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx | 5 ----- bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx | 7 ------- 2 files changed, 12 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx index 54b3e27444315..90abc911ece6d 100644 --- a/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/PyROOTWrapper.cxx @@ -10,12 +10,7 @@ #include "TROOT.h" #include "TSystem.h" #include "TClass.h" -#include "TDataMember.h" -#include "TClassEdit.h" -#include "TEnum.h" -#include "TEnumConstant.h" #include "TInterpreter.h" -#include "TGlobal.h" #include "DllImport.h" namespace PyROOT { diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index 0d3d2e53e4a47..817a8eb781e3a 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -1,7 +1,6 @@ // Bindings #include "CPyCppyy.h" -#include "PyROOTStrings.h" #include "PyROOTPythonize.h" #include "CPPInstance.h" #include "ProxyWrappers.h" @@ -10,9 +9,6 @@ // ROOT #include "TClass.h" -#include "TInterpreter.h" -#include "TMethod.h" - #include "TTree.h" #include "TBranch.h" #include "TBranchElement.h" @@ -23,9 +19,6 @@ #include "TStreamerElement.h" #include "TStreamerInfo.h" -#include "CustomPyTypes.h" -#include - using namespace CPyCppyy; static inline TClass *OP2TCLASS(CPPInstance *pyobj) From da96166d3eb35047d8c5b95b20c03778ae1f2b4b Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Thu, 21 Jun 2018 14:49:42 +0200 Subject: [PATCH 268/344] Remove unnecessary inline --- bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index 817a8eb781e3a..bd198741c763f 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -21,7 +21,7 @@ using namespace CPyCppyy; -static inline TClass *OP2TCLASS(CPPInstance *pyobj) +static TClass *OP2TCLASS(CPPInstance *pyobj) { return TClass::GetClass(Cppyy::GetFinalName(pyobj->ObjectIsA()).c_str()); } From 4b9752da858c11c23cad1ad4a4bd6268a359505f Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Thu, 21 Jun 2018 14:57:02 +0200 Subject: [PATCH 269/344] Follow ROOT naming convention --- bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index bd198741c763f..b345c5d1b9bf6 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -21,7 +21,7 @@ using namespace CPyCppyy; -static TClass *OP2TCLASS(CPPInstance *pyobj) +static TClass *GetClass(CPPInstance *pyobj) { return TClass::GetClass(Cppyy::GetFinalName(pyobj->ObjectIsA()).c_str()); } @@ -34,7 +34,7 @@ PyObject *GetAttr(CPPInstance *self, PyObject *pyname) return 0; // get hold of actual tree - TTree *tree = (TTree *)OP2TCLASS(self)->DynamicCast(TTree::Class(), self->GetObject()); + TTree *tree = (TTree *)GetClass(self)->DynamicCast(TTree::Class(), self->GetObject()); if (!tree) { PyErr_SetString(PyExc_ReferenceError, "attempt to access a null-pointer"); From da340c68e04a2f3c3db7fea15d5124e3daf3f991 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Thu, 21 Jun 2018 15:43:52 +0200 Subject: [PATCH 270/344] Const-correctness fixes --- bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index b345c5d1b9bf6..63517352ce3ed 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -21,13 +21,13 @@ using namespace CPyCppyy; -static TClass *GetClass(CPPInstance *pyobj) +static TClass *GetClass(const CPPInstance *pyobj) { return TClass::GetClass(Cppyy::GetFinalName(pyobj->ObjectIsA()).c_str()); } // Allow access to branches/leaves as if they were data members -PyObject *GetAttr(CPPInstance *self, PyObject *pyname) +PyObject *GetAttr(const CPPInstance *self, PyObject *pyname) { const char *name1 = CPyCppyy_PyUnicode_AsString(pyname); if (!name1) From 15c5918c814c5f3a7890e5c9bdbe474d4db7ba8c Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Thu, 21 Jun 2018 15:46:04 +0200 Subject: [PATCH 271/344] Give more meaningful name to variable --- bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index 63517352ce3ed..6874fe9bea9a5 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -29,8 +29,8 @@ static TClass *GetClass(const CPPInstance *pyobj) // Allow access to branches/leaves as if they were data members PyObject *GetAttr(const CPPInstance *self, PyObject *pyname) { - const char *name1 = CPyCppyy_PyUnicode_AsString(pyname); - if (!name1) + const char *name_possibly_alias = CPyCppyy_PyUnicode_AsString(pyname); + if (!name_possibly_alias) return 0; // get hold of actual tree @@ -42,9 +42,9 @@ PyObject *GetAttr(const CPPInstance *self, PyObject *pyname) } // deal with possible aliasing - const char *name = tree->GetAlias(name1); + const char *name = tree->GetAlias(name_possibly_alias); if (!name) - name = name1; + name = name_possibly_alias; // search for branch first (typical for objects) TBranch *branch = tree->GetBranch(name); From 2a0e918f6ce4156ef01affa8fce7b2d0b63075ce Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 22 Jun 2018 12:09:29 +0200 Subject: [PATCH 272/344] Refactor code in implementation of TTree __getattr__ --- .../PyROOT/src/TTreePyz.cxx | 159 +++++++++++------- 1 file changed, 94 insertions(+), 65 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index 6874fe9bea9a5..500545a8596a6 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -26,6 +26,91 @@ static TClass *GetClass(const CPPInstance *pyobj) return TClass::GetClass(Cppyy::GetFinalName(pyobj->ObjectIsA()).c_str()); } +static TBranch *SearchForBranch(TTree *tree, const char *name) +{ + TBranch *branch = tree->GetBranch(name); + if (!branch) { + // for benefit of naming of sub-branches, the actual name may have a trailing '.' + branch = tree->GetBranch((std::string(name) + '.').c_str()); + } + return branch; +} + +static TLeaf *SearchForLeaf(TTree *tree, const char *name, TBranch *branch) +{ + TLeaf *leaf = tree->GetLeaf(name); + if (branch && !leaf) { + leaf = branch->GetLeaf(name); + if (!leaf) { + TObjArray *leaves = branch->GetListOfLeaves(); + if (leaves->GetSize() && (leaves->First() == leaves->Last())) { + // i.e., if unambiguously only this one + leaf = (TLeaf *)leaves->At(0); + } + } + } + return leaf; +} + +static PyObject *BindBranchToProxy(TTree *tree, const char *name, TBranch *branch) +{ + // for partial return of a split object + if (branch->InheritsFrom(TBranchElement::Class())) { + TBranchElement *be = (TBranchElement *)branch; + if (be->GetCurrentClass() && (be->GetCurrentClass() != be->GetTargetClass()) && (0 <= be->GetID())) { + Long_t offset = ((TStreamerElement *)be->GetInfo()->GetElements()->At(be->GetID()))->GetOffset(); + return BindCppObjectNoCast(be->GetObject() + offset, Cppyy::GetScope(be->GetCurrentClass()->GetName())); + } + } + + // for return of a full object + if (branch->IsA() == TBranchElement::Class() || branch->IsA() == TBranchObject::Class()) { + TClass *klass = TClass::GetClass(branch->GetClassName()); + if (klass && branch->GetAddress()) + return BindCppObjectNoCast(*(void **)branch->GetAddress(), Cppyy::GetScope(branch->GetClassName())); + + // try leaf, otherwise indicate failure by returning a typed null-object + TObjArray *leaves = branch->GetListOfLeaves(); + if (klass && !tree->GetLeaf(name) && !(leaves->GetSize() && (leaves->First() == leaves->Last()))) + return BindCppObjectNoCast(nullptr, Cppyy::GetScope(branch->GetClassName())); + } + + return nullptr; +} + +static PyObject *WrapLeaf(TLeaf *leaf) +{ + if (1 < leaf->GetLenStatic() || leaf->GetLeafCount()) { + // array types + std::string typeName = leaf->GetTypeName(); + Converter *pcnv = CreateConverter(typeName + '*', leaf->GetNdata()); + + void *address = 0; + if (leaf->GetBranch()) + address = (void *)leaf->GetBranch()->GetAddress(); + if (!address) + address = (void *)leaf->GetValuePointer(); + + PyObject *value = pcnv->FromMemory(&address); + delete pcnv; + + return value; + } else if (leaf->GetValuePointer()) { + // value types + Converter *pcnv = CreateConverter(leaf->GetTypeName()); + PyObject *value = 0; + if (leaf->IsA() == TLeafElement::Class() || leaf->IsA() == TLeafObject::Class()) + value = pcnv->FromMemory((void *)*(void **)leaf->GetValuePointer()); + else + value = pcnv->FromMemory((void *)leaf->GetValuePointer()); + delete pcnv; + + return value; + } + + return nullptr; +} + // Allow access to branches/leaves as if they were data members PyObject *GetAttr(const CPPInstance *self, PyObject *pyname) { @@ -47,79 +132,23 @@ PyObject *GetAttr(const CPPInstance *self, PyObject *pyname) name = name_possibly_alias; // search for branch first (typical for objects) - TBranch *branch = tree->GetBranch(name); - if (!branch) { - // for benefit of naming of sub-branches, the actual name may have a trailing '.' - branch = tree->GetBranch((std::string(name) + '.').c_str()); - } + TBranch *branch = SearchForBranch(tree, name); if (branch) { // found a branched object, wrap its address for the object it represents - - // for partial return of a split object - if (branch->InheritsFrom(TBranchElement::Class())) { - TBranchElement *be = (TBranchElement *)branch; - if (be->GetCurrentClass() && (be->GetCurrentClass() != be->GetTargetClass()) && (0 <= be->GetID())) { - Long_t offset = ((TStreamerElement *)be->GetInfo()->GetElements()->At(be->GetID()))->GetOffset(); - return BindCppObjectNoCast(be->GetObject() + offset, Cppyy::GetScope(be->GetCurrentClass()->GetName())); - } - } - - // for return of a full object - if (branch->IsA() == TBranchElement::Class() || branch->IsA() == TBranchObject::Class()) { - TClass *klass = TClass::GetClass(branch->GetClassName()); - if (klass && branch->GetAddress()) - return BindCppObjectNoCast(*(void **)branch->GetAddress(), Cppyy::GetScope(branch->GetClassName())); - - // try leaf, otherwise indicate failure by returning a typed null-object - TObjArray *leaves = branch->GetListOfLeaves(); - if (klass && !tree->GetLeaf(name) && !(leaves->GetSize() && (leaves->First() == leaves->Last()))) - return BindCppObjectNoCast(NULL, Cppyy::GetScope(branch->GetClassName())); - } + auto proxy = BindBranchToProxy(tree, name, branch); + if (proxy != nullptr) + return proxy; } // if not, try leaf - TLeaf *leaf = tree->GetLeaf(name); - if (branch && !leaf) { - leaf = branch->GetLeaf(name); - if (!leaf) { - TObjArray *leaves = branch->GetListOfLeaves(); - if (leaves->GetSize() && (leaves->First() == leaves->Last())) { - // i.e., if unambiguously only this one - leaf = (TLeaf *)leaves->At(0); - } - } - } + TLeaf *leaf = SearchForLeaf(tree, name, branch); if (leaf) { - // found a leaf, extract value and wrap - if (1 < leaf->GetLenStatic() || leaf->GetLeafCount()) { - // array types - std::string typeName = leaf->GetTypeName(); - Converter *pcnv = CreateConverter(typeName + '*', leaf->GetNdata()); - - void *address = 0; - if (leaf->GetBranch()) - address = (void *)leaf->GetBranch()->GetAddress(); - if (!address) - address = (void *)leaf->GetValuePointer(); - - PyObject *value = pcnv->FromMemory(&address); - delete pcnv; - - return value; - } else if (leaf->GetValuePointer()) { - // value types - Converter *pcnv = CreateConverter(leaf->GetTypeName()); - PyObject *value = 0; - if (leaf->IsA() == TLeafElement::Class() || leaf->IsA() == TLeafObject::Class()) - value = pcnv->FromMemory((void *)*(void **)leaf->GetValuePointer()); - else - value = pcnv->FromMemory((void *)leaf->GetValuePointer()); - delete pcnv; - - return value; - } + // found a leaf, extract value and wrap with a Python object according to its type + auto wrapper = WrapLeaf(leaf); + if (wrapper != nullptr) + return wrapper; } // confused From 724ee4f96a1c7658d7ee2b4b9e58baebfc8168c2 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 22 Jun 2018 13:16:54 +0200 Subject: [PATCH 273/344] Document the TTree pythonization function --- .../pyroot_experimental/PyROOT/src/TTreePyz.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx index 500545a8596a6..19303a9674071 100644 --- a/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx +++ b/bindings/pyroot_experimental/PyROOT/src/TTreePyz.cxx @@ -156,8 +156,18 @@ PyObject *GetAttr(const CPPInstance *self, PyObject *pyname) return 0; } -// Public function -PyObject *PyROOT::PythonizeTTree(PyObject *, PyObject *args) +//////////////////////////////////////////////////////////////////////////// +/// \brief Add pythonizations to the TTree class. +/// \param[in] self Always null, since this is a module function. +/// \param[in] args Pointer to a Python tuple object containing the arguments +/// received from Python. +/// +/// Inject new behaviour into the TTree class so that it can be used from +/// Python in a simpler or more pythonic way. +/// +/// This function adds the following pythonizations: +/// - Allow access to branches/leaves as if they were data members (e.g. mytree.branch) +PyObject *PyROOT::PythonizeTTree(PyObject */* self */, PyObject *args) { PyObject *pyclass = PyTuple_GetItem(args, 0); Utility::AddToClass(pyclass, "__getattr__", (PyCFunction)GetAttr, METH_O); From 94882adc790cf0582e6dfbd6c67b658082f2e41d Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 22 Jun 2018 13:35:21 +0200 Subject: [PATCH 274/344] Delete patches: to be contributed upstream to Cppyy --- .../cling/patches/dep_template.diff | 59 ------ .../cling/patches/faux_typedef.diff | 16 -- .../cling/patches/metacling.diff | 101 ---------- .../cling/patches/no_long64_t.diff | 37 ---- .../cppyy-backend/cling/patches/scanner.diff | 16 -- .../cling/patches/scanner_2.diff | 16 -- .../cppyy-backend/cling/patches/sfinae.diff | 14 -- .../cling/patches/template_fwd.diff | 39 ---- .../cling/patches/using_decls.diff | 184 ------------------ 9 files changed, 482 deletions(-) delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff delete mode 100644 bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff deleted file mode 100644 index d3a2ddb875934..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/dep_template.diff +++ /dev/null @@ -1,59 +0,0 @@ -diff --git a/src/core/dictgen/src/rootcling_impl.cxx b/src/core/dictgen/src/rootcling_impl.cxx -index 90b0dbed10..f6d5a13ee1 100644 ---- a/src/core/dictgen/src/rootcling_impl.cxx -+++ b/src/core/dictgen/src/rootcling_impl.cxx -@@ -3061,6 +3061,7 @@ int GenerateFullDict(std::ostream &dictStream, - EmitStreamerInfo(nsName.c_str()); - } - -+ RScanner::ClassColl_t rejects; - for (auto const & selClass : scan.fSelectedClasses) { - if (!selClass.GetRecordDecl()->isCompleteDefinition()) { - ROOT::TMetaUtils::Error(0, "A dictionary has been requested for %s but there is no declaration!\n", ROOT::TMetaUtils::GetQualifiedName(selClass).c_str()); -@@ -3082,6 +3083,21 @@ int GenerateFullDict(std::ostream &dictStream, - const clang::CXXRecordDecl *CRD = llvm::dyn_cast(selClass.GetRecordDecl()); - - if (CRD) { -+ // Workaround: we check for incomplete bases here and reject those class -+ // definitions if need be. Otherwise when this is detected down stream, some -+ // dictionary code will already have been written -+ bool basesOK = true; -+ for (auto iter = CRD->bases_begin(), end = CRD->bases_end(); iter != end; ++iter) { -+ if (!iter->getType()->getAsCXXRecordDecl()) { -+ basesOK = false; -+ break; -+ } -+ } -+ if (!basesOK) { -+ rejects.push_back(selClass); -+ continue; -+ } -+ - ROOT::TMetaUtils::Info(0, "Generating code for class %s\n", selClass.GetNormalizedName()); - if (TMetaUtils::IsStdClass(*CRD) && 0 != TClassEdit::STLKind(CRD->getName().str() /* unqualified name without template arguement */)) { - // Register the collections -@@ -3094,6 +3110,12 @@ int GenerateFullDict(std::ostream &dictStream, - } - } - -+ // Now (temporarily; see end of this function) remove the rejects -+ for (auto& rej : rejects) { -+ auto pos = std::find(scan.fSelectedClasses.begin(), scan.fSelectedClasses.end(), rej); -+ scan.fSelectedClasses.erase(pos); -+ } -+ - // - // Write all TBuffer &operator>>(...), Class_Name(), Dictionary(), etc. - // first to allow template specialisation to occur before template -@@ -3153,6 +3175,11 @@ int GenerateFullDict(std::ostream &dictStream, - if (finRetCode != 0) return finRetCode; - } - -+ // Re-insert rejects, so that headers etc. are still added -+ for (auto& rej : rejects) { -+ scan.fSelectedClasses.push_back(rej); -+ } -+ - return 0; - } - diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff deleted file mode 100644 index 1b309d980d15c..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/faux_typedef.diff +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/src/io/rootpcm/src/rootclingIO.cxx b/src/io/rootpcm/src/rootclingIO.cxx -index e725d2d5c3..257ee0d3ce 100644 ---- a/src/io/rootpcm/src/rootclingIO.cxx -+++ b/src/io/rootpcm/src/rootclingIO.cxx -@@ -202,8 +202,9 @@ bool CloseStreamerInfoROOTFile(bool writeEmptyRootPCM) - for (const auto & dtname : gTypedefsToStore) { - TDataType *dt = (TDataType *)gROOT->GetListOfTypes()->FindObject(dtname.c_str()); - if (!dt) { -- Error("CloseStreamerInfoROOTFile", "Cannot find typedef %s.", dtname.c_str()); -- return false; -+ //Error("CloseStreamerInfoROOTFile", "Cannot find typedef %s.", dtname.c_str()); -+ //return false; -+ continue; // mostly harmless, so skip instead of bailing out - } - if (dt->GetType() == -1) { - dt->Property(); // Force initialization of the bits and property fields. diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff deleted file mode 100644 index 7c3ee6ca0e7ef..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/metacling.diff +++ /dev/null @@ -1,101 +0,0 @@ -diff --git a/src/core/metacling/src/TClingCallFunc.cxx b/src/core/metacling/src/TClingCallFunc.cxx -index dd23548f31..14bb306ab5 100644 ---- a/src/core/metacling/src/TClingCallFunc.cxx -+++ b/src/core/metacling/src/TClingCallFunc.cxx -@@ -271,7 +271,7 @@ void *TClingCallFunc::compile_wrapper(const string &wrapper_name, const string & - } - - void TClingCallFunc::collect_type_info(QualType &QT, ostringstream &typedefbuf, std::ostringstream &callbuf, -- string &type_name, bool &isReference, bool &isPointer, int indent_level, -+ string &type_name, int &isReference, bool &isPointer, int indent_level, - bool forArgument) - { - // -@@ -280,7 +280,7 @@ void TClingCallFunc::collect_type_info(QualType &QT, ostringstream &typedefbuf, - // - const FunctionDecl *FD = GetDecl(); - PrintingPolicy Policy(FD->getASTContext().getPrintingPolicy()); -- isReference = false; -+ isReference = 0; - if (QT->isRecordType() && forArgument) { - ROOT::TMetaUtils::GetNormalizedName(type_name, QT, *fInterp, fNormCtxt); - return; -@@ -319,7 +319,8 @@ void TClingCallFunc::collect_type_info(QualType &QT, ostringstream &typedefbuf, - isPointer = true; - QT = cast(QT)->getPointeeType(); - } else if (QT->isReferenceType()) { -- isReference = true; -+ if (QT->isRValueReferenceType()) isReference = 2; -+ else isReference = 1; - QT = cast(QT)->getPointeeType(); - } - // Fall through for the array type to deal with reference/pointer ro array type. -@@ -358,7 +359,7 @@ void TClingCallFunc::make_narg_ctor(const unsigned N, ostringstream &typedefbuf, - QualType Ty = PVD->getType(); - QualType QT = Ty.getCanonicalType(); - string type_name; -- bool isReference = false; -+ int isReference = 0; - bool isPointer = false; - collect_type_info(QT, typedefbuf, callbuf, type_name, - isReference, isPointer, indent_level, true); -@@ -374,7 +375,8 @@ void TClingCallFunc::make_narg_ctor(const unsigned N, ostringstream &typedefbuf, - } - } - if (isReference) { -- callbuf << "(" << type_name.c_str() << "&)*(" << type_name.c_str() << "*)args[" -+ callbuf << "(" << type_name.c_str() << -+ (isReference == 1 ? "&" : "&&") << ")*(" << type_name.c_str() << "*)args[" - << i << "]"; - } else if (isPointer) { - callbuf << "*(" << type_name.c_str() << "**)args[" -@@ -470,7 +472,7 @@ void TClingCallFunc::make_narg_call(const std::string &return_type, const unsign - QualType Ty = PVD->getType(); - QualType QT = Ty.getCanonicalType(); - string type_name; -- bool isReference = false; -+ int isReference = false; - bool isPointer = false; - collect_type_info(QT, typedefbuf, callbuf, type_name, isReference, isPointer, indent_level, true); - -@@ -487,7 +489,8 @@ void TClingCallFunc::make_narg_call(const std::string &return_type, const unsign - } - - if (isReference) { -- callbuf << "(" << type_name.c_str() << "&)*(" << type_name.c_str() << "*)args[" -+ callbuf << "(" << type_name.c_str() << -+ (isReference == 1 ? "&" : "&&") << ")*(" << type_name.c_str() << "*)args[" - << i << "]"; - } else if (isPointer) { - callbuf << "*(" << type_name.c_str() << "**)args[" -@@ -997,7 +1000,7 @@ void TClingCallFunc::make_narg_call_with_return(const unsigned N, const string & - } - - string type_name; -- bool isReference = false; -+ int isReference = false; - bool isPointer = false; - - buf << "if (ret) {\n"; -@@ -1020,7 +1023,7 @@ void TClingCallFunc::make_narg_call_with_return(const unsigned N, const string & - callbuf << "(" << type_name.c_str(); - if (isReference) { - callbuf << "*) (&"; -- type_name += "&"; -+ type_name += (isReference == 1 ? "&" : "&&"); - } else if (isPointer) { - callbuf << "*) ("; - type_name += "*"; -diff --git a/src/core/metacling/src/TClingCallFunc.h b/src/core/metacling/src/TClingCallFunc.h -index 3a65031b09..3b907e4fff 100644 ---- a/src/core/metacling/src/TClingCallFunc.h -+++ b/src/core/metacling/src/TClingCallFunc.h -@@ -85,7 +85,7 @@ private: - - void collect_type_info(clang::QualType& QT, std::ostringstream& typedefbuf, - std::ostringstream& callbuf, std::string& type_name, -- bool& isReference, bool& isPointer, int indent_level, -+ int& isReference, bool& isPointer, int indent_level, - bool forArgument); - - void make_narg_call(const std::string &return_type, const unsigned N, std::ostringstream &typedefbuf, diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff deleted file mode 100644 index 665f4b0371932..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/no_long64_t.diff +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/src/core/dictgen/src/rootcling_impl.cxx b/src/core/dictgen/src/rootcling_impl.cxx -index 90b0dbed10..fefdfc49a5 100644 ---- a/src/core/dictgen/src/rootcling_impl.cxx -+++ b/src/core/dictgen/src/rootcling_impl.cxx -@@ -2872,11 +2872,14 @@ int ExtractClassesListAndDeclLines(RScanner &scan, - !llvm::isa(rDecl) && - classesSet.insert(outerMostClassName).second && - outerMostClassesSet.insert(outerMostClassName).second) { -- classesListForRootmap.push_back(outerMostClassName); -+ if (outerMostClassName.find("Long64_t") == std::string::npos) -+ classesListForRootmap.push_back(outerMostClassName); - } else { -- classesListForRootmap.push_back(normalizedName); -+ if (normalizedName.find("Long64_t") == std::string::npos) -+ classesListForRootmap.push_back(normalizedName); - if (reqName != nullptr && 0 != strcmp(reqName, "") && reqName != normalizedName) { -- classesListForRootmap.push_back(reqName); -+ if (!strstr(reqName, "Long64_t")) -+ classesListForRootmap.push_back(reqName); - } - - // Also register typeinfo::name(), unless we have pseudo-strong typedefs: -@@ -2913,11 +2913,12 @@ int ExtractClassesListAndDeclLines(RScanner &scan, - std::string demangledName = demangledTIName + strlen(typeinfoNameFor); - #endif - // See the operations in TCling::AutoLoad(type_info) -- TClassEdit::TSplitType splitname( demangledName.c_str(), (TClassEdit::EModType)(TClassEdit::kLong64 | TClassEdit::kDropStd) ); -+ TClassEdit::TSplitType splitname( demangledName.c_str() ); - splitname.ShortType(demangledName, TClassEdit::kDropStlDefault | TClassEdit::kDropStd); - - if (demangledName != normalizedName && (!reqName || demangledName != reqName)) { -- classesListForRootmap.push_back(demangledName); -+ if (demangledName.find("Long64_t") == std::string::npos) -+ classesListForRootmap.push_back(demangledName); - } // if demangledName != other name - } else { - #ifdef WIN32 diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff deleted file mode 100644 index 36bfca97c6a6b..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner.diff +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/src/core/dictgen/src/Scanner.cxx b/src/core/dictgen/src/Scanner.cxx -index 3d5acac510..34124a40e1 100644 ---- a/src/core/dictgen/src/Scanner.cxx -+++ b/src/core/dictgen/src/Scanner.cxx -@@ -654,6 +654,11 @@ bool RScanner::TreatRecordDeclOrTypedefNameDecl(clang::TypeDecl* typeDecl) - return true; - } - -+ // private declarations lead to uncompilable code, so just ignore -+ if (recordDecl && (recordDecl->getAccess() == AS_private || recordDecl->getAccess() == AS_protected)) { -+ return true; -+ } -+ - // Never select the class templates themselves. - const clang::CXXRecordDecl *cxxdecl = llvm::dyn_cast(recordDecl); - if (cxxdecl && cxxdecl->getDescribedClassTemplate ()) { diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff deleted file mode 100644 index e339c9dff05d6..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/scanner_2.diff +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/src/core/dictgen/src/Scanner.cxx b/src/core/dictgen/src/Scanner.cxx -index 3d5acac510..9f639795f1 100644 ---- a/src/core/dictgen/src/Scanner.cxx -+++ b/src/core/dictgen/src/Scanner.cxx -@@ -659,6 +659,11 @@ bool RScanner::TreatRecordDeclOrTypedefNameDecl(clang::TypeDecl* typeDecl) - return true; - } - -+ // hidden decl can not be used interactively -+ if (recordDecl && (recordDecl->getVisibility() == HiddenVisibility)) { -+ return true; -+ } -+ - // Never select the class templates themselves. - const clang::CXXRecordDecl *cxxdecl = llvm::dyn_cast(recordDecl); - if (cxxdecl && cxxdecl->getDescribedClassTemplate ()) { diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff deleted file mode 100644 index c4cf2524c2b38..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/sfinae.diff +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/core/metacling/src/TClingCallFunc.cxx b/src/core/metacling/src/TClingCallFunc.cxx -index 92c96215c0..626f230d39 100644 ---- a/src/core/metacling/src/TClingCallFunc.cxx -+++ b/src/core/metacling/src/TClingCallFunc.cxx -@@ -409,7 +409,8 @@ void TClingCallFunc::make_narg_call(const std::string &return_type, const unsign - // we supply the object parameter. - // Therefore we only use it in cases where we know it works and set this variable - // to true when we do. -- bool ShouldCastFunction = !isa(FD) && N == FD->getNumParams(); -+ bool ShouldCastFunction = !isa(FD) && N == FD->getNumParams() \ -+ && !FD->isTemplateInstantiation(); - if (ShouldCastFunction) { - callbuf << "("; - callbuf << "("; diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff deleted file mode 100644 index f67a517e76b53..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/template_fwd.diff +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/src/core/dictgen/src/rootcling_impl.cxx b/src/core/dictgen/src/rootcling_impl.cxx -index 90b0dbed10..cc8a527c1c 100644 ---- a/src/core/dictgen/src/rootcling_impl.cxx -+++ b/src/core/dictgen/src/rootcling_impl.cxx -@@ -3678,8 +3678,32 @@ std::string GenerateFwdDeclString(const RScanner &scan, - selectedDecls.begin(), - [](const ROOT::TMetaUtils::AnnotatedRecordDecl& rcd){return rcd.GetRecordDecl();}); - -- for (auto* TD: scan.fSelectedTypedefs) -- selectedDecls.push_back(TD); -+ for (auto* TD: scan.fSelectedTypedefs) { -+ // for typedefs of template instantiations, forward declarations are not -+ // good enough: add full headers instead. -+ clang::QualType t = TD->getUnderlyingType(); -+ clang::CXXRecordDecl* decl = t->getAsCXXRecordDecl(); -+ if (decl && !decl->isInStdNamespace()) { // standard headers are precompiled -+ clang::Decl::Kind kind = decl->getKind(); -+ if (kind == clang::Decl::ClassTemplatePartialSpecialization -+ || kind == clang::Decl::ClassTemplateSpecialization) { -+ clang::SourceManager& s = decl->getASTContext().getSourceManager(); -+ if (!s.isInSystemHeader(decl->getLocation())) { // system hdrs are precompiled -+ clang::FileID fid = s.getFileID(decl->getLocation()); -+ clang::SourceLocation incloc = s.getIncludeLoc(fid); -+ const char* p = s.getCharacterData(incloc); -+ const char* q = p; -+ while (*q != '\n' && *q != '\0') ++q; -+ if (q-p) { -+ fwdDeclString += "#include "; -+ fwdDeclString += std::string(p, q-p+1); -+ continue; -+ } -+ } -+ } -+ } -+ selectedDecls.push_back(TD); -+ } - - // for (auto* VAR: scan.fSelectedVariables) - // selectedDecls.push_back(VAR); diff --git a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff b/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff deleted file mode 100644 index 77baa1aa81bfb..0000000000000 --- a/bindings/pyroot_experimental/cppyy/cppyy-backend/cling/patches/using_decls.diff +++ /dev/null @@ -1,184 +0,0 @@ -diff --git a/src/core/metacling/src/TClingMethodInfo.cxx b/src/core/metacling/src/TClingMethodInfo.cxx -index 0dbf27a298..bbfb6aa962 100644 ---- a/src/core/metacling/src/TClingMethodInfo.cxx -+++ b/src/core/metacling/src/TClingMethodInfo.cxx -@@ -82,6 +82,42 @@ private: - Iterator fEnd; - }; - -+class TClingMethodInfo::UsingIterator -+{ -+public: -+ typedef clang::UsingDecl::shadow_iterator Iterator; -+ -+ UsingIterator(cling::Interpreter* interp, Iterator begin, Iterator end) : fInterp(interp), fIter(begin), fEnd(end) {} -+ explicit UsingIterator(cling::Interpreter* interp, clang::UsingDecl *decl) : -+ fInterp(interp), fIter(decl->shadow_begin()), fEnd(decl->shadow_end()) {} -+ -+ FunctionDecl *operator* () const { -+ clang::ConstructorUsingShadowDecl* shadow_ctor = llvm::dyn_cast(*fIter); -+ if (shadow_ctor) { -+ clang::CXXConstructorDecl* base_ctor = llvm::dyn_cast(shadow_ctor->getTargetDecl()); -+ if (base_ctor) { -+ if (base_ctor->isImplicit()) return nullptr; // skip as Cling will generate these anyway -+ return fInterp->getSema().findInheritingConstructor(base_ctor->getLocStart(), base_ctor, shadow_ctor); -+ } -+ } -+ return llvm::dyn_cast((*fIter)->getTargetDecl()); } -+ FunctionDecl *operator-> () const { return this->operator*(); } -+ UsingIterator & operator++ () { ++fIter; return *this; } -+ UsingIterator operator++ (int) { -+ UsingIterator tmp(fInterp, fIter,fEnd); -+ ++(*this); -+ return tmp; -+ } -+ bool operator!() { return fIter == fEnd; } -+ operator bool() { return fIter != fEnd; } -+ -+private: -+ cling::Interpreter* fInterp; -+ Iterator fIter; -+ Iterator fEnd; -+}; -+ -+ - TClingMethodInfo::TClingMethodInfo(const TClingMethodInfo &rhs) : - fInterp(rhs.fInterp), - fContexts(rhs.fContexts), -@@ -90,20 +126,27 @@ TClingMethodInfo::TClingMethodInfo(const TClingMethodInfo &rhs) : - fIter(rhs.fIter), - fTitle(rhs.fTitle), - fTemplateSpecIter(nullptr), -- fSingleDecl(rhs.fSingleDecl) -+ fSingleDecl(rhs.fSingleDecl), -+ fUsingIter(nullptr) - { - if (rhs.fTemplateSpecIter) { - // The SpecIterator query the decl. - R__LOCKGUARD(gInterpreterMutex); - fTemplateSpecIter = new SpecIterator(*rhs.fTemplateSpecIter); - } -+ -+ if (rhs.fUsingIter) { -+ // Internal loop over using shadow decls active -+ R__LOCKGUARD(gInterpreterMutex); -+ fUsingIter = new UsingIterator(*rhs.fUsingIter); -+ } - } - - - TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, - TClingClassInfo *ci) - : fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(""), -- fTemplateSpecIter(0), fSingleDecl(0) -+ fTemplateSpecIter(0), fSingleDecl(0), fUsingIter(0) - { - R__LOCKGUARD(gInterpreterMutex); - -@@ -132,7 +175,7 @@ TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, - TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, - const clang::FunctionDecl *FD) - : fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(""), -- fTemplateSpecIter(0), fSingleDecl(FD) -+ fTemplateSpecIter(0), fSingleDecl(FD), fUsingIter(0) - { - - } -@@ -140,6 +183,7 @@ TClingMethodInfo::TClingMethodInfo(cling::Interpreter *interp, - TClingMethodInfo::~TClingMethodInfo() - { - delete fTemplateSpecIter; -+ delete fUsingIter; - } - - TDictionary::DeclId_t TClingMethodInfo::GetDeclId() const -@@ -162,6 +206,9 @@ const clang::FunctionDecl *TClingMethodInfo::GetMethodDecl() const - if (fTemplateSpecIter) - return *(*fTemplateSpecIter); - -+ if (fUsingIter) -+ return *(*fUsingIter); -+ - return llvm::dyn_cast(*fIter); - } - -@@ -204,6 +251,8 @@ void TClingMethodInfo::Init(const clang::FunctionDecl *decl) - delete fTemplateSpecIter; - fTemplateSpecIter = 0; - fSingleDecl = decl; -+ delete fUsingIter; -+ fUsingIter = 0; - } - - void *TClingMethodInfo::InterfaceMethod(const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const -@@ -224,6 +273,10 @@ bool TClingMethodInfo::IsValidSlow() const - R__LOCKGUARD(gInterpreterMutex); - cling::Interpreter::PushTransactionRAII RAII(fInterp); - return *(*fTemplateSpecIter); -+ } else if (fUsingIter) { -+ R__LOCKGUARD(gInterpreterMutex); -+ cling::Interpreter::PushTransactionRAII RAII(fInterp); -+ return *(*fUsingIter); - } - return *fIter; - } -@@ -397,6 +450,13 @@ int TClingMethodInfo::InternalNext() - } else { - return 1; - } -+ } else if (fUsingIter) { -+ while (++(*fUsingIter)) { -+ if (*(*fUsingIter)) -+ return 1; -+ } -+ delete fUsingIter; fUsingIter = 0; -+ ++fIter; - } else { - ++fIter; - } -@@ -444,6 +504,17 @@ int TClingMethodInfo::InternalNext() - } - } - -+ clang::UsingDecl* udecl = -+ llvm::dyn_cast(*fIter); -+ -+ if ( udecl ) { -+ // A UsingDecl potentially brings in a bunch of functions, so -+ // start an inner loop to catch them all -+ delete fUsingIter; -+ fUsingIter = new UsingIterator(fInterp, udecl); -+ return 1; -+ } -+ - // Return if this decl is a function or method. - if (llvm::isa(*fIter)) { - // Iterator is now valid. -diff --git a/src/core/metacling/src/TClingMethodInfo.h b/src/core/metacling/src/TClingMethodInfo.h -index 8b7f50bf1c..7e3156def0 100644 ---- a/src/core/metacling/src/TClingMethodInfo.h -+++ b/src/core/metacling/src/TClingMethodInfo.h -@@ -52,6 +52,7 @@ class TClingTypeInfo; - class TClingMethodInfo { - private: - class SpecIterator; -+ class UsingIterator; - - cling::Interpreter *fInterp; // Cling interpreter, we do *not* own. - llvm::SmallVector fContexts; // Set of DeclContext that we will iterate over. -@@ -61,13 +62,14 @@ private: - std::string fTitle; // The meta info for the method. - SpecIterator *fTemplateSpecIter; // Iter over template specialization. [We own] - const clang::FunctionDecl *fSingleDecl; // The single member -+ UsingIterator *fUsingIter; // for internal loop over using functions - - bool IsValidSlow() const; - - public: - explicit TClingMethodInfo(cling::Interpreter *interp) - : fInterp(interp), fFirstTime(true), fContextIdx(0U), fTitle(""), -- fTemplateSpecIter(0), fSingleDecl(0) {} -+ fTemplateSpecIter(0), fSingleDecl(0), fUsingIter(0) {} - - TClingMethodInfo(const TClingMethodInfo&); - From c33dc24beac40987bad0cd3a083727a49857166b Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 22 Jun 2018 14:05:41 +0200 Subject: [PATCH 275/344] Use a decorator for pythonizor functions As suggested by Stefan Wunsch, decorators provide a nicer syntax to mark that a function implements some pythonization. --- .../pyroot_experimental/PyROOT/python/ROOT/__init__.py | 8 +++++--- .../PyROOT/python/ROOT/pythonization/_ttree.py | 10 ++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py index 960f2a8ee69e3..e8dfed1355b6d 100644 --- a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py @@ -5,12 +5,14 @@ import pkgutil import importlib -# Add pythonizations +# Pythonizor decorator to be used in pythonization modules +def pythonization(fn): + cppyy.py.add_pythonization(fn) + +# Trigger the addition of the pythonizations for _, module_name, _ in pkgutil.walk_packages(pyz.__path__): module = importlib.import_module(pyz.__name__ + '.' + module_name) - cppyy.py.add_pythonization(module.get_pythonizor()) # Redirect ROOT to cppyy.gbl import sys sys.modules['ROOT'] = cppyy.gbl - diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py index a5fa41171c5e3..3b3d3e1ea59c3 100644 --- a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py @@ -1,6 +1,8 @@ from libROOTPython import PythonizeTTree +from ROOT import pythonization + # TTree iterator def _TTree__iter__(self): i = 0 @@ -14,7 +16,8 @@ def _TTree__iter__(self): raise RuntimeError( "TTree I/O error" ) # Pythonizor function -def ttree_pythonizor(klass, name): +@pythonization +def pythonize_ttree(klass, name): if name == 'TTree': # Pythonic iterator klass.__iter__ = _TTree__iter__ @@ -24,8 +27,3 @@ def ttree_pythonizor(klass, name): PythonizeTTree(klass) return True - - -def get_pythonizor(): - return ttree_pythonizor - From 1f3d5c707fd7bdf30f4846ac196a59d7431c801d Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 22 Jun 2018 14:18:17 +0200 Subject: [PATCH 276/344] Follow PEP 8 style guide for indentation --- .../PyROOT/python/ROOT/__init__.py | 4 +-- .../python/ROOT/pythonization/_ttree.py | 30 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py index e8dfed1355b6d..1cc1ba881cd97 100644 --- a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py @@ -7,11 +7,11 @@ # Pythonizor decorator to be used in pythonization modules def pythonization(fn): - cppyy.py.add_pythonization(fn) + cppyy.py.add_pythonization(fn) # Trigger the addition of the pythonizations for _, module_name, _ in pkgutil.walk_packages(pyz.__path__): - module = importlib.import_module(pyz.__name__ + '.' + module_name) + module = importlib.import_module(pyz.__name__ + '.' + module_name) # Redirect ROOT to cppyy.gbl import sys diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py index 3b3d3e1ea59c3..d70596ff4c335 100644 --- a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py @@ -5,25 +5,25 @@ # TTree iterator def _TTree__iter__(self): - i = 0 - bytes_read = self.GetEntry(i) - while 0 < bytes_read: - yield self - i += 1 - bytes_read = self.GetEntry(i) + i = 0 + bytes_read = self.GetEntry(i) + while 0 < bytes_read: + yield self + i += 1 + bytes_read = self.GetEntry(i) - if bytes_read == -1: - raise RuntimeError( "TTree I/O error" ) + if bytes_read == -1: + raise RuntimeError("TTree I/O error") # Pythonizor function @pythonization def pythonize_ttree(klass, name): - if name == 'TTree': - # Pythonic iterator - klass.__iter__ = _TTree__iter__ + if name == 'TTree': + # Pythonic iterator + klass.__iter__ = _TTree__iter__ - # C++ pythonizations - # - tree.branch syntax - PythonizeTTree(klass) + # C++ pythonizations + # - tree.branch syntax + PythonizeTTree(klass) - return True + return True From 942d83b770e27a6ea21ca3581913afb6308be0bf Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra Date: Fri, 22 Jun 2018 14:36:00 +0200 Subject: [PATCH 277/344] Add documentation for pythonization decorator --- .../PyROOT/python/ROOT/__init__.py | 11 ++++++++++- .../PyROOT/python/ROOT/pythonization/_ttree.py | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py index 1cc1ba881cd97..31a05455a783f 100644 --- a/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/__init__.py @@ -5,8 +5,17 @@ import pkgutil import importlib -# Pythonizor decorator to be used in pythonization modules def pythonization(fn): + """ + Pythonizor decorator to be used in pythonization modules. + + Parameters + ---------- + fn : function + Function that implements some pythonization. + The function must accept two parameters: the class + to be pythonized and the name of that class. + """ cppyy.py.add_pythonization(fn) # Trigger the addition of the pythonizations diff --git a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py index d70596ff4c335..5853e4edf1b0e 100644 --- a/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py +++ b/bindings/pyroot_experimental/PyROOT/python/ROOT/pythonization/_ttree.py @@ -18,6 +18,10 @@ def _TTree__iter__(self): # Pythonizor function @pythonization def pythonize_ttree(klass, name): + # Parameters: + # klass: class to be pythonized + # name: string containing the name of the class + if name == 'TTree': # Pythonic iterator klass.__iter__ = _TTree__iter__ From 825128adc3a8ba1b33f204f7484fad0c2fde8af6 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 08:15:55 +0200 Subject: [PATCH 278/344] CMake: error out on afs glite sapdb srp. --- cmake/modules/RootBuildOptions.cmake | 4 ---- cmake/modules/SearchInstalledSoftware.cmake | 5 ++--- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 538c58857b343..6f65a4031e7ce 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -61,7 +61,6 @@ endfunction() #-------------------------------------------------------------------------------------------------- ROOT_BUILD_OPTION(afdsmgrd OFF "Dataset manager for PROOF-based analysis facilities") -ROOT_BUILD_OPTION(afs OFF "AFS support, requires AFS libs and objects") ROOT_BUILD_OPTION(alien OFF "AliEn support, requires libgapiUI from ALICE") ROOT_BUILD_OPTION(asimage ON "Image processing support, requires libAfterImage") ROOT_BUILD_OPTION(arrow OFF "Apache Arrow in memory columnar storage support") @@ -118,7 +117,6 @@ ROOT_BUILD_OPTION(gdml ON "GDML writer and reader") ROOT_BUILD_OPTION(genvector ON "Build the new libGenVector library") ROOT_BUILD_OPTION(geocad OFF "ROOT-CAD Interface") ROOT_BUILD_OPTION(gfal ON "GFAL support, requires libgfal") -ROOT_BUILD_OPTION(glite OFF "gLite support, requires libglite-api-wrapper v.3 from GSI (https://subversion.gsi.de/trac/dgrid/wiki)") ROOT_BUILD_OPTION(globus OFF "Globus authentication support, requires Globus toolkit") ROOT_BUILD_OPTION(gnuinstall OFF "Perform installation following the GNU guidelines") ROOT_BUILD_OPTION(gsl_shared OFF "Enable linking against shared libraries for GSL (default no)") @@ -156,12 +154,10 @@ ROOT_BUILD_OPTION(roofit ON "Build the libRooFit advanced fitting package") ROOT_BUILD_OPTION(root7 OFF "Build the ROOT 7 interface prototype, requires >= cxx14") ROOT_BUILD_OPTION(rpath OFF "Set run-time library load path on executables and shared libraries (at installation area)") ROOT_BUILD_OPTION(runtime_cxxmodules OFF "Enable runtime support for C++ modules.") -ROOT_BUILD_OPTION(sapdb OFF "MaxDB/SapDB support, requires libsqlod and libsqlrte") ROOT_BUILD_OPTION(shadowpw OFF "Shadow password support") ROOT_BUILD_OPTION(shared ON "Use shared 3rd party libraries if possible") ROOT_BUILD_OPTION(soversion OFF "Set version number in sonames (recommended)") ROOT_BUILD_OPTION(sqlite ON "SQLite support, requires libsqlite3") -ROOT_BUILD_OPTION(srp OFF "SRP support, requires SRP source tree") ROOT_BUILD_OPTION(ssl ON "SSL encryption support, requires openssl") ROOT_BUILD_OPTION(table OFF "Build libTable contrib library") ROOT_BUILD_OPTION(tcmalloc OFF "Using the tcmalloc allocator") diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index edccad56eaa48..cdfb0be264df2 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1609,11 +1609,10 @@ if (testing) endif() -#---Report non implemented options--------------------------------------------------- +#---Report removed options--------------------------------------------------- foreach(opt afs glite sapdb srp) if(${opt}) - message(STATUS ">>> Option '${opt}' not implemented yet! Signal your urgency to pere.mato@cern.ch") - set(${opt} OFF CACHE BOOL "Disabled because not implemented yet (${${opt}_description})" FORCE) + message(FATAL_ERROR ">>> Option '${opt}' has been removed in ROOT v6.16.") endif() endforeach() From 52aeda2b43a9cf7697f3ad2ab4c7be84dc357a05 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 18 Jun 2018 21:33:30 +0200 Subject: [PATCH 279/344] [NFC] Typo in comment. --- cmake/modules/RootBuildOptions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 6f65a4031e7ce..f459de724f12d 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -56,7 +56,7 @@ endfunction() #-------------------------------------------------------------------------------------------------- -#---Full list of options with their descriptios and default values +#---Full list of options with their descriptions and default values # The default value can be changed as many times as we wish before calling ROOT_APPLY_OPTIONS() #-------------------------------------------------------------------------------------------------- From d51998691166379912eedbf5c279e97b7811b3b4 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 08:17:10 +0200 Subject: [PATCH 280/344] CMake: error out for chirp or ios; they are not CMake-d. --- cmake/modules/RootBuildOptions.cmake | 2 -- cmake/modules/SearchInstalledSoftware.cmake | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index f459de724f12d..592d032dce757 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -96,7 +96,6 @@ else() ROOT_BUILD_OPTION(ccache OFF "Enable ccache usage for speeding up builds") endif() ROOT_BUILD_OPTION(cefweb OFF "Chromium Embedded Framework web-based display") -ROOT_BUILD_OPTION(chirp OFF "Chirp support (Condor remote I/O), requires libchirp_client") ROOT_BUILD_OPTION(cling ON "Enable new CLING C++ interpreter") ROOT_BUILD_OPTION(cocoa OFF "Use native Cocoa/Quartz graphics backend (MacOS X only)") set(compression_default "lz4" CACHE STRING "ROOT compression algorithm used as a default, default option is lz4. Can be lz4, zlib, or lzma") @@ -223,7 +222,6 @@ endif() if(all) set(arrow_defvalue ON) set(bonjour_defvalue ON) - set(chirp_defvalue ON) set(dcache_defvalue ON) set(fitsio_defvalue ON) set(glite_defvalue ON) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index cdfb0be264df2..bba39e2c82b8b 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1610,7 +1610,7 @@ if (testing) endif() #---Report removed options--------------------------------------------------- -foreach(opt afs glite sapdb srp) +foreach(opt afs glite sapdb srp chirp ios) if(${opt}) message(FATAL_ERROR ">>> Option '${opt}' has been removed in ROOT v6.16.") endif() From 77b2ad29cd1ff7204cfc5b0218e8c0db22b96a5e Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 18 Jun 2018 21:36:02 +0200 Subject: [PATCH 281/344] Remove unmaintained and not buildable graph2d/ios. --- graf2d/ios/inc/IOSFillPatterns.h | 54 - graf2d/ios/inc/IOSGraphicUtils.h | 55 - graf2d/ios/inc/IOSLineStyles.h | 42 - graf2d/ios/inc/IOSMarkers.h | 42 - graf2d/ios/inc/IOSPad.h | 403 ---- graf2d/ios/inc/IOSPadStub.h | 112 - graf2d/ios/inc/IOSPainter.h | 142 -- graf2d/ios/inc/IOSResourceManagement.h | 187 -- graf2d/ios/inc/IOSSelectionMarkers.h | 18 - graf2d/ios/inc/IOSTextOperations.h | 98 - graf2d/ios/inc/TGIOS.h | 63 - graf2d/ios/src/IOSFillPatterns.cxx | 720 ------- graf2d/ios/src/IOSGraphicUtils.cxx | 92 - graf2d/ios/src/IOSLineStyles.cxx | 37 - graf2d/ios/src/IOSMarkers.cxx | 1037 ---------- graf2d/ios/src/IOSPad.cxx | 2386 ---------------------- graf2d/ios/src/IOSPadStub.cxx | 452 ---- graf2d/ios/src/IOSPainter.cxx | 651 ------ graf2d/ios/src/IOSResourceManagement.cxx | 62 - graf2d/ios/src/IOSSelectionMarkers.cxx | 36 - graf2d/ios/src/IOSTextOperations.cxx | 448 ---- graf2d/ios/src/TGIOS.cxx | 161 -- 22 files changed, 7298 deletions(-) delete mode 100644 graf2d/ios/inc/IOSFillPatterns.h delete mode 100644 graf2d/ios/inc/IOSGraphicUtils.h delete mode 100644 graf2d/ios/inc/IOSLineStyles.h delete mode 100644 graf2d/ios/inc/IOSMarkers.h delete mode 100644 graf2d/ios/inc/IOSPad.h delete mode 100644 graf2d/ios/inc/IOSPadStub.h delete mode 100644 graf2d/ios/inc/IOSPainter.h delete mode 100644 graf2d/ios/inc/IOSResourceManagement.h delete mode 100644 graf2d/ios/inc/IOSSelectionMarkers.h delete mode 100644 graf2d/ios/inc/IOSTextOperations.h delete mode 100644 graf2d/ios/inc/TGIOS.h delete mode 100644 graf2d/ios/src/IOSFillPatterns.cxx delete mode 100644 graf2d/ios/src/IOSGraphicUtils.cxx delete mode 100644 graf2d/ios/src/IOSLineStyles.cxx delete mode 100644 graf2d/ios/src/IOSMarkers.cxx delete mode 100644 graf2d/ios/src/IOSPad.cxx delete mode 100644 graf2d/ios/src/IOSPadStub.cxx delete mode 100644 graf2d/ios/src/IOSPainter.cxx delete mode 100644 graf2d/ios/src/IOSResourceManagement.cxx delete mode 100644 graf2d/ios/src/IOSSelectionMarkers.cxx delete mode 100644 graf2d/ios/src/IOSTextOperations.cxx delete mode 100644 graf2d/ios/src/TGIOS.cxx diff --git a/graf2d/ios/inc/IOSFillPatterns.h b/graf2d/ios/inc/IOSFillPatterns.h deleted file mode 100644 index 94bdffa90daa8..0000000000000 --- a/graf2d/ios/inc/IOSFillPatterns.h +++ /dev/null @@ -1,54 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSFillPatterns -#define ROOT_IOSFillPatterns - -////////////////////////////////////////////////////////////////////////// -// // -// FillPatterns // -// // -// Predefined fill styles (patterns). // -// // -////////////////////////////////////////////////////////////////////////// - - -#include - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -// -//Must be 25, now only 18. To be added. -// - -//TODO: remaining patterns are required. -enum { - kPredefinedFillPatterns = 18 -}; - -//Pattern generator function type. Parameter of type CGFloat * -//is an rgb tuple. Attention! rgb pointer should be valid while -//you are using pattern - it will be passed into pattern drawing callback -//funciton. -typedef CGPatternRef (*PatternGenerator_t)(CGFloat *); -//Array of pointers to functions, generating patterns. -extern PatternGenerator_t gPatternGenerators[kPredefinedFillPatterns]; - -extern const unsigned solidFillStyle; //1001 -extern const unsigned stippleBase; //3000 - -}//GraphicUtils -}//namespace iOS -}//namespace ROOT - -#endif diff --git a/graf2d/ios/inc/IOSGraphicUtils.h b/graf2d/ios/inc/IOSGraphicUtils.h deleted file mode 100644 index ccab8ce21f242..0000000000000 --- a/graf2d/ios/inc/IOSGraphicUtils.h +++ /dev/null @@ -1,55 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSGraphicUtils -#define ROOT_IOSGraphicUtils - -////////////////////////////////////////////////////////////////////////// -// // -// GraphicUtils // -// // -// Aux. functions and classes. // -// // -////////////////////////////////////////////////////////////////////////// - -#include "Rtypes.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -//Generic graphic utils. -void GetColorForIndex(Color_t colorIndex, Float_t &r, Float_t &g, Float_t &b); - - -//Encode object's ID (unsigned integer) as an RGB triplet. -class IDEncoder { -public: - IDEncoder(UInt_t radix, UInt_t channelSize); - - Bool_t IdToColor(UInt_t objId, Float_t *rgb) const; - UInt_t ColorToId(UInt_t r, UInt_t g, UInt_t b) const; - -private: - UInt_t FixValue(UInt_t val) const; - - const UInt_t fRadix; - const UInt_t fRadix2; - const UInt_t fChannelSize; - const UInt_t fStepSize; - const UInt_t fMaxID; -}; - -} //namespace GraphicUtils -} //namespace iOS -} //namespace ROOT - -#endif diff --git a/graf2d/ios/inc/IOSLineStyles.h b/graf2d/ios/inc/IOSLineStyles.h deleted file mode 100644 index ca06e69339fd9..0000000000000 --- a/graf2d/ios/inc/IOSLineStyles.h +++ /dev/null @@ -1,42 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 17/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSLineStyles -#define ROOT_IOSLineStyles - -////////////////////////////////////////////////////////////////////////// -// // -// Line styles. // -// // -// Predefined line styles. // -// // -////////////////////////////////////////////////////////////////////////// - -#include - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -/* -enum { - kFixedLineStyles = 10 -}; -*/ - -extern const unsigned linePatternLengths[10]; -extern const CGFloat dashLinePatterns[10][8]; - -} -} -} - -#endif diff --git a/graf2d/ios/inc/IOSMarkers.h b/graf2d/ios/inc/IOSMarkers.h deleted file mode 100644 index 3487d2395453f..0000000000000 --- a/graf2d/ios/inc/IOSMarkers.h +++ /dev/null @@ -1,42 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSMarkers -#define ROOT_IOSMarkers - -////////////////////////////////////////////////////////////////////////// -// // -// IOSMarkers // -// // -// Aux. functions to draw poly-markers. // -// // -////////////////////////////////////////////////////////////////////////// - -#include - -#include - -#include "Rtypes.h" - -#include "TPoint.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -void DrawPolyMarker(CGContextRef ctx, const std::vector &marker, Size_t markerSize, Style_t markerStyle); -void DrawPolyMarker(CGContextRef ctx, unsigned nPoints, const TPoint *marker, Size_t markerSize, Style_t markerStyle); - -} -} -} - -#endif diff --git a/graf2d/ios/inc/IOSPad.h b/graf2d/ios/inc/IOSPad.h deleted file mode 100644 index e6f00854b2963..0000000000000 --- a/graf2d/ios/inc/IOSPad.h +++ /dev/null @@ -1,403 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSPad -#define ROOT_IOSPad - -////////////////////////////////////////////////////////////////////////// -// // -// IOSPad // -// // -// This class is a pad for iOS. // -// I use this class instead of original TPad/TCanvas to // -// keep it as simple and clean as possible, and to be able // -// to extend this class for iOS only. // -// // -////////////////////////////////////////////////////////////////////////// - -#include -#include -#include - -#include - -#include "TList.h" - -#include "IOSTextOperations.h" - -#include "IOSPainter.h" - -#include "IOSPadStub.h" - -namespace ROOT { -namespace iOS { - -// TODO: class needs verification and clean-up. -// Some parts from original TPad (coordinate conversions/painting algorithms) -// were copy & pasted at the beginning, will be re-written and fixed. - -class Pad : public PadStub { -public: - // Pad status bits - enum EStatusBits { - kFraming = BIT(6), - kHori = BIT(9), - kClipFrame = BIT(10), - kPrintingPS = BIT(11), - kCannotMove = BIT(12), - kClearAfterCR = BIT(14) - }; - - void GetTextExtent(UInt_t &w, UInt_t &h, const char *text); - void SetContext(CGContextRef ctx); - - Pad(UInt_t w, UInt_t h); - ~Pad(); - - //Final-overriders for TVirtualPad class. - const char *GetName() const; - const char *GetTitle() const; - - void Clear(Option_t * = ""); - - //Coordinates, conversions, ranges. - void AbsCoordinates(Bool_t set) {fAbsCoord = set;} - - Double_t AbsPixeltoX(Int_t px) {return fAbsPixeltoXk + px * fPixeltoX;} - Double_t AbsPixeltoY(Int_t py) {return fAbsPixeltoYk + py * fPixeltoY;} - - Double_t GetXlowNDC() const {return fXlowNDC;} - Double_t GetYlowNDC() const {return fYlowNDC;} - - Double_t GetWNDC() const {return fWNDC;} - Double_t GetHNDC() const {return fHNDC;} - - void SetViewWH(UInt_t w, UInt_t h); - - - UInt_t GetWw() const; - UInt_t GetWh() const; - - Double_t GetAbsXlowNDC() const {return fAbsXlowNDC;} - Double_t GetAbsYlowNDC() const {return fAbsYlowNDC;} - - Double_t GetAbsWNDC() const {return fAbsWNDC;} - Double_t GetAbsHNDC() const {return fAbsHNDC;} - - Double_t GetAspectRatio() const { return fAspectRatio; } - void SetFixedAspectRatio(Bool_t fixed = kTRUE); - Bool_t HasFixedAspectRatio() const {return fFixedAspectRatio;} - - Double_t GetUxmin() const {return fUxmin;} - Double_t GetUymin() const {return fUymin;} - Double_t GetUxmax() const {return fUxmax;} - Double_t GetUymax() const {return fUymax;} - - void SetGrid(Int_t valuex = 1, Int_t valuey = 1) {fGridx = valuex; fGridy = valuey; } - - void SetGridx(Int_t value = 1) {fGridx = value;} - Bool_t GetGridx() const {return fGridx;} - - void SetGridy(Int_t value = 1) {fGridy = value;} - Bool_t GetGridy() const {return fGridy;} - - void SetTicks(Int_t valuex = 1, Int_t valuey = 1) {fTickx = valuex; fTicky = valuey;} - - void SetTickx(Int_t value = 1) {fTickx = value;} - Int_t GetTickx() const {return fTickx;} - - void SetTicky(Int_t value = 1) {fTicky = value;} - Int_t GetTicky() const {return fTicky;} - - Double_t GetX1() const { return fX1; } - Double_t GetX2() const { return fX2; } - Double_t GetY1() const { return fY1; } - Double_t GetY2() const { return fY2; } - - Double_t PadtoX(Double_t x) const; - Double_t PadtoY(Double_t y) const; - Double_t XtoPad(Double_t x) const; - Double_t YtoPad(Double_t y) const; - - Int_t UtoAbsPixel(Double_t u) const {return Int_t(fUtoAbsPixelk + u * fUtoPixel);} - Int_t VtoAbsPixel(Double_t v) const {return Int_t(fVtoAbsPixelk + v * fVtoPixel);} - - Int_t UtoPixel(Double_t u) const; - Int_t VtoPixel(Double_t v) const; - - Int_t XtoAbsPixel(Double_t x) const; - Int_t YtoAbsPixel(Double_t y) const; - - Int_t XtoPixel(Double_t x) const; - Int_t YtoPixel(Double_t y) const; - - Double_t PixeltoX(Int_t px); - Double_t PixeltoY(Int_t py); - - void SetLogx(Int_t value = 1); - Int_t GetLogx() const {return fLogx;} - - void SetLogy(Int_t value = 1); - Int_t GetLogy() const {return fLogy;} - - void SetLogz(Int_t value = 1); - Int_t GetLogz() const {return fLogz;} - - void SetPad(const char *name, const char *title, - Double_t xlow, Double_t ylow, Double_t xup, - Double_t yup, Color_t color=35, - Short_t bordersize=5, Short_t bordermode=-1); - void SetPad(Double_t xlow, Double_t ylow, Double_t xup, Double_t yup); - - void SetTheta(Double_t theta=30) {fTheta = theta;} - Double_t GetTheta() const {return fTheta;} - - void SetPhi(Double_t phi=30) {fPhi = phi;} - Double_t GetPhi() const {return fPhi;} - - void SetVertical(Bool_t vert=kTRUE); - - void GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2); - void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2); - - void GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax); - void RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax); - - void GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup); - - //Pad's properties. - void SetFillStyle(Style_t fstyle); - - Bool_t IsBatch() const {return kFALSE;} - - void SetEditable(Bool_t mode = kTRUE); - Bool_t IsEditable() const {return fEditable;} - - Bool_t IsFolder() const {return kTRUE;} - Bool_t IsModified() const {return kFALSE;} - Bool_t IsRetained() const {return kTRUE;} - Bool_t IsVertical() const {return !TestBit(kHori);} - - void SetBorderMode(Short_t bordermode) {fBorderMode = bordermode; } - Short_t GetBorderMode() const {return fBorderMode;} - - void SetBorderSize(Short_t bordersize) {fBorderSize = bordersize; } - Short_t GetBorderSize() const {return fBorderSize;} - - //Misc. pad operations. - TVirtualPad* cd(Int_t dummyNumber = -1); - - void SetView(TView *view = 0); - - void ResizePad(Option_t *option=""); - - TFrame *GetFrame(); - - TList *GetListOfPrimitives() const {return &fPrimitives;} - TList *GetListOfExecs() const {return &fExecs;} - - TObject *GetPrimitive(const char *name) const; - TView *GetView() const {return fView;} - - //Graphics. - void Paint(Option_t *option=""); - void PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option=""); - void PaintFillArea(Int_t n, Float_t *x, Float_t *y, Option_t *option=""); - void PaintFillArea(Int_t n, Double_t *x, Double_t *y, Option_t *option=""); - - void PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax); - void PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2); - void PaintLineNDC(Double_t u1, Double_t v1,Double_t u2, Double_t v2); - void PaintLine3D(Float_t *p1, Float_t *p2); - void PaintLine3D(Double_t *p1, Double_t *p2); - void PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *option=""); - void PaintPolyLine(Int_t n, Double_t *x, Double_t *y, Option_t *option=""); - void PaintPolyLine3D(Int_t n, Double_t *p); - void PaintPolyLineNDC(Int_t n, Double_t *x, Double_t *y, Option_t *option=""); - void PaintPolyMarker(Int_t n, Float_t *x, Float_t *y, Option_t *option=""); - void PaintPolyMarker(Int_t n, Double_t *x, Double_t *y, Option_t *option=""); - - void PaintText(Double_t x, Double_t y, const char *text); - void PaintText(Double_t x, Double_t y, const wchar_t *text); - void PaintTextNDC(Double_t u, Double_t v, const char *text); - void PaintTextNDC(Double_t u, Double_t v, const wchar_t *text); - - void RedrawAxis(Option_t *option=""); - TH1F *DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title); - - // - TVirtualViewer3D *GetViewer3D(Option_t *opt); - - - // - Bool_t PadInSelectionMode() const - { - return fInSelectionMode; - } - - Bool_t PadInHighlightMode() const - { - return fInHighlightMode; - } - - //This is a temporary hack, will be removed when selection - //is done correctly. - void ExecuteRotateView(Int_t evType, Int_t px, Int_t py); - void ExecuteEventAxis(Int_t, Int_t, Int_t, TAxis *); - - Bool_t SelectionIsValid()const; - void InvalidateSelection(Bool_t invalidateBufferOnly = kFALSE); - - void PaintForSelection(); - void SetSelectionBuffer(UInt_t w, UInt_t h, unsigned char *buff); - void Pick(Int_t px, Int_t py); - void Unpick(); - TObject *ObjectInPoint(Int_t px, Int_t py); - - TObject *GetSelected() const; - - void PaintShadowForSelected() const; - void PaintSelected() const; - - void PushTopLevelSelectable(TObject *top); - - void PushSelectableObject(TObject *obj); - - void PopTopLevelSelectable(); - - //New special function. - void PaintThumbnail(); - - void SetPaintOption(const TObject *obj, const char *option); - -private: - //Painter based on CoreGraphics. - mutable Painter fPainter; - - //View's width and height (from UIKit). - UInt_t fViewW; - UInt_t fViewH; - - //Standard pad's coordinates and coefficients. - Double_t fX1; // X of lower X coordinate - Double_t fY1; // Y of lower Y coordinate - Double_t fX2; // X of upper X coordinate - Double_t fY2; // Y of upper Y coordinate - - Double_t fXtoAbsPixelk; // Conversion coefficient for X World to absolute pixel - Double_t fXtoPixelk; // Conversion coefficient for X World to pixel - Double_t fXtoPixel; // xpixel = fXtoPixelk + fXtoPixel*xworld - Double_t fYtoAbsPixelk; // Conversion coefficient for Y World to absolute pixel - Double_t fYtoPixelk; // Conversion coefficient for Y World to pixel - Double_t fYtoPixel; // ypixel = fYtoPixelk + fYtoPixel*yworld - - Double_t fUtoAbsPixelk; // Conversion coefficient for U NDC to absolute pixel - Double_t fUtoPixelk; // Conversion coefficient for U NDC to pixel - Double_t fUtoPixel; // xpixel = fUtoPixelk + fUtoPixel*undc - Double_t fVtoAbsPixelk; // Conversion coefficient for V NDC to absolute pixel - Double_t fVtoPixelk; // Conversion coefficient for V NDC to pixel - Double_t fVtoPixel; // ypixel = fVtoPixelk + fVtoPixel*vndc - - Double_t fAbsPixeltoXk; // Conversion coefficient for absolute pixel to X World - Double_t fPixeltoXk; // Conversion coefficient for pixel to X World - Double_t fPixeltoX; // xworld = fPixeltoXk + fPixeltoX*xpixel - Double_t fAbsPixeltoYk; // Conversion coefficient for absolute pixel to Y World - Double_t fPixeltoYk; // Conversion coefficient for pixel to Y World - Double_t fPixeltoY; // yworld = fPixeltoYk + fPixeltoY*ypixel - - Double_t fXlowNDC; // X bottom left corner of pad in NDC [0,1] - Double_t fYlowNDC; // Y bottom left corner of pad in NDC [0,1] - Double_t fWNDC; // Width of pad along X in NDC - Double_t fHNDC; // Height of pad along Y in NDC - - Double_t fAbsXlowNDC; // Absolute X top left corner of pad in NDC [0,1] - Double_t fAbsYlowNDC; // Absolute Y top left corner of pad in NDC [0,1] - Double_t fAbsWNDC; // Absolute Width of pad along X in NDC - Double_t fAbsHNDC; // Absolute Height of pad along Y in NDC - - Double_t fUxmin; // Minimum value on the X axis - Double_t fUymin; // Minimum value on the Y axis - Double_t fUxmax; // Maximum value on the X axis - Double_t fUymax; // Maximum value on the Y axis - - Double_t fTheta; // theta angle to view as lego/surface - Double_t fPhi; // phi angle to view as lego/surface - - Double_t fAspectRatio; // ratio of w/h in case of fixed ratio - - Int_t fTickx; // Set to 1 if tick marks along X - Int_t fTicky; // Set to 1 if tick marks along Y - Int_t fLogx; // (=0 if X linear scale, =1 if log scale) - Int_t fLogy; // (=0 if Y linear scale, =1 if log scale) - Int_t fLogz; // (=0 if Z linear scale, =1 if log scale) - Short_t fBorderSize; // pad bordersize in pixels - Short_t fBorderMode; // Bordermode (-1=down, 0 = no border, 1=up) - - Bool_t fGridx; // Set to true if grid along X - Bool_t fGridy; // Set to true if grid along Y - Bool_t fAbsCoord; // Use absolute coordinates - Bool_t fEditable; // True if canvas is editable - Bool_t fFixedAspectRatio; // True if fixed aspect ratio - - mutable TList fPrimitives; // List of primitives in a pad. - mutable TList fExecs; // List of commands to be executed when a pad event occurs (empty on iOS). - - TFrame *fFrame; // Pointer to 2-D frame (if one exists) - TView *fView; // Pointer to 3-D view (if one exists) - - // - TVirtualViewer3D *fViewer3D; - - //Selection trick now! - Bool_t fSelectionIsValid; - UInt_t fSelectionAreaWidth; - std::vector fSelectionBuffer; - - TObject *fSelected; - TObject *fParentOfSelected; - - mutable Bool_t fInSelectionMode; - mutable Bool_t fInHighlightMode; - - typedef std::pair Parent_t; - std::vector fParentPainters; - - typedef std::pair ObjectPair_t; - std::vector fSelectables; - - UInt_t fObjectID; - //This requires special processing at the moment. - Bool_t fContains3DObject; - - const char *GetSelectedParentDrawOption()const; - const char *GetSelectedDrawOption()const; - - //Non-overriders. - TObject *FindObject(const char *name) const; - TObject *FindObject(const TObject *obj) const; - - Int_t Clip(Float_t *x, Float_t *y, Float_t xclipl, Float_t yclipb, Float_t xclipr, Float_t yclipt); - Int_t Clip(Double_t *x, Double_t *y, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt); - Int_t ClippingCode(Double_t x, Double_t y, Double_t xcl1, Double_t ycl1, Double_t xcl2, Double_t ycl2); - Int_t ClipPolygon(Int_t n, Double_t *x, Double_t *y, Int_t nn, Double_t *xc, Double_t *yc, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt); - - void PaintBorder(Color_t color, Bool_t tops); - void PaintFillAreaHatches(Int_t n, Double_t *x, Double_t *y, Int_t FillStyle); - void PaintHatches(Double_t dy, Double_t angle, Int_t nn, Double_t *xx, Double_t *yy); - - Pad(const Pad &pad); - Pad &operator=(const Pad &rhs); -}; - -}//namespace iOS -}//namespace ROOT - -#endif diff --git a/graf2d/ios/inc/IOSPadStub.h b/graf2d/ios/inc/IOSPadStub.h deleted file mode 100644 index 9c0981b2cec3f..0000000000000 --- a/graf2d/ios/inc/IOSPadStub.h +++ /dev/null @@ -1,112 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSPadStub -#define ROOT_IOSPadStub - -////////////////////////////////////////////////////////////////////////// -// // -// IOSPadStub // -// // -// TVirtualPad interface is huge: ~150 public virtual member functions, // -// mixture of different interfaces in fact. // -// We do not need these 68 functions, but I have to implement them // -// (they are pure virtual), so, we have a "stub" class with // -// empty virtual functions. // -// // -////////////////////////////////////////////////////////////////////////// - -#include "TVirtualPad.h" - -namespace ROOT { -namespace iOS { - -class PadStub : public TVirtualPad { -public: - TLegend *BuildLegend(Double_t x1, Double_t y1, Double_t x2, Double_t y2, const char *title); - void Close(Option_t *); - void AddExec(const char *, const char *); - void CopyPixmap(); - void CopyPixmaps(); - void DeleteExec(const char *); - void Divide(Int_t, Int_t, Float_t, Float_t, Int_t); - void Draw(Option_t *); - void DrawClassObject(const TObject *, Option_t *); - void SetBatch(Bool_t batch); - Int_t GetCanvasID() const; - TCanvasImp *GetCanvasImp() const; - Int_t GetEvent() const; - Int_t GetEventX() const; - Int_t GetEventY() const; - Int_t GetNumber() const; - TVirtualPad *GetPad(Int_t subpadnumber) const; - TObject *GetPadPointer() const; - TVirtualPad *GetPadSave() const; - TVirtualPad *GetSelectedPad() const; - TObject *GetView3D() const; - void ResetView3D(TObject *); - TCanvas *GetCanvas() const; - TVirtualPad *GetVirtCanvas() const; - Int_t GetPadPaint() const; - Int_t GetPixmapID() const; - Bool_t HasCrosshair() const; - void SetCrosshair(Int_t); - void SetAttFillPS(Color_t, Style_t); - void SetAttLinePS(Color_t, Style_t, Width_t); - void SetAttMarkerPS(Color_t, Style_t, Size_t); - void SetAttTextPS(Int_t, Float_t, Color_t, Style_t, Float_t); - void PaintBorderPS(Double_t, Double_t, Double_t, Double_t, Int_t, Int_t, Int_t, Int_t); - //PaintText with a parameter of a type wchar_t is a special version - //used by mathtext. It relies strongly on ttf and actually requires - //ttf. NOOP at the moment (whence it's here, in a 'stub' class). - virtual void PaintText(Double_t, Double_t, const wchar_t *); - virtual void PaintTextNDC(Double_t, Double_t, const wchar_t *); - // - Int_t GetGLDevice(); - void SetCopyGLDevice(Bool_t); - void Pop(); - void Print(const char *) const; - void Print(const char *, Option_t *); - TVirtualPad *GetMother() const; - TObject *CreateToolTip(const TBox *, const char *, Long_t); - void DeleteToolTip(TObject *); - void ResetToolTip(TObject *); - void CloseToolTip(TObject *); - void SetToolTipText(const char *, Long_t); - void HighLight(Color_t, Bool_t); - Color_t GetHighLightColor() const; - void ls(Option_t *option) const; - void Modified(Bool_t flag); - Bool_t OpaqueMoving() const; - Bool_t OpaqueResizing() const; - void PaintModified(); - void RecursiveRemove(TObject *obj); - void SaveAs(const char *,Option_t *) const; - void SetCanvas(TCanvas *); - void SetCanvasSize(UInt_t, UInt_t); - void SetCursor(ECursor cursor); - void SetDoubleBuffer(Int_t mode); - void SetName(const char *); - void SetTitle(const char *); - void SetSelected(TObject *); - void ShowGuidelines(TObject *, Int_t, char, bool); - void Update(); - TObject *WaitPrimitive(const char *, const char *); - void ReleaseViewer3D(Option_t *); - Bool_t HasViewer3D() const; - - TVirtualPadPainter *GetPainter(); -}; - -}//namespace iOS -}//namespace ROOT - -#endif diff --git a/graf2d/ios/inc/IOSPainter.h b/graf2d/ios/inc/IOSPainter.h deleted file mode 100644 index 7b15a3e724bf0..0000000000000 --- a/graf2d/ios/inc/IOSPainter.h +++ /dev/null @@ -1,142 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_IOSPainter -#define ROOT_IOSPainter - -////////////////////////////////////////////////////////////////////////// -// // -// IOSPainter // -// // -// Graphics operations required by IOSPad are implemented in // -// IOSPainter. Uses CoreGraphics and CoreText. // -// // -////////////////////////////////////////////////////////////////////////// - -#include - -#include - - -#include "TVirtualPadPainter.h" -#include "IOSTextOperations.h" -#include "IOSGraphicUtils.h" -#include "TPoint.h" - -namespace ROOT { -namespace iOS { - -// -//SpaceConverter converts coordinates from pad's user space into UIView's userspace. -// - -class SpaceConverter { -public: - SpaceConverter(); - SpaceConverter(UInt_t viewW, Double_t xMin, Double_t xMax, - UInt_t viewH, Double_t yMin, Double_t yMax); - - void SetConverter(UInt_t viewW, Double_t xMin, Double_t xMax, - UInt_t viewH, Double_t yMin, Double_t yMax); - - Double_t XToView(Double_t x)const; - Double_t YToView(Double_t y)const; - -private: - Double_t fXMin; - Double_t fXConv; - - Double_t fYMin; - Double_t fYConv; -}; - -class Painter { -public: - enum EMode { - kPaintToSelectionBuffer, //A pad draws the scene into the selection buffer. - kPaintToView, //Normal painting (normal colors and styles). - kPaintShadow, //Poor man's shadows for selected object (for iPad3). - kPaintSelected, //Only selected object is painted. - kPaintThumbnail //Paint into small picture, low level of details. - }; - - - Painter(); - - //Now, drawing primitives. - void DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2); - void DrawLineNDC(Double_t u1, Double_t v1, Double_t u2, Double_t v2); - - void DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, TVirtualPadPainter::EBoxMode mode); - - void DrawFillArea(Int_t n, const Double_t *x, const Double_t *y); - void DrawFillArea(Int_t n, const Float_t *x, const Float_t *y); - - void DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y); - void DrawPolyLine(Int_t n, const Float_t *x, const Float_t *y); - void DrawPolyLineNDC(Int_t n, const Double_t *u, const Double_t *v); - - void DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y); - void DrawPolyMarker(Int_t n, const Float_t *x, const Float_t *y); - - void DrawText(Double_t x, Double_t y, const char *text, TVirtualPadPainter::ETextMode mode); - void DrawTextNDC(Double_t u, Double_t v, const char *text, TVirtualPadPainter::ETextMode mode); - - void SetContext(CGContextRef ctx); - void SetTransform(UInt_t w, Double_t xMin, Double_t xMax, UInt_t h, Double_t yMin, Double_t yMax); - - void SetPainterMode(EMode mode); - void SetCurrentObjectID(UInt_t objId); - - void GetTextExtent(UInt_t &w, UInt_t &h, const char *text); - -private: - - void SetStrokeParameters()const; - void SetPolygonParameters()const; - void SetMarkerColor()const; - Bool_t PolygonHasStipple()const; - - // - void FillBoxWithPattern(Double_t x1, Double_t y1, Double_t x2, Double_t y2)const; - void FillBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)const; - void DrawBoxOutline(Double_t x1, Double_t y1, Double_t x2, Double_t y2)const; - - void FillAreaWithPattern(Int_t n, const Double_t *x, const Double_t *y)const; - void FillArea(Int_t n, const Double_t *x, const Double_t *y)const; - - void DrawText(Double_t x, Double_t y, const CTLineGuard &ctLine); - - // - FontManager fFontManager; - CGContextRef fCtx;//Quartz context. - SpaceConverter fConverter; - - typedef std::vector::size_type size_type; - std::vector fPolyMarker;//Buffer for converted poly-marker coordinates. - - //Staff for picking. - EMode fPainterMode; - UInt_t fCurrentObjectID; - GraphicUtils::IDEncoder fEncoder; - - void SetLineColorForCurrentObjectID() const; - void SetPolygonColorForCurrentObjectID() const; - void SetLineColorHighlighted() const; - - Painter(const Painter &rhs); - Painter &operator = (const Painter &rhs); -}; - -}//iOS -}//namespace ROOT - -#endif diff --git a/graf2d/ios/inc/IOSResourceManagement.h b/graf2d/ios/inc/IOSResourceManagement.h deleted file mode 100644 index 216f0f14ac3c3..0000000000000 --- a/graf2d/ios/inc/IOSResourceManagement.h +++ /dev/null @@ -1,187 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_ResourceManagement -#define ROOT_ResourceManagement - -////////////////////////////////////////////////////////////////////////// -// // -// Resource management // -// // -// Set of classes to simplify and automate resource and memory // -// management with Core Foundation, Core Text, Core Graphics etc. // -// Apple has reference counting system, but it's a good old C, // -// and you have to remember to release counters yourself. // -// // -////////////////////////////////////////////////////////////////////////// - -#include -#include - -#include - -#include "Rtypes.h" - -namespace ROOT { -namespace iOS { -namespace Util { - - -class NonCopyable { -protected: - NonCopyable(){}; -private: - NonCopyable(const NonCopyable &rhs); - NonCopyable &operator = (const NonCopyable &rhs); -}; - -//Class calls user's function to release resource. -template -class RefGuardGeneric : NonCopyable { -public: - explicit RefGuardGeneric(RefType ref) : fRef(ref), fActive(kTRUE) - { - } - - ~RefGuardGeneric() - { - if (fActive) - release(fRef); - } - - RefType Get()const - { - return fRef; - } - - RefType Release() - { - fActive = kFALSE; - return fRef; - } - -private: - - RefType fRef; - Bool_t fActive; -}; - -//Simple class to call CFRelease on some CFTypeRef. -template -class RefGuard : NonCopyable { -public: - explicit RefGuard(RefType ref) : fRef(ref), fActive(kTRUE) - { - } - - ~RefGuard() - { - if (fActive) - CFRelease(fRef); - } - - RefType Get()const - { - return fRef; - } - - RefType Release() - { - fActive = kFALSE; - return fRef; - } - -private: - - RefType fRef; - bool fActive; -}; - - -//Very similar to RefGuardGeneric, but calls CFRelease -class CFStringGuard : NonCopyable { -public: - CFStringGuard(const char *text); - ~CFStringGuard(); - - CFStringRef Get()const; -private: - CFStringRef fCFString; -}; - -//Save and restore CGContextRef's state. -class CGStateGuard : NonCopyable { -public: - CGStateGuard(CGContextRef ctx); - ~CGStateGuard(); - -private: - CGContextRef fCtx; -}; - -//Same as RefGuardGeneric, but can -//be copied. -template -class SmartRef { -public: - SmartRef(RefType ref, bool initRetain = kFALSE) - : fRef(ref) - { - if (initRetain) - CFRetain(fRef); - } - - SmartRef(const SmartRef &rhs) - : fRef(rhs.fRef) - { - CFRetain(fRef); - } - - SmartRef &operator = (const SmartRef &rhs) - { - if (fRef != rhs.fRef) { - release(fRef); - fRef = rhs.fRef; - CFRetain(fRef); - } - - return *this; - } - - SmartRef &operator = (RefType ref) - { - if (fRef != ref) { - release(fRef); - fRef = ref; - CFRetain(fRef); - } - - return *this; - } - - ~SmartRef() - { - release(fRef); - } - - RefType Get()const - { - return fRef; - } -private: - RefType fRef; -}; - -}//namespace Util -}//namespace iOS -}//namespace ROOT - -#endif diff --git a/graf2d/ios/inc/IOSSelectionMarkers.h b/graf2d/ios/inc/IOSSelectionMarkers.h deleted file mode 100644 index ec968115e04c1..0000000000000 --- a/graf2d/ios/inc/IOSSelectionMarkers.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef ROOT_IOSSelectionMarkers -#define ROOT_IOSSelectionMarkers - -#include -#include - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -void DrawSelectionMarker(CGContextRef ctx, const CGPoint &point); -void DrawBoxSelectionMarkers(CGContextRef ctx, const CGRect &box); - -} -} -} - -#endif diff --git a/graf2d/ios/inc/IOSTextOperations.h b/graf2d/ios/inc/IOSTextOperations.h deleted file mode 100644 index 9a6d081de4db6..0000000000000 --- a/graf2d/ios/inc/IOSTextOperations.h +++ /dev/null @@ -1,98 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_TextOperations -#define ROOT_TextOperations - -////////////////////////////////////////////////////////////////////////// -// // -// IOSTextOperations // -// // -// Font management for iOS and Core Text. // -// To be extended or completely changed in a future. // -// // -////////////////////////////////////////////////////////////////////////// - -#include -#include - -#include -#include - -#include "IOSResourceManagement.h" - -#include "Rtypes.h" - -namespace ROOT { -namespace iOS { - -class CTLineGuard : public Util::NonCopyable { - friend class Painter; - -public: - CTLineGuard(const char *textLine, CTFontRef font); - CTLineGuard(const char *textLine, CTFontRef font, Color_t color); - CTLineGuard(const char *textLine, CTFontRef font, const std::vector &symbolMap); - ~CTLineGuard(); - - void GetBounds(UInt_t &w, UInt_t &h)const; - -private: - - void Init(const char *textLine, UInt_t nAttribs, CFStringRef *keys, CFTypeRef *values); - void Init(const std::vector &textLine, UInt_t nAttribs, CFStringRef *keys, CFTypeRef *values); - - CTLineRef fCTLine; //Core Text line, created from Attributed string. -}; - -class FontManager : public Util::NonCopyable { -public: - enum FontManagerDefaults { - fmdNOfFonts = 13 - }; - - FontManager(); - ~FontManager(); - - //Select the existing font or create a new one and select it. - CTFontRef SelectFont(Font_t fontIndex, Float_t fontSize); - - //Typographical bounds (whatever it means), - //for the current selected font and text. - void GetTextBounds(UInt_t &w, UInt_t &h, const char *text)const; - // - double GetAscent()const; - double GetDescent()const; - double GetLeading()const; - - const std::vector &GetSymbolMap()const - { - return fSymbolMap; - } - -private: - typedef std::map FontMap_t; - typedef FontMap_t::iterator FontMapIter_t; - typedef FontMap_t::const_iterator FontMapConstIter_t; - - FontMap_t fFonts[fmdNOfFonts]; - CTFontRef fSelectedFont; - - std::vector fSymbolMap; - - void InitSymbolMap(); -}; - -}//namespace iOS -}//namespace ROOT - - -#endif diff --git a/graf2d/ios/inc/TGIOS.h b/graf2d/ios/inc/TGIOS.h deleted file mode 100644 index d5870e6f7a35d..0000000000000 --- a/graf2d/ios/inc/TGIOS.h +++ /dev/null @@ -1,63 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 19/10/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_TGIOS -#define ROOT_TGIOS - -#include "TVirtualX.h" - -////////////////////////////////////////////////////////////////////////// -// // -// TGIOS. // -// // -// TVirtualX for iOS. No window management, no graphics, just have // -// to implement correctly functions from TAttXXX base classes // -// (TVirtualX intentionally overrides some of them and has // -// empty implementations). But on iOS I do not have TGWin32 or // -// TGX11 and graphic primitives try to use gVirtualX to pass // -// different attributes like color, line width, etc. to the // -// painting code. // -// // -////////////////////////////////////////////////////////////////////////// - -namespace ROOT { -namespace iOS { - -class TGIOS : public TVirtualX { -public: - TGIOS(); - TGIOS(const char *name, const char *title); - - void SetLineColor(Color_t cindex); - void SetLineStyle(Style_t linestyle); - void SetLineWidth(Width_t width); - void SetFillColor(Color_t cindex); - void SetFillStyle(Style_t style); - void SetMarkerColor(Color_t cindex); - void SetMarkerSize(Float_t markersize); - void SetMarkerStyle(Style_t markerstyle); - void SetTextAlign(Short_t talign); - void SetTextColor(Color_t cindex); - void SetTextFont(Font_t fontnumber); - void SetTextSize(Float_t textsize); - - void GetTextExtent(UInt_t &w, UInt_t &h, char *mess); - - using TVirtualX::SetTextFont; -private: - TGIOS(const TGIOS &rhs); - TGIOS &operator = (const TGIOS &rhs); -}; - -} -} - -#endif diff --git a/graf2d/ios/src/IOSFillPatterns.cxx b/graf2d/ios/src/IOSFillPatterns.cxx deleted file mode 100644 index 0a5fb329e1d7d..0000000000000 --- a/graf2d/ios/src/IOSFillPatterns.cxx +++ /dev/null @@ -1,720 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include - -#include "IOSFillPatterns.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -const unsigned solidFillStyle = 1001; -const unsigned stippleBase = 3000; - -//TODO. Remove all this nightmarish functions and use bitmaps. - -// -// Fill patterns, defined in RStipples.h. -// Pattern in RStipple.h is 32x32. -// Order is: say, the first two numbers are 1: 0x42 2: 0x42 -// NUMBER: 1 2 -// BITS: 0100 0010 0100 0010 //bits from lower to higher. -// IN HEX 2 4 2 4 - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_1(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 1.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_1(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_1; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 2.f, 2.f), CGAffineTransformIdentity, 2.f, 2.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_2(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(2.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 3.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_2(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_2; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 4.f, 4.f), CGAffineTransformIdentity, 4.f, 4.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_3(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_3(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_3; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 4.f, 4.f), CGAffineTransformIdentity, 4.f, 4.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_4(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 0.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_4(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_4; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_5(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 7.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_5(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_5; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_6(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(2.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 3.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_6(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_6; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 4.f, 4.f), CGAffineTransformIdentity, 4.f, 4.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_7(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 1.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_7(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_7; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 4.f, 4.f), CGAffineTransformIdentity, 4.f, 4.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_8(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - //0x11 - CGContextFillRect(ctx, CGRectMake(0.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 0.f, 1.f, 1.f)); - - //0xb8 - CGContextFillRect(ctx, CGRectMake(0.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 1.f, 1.f, 1.f)); - - //0x7c - CGContextFillRect(ctx, CGRectMake(0.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 2.f, 1.f, 1.f)); - - //0x3a - CGContextFillRect(ctx, CGRectMake(0.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 3.f, 1.f, 1.f)); - - //0x11 - CGContextFillRect(ctx, CGRectMake(0.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 4.f, 1.f, 1.f)); - - //0xa3 - CGContextFillRect(ctx, CGRectMake(1.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 5.f, 1.f, 1.f)); - - //0xc7 - CGContextFillRect(ctx, CGRectMake(2.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 6.f, 1.f, 1.f)); - - //0x8b - CGContextFillRect(ctx, CGRectMake(3.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 7.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_8(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_8; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_9(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 2.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(4.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 5.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(3.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(0.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 7.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_9(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_9; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_10(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 3.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(1.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 3.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(4.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(0.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 7.f, 1.f, 1.f)); - -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_10(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_10; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_11(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 7.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(0.f, 10.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 14.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 11.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 13.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 12.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 9.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 10.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 11.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 12.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 13.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 14.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 15.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 12.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 11.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 13.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 10.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 14.f, 1.f, 1.f)); - -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_11(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_11; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 16.f), CGAffineTransformIdentity, 8.f, 16.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_12(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 11.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 12.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 13.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(1.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 10.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 14.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(2.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 9.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 15.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(3.f, 9.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 15.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(4.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 4.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 9.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 15.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(5.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 6.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 10.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 14.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(6.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 11.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 12.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 13.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(7.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 7.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_12(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_12; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 16.f), CGAffineTransformIdentity, 8.f, 16.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_13(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 7.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(1.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(2.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 5.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(3.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 4.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(4.f, 3.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(5.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 4.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(6.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 5.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(7.f, 0.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 6.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_13(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_13; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_14(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - for (unsigned i = 0; i < 16; ++i) { - CGContextFillRect(ctx, CGRectMake(0.f, i, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(12.f, i, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(i, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(i, 15.f, 1.f, 1.f)); - } - - for (unsigned i = 0; i < 8; ++i) { - CGContextFillRect(ctx, CGRectMake(i, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(i + 4, 11.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 8.f + i, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(8.f, 4.f + i, 1.f, 1.f)); - } - -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_14(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_14; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 16.f, 16.f), CGAffineTransformIdentity, 16.f, 16.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_15(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(1.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 7.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(2.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(3.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 3.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(4.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(5.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 7.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(6.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(7.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 3.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_15(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_15; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_16(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(0.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(1.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 7.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(3.f, 7.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(4.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(4.f, 6.f, 1.f, 1.f)); - - CGContextFillRect(ctx, CGRectMake(5.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(5.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(6.f, 5.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 1.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(7.f, 5.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_16(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_16; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 8.f, 8.f), CGAffineTransformIdentity, 8.f, 8.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -void draw_pattern_17(void *color, CGContextRef ctx) -{ - const float *rgb = static_cast(color); - const float alpha = 1.f; - CGContextSetRGBFillColor(ctx, rgb[0], rgb[1], rgb[2], alpha); - - CGContextFillRect(ctx, CGRectMake(0.f, 3.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(1.f, 2.f, 1.f, 1.f)); - CGContextFillRect(ctx, CGRectMake(2.f, 1.f, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_17(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_17; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 4.f, 4.f), CGAffineTransformIdentity, 4.f, 4.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGPatternRef create_pattern_18(float *rgb) -{ - CGPatternCallbacks patternCallbacks; - patternCallbacks.version = 0; - patternCallbacks.drawPattern = draw_pattern_17; - patternCallbacks.releaseInfo = 0; - - return CGPatternCreate(rgb, CGRectMake(0.f, 0.f, 4.f, 4.f), CGAffineTransformMakeScale(-1.f, 1.f), 4.f, 4.f, kCGPatternTilingConstantSpacingMinimalDistortion, 1, &patternCallbacks); -} - -PatternGenerator_t gPatternGenerators[kPredefinedFillPatterns] = {create_pattern_1, - create_pattern_2, - create_pattern_3, - create_pattern_4, - create_pattern_5, - create_pattern_6, - create_pattern_7, - create_pattern_8, - create_pattern_9, - create_pattern_10, - create_pattern_11, - create_pattern_12, - create_pattern_13, - create_pattern_14, - create_pattern_15, - create_pattern_16, - create_pattern_17, - create_pattern_18}; - -}//namespace GraphicUtils -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/IOSGraphicUtils.cxx b/graf2d/ios/src/IOSGraphicUtils.cxx deleted file mode 100644 index 216386a0b5709..0000000000000 --- a/graf2d/ios/src/IOSGraphicUtils.cxx +++ /dev/null @@ -1,92 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include "TAttMarker.h" -#include "TVirtualX.h" -#include "TColor.h" -#include "TROOT.h" - -#include "IOSGraphicUtils.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -//////////////////////////////////////////////////////////////////////////////// - -void GetColorForIndex(Color_t colorIndex, Float_t &r, Float_t &g, Float_t &b) -{ - if (const TColor *color = gROOT->GetColor(colorIndex)) - color->GetRGB(r, g, b); -} - -//IDEncoder. -//////////////////////////////////////////////////////////////////////////////// - -IDEncoder::IDEncoder(UInt_t radix, UInt_t channelSize) - : fRadix(radix), - fRadix2(radix * radix), - fChannelSize(channelSize), - fStepSize(channelSize / (radix - 1)), - fMaxID(radix * radix * radix) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t IDEncoder::IdToColor(UInt_t id, Float_t *rgb) const -{ - if (id >= fMaxID) - return kFALSE; - - const UInt_t red = id / fRadix2; - const UInt_t green = (id - red * fRadix2) / fRadix; - const UInt_t blue = (id - red * fRadix2 - green * fRadix) % fRadix; - - rgb[0] = red * fStepSize / Float_t(fChannelSize); - rgb[1] = green * fStepSize / Float_t(fChannelSize); - rgb[2] = blue * fStepSize / Float_t(fChannelSize); - - return kTRUE; -} - -//////////////////////////////////////////////////////////////////////////////// - -UInt_t IDEncoder::ColorToId(UInt_t r, UInt_t g, UInt_t b) const -{ - const UInt_t red = FixValue(r); - const UInt_t green = FixValue(g); - const UInt_t blue = FixValue(b); - - return fRadix2 * red + fRadix * green + blue; -} - -//////////////////////////////////////////////////////////////////////////////// - -UInt_t IDEncoder::FixValue(UInt_t val) const -{ - const UInt_t orig = val / fStepSize; - - if (orig * fStepSize != val) { - const UInt_t top = (orig + 1) * fStepSize - val; - const UInt_t bottom = val - orig * fStepSize; - - if (top > bottom || orig + 1 >= fRadix) - return orig; - - return orig + 1; - } else - return orig; -} - -}//namespace GraphicUtils -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/IOSLineStyles.cxx b/graf2d/ios/src/IOSLineStyles.cxx deleted file mode 100644 index 3044ec1388b33..0000000000000 --- a/graf2d/ios/src/IOSLineStyles.cxx +++ /dev/null @@ -1,37 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 17/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include "IOSLineStyles.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { -//For fixed line style, number of elements in a pattern is not bigger than 8. -const unsigned linePatternLengths[] = {1, 2, 2, 4, 4, 8, 2, 6, 2, 4}; - -//Line pattern specyfies length of painted and unpainted fragments, for example, -//{2.f, 2.f} draw 2 pixels, skip to pixels (and repeat). -const CGFloat dashLinePatterns[10][8] = { - {1}, //Style 1: 1 element, solid line - {3.f, 3.f}, //Style 2: 2 elements (paint one, skip the second). - {1.f, 2.f}, //Style 3: 2 elements. - {3.f, 4.f, 1.f, 4.f}, //Style 4: 4 elements. - {5.f, 3.f, 1.f, 3.f}, //Style 5: 4 elements. - {5.f, 3.f, 1.f, 3.f, 1.f, 3.f, 1.f, 3.f},//Style 6: 8 elements - {5.f, 5.f}, //Style 7: 2 elements. - {5.f, 3.f, 1.f, 3.f, 1.f, 3.f}, //Style 8: 6 elements. - {20.f, 5.f}, //Style 9: 2 elements. - {20.f, 8.f, 1.f, 8.f} //Style 10: 4 elements. - }; - -}//namespace GraphicUtils -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/IOSMarkers.cxx b/graf2d/ios/src/IOSMarkers.cxx deleted file mode 100644 index 561e8ebc34cc4..0000000000000 --- a/graf2d/ios/src/IOSMarkers.cxx +++ /dev/null @@ -1,1037 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include "TAttMarker.h" - -#include "IOSGraphicUtils.h" -#include "IOSMarkers.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerDot(CGContextRef ctx, unsigned n, const TPoint *xy) -{ - for (unsigned i = 0; i < n; ++i) - CGContextFillRect(ctx, CGRectMake(xy[i].fX, xy[i].fY, 1.f, 1.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerPlus(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Double_t im = 4 * markerSize + 0.5; - - for (UInt_t i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, -im + x, y); - CGContextAddLineToPoint(ctx, im + x, y); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x, -im + y); - CGContextAddLineToPoint(ctx, x, im + y); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerStar(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - Double_t im = 4 * markerSize + 0.5; - - TPoint star[8]; - star[0].fX = -im; star[0].fY = 0; - star[1].fX = im; star[1].fY = 0; - star[2].fX = 0 ; star[2].fY = -im; - star[3].fX = 0 ; star[3].fY = im; - - im = 0.707 * im + 0.5; - star[4].fX = -im; star[4].fY = -im; - star[5].fX = im; star[5].fY = im; - star[6].fX = -im; star[6].fY = im; - star[7].fX = im; star[7].fY = -im; - - for (UInt_t i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, star[0].fX + x, star[0].fY + y); - CGContextAddLineToPoint(ctx, star[1].fX + x, star[1].fY + y); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, star[2].fX + x, star[2].fY + y); - CGContextAddLineToPoint(ctx, star[3].fX + x, star[3].fY + y); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, star[4].fX + x, star[4].fY + y); - CGContextAddLineToPoint(ctx, star[5].fX + x, star[5].fY + y); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, star[6].fX + x, star[6].fY + y); - CGContextAddLineToPoint(ctx, star[7].fX + x, star[7].fY + y); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenCircle(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - Double_t r = 4 * markerSize + 0.5; - if (r > 100.) - r = 100.;//as in TGX11. - - const Double_t d = 2 * r; - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - const CGRect rect = CGRectMake(x - r, y - r, d, d); - CGContextStrokeEllipseInRect(ctx, rect); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerX(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Double_t im = 0.707 * (4 * markerSize + 0.5) + 0.5; - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, -im + x, -im + y); - CGContextAddLineToPoint(ctx, im + x, im + y); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, -im + x, im + y); - CGContextAddLineToPoint(ctx, im + x, -im + y); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullDotSmall(CGContextRef ctx, unsigned n, const TPoint *xy) -{ - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, -1. + x, y); - CGContextAddLineToPoint(ctx, x + 1., y); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x, -1. + y); - CGContextAddLineToPoint(ctx, x, 1. + y); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullDotMedium(CGContextRef ctx, unsigned n, const TPoint *xy) -{ - for (unsigned i = 0; i < n; ++i) - CGContextFillRect(ctx, CGRectMake(xy[i].fX - 1, xy[i].fY - 1, 3.f, 3.f)); -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullDotLarge(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - Double_t radius = 4 * markerSize + 0.5; - if (radius > 100.) - radius = 100;//as in TGX11. - - const Double_t d = 2 * radius; - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - const CGRect rect = CGRectMake(x - radius, y - radius, d, d); - CGContextFillEllipseInRect(ctx, rect); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullSquare(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Double_t im = 4 * markerSize + 0.5; - for (unsigned i = 0; i < n; ++i) { - const CGRect rect = CGRectMake(xy[i].fX - im, xy[i].fY - im, im * 2, im * 2); - CGContextFillRect(ctx, rect); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenSquare(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Double_t im = 4 * markerSize + 0.5; - for (unsigned i = 0; i < n; ++i) { - const CGRect rect = CGRectMake(xy[i].fX - im, xy[i].fY - im, im * 2, im * 2); - CGContextStrokeRect(ctx, rect); - } -} - - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullTriangleUp(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Double_t im = 4 * markerSize + 0.5; - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - im); - CGContextAddLineToPoint(ctx, x + im, y - im); - CGContextAddLineToPoint(ctx, x, im + y); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenTriangleUp(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Double_t im = 4 * markerSize + 0.5; - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - im); - CGContextAddLineToPoint(ctx, x + im, y - im); - CGContextAddLineToPoint(ctx, x, im + y); - CGContextAddLineToPoint(ctx, x - im, y - im); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenTriangleDown(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y + im); - CGContextAddLineToPoint(ctx, x, y - im); - CGContextAddLineToPoint(ctx, im + x, y + im); - CGContextAddLineToPoint(ctx, x - im, y + im); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullTriangleDown(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y + im); - CGContextAddLineToPoint(ctx, x, y - im); - CGContextAddLineToPoint(ctx, im + x, y + im); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullDiamond(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t imx = Int_t(2.66 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - imx, y); - CGContextAddLineToPoint(ctx, x, y - im); - CGContextAddLineToPoint(ctx, x + imx, y); - CGContextAddLineToPoint(ctx, x, y + im); - CGContextDrawPath(ctx, kCGPathFillStroke); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenDiamond(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t imx = Int_t(2.66 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - imx, y); - CGContextAddLineToPoint(ctx, x, y - im); - CGContextAddLineToPoint(ctx, x + imx, y); - CGContextAddLineToPoint(ctx, x, y + im); - CGContextAddLineToPoint(ctx, x - imx, y); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFullCross(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t imx = Int_t(1.33 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - imx); - CGContextAddLineToPoint(ctx, x - imx, y - imx); - CGContextAddLineToPoint(ctx, x - imx, y - im); - CGContextAddLineToPoint(ctx, x + imx, y - im); - CGContextAddLineToPoint(ctx, x + imx, y - imx); - CGContextAddLineToPoint(ctx, x + im, y - imx); - CGContextAddLineToPoint(ctx, x + im, y + imx); - CGContextAddLineToPoint(ctx, x + imx, y + imx); - CGContextAddLineToPoint(ctx, x + imx, y + im); - CGContextAddLineToPoint(ctx, x - imx, y + im); - CGContextAddLineToPoint(ctx, x - imx, y + imx); - CGContextAddLineToPoint(ctx, x - im, y + imx); - CGContextAddLineToPoint(ctx, x - im, y - imx); - CGContextFillPath(ctx); - } -} - - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenCross(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t imx = Int_t(1.33 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - imx); - CGContextAddLineToPoint(ctx, x - imx, y - imx); - CGContextAddLineToPoint(ctx, x - imx, y - im); - CGContextAddLineToPoint(ctx, x + imx, y - im); - CGContextAddLineToPoint(ctx, x + imx, y - imx); - CGContextAddLineToPoint(ctx, x + im, y - imx); - CGContextAddLineToPoint(ctx, x + im, y + imx); - CGContextAddLineToPoint(ctx, x + imx, y + imx); - CGContextAddLineToPoint(ctx, x + imx, y + im); - CGContextAddLineToPoint(ctx, x - imx, y + im); - CGContextAddLineToPoint(ctx, x - imx, y + imx); - CGContextAddLineToPoint(ctx, x - im, y + imx); - CGContextAddLineToPoint(ctx, x - im, y - imx); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// -/// HIGZ full star pentagone - -void DrawMarkerFullStar(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im1 = Int_t(0.66 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - const Int_t im3 = Int_t(2.66 * markerSize + 0.5); - const Int_t im4 = Int_t(1.33 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - im4); - CGContextAddLineToPoint(ctx, x - im2, y + im1); - CGContextAddLineToPoint(ctx, x - im4, y - im4); - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im2, y + im1);//1 - CGContextAddLineToPoint(ctx, x - im3, y + im);//2 - CGContextAddLineToPoint(ctx, x, y + im2);//3 - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x, y + im2);//3 - CGContextAddLineToPoint(ctx, x + im3, y + im);//4 - CGContextAddLineToPoint(ctx, x + im2, y + im1);//5 - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x + im2, y + im1);//5 - CGContextAddLineToPoint(ctx, x + im, y - im4);//6 - CGContextAddLineToPoint(ctx,x + im4, y - im4);//7 - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x + im4, y - im4);//7 - CGContextAddLineToPoint(ctx, x, y - im);//8 - CGContextAddLineToPoint(ctx, x - im4, y - im4);//9 - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im4, y - im4);//9 - CGContextAddLineToPoint(ctx, x - im2, y + im1);//1 - CGContextAddLineToPoint(ctx, x, y + im2);//3 - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im4, y - im4);//9 - CGContextAddLineToPoint(ctx, x, y + im2);//3 - CGContextAddLineToPoint(ctx, x + im2, y + im1);//5 - CGContextFillPath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im4, y - im4);//9 - CGContextAddLineToPoint(ctx, x + im2, y + im1);//5 - CGContextAddLineToPoint(ctx, x + im4, y - im4);//7 - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenStar(CGContextRef ctx, unsigned n, const TPoint *xy, Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im1 = Int_t(0.66 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - const Int_t im3 = Int_t(2.66 * markerSize + 0.5); - const Int_t im4 = Int_t(1.33 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - im4); - CGContextAddLineToPoint(ctx, x - im2, y + im1); - CGContextAddLineToPoint(ctx, x - im3, y + im); - CGContextAddLineToPoint(ctx, x, y + im2); - CGContextAddLineToPoint(ctx, x + im3, y + im); - CGContextAddLineToPoint(ctx, x + im2, y + im1); - CGContextAddLineToPoint(ctx, x + im, y - im4); - CGContextAddLineToPoint(ctx, x + im4, y - im4); - CGContextAddLineToPoint(ctx, x, y - im); - CGContextAddLineToPoint(ctx, x - im4, y - im4); - CGContextAddLineToPoint(ctx, x - im, y - im4); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenSquareDiagonal(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y - im); - CGContextAddLineToPoint(ctx, x + im, y - im); - CGContextAddLineToPoint(ctx, x + im, y + im); - CGContextAddLineToPoint(ctx, x - im, y + im); - CGContextAddLineToPoint(ctx, x - im, y - im); - CGContextAddLineToPoint(ctx, x + im, y + im); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y + im); - CGContextAddLineToPoint(ctx, x + im, y - im); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenDiamondCross(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x , y - im); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextAddLineToPoint(ctx, x , y + im); - CGContextAddLineToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y + im); - CGContextAddLineToPoint(ctx, x , y - im); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenThreeTriangles(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOctagonCross(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextStrokePath(ctx); - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y - im); - CGContextAddLineToPoint(ctx, x , y + im); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFilledThreeTriangles(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenFourTrianglesX(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFilledFourTrianglesX(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenDoubleDiamond(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im4 = Int_t(markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y + im); - CGContextAddLineToPoint(ctx, x -im4, y +im4); - CGContextAddLineToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x -im4, y -im4); - CGContextAddLineToPoint(ctx, x , y - im); - CGContextAddLineToPoint(ctx, x +im4, y -im4); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextAddLineToPoint(ctx, x +im4, y +im4); - CGContextAddLineToPoint(ctx, x , y + im); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFilledDoubleDiamond(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im4 = Int_t(markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y + im); - CGContextAddLineToPoint(ctx, x -im4, y +im4); - CGContextAddLineToPoint(ctx, x - im, y ); - CGContextAddLineToPoint(ctx, x -im4, y -im4); - CGContextAddLineToPoint(ctx, x , y - im); - CGContextAddLineToPoint(ctx, x +im4, y -im4); - CGContextAddLineToPoint(ctx, x + im, y ); - CGContextAddLineToPoint(ctx, x +im4, y +im4); - CGContextAddLineToPoint(ctx, x , y + im); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenFourTrianglesPlus(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - const Int_t im4 = Int_t(1.33 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x , y ); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x , y ); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFilledFourTrianglesPlus(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - const Int_t im4 = Int_t(0.2 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x +im4, y +im4); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x -im4, y +im4); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x -im4, y -im4); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x +im4, y -im4); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x +im4, y +im4); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerOpenCrossX(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y + im2); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x -im2, y ); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x , y -im2); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x +im2, y ); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x , y +im2); - CGContextStrokePath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFilledCrossX(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.0 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x -im2, y - im2*1.005); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x +im2, y -im2); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x -im2, y +im2); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x -im2, y -im2*0.995); - CGContextAddLineToPoint(ctx, x -im2, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y -im2); - CGContextAddLineToPoint(ctx, x -im2, y -im2*1.005); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFourSuaresX(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(2.00 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x , y + im2*1.01); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x -im2, y ); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x , y -im2); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x +im2, y ); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x , y +im2*0.99); - CGContextAddLineToPoint(ctx, x +im2*0.99, y ); - CGContextAddLineToPoint(ctx, x , y -im2*0.99); - CGContextAddLineToPoint(ctx, x -im2*0.99, y ); - CGContextAddLineToPoint(ctx, x , y +im2*0.99); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawMarkerFourSuaresPlus(CGContextRef ctx, unsigned n, const TPoint *xy, - Size_t markerSize) -{ - const Int_t im = Int_t(4 * markerSize + 0.5); - const Int_t im2 = Int_t(1.33 * markerSize + 0.5); - - for (unsigned i = 0; i < n; ++i) { - const Double_t x = xy[i].fX; - const Double_t y = xy[i].fY; - - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, x -im2, y - im2*1.01); - CGContextAddLineToPoint(ctx, x -im2, y + im); - CGContextAddLineToPoint(ctx, x - im, y +im2); - CGContextAddLineToPoint(ctx, x -im2, y ); - CGContextAddLineToPoint(ctx, x - im, y -im2); - CGContextAddLineToPoint(ctx, x -im2, y - im); - CGContextAddLineToPoint(ctx, x , y -im2); - CGContextAddLineToPoint(ctx, x +im2, y - im); - CGContextAddLineToPoint(ctx, x + im, y -im2); - CGContextAddLineToPoint(ctx, x +im2, y ); - CGContextAddLineToPoint(ctx, x + im, y +im2); - CGContextAddLineToPoint(ctx, x +im2, y + im); - CGContextAddLineToPoint(ctx, x , y +im2*0.99); - CGContextAddLineToPoint(ctx, x +im2*0.99, y ); - CGContextAddLineToPoint(ctx, x , y -im2*0.99); - CGContextAddLineToPoint(ctx, x -im2*0.99, y ); - CGContextAddLineToPoint(ctx, x , y +im2*0.99); - CGContextFillPath(ctx); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawPolyMarker(CGContextRef ctx, unsigned nPoints, const TPoint *xy, Size_t markerSize, Style_t markerStyle) -{ - switch (markerStyle) { - case kDot: - DrawMarkerDot(ctx, nPoints, xy); - break; - case kPlus: - DrawMarkerPlus(ctx, nPoints, xy, markerSize); - break; - case kStar: - DrawMarkerStar(ctx, nPoints, xy, markerSize); - break; - case kCircle: - case kOpenCircle: - DrawMarkerOpenCircle(ctx, nPoints, xy, markerSize); - break; - case kMultiply: - DrawMarkerX(ctx, nPoints, xy, markerSize); - break; - case kFullDotSmall: - DrawMarkerFullDotSmall(ctx, nPoints, xy); - break; - case kFullDotMedium: - DrawMarkerFullDotMedium(ctx, nPoints, xy); - break; - case kFullDotLarge: - case kFullCircle: - DrawMarkerFullDotLarge(ctx, nPoints, xy, markerSize); - break; - case kFullSquare: - DrawMarkerFullSquare(ctx, nPoints, xy, markerSize); - break; - case kFullTriangleUp: - DrawMarkerFullTriangleUp(ctx, nPoints, xy, markerSize); - break; - case kFullTriangleDown: - DrawMarkerFullTriangleDown(ctx, nPoints, xy, markerSize); - break; - case kOpenSquare: - DrawMarkerOpenSquare(ctx, nPoints, xy, markerSize); - break; - case kOpenTriangleUp: - DrawMarkerOpenTriangleUp(ctx, nPoints, xy, markerSize); - break; - case kOpenTriangleDown: - DrawMarkerOpenTriangleDown(ctx, nPoints, xy, markerSize); - break; - case kOpenDiamond: - DrawMarkerOpenDiamond(ctx, nPoints, xy, markerSize); - break; - case kFullDiamond: - DrawMarkerFullDiamond(ctx, nPoints, xy, markerSize); - break; - case kOpenCross: - DrawMarkerOpenCross(ctx, nPoints, xy, markerSize); - break; - case kFullCross: - DrawMarkerFullCross(ctx, nPoints, xy, markerSize); - break; - case kFullStar: - DrawMarkerFullStar(ctx, nPoints, xy, markerSize); - break; - case kOpenStar: - DrawMarkerOpenStar(ctx, nPoints, xy, markerSize); - break; - case kOpenDiamondCross: // YS - DrawMarkerOpenDiamondCross(ctx, nPoints, xy, markerSize); - break; - case kOpenSquareDiagonal: // YS - DrawMarkerOpenSquareDiagonal(ctx, nPoints, xy, markerSize); - break; - case kOpenThreeTriangles: // YS - DrawMarkerOpenThreeTriangles(ctx, nPoints, xy, markerSize); - break; - case kOctagonCross: // YS - DrawMarkerOctagonCross(ctx, nPoints, xy, markerSize); - break; - case kFullThreeTriangles: // YS - DrawMarkerFilledThreeTriangles(ctx, nPoints, xy, markerSize); - break; - case kOpenFourTrianglesX: // YS - DrawMarkerOpenFourTrianglesX(ctx, nPoints, xy, markerSize); - break; - case kFullFourTrianglesX: // YS - DrawMarkerFilledFourTrianglesX(ctx, nPoints, xy, markerSize); - break; - case kOpenDoubleDiamond: // YS - DrawMarkerOpenDoubleDiamond(ctx, nPoints, xy, markerSize); - break; - case kFullDoubleDiamond: // YS - DrawMarkerFilledDoubleDiamond(ctx, nPoints, xy, markerSize); - break; - case kOpenFourTrianglesPlus: // YS - DrawMarkerOpenFourTrianglesPlus(ctx, nPoints, xy, markerSize); - break; - case kFullFourTrianglesPlus: // YS - DrawMarkerFilledFourTrianglesPlus(ctx, nPoints, xy, markerSize); - break; - case kOpenCrossX: // YS - DrawMarkerOpenCrossX(ctx, nPoints, xy, markerSize); - break; - case kFullCrossX: // YS - DrawMarkerFilledCrossX(ctx, nPoints, xy, markerSize); - break; - case kFourSquaresX: // YS - DrawMarkerFourSquaresX(ctx, nPoints, xy, markerSize); - break; - case kFourSquaresPlus: // YS - DrawMarkerFourSquaresPlus(ctx, nPoints, xy, markerSize); - break; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void DrawPolyMarker(CGContextRef ctx, const std::vector &xy, Size_t markerSize, Style_t markerStyle) -{ - DrawPolyMarker(ctx, xy.size(), &xy[0], markerSize, markerStyle); -} - -}//namespace GraphicUtils -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/IOSPad.cxx b/graf2d/ios/src/IOSPad.cxx deleted file mode 100644 index dbb1e8212e032..0000000000000 --- a/graf2d/ios/src/IOSPad.cxx +++ /dev/null @@ -1,2386 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include -#include - -#include -#include -#include - -#include "TViewer3DPad.h" -#include "TMultiGraph.h" -#include "TVirtualX.h" -#include "TString.h" -#include "THStack.h" -#include "TFrame.h" -#include "TPoint.h" -#include "TColor.h" -#include "TGraph.h" -#include "TStyle.h" -#include "TView.h" -#include "TROOT.h" -#include "TMath.h" -#include "TH1.h" - -//Internal (module) includes. -#include "IOSGraphicUtils.h" -#include "IOSFillPatterns.h" -#include "IOSPad.h" - -namespace ROOT { -namespace iOS { - -//////////////////////////////////////////////////////////////////////////////// - -Pad::Pad(UInt_t w, UInt_t h) -{ - fViewW = w; - fViewH = h; - - fX1 = 0.; - fX2 = 1.; - fY1 = 0.; - fY2 = 1.; - - fUxmin = 0.; - fUymin = 0.; - fUxmax = 0.; - fUymax = 0.; - - fTheta = 30; - fPhi = 50; - - fAspectRatio = 0.; - - fTickx = gStyle->GetPadTickX(); - fTicky = gStyle->GetPadTickY(); - - fLogx = gStyle->GetOptLogx(); - fLogy = gStyle->GetOptLogy(); - fLogz = gStyle->GetOptLogz(); - - fBorderSize = 0; - fBorderMode = 0; - - fGridx = gStyle->GetPadGridX(); - fGridy = gStyle->GetPadGridY(); - - fAbsCoord = kFALSE; - fEditable = kTRUE; - fFixedAspectRatio = kFALSE; - - fFrame = 0; - fView = 0; - - fViewer3D = 0; - fSelectionIsValid = kFALSE; - fSelectionAreaWidth = w; - fSelected = 0; - fParentOfSelected = 0; - fInSelectionMode = kFALSE; - fInHighlightMode = kFALSE; - fObjectID = 1; - - fContains3DObject = kFALSE; - - cd(); - - // Set pad parameters and Compute conversion coefficients - SetPad("", "", 0., 0., 1., 1., 0, 0, 0); - - Range(0., 0., 1., 1.); -} - -//////////////////////////////////////////////////////////////////////////////// - -Pad::~Pad() -{ - delete fFrame; - delete fViewer3D; - //Absolutely not clear, if pad owns view or not, - //because I've seen code wich delete's and creates view outside pad - //and ignores pad. - //At the same time, there is a code in a pad, which can delete fView. - //What a mess! - delete fView; -} - -//////////////////////////////////////////////////////////////////////////////// - -const char *Pad::GetName() const -{ - return "iOSPad"; -} - -//////////////////////////////////////////////////////////////////////////////// - -const char *Pad::GetTitle() const -{ - return "iOSPad"; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::Clear(Option_t *) -{ - fSelectionIsValid = kFALSE; - fSelected = 0; - fParentOfSelected = 0; - fSelectables.clear(); - fParentPainters.clear(); - fSelectionBuffer.clear(); - fObjectID = 1; - - fPrimitives.SetOwner(kFALSE); - fPrimitives.Clear(); - - fContains3DObject = kFALSE; - - Range(0., 0., 1., 1.); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::SetViewWH(UInt_t viewW, UInt_t viewH) -{ - fViewW = viewW; - fViewH = viewH; - - ResizePad(); - - fPainter.SetTransform(fViewW, GetX1(), GetX2(), fViewH, GetY1(), GetY2()); -} - -//////////////////////////////////////////////////////////////////////////////// - -UInt_t Pad::GetWw() const -{ - return fViewW; -} - -//////////////////////////////////////////////////////////////////////////////// - -UInt_t Pad::GetWh() const -{ - return fViewH; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Fix pad aspect ratio to current value if fixed is true. - -void Pad::SetFixedAspectRatio(Bool_t fixed) -{ - if (fixed) { - if (!fFixedAspectRatio) { - if (fHNDC != 0.) - fAspectRatio = fWNDC / fHNDC; - else { - //cannot fix aspect ratio, height of pad is 0 - return; - } - fFixedAspectRatio = kTRUE; - } - } else { - fFixedAspectRatio = kFALSE; - fAspectRatio = 0; - } -} - -//////////////////////////////////////////////////////////////////////////////// -/// Convert x from pad to X. - -Double_t Pad::PadtoX(Double_t x) const -{ - if (fLogx && x < 50) - return Double_t(TMath::Exp(2.302585092994 * x)); - - return x; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Convert y from pad to Y. - -Double_t Pad::PadtoY(Double_t y) const -{ - if (fLogy && y < 50) - return Double_t(TMath::Exp(2.302585092994 * y)); - - return y; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Convert x from X to pad. - -Double_t Pad::XtoPad(Double_t x) const -{ - if (fLogx) { - if (x > 0) - x = TMath::Log10(x); - else - x = fUxmin; - } - - return x; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Convert y from Y to pad. - -Double_t Pad::YtoPad(Double_t y) const -{ - if (fLogy) { - if (y > 0) - y = TMath::Log10(y); - else - y = fUymin; - } - - return y; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t Pad::UtoPixel(Double_t u) const -{ - Double_t val; - if (fAbsCoord) - val = fUtoAbsPixelk + u * fUtoPixel; - else - val = u * fUtoPixel; - - if (val < -kMaxPixel) - return -kMaxPixel; - - if (val > kMaxPixel) - return kMaxPixel; - - return Int_t(val); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t Pad::VtoPixel(Double_t v) const -{ - Double_t val; - if (fAbsCoord) - val = fVtoAbsPixelk + v * fVtoPixel; - else - val = fVtoPixelk + v * fVtoPixel; - - if (val < -kMaxPixel) - return -kMaxPixel; - - if (val > kMaxPixel) - return kMaxPixel; - - return Int_t(val); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t Pad::XtoAbsPixel(Double_t x) const -{ - const Double_t val = fXtoAbsPixelk + x * fXtoPixel; - if (val < -kMaxPixel) - return -kMaxPixel; - if (val > kMaxPixel) - return kMaxPixel; - - return Int_t(val); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t Pad::YtoAbsPixel(Double_t y) const -{ - const Double_t val = fYtoAbsPixelk + y*fYtoPixel; - if (val < -kMaxPixel) - return -kMaxPixel; - if (val > kMaxPixel) - return kMaxPixel; - - return Int_t(val); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t Pad::XtoPixel(Double_t x) const -{ - Double_t val; - if (fAbsCoord) - val = fXtoAbsPixelk + x * fXtoPixel; - else - val = fXtoPixelk + x * fXtoPixel; - - if (val < -kMaxPixel) - return -kMaxPixel; - if (val > kMaxPixel) - return kMaxPixel; - - return Int_t(val); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t Pad::YtoPixel(Double_t y) const -{ - Double_t val; - if (fAbsCoord) - val = fYtoAbsPixelk + y * fYtoPixel; - else - val = fYtoPixelk + y * fYtoPixel; - - if (val < -kMaxPixel) - return -kMaxPixel; - if (val > kMaxPixel) - return kMaxPixel; - - return Int_t(val); -} - -//////////////////////////////////////////////////////////////////////////////// - -Double_t Pad::PixeltoX(Int_t px) -{ - if (fAbsCoord) - return fAbsPixeltoXk + px * fPixeltoX; - else - return fPixeltoXk + px * fPixeltoX; -} - -//////////////////////////////////////////////////////////////////////////////// - -Double_t Pad::PixeltoY(Int_t py) -{ - if (fAbsCoord) - return fAbsPixeltoYk + py * fPixeltoY; - else - return fPixeltoYk + py * fPixeltoY; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set Lin/Log scale for X -/// value = 0 X scale will be linear -/// value = 1 X scale will be logarithmic (base 10) -/// value > 1 reserved for possible support of base e or other - -void Pad::SetLogx(Int_t value) -{ - fLogx = value; - delete fView; - fView = 0; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Set Lin/Log scale for Y -/// value = 0 Y scale will be linear -/// value = 1 Y scale will be logarithmic (base 10) -/// value > 1 reserved for possible support of base e or other - -void Pad::SetLogy(Int_t value) -{ - fLogy = value; - delete fView; - fView=0; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Set Lin/Log scale for Z - -void Pad::SetLogz(Int_t value) -{ - fLogz = value; - delete fView; - fView=0; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set canvas range for pad and resize the pad. If the aspect ratio -/// was fixed before the call it will be un-fixed. - -void Pad::SetPad(Double_t xlow, Double_t ylow, Double_t xup, Double_t yup) -{ - // Reorder points to make sure xlow,ylow is bottom left point and - // xup,yup is top right point. - if (xup < xlow) - std::swap(xup, xlow); - - if (yup < ylow) - std::swap(yup, ylow); - - fXlowNDC = xlow; - fYlowNDC = ylow; - fWNDC = xup - xlow; - fHNDC = yup - ylow; - - SetFixedAspectRatio(kFALSE); - - ResizePad(); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set all pad parameters. - -void Pad::SetPad(const char *, const char *, Double_t xlow, Double_t ylow, Double_t xup, - Double_t yup, Color_t color, Short_t bordersize, Short_t bordermode) -{ - SetFillStyle(1001); - SetBottomMargin(gStyle->GetPadBottomMargin()); - SetTopMargin(gStyle->GetPadTopMargin()); - SetLeftMargin(gStyle->GetPadLeftMargin()); - SetRightMargin(gStyle->GetPadRightMargin()); - - if (color >= 0) - SetFillColor(color); - else - SetFillColor(gStyle->GetPadColor()); - - if (bordersize < 0) - fBorderSize = gStyle->GetPadBorderSize(); - else - fBorderSize = bordersize; - - if (bordermode < -1) - fBorderMode = gStyle->GetPadBorderMode(); - else - fBorderMode = bordermode; - - SetPad(xlow, ylow, xup, yup); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set pad vertical (default) or horizontal - -void Pad::SetVertical(Bool_t vert) -{ - if (vert) - ResetBit(kHori); - else - SetBit(kHori); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Return pad world coordinates range. - -void Pad::GetRange(Double_t &x1, Double_t &y1, Double_t &x2, Double_t &y2) -{ - x1 = fX1; - y1 = fY1; - x2 = fX2; - y2 = fY2; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set world coordinate system for the pad. -/// Emits signal "RangeChanged()", in the slot get the range -/// via GetRange(). - -void Pad::Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2) -{ - if ((x1 >= x2) || (y1 >= y2)) { - //Error("Range", "illegal world coordinates range: x1=%f, y1=%f, x2=%f, y2=%f",x1,y1,x2,y2); - return; - } - - fUxmin = x1; - fUxmax = x2; - fUymin = y1; - fUymax = y2; - - if (fX1 == x1 && fY1 == y1 && fX2 == x2 && fY2 == y2) return; - - fX1 = x1; - fY1 = y1; - fX2 = x2; - fY2 = y2; - - // compute pad conversion coefficients - ResizePad(); - - fPainter.SetTransform(GetWw(), GetX1(), GetX2(), GetWh(), GetY1(), GetY2()); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Return pad axis coordinates range. - -void Pad::GetRangeAxis(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) -{ - xmin = fUxmin; - ymin = fUymin; - xmax = fUxmax; - ymax = fUymax; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set axis coordinate system for the pad. -/// The axis coordinate system is a subset of the world coordinate system -/// xmin,ymin is the origin of the current coordinate system, -/// xmax is the end of the X axis, ymax is the end of the Y axis. -/// By default a margin of 10 per cent is left on all sides of the pad -/// Emits signal "RangeAxisChanged()", in the slot get the axis range -/// via GetRangeAxis(). - -void Pad::RangeAxis(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) -{ - if ((xmin >= xmax) || (ymin >= ymax)) { - //Error("RangeAxis", "illegal axis coordinates range: xmin=%f, ymin=%f, xmax=%f, ymax=%f", xmin, ymin, xmax, ymax); - return; - } - - fUxmin = xmin; - fUymin = ymin; - fUxmax = xmax; - fUymax = ymax; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Return lower and upper bounds of the pad in NDC coordinates. - -void Pad::GetPadPar(Double_t &xlow, Double_t &ylow, Double_t &xup, Double_t &yup) -{ - xlow = fXlowNDC; - ylow = fYlowNDC; - xup = fXlowNDC+fWNDC; - yup = fYlowNDC+fHNDC; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Overrride TAttFill::FillStyle for TPad because we want to handle style=0 -/// as style 4000. - -void Pad::SetFillStyle(Style_t fillStyle) -{ - if (!fillStyle) - fillStyle = 4000; - - TAttFill::SetFillStyle(fillStyle); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set pad editable yes/no -/// If a pad is not editable: -/// - one cannot modify the pad and its objects via the mouse. -/// - one cannot add new objects to the pad - -void Pad::SetEditable(Bool_t mode) -{ - fEditable = mode; -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPad *Pad::cd(Int_t) -{ - gPad = this; - fPainter.SetTransform(GetWw(), GetX1(), GetX2(), GetWh(), GetY1(), GetY2()); - - return this; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Set the current TView. Delete previous view if view=0. -/// This code was taken from original TPad and it dies after -/// attempt to free memory - view was already deleted by THistPainter. -/// So, I simply assume, that pad does not own fView. - -void Pad::SetView(TView *view) -{ - /* - if (!view) - delete fView; - */ - fView = view; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Compute pad conversion coefficients. -/// -/// Conversion from x to px & y to py -/// ================================= -/// -/// x - xmin px - pxlow xrange = xmax-xmin -/// -------- = ---------- with -/// xrange pxrange pxrange = pxmax-pxmin -/// -/// pxrange(x-xmin) -/// ==> px = --------------- + pxlow = fXtoPixelk + fXtoPixel * x -/// xrange -/// -/// ==> fXtoPixelk = pxlow - pxrange*xmin/xrange -/// fXtoPixel = pxrange/xrange -/// where pxlow = fAbsXlowNDC*fCw -/// pxrange = fAbsWNDC*fCw -/// -/// -/// y - ymin py - pylow yrange = ymax-ymin -/// -------- = ---------- with -/// yrange pyrange pyrange = pymax-pymin -/// -/// pyrange(y-ymin) -/// ==> py = --------------- + pylow = fYtoPixelk + fYtoPixel * y -/// yrange -/// -/// ==> fYtoPixelk = pylow - pyrange*ymin/yrange -/// fYtoPixel = pyrange/yrange -/// where pylow = (1-fAbsYlowNDC)*fCh -/// pyrange = -fAbsHNDC*fCh -/// -///- Conversion from px to x & py to y -/// ================================= -/// -/// xrange(px-pxlow) -/// ==> x = ---------------- + xmin = fPixeltoXk + fPixeltoX * px -/// pxrange -///- -/// ==> fPixeltoXk = xmin - pxlow*xrange/pxrange -/// fPixeltoX = xrange/pxrange -/// -/// yrange(py-pylow) -/// ==> y = ---------------- + ymin = fPixeltoYk + fPixeltoY * py -/// pyrange -///- -/// ==> fPixeltoYk = ymin - pylow*yrange/pyrange -/// fPixeltoY = yrange/pyrange -/// -///----------------------------------------------------------------------- -/// -/// Computation of the coefficients in case of LOG scales -///- ===================================================== -/// -/// A, Conversion from pixel coordinates to world coordinates -/// -/// Log(x) - Log(xmin) Log(x/xmin) px - pxlow -/// u = --------------------- = ------------- = ----------- -/// Log(xmax) - Log(xmin) Log(xmax/xmin) pxrange -/// -/// ==> Log(x/xmin) = u*Log(xmax/xmin) -/// x = xmin*exp(u*Log(xmax/xmin) -/// Let alfa = Log(xmax/xmin)/fAbsWNDC -/// -/// x = xmin*exp(-alfa*pxlow) + exp(alfa*px) -/// x = fPixeltoXk*exp(fPixeltoX*px) -/// ==> fPixeltoXk = xmin*exp(-alfa*pxlow) -/// fPixeltoX = alfa -/// -/// Log(y) - Log(ymin) Log(y/ymin) pylow - py -/// v = --------------------- = ------------- = ----------- -/// Log(ymax) - Log(ymin) Log(ymax/ymin) pyrange -/// -/// Let beta = Log(ymax/ymin)/pyrange -/// Log(y/ymin) = beta*pylow - beta*py -/// y/ymin = exp(beta*pylow - beta*py) -/// y = ymin*exp(beta*pylow)*exp(-beta*py) -/// ==> y = fPixeltoYk*exp(fPixeltoY*py) -/// fPixeltoYk = ymin*exp(beta*pylow) -/// fPixeltoY = -beta -/// -///- B, Conversion from World coordinates to pixel coordinates -/// -/// px = pxlow + u*pxrange -/// = pxlow + Log(x/xmin)/alfa -/// = pxlow -Log(xmin)/alfa + Log(x)/alfa -/// = fXtoPixelk + fXtoPixel*Log(x) -/// ==> fXtoPixelk = pxlow -Log(xmin)/alfa -/// ==> fXtoPixel = 1/alfa -/// -/// py = pylow - Log(y/ymin)/beta -/// = fYtoPixelk + fYtoPixel*Log(y) -/// ==> fYtoPixelk = pylow - Log(ymin)/beta -/// fYtoPixel = 1/beta - -void Pad::ResizePad(Option_t *) -{ - // Recompute subpad positions in case pad has been moved/resized - fAbsXlowNDC = fXlowNDC; - fAbsYlowNDC = fYlowNDC; - fAbsWNDC = fWNDC; - fAbsHNDC = fHNDC; - Double_t ww = fViewW; - Double_t wh = fViewH; - Double_t pxlow = fAbsXlowNDC * ww; - Double_t pylow = (1-fAbsYlowNDC) * wh; - Double_t pxrange = fAbsWNDC * ww; - Double_t pyrange = -fAbsHNDC * wh; - // Linear X axis - Double_t rounding = 0.00005; - Double_t xrange = fX2 - fX1; - fXtoAbsPixelk = rounding + pxlow - pxrange*fX1/xrange; //origin at left - fXtoPixelk = rounding + -pxrange*fX1/xrange; - fXtoPixel = pxrange/xrange; - fAbsPixeltoXk = fX1 - pxlow*xrange/pxrange; - fPixeltoXk = fX1; - fPixeltoX = xrange/pxrange; - // Linear Y axis - Double_t yrange = fY2 - fY1; - fYtoAbsPixelk = rounding + pylow - pyrange*fY1/yrange; //origin at top - fYtoPixelk = rounding + -pyrange - pyrange*fY1/yrange; - fYtoPixel = pyrange/yrange; - fAbsPixeltoYk = fY1 - pylow*yrange/pyrange; - fPixeltoYk = fY1; - fPixeltoY = yrange/pyrange; - // Coefficients to convert from pad NDC coordinates to pixel coordinates - - fUtoAbsPixelk = rounding + pxlow; - fUtoPixelk = rounding; - fUtoPixel = pxrange; - fVtoAbsPixelk = rounding + pylow; - fVtoPixelk = -pyrange; - fVtoPixel = pyrange; - gVirtualX->SetLineWidth(-1); - gVirtualX->SetTextSize(-1); - if (fView) - fView->ResizePad(); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Get frame. -///Original TPad has a COMPLETE MESS here. I'm trying to fix this. - -TFrame *Pad::GetFrame() -{ - if (!fFrame) { - fFrame = new TFrame(0., 0., 1., 1.); - - Int_t framecolor = GetFrameFillColor(); - - if (!framecolor) - framecolor = GetFillColor(); - - fFrame->SetFillColor(framecolor); - fFrame->SetFillStyle(GetFrameFillStyle()); - fFrame->SetLineColor(GetFrameLineColor()); - fFrame->SetLineStyle(GetFrameLineStyle()); - fFrame->SetLineWidth(GetFrameLineWidth()); - fFrame->SetBorderSize(GetFrameBorderSize()); - fFrame->SetBorderMode(GetFrameBorderMode()); - } - - return fFrame; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Final-overrider for TVirtualPad. - -TObject *Pad::GetPrimitive(const char *name) const -{ - TIter next(&fPrimitives); - TObject *obj = 0; - - while ((obj=next())) { - if (!strcmp(name, obj->GetName())) - return obj; - - TObject *found = obj->FindObject(name); - if (found) - return found; - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::Paint(Option_t *) -{ - cd(); - - //First, fill pad's area with white - //- it's required in case this pad - //has some fill pattern. - gVirtualX->SetFillStyle(1001); - gVirtualX->SetFillColor(0); - PaintBox(fX1,fY1,fX2,fY2); - // - PaintBorder(GetFillColor(), kTRUE); - - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - TObject *obj; - - while (lnk) { - obj = lnk->GetObject(); - obj->Paint(lnk->GetOption()); - lnk = (TObjOptLink*)lnk->Next(); - - //This is the special case, which can not - //be processed in a generic way at the moment. - if (obj->InheritsFrom("TF2")) - fContains3DObject = kTRUE; - } - - Modified(kFALSE); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PaintForSelection() -{ - fInSelectionMode = kTRUE; - fPainter.SetPainterMode(Painter::kPaintToSelectionBuffer); - // - fObjectID = 1; - fSelectables.clear(); - fParentPainters.clear(); - - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - TObject *obj; - - while (lnk) { - obj = lnk->GetObject(); - obj->Paint(lnk->GetOption()); - lnk = (TObjOptLink*)lnk->Next(); - } - // - fPainter.SetPainterMode(Painter::kPaintToView); - fInSelectionMode = kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PaintShadowForSelected() const -{ - fInHighlightMode = kTRUE; - fPainter.SetPainterMode(Painter::kPaintShadow); - - if (fParentOfSelected) { - fParentOfSelected->Paint(GetSelectedParentDrawOption()); - } else if (fSelected) { - fSelected->Paint(GetSelectedDrawOption()); - } - - fPainter.SetPainterMode(Painter::kPaintToView); - fInHighlightMode = kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PaintSelected() const -{ - fInHighlightMode = kTRUE; - - fPainter.SetPainterMode(Painter::kPaintSelected); - - if (fParentOfSelected) - fParentOfSelected->Paint(GetSelectedParentDrawOption()); - else if (fSelected) - fSelected->Paint(GetSelectedDrawOption()); - - fPainter.SetPainterMode(Painter::kPaintToView); - fInHighlightMode = kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint box in CurrentPad World coordinates. -/// -/// if option[0] = 's' the box is forced to be paint with style=0 -/// if option[0] = 'l' the box contour is drawn - -void Pad::PaintBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Option_t *option) -{ - Int_t style0 = gVirtualX->GetFillStyle(); - Int_t style = style0; - - if (option[0] == 's') { - gVirtualX->SetFillStyle(0); - style = 0; - } - - if (style) { - if (style > 3000 && style < 4000) { - if (style < 3026) { - // draw stipples with fFillColor foreground - fPainter.DrawBox(x1, y1, x2, y2, TVirtualPadPainter::kFilled); - } - - if (style >= 3100 && style < 4000) { - Double_t xb[4], yb[4]; - xb[0] = x1; xb[1] = x1; xb[2] = x2; xb[3] = x2; - yb[0] = y1; yb[1] = y2; yb[2] = y2; yb[3] = y1; - PaintFillAreaHatches(4, xb, yb, style); - return; - } - //special case for TAttFillCanvas - if (gVirtualX->GetFillColor() == 10) { - gVirtualX->SetFillColor(1); - fPainter.DrawBox(x1, y1, x2, y2, TVirtualPadPainter::kFilled); - gVirtualX->SetFillColor(10); - } - } else if (style >= 4000 && style <= 4100) { - // For style >=4000 we make the window transparent. - // From 4000 to 4100 the window is 100% transparent to 100% opaque - //ignore this style option when this is the canvas itself - fPainter.DrawBox(x1, y1, x2, y2, TVirtualPadPainter::kFilled); - } else { - fPainter.DrawBox(x1, y1, x2, y2, TVirtualPadPainter::kFilled); - } - - if (option[0] == 'l') fPainter.DrawBox(x1, y1, x2, y2, TVirtualPadPainter::kHollow); - } else { - fPainter.DrawBox(x1, y1, x2, y2, TVirtualPadPainter::kHollow); - if (option[0] == 's') gVirtualX->SetFillStyle(style0); - } -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint fill area in CurrentPad World coordinates. - -void Pad::PaintFillArea(Int_t, Float_t *, Float_t *, Option_t *) -{ - throw std::runtime_error("Dummy version for floats"); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint fill area in CurrentPad World coordinates. - -void Pad::PaintFillArea(Int_t nn, Double_t *xx, Double_t *yy, Option_t *) -{ - if (nn < 3) return; - Int_t n=0; - Double_t xmin,xmax,ymin,ymax; - if (TestBit(TGraph::kClipFrame)) { - xmin = fUxmin; ymin = fUymin; xmax = fUxmax; ymax = fUymax; - } else { - xmin = fX1; ymin = fY1; xmax = fX2; ymax = fY2; - } - - Int_t nc = 2*nn+1; - - std::vector x(nc); - std::vector y(nc); - - n = ClipPolygon(nn, xx, yy, nc, &x[0], &y[0], xmin, ymin, xmax, ymax); - if (!n) - return; - - // Paint the fill area with hatches - Int_t fillstyle = gVirtualX->GetFillStyle(); - - if (fillstyle >= 3100 && fillstyle < 4000) { - PaintFillAreaHatches(nn, &x[0], &y[0], fillstyle); - return; - } - - fPainter.DrawFillArea(n, &x[0], &y[0]); -} - -//////////////////////////////////////////////////////////////////////////////// -///Paint histogram/graph frame. -///Original TPad has a COMPLETE MESS here, I can -///not understand, how it was possible to write. -///Trying to fix it at least to something sane. - -void Pad::PaintPadFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax) -{ - if (!fFrame) - GetFrame(); - - fFrame->SetX1(xmin); - fFrame->SetX2(xmax); - fFrame->SetY1(ymin); - fFrame->SetY2(ymax); - - if (gROOT->GetForceStyle()) - fFrame->UseCurrentStyle(); - - if (!GetListOfPrimitives()->FindObject(fFrame)) { - GetListOfPrimitives()->AddFirst(fFrame); - //fFrame->SetBit(kMustCleanup); - } - - fFrame->Paint(); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint line in CurrentPad World coordinates. - -void Pad::PaintLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) -{ - Double_t x[2], y[2]; - x[0] = x1; x[1] = x2; y[0] = y1; y[1] = y2; - - //If line is totally clipped, return - if (TestBit(TGraph::kClipFrame)) { - if (Clip(x,y,fUxmin,fUymin,fUxmax,fUymax) == 2) return; - } else { - if (Clip(x,y,fX1,fY1,fX2,fY2) == 2) return; - } - - fPainter.DrawLine(x[0], y[0], x[1], y[1]); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PaintLineNDC(Double_t u1, Double_t v1,Double_t u2, Double_t v2) -{ - const Double_t xRange = GetX2() - GetX1(); - const Double_t yRange = GetY2() - GetY1(); - - fPainter.DrawLine(GetX1() + u1 * xRange, GetY1() + v1 * yRange, - GetX1() + u2 * xRange, GetY1() + v2 * yRange); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint 3-D line in the CurrentPad. - -void Pad::PaintLine3D(Float_t *p1, Float_t *p2) -{ - if (!fView) return; - - // convert from 3-D to 2-D pad coordinate system - Double_t xpad[6]; - Double_t temp[3]; - Int_t i; - for (i=0;i<3;i++) temp[i] = p1[i]; - fView->WCtoNDC(temp, &xpad[0]); - for (i=0;i<3;i++) temp[i] = p2[i]; - fView->WCtoNDC(temp, &xpad[3]); - PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint 3-D line in the CurrentPad. - -void Pad::PaintLine3D(Double_t *p1, Double_t *p2) -{ - //take into account perspective view - if (!fView) return; - // convert from 3-D to 2-D pad coordinate system - Double_t xpad[6]; - Double_t temp[3]; - Int_t i; - for (i=0;i<3;i++) temp[i] = p1[i]; - fView->WCtoNDC(temp, &xpad[0]); - for (i=0;i<3;i++) temp[i] = p2[i]; - fView->WCtoNDC(temp, &xpad[3]); - PaintLine(xpad[0],xpad[1],xpad[3],xpad[4]); -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Paint polyline in CurrentPad World coordinates. - -void Pad::PaintPolyLine(Int_t n, Float_t *x, Float_t *y, Option_t *) -{ - if (n < 2) return; - - Double_t xmin,xmax,ymin,ymax; - if (TestBit(TGraph::kClipFrame)) { - xmin = fUxmin; ymin = fUymin; xmax = fUxmax; ymax = fUymax; - } else { - xmin = fX1; ymin = fY1; xmax = fX2; ymax = fY2; - } - Int_t i, i1=-1,np=1; - for (i=0; i 0 || TestBit(TGraph::kClipFrame)) { - xmin = fUxmin; ymin = fUymin; xmax = fUxmax; ymax = fUymax; - } else { - xmin = fX1; ymin = fY1; xmax = fX2; ymax = fY2; - } - Int_t i,i1=-1,np=0; - for (i=0; i= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) { - np++; - if (i1 < 0) i1 = i; - if (i < n-1) continue; - } - if (np == 0) continue; - - fPainter.DrawPolyMarker(np, &x[i1], &y[i1]); - - i1 = -1; - np = 0; - } -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Paint polymarker in CurrentPad World coordinates. - -void Pad::PaintPolyMarker(Int_t nn, Double_t *x, Double_t *y, Option_t *) -{ - Int_t n = TMath::Abs(nn); - Double_t xmin,xmax,ymin,ymax; - if (nn > 0 || TestBit(TGraph::kClipFrame)) { - xmin = fUxmin; ymin = fUymin; xmax = fUxmax; ymax = fUymax; - } else { - xmin = fX1; ymin = fY1; xmax = fX2; ymax = fY2; - } - Int_t i,i1=-1,np=0; - for (i=0; i= xmin && x[i] <= xmax && y[i] >= ymin && y[i] <= ymax) { - np++; - if (i1 < 0) i1 = i; - if (i < n-1) continue; - } - if (np == 0) continue; - - fPainter.DrawPolyMarker(np, &x[i1], &y[i1]); - - i1 = -1; - np = 0; - } -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint text in CurrentPad World coordinates. - -void Pad::PaintText(Double_t x, Double_t y, const char *text) -{ - fPainter.DrawText(x, y, text, TVirtualPadPainter::kClear); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PaintText(Double_t, Double_t, const wchar_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint text in CurrentPad NDC coordinates. - -void Pad::PaintTextNDC(Double_t u, Double_t v, const char *text) -{ - const Double_t xRange = GetX2() - GetX1(); - const Double_t yRange = GetY2() - GetY1(); - fPainter.DrawText(gPad->GetX1() + u * xRange, gPad->GetY1() + v * yRange, text, TVirtualPadPainter::kClear); -} - -//////////////////////////////////////////////////////////////////////////////// - -void PaintTextNDC(Double_t, Double_t, const wchar_t *) -{ -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Draw a pad frame -/// -/// Compute real pad range taking into account all margins -/// Use services of TH1F class - -TH1F *Pad::DrawFrame(Double_t xmin, Double_t ymin, Double_t xmax, Double_t ymax, const char *title) -{ - Pad *padsav = (Pad*)gPad; - if (this != padsav) { - Warning("DrawFrame","Drawframe must be called for the current pad only"); - return padsav->DrawFrame(xmin,ymin,xmax,ymax,title); - } - - cd(); - - TH1F *hframe = (TH1F*)FindObject("hframe"); - if (hframe) delete hframe; - Int_t nbins = 1000; - //if log scale in X, use variable bin size linear with log(x) - //this gives a better precision when zooming on the axis - if (fLogx && xmin > 0 && xmax > xmin) { - Double_t xminl = TMath::Log(xmin); - Double_t xmaxl = TMath::Log(xmax); - Double_t dx = (xmaxl-xminl)/nbins; - Double_t *xbins = new Double_t[nbins+1]; - xbins[0] = xmin; - for (Int_t i=1;i<=nbins;i++) { - xbins[i] = TMath::Exp(xminl+i*dx); - } - hframe = new TH1F("hframe",title,nbins,xbins); - delete [] xbins; - } else { - hframe = new TH1F("hframe",title,nbins,xmin,xmax); - } - hframe->SetBit(TH1::kNoStats); - hframe->SetBit(kCanDelete); - hframe->SetMinimum(ymin); - hframe->SetMaximum(ymax); - hframe->GetYaxis()->SetLimits(ymin,ymax); - hframe->SetDirectory(0); - hframe->Draw(" "); - - Update(); - if (padsav) padsav->cd(); - return hframe; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Redraw the frame axis -/// Redrawing axis may be necessary in case of superimposed histograms -/// when one or more histograms have a fill color -/// Instead of calling this function, it may be more convenient -/// to call directly h1->Draw("sameaxis") where h1 is the pointer -/// to the first histogram drawn in the pad. -/// -/// By default, if the pad has the options gridx or/and gridy activated, -/// the grid is not drawn by this function. -/// if option="g" is specified, this will force the drawing of the grid -/// on top of the picture - -void Pad::RedrawAxis(Option_t *option) -{ - // get first histogram in the list of primitives - TString opt = option; - opt.ToLower(); - - - cd(); - - TIter next(&fPrimitives); - TObject *obj; - while ((obj = next())) { - if (obj->InheritsFrom(TH1::Class())) { - TH1 *hobj = (TH1*)obj; - if (opt.Contains("g")) hobj->DrawCopy("sameaxig"); - else hobj->DrawCopy("sameaxis"); - return; - } - if (obj->InheritsFrom(TMultiGraph::Class())) { - TMultiGraph *mg = (TMultiGraph*)obj; - if (mg) mg->GetHistogram()->DrawCopy("sameaxis"); - return; - } - if (obj->InheritsFrom(TGraph::Class())) { - TGraph *g = (TGraph*)obj; - if (g) g->GetHistogram()->DrawCopy("sameaxis"); - return; - } - if (obj->InheritsFrom(THStack::Class())) { - THStack *hs = (THStack*)obj; - if (hs) hs->GetHistogram()->DrawCopy("sameaxis"); - return; - } - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::GetTextExtent(UInt_t &w, UInt_t &h, const char *text) -{ - fPainter.GetTextExtent(w, h, text); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::SetContext(CGContextRef ctx) -{ - fPainter.SetContext(ctx); -} - -//////////////////////////////////////////////////////////////////////////////// -///Linear search :) But list is very short. - -const char *Pad::GetSelectedParentDrawOption()const -{ - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - while (lnk) { - TObject *obj = lnk->GetObject(); - if (obj == fParentOfSelected) - return lnk->GetOption(); - lnk = (TObjOptLink*)lnk->Next(); - } - - return ""; -} - -//////////////////////////////////////////////////////////////////////////////// -///Linear search :) But list is very short. - -const char *Pad::GetSelectedDrawOption()const -{ - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - while (lnk) { - TObject *obj = lnk->GetObject(); - if (obj == fSelected) - return lnk->GetOption(); - lnk = (TObjOptLink*)lnk->Next(); - } - - return ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *Pad::FindObject(const char *name) const -{ - return fPrimitives.FindObject(name); -} - - -//////////////////////////////////////////////////////////////////////////////// - -TObject *Pad::FindObject(const TObject *obj) const -{ - return fPrimitives.FindObject(obj); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Clipping routine: Cohen Sutherland algorithm. -/// -/// If Clip ==2 the segment is outside the boundary. -/// If Clip ==1 the segment has one point outside the boundary. -/// If Clip ==0 the segment is inside the boundary. -/// -/// _Input parameters: -/// -/// x[2], y[2] : Segment coordinates -/// xclipl, yclipb, xclipr, yclipt : Clipping boundary -/// -/// _Output parameters: -/// -/// x[2], y[2] : New segment coordinates - -Int_t Pad::Clip(Float_t *x, Float_t *y, Float_t xclipl, Float_t yclipb, Float_t xclipr, Float_t yclipt) -{ - const Float_t kP=10000; - Int_t clip = 0; - - for (Int_t i=0;i<2;i++) { - if (TMath::Abs(xclipl-x[i]) <= TMath::Abs(xclipr-xclipl)/kP) x[i] = xclipl; - if (TMath::Abs(xclipr-x[i]) <= TMath::Abs(xclipr-xclipl)/kP) x[i] = xclipr; - if (TMath::Abs(yclipb-y[i]) <= TMath::Abs(yclipt-yclipb)/kP) y[i] = yclipb; - if (TMath::Abs(yclipt-y[i]) <= TMath::Abs(yclipt-yclipb)/kP) y[i] = yclipt; - } - - // Compute the first endpoint codes. - Int_t code1 = ClippingCode(x[0],y[0],xclipl,yclipb,xclipr,yclipt); - Int_t code2 = ClippingCode(x[1],y[1],xclipl,yclipb,xclipr,yclipt); - - Double_t xt=0, yt=0; - Int_t clipped = 0; //this variable could be used in a future version - while(code1 + code2) { - clipped = 1; - - // The line lies entirely outside the clipping boundary - if (code1&code2) { - clip = 2; - return clip; - } - - // The line is subdivided into several parts - Int_t ic = code1; - if (ic == 0) ic = code2; - if (ic & 0x1) { - yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]); - xt = xclipl; - } - if (ic & 0x2) { - yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]); - xt = xclipr; - } - if (ic & 0x4) { - xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]); - yt = yclipb; - } - if (ic & 0x8) { - xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]); - yt = yclipt; - } - if (ic == code1) { - x[0] = xt; - y[0] = yt; - code1 = ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt); - } else { - x[1] = xt; - y[1] = yt; - code2 = ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt); - } - } - clip = clipped; - return clip; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Clipping routine: Cohen Sutherland algorithm. -/// -/// If Clip ==2 the segment is outside the boundary. -/// If Clip ==1 the segment has one point outside the boundary. -/// If Clip ==0 the segment is inside the boundary. -/// -/// _Input parameters: -/// -/// x[2], y[2] : Segment coordinates -/// xclipl, yclipb, xclipr, yclipt : Clipping boundary -/// -/// _Output parameters: -/// -/// x[2], y[2] : New segment coordinates - -Int_t Pad::Clip(Double_t *x, Double_t *y, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt) -{ - const Double_t kP=10000; - Int_t clip = 0; - - for (Int_t i=0;i<2;i++) { - if (TMath::Abs(xclipl-x[i]) <= TMath::Abs(xclipr-xclipl)/kP) x[i] = xclipl; - if (TMath::Abs(xclipr-x[i]) <= TMath::Abs(xclipr-xclipl)/kP) x[i] = xclipr; - if (TMath::Abs(yclipb-y[i]) <= TMath::Abs(yclipt-yclipb)/kP) y[i] = yclipb; - if (TMath::Abs(yclipt-y[i]) <= TMath::Abs(yclipt-yclipb)/kP) y[i] = yclipt; - } - - // Compute the first endpoint codes. - Int_t code1 = 0; - if (x[0] < xclipl) code1 = code1 | 0x1; - if (x[0] > xclipr) code1 = code1 | 0x2; - if (y[0] < yclipb) code1 = code1 | 0x4; - if (y[0] > yclipt) code1 = code1 | 0x8; - Int_t code2 = 0; - if (x[1] < xclipl) code2 = code2 | 0x1; - if (x[1] > xclipr) code2 = code2 | 0x2; - if (y[1] < yclipb) code2 = code2 | 0x4; - if (y[1] > yclipt) code2 = code2 | 0x8; - - Double_t xt=0, yt=0; - Int_t clipped = 0; //this variable could be used in a future version - while(code1 + code2) { - clipped = 1; - - // The line lies entirely outside the clipping boundary - if (code1&code2) { - clip = 2; - return clip; - } - - // The line is subdivided into several parts - Int_t ic = code1; - if (ic == 0) ic = code2; - if (ic & 0x1) { - yt = y[0] + (y[1]-y[0])*(xclipl-x[0])/(x[1]-x[0]); - xt = xclipl; - } - if (ic & 0x2) { - yt = y[0] + (y[1]-y[0])*(xclipr-x[0])/(x[1]-x[0]); - xt = xclipr; - } - if (ic & 0x4) { - xt = x[0] + (x[1]-x[0])*(yclipb-y[0])/(y[1]-y[0]); - yt = yclipb; - } - if (ic & 0x8) { - xt = x[0] + (x[1]-x[0])*(yclipt-y[0])/(y[1]-y[0]); - yt = yclipt; - } - if (ic == code1) { - x[0] = xt; - y[0] = yt; - code1 = ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt); - } else { - x[1] = xt; - y[1] = yt; - code2 = ClippingCode(xt,yt,xclipl,yclipb,xclipr,yclipt); - } - } - clip = clipped; - return clip; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Compute the endpoint codes for TPad::Clip. - -Int_t Pad::ClippingCode(Double_t x, Double_t y, Double_t xcl1, Double_t ycl1, Double_t xcl2, Double_t ycl2) -{ - Int_t code = 0; - if (x < xcl1) code = code | 0x1; - if (x > xcl2) code = code | 0x2; - if (y < ycl1) code = code | 0x4; - if (y > ycl2) code = code | 0x8; - return code; -} - - -//////////////////////////////////////////////////////////////////////////////// -/// Clip polygon using the Sutherland-Hodgman algorithm. -/// -/// Input parameters: -/// -/// n: Number of points in the polygon to be clipped -/// x[n], y[n] : Polygon do be clipped vertices -/// xclipl, yclipb, xclipr, yclipt : Clipping boundary -/// -/// Output parameters: -/// -/// nn: number of points in xc and yc -/// xc, yc: clipped polygon vertices. The Int_t returned by this function is -/// the number of points in the clipped polygon. These vectors must -/// be allocated by the calling function. A size of 2*n for each is -/// enough. -/// -/// Sutherland and Hodgman's polygon-clipping algorithm uses a divide-and-conquer -/// strategy: It solves a series of simple and identical problems that, when -/// combined, solve the overall problem. The simple problem is to clip a polygon -/// against a single infinite clip edge. Four clip edges, each defining one boundary -/// of the clip rectangle, successively clip a polygon against a clip rectangle. -/// -/// Steps of Sutherland-Hodgman's polygon-clipping algorithm: -/// -/// * Polygons can be clipped against each edge of the window one at a time. -/// Windows/edge intersections, if any, are easy to find since the X or Y coordinates -/// are already known. -/// * Vertices which are kept after clipping against one window edge are saved for -/// clipping against the remaining edges. -/// * Note that the number of vertices usually changes and will often increases. -/// -/// The clip boundary determines a visible and invisible region. The edges from -/// vertex i to vertex i+1 can be one of four types: -/// -/// * Case 1 : Wholly inside visible region - save endpoint -/// * Case 2 : Exit visible region - save the intersection -/// * Case 3 : Wholly outside visible region - save nothing -/// * Case 4 : Enter visible region - save intersection and endpoint - -Int_t Pad::ClipPolygon(Int_t n, Double_t *x, Double_t *y, Int_t nn, Double_t *xc, Double_t *yc, Double_t xclipl, Double_t yclipb, Double_t xclipr, Double_t yclipt) -{ - Int_t nc, nc2; - Double_t x1, y1, x2, y2, slope; // Segment to be clipped - - std::vector xc2(nn); - std::vector yc2(nn); - - // Clip against the left boundary - x1 = x[n-1]; y1 = y[n-1]; - nc2 = 0; - Int_t i; - for (i=0; i= xclipl) { - if (x2 < xclipl) { - xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-x1)+y1; - } else { - xc2[nc2] = x2; yc2[nc2++] = y2; - } - } else { - if (x2 >= xclipl) { - xc2[nc2] = xclipl; yc2[nc2++] = slope*(xclipl-x1)+y1; - xc2[nc2] = x2; yc2[nc2++] = y2; - } - } - x1 = x2; y1 = y2; - } - - // Clip against the top boundary - x1 = xc2[nc2-1]; y1 = yc2[nc2-1]; - nc = 0; - for (i=0; i yclipt) { - xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt; - } else { - xc[nc] = x2; yc[nc++] = y2; - } - } else { - if (y2 <= yclipt) { - xc[nc] = x1+(yclipt-y1)*slope; yc[nc++] = yclipt; - xc[nc] = x2; yc[nc++] = y2; - } - } - x1 = x2; y1 = y2; - } - - // Clip against the right boundary - x1 = xc[nc-1]; y1 = yc[nc-1]; - nc2 = 0; - for (i=0; i xclipr) { - xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-x1)+y1; - } else { - xc2[nc2] = x2; yc2[nc2++] = y2; - } - } else { - if (x2 <= xclipr) { - xc2[nc2] = xclipr; yc2[nc2++] = slope*(xclipr-x1)+y1; - xc2[nc2] = x2; yc2[nc2++] = y2; - } - } - x1 = x2; y1 = y2; - } - - // Clip against the bottom boundary - x1 = xc2[nc2-1]; y1 = yc2[nc2-1]; - nc = 0; - for (i=0; i= yclipb) { - if (y2 < yclipb) { - xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb; - } else { - xc[nc] = x2; yc[nc++] = y2; - } - } else { - if (y2 >= yclipb) { - xc[nc] = x1+(yclipb-y1)*slope; yc[nc++] = yclipb; - xc[nc] = x2; yc[nc++] = y2; - } - } - x1 = x2; y1 = y2; - } - - if (nc < 3) nc =0; - return nc; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Paint the pad border. -/// Draw first a box as a normal filled box - -void Pad::PaintBorder(Color_t color, Bool_t tops) -{ - if(color >= 0) { - TAttLine::Modify(); //Change line attributes only if necessary - TAttFill::Modify(); //Change fill area attributes only if necessary - - PaintBox(fX1,fY1,fX2,fY2); - } - - if (color < 0) - color = -color; - // then paint 3d frame (depending on bordermode) - if (IsTransparent()) - return; - - // Paint a 3D frame around the pad. - if (!fBorderMode) - return; - - Int_t bordersize = fBorderSize; - if (bordersize <= 0) - bordersize = 2; - - const Double_t realBsX = bordersize / (GetAbsWNDC() * GetWw()) * (fX2 - fX1); - const Double_t realBsY = bordersize / (GetAbsHNDC() * GetWh()) * (fY2 - fY1); - - Short_t px1,py1,px2,py2; - Double_t xl, xt, yl, yt; - - // GetDarkColor() and GetLightColor() use GetFillColor() - Color_t oldcolor = GetFillColor(); - SetFillColor(color); - TAttFill::Modify(); - Color_t light = 0, dark = 0; - if (color != 0) { - light = TColor::GetColorBright(color); - dark = TColor::GetColorDark(color); - } - - // Compute real left bottom & top right of the box in pixels - px1 = XtoPixel(fX1); py1 = YtoPixel(fY1); - px2 = XtoPixel(fX2); py2 = YtoPixel(fY2); - if (px1 < px2) {xl = fX1; xt = fX2; } - else {xl = fX2; xt = fX1;} - if (py1 > py2) {yl = fY1; yt = fY2;} - else {yl = fY2; yt = fY1;} - - Double_t frameXs[7] = {}, frameYs[7] = {}; - - // Draw top&left part of the box - frameXs[0] = xl; frameYs[0] = yl; - frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY; - frameXs[2] = frameXs[1]; frameYs[2] = yt - realBsY; - frameXs[3] = xt - realBsX; frameYs[3] = frameYs[2]; - frameXs[4] = xt; frameYs[4] = yt; - frameXs[5] = xl; frameYs[5] = yt; - frameXs[6] = xl; frameYs[6] = yl; - - if (fBorderMode == -1) gVirtualX->SetFillColor(dark); - else gVirtualX->SetFillColor(light); - fPainter.DrawFillArea(7, frameXs, frameYs); - - // Draw bottom&right part of the box - frameXs[0] = xl; frameYs[0] = yl; - frameXs[1] = xl + realBsX; frameYs[1] = yl + realBsY; - frameXs[2] = xt - realBsX; frameYs[2] = frameYs[1]; - frameXs[3] = frameXs[2]; frameYs[3] = yt - realBsY; - frameXs[4] = xt; frameYs[4] = yt; - frameXs[5] = xt; frameYs[5] = yl; - frameXs[6] = xl; frameYs[6] = yl; - - if (fBorderMode == -1) gVirtualX->SetFillColor(light); - else gVirtualX->SetFillColor(dark); - fPainter.DrawFillArea(7, frameXs, frameYs); - - gVirtualX->SetFillColor(-1); - SetFillColor(oldcolor); - - if (!tops) - return; -} - -//////////////////////////////////////////////////////////////////////////////// -/// This function paints hatched fill area arcording to the FillStyle value -/// The convention for the Hatch is the following: -/// -/// FillStyle = 3ijk -/// -/// i (1-9) : specify the space between each hatch -/// 1 = minimum 9 = maximum -/// the final spacing is i*GetHatchesSpacing(). The hatches spacing -/// is set by SetHatchesSpacing() -/// -/// j (0-9) : specify angle between 0 and 90 degrees -/// -/// 0 = 0 -/// 1 = 10 -/// 2 = 20 -/// 3 = 30 -/// 4 = 45 -/// 5 = Not drawn -/// 6 = 60 -/// 7 = 70 -/// 8 = 80 -/// 9 = 90 -/// -/// k (0-9) : specify angle between 90 and 180 degrees -/// 0 = 180 -/// 1 = 170 -/// 2 = 160 -/// 3 = 150 -/// 4 = 135 -/// 5 = Not drawn -/// 6 = 120 -/// 7 = 110 -/// 8 = 100 -/// 9 = 90 - -void Pad::PaintFillAreaHatches(Int_t nn, Double_t *xx, Double_t *yy, Int_t FillStyle) -{ - static Double_t ang1[10] = {0., 10., 20., 30., 45.,5., 60., 70., 80., 90.}; - static Double_t ang2[10] = {180.,170.,160.,150.,135.,5.,120.,110.,100., 90.}; - - Int_t fasi = FillStyle%1000; - Int_t idSPA = (Int_t)(fasi/100); - Int_t iAng2 = (Int_t)((fasi-100*idSPA)/10); - Int_t iAng1 = fasi%10; - Double_t dy = 0.003*(Double_t)(idSPA)*gStyle->GetHatchesSpacing(); - Int_t lw = gStyle->GetHatchesLineWidth(); - Short_t lws = 0; - Int_t lss = 0; - Int_t lcs = 0; - - // Save the current line attributes - - lws = gVirtualX->GetLineWidth(); - lss = gVirtualX->GetLineStyle(); - lcs = gVirtualX->GetLineColor(); - - // Change the current line attributes to draw the hatches - gVirtualX->SetLineStyle(1); - gVirtualX->SetLineWidth(Short_t(lw)); - gVirtualX->SetLineColor(gVirtualX->GetFillColor()); - - // Draw the hatches - if (ang1[iAng1] != 5.) PaintHatches(dy, ang1[iAng1], nn, xx, yy); - if (ang2[iAng2] != 5.) PaintHatches(dy, ang2[iAng2], nn, xx, yy); - - // Restore the line attributes - gVirtualX->SetLineStyle(lss); - gVirtualX->SetLineWidth(lws); - gVirtualX->SetLineColor(lcs); -} - -//////////////////////////////////////////////////////////////////////////////// -/// This routine draw hatches inclined with the -/// angle "angle" and spaced of "dy" in normalized device -/// coordinates in the surface defined by n,xx,yy. - -void Pad::PaintHatches(Double_t dy, Double_t angle, - Int_t nn, Double_t *xx, Double_t *yy) -{ - Int_t i, i1, i2, nbi, m, inv; - Double_t ratiox, ratioy, ymin, ymax, yrot, ycur; - const Double_t angr = TMath::Pi()*(180-angle)/180.; - const Double_t epsil = 0.0001; - const Int_t maxnbi = 100; - Double_t xli[maxnbi], xlh[2], ylh[2], xt1, xt2, yt1, yt2; - Double_t ll, x, y, x1, x2, y1, y2, a, b, xi, xip, xin, yi, yip; - - Double_t rwxmin = gPad->GetX1(); - Double_t rwxmax = gPad->GetX2(); - Double_t rwymin = gPad->GetY1(); - Double_t rwymax = gPad->GetY2(); - ratiox = 1/(rwxmax-rwxmin); - ratioy = 1/(rwymax-rwymin); - - Double_t sina = TMath::Sin(angr), sinb; - Double_t cosa = TMath::Cos(angr), cosb; - if (TMath::Abs(cosa) <= epsil) cosa=0.; - if (TMath::Abs(sina) <= epsil) sina=0.; - sinb = -sina; - cosb = cosa; - - // Values needed to compute the hatches in TRUE normalized space (NDC) - Int_t iw = gPad->GetWw(); - Int_t ih = gPad->GetWh(); - Double_t x1p,y1p,x2p,y2p; - gPad->GetPadPar(x1p,y1p,x2p,y2p); - iw = (Int_t)(iw*x2p)-(Int_t)(iw*x1p); - ih = (Int_t)(ih*y2p)-(Int_t)(ih*y1p); - Double_t wndc = TMath::Min(1.,(Double_t)iw/(Double_t)ih); - Double_t hndc = TMath::Min(1.,(Double_t)ih/(Double_t)iw); - - // Search ymin and ymax - ymin = 1.; - ymax = 0.; - for (i=1; i<=nn; i++) { - x = wndc*ratiox*(xx[i-1]-rwxmin); - y = hndc*ratioy*(yy[i-1]-rwymin); - yrot = sina*x+cosa*y; - if (yrot > ymax) ymax = yrot; - if (yrot < ymin) ymin = yrot; - } - ymax = (Double_t)((Int_t)(ymax/dy))*dy; - - for (ycur=ymax; ycur>=ymin; ycur=ycur-dy) { - nbi = 0; - for (i=2; i<=nn+1; i++) { - i2 = i; - i1 = i-1; - if (i == nn+1) i2=1; - x1 = wndc*ratiox*(xx[i1-1]-rwxmin); - y1 = hndc*ratioy*(yy[i1-1]-rwymin); - x2 = wndc*ratiox*(xx[i2-1]-rwxmin); - y2 = hndc*ratioy*(yy[i2-1]-rwymin); - xt1 = cosa*x1-sina*y1; - yt1 = sina*x1+cosa*y1; - xt2 = cosa*x2-sina*y2; - yt2 = sina*x2+cosa*y2; - - // Line segment parallel to oy - if (xt1 == xt2) { - if (yt1 < yt2) { - yi = yt1; - yip = yt2; - } else { - yi = yt2; - yip = yt1; - } - if ((yi <= ycur) && (ycur < yip)) { - nbi++; - if (nbi >= maxnbi) return; - xli[nbi-1] = xt1; - } - continue; - } - - // Line segment parallel to ox - if (yt1 == yt2) { - if (yt1 == ycur) { - nbi++; - if (nbi >= maxnbi) return; - xli[nbi-1] = xt1; - nbi++; - if (nbi >= maxnbi) return; - xli[nbi-1] = xt2; - } - continue; - } - - // Other line segment - a = (yt1-yt2)/(xt1-xt2); - b = (yt2*xt1-xt2*yt1)/(xt1-xt2); - if (xt1 < xt2) { - xi = xt1; - xip = xt2; - } else { - xi = xt2; - xip = xt1; - } - xin = (ycur-b)/a; - if ((xi <= xin) && (xin < xip) && - (TMath::Min(yt1,yt2) <= ycur) && - (ycur < TMath::Max(yt1,yt2))) { - nbi++; - if (nbi >= maxnbi) return; - xli[nbi-1] = xin; - } - } - - // Sorting of the x coordinates intersections - inv = 0; - m = nbi-1; -L30: - for (i=1; i<=m; i++) { - if (xli[i] < xli[i-1]) { - inv++; - ll = xli[i-1]; - xli[i-1] = xli[i]; - xli[i] = ll; - } - } - m--; - if (inv == 0) goto L50; - inv = 0; - goto L30; - - // Draw the hatches -L50: - if (nbi%2 != 0) continue; - - for (i=1; i<=nbi; i=i+2) { - // Rotate back the hatches - xlh[0] = cosb*xli[i-1]-sinb*ycur; - ylh[0] = sinb*xli[i-1]+cosb*ycur; - xlh[1] = cosb*xli[i] -sinb*ycur; - ylh[1] = sinb*xli[i] +cosb*ycur; - // Convert hatches' positions from true NDC to WC - xlh[0] = (xlh[0]/wndc)*(rwxmax-rwxmin)+rwxmin; - ylh[0] = (ylh[0]/hndc)*(rwymax-rwymin)+rwymin; - xlh[1] = (xlh[1]/wndc)*(rwxmax-rwxmin)+rwxmin; - ylh[1] = (ylh[1]/hndc)*(rwymax-rwymin)+rwymin; - gPad->PaintLine(xlh[0], ylh[0], xlh[1], ylh[1]); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualViewer3D *Pad::GetViewer3D(Option_t *) -{ - if (!fViewer3D) - fViewer3D = new TViewer3DPad(*this); - return fViewer3D; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::ExecuteRotateView(Int_t evType, Int_t px, Int_t py) -{ - fView->ExecuteRotateView(evType, px, py); -} - -//////////////////////////////////////////////////////////////////////////////// -///This copy is a copy&paste&cut_half_of_guts from original TPad. -///I do not understand at the moment, why this code is here and not in TAxis. - -void Pad::ExecuteEventAxis(Int_t event, Int_t px, Int_t py, TAxis *axis) -{ - static Int_t axisNumber; - static Double_t ratio1, ratio2; - static Int_t px1old, py1old, px2old, py2old; - Int_t bin1, bin2; - Double_t temp, xmin,xmax; - - switch (event) { - - case kButton1Down: - axisNumber = 1; - if (!strcmp(axis->GetName(),"xaxis")) { - axisNumber = 1; - if (!IsVertical()) axisNumber = 2; - } - if (!strcmp(axis->GetName(),"yaxis")) { - axisNumber = 2; - if (!IsVertical()) axisNumber = 1; - } - if (!strcmp(axis->GetName(),"zaxis")) { - axisNumber = 3; - } - if (axisNumber == 1) { - ratio1 = (AbsPixeltoX(px) - GetUxmin())/(GetUxmax() - GetUxmin()); - px1old = XtoAbsPixel(GetUxmin()+ratio1*(GetUxmax() - GetUxmin())); - py1old = YtoAbsPixel(GetUymin()); - px2old = px1old; - py2old = YtoAbsPixel(GetUymax()); - } else if (axisNumber == 2) { - ratio1 = (AbsPixeltoY(py) - GetUymin())/(GetUymax() - GetUymin()); - py1old = YtoAbsPixel(GetUymin()+ratio1*(GetUymax() - GetUymin())); - px1old = XtoAbsPixel(GetUxmin()); - px2old = XtoAbsPixel(GetUxmax()); - py2old = py1old; - } else { - ratio1 = (AbsPixeltoY(py) - GetUymin())/(GetUymax() - GetUymin()); - py1old = YtoAbsPixel(GetUymin()+ratio1*(GetUymax() - GetUymin())); - px1old = XtoAbsPixel(GetUxmax()); - px2old = XtoAbsPixel(GetX2()); - py2old = py1old; - } - // No break !!! - - case kButton1Motion: - if (axisNumber == 1) { - ratio2 = (AbsPixeltoX(px) - GetUxmin())/(GetUxmax() - GetUxmin()); - px2old = XtoAbsPixel(GetUxmin()+ratio2*(GetUxmax() - GetUxmin())); - } else { - ratio2 = (AbsPixeltoY(py) - GetUymin())/(GetUymax() - GetUymin()); - py2old = YtoAbsPixel(GetUymin()+ratio2*(GetUymax() - GetUymin())); - } - break; - - case kButton1Up: - - if (1) { - if (axisNumber == 1) { - ratio2 = (AbsPixeltoX(px) - GetUxmin())/(GetUxmax() - GetUxmin()); - xmin = GetUxmin() +ratio1*(GetUxmax() - GetUxmin()); - xmax = GetUxmin() +ratio2*(GetUxmax() - GetUxmin()); - } else if (axisNumber == 2) { - ratio2 = (AbsPixeltoY(py) - GetUymin())/(GetUymax() - GetUymin()); - xmin = GetUymin() +ratio1*(GetUymax() - GetUymin()); - xmax = GetUymin() +ratio2*(GetUymax() - GetUymin()); - } else { - ratio2 = (AbsPixeltoY(py) - GetUymin())/(GetUymax() - GetUymin()); - xmin = ratio1; - xmax = ratio2; - } - if (xmin > xmax) { - temp = xmin; - xmin = xmax; - xmax = temp; - temp = ratio1; - ratio1 = ratio2; - ratio2 = temp; - } - - // xmin and xmax need to be adjusted in case of CONT4. - - if (!strcmp(axis->GetName(),"xaxis")) axisNumber = 1; - if (!strcmp(axis->GetName(),"yaxis")) axisNumber = 2; - if (ratio2 - ratio1 > 0.05) { - //update object owning this axis - TH1 *hobj1 = (TH1*)axis->GetParent(); - bin1 = axis->FindFixBin(xmin); - bin2 = axis->FindFixBin(xmax); - if (axisNumber == 1) axis->SetRange(bin1,bin2); - if (axisNumber == 2 && hobj1) { - if (hobj1->GetDimension() == 1) { - if (hobj1->GetNormFactor() != 0) { - Double_t norm = hobj1->GetSumOfWeights()/hobj1->GetNormFactor(); - xmin *= norm; - xmax *= norm; - } - hobj1->SetMinimum(xmin); - hobj1->SetMaximum(xmax); - hobj1->SetBit(TH1::kIsZoomed); - } else { - axis->SetRange(bin1,bin2); - } - } - } - } - break; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t Pad::SelectionIsValid() const -{ - return fSelectionIsValid; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::InvalidateSelection(Bool_t invalidateBufferOnly) -{ - fSelectionIsValid = kFALSE; - if (!invalidateBufferOnly) { - fSelected = 0; - fParentOfSelected = 0; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::SetSelectionBuffer(UInt_t w, UInt_t h, unsigned char *buff) -{ - fSelectionAreaWidth = w; - fSelectionIsValid = kTRUE; - fSelectionBuffer.assign(buff, buff + w * h * 4); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::Pick(Int_t px, Int_t py) -{ - if (fContains3DObject) {/* && fView) { - const Double_t dx = 0.05 * (fUxmax - fUxmin); - if ((AbsPixeltoX(px) > fUxmin + dx) && (AbsPixeltoX(px) < fUxmax - dx)) { - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - while (lnk) { - TObject *obj = lnk->GetObject(); - if (obj->InheritsFrom("TF2")) {//The only 3D object we can have now. - fSelected = obj; - fParentOfSelected = obj; - return; - } - } - } else { - fSelected = 0; - fParentOfSelected = 0; - return; - }*/ - fSelected = 0; - fParentOfSelected = 0; - return; - } - - const UInt_t offset = (py * fSelectionAreaWidth + px) * 4; - const unsigned red = fSelectionBuffer[offset + 1]; - const unsigned green = fSelectionBuffer[offset + 2]; - const unsigned blue = fSelectionBuffer[offset + 3]; - - GraphicUtils::IDEncoder enc(10, 255); - const UInt_t id = enc.ColorToId(red, green, blue); - if (id > 0 && id <= fSelectables.size()) { - const ObjectPair_t &found = fSelectables[id - 1]; - //fSelected = fSelectables[id]; - fSelected = found.first; - fParentOfSelected = found.second; - } else { - fSelected = 0; - fParentOfSelected = 0; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::Unpick() -{ - fSelected = 0; - fParentOfSelected = 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *Pad::ObjectInPoint(Int_t px, Int_t py) -{ - const UInt_t offset = (py * fSelectionAreaWidth + px) * 4; - const unsigned red = fSelectionBuffer[offset + 1]; - const unsigned green = fSelectionBuffer[offset + 2]; - const unsigned blue = fSelectionBuffer[offset + 3]; - - GraphicUtils::IDEncoder enc(10, 255); - const UInt_t id = enc.ColorToId(red, green, blue); - if (id > 0 && id <= fSelectables.size()) { - const ObjectPair_t &found = fSelectables[id - 1]; - return found.first; - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PushTopLevelSelectable(TObject *top) -{ - if (!fInSelectionMode) - return; - Parent_t newTopLevel(top, fObjectID); - ObjectPair_t newPair(top, top); - fPainter.SetCurrentObjectID(fObjectID); - fObjectID++; - - fParentPainters.push_back(newTopLevel); - fSelectables.push_back(newPair); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PushSelectableObject(TObject *obj) -{ - if (!fInSelectionMode) - return; - - ObjectPair_t newPair(obj, 0); - if (fParentPainters.size()) - newPair.second = fParentPainters.back().first; - fSelectables.push_back(newPair); - fPainter.SetCurrentObjectID(fObjectID); - fObjectID++; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PopTopLevelSelectable() -{ - if (!fInSelectionMode) - return; - - if (fParentPainters.size()) - fParentPainters.pop_back(); - if (fParentPainters.size()) - fPainter.SetCurrentObjectID(fParentPainters.back().second); -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *Pad::GetSelected()const -{ - return fSelected; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::PaintThumbnail() -{ - cd(); - - fPainter.SetPainterMode(Painter::kPaintThumbnail); - - gVirtualX->SetFillStyle(1001); - gVirtualX->SetFillColor(0); - - PaintBox(fX1,fY1,fX2,fY2); - PaintBorder(GetFillColor(), kTRUE); - - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - TObject *obj; - - while (lnk) { - obj = lnk->GetObject(); - obj->Paint(lnk->GetOption()); - lnk = (TObjOptLink*)lnk->Next(); - } - - fPainter.SetPainterMode(Painter::kPaintToView); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Pad::SetPaintOption(const TObject *obj, const char *option) -{ - TObjOptLink *lnk = (TObjOptLink*)GetListOfPrimitives()->FirstLink(); - - while (lnk) { - TObject *nestedObj = lnk->GetObject(); - if (obj == nestedObj) { - lnk->SetOption(option); - break; - } - lnk = (TObjOptLink*)lnk->Next(); - } -} - -} -} diff --git a/graf2d/ios/src/IOSPadStub.cxx b/graf2d/ios/src/IOSPadStub.cxx deleted file mode 100644 index 5542f2a88aece..0000000000000 --- a/graf2d/ios/src/IOSPadStub.cxx +++ /dev/null @@ -1,452 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include "IOSPadStub.h" - -namespace ROOT { -namespace iOS { - -//////////////////////////////////////////////////////////////////////////////// - -TLegend *PadStub::BuildLegend(Double_t, Double_t, Double_t, Double_t, const char *) -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Close(Option_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::AddExec(const char *, const char *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::CopyPixmap() -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::CopyPixmaps() -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::DeleteExec(const char *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Divide(Int_t, Int_t, Float_t, Float_t, Int_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Draw(Option_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::DrawClassObject(const TObject *, Option_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetBatch(Bool_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetCanvasID() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TCanvasImp *PadStub::GetCanvasImp() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetEvent() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetEventX() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetEventY() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetNumber() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPad *PadStub::GetPad(Int_t) const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *PadStub::GetPadPointer() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPad *PadStub::GetPadSave() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPad *PadStub::GetSelectedPad() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *PadStub::GetView3D() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::ResetView3D(TObject *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -TCanvas *PadStub::GetCanvas() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPad *PadStub::GetVirtCanvas() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetPadPaint() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetPixmapID() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t PadStub::HasCrosshair() const -{ - return kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetCrosshair(Int_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetAttFillPS(Color_t, Style_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetAttLinePS(Color_t, Style_t, Width_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetAttMarkerPS(Color_t, Style_t, Size_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetAttTextPS(Int_t, Float_t, Color_t, Style_t, Float_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::PaintText(Double_t, Double_t, const wchar_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::PaintTextNDC(Double_t, Double_t, const wchar_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::PaintBorderPS(Double_t, Double_t, Double_t, Double_t, Int_t, Int_t, Int_t, Int_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t PadStub::GetGLDevice() -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetCopyGLDevice(Bool_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Pop() -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Print(const char *) const -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Print(const char *, Option_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPad *PadStub::GetMother() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *PadStub::CreateToolTip(const TBox *, const char *, Long_t) -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::DeleteToolTip(TObject *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::ResetToolTip(TObject *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::CloseToolTip(TObject *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetToolTipText(const char *, Long_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::HighLight(Color_t, Bool_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Color_t PadStub::GetHighLightColor() const -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::ls(Option_t *) const -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Modified(Bool_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t PadStub::OpaqueMoving() const -{ - return kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t PadStub::OpaqueResizing() const -{ - return kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::PaintModified() -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::RecursiveRemove(TObject *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SaveAs(const char *,Option_t *) const -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetCanvas(TCanvas *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetCanvasSize(UInt_t, UInt_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetCursor(ECursor) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetDoubleBuffer(Int_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetName(const char *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetTitle(const char *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::SetSelected(TObject *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::ShowGuidelines(TObject *, Int_t, char, bool) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::Update() -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -TObject *PadStub::WaitPrimitive(const char *, const char *) -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// - -void PadStub::ReleaseViewer3D(Option_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t PadStub::HasViewer3D() const -{ - return kFALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -TVirtualPadPainter *PadStub::GetPainter() -{ - return 0; -} - -} -} diff --git a/graf2d/ios/src/IOSPainter.cxx b/graf2d/ios/src/IOSPainter.cxx deleted file mode 100644 index 4a276220ae833..0000000000000 --- a/graf2d/ios/src/IOSPainter.cxx +++ /dev/null @@ -1,651 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ -#include - -#include -#include -#include - -#include "TVirtualX.h" -#include "TMath.h" - -#include "IOSResourceManagement.h" -#include "IOSSelectionMarkers.h" -#include "IOSTextOperations.h" -#include "IOSGraphicUtils.h" -#include "IOSFillPatterns.h" -#include "IOSLineStyles.h" -#include "IOSPainter.h" -#include "IOSMarkers.h" - -namespace ROOT { -namespace iOS { - -namespace { - -//////////////////////////////////////////////////////////////////////////////// - -void SetMarkerFillColor(CGContextRef ctx, Color_t colorIndex) -{ - Float_t r = 0.f, g = 0.f, b = 0.f, a = 1.f; - GraphicUtils::GetColorForIndex(colorIndex, r, g, b); - CGContextSetRGBFillColor(ctx, r, g, b, a); -} - -//////////////////////////////////////////////////////////////////////////////// - -void SetMarkerStrokeColor(CGContextRef ctx, Color_t colorIndex) -{ - Float_t r = 0.f, g = 0.f, b = 0.f, a = 1.f; - GraphicUtils::GetColorForIndex(colorIndex, r, g, b); - CGContextSetRGBStrokeColor(ctx, r, g, b, a); -} - -//////////////////////////////////////////////////////////////////////////////// - -bool MarkerIsFilledPolygon(Style_t markerStyle) -{ - switch (markerStyle) { - case kDot: - case kFullDotMedium: - case kFullDotLarge: - case kFullCircle: - case kFullSquare: - case kFullTriangleUp: - case kFullTriangleDown: - case kFullStar: - case kFullDiamond: - case kFullCross: - return true; - default: - return false; - } -} - -const CGFloat shadowColor[] = {0.1f, 0.1f, 0.1f, 0.2f}; - -} - -//////////////////////////////////////////////////////////////////////////////// -///Default ctor. - -SpaceConverter::SpaceConverter() - : fXMin(0.), - fXConv(1.), - fYMin(0.), - fYConv(1.) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -///Construct for conversion. - -SpaceConverter::SpaceConverter(UInt_t w, Double_t xMin, Double_t xMax, UInt_t h, Double_t yMin, Double_t yMax) -{ - SetConverter(w, xMin, xMax, h, yMin, yMax); -} - -//////////////////////////////////////////////////////////////////////////////// -///Set conversion coefficients. - -void SpaceConverter::SetConverter(UInt_t w, Double_t xMin, Double_t xMax, UInt_t h, Double_t yMin, Double_t yMax) -{ - fXMin = xMin; - fXConv = w / (xMax - xMin); - - fYMin = yMin; - fYConv = h / (yMax - yMin); -} - -//////////////////////////////////////////////////////////////////////////////// -///From pad's user space to view's user space. - -Double_t SpaceConverter::XToView(Double_t x)const -{ - return (x - fXMin) * fXConv; -} - -//////////////////////////////////////////////////////////////////////////////// -///From pad's user space to view's user space. - -Double_t SpaceConverter::YToView(Double_t y)const -{ - return (y - fYMin) * fYConv; -} - -//////////////////////////////////////////////////////////////////////////////// -///Default ctor. - -Painter::Painter() - : fCtx(0), - fPainterMode(kPaintToView), - fCurrentObjectID(0), - fEncoder(10, 255) //radix is 10, color channel value is 255. -{ -} - -//////////////////////////////////////////////////////////////////////////////// -///Painter can work in four modes: -///1. draw objects into a view; -///2. draw them into a bitmap file with a special color("selection mode"); -///3. draw highlighted object -///4. draw object's shadow - -void Painter::SetStrokeParameters()const -{ - //In selection mode line color is quite a special thing, it's used as - //object's identity. Line width is also different: to be selectable by tap gesture, - //line has to be very thick. - //In "shadow mode" or "highlight mode" it's just gray or pink and transparent. - - CGContextSetLineCap(fCtx, kCGLineCapRound); - CGContextSetLineJoin(fCtx, kCGLineJoinMiter); - - if (fPainterMode == kPaintToSelectionBuffer) { - SetLineColorForCurrentObjectID(); - //If line's width is less, it's already very difficult to pick. - CGContextSetLineWidth(fCtx, 40.f); - return; - } - - if (fPainterMode == kPaintShadow) { - CGContextSetRGBStrokeColor(fCtx, shadowColor[0], shadowColor[1], shadowColor[2], shadowColor[3]); - CGContextSetLineWidth(fCtx, 5.f); - return; - } - - if (gVirtualX->GetLineWidth() > 1.f) - CGContextSetLineWidth(fCtx, gVirtualX->GetLineWidth()); - - const Float_t alpha = 1.f;//Must come from gVirtualX. - Float_t red = 0.f, green = 0.f, blue = 0.f;//Black line by default. - - GraphicUtils::GetColorForIndex(gVirtualX->GetLineColor(), red, green, blue); - CGContextSetRGBStrokeColor(fCtx, red, green, blue, alpha); - - const Style_t lineStyle = gVirtualX->GetLineStyle(); - if (lineStyle > 1 && lineStyle <= 10) - CGContextSetLineDash(fCtx, 0., GraphicUtils::dashLinePatterns[lineStyle - 1], GraphicUtils::linePatternLengths[lineStyle - 1]); - else - CGContextSetLineDash(fCtx, 0., 0, 0); -} - -//////////////////////////////////////////////////////////////////////////////// -///In principle, stroke parameters (line style, width, color) must -///be specified externally, before DrawLine is called. -///Unfortunately, in ROOT gVirtualX->SetLineXXXX is called in every -///possible place and not only inside gPad, so I simply can not -///controll all places, there line parameters are set. So -///they are specified here. - -void Painter::DrawLine(Double_t x1, Double_t y1, Double_t x2, Double_t y2) -{ - const Util::CGStateGuard contextState(fCtx); - - SetStrokeParameters(); - - const Double_t x1p = fConverter.XToView(x1); - const Double_t x2p = fConverter.XToView(x2); - - const Double_t y1p = fConverter.YToView(y1); - const Double_t y2p = fConverter.YToView(y2); - - CGContextBeginPath(fCtx); - CGContextMoveToPoint(fCtx, x1p, y1p); - CGContextAddLineToPoint(fCtx, x2p, y2p); - CGContextStrokePath(fCtx); -} - -//////////////////////////////////////////////////////////////////////////////// -///Just an empty overrider. Pad does conversions required and -///calls DrawLine instead of this. - -void Painter::DrawLineNDC(Double_t, Double_t, Double_t, Double_t) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -///TODO: check, if stroke parameters also should -///be specified for polygon. - -void Painter::SetPolygonParameters()const -{ - if (fPainterMode == kPaintToSelectionBuffer) { - SetStrokeParameters(); - SetPolygonColorForCurrentObjectID(); - return; - } - - if (fPainterMode == kPaintShadow) { - CGContextSetRGBFillColor(fCtx, shadowColor[0], shadowColor[1], shadowColor[2], shadowColor[3]); - CGContextSetRGBStrokeColor(fCtx, shadowColor[0], shadowColor[1], shadowColor[2], shadowColor[3]); - return; - } - - const Float_t alpha = 1.f;//must be in gVirtualX. - Float_t red = 1.f, green = 1.f, blue = 1.f;//White by default. - - GraphicUtils::GetColorForIndex(gVirtualX->GetFillColor(), red, green, blue); - CGContextSetRGBFillColor(fCtx, red, green, blue, alpha); - //Without the next two lines and without kCGPathFillStroke I - //have bad pictures for surfaces (hell knows, what they calculate). - CGContextSetRGBStrokeColor(fCtx, red, green, blue, alpha); - CGContextSetLineWidth(fCtx, 1.f); -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t Painter::PolygonHasStipple()const -{ - const Style_t fillStyle = gVirtualX->GetFillStyle() / 1000; - const Style_t pattern = gVirtualX->GetFillStyle() % 1000; - - return fillStyle == 3 && pattern >= 1 && pattern <= GraphicUtils::kPredefinedFillPatterns; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::FillBoxWithPattern(Double_t x1, Double_t y1, Double_t x2, Double_t y2)const -{ - const Util::CGStateGuard state(fCtx); - // - Util::RefGuardGeneric patternColorSpace(CGColorSpaceCreatePattern(0)); - CGContextSetFillColorSpace(fCtx, patternColorSpace.Get()); - - //patternIndex < kPredefinedFillPatterns, this is assumed by previous call - //to PolygonHasStipples. - CGFloat rgb[3] = {}; - Float_t r, g, b; - GraphicUtils::GetColorForIndex(gVirtualX->GetFillColor(), r, g, b); - rgb[0] = r; rgb[1] = g; rgb[2] = b; - const Style_t patternIndex = gVirtualX->GetFillStyle() % 1000 - 1; - const Util::SmartRef pattern(GraphicUtils::gPatternGenerators[patternIndex](rgb)); - - const CGFloat alpha = 1.f; - CGContextSetFillPattern(fCtx, pattern.Get(), &alpha); - - CGContextFillRect(fCtx, CGRectMake(x1, y1, x2 - x1, y2 - y1)); -} - -//////////////////////////////////////////////////////////////////////////////// -///Box with solid fill style. - -void Painter::FillBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2)const -{ - const Util::CGStateGuard contextGuard(fCtx); - SetPolygonParameters(); - - CGContextFillRect(fCtx, CGRectMake(x1, y1, x2 - x1, y2 - y1)); -} - -//////////////////////////////////////////////////////////////////////////////// -///Hollow box. - -void Painter::DrawBoxOutline(Double_t x1, Double_t y1, Double_t x2, Double_t y2)const -{ - const Util::CGStateGuard contextGuard(fCtx); - - const CGRect rect = CGRectMake(x1, y1, x2 - x1, y2 - y1); - - SetStrokeParameters(); - CGContextStrokeRect(fCtx, rect); - - if (fPainterMode == kPaintSelected) - GraphicUtils::DrawBoxSelectionMarkers(fCtx, rect); - -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t y2, TVirtualPadPainter::EBoxMode mode) -{ - const Double_t x1p = fConverter.XToView(x1); - const Double_t y1p = fConverter.YToView(y1); - const Double_t x2p = fConverter.XToView(x2); - const Double_t y2p = fConverter.YToView(y2); - - if (fPainterMode == kPaintSelected || fPainterMode == kPaintShadow) - return DrawBoxOutline(x1p, y1p, x2p, y2p); - - if (fPainterMode == kPaintToSelectionBuffer && PolygonHasStipple()) - return DrawBoxOutline(x1p, y1p, x2p, y2p); - - if (mode == TVirtualPadPainter::kFilled) - PolygonHasStipple() ? FillBoxWithPattern(x1p, y1p, x2p, y2p) : FillBox(x1p, y1p, x2p, y2p); - else - DrawBoxOutline(x1p, y1p, x2p, y2p); -} - -namespace -{ - -//////////////////////////////////////////////////////////////////////////////// - -template -void draw_polygon(CGContextRef ctx, UInt_t n, const PointCoordinate *x, const PointCoordinate *y, const SpaceConverter & sc, Bool_t withStroke = kTRUE) -{ - CGContextBeginPath(ctx); - - CGContextMoveToPoint(ctx, sc.XToView(x[0]), sc.YToView(y[0])); - for (UInt_t i = 1; i < n; ++i) - CGContextAddLineToPoint(ctx, sc.XToView(x[i]), sc.YToView(y[i])); - CGContextClosePath(ctx); - - if (!withStroke) - CGContextFillPath(ctx); - else - CGContextDrawPath(ctx, kCGPathFillStroke); -} - -//////////////////////////////////////////////////////////////////////////////// - -template -void draw_polyline(CGContextRef ctx, UInt_t n, const PointCoordinate *x, const PointCoordinate *y, const SpaceConverter & sc, Bool_t showSelection = kFALSE) -{ - CGContextBeginPath(ctx); - CGContextMoveToPoint(ctx, sc.XToView(x[0]), sc.YToView(y[0])); - for (UInt_t i = 1; i < n; ++i) - CGContextAddLineToPoint(ctx, sc.XToView(x[i]), sc.YToView(y[i])); - - CGContextStrokePath(ctx); - - if (showSelection) { - GraphicUtils::DrawSelectionMarker(ctx, CGPointMake(sc.XToView(x[0]), sc.YToView(y[0]))); - GraphicUtils::DrawSelectionMarker(ctx, CGPointMake(sc.XToView(x[n - 1]), sc.YToView(y[n - 1]))); - - const unsigned midPoint = n / 2; - if (midPoint) - GraphicUtils::DrawSelectionMarker(ctx, CGPointMake(sc.XToView(x[midPoint]), sc.YToView(y[midPoint]))); - } -} - -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::FillAreaWithPattern(Int_t n, const Double_t *x, const Double_t *y)const -{ - const Util::CGStateGuard state(fCtx); - // - Util::RefGuardGeneric patternColorSpace(CGColorSpaceCreatePattern(0)); - CGContextSetFillColorSpace(fCtx, patternColorSpace.Get()); - - CGFloat rgb[3] = {}; - Float_t r, g, b; - GraphicUtils::GetColorForIndex(gVirtualX->GetFillColor(), r, g, b); - rgb[0] = r; rgb[1] = g; rgb[2] = b; - const Style_t patternIndex = gVirtualX->GetFillStyle() % 1000 - 1; - const Util::SmartRef pattern(GraphicUtils::gPatternGenerators[patternIndex](rgb)); - - const CGFloat alpha = 1.f; - CGContextSetFillPattern(fCtx, pattern.Get(), &alpha); - - draw_polygon(fCtx, n, x, y, fConverter, kFALSE); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::FillArea(Int_t n, const Double_t *x, const Double_t *y)const -{ - const Util::CGStateGuard contextGuard(fCtx); - - SetPolygonParameters(); - draw_polygon(fCtx, n, x, y, fConverter); -} - -//////////////////////////////////////////////////////////////////////////////// -///Check, may be, that's a hollow area, if so, call DrawPolyline instead. - -void Painter::DrawFillArea(Int_t n, const Double_t *x, const Double_t *y) -{ - if (!gVirtualX->GetFillStyle()) - return DrawPolyLine(n, x, y); - - if (fPainterMode == kPaintShadow || fPainterMode == kPaintThumbnail) - return FillArea(n, x, y); - - if (fPainterMode == kPaintToSelectionBuffer && PolygonHasStipple()) - return DrawPolyLine(n, x, y); - - if (PolygonHasStipple()) - return FillAreaWithPattern(n, x, y); - - FillArea(n, x, y); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawFillArea(Int_t, const Float_t *, const Float_t *) -{ -/* if (!gVirtualX->GetFillStyle()) - return DrawPolyLine(n, x, y); - - SetPolygonParameters(); - draw_polygon(fCtx, n, x, y, fConverter);*/ -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawPolyLine(Int_t n, const Double_t *x, const Double_t *y) -{ - const Util::CGStateGuard contextGuard(fCtx); - - SetStrokeParameters(); - draw_polyline(fCtx, n, x, y, fConverter, fPainterMode == kPaintSelected); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawPolyLine(Int_t n, const Float_t *x, const Float_t *y) -{ - const Util::CGStateGuard contextGuard(fCtx); - - SetStrokeParameters(); - draw_polyline(fCtx, n, x, y, fConverter, fPainterMode == kPaintSelected); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawPolyLineNDC(Int_t, const Double_t *, const Double_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetMarkerColor()const -{ - if (MarkerIsFilledPolygon(gVirtualX->GetMarkerStyle())) { - if (fPainterMode == kPaintToView || fPainterMode == kPaintSelected) { - SetMarkerFillColor(fCtx, gVirtualX->GetMarkerColor()); - } else if (fPainterMode == kPaintShadow) { - CGContextSetRGBFillColor(fCtx, shadowColor[0], shadowColor[1], shadowColor[2], shadowColor[3]); - } - } else { - if (fPainterMode == kPaintToView || fPainterMode == kPaintSelected) { - SetMarkerStrokeColor(fCtx, gVirtualX->GetMarkerColor()); - } else if (fPainterMode == kPaintShadow) { - CGContextSetRGBStrokeColor(fCtx, shadowColor[0], shadowColor[1], shadowColor[2], shadowColor[3]); - CGContextSetLineWidth(fCtx, 5.f); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -///Check the current painter's mode. -///Skip polymarker if draw thumbnails. - -void Painter::DrawPolyMarker(Int_t n, const Double_t *x, const Double_t *y) -{ - if (fPainterMode == kPaintThumbnail) - return; - - fPolyMarker.resize(n); - for (Int_t i = 0; i < n; ++i) { - TPoint &p = fPolyMarker[i]; - p.SetX(fConverter.XToView(x[i])); - p.SetY(fConverter.YToView(y[i])); - } - - const Util::CGStateGuard contextGuard(fCtx); - - if (fPainterMode == kPaintToSelectionBuffer) { - SetPolygonColorForCurrentObjectID(); - GraphicUtils::DrawPolyMarker(fCtx, fPolyMarker, 5.f, kFullDotLarge);//Draw large circles into picker's buffer. - } else { - SetMarkerColor(); - GraphicUtils::DrawPolyMarker(fCtx, fPolyMarker, gVirtualX->GetMarkerSize(), gVirtualX->GetMarkerStyle()); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawPolyMarker(Int_t, const Float_t *, const Float_t *) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawText(Double_t x, Double_t y, const CTLineGuard &ctLine) -{ - UInt_t w = 0, h = 0; - ctLine.GetBounds(w, h); - - x = fConverter.XToView(x); - y = fConverter.YToView(y); - - Double_t xc = 0., yc = 0.; - - const UInt_t hAlign = UInt_t(gVirtualX->GetTextAlign() / 10); - switch (hAlign) { - case 1: - xc = 0.5 * w; - break; - case 2: - break; - case 3: - xc = -0.5 * w; - break; - } - - const UInt_t vAlign = UInt_t(gVirtualX->GetTextAlign() % 10); - switch (vAlign) { - case 1: - yc = 0.5 * h; - break; - case 2: - break; - case 3: - yc = -0.5 * h; - break; - } - - CGContextSaveGState(fCtx); - - CGContextSetTextMatrix(fCtx, CGAffineTransformIdentity); - - CGContextSetTextPosition(fCtx, 0.f, 0.f); - CGContextTranslateCTM(fCtx, x, y); - CGContextRotateCTM(fCtx, gVirtualX->GetTextAngle() * TMath::DegToRad()); - CGContextTranslateCTM(fCtx, xc, yc); - CGContextTranslateCTM(fCtx, -0.5 * w, -0.5 * h); - - CTLineDraw(ctLine.fCTLine, fCtx); - CGContextRestoreGState(fCtx); -} - -//////////////////////////////////////////////////////////////////////////////// -///TODO: mode parameter. - -void Painter::DrawText(Double_t x, Double_t y, const char *text, TVirtualPadPainter::ETextMode /*mode*/) -{ - const Util::CGStateGuard contextGuard(fCtx); - - if (fPainterMode == kPaintToView || fPainterMode == kPaintThumbnail) { - CTFontRef currentFont = fFontManager.SelectFont(gVirtualX->GetTextFont(), gVirtualX->GetTextSize()); - if (gVirtualX->GetTextFont() / 10 - 1 == 11) { - CTLineGuard ctLine(text, currentFont, fFontManager.GetSymbolMap()); - DrawText(x, y, ctLine); - } else { - CTLineGuard ctLine(text, currentFont, gVirtualX->GetTextColor()); - DrawText(x, y, ctLine); - } - } -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::DrawTextNDC(Double_t, Double_t, const char *, TVirtualPadPainter::ETextMode) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetContext(CGContextRef ctx) -{ - fCtx = ctx; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetTransform(UInt_t w, Double_t xMin, Double_t xMax, UInt_t h, Double_t yMin, Double_t yMax) -{ - fConverter.SetConverter(w, xMin, xMax, h, yMin, yMax); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetPainterMode(EMode mode) -{ - fPainterMode = mode; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetCurrentObjectID(UInt_t objId) -{ - fCurrentObjectID = objId; -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::GetTextExtent(UInt_t &w, UInt_t &h, const char *text) -{ - fFontManager.SelectFont(gVirtualX->GetTextFont(), gVirtualX->GetTextSize()); - fFontManager.GetTextBounds(w, h, text); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetLineColorForCurrentObjectID() const -{ - Float_t rgb[3] = {}; - fEncoder.IdToColor(fCurrentObjectID, rgb); - CGContextSetRGBStrokeColor(fCtx, rgb[0], rgb[1], rgb[2], 1.f); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetPolygonColorForCurrentObjectID() const -{ - Float_t rgb[3] = {}; - fEncoder.IdToColor(fCurrentObjectID, rgb); - CGContextSetRGBFillColor(fCtx, rgb[0], rgb[1], rgb[2], 1.f); -} - -//////////////////////////////////////////////////////////////////////////////// - -void Painter::SetLineColorHighlighted() const -{ - CGContextSetRGBStrokeColor(fCtx, 1.f, 0.f, 0.5f, 0.5f); -} - -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/IOSResourceManagement.cxx b/graf2d/ios/src/IOSResourceManagement.cxx deleted file mode 100644 index 900503a96e919..0000000000000 --- a/graf2d/ios/src/IOSResourceManagement.cxx +++ /dev/null @@ -1,62 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include - -#include "IOSResourceManagement.h" - -namespace ROOT { -namespace iOS { -namespace Util { - -//////////////////////////////////////////////////////////////////////////////// - -CFStringGuard::CFStringGuard(const char *text) - : fCFString(0) -{ - fCFString = CFStringCreateWithCString(kCFAllocatorDefault, text, kCFStringEncodingMacRoman); - if (!fCFString) - std::runtime_error("CFStringGuard: create failed"); -} - -//////////////////////////////////////////////////////////////////////////////// - -CFStringGuard::~CFStringGuard() -{ - CFRelease(fCFString); -} - -//////////////////////////////////////////////////////////////////////////////// - -CFStringRef CFStringGuard::Get()const -{ - return fCFString; -} - -//////////////////////////////////////////////////////////////////////////////// - -CGStateGuard::CGStateGuard(CGContextRef ctx) - : fCtx(ctx) -{ - CGContextSaveGState(ctx); -} - -//////////////////////////////////////////////////////////////////////////////// - -CGStateGuard::~CGStateGuard() -{ - CGContextRestoreGState(fCtx); -} - - -}//namespace Util -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/IOSSelectionMarkers.cxx b/graf2d/ios/src/IOSSelectionMarkers.cxx deleted file mode 100644 index 0bea36abcbc38..0000000000000 --- a/graf2d/ios/src/IOSSelectionMarkers.cxx +++ /dev/null @@ -1,36 +0,0 @@ -#include "IOSResourceManagement.h" -#include "IOSSelectionMarkers.h" - -namespace ROOT { -namespace iOS { -namespace GraphicUtils { - -//////////////////////////////////////////////////////////////////////////////// -/// - -void DrawSelectionMarker(CGContextRef ctx, const CGPoint &point) -{ - const CGFloat externalRadius = 5.f; - const CGFloat internalRadius = 4.f; - - const Util::CGStateGuard ctxGuard(ctx); - CGContextSetRGBFillColor(ctx, 1.f, 1.f, 1.f, 1.f); - CGContextFillEllipseInRect(ctx, CGRectMake(point.x - externalRadius, point.y - externalRadius, 2 * externalRadius, 2 * externalRadius)); - CGContextSetRGBFillColor(ctx, 0.f, 0.f, 1.f, 1.f); - CGContextFillEllipseInRect(ctx, CGRectMake(point.x - internalRadius, point.y - internalRadius, 2 * internalRadius, 2 * internalRadius)); -} - -//////////////////////////////////////////////////////////////////////////////// -/// - -void DrawBoxSelectionMarkers(CGContextRef ctx, const CGRect &box) -{ - DrawSelectionMarker(ctx, box.origin); - DrawSelectionMarker(ctx, CGPointMake(box.origin.x, box.origin.y + box.size.height)); - DrawSelectionMarker(ctx, CGPointMake(box.origin.x + box.size.width, box.origin.y)); - DrawSelectionMarker(ctx, CGPointMake(box.origin.x + box.size.width, box.origin.y + box.size.height)); -} - -} -} -} diff --git a/graf2d/ios/src/IOSTextOperations.cxx b/graf2d/ios/src/IOSTextOperations.cxx deleted file mode 100644 index 638105c328d31..0000000000000 --- a/graf2d/ios/src/IOSTextOperations.cxx +++ /dev/null @@ -1,448 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 14/8/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -#include "TVirtualX.h" -#include "TColor.h" -#include "TROOT.h" - -#include "IOSTextOperations.h" -#include "IOSGraphicUtils.h" - -namespace ROOT { -namespace iOS { - -const CFStringRef fixedFontNames[FontManager::fmdNOfFonts] = - { - CFSTR("TimesNewRomanPS-ItalicMT"), - CFSTR("TimesNewRomanPS-BoldMT"), - CFSTR("TimesNewRomanPS-BoldItalicMT"), - CFSTR("Helvetica"), - CFSTR("Helvetica-Oblique"), - CFSTR("Helvetica-Bold"), - CFSTR("Helvetica-BoldOblique"), - CFSTR("Courier"), - CFSTR("Courier-Oblique"), - CFSTR("Courier-Bold"), - CFSTR("Courier-BoldOblique"), - CFSTR("Helvetica"), - CFSTR("TimesNewRomanPSMT") - }; - -const char *cStrFontNames[FontManager::fmdNOfFonts] = - { - "TimesNewRomanPS-ItalicMT", - "TimesNewRomanPS-BoldMT", - "TimesNewRomanPS-BoldItalicMT", - "Helvetica", - "Helvetica-Oblique", - "Helvetica-Bold", - "Helvetica-BoldOblique", - "Courier", - "Courier-Oblique", - "Courier-Bold", - "Courier-BoldOblique", - "Helvetica", - "TimesNewRomanPSMT" - }; - -//////////////////////////////////////////////////////////////////////////////// -///Create attributed string with one attribue: the font. - -CTLineGuard::CTLineGuard(const char *textLine, CTFontRef font) - : fCTLine(0) -{ - CFStringRef keys[] = {kCTFontAttributeName}; - CFTypeRef values[] = {font}; - - Init(textLine, 1, keys, values); -} - -//////////////////////////////////////////////////////////////////////////////// -///Create attributed string with font and color. - -CTLineGuard::CTLineGuard(const char *textLine, CTFontRef font, Color_t /*color*/) - : fCTLine(0) -{ - Util::RefGuardGeneric rgbColorSpace(CGColorSpaceCreateDeviceRGB()); - if (!rgbColorSpace.Get()) - throw std::runtime_error("CTLineGuard: color space"); - - CGFloat rgba[] = {0.f, 0.f, 0.f, 1.f}; - Float_t r = 0.f, g = 0.f, b = 0.f; - GraphicUtils::GetColorForIndex(gVirtualX->GetTextColor(), r, g, b); - rgba[0] = r; rgba[1] = g; rgba[2] = b; - - Util::RefGuardGeneric textColor(CGColorCreate(rgbColorSpace.Get(), rgba)); - //Not clear from docs, if textColor.Get() can be 0. - - CFStringRef keys[] = {kCTFontAttributeName, kCTForegroundColorAttributeName}; - CFTypeRef values[] = {font, textColor.Get()}; - - Init(textLine, 2, keys, values); -} - -//////////////////////////////////////////////////////////////////////////////// -///Create attributed string with font and color. - -CTLineGuard::CTLineGuard(const char *textLine, CTFontRef font, const std::vector &symbolMap) - : fCTLine(0) -{ - Util::RefGuardGeneric rgbColorSpace(CGColorSpaceCreateDeviceRGB()); - if (!rgbColorSpace.Get()) - throw std::runtime_error("CTLineGuard: color space"); - - CGFloat rgba[] = {0.f, 0.f, 0.f, 1.f}; - Float_t r = 0.f, g = 0.f, b = 0.f; - GraphicUtils::GetColorForIndex(gVirtualX->GetTextColor(), r, g, b); - rgba[0] = r; rgba[1] = g; rgba[2] = b; - - Util::RefGuardGeneric textColor(CGColorCreate(rgbColorSpace.Get(), rgba)); - const unsigned length = std::strlen(textLine); - std::vector convertedLine(length); - for (unsigned i = 0; i < length; ++i) - convertedLine[i] = symbolMap[(unsigned char)textLine[i]]; - - CFStringRef keys[] = {kCTFontAttributeName, kCTForegroundColorAttributeName}; - CFTypeRef values[] = {font, textColor.Get()}; - - Init(convertedLine, 2, keys, values); -} - -//////////////////////////////////////////////////////////////////////////////// - -CTLineGuard::~CTLineGuard() -{ - CFRelease(fCTLine); -} - -//////////////////////////////////////////////////////////////////////////////// - -void CTLineGuard::GetBounds(UInt_t &w, UInt_t &h)const -{ - CGFloat ascent = 0.f, descent = 0.f, leading = 0.f; - w = UInt_t(CTLineGetTypographicBounds(fCTLine, &ascent, &descent, &leading)); - h = UInt_t(ascent);// + descent + leading); -} - -//////////////////////////////////////////////////////////////////////////////// - -void CTLineGuard::Init(const char *textLine, UInt_t nAttribs, CFStringRef *keys, CFTypeRef *values) -{ - Util::RefGuard stringAttribs( - CFDictionaryCreate(kCFAllocatorDefault, - (const void **)keys, - (const void **)values, - nAttribs, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks) - ); - - if (!stringAttribs.Get()) - throw std::runtime_error("CTLineGuard: null attribs"); - - Util::RefGuard wrappedCString(CFStringCreateWithCString(kCFAllocatorDefault, textLine, kCFStringEncodingMacRoman)); - if (!wrappedCString.Get()) - throw std::runtime_error("CTLineGuard: cstr wrapper"); - - Util::RefGuard attributedString(CFAttributedStringCreate(kCFAllocatorDefault, wrappedCString.Get(), stringAttribs.Get())); - fCTLine = CTLineCreateWithAttributedString(attributedString.Get()); - - if (!fCTLine) - throw std::runtime_error("CTLineGuard: attrib string"); -} - -//////////////////////////////////////////////////////////////////////////////// - -void CTLineGuard::Init(const std::vector &textLine, UInt_t nAttribs, CFStringRef *keys, CFTypeRef *values) -{ - Util::RefGuard stringAttribs( - CFDictionaryCreate(kCFAllocatorDefault, - (const void **)keys, - (const void **)values, - nAttribs, - &kCFTypeDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks) - ); - - if (!stringAttribs.Get()) - throw std::runtime_error("CTLineGuard: null attribs"); - - Util::RefGuard wrappedCString(CFStringCreateWithCharacters(kCFAllocatorDefault, &textLine[0], textLine.size())); - if (!wrappedCString.Get()) - throw std::runtime_error("CTLineGuard: cstr wrapper"); - - Util::RefGuard attributedString(CFAttributedStringCreate(kCFAllocatorDefault, wrappedCString.Get(), stringAttribs.Get())); - fCTLine = CTLineCreateWithAttributedString(attributedString.Get()); - - if (!fCTLine) - throw std::runtime_error("CTLineGuard: attrib string"); -} - -//////////////////////////////////////////////////////////////////////////////// - -FontManager::FontManager() - : fSelectedFont(0) -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -FontManager::~FontManager() -{ - for (UInt_t i = 0; i < fmdNOfFonts; ++i) - for (FontMapIter_t it = fFonts[i].begin(); it != fFonts[i].end(); ++it) - CFRelease(it->second); -} - -//////////////////////////////////////////////////////////////////////////////// - -CTFontRef FontManager::SelectFont(Font_t fontIndex, Float_t fontSize) -{ - fontIndex /= 10; - - if (fontIndex > fmdNOfFonts || !fontIndex) - throw std::runtime_error("SelectFont: index"); - - fontIndex -= 1; - - if (fontIndex == 11 && !fSymbolMap.size()) - InitSymbolMap(); - - const UInt_t fixedSize = UInt_t(fontSize); - FontMapIter_t it = fFonts[fontIndex].find(fixedSize); - - if (it == fFonts[fontIndex].end()) { - //Insert the new font. - Util::RefGuard font(CTFontCreateWithName(fixedFontNames[fontIndex], fixedSize, 0)); - if (!font.Get()) //With Apple's lame documentation it's not clear, if function can return 0. - throw std::runtime_error(std::string("SelectFont: create") + cStrFontNames[fontIndex]); - - fFonts[fontIndex][fixedSize] = font.Get(); - return fSelectedFont = font.Release(); - } - - return fSelectedFont = it->second; -} - -//////////////////////////////////////////////////////////////////////////////// - -void FontManager::GetTextBounds(UInt_t &w, UInt_t &h, const char *text)const -{ - if (!fSelectedFont) - throw std::runtime_error("GetTextBounds: font not selected"); - - Font_t fontIndex = gVirtualX->GetTextFont() / 10 - 1; - - if (fontIndex == 11) { - CTLineGuard ctLine(text, fSelectedFont, fSymbolMap); - ctLine.GetBounds(w, h); - } else { - CTLineGuard ctLine(text, fSelectedFont); - ctLine.GetBounds(w, h); - } -} - -//////////////////////////////////////////////////////////////////////////////// - -Double_t FontManager::GetAscent()const -{ - if (!fSelectedFont) - throw std::runtime_error("GetAscent"); - - return CTFontGetAscent(fSelectedFont); -} - -//////////////////////////////////////////////////////////////////////////////// - -Double_t FontManager::GetDescent()const -{ - if (!fSelectedFont) - throw std::runtime_error("GetDescent"); - - return CTFontGetDescent(fSelectedFont); -} - -//////////////////////////////////////////////////////////////////////////////// - -Double_t FontManager::GetLeading()const -{ - if (!fSelectedFont) - throw std::runtime_error("GetLeading"); - - return CTFontGetLeading(fSelectedFont); -} - -//////////////////////////////////////////////////////////////////////////////// - -void FontManager::InitSymbolMap() -{ - fSymbolMap.clear(); - fSymbolMap.resize(1 << std::numeric_limits::digits, 0); - - fSymbolMap[97] = 0x3B1; //alpha - fSymbolMap[98] = 0x3B2; //beta - fSymbolMap[103] = 0x3B3; //gamma - fSymbolMap[100] = 0x3B4; //delta - fSymbolMap[206] = 0x3F5; //epsilon - fSymbolMap[122] = 0x3B6; //zeta - fSymbolMap[104] = 0x3B7; //eta - fSymbolMap[113] = 0x3B8; //theta - fSymbolMap[105] = 0x3B9; //iota - fSymbolMap[107] = 0x3BA; //kappa - fSymbolMap[108] = 0x3BB; //lambda - fSymbolMap[109] = 0x3BC; //mu - fSymbolMap[110] = 0x3BD; //nu - fSymbolMap[120] = 0x3BE; //xi - fSymbolMap[111] = 0x3BF; //omicron - fSymbolMap[112] = 0x3C0; //pi - fSymbolMap[114] = 0x3C1; //rho - fSymbolMap[115] = 0x3C3; //sigma - fSymbolMap[116] = 0x3C4; //tau - fSymbolMap[117] = 0x3C5; //upsilon - fSymbolMap[102] = 0x3C6; //phi - fSymbolMap[99] = 0x3C7; //chi - fSymbolMap[121] = 0x3C8; //psi - fSymbolMap[119] = 0x3C9; //omega - - fSymbolMap[65] = 0x391; //Alpha - fSymbolMap[66] = 0x392; //Beta - fSymbolMap[71] = 0x393; //Gamma - fSymbolMap[68] = 0x394; //Delta - fSymbolMap[69] = 0x395; //Epsilon - fSymbolMap[90] = 0x396; //Zeta - fSymbolMap[72] = 0x397; //Eta - fSymbolMap[81] = 0x398; //Theta - fSymbolMap[73] = 0x399; //Iota - fSymbolMap[75] = 0x39A; //Kappa - fSymbolMap[76] = 0x39B; //Lambda - fSymbolMap[77] = 0x39C; //Mu - fSymbolMap[78] = 0x39D; //Nu - fSymbolMap[88] = 0x39E; //Xi - fSymbolMap[79] = 0x39F; //Omicron - fSymbolMap[80] = 0x3A0; //Pi - fSymbolMap[82] = 0x3A1; //Rho - fSymbolMap[83] = 0x3A3; //Sigma - fSymbolMap[84] = 0x3A4; //Tau - fSymbolMap[85] = 0x3A5; //Upsilon - fSymbolMap[70] = 0x3A6; //Phi - fSymbolMap[67] = 0x3A7; //Chi - fSymbolMap[89] = 0x3A8; //Psi - fSymbolMap[87] = 0x3A9; //Omega - - fSymbolMap[101] = 0x3B5; //varepsilon - fSymbolMap[74] = 0x3D1; //vartheta - fSymbolMap[86] = 0x3C2; //varsigma - fSymbolMap[161] = 0x3D2; //varUpsilon - fSymbolMap[106] = 0x3D5; //varphi??? - fSymbolMap[118] = 0x3D6; //varomega? - - fSymbolMap[167] = 0x2663; - fSymbolMap[195] = 0x2118; - fSymbolMap[163] = 0x2264; - fSymbolMap[187] = 0x2248; - fSymbolMap[206] = 0x2208; - fSymbolMap[201] = 0x2283; - fSymbolMap[199] = 0x2229; - fSymbolMap[211] = 0xA9; - fSymbolMap[212] = 0x2122; - fSymbolMap[180] = 0xD7; - fSymbolMap[183] = 0x2022; - fSymbolMap[166] = 0x192; - fSymbolMap[178] = 0x2033; - fSymbolMap[231] = 0x7C; - fSymbolMap[232] = 0x23A9; - fSymbolMap[175] = 0x2193; - fSymbolMap[171] = 0x2194; - fSymbolMap[223] = 0x21D3; - fSymbolMap[219] = 0x21D4; - fSymbolMap[234] = 0x23AA; - fSymbolMap[104] = 0x127; - - fSymbolMap[168] = 0x2666; - fSymbolMap[192] = 0x2135; - fSymbolMap[179] = 0x2265; - fSymbolMap[185] = 0x2260; - fSymbolMap[207] = 0x2209; - fSymbolMap[205] = 0x2286; - fSymbolMap[200] = 0x222A; - fSymbolMap[227] = 0xA9; - fSymbolMap[228] = 0x2122; - fSymbolMap[184] = 0xF7; - fSymbolMap[176] = 0xB0; - fSymbolMap[165] = 0x221E; - fSymbolMap[208] = 0x2220; - fSymbolMap[189] = 0x7C; - fSymbolMap[230] = 0x23A7; - fSymbolMap[172] = 0x2190; - fSymbolMap[196] = 0x2297; - fSymbolMap[220] = 0x21D0; - fSymbolMap[213] = 0x220F; - - fSymbolMap[169] = 0x2665; - fSymbolMap[193] = 0x2111; - fSymbolMap[225] = 0x3008; - fSymbolMap[186] = 0x2261; - fSymbolMap[204] = 0x2282; - fSymbolMap[202] = 0x2287; - fSymbolMap[217] = 0x2227; - fSymbolMap[210] = 0xAE; - fSymbolMap[197] = 0xC5; //no need - fSymbolMap[177] = 0xB1; - fSymbolMap[188] = 0x2026; - fSymbolMap[209] = 0x2207; - fSymbolMap[191] = 0x21B5; - fSymbolMap[190] = 0x2015;//WRONG - fSymbolMap[236] = 0x23A7; - fSymbolMap[173] = 0x2191; - fSymbolMap[197] = 0x2295; - fSymbolMap[221] = 0x21D1; - fSymbolMap[229] = 0x2211; - fSymbolMap[34] = 0x2200; - - fSymbolMap[170] = 0x2660; - fSymbolMap[194] = 0x211C; - fSymbolMap[241] = 0x3009; - fSymbolMap[181] = 0x221D; - fSymbolMap[203] = 0x2284; - fSymbolMap[198] = 0x2205; - fSymbolMap[218] = 0x2228; - fSymbolMap[226] = 0xAE; - fSymbolMap[229] = 0xE5; //no need - fSymbolMap[164] = 0x2044; - fSymbolMap[215] = 0x22C5; - fSymbolMap[182] = 0x2202; - fSymbolMap[216] = 0xAC; - fSymbolMap[237] = 0x23A8; - fSymbolMap[235] = 0x23A3; - fSymbolMap[174] = 0x2192; - fSymbolMap[214] = 0x221A; - fSymbolMap[222] = 0x21D2; - fSymbolMap[242] = 0x222B; - fSymbolMap[36] = 0x2203; -} - -}//namespace iOS -}//namespace ROOT diff --git a/graf2d/ios/src/TGIOS.cxx b/graf2d/ios/src/TGIOS.cxx deleted file mode 100644 index ddbe0295b0cf5..0000000000000 --- a/graf2d/ios/src/TGIOS.cxx +++ /dev/null @@ -1,161 +0,0 @@ -// @(#)root/graf2d:$Id$ -// Author: Timur Pocheptsov, 19/10/2011 - -/************************************************************************* - * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#include - -#include "IOSPad.h" -#include "TGIOS.h" - - -namespace ROOT { -namespace iOS { - -//////////////////////////////////////////////////////////////////////////////// -/// Default ctor. - -TGIOS::TGIOS() -{ -} - -//////////////////////////////////////////////////////////////////////////////// -/// Ctor. - -TGIOS::TGIOS(const char *name, const char *title) - : TVirtualX(name, title) -{ -} - -//TAttLine. -//////////////////////////////////////////////////////////////////////////////// -/// Sets color index "cindex" for drawing lines. - -void TGIOS::SetLineColor(Color_t cindex) -{ - TAttLine::SetLineColor(cindex); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets the line style. -/// -/// linestyle <= 1 solid -/// linestyle = 2 dashed -/// linestyle = 3 dotted -/// linestyle = 4 dashed-dotted - -void TGIOS::SetLineStyle(Style_t linestyle) -{ - TAttLine::SetLineStyle(linestyle); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets the line width. -/// -/// width - the line width in pixels - -void TGIOS::SetLineWidth(Width_t width) -{ - TAttLine::SetLineWidth(width); -} - -//TAttFill. -//////////////////////////////////////////////////////////////////////////////// -/// Sets color index "cindex" for fill areas. - -void TGIOS::SetFillColor(Color_t cindex) -{ - TAttFill::SetFillColor(cindex); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets fill area style. -/// -/// style - compound fill area interior style -/// style = 1000 * interiorstyle + styleindex - -void TGIOS::SetFillStyle(Style_t style) -{ - TAttFill::SetFillStyle(style); -} - -//TAttMarker. -//////////////////////////////////////////////////////////////////////////////// -/// Sets color index "cindex" for markers. - -void TGIOS::SetMarkerColor(Color_t cindex) -{ - TAttMarker::SetMarkerColor(cindex); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets marker size index. -/// -/// markersize - the marker scale factor - -void TGIOS::SetMarkerSize(Float_t markersize) -{ - TAttMarker::SetMarkerSize(markersize); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets marker style. - -void TGIOS::SetMarkerStyle(Style_t markerstyle) -{ - TAttMarker::SetMarkerStyle(markerstyle); -} - -//TAttText. -//////////////////////////////////////////////////////////////////////////////// -/// Sets the text alignment. -/// -/// talign = txalh horizontal text alignment -/// talign = txalv vertical text alignment - -void TGIOS::SetTextAlign(Short_t talign) -{ - TAttText::SetTextAlign(talign); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets the color index "cindex" for text. - -void TGIOS::SetTextColor(Color_t cindex) -{ - TAttText::SetTextColor(cindex); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets the current text font number. - -void TGIOS::SetTextFont(Font_t fontnumber) -{ - TAttText::SetTextFont(fontnumber); -} - -//////////////////////////////////////////////////////////////////////////////// -/// Sets the current text size to "textsize" - -void TGIOS::SetTextSize(Float_t textsize) -{ - TAttText::SetTextSize(textsize); -} - -//////////////////////////////////////////////////////////////////////////////// -///With all these global variables like gVirtualX and gPad, I have to use this trick. - -void TGIOS::GetTextExtent(UInt_t &w, UInt_t &h, char *textLine) -{ - Pad *p = static_cast(gPad); - p->GetTextExtent(w, h, textLine); -} - -} -} From 48570296a9ea1a94b9f7b1c555a59a2ac23e5124 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 18 Jun 2018 21:36:41 +0200 Subject: [PATCH 282/344] Remove unmaintained io/chirp. --- io/chirp/doc/index.txt | 10 - io/chirp/inc/LinkDef.h | 10 - io/chirp/inc/TChirpFile.h | 66 ----- io/chirp/src/TChirpFile.cxx | 464 ------------------------------------ 4 files changed, 550 deletions(-) delete mode 100644 io/chirp/doc/index.txt delete mode 100644 io/chirp/inc/LinkDef.h delete mode 100644 io/chirp/inc/TChirpFile.h delete mode 100644 io/chirp/src/TChirpFile.cxx diff --git a/io/chirp/doc/index.txt b/io/chirp/doc/index.txt deleted file mode 100644 index 401dfb45b69a1..0000000000000 --- a/io/chirp/doc/index.txt +++ /dev/null @@ -1,10 +0,0 @@ -BEGIN_HTML -This directory contains the I/O interface classes for the Chirp filesystem. Briefly, Chirp is a lightweight user-level distributed filesystem designed for sharing code and data across wide area computing grids. It provides extensive support for multiple authentication methods, allowing you to mix users employing Globus, Kerberos, hostname, and ticket authentication. Ordinary POSIX applications can be transparently attached to a Chirp filesystem using either Parrot or FUSE. -

    -To build ROOT with Chirp support, you must have the Notre Dame CCTools package version 3.2.2 or greater installed. -

    -For more information about the Chirp filesystem, see: -

    -END_HTML diff --git a/io/chirp/inc/LinkDef.h b/io/chirp/inc/LinkDef.h deleted file mode 100644 index 51be5a2436ecb..0000000000000 --- a/io/chirp/inc/LinkDef.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifdef __CINT__ - -#pragma link off all globals; -#pragma link off all classes; -#pragma link off all functions; - -#pragma link C++ class TChirpFile; -#pragma link C++ class TChirpSystem; - -#endif diff --git a/io/chirp/inc/TChirpFile.h b/io/chirp/inc/TChirpFile.h deleted file mode 100644 index 74dfdfcdce76c..0000000000000 --- a/io/chirp/inc/TChirpFile.h +++ /dev/null @@ -1,66 +0,0 @@ -// @(#)root/chirp:$Id$ -// Author: Dan Bradley, Michael Albrecht, Douglas Thain - -/************************************************************************* - * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_TChirpFile -#define ROOT_TChirpFile - -#include "TFile.h" - -#include "TSystem.h" - -class TChirpFile:public TFile { -private: - TChirpFile(); - struct chirp_file *chirp_file_ptr; - - Int_t SysOpen(const char *pathname, Int_t flags, UInt_t mode); - Int_t SysClose(Int_t fd); - Int_t SysRead(Int_t fd, void *buf, Int_t len); - Int_t SysWrite(Int_t fd, const void *buf, Int_t len); - Long64_t SysSeek(Int_t fd, Long64_t offset, Int_t whence); - Int_t SysStat(Int_t fd, Long_t * id, Long64_t * size, Long_t * flags, Long_t * modtime); - Int_t SysSync(Int_t fd); - -public: - TChirpFile(const char *path, Option_t * option = "", const char *ftitle = "", Int_t compress = 1); - - ~TChirpFile(); - - Bool_t ReadBuffers(char *buf, Long64_t * pos, Int_t * len, Int_t nbuf); - - ClassDef(TChirpFile, 0) -}; - - -class TChirpSystem:public TSystem { -public: - TChirpSystem(); - virtual ~ TChirpSystem(); - - Int_t MakeDirectory(const char *name); - void *OpenDirectory(const char *name); - void FreeDirectory(void *dirp); - const char *GetDirEntry(void *dirp); - Int_t GetPathInfo(const char *path, FileStat_t & buf); - Bool_t AccessPathName(const char *path, EAccessMode mode); - Int_t Unlink(const char *path); - - int Rename(const char *from, const char *to); - int Link(const char *from, const char *to); - int Symlink(const char *from, const char *to); - int GetFsInfo(const char *path, Long_t * id, Long_t * bsize, Long_t * blocks, Long_t * bfree); - int Chmod(const char *file, UInt_t mode); - int Utime(const char *file, Long_t modtime, Long_t actime); - - ClassDef(TChirpSystem, 0) -}; - -#endif diff --git a/io/chirp/src/TChirpFile.cxx b/io/chirp/src/TChirpFile.cxx deleted file mode 100644 index 665ae22d8c0bc..0000000000000 --- a/io/chirp/src/TChirpFile.cxx +++ /dev/null @@ -1,464 +0,0 @@ -// @(#)root/chirp:$Id$ -// Authors: Dan Bradley, Michael Albrecht, Douglas Thain - -/************************************************************************* - * Copyright (C) 1995-2002, 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 TChirpFile -\ingroup IO - -Read and write data via a Chirp server. - -A TChirpFile is like a normal TFile except that it may read and -write its data via a Chirp server. The primary API for accessing -Chirp is through the chirp_reli interface, which corresponds closely -to Unix. Most operations return an integer where >=0 indicates -success and <0 indicates failure, setting the global errno. -This allows most TFile methods to be implemented with a single -line or two of Chirp (for more on the Chirp filesystem. -Note that this class overrides ReadBuffers so as to take advantage -of the Chirp "bulk I/O" feature which does multiple remote ops -in a single call. -Most users of Chirp will access a named remote server url: - chirp://host.somewhere.edu/path -The special host CONDOR is used to indicate a connection to the -Chirp I/O proxy service when running inside of Condor: - chirp://CONDOR/path - -This module recognizes the following environment variables: - - \b CHIRP_DEBUG_FILE: Send debugging output to this file. - - \b CHIRP_DEBUG_FLAGS: Turn on select debugging flags (e.g. 'all'). - - \b CHIRP_AUTH: Select a specific auth type (e.g. 'globus'). - - \b CHIRP_TIMEOUT: Specify how long to attempt each op, in secs. - -For more information about the Chirp fileystem and protocol: - http://www.cse.nd.edu/~ccl/software/chirp -*/ - -#include "TChirpFile.h" -#include "TError.h" -#include "TSystem.h" -#include "TROOT.h" - -#include -#include -#include -#include -#include - -extern "C" { -#include "chirp_reli.h" -#include "auth_all.h" -#include "debug.h" -} - -// If the path component of a url is a blank string, -// then convert it to the root directory of that server. -#define FIXPATH(x) ( x[0]==0 ? "/" : x ) - -static int chirp_root_timeout = 3600; - -static void chirp_root_global_setup() -{ - static int did_setup = 0; - if (did_setup) return; - - debug_config("chirp_root"); - - const char *debug_file = getenv("CHIRP_DEBUG_FILE"); - if (debug_file) debug_config_file(debug_file); - - const char *debug_flags = getenv("CHIRP_DEBUG_FLAGS"); - if (debug_flags) debug_flags_set(debug_flags); - - const char *auth_flags = getenv("CHIRP_AUTH"); - if (auth_flags) { - auth_register_byname(auth_flags); - } else { - auth_register_all(); - } - - const char *timeout_string = getenv("CHIRP_TIMEOUT"); - if (timeout_string) chirp_root_timeout = atoi(timeout_string); - - did_setup = 1; -} - -ClassImp(TChirpFile); - -//////////////////////////////////////////////////////////////////////////////// -/// Constructor. - -TChirpFile::TChirpFile(const char *path, Option_t * option, const char *ftitle, Int_t compress):TFile(path, "NET", ftitle, compress) -{ - chirp_root_global_setup(); - - chirp_file_ptr = 0; - - fOption = option; - fOption.ToUpper(); - - if (fOption == "NEW") - fOption = "CREATE"; - - Bool_t create = (fOption == "CREATE") ? kTRUE : kFALSE; - Bool_t recreate = (fOption == "RECREATE") ? kTRUE : kFALSE; - Bool_t update = (fOption == "UPDATE") ? kTRUE : kFALSE; - Bool_t read = (fOption == "READ") ? kTRUE : kFALSE; - - if (!create && !recreate && !update && !read) { - read = kTRUE; - fOption = "READ"; - } - - fRealName = path; - - if (create || update || recreate) { - Int_t mode = O_RDWR | O_CREAT; - if (recreate) - mode |= O_TRUNC; - -#ifndef WIN32 - fD = SysOpen(path, mode, 0644); -#else - fD = SysOpen(path, mode | O_BINARY, S_IREAD | S_IWRITE); -#endif - if (fD == -1) { - SysError("TChirpFile", "file %s can not be created", path); - goto zombie; - } - fWritable = kTRUE; - } else { -#ifndef WIN32 - fD = SysOpen(path, O_RDONLY, 0644); -#else - fD = SysOpen(path, O_RDONLY | O_BINARY, S_IREAD | S_IWRITE); -#endif - if (fD == -1) { - SysError("TChirpFile", "file %s can not be opened for reading", path); - goto zombie; - } - fWritable = kFALSE; - } - - Init(create || recreate); - - return; - -zombie: - MakeZombie(); - gDirectory = gROOT; -} - -//////////////////////////////////////////////////////////////////////////////// -/// Destructor. - -TChirpFile::~TChirpFile() -{ - Close(); -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t TChirpFile::ReadBuffers(char *buf, Long64_t * pos, Int_t * len, Int_t nbuf) -{ - struct chirp_bulkio bulkio[nbuf]; - int i; - - char *nextbuf = buf; - - for (i = 0; i < nbuf; i++) { - bulkio[i].type = CHIRP_BULKIO_PREAD; - bulkio[i].file = chirp_file_ptr; - bulkio[i].offset = pos[i]; - bulkio[i].length = len[i]; - bulkio[i].buffer = nextbuf; - nextbuf += len[i]; - } - - INT64_T result = chirp_reli_bulkio(bulkio, nbuf, time(0) + chirp_root_timeout); - - if (result >= 0) { - return kFALSE; - } else { - return kTRUE; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpFile::SysOpen(const char *pathname, Int_t flags, UInt_t mode) -{ - TUrl url(pathname); - chirp_file_ptr = chirp_reli_open(url.GetHost(), FIXPATH(url.GetFile()), flags, (Int_t) mode, time(0) + chirp_root_timeout); - if (chirp_file_ptr) { - return 1; - } else { - return -1; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpFile::SysClose(Int_t) -{ - return chirp_reli_close(chirp_file_ptr, time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpFile::SysRead(Int_t, void *buf, Int_t len) -{ - Int_t rc = chirp_reli_pread(chirp_file_ptr, buf, len, fOffset, time(0) + chirp_root_timeout); - if (rc > 0) fOffset += rc; - return rc; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpFile::SysWrite(Int_t, const void *buf, Int_t len) -{ - Int_t rc = chirp_reli_pwrite(chirp_file_ptr, buf, len, fOffset, time(0) + chirp_root_timeout); - if (rc > 0) fOffset += rc; - return rc; -} - -//////////////////////////////////////////////////////////////////////////////// - -Long64_t TChirpFile::SysSeek(Int_t, Long64_t offset, Int_t whence) -{ - if (whence == SEEK_SET) { - fOffset = offset; - } else if(whence == SEEK_CUR) { - fOffset += offset; - } else if(whence == SEEK_END) { - struct chirp_stat info; - - Int_t rc = chirp_reli_fstat(chirp_file_ptr, &info, time(0) + chirp_root_timeout); - if (rc < 0) { - SysError("TChirpFile", "Unable to seek from end of file"); - return -1; - } - - fOffset = info.cst_size + offset; - - } else { - SysError("TChirpFile", "Unknown whence!"); - return -1; - } - - return fOffset; -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpFile::SysSync(Int_t /*fd*/) -{ - return chirp_reli_fsync(chirp_file_ptr, time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpFile::SysStat(Int_t, Long_t * id, Long64_t * size, Long_t * flags, Long_t * modtime) -{ - struct chirp_stat cst; - - int rc = chirp_reli_fstat(chirp_file_ptr, &cst, time(0) + chirp_root_timeout); - - if (rc < 0) return rc; - - *id =::Hash(fRealName); - *size = cst.cst_size; - *flags = cst.cst_mode; - *modtime = cst.cst_mtime; - - return 0; -} - -ClassImp(TChirpSystem); - -//////////////////////////////////////////////////////////////////////////////// - -TChirpSystem::TChirpSystem():TSystem("-chirp", "Chirp Helper System") -{ - SetName("chirp"); - chirp_root_global_setup(); -} - -//////////////////////////////////////////////////////////////////////////////// - -TChirpSystem::~TChirpSystem() -{ -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpSystem::MakeDirectory(const char *path) -{ - TUrl url(path); - return chirp_reli_mkdir(url.GetHost(), FIXPATH(url.GetFile()), 0777, time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -void *TChirpSystem::OpenDirectory(const char *path) -{ - TUrl url(path); - return chirp_reli_opendir(url.GetHost(), FIXPATH(url.GetFile()), time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -void TChirpSystem::FreeDirectory(void *dirp) -{ - return chirp_reli_closedir((struct chirp_dir *) dirp); -} - -//////////////////////////////////////////////////////////////////////////////// - -const char *TChirpSystem::GetDirEntry(void *dirp) -{ - struct chirp_dirent *d = chirp_reli_readdir((struct chirp_dir *) dirp); - if (d) { - return d->name; - } else { - return 0; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpSystem::GetPathInfo(const char *path, FileStat_t & buf) -{ - TUrl url(path); - struct chirp_stat info; - Int_t rc = chirp_reli_stat(url.GetHost(), FIXPATH(url.GetFile()), &info, time(0) + chirp_root_timeout); - if (rc >= 0) { - buf.fDev = info.cst_dev; - buf.fIno = info.cst_ino; - buf.fMode = info.cst_mode; - buf.fUid = info.cst_uid; - buf.fGid = info.cst_gid; - buf.fSize = info.cst_size; - buf.fMtime = info.cst_mtime; - buf.fIsLink = S_ISLNK(info.cst_mode); - buf.fUrl = TString(path); - } - return rc; -} - -//////////////////////////////////////////////////////////////////////////////// - -Bool_t TChirpSystem::AccessPathName(const char *path, EAccessMode mode) -{ - TUrl url(path); - - int cmode = F_OK; - - if (mode & kExecutePermission) cmode |= X_OK; - if (mode & kWritePermission) cmode |= W_OK; - if (mode & kReadPermission) cmode |= R_OK; - - if (chirp_reli_access(url.GetHost(), FIXPATH(url.GetFile()), cmode, time(0) + chirp_root_timeout) == 0) { - return kFALSE; - } else { - return kTRUE; - } -} - -//////////////////////////////////////////////////////////////////////////////// - -Int_t TChirpSystem::Unlink(const char *path) -{ - TUrl url(path); - Int_t rc = chirp_reli_unlink(url.GetHost(), FIXPATH(url.GetFile()), time(0) + chirp_root_timeout); - if (rc < 0 && errno == EISDIR) { - rc = chirp_reli_rmdir(url.GetHost(), FIXPATH(url.GetFile()), time(0) + chirp_root_timeout); - } - return rc; -} - -//////////////////////////////////////////////////////////////////////////////// - -int TChirpSystem::Rename(const char *from, const char *to) -{ - TUrl fromurl(from); - TUrl tourl(to); - - if (strcmp(fromurl.GetHost(), tourl.GetHost())) { - errno = EXDEV; - return -1; - } - - return chirp_reli_rename(fromurl.GetHost(), FIXPATH(fromurl.GetFile()), FIXPATH(tourl.GetFile()), time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -int TChirpSystem::Link(const char *from, const char *to) -{ - TUrl fromurl(from); - TUrl tourl(to); - - if (strcmp(fromurl.GetHost(), tourl.GetHost())) { - errno = EXDEV; - return -1; - } - - return chirp_reli_link(fromurl.GetHost(), FIXPATH(fromurl.GetFile()), FIXPATH(tourl.GetFile()), time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -int TChirpSystem::Symlink(const char *from, const char *to) -{ - TUrl fromurl(from); - TUrl tourl(to); - - if (strcmp(fromurl.GetHost(), tourl.GetHost())) { - errno = EXDEV; - return -1; - } - - return chirp_reli_symlink(fromurl.GetHost(), FIXPATH(fromurl.GetFile()), FIXPATH(tourl.GetFile()), time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -int TChirpSystem::GetFsInfo(const char *path, Long_t * id, Long_t * bsize, Long_t * blocks, Long_t * bfree) -{ - TUrl url(path); - - struct chirp_statfs info; - - int rc = chirp_reli_statfs(url.GetHost(), FIXPATH(url.GetFile()), &info, time(0) + chirp_root_timeout); - if (rc >= 0) { - *id = info.f_type; - *bsize = info.f_bsize; - *blocks = info.f_blocks; - *bfree = info.f_bfree; - } - return rc; -} - -//////////////////////////////////////////////////////////////////////////////// - -int TChirpSystem::Chmod(const char *path, UInt_t mode) -{ - TUrl url(path); - return chirp_reli_chmod(url.GetHost(), FIXPATH(url.GetFile()), mode, time(0) + chirp_root_timeout); -} - -//////////////////////////////////////////////////////////////////////////////// - -int TChirpSystem::Utime(const char *path, Long_t modtime, Long_t actime) -{ - TUrl url(path); - return chirp_reli_utime(url.GetHost(), FIXPATH(url.GetFile()), modtime, actime, time(0) + chirp_root_timeout); -} From 6afdfe92b44b5865a7e344a63d4296566f139977 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 18 Jun 2018 21:40:09 +0200 Subject: [PATCH 283/344] CMake: rip out chirp from build system. --- cmake/modules/Findchirp.cmake | 21 --------------------- cmake/modules/RootConfiguration.cmake | 5 ----- cmake/modules/SearchInstalledSoftware.cmake | 14 -------------- 3 files changed, 40 deletions(-) delete mode 100644 cmake/modules/Findchirp.cmake diff --git a/cmake/modules/Findchirp.cmake b/cmake/modules/Findchirp.cmake deleted file mode 100644 index f6e6edc85f9e6..0000000000000 --- a/cmake/modules/Findchirp.cmake +++ /dev/null @@ -1,21 +0,0 @@ -# - Locate chirp (from cctools) library -# Defines: -# -# CHIRP_FOUND -# CHIRP_INCLUDE_DIR -# CHIRP_INCLUDE_DIRS (not cached) -# CHIRP_LIBRARIES - -find_path(CHIRP_INCLUDE_DIR NAMES chirp.h HINTS ${CHIRP_DIR}/include/cctools $ENV{CHIRP_DIR}/include/cctools) -find_library(CHIRP_LIBRARY NAMES chirp_client HINTS ${CHIRP_DIR}/lib $ENV{CHIRP_DIR}/lib) - -set(CHIRP_INCLUDE_DIRS ${CHIRP_INCLUDE_DIR}) -set(CHIRP_LIBRARIES ${CHIRP_LIBRARY}) - - -# handle the QUIETLY and REQUIRED arguments and set CHIRP_FOUND to TRUE if -# all listed variables are TRUE -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(CHIRP DEFAULT_MSG CHIRP_INCLUDE_DIR CHIRP_LIBRARY) - -mark_as_advanced(CHIRP_FOUND CHIRP_INCLUDE_DIR CHIRP_LIBRARY) diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake index f017921b7cfa5..cfc191fb337a4 100644 --- a/cmake/modules/RootConfiguration.cmake +++ b/cmake/modules/RootConfiguration.cmake @@ -263,11 +263,6 @@ set(dnssdlibdir ${BONJOUR_LIBRARY_DIR}) set(dnssdlib ${BONJOUR_LIBRARY}) set(dnsdincdir ${BONJOUR_INCLUDE_DIR}) -set(buildchirp ${value${chirp}}) -set(chirplibdir ${CHIRP_LIBRARY_DIR}) -set(chirplib ${CHIRP_LIBRARY}) -set(chirpincdir ${CHIRP_INCLUDE_DIR}) - set(buildhdfs ${value${hdfs}}) set(hdfslibdir ${HDFS_LIBRARY_DIR}) set(hdfslib ${HDFS_LIBRARY}) diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake index bba39e2c82b8b..2a3c3dc95165a 100644 --- a/cmake/modules/SearchInstalledSoftware.cmake +++ b/cmake/modules/SearchInstalledSoftware.cmake @@ -1034,20 +1034,6 @@ if(builtin_ftgl) set(FTGL_LIBRARIES FTGL) endif() -#---Check for chirp-------------------------------------------------------------------- -if(chirp) - find_package(chirp) - if(NOT CHIRP_FOUND) - if(fail-on-missing) - message(FATAL_ERROR "chirp library not found and is required (chirp option enabled)") - else() - message(STATUS "chirp library not found. Set variable CHIRP_DIR to point to your chirp installation") - message(STATUS "For the time being switching OFF 'chirp' option") - set(chirp OFF CACHE BOOL "Disabled because chirp not found (${chirp_description})" FORCE) - endif() - endif() -endif() - #---Check for R/Rcpp/RInside-------------------------------------------------------------------- #added search of R packages here to remove multiples searches if(r) From 328e1e0f4e46a70eaf64c63e8b4b8ecf5d65dc9a Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 12:44:35 +0200 Subject: [PATCH 284/344] [RelNotes] Mention packages removed for v6.16. --- README/ReleaseNotes/v616/index.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index 187ac9a5dd9de..d18c30e809923 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -1,5 +1,5 @@ % ROOT Version 6.16 Release Notes -% 2018-06-13 +% 2018-06-25 ## Introduction @@ -37,6 +37,11 @@ The following people have contributed to this new version: The ruby binding has been unmaintained for several years; it does not build with current ruby versions. Given that this effectively meant that Ruby was dysfunctional and given that nobody (but package maintainers) has complained, we decided to remove it. +### Removal of previously deprecated or disabled packages + +The packages `afs`, `chirp`, `glite`, `sapdb`, `srp` and `ios` have been removed from ROOT. +They were deprecated before, or never ported from configure, make to CMake. + ## Core Libraries From 4d78470dd2e1a3f39ce712a237103c7672ae6f0c Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Fri, 22 Jun 2018 16:51:01 +0200 Subject: [PATCH 285/344] [cling] Move NullDerefProtectionTransformer into unnamed namesp. --- .../NullDerefProtectionTransformer.cpp | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp index 2bc3b9360f343..22257513699c8 100644 --- a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp +++ b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp @@ -26,15 +26,8 @@ using namespace clang; -namespace cling { - NullDerefProtectionTransformer::NullDerefProtectionTransformer(Interpreter* I) - : ASTTransformer(&I->getCI()->getSema()), m_Interp(I) { - } - - NullDerefProtectionTransformer::~NullDerefProtectionTransformer() - { } - - class PointerCheckInjector : public RecursiveASTVisitor { +namespace { +class PointerCheckInjector : public RecursiveASTVisitor { private: Interpreter& m_Interp; Sema& m_Sema; @@ -223,6 +216,15 @@ namespace cling { "Lookup of cling_runtime_internal_throwIfInvalidPointer failed!"); } }; +} + +namespace cling { + NullDerefProtectionTransformer::NullDerefProtectionTransformer(Interpreter* I) + : ASTTransformer(&I->getCI()->getSema()), m_Interp(I) { + } + + NullDerefProtectionTransformer::~NullDerefProtectionTransformer() + { } ASTTransformer::Result NullDerefProtectionTransformer::Transform(clang::Decl* D) { From fd11b390f3ea0223d272b71bde67b3727ccf1cd5 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Sat, 23 Jun 2018 11:12:19 +0200 Subject: [PATCH 286/344] [cling] Only check pointers for Decls from writable dirs (ROOT-9377). --- .../NullDerefProtectionTransformer.cpp | 42 ++++++++++++++++++- .../NullDerefProtectionTransformer.h | 10 +++++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp index 22257513699c8..0305f37ac672c 100644 --- a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp +++ b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp @@ -18,15 +18,17 @@ #include "clang/AST/Expr.h" #include "clang/AST/RecursiveASTVisitor.h" #include "clang/Basic/SourceLocation.h" +#include "clang/Basic/SourceManager.h" #include "clang/Frontend/CompilerInstance.h" #include "clang/Sema/Lookup.h" #include -#include using namespace clang; namespace { +using namespace cling; + class PointerCheckInjector : public RecursiveASTVisitor { private: Interpreter& m_Interp; @@ -226,9 +228,45 @@ namespace cling { NullDerefProtectionTransformer::~NullDerefProtectionTransformer() { } + bool NullDerefProtectionTransformer::shouldTransform(const clang::Decl* D) { + if (D->isFromASTFile()) + return false; + if (D->isTemplateDecl()) + return false; + + auto Loc = D->getLocation(); + if (Loc.isInvalid()) + return false; + + SourceManager& SM = m_Interp->getSema().getSourceManager(); + auto FID = SM.getFileID(Loc); + if (FID.isInvalid()) + return false; + + auto FE = SM.getFileEntryForID(FID); + if (!FE) + return false; + + auto Dir = FE->getDir(); + if (!Dir) + return false; + + auto IterAndInserted = m_ShouldVisitDir.try_emplace(Dir, true); + if (IterAndInserted.second == false) + return IterAndInserted.first->second; + + if (llvm::sys::fs::can_write(Dir->getName())) + return true; // `true` is already emplaced above. + + // Remember that this dir is not writable and should not be visited. + IterAndInserted.first->second = false; + return false; + } + + ASTTransformer::Result NullDerefProtectionTransformer::Transform(clang::Decl* D) { - if (getCompilationOpts().CheckPointerValidity) { + if (getCompilationOpts().CheckPointerValidity && shouldTransform(D)) { PointerCheckInjector injector(*m_Interp); injector.TraverseDecl(D); } diff --git a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.h b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.h index a7b679fe9fcd9..72fd608869e97 100644 --- a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.h +++ b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.h @@ -13,8 +13,11 @@ #include "ASTTransformer.h" +#include "llvm/ADT/DenseMap.h" + namespace clang { class Decl; + class DirectoryEntry; } namespace cling { class Interpreter; @@ -24,6 +27,13 @@ namespace cling { class NullDerefProtectionTransformer : public ASTTransformer { cling::Interpreter* m_Interp; + + /// Whether to visit a Decl coming from a file in a given directory. + llvm::DenseMap m_ShouldVisitDir; + + /// Whether the declaration should be visited and possibly transformed. + bool shouldTransform(const clang::Decl* D); + public: ///\ brief Constructs the NullDeref AST Transformer. /// From 9ded3b8563da8c69d72e64009f165c9590181329 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Mon, 25 Jun 2018 10:43:45 +0200 Subject: [PATCH 287/344] [Core] Split critical section in TClingClassInfo::GetBaseOffset the full method was protected with the global lock. Now we split it in two parts, the first one where the cache is looked at and no state is modified with a read lock. The second, where the cache is filled and the interpreter is invoked with a write lock. --- core/metacling/src/TClingClassInfo.cxx | 31 ++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/core/metacling/src/TClingClassInfo.cxx b/core/metacling/src/TClingClassInfo.cxx index 35845964922e1..1cb6973800a9f 100644 --- a/core/metacling/src/TClingClassInfo.cxx +++ b/core/metacling/src/TClingClassInfo.cxx @@ -606,27 +606,30 @@ long TClingClassInfo::GetOffset(const CXXMethodDecl* md) const ptrdiff_t TClingClassInfo::GetBaseOffset(TClingClassInfo* base, void* address, bool isDerivedObject) { - R__LOCKGUARD(gInterpreterMutex); - - // Check for the offset in the cache. - auto iter = fOffsetCache.find(base->GetDecl()); - if (iter != fOffsetCache.end()) { - std::pair offsetCache = (*iter).second; - if (OffsetPtrFunc_t executableFunc = offsetCache.second) { - if (address) { - return (*executableFunc)(address, isDerivedObject); + { + R__READ_LOCKGUARD(ROOT::gCoreMutex); + + // Check for the offset in the cache. + auto iter = fOffsetCache.find(base->GetDecl()); + if (iter != fOffsetCache.end()) { + std::pair offsetCache = (*iter).second; + if (OffsetPtrFunc_t executableFunc = offsetCache.second) { + if (address) { + return (*executableFunc)(address, isDerivedObject); + } + else { + Error("TClingBaseClassInfo::Offset", "The address of the object for virtual base offset calculation is not valid."); + return -1; + } } else { - Error("TClingBaseClassInfo::Offset", "The address of the object for virtual base offset calculation is not valid."); - return -1; + return offsetCache.first; } } - else { - return offsetCache.first; - } } // Compute the offset. + R__WRITE_LOCKGUARD(ROOT::gCoreMutex); TClingBaseClassInfo binfo(fInterp, this, base); return binfo.Offset(address, isDerivedObject); } From 08f2238b840368f68c7dbc55cee39868bc55d206 Mon Sep 17 00:00:00 2001 From: Olivier Couet Date: Mon, 25 Jun 2018 15:08:25 +0200 Subject: [PATCH 288/344] When the histograms' title's font was set in pixel the position of the `TPaveText` containing the title was not correct. --- README/ReleaseNotes/v616/index.md | 3 +++ hist/histpainter/src/THistPainter.cxx | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index d18c30e809923..82f4de0b62c17 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -82,6 +82,9 @@ They were deprecated before, or never ported from configure, make to CMake. canvas->Print("example.pdf","EmbedFonts"); ~~~ - In TAttAxis::SaveAttributes` take into account the new default value for `TitleOffset`. + - When the histograms' title's font was set in pixel the position of the + `TPaveText` containing the title was not correct. This problem was reported + [here](https://root-forum.cern.ch/t/titles-disappear-for-font-precision-3/). ## 3D Graphics Libraries diff --git a/hist/histpainter/src/THistPainter.cxx b/hist/histpainter/src/THistPainter.cxx index 54a800abacb60..ff0a3a529b29c 100644 --- a/hist/histpainter/src/THistPainter.cxx +++ b/hist/histpainter/src/THistPainter.cxx @@ -10018,7 +10018,16 @@ void THistPainter::PaintTitle() } Double_t ht = gStyle->GetTitleH(); Double_t wt = gStyle->GetTitleW(); - if (ht <= 0) ht = 1.1*gStyle->GetTitleFontSize(); + + if (ht <= 0) { + if (gStyle->GetTitleFont("")%10 == 3) { + Double_t hw = TMath::Max((Double_t)gPad->XtoPixel(gPad->GetX2()), + (Double_t)gPad->YtoPixel(gPad->GetY1())); + ht = 1.1*(gStyle->GetTitleSize("")/hw); + } else { + ht = 1.1*gStyle->GetTitleFontSize(); + } + } if (ht <= 0) ht = 0.05; if (wt <= 0) { TLatex l; From b8d941aac613af88cfecf58d3e151eb6144085e8 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 25 Jun 2018 10:41:47 +0200 Subject: [PATCH 289/344] [DF] Change TSlotStackPutBackTooMany to only test the nominal case --- tree/dataframe/test/dataframe_nodes.cxx | 27 ++++--------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/tree/dataframe/test/dataframe_nodes.cxx b/tree/dataframe/test/dataframe_nodes.cxx index 22dca1abc536c..388fdae37675a 100644 --- a/tree/dataframe/test/dataframe_nodes.cxx +++ b/tree/dataframe/test/dataframe_nodes.cxx @@ -37,31 +37,12 @@ TEST(RDataFrameNodes, TSlotStackGetOneTooMuch) TEST(RDataFrameNodes, TSlotStackPutBackTooMany) { - std::mutex m; - auto theTest = [&m]() { - unsigned int n(2); - ROOT::Internal::RDF::TSlotStack s(n); - - std::vector ts; - - for (unsigned int i = 0; i < 2; ++i) { - ts.emplace_back([&s, &m]() { - std::lock_guard lg(m); - s.GetSlot(); - }); - } - for (unsigned int i = 0; i < 2; ++i) { - ts.emplace_back([&s, &m, i]() { - std::lock_guard lg(m); - s.ReturnSlot(i); - }); - } - - for (auto &&t : ts) - t.join(); + auto theTest = []() { + ROOT::Internal::RDF::TSlotStack s(1); + s.ReturnSlot(0); }; - ASSERT_DEATH(theTest(), "TSlotStack has a reference count relative to an index which will become negative"); + EXPECT_DEATH(theTest(), "TSlotStack has a reference count relative to an index which will become negative"); } #endif From 5af33f8e1dee1ecf054871923697ae877e7f8abb Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 25 Jun 2018 10:52:30 +0200 Subject: [PATCH 290/344] [DF] Use numeric_limits::max instead of UINT_MAX (part 2) --- tree/dataframe/src/RDFNodes.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index df613f01664a3..ccf3bddf2336a 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -216,7 +216,7 @@ void TSlotStack::ReturnSlot(unsigned int slotNumber) R__ASSERT(count > 0U && "TSlotStack has a reference count relative to an index which will become negative."); count--; if (0U == count) { - index = UINT_MAX; + index = std::numeric_limits::max(); std::lock_guard guard(fMutex); fBuf[fCursor++] = slotNumber; R__ASSERT(fCursor <= fBuf.size() && @@ -231,7 +231,7 @@ unsigned int TSlotStack::GetSlot() auto &index = GetIndex(); auto &count = GetCount(); count++; - if (UINT_MAX != index) + if (std::numeric_limits::max() != index) return index; std::lock_guard guard(fMutex); R__ASSERT(fCursor > 0 && From ec4c3ffdb552c08c6eb6241e71c3fb1ef3e904f8 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Mon, 25 Jun 2018 12:30:58 +0200 Subject: [PATCH 291/344] [DF] TSlotStack uses local maps indexed with thread ids rather than thread local this prevents bogus behaviour if two instances of TSlotStack are used simultaneously or even one after the other. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 21 +++++++---------- tree/dataframe/src/RDFNodes.cxx | 35 ++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 52407170e8550..9c0e549134b05 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -17,7 +17,7 @@ #include "ROOT/RDFUtils.hxx" #include "ROOT/RIntegerSequence.hxx" #include "ROOT/RVec.hxx" -#include "ROOT/TSpinMutex.hxx" +#include "ROOT/TRWSpinLock.hxx" #include "ROOT/TypeTraits.hxx" #include "TError.h" #include "TTreeReaderArray.h" @@ -30,6 +30,7 @@ #include // std::accumulate (FillReport), std::iota (TSlotStack) #include #include +#include #include #include @@ -38,31 +39,25 @@ namespace Internal { namespace RDF { class RActionBase; -// This is an helper class to allow to pick a slot without resorting to a map +// This is an helper class to allow to pick a slot resorting to a map // indexed by thread ids. // WARNING: this class does not work as a regular stack. The size is // fixed at construction time and no blocking is foreseen. class TSlotStack { private: - unsigned int &GetCount() - { - TTHREAD_TLS(unsigned int) count = 0U; - return count; - } - unsigned int &GetIndex() - { - TTHREAD_TLS(unsigned int) index = std::numeric_limits::max(); - return index; - } + unsigned int &GetCount(); + unsigned int &GetIndex(); unsigned int fCursor; std::vector fBuf; - ROOT::TSpinMutex fMutex; + ROOT::TRWSpinLock fRWLock; public: TSlotStack() = delete; TSlotStack(unsigned int size) : fCursor(size), fBuf(size) { std::iota(fBuf.begin(), fBuf.end(), 0U); } void ReturnSlot(unsigned int slotNumber); unsigned int GetSlot(); + std::map fCountMap; + std::map fIndexMap; }; } // ns RDF } // ns Internal diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index ccf3bddf2336a..15612e0df26e0 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -209,6 +209,37 @@ void RJittedFilter::InitNode() fConcreteFilter->InitNode(); } +unsigned int &TSlotStack::GetCount() +{ + const auto tid = std::this_thread::get_id(); + { + ROOT::TRWSpinLockReadGuard rg(fRWLock); + auto it = fCountMap.find(tid); + if (fCountMap.end() != it) + return it->second; + } + + { + ROOT::TRWSpinLockWriteGuard rg(fRWLock); + return (fCountMap[tid] = 0U); + } +} +unsigned int &TSlotStack::GetIndex() +{ + const auto tid = std::this_thread::get_id(); + + { + ROOT::TRWSpinLockReadGuard rg(fRWLock); + if (fIndexMap.end() != fIndexMap.find(tid)) + return fIndexMap[tid]; + } + + { + ROOT::TRWSpinLockWriteGuard rg(fRWLock); + return (fIndexMap[tid] = std::numeric_limits::max()); + } +} + void TSlotStack::ReturnSlot(unsigned int slotNumber) { auto &index = GetIndex(); @@ -217,7 +248,7 @@ void TSlotStack::ReturnSlot(unsigned int slotNumber) count--; if (0U == count) { index = std::numeric_limits::max(); - std::lock_guard guard(fMutex); + ROOT::TRWSpinLockWriteGuard guard(fRWLock); fBuf[fCursor++] = slotNumber; R__ASSERT(fCursor <= fBuf.size() && "TSlotStack assumes that at most a fixed number of values can be present in the " @@ -233,7 +264,7 @@ unsigned int TSlotStack::GetSlot() count++; if (std::numeric_limits::max() != index) return index; - std::lock_guard guard(fMutex); + ROOT::TRWSpinLockWriteGuard guard(fRWLock); R__ASSERT(fCursor > 0 && "TSlotStack assumes that a value can be always obtained. In this case fCursor is <=0 and this " "violates such assumption."); From 4da62188400e859c433a7984f8ad0133a292fb6d Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 11 Jun 2018 22:06:04 +0200 Subject: [PATCH 292/344] [DF][NFC] Remove redundant override See e.g. C++ core guidelines C.128 --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 9c0e549134b05..d204a2aede72e 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -633,18 +633,18 @@ public: void SetFilter(std::unique_ptr f); - void InitSlot(TTreeReader *r, unsigned int slot) override final; - bool CheckFilters(unsigned int slot, Long64_t entry) override final; - void Report(ROOT::RDF::RCutFlowReport &) const override final; - void PartialReport(ROOT::RDF::RCutFlowReport &) const override final; - void FillReport(ROOT::RDF::RCutFlowReport &) const override final; - void IncrChildrenCount() override final; - void StopProcessing() override final; - void ResetChildrenCount() override final; - void TriggerChildrenCount() override final; - void ResetReportCount() override final; - void ClearValueReaders(unsigned int slot) override final; - void InitNode() override final; + void InitSlot(TTreeReader *r, unsigned int slot) final; + bool CheckFilters(unsigned int slot, Long64_t entry) final; + void Report(ROOT::RDF::RCutFlowReport &) const final; + void PartialReport(ROOT::RDF::RCutFlowReport &) const final; + void FillReport(ROOT::RDF::RCutFlowReport &) const final; + void IncrChildrenCount() final; + void StopProcessing() final; + void ResetChildrenCount() final; + void TriggerChildrenCount() final; + void ResetReportCount() final; + void ClearValueReaders(unsigned int slot) final; + void InitNode() final; }; template From 2bb9f0b83d5fbf2b6619abdab60afab9443c33a5 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 12:24:40 +0200 Subject: [PATCH 293/344] [DF][NFC] Remove obsolete comments --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 3 --- 1 file changed, 3 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index d204a2aede72e..2b1d027dfa69d 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -430,7 +430,6 @@ public: /// This method is invoked to update a partial result during the event loop, right before passing the result to a /// user-defined callback registered via RResultPtr::RegisterCallback - /// TODO the PartialUpdateImpl trick can go away once all action helpers will implement PartialUpdate void *PartialUpdate(unsigned int slot) final { return PartialUpdateImpl(slot); } private: @@ -623,8 +622,6 @@ public: /// A wrapper around a concrete RFilter, which forwards all calls to it /// RJittedFilter is the type of the node returned by jitted Filter calls: the concrete filter can be created and set /// at a later time, from jitted code. -// FIXME after switching to the new ownership model, RJittedFilter should avoid inheriting from RFilterBase and -// overriding all of its methods: it can just implement them, and RFilterBase's can go back to have non-virtual methods class RJittedFilter final : public RFilterBase { std::unique_ptr fConcreteFilter = nullptr; From c76da940a4aa9cdb509824290085bfff6cae276e Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 13:21:39 +0200 Subject: [PATCH 294/344] [DF][NFC] Remove redundant forward declarations --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 8c75b6111e723..64336376c7664 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -58,31 +58,9 @@ class TH2D; class TH3D; class TProfile2D; class TProfile; -namespace ROOT { -namespace Detail { -namespace RDF { -namespace TCCHelperTypes { -struct TNothing; -struct TSlot; -struct TSlotAndEntry; -} // namespace TCCHelperTypes -} // namespace RDF -} // namespace Detail -} // namespace ROOT namespace ROOT { - -// forward declarations class RDataFrame; - -} // namespace ROOT - -namespace cling { -std::string printValue(ROOT::RDataFrame *tdf); // For a nice printing at the prompt -} - -namespace ROOT { - namespace RDF { namespace RDFDetail = ROOT::Detail::RDF; namespace RDFInternal = ROOT::Internal::RDF; From 590b964bfe6f8893de5324ebed8005581c729272 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 13:22:08 +0200 Subject: [PATCH 295/344] [DF] Add two helper aliases for TypeList operations --- tree/dataframe/inc/ROOT/RDFUtils.hxx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tree/dataframe/inc/ROOT/RDFUtils.hxx b/tree/dataframe/inc/ROOT/RDFUtils.hxx index 6fa55cd3fdc44..cd62c727270be 100644 --- a/tree/dataframe/inc/ROOT/RDFUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDFUtils.hxx @@ -83,6 +83,9 @@ struct RemoveFirstParameterIf { using type = RemoveFirstParameter_t; }; +template +using RemoveFirstParameterIf_t = typename RemoveFirstParameterIf::type; + template struct RemoveFirstTwoParametersIf { using type = TypeList; @@ -94,6 +97,9 @@ struct RemoveFirstTwoParametersIf { using type = typename RemoveFirstParameterIf::type; }; +template +using RemoveFirstTwoParametersIf_t = typename RemoveFirstTwoParametersIf::type; + /// Detect whether a type is an instantiation of RVec template struct IsRVec_t : public std::false_type {}; From b045a09f18a9acf93ff9970b4b0cf9d11c43b0c4 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 13:36:33 +0200 Subject: [PATCH 296/344] [DF] More readable tag dispatching in RCustomColumn --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 16 ++++---- tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx | 4 +- tree/dataframe/inc/ROOT/RDFNodes.hxx | 37 +++++++++---------- 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 64336376c7664..2cc1ccd5ee0b8 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -232,7 +232,7 @@ public: template ::value, int>::type = 0> RInterface Define(std::string_view name, F expression, const ColumnNames_t &columns = {}) { - return DefineImpl(name, std::move(expression), columns); + return DefineImpl(name, std::move(expression), columns); } // clang-format on @@ -260,7 +260,7 @@ public: template RInterface DefineSlot(std::string_view name, F expression, const ColumnNames_t &columns = {}) { - return DefineImpl(name, std::move(expression), columns); + return DefineImpl(name, std::move(expression), columns); } // clang-format on @@ -289,7 +289,7 @@ public: template RInterface DefineSlotEntry(std::string_view name, F expression, const ColumnNames_t &columns = {}) { - return DefineImpl(name, std::move(expression), columns); + return DefineImpl(name, std::move(expression), columns); } // clang-format on @@ -1427,14 +1427,14 @@ private: // Entry number column const auto entryColName = "tdfentry_"; auto entryColGen = [](unsigned int, ULong64_t entry) { return entry; }; - DefineImpl(entryColName, std::move(entryColGen), - {}); + DefineImpl(entryColName, + std::move(entryColGen), {}); fValidCustomColumns.emplace_back(entryColName); // Slot number column const auto slotColName = "tdfslot_"; auto slotColGen = [](unsigned int slot) { return slot; }; - DefineImpl(slotColName, std::move(slotColGen), {}); + DefineImpl(slotColName, std::move(slotColGen), {}); fValidCustomColumns.emplace_back(slotColName); } @@ -1558,9 +1558,9 @@ private: using ArgTypes_t = typename TTraits::CallableTraits::arg_types; using ColTypesTmp_t = typename RDFInternal::RemoveFirstParameterIf< - std::is_same::value, ArgTypes_t>::type; + std::is_same::value, ArgTypes_t>::type; using ColTypes_t = typename RDFInternal::RemoveFirstTwoParametersIf< - std::is_same::value, ColTypesTmp_t>::type; + std::is_same::value, ColTypesTmp_t>::type; constexpr auto nColumns = ColTypes_t::list_size; const auto validColumnNames = GetValidatedColumnNames(nColumns, columns); diff --git a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx index ab8375703ecad..af1b77473572b 100644 --- a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx @@ -261,7 +261,7 @@ void DefineDSColumnHelper(std::string_view name, RLoopManager &lm, RDataSource & { auto readers = ds.GetColumnReaders(name); auto getValue = [readers](unsigned int slot) { return *readers[slot]; }; - using NewCol_t = RCustomColumn; + using NewCol_t = RCustomColumn; lm.Book(std::make_shared(name, std::move(getValue), ColumnNames_t{}, &lm, /*isDSColumn=*/true)); lm.AddCustomColumnName(name); lm.AddDataSourceColumn(name); @@ -305,7 +305,7 @@ void JitFilterHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RJ template void JitDefineHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RLoopManager *lm) { - using NewCol_t = RCustomColumn; + using NewCol_t = RCustomColumn; using ColTypes_t = typename TTraits::CallableTraits::arg_types; constexpr auto nColumns = ColTypes_t::list_size; diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 2b1d027dfa69d..4e4b33723b4e4 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -477,26 +477,25 @@ public: }; // clang-format off -namespace TCCHelperTypes { -struct TNothing; -struct TSlot; -struct TSlotAndEntry; +namespace CustomColExtraArgs { +struct None{}; +struct Slot{}; +struct SlotAndEntry{}; } // clang-format on -template +template class RCustomColumn final : public RCustomColumnBase { // shortcuts - using TNothing = TCCHelperTypes::TNothing; - using TSlot = TCCHelperTypes::TSlot; - using TSlotAndEntry = TCCHelperTypes::TSlotAndEntry; - using UHT_t = UPDATE_HELPER_TYPE; + using NoneTag = CustomColExtraArgs::None; + using SlotTag = CustomColExtraArgs::Slot; + using SlotAndEntryTag = CustomColExtraArgs::SlotAndEntry; // other types using FunParamTypes_t = typename CallableTraits::arg_types; - using BranchTypesTmp_t = - typename RDFInternal::RemoveFirstParameterIf::value, FunParamTypes_t>::type; - using ColumnTypes_t = typename RDFInternal::RemoveFirstTwoParametersIf::value, - BranchTypesTmp_t>::type; + using ColumnTypesTmp_t = + RDFInternal::RemoveFirstParameterIf_t::value, FunParamTypes_t>; + using ColumnTypes_t = + RDFInternal::RemoveFirstTwoParametersIf_t::value, ColumnTypesTmp_t>; using TypeInd_t = std::make_index_sequence; using ret_type = typename CallableTraits::ret_type; // Avoid instantiating vector as `operator[]` returns temporaries in that case. Use std::deque instead. @@ -532,7 +531,7 @@ public: { if (entry != fLastCheckedEntry[slot]) { // evaluate this filter, cache the result - UpdateHelper(slot, entry, TypeInd_t(), ColumnTypes_t(), (UPDATE_HELPER_TYPE *)nullptr); + UpdateHelper(slot, entry, TypeInd_t(), ColumnTypes_t(), ExtraArgsTag{}); fLastCheckedEntry[slot] = entry; } } @@ -543,8 +542,7 @@ public: } template - void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence, TypeList, - TCCHelperTypes::TNothing *) + void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence, TypeList, NoneTag) { fLastResults[slot] = fExpression(std::get(fValues[slot]).Get(entry)...); // silence "unused parameter" warnings in gcc @@ -553,8 +551,7 @@ public: } template - void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence, TypeList, - TCCHelperTypes::TSlot *) + void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence, TypeList, SlotTag) { fLastResults[slot] = fExpression(slot, std::get(fValues[slot]).Get(entry)...); // silence "unused parameter" warnings in gcc @@ -563,8 +560,8 @@ public: } template - void UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence, TypeList, - TCCHelperTypes::TSlotAndEntry *) + void + UpdateHelper(unsigned int slot, Long64_t entry, std::index_sequence, TypeList, SlotAndEntryTag) { fLastResults[slot] = fExpression(slot, entry, std::get(fValues[slot]).Get(entry)...); // silence "unused parameter" warnings in gcc From b682a3172a6f6fc2f96d98e023a3cfd348793665 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 15:35:10 +0200 Subject: [PATCH 297/344] [DF] More readable tag dispatching for actions --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 40 +++++++++--------- tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx | 41 +++++++++---------- 2 files changed, 40 insertions(+), 41 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 2cc1ccd5ee0b8..66b8a04cba19e 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -746,7 +746,7 @@ public: if (h->GetXaxis()->GetXmax() == h->GetXaxis()->GetXmin()) RDFInternal::HistoUtils<::TH1D>::SetCanExtendAllAxes(*h); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } template @@ -776,7 +776,7 @@ public: ROOT::Internal::RDF::RIgnoreErrorLevelRAII iel(kError); h = model.GetHistogram(); } - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } //////////////////////////////////////////////////////////////////////////// @@ -838,7 +838,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } //////////////////////////////////////////////////////////////////////////// @@ -871,7 +871,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } template @@ -910,7 +910,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } //////////////////////////////////////////////////////////////////////////// @@ -945,7 +945,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } template @@ -982,7 +982,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } //////////////////////////////////////////////////////////////////////////// @@ -1016,7 +1016,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } template @@ -1056,7 +1056,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } //////////////////////////////////////////////////////////////////////////// @@ -1092,7 +1092,7 @@ public: const auto userColumns = RDFInternal::AtLeastOneEmptyString(columnViews) ? ColumnNames_t() : ColumnNames_t(columnViews.begin(), columnViews.end()); - return CreateAction(userColumns, h); + return CreateAction(userColumns, h); } template @@ -1124,7 +1124,7 @@ public: if (!RDFInternal::HistoUtils::HasAxisLimits(*h)) { throw std::runtime_error("The absence of axes limits is not supported yet."); } - return CreateAction(columnList, h); + return CreateAction(columnList, h); } //////////////////////////////////////////////////////////////////////////// @@ -1145,7 +1145,7 @@ public: if (!RDFInternal::HistoUtils::HasAxisLimits(*h)) { throw std::runtime_error("The absence of axes limits is not supported yet."); } - return CreateAction(bl, h, bl.size()); + return CreateAction(bl, h, bl.size()); } //////////////////////////////////////////////////////////////////////////// @@ -1165,7 +1165,7 @@ public: const auto userColumns = columnName.empty() ? ColumnNames_t() : ColumnNames_t({std::string(columnName)}); using RetType_t = RDFDetail::MinReturnType_t; auto minV = std::make_shared(std::numeric_limits::max()); - return CreateAction(userColumns, minV); + return CreateAction(userColumns, minV); } //////////////////////////////////////////////////////////////////////////// @@ -1185,7 +1185,7 @@ public: const auto userColumns = columnName.empty() ? ColumnNames_t() : ColumnNames_t({std::string(columnName)}); using RetType_t = RDFDetail::MaxReturnType_t; auto maxV = std::make_shared(std::numeric_limits::lowest()); - return CreateAction(userColumns, maxV); + return CreateAction(userColumns, maxV); } //////////////////////////////////////////////////////////////////////////// @@ -1203,7 +1203,7 @@ public: { const auto userColumns = columnName.empty() ? ColumnNames_t() : ColumnNames_t({std::string(columnName)}); auto meanV = std::make_shared(0); - return CreateAction(userColumns, meanV); + return CreateAction(userColumns, meanV); } // clang-format off @@ -1226,7 +1226,7 @@ public: { const auto userColumns = columnName.empty() ? ColumnNames_t() : ColumnNames_t({std::string(columnName)}); auto sumV = std::make_shared>(initValue); - return CreateAction(userColumns, sumV); + return CreateAction(userColumns, sumV); } // clang-format on @@ -1503,7 +1503,7 @@ private: inline static std::string GetNodeTypeName(); // Type was specified by the user, no need to infer it - template ::value, int>::type = 0> RResultPtr CreateAction(const ColumnNames_t &columns, const std::shared_ptr &r) { @@ -1515,14 +1515,14 @@ private: RDFInternal::TypeList()); const auto nSlots = lm->GetNSlots(); auto actionPtr = - RDFInternal::BuildAndBook(selectedCols, r, nSlots, *lm, *fProxiedPtr, (ActionType *)nullptr); + RDFInternal::BuildAndBook(selectedCols, r, nSlots, *lm, *fProxiedPtr, ActionTag{}); return MakeResultPtr(r, lm, actionPtr); } // User did not specify type, do type inference // This version of CreateAction has a `nColumns` optional argument. If present, the number of required columns for // this action is taken equal to nColumns, otherwise it is assumed to be sizeof...(BranchTypes) - template ::value, int>::type = 0> RResultPtr CreateAction(const ColumnNames_t &columns, const std::shared_ptr &r, const int nColumns = -1) @@ -1542,7 +1542,7 @@ private: auto actionPtrPtrOnHeap = RDFInternal::MakeSharedOnHeap(resultProxyAndActionPtrPtr.second); auto toJit = RDFInternal::JitBuildAndBook(validColumnNames, upcastInterface.GetNodeTypeName(), upcastNode.get(), - typeid(std::shared_ptr), typeid(ActionType), rOnHeap, tree, + typeid(std::shared_ptr), typeid(ActionTag), rOnHeap, tree, nSlots, customColumns, fDataSource, actionPtrPtrOnHeap, lm->GetID()); lm->ToJit(toJit); return resultProxy; diff --git a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx index af1b77473572b..3d53450746657 100644 --- a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx @@ -70,18 +70,17 @@ public: // clang-format off /// This namespace defines types to be used for tag dispatching in RInterface. -namespace ActionTypes { -// they cannot just be forward declared: we need concrete types for jitting and to use them with TClass::GetClass -struct Histo1D {}; -struct Histo2D {}; -struct Histo3D {}; -struct Profile1D {}; -struct Profile2D {}; -struct Min {}; -struct Max {}; -struct Sum {}; -struct Mean {}; -struct Fill {}; +namespace ActionTags { +struct Histo1D{}; +struct Histo2D{}; +struct Histo3D{}; +struct Profile1D{}; +struct Profile2D{}; +struct Min{}; +struct Max{}; +struct Sum{}; +struct Mean{}; +struct Fill{}; } // clang-format on @@ -115,9 +114,9 @@ struct HistoUtils { }; // Generic filling (covers Histo2D, Histo3D, Profile1D and Profile2D actions, with and without weights) -template +template RActionBase *BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &h, - const unsigned int nSlots, RLoopManager &loopManager, PrevNodeType &prevNode, ActionType *) + const unsigned int nSlots, RLoopManager &loopManager, PrevNodeType &prevNode, ActionTag) { using Helper_t = FillTOHelper; using Action_t = RAction>; @@ -129,7 +128,7 @@ RActionBase *BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr RActionBase *BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr<::TH1D> &h, const unsigned int nSlots, - RLoopManager &loopManager, PrevNodeType &prevNode, ActionTypes::Histo1D *) + RLoopManager &loopManager, PrevNodeType &prevNode, ActionTags::Histo1D) { auto hasAxisLimits = HistoUtils<::TH1D>::HasAxisLimits(*h); @@ -155,7 +154,7 @@ RActionBase *BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr<::TH1D> template RActionBase * BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &minV, const unsigned int nSlots, - RLoopManager &loopManager, PrevNodeType &prevNode, ActionTypes::Min *) + RLoopManager &loopManager, PrevNodeType &prevNode, ActionTags::Min) { using Helper_t = MinHelper; using Action_t = RAction>; @@ -168,7 +167,7 @@ BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &m template RActionBase * BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &maxV, const unsigned int nSlots, - RLoopManager &loopManager, PrevNodeType &prevNode, ActionTypes::Max *) + RLoopManager &loopManager, PrevNodeType &prevNode, ActionTags::Max) { using Helper_t = MaxHelper; using Action_t = RAction>; @@ -181,7 +180,7 @@ BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &m template RActionBase * BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &sumV, const unsigned int nSlots, - RLoopManager &loopManager, PrevNodeType &prevNode, ActionTypes::Sum *) + RLoopManager &loopManager, PrevNodeType &prevNode, ActionTags::Sum) { using Helper_t = SumHelper; using Action_t = RAction>; @@ -193,7 +192,7 @@ BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &s // Mean action template RActionBase *BuildAndBook(const ColumnNames_t &bl, const std::shared_ptr &meanV, const unsigned int nSlots, - RLoopManager &loopManager, PrevNodeType &prevNode, ActionTypes::Mean *) + RLoopManager &loopManager, PrevNodeType &prevNode, ActionTags::Mean) { using Helper_t = MeanHelper; using Action_t = RAction>; @@ -317,7 +316,7 @@ void JitDefineHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RL } /// Convenience function invoked by jitted code to build action nodes at runtime -template +template void CallBuildAndBook(PrevNodeType &prevNode, const ColumnNames_t &bl, const unsigned int nSlots, const std::shared_ptr *rOnHeap, const std::shared_ptr *actionPtrPtrOnHeap) @@ -330,7 +329,7 @@ void CallBuildAndBook(PrevNodeType &prevNode, const ColumnNames_t &bl, const uns if (ds) DefineDataSourceColumns(bl, loopManager, *ds, std::make_index_sequence(), ColTypes_t()); RActionBase *actionPtr = - BuildAndBook(bl, *rOnHeap, nSlots, loopManager, prevNode, (ActionType *)nullptr); + BuildAndBook(bl, *rOnHeap, nSlots, loopManager, prevNode, ActionTag{}); **actionPtrPtrOnHeap = actionPtr; delete rOnHeap; delete actionPtrPtrOnHeap; From b654af554a1d83b918387334331777f690f33d82 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 18:32:00 +0200 Subject: [PATCH 298/344] [DF] Remove obsolete data members and methods from RCustomColumnBase They were added when custom columns where nodes of the computation graph, but are useless now that they are not anymore. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 3 --- tree/dataframe/src/RDFNodes.cxx | 11 ++--------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 4e4b33723b4e4..c521a31f8429c 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -455,8 +455,6 @@ protected: RLoopManager *fLoopManager; ///< A raw pointer to the RLoopManager at the root of this functional graph. It is only /// guaranteed to contain a valid address during an event loop. const std::string fName; - unsigned int fNChildren{0}; ///< number of nodes of the functional graph hanging from this object - unsigned int fNStopsReceived{0}; ///< number of times that a children node signaled to stop processing entries. const unsigned int fNSlots; ///< number of thread slots used by this node, inherited from parent node. const bool fIsDataSourceColumn; ///< does the custom column refer to a data-source column? (or a user-define column?) std::vector fLastCheckedEntry; @@ -468,7 +466,6 @@ public: virtual void InitSlot(TTreeReader *r, unsigned int slot) = 0; virtual void *GetValuePtr(unsigned int slot) = 0; virtual const std::type_info &GetTypeId() const = 0; - RLoopManager *GetLoopManagerUnchecked() const; std::string GetName() const; virtual void Update(unsigned int slot, Long64_t entry) = 0; virtual void ClearValueReaders(unsigned int slot) = 0; diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index 15612e0df26e0..8fc709aefbb82 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -77,11 +77,9 @@ template class TColumnValue>; } // end NS Internal } // end NS ROOT -RCustomColumnBase::RCustomColumnBase(RLoopManager *implPtr, std::string_view name, const unsigned int nSlots, +RCustomColumnBase::RCustomColumnBase(RLoopManager *lm, std::string_view name, const unsigned int nSlots, const bool isDSColumn) - : fLoopManager(implPtr), fName(name), fNSlots(nSlots), fIsDataSourceColumn(isDSColumn) -{ -} + : fLoopManager(lm), fName(name), fNSlots(nSlots), fIsDataSourceColumn(isDSColumn) {} // pin vtable. Work around cling JIT issue. RCustomColumnBase::~RCustomColumnBase() = default; @@ -91,11 +89,6 @@ std::string RCustomColumnBase::GetName() const return fName; } -RLoopManager *RCustomColumnBase::GetLoopManagerUnchecked() const -{ - return fLoopManager; -} - void RCustomColumnBase::InitNode() { fLastCheckedEntry = std::vector(fNSlots, -1); From e7c4d596589560ebe1b1873545614b90b73bce9f Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 20:05:36 +0200 Subject: [PATCH 299/344] [DF] Help windows with friend declaration of printValue --- tree/dataframe/inc/ROOT/RDFInterface.hxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx index 66b8a04cba19e..5c65da9d2aeaf 100644 --- a/tree/dataframe/inc/ROOT/RDFInterface.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx @@ -59,8 +59,15 @@ class TH3D; class TProfile2D; class TProfile; +// Windows requires a forward decl of printValue to accept it as a valid friend function in RInterface namespace ROOT { class RDataFrame; +} +namespace cling { +std::string printValue(ROOT::RDataFrame *tdf); +} + +namespace ROOT { namespace RDF { namespace RDFDetail = ROOT::Detail::RDF; namespace RDFInternal = ROOT::Internal::RDF; From e8350ae870fa9ed3aae55865307b523a671414a3 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Mon, 25 Jun 2018 14:17:00 +0200 Subject: [PATCH 300/344] [DF][NFC] Rename JitActions -> BuildJittedNodes We jit actions as well as Define's and Filter's now. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 2 +- tree/dataframe/src/RDFNodes.cxx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index c521a31f8429c..7e40483b0a7b3 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -161,7 +161,7 @@ class RLoopManager { void InitNodes(); void CleanUpNodes(); void CleanUpTask(unsigned int slot); - void JitActions(); + void BuildJittedNodes(); void EvalChildrenCounts(); unsigned int GetNextID() const; diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index 8fc709aefbb82..b559ca1755575 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -513,7 +513,7 @@ void RLoopManager::CleanUpTask(unsigned int slot) } /// Jit all actions that required runtime column type inference, and clean the `fToJit` member variable. -void RLoopManager::JitActions() +void RLoopManager::BuildJittedNodes() { auto error = TInterpreter::EErrorCode::kNoError; gInterpreter->Calc(fToJit.c_str(), &error); @@ -551,7 +551,7 @@ unsigned int RLoopManager::GetNextID() const void RLoopManager::Run() { if (!fToJit.empty()) - JitActions(); + BuildJittedNodes(); InitNodes(); From 0db1003b8b3a6e401a7a794165c19f42e10b75ce Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 18:51:53 +0200 Subject: [PATCH 301/344] [DF] Add RJittedCustomColumn, in line with RJittedFilter --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 25 ++++++++++++++++++++--- tree/dataframe/src/RDFNodes.cxx | 30 ++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 7e40483b0a7b3..b46000aa243d9 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -473,6 +473,27 @@ public: void InitNode(); }; +/// A wrapper around a concrete RCustomColumn, which forwards all calls to it +/// RJittedCustomColumn is a placeholder that is put in the collection of custom columns in place of a RCustomColumn +/// that will be just-in-time compiled. Jitted code will assign the concrete RCustomColumn to this RJittedCustomColumn +/// before the event-loop starts. +class RJittedCustomColumn : public RCustomColumnBase +{ + std::unique_ptr fConcreteCustomColumn = nullptr; + +public: + RJittedCustomColumn(RLoopManager *lm, std::string_view name, unsigned int nSlots, bool isDSColumn) + : RCustomColumnBase(lm, name, nSlots, isDSColumn) {} + + void SetFilter(std::unique_ptr c) { fConcreteCustomColumn = std::move(c); } + + void InitSlot(TTreeReader *r, unsigned int slot) final; + void *GetValuePtr(unsigned int slot) final; + const std::type_info &GetTypeId() const final; + void Update(unsigned int slot, Long64_t entry) final; + void ClearValueReaders(unsigned int slot) final; +}; + // clang-format off namespace CustomColExtraArgs { struct None{}; @@ -509,9 +530,7 @@ public: RCustomColumn(std::string_view name, F &&expression, const ColumnNames_t &bl, RLoopManager *lm, bool isDSColumn = false) : RCustomColumnBase(lm, name, lm->GetNSlots(), isDSColumn), fExpression(std::move(expression)), fBranches(bl), - fLastResults(fNSlots), fValues(fNSlots) - { - } + fLastResults(fNSlots), fValues(fNSlots) {} RCustomColumn(const RCustomColumn &) = delete; RCustomColumn &operator=(const RCustomColumn &) = delete; diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index b559ca1755575..dc5fcd7c17d3a 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -94,6 +94,36 @@ void RCustomColumnBase::InitNode() fLastCheckedEntry = std::vector(fNSlots, -1); } +void RJittedCustomColumn::InitSlot(TTreeReader *r, unsigned int slot) +{ + R__ASSERT(fConcreteCustomColumn != nullptr); + fConcreteCustomColumn->InitSlot(r, slot); +} + +void *RJittedCustomColumn::GetValuePtr(unsigned int slot) +{ + R__ASSERT(fConcreteCustomColumn != nullptr); + fConcreteCustomColumn->GetValuePtr(slot); +} + +const std::type_info &RJittedCustomColumn::GetTypeId() const +{ + R__ASSERT(fConcreteCustomColumn != nullptr); + fConcreteCustomColumn->GetTypeId(); +} + +void RJittedCustomColumn::Update(unsigned int slot, Long64_t entry) +{ + R__ASSERT(fConcreteCustomColumn != nullptr); + fConcreteCustomColumn->Update(slot, entry); +} + +void RJittedCustomColumn::ClearValueReaders(unsigned int slot) +{ + R__ASSERT(fConcreteCustomColumn != nullptr); + fConcreteCustomColumn->ClearValueReaders(slot); +} + RFilterBase::RFilterBase(RLoopManager *implPtr, std::string_view name, const unsigned int nSlots) : fLoopManager(implPtr), fLastResult(nSlots), fAccepted(nSlots), fRejected(nSlots), fName(name), fNSlots(nSlots) { From 67ea09acc33b3fd6bd134d0d966b05e87fc386a7 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Sun, 24 Jun 2018 19:59:25 +0200 Subject: [PATCH 302/344] [DF] Use RJittedCustomColumn when jitting custom columns In line with what it's done for jitted filters, now the jitting of custom columns creates the RCustomColumn and assigns it as the fConcreteCustomColumn of the corresponding RJittedCustomColumn that was previously booked. This avoids having the situation in which a certain custom column has been "booked" but is not yet present in the map of custom columns. It will also help with the "local custom columns" that are coming with ROOT-9465. --- tree/dataframe/inc/LinkDef.h | 1 + tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx | 5 +++-- tree/dataframe/inc/ROOT/RDFNodes.hxx | 9 +++++---- tree/dataframe/src/RDFInterfaceUtils.cxx | 6 +++++- tree/dataframe/src/RDFNodes.cxx | 10 ++++++++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/tree/dataframe/inc/LinkDef.h b/tree/dataframe/inc/LinkDef.h index d6d163f6f0956..be19222aac01e 100644 --- a/tree/dataframe/inc/LinkDef.h +++ b/tree/dataframe/inc/LinkDef.h @@ -22,6 +22,7 @@ #pragma link C++ class ROOT::Detail::RDF::RFilterBase-; #pragma link C++ class ROOT::Detail::RDF::RJittedFilter-; #pragma link C++ class ROOT::Detail::RDF::RCustomColumnBase-; +#pragma link C++ class ROOT::Detail::RDF::RJittedCustomColumn-; #pragma link C++ class ROOT::Internal::RDF::CountHelper-; #pragma link C++ class ROOT::Detail::RDF::RRangeBase-; #pragma link C++ class ROOT::Detail::RDF::RLoopManager-; diff --git a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx index 3d53450746657..2365dd0043e5d 100644 --- a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx @@ -302,7 +302,8 @@ void JitFilterHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RJ } template -void JitDefineHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RLoopManager *lm) +void JitDefineHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RLoopManager *lm, + RJittedCustomColumn &jittedCustomCol) { using NewCol_t = RCustomColumn; using ColTypes_t = typename TTraits::CallableTraits::arg_types; @@ -312,7 +313,7 @@ void JitDefineHelper(F &&f, const ColumnNames_t &cols, std::string_view name, RL if (ds) RDFInternal::DefineDataSourceColumns(cols, *lm, *ds, std::make_index_sequence(), ColTypes_t()); - lm->Book(std::make_shared(name, std::move(f), cols, lm)); + jittedCustomCol.SetCustomColumn(std::make_unique(name, std::move(f), cols, lm)); } /// Convenience function invoked by jitted code to build action nodes at runtime diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index b46000aa243d9..78a9a86aa13a8 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -470,7 +470,7 @@ public: virtual void Update(unsigned int slot, Long64_t entry) = 0; virtual void ClearValueReaders(unsigned int slot) = 0; bool IsDataSourceColumn() const { return fIsDataSourceColumn; } - void InitNode(); + virtual void InitNode(); }; /// A wrapper around a concrete RCustomColumn, which forwards all calls to it @@ -482,16 +482,17 @@ class RJittedCustomColumn : public RCustomColumnBase std::unique_ptr fConcreteCustomColumn = nullptr; public: - RJittedCustomColumn(RLoopManager *lm, std::string_view name, unsigned int nSlots, bool isDSColumn) - : RCustomColumnBase(lm, name, nSlots, isDSColumn) {} + RJittedCustomColumn(RLoopManager &lm, std::string_view name) + : RCustomColumnBase(&lm, name, lm.GetNSlots(), /*isDSColumn=*/false) {} - void SetFilter(std::unique_ptr c) { fConcreteCustomColumn = std::move(c); } + void SetCustomColumn(std::unique_ptr c) { fConcreteCustomColumn = std::move(c); } void InitSlot(TTreeReader *r, unsigned int slot) final; void *GetValuePtr(unsigned int slot) final; const std::type_info &GetTypeId() const final; void Update(unsigned int slot, Long64_t entry) final; void ClearValueReaders(unsigned int slot) final; + void InitNode() final; }; // clang-format off diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx index 5a5ee707aedfe..9964d2f5325ff 100644 --- a/tree/dataframe/src/RDFInterfaceUtils.cxx +++ b/tree/dataframe/src/RDFInterfaceUtils.cxx @@ -568,6 +568,8 @@ void BookDefineJit(std::string_view name, std::string_view expression, RLoopMana TryToJitExpression(dotlessExpr, varNames, usedColTypes, hasReturnStmt); + const auto jittedCustomColumn = std::make_shared(lm, name); + const auto definelambda = BuildLambdaString(dotlessExpr, varNames, usedColTypes, hasReturnStmt); const auto lambdaName = "eval_" + std::string(name); const auto ns = "__tdf" + std::to_string(namespaceID); @@ -591,9 +593,11 @@ void BookDefineJit(std::string_view name, std::string_view expression, RLoopMana if (!usedBranches.empty()) defineInvocation.seekp(-2, defineInvocation.cur); // remove the last ", defineInvocation << "}, \"" << name << "\", reinterpret_cast(" - << PrettyPrintAddr(&lm) << "));"; + << PrettyPrintAddr(&lm) << "), *reinterpret_cast(" + << PrettyPrintAddr(jittedCustomColumn.get()) << "));"; lm.AddCustomColumnName(name); + lm.Book(jittedCustomColumn); lm.ToJit(defineInvocation.str()); } diff --git a/tree/dataframe/src/RDFNodes.cxx b/tree/dataframe/src/RDFNodes.cxx index dc5fcd7c17d3a..3015edd82dd4d 100644 --- a/tree/dataframe/src/RDFNodes.cxx +++ b/tree/dataframe/src/RDFNodes.cxx @@ -103,13 +103,13 @@ void RJittedCustomColumn::InitSlot(TTreeReader *r, unsigned int slot) void *RJittedCustomColumn::GetValuePtr(unsigned int slot) { R__ASSERT(fConcreteCustomColumn != nullptr); - fConcreteCustomColumn->GetValuePtr(slot); + return fConcreteCustomColumn->GetValuePtr(slot); } const std::type_info &RJittedCustomColumn::GetTypeId() const { R__ASSERT(fConcreteCustomColumn != nullptr); - fConcreteCustomColumn->GetTypeId(); + return fConcreteCustomColumn->GetTypeId(); } void RJittedCustomColumn::Update(unsigned int slot, Long64_t entry) @@ -124,6 +124,12 @@ void RJittedCustomColumn::ClearValueReaders(unsigned int slot) fConcreteCustomColumn->ClearValueReaders(slot); } +void RJittedCustomColumn::InitNode() +{ + R__ASSERT(fConcreteCustomColumn != nullptr); + fConcreteCustomColumn->InitNode(); +} + RFilterBase::RFilterBase(RLoopManager *implPtr, std::string_view name, const unsigned int nSlots) : fLoopManager(implPtr), fLastResult(nSlots), fAccepted(nSlots), fRejected(nSlots), fName(name), fNSlots(nSlots) { From ca5943773fc416f43fe3ddfd573e7bd6544269bd Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 17 Apr 2018 10:30:56 +0200 Subject: [PATCH 303/344] Remove callback functionality from TBufferMerger The callback mechanism as implemented is not what is needed by CMS, as previously thought. In order to allow the final goal of avoiding oversubscription of the machines on which the TBufferMerger is used within a framework, this functionality is better removed in order to allow doing away also with the separate output thread currently needed by TBufferMerger. --- io/io/inc/ROOT/TBufferMerger.hxx | 8 -- io/io/src/TBufferMerger.cxx | 8 -- io/io/test/TBufferMerger.cxx | 168 ------------------------------- 3 files changed, 184 deletions(-) diff --git a/io/io/inc/ROOT/TBufferMerger.hxx b/io/io/inc/ROOT/TBufferMerger.hxx index a5360991c35bc..cd4f7cfbd32fc 100644 --- a/io/io/inc/ROOT/TBufferMerger.hxx +++ b/io/io/inc/ROOT/TBufferMerger.hxx @@ -72,13 +72,6 @@ public: /** Returns the number of buffers currently in the queue. */ size_t GetQueueSize() const; - /** Register a user callback function to be called after a buffer has been - * removed from the merging queue and finished being processed. This - * function can be useful to allow asynchronous launching of new tasks to - * push more data into the queue once its size satisfies user requirements. - */ - void RegisterCallback(const std::function &f); - /** Returns the current value of the auto save setting in bytes (default = 0). */ size_t GetAutoSave() const; @@ -118,7 +111,6 @@ private: std::queue fQueue; //< Queue to which data is pushed and merged std::unique_ptr fMergingThread; //< Worker thread that writes to disk std::vector> fAttachedFiles; //< Attached files - std::function fCallback; //< Callback for when data is removed from queue }; /** diff --git a/io/io/src/TBufferMerger.cxx b/io/io/src/TBufferMerger.cxx index db9f87fd8c037..b5b6e593027fb 100644 --- a/io/io/src/TBufferMerger.cxx +++ b/io/io/src/TBufferMerger.cxx @@ -66,11 +66,6 @@ size_t TBufferMerger::GetQueueSize() const return fQueue.size(); } -void TBufferMerger::RegisterCallback(const std::function &f) -{ - fCallback = f; -} - void TBufferMerger::Push(TBufferFile *buffer) { { @@ -95,9 +90,6 @@ void TBufferMerger::Merge() fBuffered = 0; fMerger.PartialMerge(); fMerger.Reset(); - - if (fCallback) - fCallback(); } void TBufferMerger::WriteOutputFile() diff --git a/io/io/test/TBufferMerger.cxx b/io/io/test/TBufferMerger.cxx index 4707fa987f7dd..ec6839fb188c0 100644 --- a/io/io/test/TBufferMerger.cxx +++ b/io/io/test/TBufferMerger.cxx @@ -219,171 +219,3 @@ TEST(TBufferMerger, CheckTreeFillResults) remove("tbuffermerger_sequential.root"); remove("tbuffermerger_parallel.root"); } - -TEST(TBufferMerger, RegisterCallbackThreads) -{ - const char *testfile = "tbuffermerger_threads.root"; - int events = 1000; - int events_per_task = 50; - int tasks = events / events_per_task; - std::atomic launched(0); - std::atomic processed(0); - - { - ROOT::EnableThreadSafety(); - TBufferMerger merger(testfile); - - /* define a task: create and push some events */ - auto task = [&]() { - auto myfile = merger.GetFile(); - auto mytree = new TTree("mytree", "mytree"); - - mytree->ResetBit(kMustCleanup); - - int n = 1; - mytree->Branch("n", &n, "n/I"); - - for (int i = 0; i < events_per_task; ++i) - mytree->Fill(); - - myfile->Write(); - - processed += events_per_task; - }; - - std::vector workers; - - /* callback: launches new tasks when called */ - merger.RegisterCallback([&]() { - int i = 0; - while (launched < tasks && ++i <= 2) { - workers.emplace_back(task); - ++launched; - } - }); - - launched = 1; - workers.emplace_back(task); - - /* wait until all tasks have been launched */ - while (launched != tasks) - ; - - /* wait until all tasks have finished running */ - for (auto &w : workers) - w.join(); - - ASSERT_EQ(processed, events); - } - - ASSERT_TRUE(FileExists(testfile)); - - /* open file and check data integrity */ - { - TFile f(testfile); - auto t = (TTree *)f.Get("mytree"); - - int n, sum = 0; - int nentries = (int)t->GetEntries(); - - EXPECT_EQ(nentries, events); - - t->SetBranchAddress("n", &n); - - for (int i = 0; i < nentries; ++i) { - t->GetEntry(i); - sum += n; - } - - EXPECT_EQ(sum, events); - } - - remove(testfile); -} - -TEST(TBufferMerger, RegisterCallbackTasks) -{ - using namespace ROOT::Experimental; - - const char *testfile = "tbuffermerger_tasks.root"; - - std::mutex m; - int events = 1000; - int events_per_task = 50; - int tasks = events / events_per_task; - volatile int launched = 0; - volatile int processed = 0; - - { -#ifdef R__USE_IMT - ROOT::EnableImplicitMT(); -#endif - TBufferMerger merger(testfile); - - /* define a task: create and push some events */ - auto task = [&]() { - auto myfile = merger.GetFile(); - auto mytree = new TTree("mytree", "mytree"); - - mytree->ResetBit(kMustCleanup); - - int n = 1; - mytree->Branch("n", &n, "n/I"); - - for (int i = 0; i < events_per_task; ++i) - mytree->Fill(); - - myfile->Write(); - - std::lock_guard lk(m); - processed += events_per_task; - }; - - TTaskGroup tg; - - /* callback: launches new tasks when called */ - merger.RegisterCallback([&]() { - int i = 0; - while (launched < tasks && ++i <= 2) { - tg.Run(task); - ++launched; - } - }); - - launched = 1; - tg.Run(task); - - /* wait until all tasks have been launched */ - while (launched != tasks) - ; - - /* wait until all tasks have finished running */ - tg.Wait(); - - ASSERT_EQ(processed, events); - } - - ASSERT_TRUE(FileExists(testfile)); - - /* open file and check data integrity */ - { - TFile f(testfile); - auto t = (TTree *)f.Get("mytree"); - - int n, sum = 0; - int nentries = (int)t->GetEntries(); - - EXPECT_EQ(nentries, events); - - t->SetBranchAddress("n", &n); - - for (int i = 0; i < nentries; ++i) { - t->GetEntry(i); - sum += n; - } - - EXPECT_EQ(sum, events); - } - - remove(testfile); -} From 331efa4c00fefc38980eaaf7b41b8e95fcd1a23b Mon Sep 17 00:00:00 2001 From: Guilherme Amadio Date: Tue, 17 Apr 2018 11:30:21 +0200 Subject: [PATCH 304/344] Restructure TBufferMerger to not need a separate output thread (v2) --- io/io/inc/ROOT/TBufferMerger.hxx | 6 +--- io/io/src/TBufferMerger.cxx | 55 ++++++++++++++------------------ 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/io/io/inc/ROOT/TBufferMerger.hxx b/io/io/inc/ROOT/TBufferMerger.hxx index cd4f7cfbd32fc..0a5d28f45e87b 100644 --- a/io/io/inc/ROOT/TBufferMerger.hxx +++ b/io/io/inc/ROOT/TBufferMerger.hxx @@ -15,12 +15,10 @@ #include "TFileMerger.h" #include "TMemFile.h" -#include #include #include #include #include -#include namespace ROOT { namespace Experimental { @@ -101,15 +99,13 @@ private: void Merge(); void Push(TBufferFile *buffer); - void WriteOutputFile(); size_t fAutoSave{0}; //< AutoSave only every fAutoSave bytes size_t fBuffered{0}; //< Number of bytes currently buffered TFileMerger fMerger{false, false}; //< TFileMerger used to merge all buffers + std::mutex fMergeMutex; //< Mutex used to lock fMerger std::mutex fQueueMutex; //< Mutex used to lock fQueue - std::condition_variable fDataAvailable; //< Condition variable used to wait for data std::queue fQueue; //< Queue to which data is pushed and merged - std::unique_ptr fMergingThread; //< Worker thread that writes to disk std::vector> fAttachedFiles; //< Attached files }; diff --git a/io/io/src/TBufferMerger.cxx b/io/io/src/TBufferMerger.cxx index b5b6e593027fb..e48ed3d098df5 100644 --- a/io/io/src/TBufferMerger.cxx +++ b/io/io/src/TBufferMerger.cxx @@ -40,7 +40,6 @@ void TBufferMerger::Init(std::unique_ptr output) Error("TBufferMerger", "cannot write to output file"); fMerger.OutputFile(std::move(output)); - fMergingThread.reset(new std::thread([&]() { this->WriteOutputFile(); })); } TBufferMerger::~TBufferMerger() @@ -48,8 +47,8 @@ TBufferMerger::~TBufferMerger() for (const auto &f : fAttachedFiles) if (!f.expired()) Fatal("TBufferMerger", " TBufferMergerFiles must be destroyed before the server"); - this->Push(nullptr); - fMergingThread->join(); + if (!fQueue.empty()) + Merge(); } std::shared_ptr TBufferMerger::GetFile() @@ -70,9 +69,12 @@ void TBufferMerger::Push(TBufferFile *buffer) { { std::lock_guard lock(fQueueMutex); + fBuffered += buffer->BufferSize(); fQueue.push(buffer); } - fDataAvailable.notify_one(); + + if (fBuffered > fAutoSave) + Merge(); } size_t TBufferMerger::GetAutoSave() const @@ -87,34 +89,25 @@ void TBufferMerger::SetAutoSave(size_t size) void TBufferMerger::Merge() { - fBuffered = 0; - fMerger.PartialMerge(); - fMerger.Reset(); -} - -void TBufferMerger::WriteOutputFile() -{ - std::unique_ptr buffer; - - while (true) { - std::unique_lock lock(fQueueMutex); - fDataAvailable.wait(lock, [this]() { return !this->fQueue.empty(); }); - - buffer.reset(fQueue.front()); - fQueue.pop(); - lock.unlock(); - - if (!buffer) - break; - - fBuffered += buffer->BufferSize(); - fMerger.AddAdoptFile(new TMemFile(fMerger.GetOutputFileName(), buffer->Buffer(), buffer->BufferSize(), "read")); - - if (fBuffered > fAutoSave) - Merge(); + if (fMergeMutex.try_lock()) { + std::queue queue; + { + std::lock_guard q(fQueueMutex); + std::swap(queue, fQueue); + fBuffered = 0; + } + + while (!queue.empty()) { + std::unique_ptr buffer{queue.front()}; + fMerger.AddAdoptFile( + new TMemFile(fMerger.GetOutputFileName(), buffer->Buffer(), buffer->BufferSize(), "READ")); + queue.pop(); + } + + fMerger.PartialMerge(); + fMerger.Reset(); + fMergeMutex.unlock(); } - - Merge(); } } // namespace Experimental From 26acbe40804161f99484338457a17e8a95088d0f Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 10:18:20 +0200 Subject: [PATCH 305/344] Add thisroot.fish for the fish shell! --- cmake/modules/RootConfiguration.cmake | 2 + config/thisroot.fish | 60 +++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 config/thisroot.fish diff --git a/cmake/modules/RootConfiguration.cmake b/cmake/modules/RootConfiguration.cmake index cfc191fb337a4..60a0d489241b0 100644 --- a/cmake/modules/RootConfiguration.cmake +++ b/cmake/modules/RootConfiguration.cmake @@ -775,6 +775,7 @@ configure_file(${CMAKE_SOURCE_DIR}/config/root-config.in ${CMAKE_BINARY_DIR}/ins configure_file(${CMAKE_SOURCE_DIR}/config/memprobe.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/memprobe @ONLY NEWLINE_STYLE UNIX) configure_file(${CMAKE_SOURCE_DIR}/config/thisroot.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/thisroot.sh @ONLY NEWLINE_STYLE UNIX) configure_file(${CMAKE_SOURCE_DIR}/config/thisroot.csh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/thisroot.csh @ONLY NEWLINE_STYLE UNIX) +configure_file(${CMAKE_SOURCE_DIR}/config/thisroot.fish ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/thisroot.fish @ONLY NEWLINE_STYLE UNIX) configure_file(${CMAKE_SOURCE_DIR}/config/setxrd.csh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/setxrd.csh COPYONLY) configure_file(${CMAKE_SOURCE_DIR}/config/setxrd.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/setxrd.sh COPYONLY) configure_file(${CMAKE_SOURCE_DIR}/config/proofserv.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/proofserv @ONLY NEWLINE_STYLE UNIX) @@ -799,6 +800,7 @@ configure_file(${CMAKE_SOURCE_DIR}/config/root-config.in ${CMAKE_RUNTIME_OUTPUT_ install(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/thisroot.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/thisroot.csh + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/thisroot.fish ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/setxrd.csh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/setxrd.sh ${thisrootbat} diff --git a/config/thisroot.fish b/config/thisroot.fish new file mode 100644 index 0000000000000..632a83b7e9730 --- /dev/null +++ b/config/thisroot.fish @@ -0,0 +1,60 @@ +# Source this script to set up the ROOT build that this script is part of. +# +# This script is for the fish shell. +# +# Author: Axel Naumann, 2018-06-25 + +function update_path -d "Remove argv[2]argv[3] from argv[1] if argv[2], and prepend argv[4]" + # Assert that we got enough arguments + if test (count $argv) -ne 4 + echo "update_path: needs 4 arguments but have " (count $argv) + return 1 + end + + set var $argv[1] + + set newpath $argv[4] + for el in $$var + if test "$argv[2]" = ""; or not test "$el" = "$argv[2]$argv[3]" + set newpath $newpath $el + end + end + + set -x $var $newpath +end + +if set -q ROOTSYS + set old_rootsys $ROOTSYS +end + +set SOURCE (status -f) + +if [ "x$SOURCE" = "x" ] + echo ERROR: must "cd where/root/is" before calling ". bin/thisroot.sh" for this version of fish! + set -e ROOTSYS + exit 1 +else + # get param to "." + set thisroot (dirname $SOURCE) + set -x ROOTSYS (cd $thisroot/.. > /dev/null;pwd) + cd $dirprev[1] +end + +if not set -q MANPATH + # Grab the default man path before setting the path to avoid duplicates + if which manpath > /dev/null ^ /dev/null + set -x MANPATH (manpath) + else + set -x MANPATH (man -w 2> /dev/null) + end +end + +update_path PATH "$old_rootsys" "/bin" @bindir@ +update_path LD_LIBRARY_PATH "$old_rootsys" "/lib" @libdir@ +update_path DYLD_LIBRARY_PATH "$old_rootsys" "/lib" @libdir@ +update_path PYTHONPATH "$old_rootsys" "/lib" @libdir@ +update_path MANPATH "$old_rootsys" "/man" @mandir@ +update_path CMAKE_PREFIX_PATH "$old_rootsys" "" $ROOTSYS +update_path JUPYTER_PATH "$old_rootsys" "/etc/notebook" ROOTSYS/etc/notebook + +functions -e update_path From 39e9cd46e0105337924d48d4094cc21a76a16f5f Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 26 Jun 2018 13:29:33 +0200 Subject: [PATCH 306/344] Mention thisroot.fish. --- README/ReleaseNotes/v616/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README/ReleaseNotes/v616/index.md b/README/ReleaseNotes/v616/index.md index 82f4de0b62c17..ab60084188f08 100644 --- a/README/ReleaseNotes/v616/index.md +++ b/README/ReleaseNotes/v616/index.md @@ -45,6 +45,10 @@ They were deprecated before, or never ported from configure, make to CMake. ## Core Libraries +### Fish support for thisroot script + +`. bin/thisroot.fish` sets up the needed ROOT environment variables for one of the ROOT team's favorite shells, the [fish shell](https://fishshell.com/). + ## I/O Libraries From 81f10a37507b14392d7de2558835c5a32b51c2eb Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 26 Jun 2018 09:43:15 +0200 Subject: [PATCH 307/344] [cling] Check file is C_User before hitting disk. Thanks, Vassil! --- .../cling/lib/Interpreter/NullDerefProtectionTransformer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp index 0305f37ac672c..dc1621b860a9a 100644 --- a/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp +++ b/interpreter/cling/lib/Interpreter/NullDerefProtectionTransformer.cpp @@ -239,6 +239,10 @@ namespace cling { return false; SourceManager& SM = m_Interp->getSema().getSourceManager(); + auto Characteristic = SM.getFileCharacteristic(Loc); + if (Characteristic != clang::SrcMgr::C_User) + return false; + auto FID = SM.getFileID(Loc); if (FID.isInvalid()) return false; From 560843829f463c06999167a271f2514a947b7985 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Tue, 26 Jun 2018 14:21:06 +0200 Subject: [PATCH 308/344] [CMake] Turn on ccache by default on 32bits builds --- cmake/modules/RootBuildOptions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/modules/RootBuildOptions.cmake b/cmake/modules/RootBuildOptions.cmake index 592d032dce757..c38cad6c5027a 100644 --- a/cmake/modules/RootBuildOptions.cmake +++ b/cmake/modules/RootBuildOptions.cmake @@ -90,7 +90,7 @@ ROOT_BUILD_OPTION(builtin_xrootd OFF "Build the XROOTD internally (downloading t ROOT_BUILD_OPTION(builtin_xxhash OFF "Build included xxHash library") ROOT_BUILD_OPTION(builtin_zlib OFF "Build included libz, or use system libz") ROOT_BUILD_OPTION(castor ON "CASTOR support, requires libshift from CASTOR >= 1.5.2") -if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") +if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SIZEOF_VOID_P EQUAL 4) ROOT_BUILD_OPTION(ccache ON "Enable ccache usage for speeding up builds") else() ROOT_BUILD_OPTION(ccache OFF "Enable ccache usage for speeding up builds") From 64ebe5798807f3e21f63751412d909963b013be4 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud Date: Tue, 26 Jun 2018 15:09:31 +0200 Subject: [PATCH 309/344] [DF] Remove obsolete part from error message --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 78a9a86aa13a8..3ebece56b194a 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -923,9 +923,8 @@ T &TColumnValue::Get(Long64_t entry) // The storage is not contiguous or we don't know yet: we cannot but copy into the tvec #ifndef NDEBUG if (!fCopyWarningPrinted) { - Warning("TColumnValue::Get", "Branch %s hangs from a non-split branch. For this reason, it cannot be " - "accessed via a RVec. A copy is being performed in order to properly read the " - "content.", + Warning("TColumnValue::Get", "Branch %s hangs from a non-split branch. A copy is being performed in order " + "to properly read the content.", readerArray.GetBranchName()); fCopyWarningPrinted = true; } From 9922208313e4c09de89fb2c553970f01939d91a1 Mon Sep 17 00:00:00 2001 From: Danilo Piparo Date: Wed, 27 Jun 2018 00:17:38 +0200 Subject: [PATCH 310/344] [DF] Do not compare type infos but rather their names in order to take into account differences arising when one of the two typeinfos come from a jitted context. --- tree/dataframe/inc/ROOT/RDFNodes.hxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tree/dataframe/inc/ROOT/RDFNodes.hxx b/tree/dataframe/inc/ROOT/RDFNodes.hxx index 3ebece56b194a..9b70ed643607b 100644 --- a/tree/dataframe/inc/ROOT/RDFNodes.hxx +++ b/tree/dataframe/inc/ROOT/RDFNodes.hxx @@ -857,7 +857,9 @@ template void TColumnValue::SetTmpColumn(unsigned int slot, ROOT::Detail::RDF::RCustomColumnBase *customColumn) { fCustomColumns.emplace(customColumn); - if (customColumn->GetTypeId() != typeid(T)) + // Here we compare names and not typeinfos since they may come from two different contexts: a compiled + // and a jitted one. + if (0 != strcmp(customColumn->GetTypeId().name(), typeid(T).name())) throw std::runtime_error( std::string("TColumnValue: type specified for column \"" + customColumn->GetName() + "\" is ") + TypeID2TypeName(typeid(T)) + " but temporary column has type " + TypeID2TypeName(customColumn->GetTypeId())); From 165d94732f0f659dc16cb479f9b132a575a881c6 Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Mon, 25 Jun 2018 21:19:29 +0200 Subject: [PATCH 311/344] [cling] Test printValue on unutterable types. --- .../cling/test/Prompt/ValuePrinter/Regression.C | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/interpreter/cling/test/Prompt/ValuePrinter/Regression.C b/interpreter/cling/test/Prompt/ValuePrinter/Regression.C index 2017c2b42b3c4..23543fc6adc8c 100644 --- a/interpreter/cling/test/Prompt/ValuePrinter/Regression.C +++ b/interpreter/cling/test/Prompt/ValuePrinter/Regression.C @@ -112,6 +112,16 @@ struct OverloadedAddrOf { OverloadedAddrOf overloadedAddrOf // CHECK: (OverloadedAddrOf &) @0x{{[0-9a-f]+}} +// Much more important than what cling prints: cling survives this! +.rawInput +auto func() { class X {} x; return x; }; +namespace WithUnnamed { namespace { struct Y {} y; } Y z; } +.rawInput +//func +func() +WithUnnamed::y +WithUnnamed::z // CHECK: (WithUnnamed:: + namespace PR180 { class base {}; From 95f3ecb351fabbe1fb5c16f9f80bca6672ee2bbf Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Tue, 26 Jun 2018 13:20:11 +0200 Subject: [PATCH 312/344] Remove more traces of ios and chirp. --- .github/CODEOWNERS | 1 - config/root-config.in | 24 +- documentation/doxygen/Doxyfile | 3 - etc/plugins/TFile/P060_TChirpFile.C | 5 - etc/system.plugins-ios | 155 - test/ios/RootBrowser/AxisFontInspector.h | 25 - test/ios/RootBrowser/AxisFontInspector.mm | 202 - test/ios/RootBrowser/AxisFontInspector.xib | 338 -- test/ios/RootBrowser/AxisInspector.h | 19 - test/ios/RootBrowser/AxisInspector.mm | 167 - test/ios/RootBrowser/AxisInspector.xib | 4646 ----------------- test/ios/RootBrowser/AxisLabelsInspector.h | 33 - test/ios/RootBrowser/AxisLabelsInspector.mm | 153 - test/ios/RootBrowser/AxisLabelsInspector.xib | 789 --- test/ios/RootBrowser/AxisTicksInspector.h | 33 - test/ios/RootBrowser/AxisTicksInspector.mm | 229 - test/ios/RootBrowser/AxisTicksInspector.xib | 1127 ---- test/ios/RootBrowser/AxisTitleInspector.h | 31 - test/ios/RootBrowser/AxisTitleInspector.mm | 205 - test/ios/RootBrowser/AxisTitleInspector.xib | 797 --- test/ios/RootBrowser/ColorCell.h | 7 - test/ios/RootBrowser/ColorCell.mm | 53 - test/ios/RootBrowser/Constants.cxx | 90 - test/ios/RootBrowser/Constants.h | 89 - test/ios/RootBrowser/Default-Landscape.png | Bin 597652 -> 0 bytes .../ios/RootBrowser/Default-LandscapeLeft.png | Bin 597652 -> 0 bytes .../RootBrowser/Default-LandscapeRight.png | Bin 597652 -> 0 bytes test/ios/RootBrowser/Default-Portrait.png | Bin 582128 -> 0 bytes .../Default-PortraitUpsideDown.png | Bin 582128 -> 0 bytes test/ios/RootBrowser/EditorPlateView.h | 13 - test/ios/RootBrowser/EditorPlateView.mm | 81 - test/ios/RootBrowser/EditorView.h | 30 - test/ios/RootBrowser/EditorView.mm | 425 -- test/ios/RootBrowser/FileContainerElement.h | 6 - test/ios/RootBrowser/FileContainerElement.mm | 8 - test/ios/RootBrowser/FileContentController.h | 32 - test/ios/RootBrowser/FileContentController.mm | 468 -- .../ios/RootBrowser/FileContentController.xib | 201 - test/ios/RootBrowser/FileShortcut.h | 24 - test/ios/RootBrowser/FileShortcut.mm | 112 - test/ios/RootBrowser/FileUtils.cxx | 368 -- test/ios/RootBrowser/FileUtils.h | 109 - test/ios/RootBrowser/FilledAreaInspector.h | 12 - test/ios/RootBrowser/FilledAreaInspector.mm | 200 - test/ios/RootBrowser/FilledAreaInspector.xib | 151 - test/ios/RootBrowser/H1BinsInspector.h | 19 - test/ios/RootBrowser/H1BinsInspector.mm | 131 - test/ios/RootBrowser/H1BinsInspector.xib | 508 -- test/ios/RootBrowser/H1ErrorsInspector.h | 13 - test/ios/RootBrowser/H1ErrorsInspector.mm | 153 - test/ios/RootBrowser/H1ErrorsInspector.xib | 216 - test/ios/RootBrowser/H1Inspector.h | 14 - test/ios/RootBrowser/H1Inspector.mm | 142 - test/ios/RootBrowser/H1Inspector.xib | 258 - .../RootBrowser/HorizontalPickerDelegate.h | 9 - test/ios/RootBrowser/HorizontalPickerView.h | 12 - test/ios/RootBrowser/HorizontalPickerView.mm | 166 - .../ios/RootBrowser/InspectorWithNavigation.h | 12 - .../RootBrowser/InspectorWithNavigation.mm | 85 - test/ios/RootBrowser/LineInspector.h | 27 - test/ios/RootBrowser/LineInspector.mm | 234 - test/ios/RootBrowser/LineInspector.xib | 350 -- test/ios/RootBrowser/LineStyleCell.h | 7 - test/ios/RootBrowser/LineStyleCell.mm | 55 - test/ios/RootBrowser/LineWidthCell.h | 8 - test/ios/RootBrowser/LineWidthCell.mm | 54 - test/ios/RootBrowser/LineWidthPicker.h | 7 - test/ios/RootBrowser/LineWidthPicker.mm | 45 - test/ios/RootBrowser/MarkerInspector.h | 20 - test/ios/RootBrowser/MarkerInspector.mm | 228 - test/ios/RootBrowser/MarkerInspector.xib | 439 -- test/ios/RootBrowser/MarkerStyleCell.h | 9 - test/ios/RootBrowser/MarkerStyleCell.mm | 40 - test/ios/RootBrowser/ObjectInspector.h | 15 - test/ios/RootBrowser/ObjectInspector.mm | 200 - .../RootBrowser/ObjectInspectorComponent.h | 22 - test/ios/RootBrowser/ObjectShortcut.h | 23 - test/ios/RootBrowser/ObjectShortcut.mm | 141 - test/ios/RootBrowser/PadImageScrollView.h | 20 - test/ios/RootBrowser/PadImageScrollView.mm | 213 - test/ios/RootBrowser/PadInspector.h | 17 - test/ios/RootBrowser/PadInspector.mm | 142 - test/ios/RootBrowser/PadInspector.xib | 256 - test/ios/RootBrowser/PadLogScaleInspector.h | 17 - test/ios/RootBrowser/PadLogScaleInspector.mm | 82 - test/ios/RootBrowser/PadLogScaleInspector.xib | 429 -- test/ios/RootBrowser/PadTicksGridInspector.h | 19 - test/ios/RootBrowser/PadTicksGridInspector.mm | 99 - .../ios/RootBrowser/PadTicksGridInspector.xib | 447 -- test/ios/RootBrowser/PadView.h | 36 - test/ios/RootBrowser/PadView.mm | 390 -- test/ios/RootBrowser/PatternCell.h | 8 - test/ios/RootBrowser/PatternCell.mm | 71 - test/ios/RootBrowser/ROOTObjectController.h | 28 - test/ios/RootBrowser/ROOTObjectController.mm | 805 --- test/ios/RootBrowser/ROOTObjectController.xib | 271 - test/ios/RootBrowser/RangeSlider.h | 38 - test/ios/RootBrowser/RangeSlider.mm | 152 - .../RootBrowser.xcodeproj/project.pbxproj | 971 ---- .../contents.xcworkspacedata | 7 - test/ios/RootBrowser/RootFileController.h | 19 - test/ios/RootBrowser/RootFileController.mm | 247 - test/ios/RootBrowser/RootFileController.xib | 398 -- test/ios/RootBrowser/ScrollViewWithPadView.h | 8 - test/ios/RootBrowser/ScrollViewWithPadView.mm | 28 - test/ios/RootBrowser/ScrollViewWithPickers.h | 11 - test/ios/RootBrowser/ScrollViewWithPickers.mm | 23 - test/ios/RootBrowser/SearchController.h | 19 - test/ios/RootBrowser/SearchController.mm | 88 - test/ios/RootBrowser/SelectionMarkers.mm | 12 - test/ios/RootBrowser/SelectionView.h | 21 - test/ios/RootBrowser/SelectionView.mm | 121 - test/ios/RootBrowser/Shortcuts.h | 19 - test/ios/RootBrowser/Shortcuts.mm | 39 - test/ios/RootBrowser/SlideView.h | 19 - test/ios/RootBrowser/SlideView.mm | 68 - test/ios/RootBrowser/SlideshowController.h | 21 - test/ios/RootBrowser/SlideshowController.mm | 192 - test/ios/RootBrowser/SlideshowController.xib | 261 - test/ios/RootBrowser/SpotView.h | 5 - test/ios/RootBrowser/SpotView.mm | 18 - test/ios/RootBrowser/ThumbnailView.h | 49 - test/ios/RootBrowser/ThumbnailView.mm | 287 - test/ios/RootBrowser/TransparentToolbar.h | 3 - test/ios/RootBrowser/TransparentToolbar.m | 10 - test/ios/RootBrowser/app_icon.png | Bin 9369 -> 0 bytes test/ios/RootBrowser/back_btn.png | Bin 4796 -> 0 bytes test/ios/RootBrowser/bar-background.png | Bin 1266 -> 0 bytes test/ios/RootBrowser/bar-highlight.png | Bin 1280 -> 0 bytes test/ios/RootBrowser/brush_tab.png | Bin 5998 -> 0 bytes test/ios/RootBrowser/dec_line_width.png | Bin 4868 -> 0 bytes test/ios/RootBrowser/demos.root | Bin 44550 -> 0 bytes test/ios/RootBrowser/directory.png | Bin 20070 -> 0 bytes test/ios/RootBrowser/editor_plate.png | Bin 7897 -> 0 bytes test/ios/RootBrowser/editor_state_arrow.png | Bin 3771 -> 0 bytes test/ios/RootBrowser/file_icon.png | Bin 27992 -> 0 bytes .../RootBrowser/file_shortcut_background.png | Bin 6027 -> 0 bytes test/ios/RootBrowser/forward_btn.png | Bin 4808 -> 0 bytes test/ios/RootBrowser/h1_errors_tab.png | Bin 5290 -> 0 bytes test/ios/RootBrowser/h1_tab.png | Bin 3959 -> 0 bytes test/ios/RootBrowser/handle-hover.png | Bin 1936 -> 0 bytes test/ios/RootBrowser/handle.png | Bin 1890 -> 0 bytes test/ios/RootBrowser/inc_line_width.png | Bin 5237 -> 0 bytes test/ios/RootBrowser/label_tab.png | Bin 5162 -> 0 bytes test/ios/RootBrowser/lg_tab.png | Bin 4582 -> 0 bytes test/ios/RootBrowser/line_cell.png | Bin 3434 -> 0 bytes test/ios/RootBrowser/line_style_tab.png | Bin 4729 -> 0 bytes test/ios/RootBrowser/line_width_bkn.png | Bin 4836 -> 0 bytes test/ios/RootBrowser/minus_btn.png | Bin 4111 -> 0 bytes test/ios/RootBrowser/picker_arrow.png | Bin 3528 -> 0 bytes test/ios/RootBrowser/picker_bkn.png | Bin 3879 -> 0 bytes test/ios/RootBrowser/picker_frame_bkn.png | Bin 5860 -> 0 bytes test/ios/RootBrowser/plus_btn.png | Bin 4501 -> 0 bytes .../root_browser/RootBrowser-Prefix.pch | 14 - .../root_browser/en.lproj/InfoPlist.strings | 2 - .../root_browser/en.lproj/MainWindow.xib | 163 - test/ios/RootBrowser/root_browser/main.m | 8 - .../root_browser/root_browser-Info.plist | 70 - .../root_browser/root_browserAppDelegate.h | 9 - .../root_browser/root_browserAppDelegate.mm | 143 - test/ios/RootBrowser/root_browser_icon.png | Bin 6687 -> 0 bytes test/ios/RootBrowser/separator.png | Bin 3577 -> 0 bytes test/ios/RootBrowser/text_cell_bkn.png | Bin 3554 -> 0 bytes test/ios/RootBrowser/ticks_tab.png | Bin 5260 -> 0 bytes test/ios/RootBrowser/title_tab.png | Bin 4460 -> 0 bytes test/ios/Tutorials/DemoBase.cxx | 15 - test/ios/Tutorials/DemoBase.h | 34 - test/ios/Tutorials/DemoHelper.cxx | 41 - test/ios/Tutorials/DemoHelper.h | 14 - test/ios/Tutorials/ExclusionGraphDemo.cxx | 80 - test/ios/Tutorials/ExclusionGraphDemo.h | 49 - test/ios/Tutorials/H2PolyDemo.cxx | 44 - test/ios/Tutorials/H2PolyDemo.h | 45 - test/ios/Tutorials/HintView.h | 7 - test/ios/Tutorials/HintView.mm | 54 - test/ios/Tutorials/HsimpleDemo.cxx | 109 - test/ios/Tutorials/HsimpleDemo.h | 47 - test/ios/Tutorials/LegoDemo.cxx | 44 - test/ios/Tutorials/LegoDemo.h | 46 - test/ios/Tutorials/PadOptionsController.h | 37 - test/ios/Tutorials/PadOptionsController.mm | 236 - test/ios/Tutorials/PadOptionsController.xib | 882 ---- test/ios/Tutorials/PadView.h | 28 - test/ios/Tutorials/PadView.mm | 235 - test/ios/Tutorials/PatternCell.h | 9 - test/ios/Tutorials/PatternCell.mm | 55 - test/ios/Tutorials/PictView.h | 9 - test/ios/Tutorials/PictView.m | 28 - .../ios/Tutorials/Pictures/DarkBackground.png | Bin 78 -> 0 bytes .../Tutorials/Pictures/Default-Landscape.png | Bin 317917 -> 0 bytes .../Pictures/Default-LandscapeLeft.png | Bin 317917 -> 0 bytes .../Pictures/Default-LandscapeRight.png | Bin 317917 -> 0 bytes .../Tutorials/Pictures/Default-Portrait.png | Bin 262127 -> 0 bytes .../Pictures/Default-PortraitUpsideDown.png | Bin 262127 -> 0 bytes .../Tutorials/Pictures/LightBackground.png | Bin 78 -> 0 bytes .../Pictures/double_tap_gesture_icon.png | Bin 19086 -> 0 bytes .../double_tap_gesture_icon_small.png | Bin 10712 -> 0 bytes .../Tutorials/Pictures/exclusion_icon_n.png | Bin 9899 -> 0 bytes test/ios/Tutorials/Pictures/h2poly_icon.png | Bin 9158 -> 0 bytes .../ios/Tutorials/Pictures/hsimple_icon_n.png | Bin 5586 -> 0 bytes test/ios/Tutorials/Pictures/lego_icon_n.png | Bin 6357 -> 0 bytes .../Tutorials/Pictures/no_gesture_icon.png | Bin 15798 -> 0 bytes .../Pictures/no_gesture_icon_small.png | Bin 9591 -> 0 bytes .../Tutorials/Pictures/pan_gesture_icon.png | Bin 15135 -> 0 bytes .../Pictures/pan_gesture_icon_small.png | Bin 9491 -> 0 bytes .../Tutorials/Pictures/pinch_gesture_icon.png | Bin 19554 -> 0 bytes .../Pictures/pinch_gesture_icon_small.png | Bin 10913 -> 0 bytes test/ios/Tutorials/Pictures/polar_icon_n.png | Bin 13551 -> 0 bytes test/ios/Tutorials/Pictures/rotate_icon.png | Bin 16331 -> 0 bytes .../Tutorials/Pictures/rotate_icon_small.png | Bin 9958 -> 0 bytes test/ios/Tutorials/Pictures/select_mode.png | Bin 5905 -> 0 bytes .../Tutorials/Pictures/single_tap_icon.png | Bin 17241 -> 0 bytes .../Pictures/single_tap_icon_small.png | Bin 10241 -> 0 bytes .../ios/Tutorials/Pictures/surface_icon_n.png | Bin 8736 -> 0 bytes .../Tutorials/Pictures/tutorials_app_icon.png | Bin 6039 -> 0 bytes .../ios/Tutorials/Pictures/zoom_mode_icon.png | Bin 6527 -> 0 bytes test/ios/Tutorials/PolarGraphDemo.cxx | 88 - test/ios/Tutorials/PolarGraphDemo.h | 51 - test/ios/Tutorials/SelectionView.h | 17 - test/ios/Tutorials/SelectionView.mm | 80 - test/ios/Tutorials/SurfaceDemo.cxx | 42 - test/ios/Tutorials/SurfaceDemo.h | 45 - .../Tutorials/Tutorials.xcodeproj/ColorCell.h | 11 - .../Tutorials/Tutorials.xcodeproj/ColorCell.m | 36 - .../Tutorials.xcodeproj/project.pbxproj | 614 --- .../contents.xcworkspacedata | 7 - .../Tutorials/DetailViewController.h | 27 - .../Tutorials/DetailViewController.mm | 740 --- test/ios/Tutorials/Tutorials/HelpView.xib | 548 -- .../Tutorials/Tutorials/RootViewController.h | 7 - .../Tutorials/Tutorials/RootViewController.mm | 167 - .../Tutorials/Tutorials/Tutorials-Info.plist | 45 - .../Tutorials/Tutorials/Tutorials-Prefix.pch | 14 - .../Tutorials/TutorialsAppDelegate.h | 15 - .../Tutorials/TutorialsAppDelegate.mm | 78 - .../Tutorials/en.lproj/DetailView.xib | 462 -- .../Tutorials/en.lproj/InfoPlist.strings | 2 - .../Tutorials/en.lproj/MainWindow.xib | 406 -- test/ios/Tutorials/Tutorials/main.m | 8 - test/ios/Tutorials/h2poly.root | Bin 29758 -> 0 bytes 240 files changed, 6 insertions(+), 27688 deletions(-) delete mode 100644 etc/plugins/TFile/P060_TChirpFile.C delete mode 100644 etc/system.plugins-ios delete mode 100644 test/ios/RootBrowser/AxisFontInspector.h delete mode 100644 test/ios/RootBrowser/AxisFontInspector.mm delete mode 100644 test/ios/RootBrowser/AxisFontInspector.xib delete mode 100644 test/ios/RootBrowser/AxisInspector.h delete mode 100644 test/ios/RootBrowser/AxisInspector.mm delete mode 100644 test/ios/RootBrowser/AxisInspector.xib delete mode 100644 test/ios/RootBrowser/AxisLabelsInspector.h delete mode 100644 test/ios/RootBrowser/AxisLabelsInspector.mm delete mode 100644 test/ios/RootBrowser/AxisLabelsInspector.xib delete mode 100644 test/ios/RootBrowser/AxisTicksInspector.h delete mode 100644 test/ios/RootBrowser/AxisTicksInspector.mm delete mode 100644 test/ios/RootBrowser/AxisTicksInspector.xib delete mode 100644 test/ios/RootBrowser/AxisTitleInspector.h delete mode 100644 test/ios/RootBrowser/AxisTitleInspector.mm delete mode 100644 test/ios/RootBrowser/AxisTitleInspector.xib delete mode 100644 test/ios/RootBrowser/ColorCell.h delete mode 100644 test/ios/RootBrowser/ColorCell.mm delete mode 100644 test/ios/RootBrowser/Constants.cxx delete mode 100644 test/ios/RootBrowser/Constants.h delete mode 100644 test/ios/RootBrowser/Default-Landscape.png delete mode 100644 test/ios/RootBrowser/Default-LandscapeLeft.png delete mode 100644 test/ios/RootBrowser/Default-LandscapeRight.png delete mode 100644 test/ios/RootBrowser/Default-Portrait.png delete mode 100644 test/ios/RootBrowser/Default-PortraitUpsideDown.png delete mode 100644 test/ios/RootBrowser/EditorPlateView.h delete mode 100644 test/ios/RootBrowser/EditorPlateView.mm delete mode 100644 test/ios/RootBrowser/EditorView.h delete mode 100644 test/ios/RootBrowser/EditorView.mm delete mode 100644 test/ios/RootBrowser/FileContainerElement.h delete mode 100644 test/ios/RootBrowser/FileContainerElement.mm delete mode 100644 test/ios/RootBrowser/FileContentController.h delete mode 100644 test/ios/RootBrowser/FileContentController.mm delete mode 100644 test/ios/RootBrowser/FileContentController.xib delete mode 100644 test/ios/RootBrowser/FileShortcut.h delete mode 100644 test/ios/RootBrowser/FileShortcut.mm delete mode 100644 test/ios/RootBrowser/FileUtils.cxx delete mode 100644 test/ios/RootBrowser/FileUtils.h delete mode 100644 test/ios/RootBrowser/FilledAreaInspector.h delete mode 100644 test/ios/RootBrowser/FilledAreaInspector.mm delete mode 100644 test/ios/RootBrowser/FilledAreaInspector.xib delete mode 100644 test/ios/RootBrowser/H1BinsInspector.h delete mode 100644 test/ios/RootBrowser/H1BinsInspector.mm delete mode 100644 test/ios/RootBrowser/H1BinsInspector.xib delete mode 100644 test/ios/RootBrowser/H1ErrorsInspector.h delete mode 100644 test/ios/RootBrowser/H1ErrorsInspector.mm delete mode 100644 test/ios/RootBrowser/H1ErrorsInspector.xib delete mode 100644 test/ios/RootBrowser/H1Inspector.h delete mode 100644 test/ios/RootBrowser/H1Inspector.mm delete mode 100644 test/ios/RootBrowser/H1Inspector.xib delete mode 100644 test/ios/RootBrowser/HorizontalPickerDelegate.h delete mode 100644 test/ios/RootBrowser/HorizontalPickerView.h delete mode 100644 test/ios/RootBrowser/HorizontalPickerView.mm delete mode 100644 test/ios/RootBrowser/InspectorWithNavigation.h delete mode 100644 test/ios/RootBrowser/InspectorWithNavigation.mm delete mode 100644 test/ios/RootBrowser/LineInspector.h delete mode 100644 test/ios/RootBrowser/LineInspector.mm delete mode 100644 test/ios/RootBrowser/LineInspector.xib delete mode 100644 test/ios/RootBrowser/LineStyleCell.h delete mode 100644 test/ios/RootBrowser/LineStyleCell.mm delete mode 100644 test/ios/RootBrowser/LineWidthCell.h delete mode 100644 test/ios/RootBrowser/LineWidthCell.mm delete mode 100644 test/ios/RootBrowser/LineWidthPicker.h delete mode 100644 test/ios/RootBrowser/LineWidthPicker.mm delete mode 100644 test/ios/RootBrowser/MarkerInspector.h delete mode 100644 test/ios/RootBrowser/MarkerInspector.mm delete mode 100644 test/ios/RootBrowser/MarkerInspector.xib delete mode 100644 test/ios/RootBrowser/MarkerStyleCell.h delete mode 100644 test/ios/RootBrowser/MarkerStyleCell.mm delete mode 100644 test/ios/RootBrowser/ObjectInspector.h delete mode 100644 test/ios/RootBrowser/ObjectInspector.mm delete mode 100644 test/ios/RootBrowser/ObjectInspectorComponent.h delete mode 100644 test/ios/RootBrowser/ObjectShortcut.h delete mode 100644 test/ios/RootBrowser/ObjectShortcut.mm delete mode 100644 test/ios/RootBrowser/PadImageScrollView.h delete mode 100644 test/ios/RootBrowser/PadImageScrollView.mm delete mode 100644 test/ios/RootBrowser/PadInspector.h delete mode 100644 test/ios/RootBrowser/PadInspector.mm delete mode 100644 test/ios/RootBrowser/PadInspector.xib delete mode 100644 test/ios/RootBrowser/PadLogScaleInspector.h delete mode 100644 test/ios/RootBrowser/PadLogScaleInspector.mm delete mode 100644 test/ios/RootBrowser/PadLogScaleInspector.xib delete mode 100644 test/ios/RootBrowser/PadTicksGridInspector.h delete mode 100644 test/ios/RootBrowser/PadTicksGridInspector.mm delete mode 100644 test/ios/RootBrowser/PadTicksGridInspector.xib delete mode 100644 test/ios/RootBrowser/PadView.h delete mode 100644 test/ios/RootBrowser/PadView.mm delete mode 100644 test/ios/RootBrowser/PatternCell.h delete mode 100644 test/ios/RootBrowser/PatternCell.mm delete mode 100644 test/ios/RootBrowser/ROOTObjectController.h delete mode 100644 test/ios/RootBrowser/ROOTObjectController.mm delete mode 100644 test/ios/RootBrowser/ROOTObjectController.xib delete mode 100644 test/ios/RootBrowser/RangeSlider.h delete mode 100644 test/ios/RootBrowser/RangeSlider.mm delete mode 100644 test/ios/RootBrowser/RootBrowser.xcodeproj/project.pbxproj delete mode 100644 test/ios/RootBrowser/RootBrowser.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 test/ios/RootBrowser/RootFileController.h delete mode 100644 test/ios/RootBrowser/RootFileController.mm delete mode 100644 test/ios/RootBrowser/RootFileController.xib delete mode 100644 test/ios/RootBrowser/ScrollViewWithPadView.h delete mode 100644 test/ios/RootBrowser/ScrollViewWithPadView.mm delete mode 100644 test/ios/RootBrowser/ScrollViewWithPickers.h delete mode 100644 test/ios/RootBrowser/ScrollViewWithPickers.mm delete mode 100644 test/ios/RootBrowser/SearchController.h delete mode 100644 test/ios/RootBrowser/SearchController.mm delete mode 100644 test/ios/RootBrowser/SelectionMarkers.mm delete mode 100644 test/ios/RootBrowser/SelectionView.h delete mode 100644 test/ios/RootBrowser/SelectionView.mm delete mode 100644 test/ios/RootBrowser/Shortcuts.h delete mode 100644 test/ios/RootBrowser/Shortcuts.mm delete mode 100644 test/ios/RootBrowser/SlideView.h delete mode 100644 test/ios/RootBrowser/SlideView.mm delete mode 100644 test/ios/RootBrowser/SlideshowController.h delete mode 100644 test/ios/RootBrowser/SlideshowController.mm delete mode 100644 test/ios/RootBrowser/SlideshowController.xib delete mode 100644 test/ios/RootBrowser/SpotView.h delete mode 100644 test/ios/RootBrowser/SpotView.mm delete mode 100644 test/ios/RootBrowser/ThumbnailView.h delete mode 100644 test/ios/RootBrowser/ThumbnailView.mm delete mode 100644 test/ios/RootBrowser/TransparentToolbar.h delete mode 100644 test/ios/RootBrowser/TransparentToolbar.m delete mode 100644 test/ios/RootBrowser/app_icon.png delete mode 100644 test/ios/RootBrowser/back_btn.png delete mode 100644 test/ios/RootBrowser/bar-background.png delete mode 100644 test/ios/RootBrowser/bar-highlight.png delete mode 100644 test/ios/RootBrowser/brush_tab.png delete mode 100644 test/ios/RootBrowser/dec_line_width.png delete mode 100644 test/ios/RootBrowser/demos.root delete mode 100644 test/ios/RootBrowser/directory.png delete mode 100644 test/ios/RootBrowser/editor_plate.png delete mode 100644 test/ios/RootBrowser/editor_state_arrow.png delete mode 100644 test/ios/RootBrowser/file_icon.png delete mode 100644 test/ios/RootBrowser/file_shortcut_background.png delete mode 100644 test/ios/RootBrowser/forward_btn.png delete mode 100644 test/ios/RootBrowser/h1_errors_tab.png delete mode 100644 test/ios/RootBrowser/h1_tab.png delete mode 100644 test/ios/RootBrowser/handle-hover.png delete mode 100644 test/ios/RootBrowser/handle.png delete mode 100644 test/ios/RootBrowser/inc_line_width.png delete mode 100644 test/ios/RootBrowser/label_tab.png delete mode 100644 test/ios/RootBrowser/lg_tab.png delete mode 100644 test/ios/RootBrowser/line_cell.png delete mode 100644 test/ios/RootBrowser/line_style_tab.png delete mode 100644 test/ios/RootBrowser/line_width_bkn.png delete mode 100644 test/ios/RootBrowser/minus_btn.png delete mode 100644 test/ios/RootBrowser/picker_arrow.png delete mode 100644 test/ios/RootBrowser/picker_bkn.png delete mode 100644 test/ios/RootBrowser/picker_frame_bkn.png delete mode 100644 test/ios/RootBrowser/plus_btn.png delete mode 100644 test/ios/RootBrowser/root_browser/RootBrowser-Prefix.pch delete mode 100644 test/ios/RootBrowser/root_browser/en.lproj/InfoPlist.strings delete mode 100644 test/ios/RootBrowser/root_browser/en.lproj/MainWindow.xib delete mode 100644 test/ios/RootBrowser/root_browser/main.m delete mode 100644 test/ios/RootBrowser/root_browser/root_browser-Info.plist delete mode 100644 test/ios/RootBrowser/root_browser/root_browserAppDelegate.h delete mode 100644 test/ios/RootBrowser/root_browser/root_browserAppDelegate.mm delete mode 100644 test/ios/RootBrowser/root_browser_icon.png delete mode 100644 test/ios/RootBrowser/separator.png delete mode 100644 test/ios/RootBrowser/text_cell_bkn.png delete mode 100644 test/ios/RootBrowser/ticks_tab.png delete mode 100644 test/ios/RootBrowser/title_tab.png delete mode 100644 test/ios/Tutorials/DemoBase.cxx delete mode 100644 test/ios/Tutorials/DemoBase.h delete mode 100644 test/ios/Tutorials/DemoHelper.cxx delete mode 100644 test/ios/Tutorials/DemoHelper.h delete mode 100644 test/ios/Tutorials/ExclusionGraphDemo.cxx delete mode 100644 test/ios/Tutorials/ExclusionGraphDemo.h delete mode 100644 test/ios/Tutorials/H2PolyDemo.cxx delete mode 100644 test/ios/Tutorials/H2PolyDemo.h delete mode 100644 test/ios/Tutorials/HintView.h delete mode 100644 test/ios/Tutorials/HintView.mm delete mode 100644 test/ios/Tutorials/HsimpleDemo.cxx delete mode 100644 test/ios/Tutorials/HsimpleDemo.h delete mode 100644 test/ios/Tutorials/LegoDemo.cxx delete mode 100644 test/ios/Tutorials/LegoDemo.h delete mode 100644 test/ios/Tutorials/PadOptionsController.h delete mode 100644 test/ios/Tutorials/PadOptionsController.mm delete mode 100644 test/ios/Tutorials/PadOptionsController.xib delete mode 100644 test/ios/Tutorials/PadView.h delete mode 100644 test/ios/Tutorials/PadView.mm delete mode 100644 test/ios/Tutorials/PatternCell.h delete mode 100644 test/ios/Tutorials/PatternCell.mm delete mode 100644 test/ios/Tutorials/PictView.h delete mode 100644 test/ios/Tutorials/PictView.m delete mode 100644 test/ios/Tutorials/Pictures/DarkBackground.png delete mode 100644 test/ios/Tutorials/Pictures/Default-Landscape.png delete mode 100644 test/ios/Tutorials/Pictures/Default-LandscapeLeft.png delete mode 100644 test/ios/Tutorials/Pictures/Default-LandscapeRight.png delete mode 100644 test/ios/Tutorials/Pictures/Default-Portrait.png delete mode 100644 test/ios/Tutorials/Pictures/Default-PortraitUpsideDown.png delete mode 100644 test/ios/Tutorials/Pictures/LightBackground.png delete mode 100644 test/ios/Tutorials/Pictures/double_tap_gesture_icon.png delete mode 100644 test/ios/Tutorials/Pictures/double_tap_gesture_icon_small.png delete mode 100644 test/ios/Tutorials/Pictures/exclusion_icon_n.png delete mode 100644 test/ios/Tutorials/Pictures/h2poly_icon.png delete mode 100644 test/ios/Tutorials/Pictures/hsimple_icon_n.png delete mode 100644 test/ios/Tutorials/Pictures/lego_icon_n.png delete mode 100644 test/ios/Tutorials/Pictures/no_gesture_icon.png delete mode 100644 test/ios/Tutorials/Pictures/no_gesture_icon_small.png delete mode 100644 test/ios/Tutorials/Pictures/pan_gesture_icon.png delete mode 100644 test/ios/Tutorials/Pictures/pan_gesture_icon_small.png delete mode 100644 test/ios/Tutorials/Pictures/pinch_gesture_icon.png delete mode 100644 test/ios/Tutorials/Pictures/pinch_gesture_icon_small.png delete mode 100644 test/ios/Tutorials/Pictures/polar_icon_n.png delete mode 100644 test/ios/Tutorials/Pictures/rotate_icon.png delete mode 100644 test/ios/Tutorials/Pictures/rotate_icon_small.png delete mode 100644 test/ios/Tutorials/Pictures/select_mode.png delete mode 100644 test/ios/Tutorials/Pictures/single_tap_icon.png delete mode 100644 test/ios/Tutorials/Pictures/single_tap_icon_small.png delete mode 100644 test/ios/Tutorials/Pictures/surface_icon_n.png delete mode 100644 test/ios/Tutorials/Pictures/tutorials_app_icon.png delete mode 100644 test/ios/Tutorials/Pictures/zoom_mode_icon.png delete mode 100644 test/ios/Tutorials/PolarGraphDemo.cxx delete mode 100644 test/ios/Tutorials/PolarGraphDemo.h delete mode 100644 test/ios/Tutorials/SelectionView.h delete mode 100644 test/ios/Tutorials/SelectionView.mm delete mode 100644 test/ios/Tutorials/SurfaceDemo.cxx delete mode 100644 test/ios/Tutorials/SurfaceDemo.h delete mode 100644 test/ios/Tutorials/Tutorials.xcodeproj/ColorCell.h delete mode 100644 test/ios/Tutorials/Tutorials.xcodeproj/ColorCell.m delete mode 100644 test/ios/Tutorials/Tutorials.xcodeproj/project.pbxproj delete mode 100644 test/ios/Tutorials/Tutorials.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 test/ios/Tutorials/Tutorials/DetailViewController.h delete mode 100644 test/ios/Tutorials/Tutorials/DetailViewController.mm delete mode 100644 test/ios/Tutorials/Tutorials/HelpView.xib delete mode 100644 test/ios/Tutorials/Tutorials/RootViewController.h delete mode 100644 test/ios/Tutorials/Tutorials/RootViewController.mm delete mode 100644 test/ios/Tutorials/Tutorials/Tutorials-Info.plist delete mode 100644 test/ios/Tutorials/Tutorials/Tutorials-Prefix.pch delete mode 100644 test/ios/Tutorials/Tutorials/TutorialsAppDelegate.h delete mode 100644 test/ios/Tutorials/Tutorials/TutorialsAppDelegate.mm delete mode 100644 test/ios/Tutorials/Tutorials/en.lproj/DetailView.xib delete mode 100644 test/ios/Tutorials/Tutorials/en.lproj/InfoPlist.strings delete mode 100644 test/ios/Tutorials/Tutorials/en.lproj/MainWindow.xib delete mode 100644 test/ios/Tutorials/Tutorials/main.m delete mode 100644 test/ios/Tutorials/h2poly.root diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7093effc8fe0a..b5a9f5aecc145 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -49,7 +49,6 @@ /core/multiproc/ @gganis /graf2d/qt/ @bellenot /graf2d/cocoa/ @TimurP -/graf2d/ios/ @TimurP /graf3d/eve/ @osschar /net/http/ @linev /tree/treeplayer/**/TDataFrame.* @dpiparo @bluehood diff --git a/config/root-config.in b/config/root-config.in index e7b9d0fb24b6c..cd530c8a8db58 100755 --- a/config/root-config.in +++ b/config/root-config.in @@ -69,19 +69,12 @@ fi ### ROOT libraries ### -if test "$platform" = "ios"; then - newlib= - rootglibs= - rootevelibs= - rootlibs="-lRoota" -else - newlib="-lNew" - rootglibs="-lGui" - rootevelibs="-lEve -lEG -lGeom -lGed -lRGL" - rootlibs="-lCore -lImt -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lROOTDataFrame -lROOTVecOps -lTree -lTreePlayer\ - -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread\ - -lMultiProc" -fi +newlib="-lNew" +rootglibs="-lGui" +rootevelibs="-lEve -lEG -lGeom -lGed -lRGL" +rootlibs="-lCore -lImt -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lROOTDataFrame -lROOTVecOps -lTree -lTreePlayer\ + -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread\ + -lMultiProc" if test "$platform" = "win32"; then rootulibs="-include:_G__cpp_setupG__Net \ @@ -321,11 +314,6 @@ macosx64) auxldflags="-m64" auxlibs="-lm -ldl" ;; -ios*) - auxcflags="${cxxversionflag} -m32" - auxldflags="-m32" - auxlibs="-lm -ldl" - ;; hiux) # Hitachi HIUX auxcflags= diff --git a/documentation/doxygen/Doxyfile b/documentation/doxygen/Doxyfile index f6a3898b5361a..4f03c07807ac6 100644 --- a/documentation/doxygen/Doxyfile +++ b/documentation/doxygen/Doxyfile @@ -835,7 +835,6 @@ INPUT = . \ ../../hist/ \ ../../html/ \ ../../io/castor/ \ - ../../io/chirp/ \ ../../io/dcache/ \ ../../io/gfal/ \ ../../io/hdfs/ \ @@ -852,7 +851,6 @@ INPUT = . \ ../../net/auth/ \ ../../net/bonjour/ \ ../../net/davix/ \ - ../../net/glite/ \ ../../net/http/ \ ../../net/krb5auth/ \ ../../net/ldap/ \ @@ -872,7 +870,6 @@ INPUT = . \ # ../../core/lzma/ # ../../core/newdelete/ # ../../core/textinput/ -# ../../graf2d/ios/ # ../../graf2d/qt/ \ # ../../graf2d/mathtext/ # ../../graf3d/ftgl/ diff --git a/etc/plugins/TFile/P060_TChirpFile.C b/etc/plugins/TFile/P060_TChirpFile.C deleted file mode 100644 index 8c46fba11d938..0000000000000 --- a/etc/plugins/TFile/P060_TChirpFile.C +++ /dev/null @@ -1,5 +0,0 @@ -void P060_TChirpFile() -{ - gPluginMgr->AddHandler("TFile", "^chirp:", "TChirpFile", - "Chirp", "TChirpFile(const char*,Option_t*,const char*,Int_t)"); -} diff --git a/etc/system.plugins-ios b/etc/system.plugins-ios deleted file mode 100644 index b088e541ee88b..0000000000000 --- a/etc/system.plugins-ios +++ /dev/null @@ -1,155 +0,0 @@ -# This file has been generated using: -# make plugins-ios -# On Thu May 5 17:23:11 CEST 2011 -# DON'T MAKE CHANGES AS THEY WILL GET LOST NEXT TIME THE FILE IS GENERATED -Plugin.ROOT@@Math@@DistSampler: Unuran TUnuranSampler Unuran "TUnuranSampler( )" -+Plugin.ROOT@@Math@@DistSampler: Foam TFoamSampler Foam "TFoamSampler( )" -Plugin.ROOT@@Math@@IRootFinderMethod: Brent ROOT::Math::Roots::Brent MathMore "Brent()" -+Plugin.ROOT@@Math@@IRootFinderMethod: Bisection ROOT::Math::Roots::Bisection MathMore "Bisection()" -+Plugin.ROOT@@Math@@IRootFinderMethod: FalsePos ROOT::Math::Roots::FalsePos MathMore "FalsePos()" -+Plugin.ROOT@@Math@@IRootFinderMethod: Newton ROOT::Math::Roots::Newton MathMore "Newton()" -+Plugin.ROOT@@Math@@IRootFinderMethod: Secant ROOT::Math::Roots::Secant MathMore "Secant()" -+Plugin.ROOT@@Math@@IRootFinderMethod: Steffenson ROOT::Math::Roots::Steffenson MathMore "Steffenson()" -Plugin.ROOT@@Math@@Minimizer: Minuit2 ROOT::Minuit2::Minuit2Minimizer Minuit2 "Minuit2Minimizer(const char *)" -+Plugin.ROOT@@Math@@Minimizer: Minuit TMinuitMinimizer Minuit "TMinuitMinimizer(const char *)" -+Plugin.ROOT@@Math@@Minimizer: GSLMultiMin ROOT::Math::GSLMinimizer MathMore "GSLMinimizer(const char *)" -+Plugin.ROOT@@Math@@Minimizer: GSLMultiFit ROOT::Math::GSLNLSMinimizer MathMore "GSLNLSMinimizer(int)" -+Plugin.ROOT@@Math@@Minimizer: GSLSimAn ROOT::Math::GSLSimAnMinimizer MathMore "GSLSimAnMinimizer(int)" -+Plugin.ROOT@@Math@@Minimizer: Linear TLinearMinimizer Minuit "TLinearMinimizer(const char *)" -+Plugin.ROOT@@Math@@Minimizer: Fumili TFumiliMinimizer Fumili "TFumiliMinimizer(int)" -+Plugin.ROOT@@Math@@Minimizer: Genetic ROOT::Math::GeneticMinimizer Genetic "GeneticMinimizer(int)" -Plugin.ROOT@@Math@@VirtualIntegrator: GSLIntegrator ROOT::Math::GSLIntegrator MathMore "GSLIntegrator(const char *, int, double, double, unsigned int)" -+Plugin.ROOT@@Math@@VirtualIntegrator: GSLMCIntegrator ROOT::Math::GSLMCIntegrator MathMore "GSLMCIntegrator(const char *, double, double, unsigned int)" -Plugin.TAFS: * TAFS AFSAuth "TAFS(const char*,const char*,Int_t)" -Plugin.TApplication: ^remote TApplicationRemote Net "TApplicationRemote(const char *,Int_t,const char *)" -+Plugin.TApplication: ^server TApplicationServer Net "TApplicationServer(Int_t *,char **,FILE *,const char*)" -Plugin.TArchiveFile: .+[.]zip$ TZIPFile Core "TZIPFile(const char*,const char*,TFile*)" -Plugin.TBrowserImp: TRootBrowser TRootBrowser Gui "NewBrowser(TBrowser *, const char *, UInt_t, UInt_t)" -+Plugin.TBrowserImp: TRootBrowserLite TRootBrowserLite Gui "NewBrowser(TBrowser *, const char *, UInt_t, UInt_t)" -Plugin.TChain: ^proof TProofChain Proof "TProofChain(TChain *, Bool_t)" -Plugin.TDataProgressDialog: * TDataProgressDialog PeacGui "TDataProgressDialog(TProof*,const char*,Int_t,Long64_t)" -Plugin.TDataSetManager: ^file TDataSetManagerFile Proof "TDataSetManagerFile(const char *,const char *,const char *)" -Plugin.TFile: ^http: TWebFile Net "TWebFile(const char*,Option_t*)" -+Plugin.TFile: ^rfio: TRFIOFile RFIO "TRFIOFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^castor: TCastorFile RCastor "TCastorFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^dcache: TDCacheFile DCache "TDCacheFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^dcap: TDCacheFile DCache "TDCacheFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^gsidcap: TDCacheFile DCache "TDCacheFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^gfal: TGFALFile GFAL "TGFALFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^chirp: TChirpFile Chirp "TChirpFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^alien: TAlienFile RAliEn "Open(const char*,Option_t*,const char*,Int_t,Bool_t)" -+Plugin.TFile: .+[.]xml$ TXMLFile XMLIO "TXMLFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^mysql: TSQLFile SQL "TSQLFile(const char*,Option_t*,const char*,const char*)" -+Plugin.TFile: ^oracle: TSQLFile SQL "TSQLFile(const char*,Option_t*,const char*,const char*)" -+Plugin.TFile: ^root: TXNetFile Netx "TXNetFile(const char*,Option_t*,const char*,Int_t,Int_t,Bool_t)" -+Plugin.TFile: ^hdfs: THDFSFile HDFS "THDFSFile(const char*,Option_t*,const char*,Int_t)" -+Plugin.TFile: ^rootd: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^rootup: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^roots: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^rootk: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^rootg: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^rooth: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -+Plugin.TFile: ^rootug: TNetFile Net "TNetFile(const char*,Option_t*,const char*,Int_t,Int_t)" -Plugin.TFileDrawMap: * TFileDrawMap TreePlayer "TFileDrawMap(const TFile*, const char*, const char*)" -Plugin.TFileStager: ^root: TXNetFileStager Netx "TXNetFileStager(const char *)" -+Plugin.TFileStager: ^rootd: TNetFileStager Net "TNetFileStager(const char *)" -+Plugin.TFileStager: ^rootup: TNetFileStager Net "TNetFileStager(const char *)" -+Plugin.TFileStager: ^roots: TNetFileStager Net "TNetFileStager(const char *)" -+Plugin.TFileStager: ^rootk: TNetFileStager Net "TNetFileStager(const char *)" -+Plugin.TFileStager: ^rootg: TNetFileStager Net "TNetFileStager(const char *)" -+Plugin.TFileStager: ^rooth: TNetFileStager Net "TNetFileStager(const char *)" -+Plugin.TFileStager: ^rootug: TNetFileStager Net "TNetFileStager(const char *)" -Plugin.TFitEditor: * TFitEditor FitPanel "GetInstance(TVirtualPad*, TObject*)" -Plugin.TGeoManagerEditor: * TGeoManagerEditor GeomBuilder "LoadLib()" -Plugin.TGLHistPainter: * TGLHistPainter RGL "TGLHistPainter(TH1*)" -Plugin.TGLManager: x11 TX11GLManager RGL "TX11GLManager()" -+Plugin.TGLManager: win32 TGWin32GLManager RGL "TGWin32GLManager()" -Plugin.TGPasswdDialog: * TGPasswdDialog Gui "TGPasswdDialog(const char*,char*,Int_t,UInt_t,UInt_t)" -Plugin.TGrid: ^glite TGLite RgLite "TGLite(const char*,const char*,const char*,const char*)" -Plugin.TGuiBuilder: * TRootGuiBuilder GuiBld "TRootGuiBuilder()" -Plugin.TGuiFactory: root TRootGuiFactory Gui "TRootGuiFactory()" -+Plugin.TGuiFactory: qt TQtRootGuiFactory QtRoot "TQtRootGuiFactory()" -Plugin.TImage: * TASImage ASImage "TASImage()" -Plugin.TImagePlugin: ps TASPluginGS ASPluginGS "TASPluginGS(const char*)" -+Plugin.TImagePlugin: eps TASPluginGS ASPluginGS "TASPluginGS(const char*)" -+Plugin.TImagePlugin: pdf TASPluginGS ASPluginGS "TASPluginGS(const char*)" -Plugin.TMinuitGraph: * TGraph Graf "TGraph(Int_t,const Double_t*,const Double_t*)" -Plugin.TPaletteEditor: * TASPaletteEditor ASImageGui "TASPaletteEditor(TAttImage*,UInt_t,UInt_t)" -Plugin.TProof: ^condor: TProofCondor Proof "TProofCondor(const char*,const char*,const char*,Int_t,const char*)" -+Plugin.TProof: ^sm: TProofSuperMaster Proof "TProofSuperMaster(const char*,const char*,const char*,Int_t,const char*)" -+Plugin.TProof: ^peac: TProofPEAC Peac "TProofPEAC(const char*,const char*,const char*,Int_t,const char*)" -+Plugin.TProof: * TProof Proof "TProof(const char*,const char*,const char*,Int_t,const char *)" -Plugin.TProofMgr: ^xpd TXProofMgr Proofx "TXProofMgr(const char *,Int_t,const char *)" -Plugin.TProofProgressDialog: * TProofProgressDialog SessionViewer "TProofProgressDialog(TProof*,const char*,Int_t,Long64_t,Long64_t)" -Plugin.TProofProgressLog: * TProofProgressLog SessionViewer "TProofProgressLog(const char*,Int_t,Long64_t,Long64_t)" -Plugin.TProofServ: ^xpd TXProofServ Proofx "TXProofServ(Int_t *,char **)" -Plugin.TSessionViewer: * TSessionViewer TreeViewer "TSessionViewer()" -Plugin.TSlave: ^xpd TXSlave Proofx "TXSlave(const char *,const char *,Int_t,const char *, TProof *,Int_t,const char *,const char *)" -Plugin.TSQLServer: ^mysql: TMySQLServer RMySQL "TMySQLServer(const char*,const char*,const char*)" -+Plugin.TSQLServer: ^pgsql: TPgSQLServer PgSQL "TPgSQLServer(const char*,const char*,const char*)" -+Plugin.TSQLServer: ^sapdb: TSapDBServer SapDB "TSapDBServer(const char*,const char*,const char*)" -+Plugin.TSQLServer: ^oracle: TOracleServer Oracle "TOracleServer(const char*,const char*,const char*)" -+Plugin.TSQLServer: ^odbc: TODBCServer RODBC "TODBCServer(const char*,const char*,const char*)" -+Plugin.TSQLServer: ^odbcn: TODBCServer RODBC "TODBCServer(const char*,const char*,const char*)" -+Plugin.TSQLServer: ^odbcd: TODBCServer RODBC "TODBCServer(const char*,const char*,const char*)" -Plugin.TSystem: ^rfio: TRFIOSystem RFIO "TRFIOSystem()" -+Plugin.TSystem: ^castor: TRFIOSystem RFIO "TRFIOSystem()" -+Plugin.TSystem: ^dcache: TDCacheSystem DCache "TDCacheSystem()" -+Plugin.TSystem: ^dcap: TDCacheSystem DCache "TDCacheSystem()" -+Plugin.TSystem: ^gsidcap: TDCacheSystem DCache "TDCacheSystem()" -+Plugin.TSystem: ^alien: TAlienSystem RAliEn "TAlienSystem()" -+Plugin.TSystem: ^root: TXNetSystem Netx "TXNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^http: TWebSystem Net "TWebSystem()" -+Plugin.TSystem: ^hdfs: THDFSSystem HDFS "THDFSSystem()" -+Plugin.TSystem: ^rootd: TNetSystem Net "TNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^rootup: TNetSystem Net "TNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^roots: TNetSystem Net "TNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^rootk: TNetSystem Net "TNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^rootg: TNetSystem Net "TNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^rooth: TNetSystem Net "TNetSystem(const char *,Bool_t)" -+Plugin.TSystem: ^rootug: TNetSystem Net "TNetSystem(const char *,Bool_t)" -Plugin.TView: * TView3D Graf3d "TView3D(Int_t, const Double_t*, const Double_t*)" -Plugin.TViewerX3D: x11 TViewerX3D X3d "TViewerX3D(TVirtualPad*,Option_t*,const char*,UInt_t,UInt_t)" -+Plugin.TViewerX3D: qt TQtViewerX3D QtX3d "TQtViewerX3D(TVirtualPad*,Option_t*,const char*,UInt_t,UInt_t)" -Plugin.TVirtualAuth: Root TRootAuth RootAuth "TRootAuth()" -Plugin.TVirtualDragManager: * TGuiBldDragManager GuiBld "TGuiBldDragManager()" -Plugin.TVirtualFFT: fftwc2c TFFTComplex FFTW "TFFTComplex(Int_t, Int_t *,Bool_t)" -+Plugin.TVirtualFFT: fftwc2r TFFTComplexReal FFTW "TFFTComplexReal(Int_t,Int_t *, Bool_t)" -+Plugin.TVirtualFFT: fftwr2c TFFTRealComplex FFTW "TFFTRealComplex(Int_t,Int_t *, Bool_t)" -+Plugin.TVirtualFFT: fftwr2r TFFTReal FFTW "TFFTReal(Int_t, Int_t *,Bool_t)" -Plugin.TVirtualFitter: Minuit TFitter Minuit "TFitter(Int_t)" -+Plugin.TVirtualFitter: Fumili TFumili Fumili "TFumili(Int_t)" -+Plugin.TVirtualFitter: Minuit2 TFitterMinuit Minuit2 "TFitterMinuit(Int_t)" -+Plugin.TVirtualFitter: Fumili2 TFitterFumili Minuit2 "TFitterFumili(Int_t)" -Plugin.TVirtualGeoPainter: * TGeoPainter GeomPainter "TGeoPainter(TGeoManager*)" -Plugin.TVirtualGeoConverter: * TGeoVGConverter ConverterVG "TGeoVGConverter(TGeoManager*)" -Plugin.TVirtualGLImp: x11 TX11GL RGL "TX11GL()" -+Plugin.TVirtualGLImp: win32 TGWin32GL RGL "TGWin32GL()" -Plugin.TVirtualGraphPainter: * TGraphPainter GraphPainter "TGraphPainter()" -Plugin.TVirtualHistPainter: * THistPainter HistPainter "THistPainter()" -Plugin.TVirtualMonitoringWriter: MonaLisa TMonaLisaWriter MonaLisa "TMonaLisaWriter(const char *,const char *,const char *,const char *,const char *)" -+Plugin.TVirtualMonitoringWriter: SQL TSQLMonitoringWriter Net "TSQLMonitoringWriter(const char *,const char *,const char *,const char *)" -Plugin.TVirtualPad: * TPad Gpad "TPad()" -Plugin.TVirtualPadEditor: Ged TGedEditor Ged "TGedEditor(TCanvas*)" -Plugin.TVirtualPadPainter: gl TGLPadPainter RGL "TGLPadPainter()" -Plugin.TVirtualProofPlayer: base TProofPlayer ProofPlayer "TProofPlayer(TProof*)" -+Plugin.TVirtualProofPlayer: remote TProofPlayerRemote ProofPlayer "TProofPlayerRemote(TProof*)" -+Plugin.TVirtualProofPlayer: local TProofPlayerLocal ProofPlayer "TProofPlayerLocal(TProof*)" -+Plugin.TVirtualProofPlayer: slave TProofPlayerSlave ProofPlayer "TProofPlayerSlave(TSocket*)" -+Plugin.TVirtualProofPlayer: sm TProofPlayerSuperMaster ProofPlayer "TProofPlayerSuperMaster(TProof*)" -+Plugin.TVirtualProofPlayer: lite TProofPlayerLite ProofPlayer "TProofPlayerLite(TProof*)" -Plugin.TVirtualPS: ps TPostScript Postscript "TPostScript()" -+Plugin.TVirtualPS: svg TSVG Postscript "TSVG()" -+Plugin.TVirtualPS: pdf TPDF Postscript "TPDF()" -+Plugin.TVirtualPS: image TImageDump Postscript "TImageDump()" -Plugin.TVirtualStreamerInfo: * TStreamerInfo RIO "TStreamerInfo()" -Plugin.TVirtualTreePlayer: * TTreePlayer TreePlayer "TTreePlayer()" -Plugin.TVirtualTreeViewer: * TTreeViewer TreeViewer "TTreeViewer(const TTree*)" -Plugin.TVirtualViewer3D: x3d TViewerX3D X3d "TViewerX3D(TVirtualPad*)" -+Plugin.TVirtualViewer3D: ogl TGLSAViewer RGL "TGLSAViewer(TVirtualPad*)" -+Plugin.TVirtualViewer3D: gl TGLViewer RGL "TGLViewer(TVirtualPad*)" -Plugin.TVirtualX: x11 TGX11 GX11 "TGX11(const char*,const char*)" -+Plugin.TVirtualX: x11ttf TGX11TTF GX11TTF "TGX11TTF()" -+Plugin.TVirtualX: win32 TGWin32 Win32 "TGWin32(const char*,const char*)" -+Plugin.TVirtualX: win32gdk TGWin32 Win32gdk "TGWin32(const char*,const char*)" -+Plugin.TVirtualX: qt TGQt GQt "TGQt(const char*,const char*)" diff --git a/test/ios/RootBrowser/AxisFontInspector.h b/test/ios/RootBrowser/AxisFontInspector.h deleted file mode 100644 index 0d36edc185eb5..0000000000000 --- a/test/ios/RootBrowser/AxisFontInspector.h +++ /dev/null @@ -1,25 +0,0 @@ -#import "ObjectInspectorComponent.h" - -namespace ROOT_IOSObjectInspector { - -enum AxisFontInspectorMode{ -afimTitleFont, -afimLabelFont -}; - -} - -@interface AxisFontInspector : UIViewController { -@private - __weak IBOutlet UILabel *titleLabel; - __weak IBOutlet UIPickerView *fontPicker; -} - -- (id)initWithNibName : (NSString *)nibName mode : (ROOT_IOSObjectInspector::AxisFontInspectorMode)m; - -- (void) setROOTObjectController : (ROOTObjectController *)c; -- (void) setROOTObject : (TObject *)o; - -- (IBAction) back; - -@end diff --git a/test/ios/RootBrowser/AxisFontInspector.mm b/test/ios/RootBrowser/AxisFontInspector.mm deleted file mode 100644 index 52334e98c4d87..0000000000000 --- a/test/ios/RootBrowser/AxisFontInspector.mm +++ /dev/null @@ -1,202 +0,0 @@ -#import - -#import "ROOTObjectController.h" -#import "AxisFontInspector.h" - -//C++ (ROOT) imports. -#import "TObject.h" -#import "TAxis.h" - -namespace { - -const CGFloat defaultCellW = 180.f; -const CGFloat defaultCellH = 44.f; - -NSString *fixedFonts[] = //These are the strings with font names to use with UILabel. - { - @"TimesNewRomanPS-ItalicMT", - @"TimesNewRomanPS-BoldMT", - @"TimesNewRomanPS-BoldItalicMT", - @"Helvetica", - @"Helvetica-Oblique", - @"Helvetica-Bold", - @"Helvetica-BoldOblique", - @"Courier", - @"Courier-Oblique", - @"Courier-Bold", - @"Courier-BoldOblique", - @"symbol",//No custom fonts yet. - @"TimesNewRomanPSMT" - }; - -NSString *fixedFontNames[] = //these are the strings to show in a picker view. - { - @"Times New Roman", - @"Times New Roman", - @"Times New Roman", - @"Helvetica", - @"Helvetica", - @"Helvetica", - @"Helvetica", - @"Courier", - @"Courier", - @"Courier", - @"Courier", - @"Symbol",//No custom fonts yet. - @"Times New Roman" - }; - -const unsigned nFixedFonts = sizeof fixedFonts / sizeof fixedFonts[0]; - -} - -@implementation AxisFontInspector { - ROOT_IOSObjectInspector::AxisFontInspectorMode mode; - __weak ROOTObjectController *controller; - TAxis *object; -} - -//____________________________________________________________________________________________________ -- (id)initWithNibName : (NSString *)nibName mode : (ROOT_IOSObjectInspector::AxisFontInspectorMode)m -{ - using namespace ROOT_IOSObjectInspector; - - self = [super initWithNibName : nibName bundle : nil]; - - [self view]; - - if (self) { - // Custom initialization - mode = m; - if (mode == afimTitleFont) - titleLabel.text = @"Title font:"; - else if (mode == afimLabelFont) - titleLabel.text = @"Label font:"; - } - - return self; -} - -//____________________________________________________________________________________________________ -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -//____________________________________________________________________________________________________ -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -//____________________________________________________________________________________________________ -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -//____________________________________________________________________________________________________ -- (BOOL)shouldAutorotateToInterfaceOrientation : (UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return YES; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObjectController : (ROOTObjectController *)c -{ - controller = c; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObject : (TObject *)o -{ - using namespace ROOT_IOSObjectInspector; - - object = dynamic_cast(o); - Font_t fontIndex = 0; - - if (mode == afimTitleFont) - fontIndex = object->GetTitleFont() / 10 - 1; - else if (mode == afimLabelFont) - fontIndex = object->GetLabelFont() / 10 - 1; - - if (fontIndex < 0 || fontIndex > nFixedFonts) - fontIndex = 0; - - [fontPicker selectRow : fontIndex inComponent : 0 animated : NO]; -} - -#pragma mark - color/pattern picker's dataSource. -//____________________________________________________________________________________________________ -- (CGFloat)pickerView : (UIPickerView *)pickerView widthForComponent : (NSInteger)component -{ - return defaultCellW; -} - -//____________________________________________________________________________________________________ -- (CGFloat)pickerView : (UIPickerView *)pickerView rowHeightForComponent : (NSInteger)component -{ - return defaultCellH; -} - -//____________________________________________________________________________________________________ -- (NSInteger)pickerView : (UIPickerView *)pickerView numberOfRowsInComponent : (NSInteger)component -{ - return nFixedFonts; -} - -//____________________________________________________________________________________________________ -- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView -{ - return 1; -} - -#pragma mark color/pattern picker's delegate. - -//____________________________________________________________________________________________________ -- (UIView *) pickerView : (UIPickerView *)pickerView viewForRow : (NSInteger)row forComponent : (NSInteger)component reusingView : (UIView *)view -{ - UILabel *label = [[UILabel alloc] initWithFrame : CGRectMake(0.f, 0.f, defaultCellW, defaultCellH)]; - label.text = fixedFontNames[row]; - label.font = [UIFont fontWithName : fixedFonts[row] size : 14.f]; - -#ifdef __IPHONE_6_0 - label.textAlignment = NSTextAlignmentCenter; -#else - label.textAlignment = UITextAlignmentCenter; -#endif - - label.backgroundColor = [UIColor colorWithPatternImage : [UIImage imageNamed : @"text_cell_bkn.png"]]; - - return label; -} - -//____________________________________________________________________________________________________ -- (void) pickerView : (UIPickerView *)thePickerView didSelectRow : (NSInteger)row inComponent : (NSInteger)component -{ - using namespace ROOT_IOSObjectInspector; - - const Font_t fontIndex = (row + 1) * 10; - if (mode == afimTitleFont) - object->SetTitleFont(fontIndex); - else if (mode == afimLabelFont) - object->SetLabelFont(fontIndex); - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (void) back -{ - [self.navigationController popViewControllerAnimated : YES]; -} - -@end diff --git a/test/ios/RootBrowser/AxisFontInspector.xib b/test/ios/RootBrowser/AxisFontInspector.xib deleted file mode 100644 index e21afd32d2490..0000000000000 --- a/test/ios/RootBrowser/AxisFontInspector.xib +++ /dev/null @@ -1,338 +0,0 @@ - - - - 1056 - 11B26 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - YES - IBUIPickerView - IBUIButton - IBUIView - IBUILabel - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - YES - - - 292 - {{20, 26}, {211, 21}} - - - - _NS:327 - - 3 - MCAwAA - - NO - YES - 7 - NO - IBIPadFramework - - - 1 - MCAwIDAAA - - - 1 - 10 - 1 - - - - 290 - {{25, 61}, {200, 216}} - - - - _NS:191 - IBIPadFramework - YES - - - - 292 - {{35, 285}, {180, 50}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - 1 - Back - - 3 - MQA - - - - 3 - MC41AA - - - NSImage - back_btn.png - - - - {250, 351} - - - - _NS:195 - - IBIPadFramework - - - - - YES - - - dataSource - - - - 8 - - - - delegate - - - - 9 - - - - back - - - 7 - - 10 - - - - view - - - - 11 - - - - titleLabel - - - - 12 - - - - fontPicker - - - - 13 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - YES - - - - - - - - 5 - - - - - 6 - - - - - 7 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 4.IBPluginDependency - 5.IBPluginDependency - 6.IBPluginDependency - 7.IBPluginDependency - - - YES - AxisFontInspector - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 13 - - - - YES - - AxisFontInspector - UIViewController - - back - id - - - back - - back - id - - - - YES - - YES - fontPicker - titleLabel - - - YES - UIPickerView - UILabel - - - - YES - - YES - fontPicker - titleLabel - - - YES - - fontPicker - UIPickerView - - - titleLabel - UILabel - - - - - IBProjectSource - ./Classes/AxisFontInspector.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - back_btn.png - {180, 50} - - 534 - - diff --git a/test/ios/RootBrowser/AxisInspector.h b/test/ios/RootBrowser/AxisInspector.h deleted file mode 100644 index 463030d16a61c..0000000000000 --- a/test/ios/RootBrowser/AxisInspector.h +++ /dev/null @@ -1,19 +0,0 @@ -#import - -#import "ObjectInspectorComponent.h" - -@interface AxisInspector : UIViewController { -@private - __weak IBOutlet UITabBar *tabBar; -} - -+ (CGRect) inspectorFrame; - -- (void) setROOTObjectController : (ROOTObjectController *)c; -- (void) setROOTObject : (TObject *)o; -- (NSString *) getComponentName; -- (void) resetInspector; - - - -@end diff --git a/test/ios/RootBrowser/AxisInspector.mm b/test/ios/RootBrowser/AxisInspector.mm deleted file mode 100644 index 1cf22da182d68..0000000000000 --- a/test/ios/RootBrowser/AxisInspector.mm +++ /dev/null @@ -1,167 +0,0 @@ -#import "InspectorWithNavigation.h" -#import "AxisLabelsInspector.h" -#import "AxisTitleInspector.h" -#import "AxisTicksInspector.h" -#import "AxisInspector.h" - -@interface AxisInspector () { - AxisTicksInspector *ticksInspector; - - InspectorWithNavigation *titleInspector; - InspectorWithNavigation *labelInspector; - - __weak ROOTObjectController *controller; - TObject *object; -} - -- (void) showTicksInspector; -- (void) showAxisTitleInspector; -- (void) showAxisLabelsInspector; - -@end - - -@implementation AxisInspector - -//____________________________________________________________________________________________________ -+ (CGRect) inspectorFrame -{ - return CGRectMake(0.f, 0.f, 250.f, 400.f); -} - -//____________________________________________________________________________________________________ -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName : nibNameOrNil bundle:nibBundleOrNil]; - - if (self) { - [self view]; - - ticksInspector = [[AxisTicksInspector alloc] initWithNibName : @"AxisTicksInspector" bundle : nil]; - [self.view addSubview : ticksInspector.view]; - - // - AxisTitleInspector *titleInspectorCompositor = [[AxisTitleInspector alloc] initWithNibName : @"AxisTitleInspector" bundle : nil]; - titleInspector = [[InspectorWithNavigation alloc] initWithRootViewController : titleInspectorCompositor]; - titleInspector.view.frame = [AxisTitleInspector inspectorFrame]; - [self.view addSubview : titleInspector.view]; - titleInspector.view.hidden = YES; - // - - AxisLabelsInspector *labelInspectorCompositor = [[AxisLabelsInspector alloc] initWithNibName : @"AxisLabelsInspector" bundle : nil]; - labelInspector = [[InspectorWithNavigation alloc] initWithRootViewController : labelInspectorCompositor]; - labelInspector.view.frame = [AxisLabelsInspector inspectorFrame]; - [self.view addSubview : labelInspector.view]; - labelInspector.view.hidden = YES; - - tabBar.selectedItem = [[tabBar items] objectAtIndex : 0]; - } - - return self; -} - -//____________________________________________________________________________________________________ -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -//____________________________________________________________________________________________________ -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -//____________________________________________________________________________________________________ -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -//____________________________________________________________________________________________________ -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return YES; -} - -#pragma mark - ObjectInspectorComponent's protocol. -//____________________________________________________________________________________________________ -- (void) setROOTObjectController : (ROOTObjectController *)c -{ - controller = c; - [ticksInspector setROOTObjectController : c]; - [titleInspector setROOTObjectController : c]; - [labelInspector setROOTObjectController : c]; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObject : (TObject *)o -{ - object = o; - [ticksInspector setROOTObject : o]; - [titleInspector setROOTObject : o]; - [labelInspector setROOTObject : o]; -} - -//____________________________________________________________________________________________________ -- (NSString *) getComponentName -{ - return @"Axis attributes"; -} - -//____________________________________________________________________________________________________ -- (void) resetInspector -{ - tabBar.selectedItem = [[tabBar items] objectAtIndex : 0]; - [titleInspector resetInspector]; - [labelInspector resetInspector]; - - [self showTicksInspector]; -} - -//____________________________________________________________________________________________________ -- (void) showTicksInspector -{ - ticksInspector.view.hidden = NO; - titleInspector.view.hidden = YES; - labelInspector.view.hidden = YES; -} - -//____________________________________________________________________________________________________ -- (void) showAxisTitleInspector -{ - ticksInspector.view.hidden = YES; - titleInspector.view.hidden = NO; - labelInspector.view.hidden = YES; -} - -//____________________________________________________________________________________________________ -- (void) showAxisLabelsInspector -{ - ticksInspector.view.hidden = YES; - titleInspector.view.hidden = YES; - labelInspector.view.hidden = NO; -} - -#pragma mark - Tabbar delegate. - -//____________________________________________________________________________________________________ -- (void) tabBar : (UITabBar *) tb didSelectItem : (UITabBarItem *)item -{ - if (item.tag == 1) - [self showTicksInspector]; - else if (item.tag == 2) - [self showAxisTitleInspector]; - else if (item.tag == 3) - [self showAxisLabelsInspector]; -} - -@end diff --git a/test/ios/RootBrowser/AxisInspector.xib b/test/ios/RootBrowser/AxisInspector.xib deleted file mode 100644 index e4754913a9ed1..0000000000000 --- a/test/ios/RootBrowser/AxisInspector.xib +++ /dev/null @@ -1,4646 +0,0 @@ - - - - 1056 - 11B26 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - YES - IBUITabBar - IBUIView - IBUITabBarItem - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - YES - - - 266 - {250, 49} - - - _NS:518 - - 10 - - 549453824 - {256, 256} - - YES - - YES - - - - TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/ -cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/ -bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/ -am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/ -YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/ -eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/ -bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/ -bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX// -dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/ -bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/ -Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/ -ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/ -d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/ -bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/ -d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/ -dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/ -bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/ -c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/ -cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/ -cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/ -Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/ -am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/ -bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/ -Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/ -bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/ -dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/ -bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/ -dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/ -d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/ -ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/ -ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/ -bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/ -dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/ -eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX// -c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/ -Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn// -c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/ -bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/ -bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/ -am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/ -cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/ -am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/ -ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/ -b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/ -d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/ -bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/ -Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/ -bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/ -bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/ -ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/ -dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/ -d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/ -bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/ -cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/ -cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/ -dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/ -dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/ -bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/ -dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/ -cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/ -cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/ -bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/ -c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/ -am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/ -bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/ -bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/ -bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn// -am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/ -Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/ -cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/ -dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/ -bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/ -dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/ -Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/ -bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/ -b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/ -dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/ -d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/ -cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/ -d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/ -dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/ -bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/ -Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/ -ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/ -dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/ -cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/ -bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/ -d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/ -bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX// -bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/ -bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/ -amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/ -a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/ -amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/ -bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/ -bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX// -bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/ -e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/ -YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/ -cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/ -c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/ -c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/ -b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/ -ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/ -cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/ -e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/ -eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/ -bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/ -bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/ -cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/ -bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/ -bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/ -c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/ -dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/ -b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/ -d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/ -b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/ -bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn// -bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/ -dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/ -am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/ -amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/ -bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn// -bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/ -bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/ -bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/ -cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/ -cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/ -cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/ -a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/ -ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/ -cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn// -bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/ -eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/ -cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/ -dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/ -c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/ -cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/ -cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/ -cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/ -bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/ -cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/ -bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/ -bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/ -bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/ -bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/ -cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/ -c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/ -cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/ -bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/ -dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/ -cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/ -d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/ -c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/ -bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/ -Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/ -bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/ -bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/ -cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/ -bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/ -bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/ -amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/ -XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/ -b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/ -dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/ -bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/ -bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/ -fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/ -d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/ -bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/ -bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn// -am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/ -eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/ -foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/ -gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/ -dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/ -amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/ -Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/ -Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn// -c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/ -bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/ -bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/ -bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/ -cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/ -YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/ -am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/ -c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn// -d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/ -c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/ -bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/ -dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn// -eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/ -c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/ -dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/ -bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/ -a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/ -cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/ -bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/ -bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/ -cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/ -am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/ -bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/ -cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/ -cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/ -b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/ -cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/ -cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/ -cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/ -c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/ -foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/ -cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/ -bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/ -b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/ -dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/ -Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/ -am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/ -e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn// -cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/ -cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/ -cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/ -bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/ -bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/ -bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/ -cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/ -c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/ -bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/ -cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/ -Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/ -bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/ -bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/ -cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/ -bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/ -c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/ -b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/ -bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/ -amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/ -am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/ -bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/ -cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/ -Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/ -eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn// -c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/ -bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/ -cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/ -cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn// -bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/ -b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/ -ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/ -Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/ -bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/ -bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/ -bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/ -bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/ -dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/ -c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/ -am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/ -bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/ -dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX// -c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/ -bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/ -amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/ -dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/ -cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/ -YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/ -bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/ -c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/ -bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/ -bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/ -foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/ -Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/ -dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/ -eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/ -Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/ -c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn// -bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/ -d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/ -d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/ -bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/ -c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/ -Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/ -bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/ -dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/ -Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/ -bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/ -bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/ -b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/ -ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/ -c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/ -f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/ -d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/ -c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/ -c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/ -dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn// -eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/ -cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/ -bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/ -b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/ -Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/ -Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/ -bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/ -bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/ -cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/ -cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/ -YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/ -bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/ -dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/ -bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/ -cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/ -eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/ -cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/ -Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/ -cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/ -cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/ -dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm// -bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX// -am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/ -b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/ -Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/ -bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/ -cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/ -bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/ -bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/ -e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/ -d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/ -bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/ -bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/ -bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/ -bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/ -dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/ -cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/ -amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/ -bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/ -dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/ -cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/ -bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/ -b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/ -dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/ -c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn// -cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/ -bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/ -Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/ -bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/ -cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/ -c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/ -Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/ -amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/ -cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/ -bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/ -bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/ -Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/ -Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/ -c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/ -am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/ -ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/ -XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/ -bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/ -c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/ -c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX// -c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/ -bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/ -bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn// -c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/ -dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/ -YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/ -bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/ -cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/ -b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/ -bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/ -bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/ -bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/ -am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/ -cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/ -dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn// -bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/ -c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/ -eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/ -bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/ -Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/ -bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/ -bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/ -Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/ -cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/ -bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/ -a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/ -aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/ -cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/ -am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/ -bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/ -bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/ -dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/ -cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/ -d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/ -eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/ -bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/ -Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/ -bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/ -amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/ -am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/ -cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/ -dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/ -c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/ -dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/ -b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/ -d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/ -bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/ -am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/ -dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/ -dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/ -bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/ -dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/ -bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/ -c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/ -b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/ -bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/ -c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/ -bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/ -b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX// -Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/ -Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/ -eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/ -amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/ -bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/ -bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/ -cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/ -eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/ -bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/ -Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/ -bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/ -cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/ -bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/ -cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn// -d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/ -bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/ -Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/ -dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/ -c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/ -c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/ -bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/ -c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/ -bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/ -amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/ -bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/ -c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/ -bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/ -cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/ -c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/ -eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/ -bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/ -dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/ -c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/ -bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/ -c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/ -c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/ -aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/ -dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/ -bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/ -dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/ -bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/ -cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/ -cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/ -am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/ -bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/ -cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/ -bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/ -cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/ -c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/ -d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/ -bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/ -dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/ -bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/ -cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/ -bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/ -c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/ -bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/ -c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX// -bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/ -am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/ -cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/ -cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/ -bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/ -eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/ -cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/ -eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/ -YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/ -am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/ -bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/ -dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/ -cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/ -dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/ -dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/ -ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/ -c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/ -foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/ -cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/ -dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/ -cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/ -eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/ -Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/ -bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn// -d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/ -c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn// -Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/ -eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/ -dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/ -dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/ -b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/ -bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/ -dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/ -c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/ -dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/ -cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/ -bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/ -dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/ -f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/ -bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/ -bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/ -Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/ -YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/ -am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/ -Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/ -am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/ -e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/ -c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/ -bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/ -dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/ -cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/ -ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/ -bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX// -amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/ -cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX// -bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/ -c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/ -bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/ -amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/ -c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/ -bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/ -bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/ -bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/ -bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/ -cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/ -bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/ -am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/ -bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/ -cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn// -dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/ -foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/ -bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/ -d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/ -am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/ -bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/ -bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/ -bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/ -Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/ -am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/ -am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/ -bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/ -bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/ -bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/ -c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/ -bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/ -bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/ -bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/ -bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/ -cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/ -dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/ -dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/ -bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/ -bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/ -bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/ -bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/ -dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/ -bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/ -dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/ -cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/ -cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX// -bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/ -bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/ -cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/ -c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/ -bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/ -bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn// -b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX// -bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/ -am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/ -am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/ -am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/ -bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/ -dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/ -bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/ -am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/ -b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/ -am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/ -dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn// -am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/ -b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/ -cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/ -Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/ -Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/ -dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/ -bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/ -bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/ -cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/ -am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/ -amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/ -bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/ -bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/ -dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/ -dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/ -bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/ -cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/ -cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn// -dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/ -dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/ -c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/ -cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/ -c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/ -dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/ -bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/ -bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/ -bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/ -am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/ -ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/ -bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/ -c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/ -bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn// -cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/ -cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/ -bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/ -cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/ -dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/ -bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/ -bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/ -bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/ -Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/ -d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX// -f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/ -amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/ -bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/ -bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/ -bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/ -bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/ -bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/ -bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/ -d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/ -bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/ -bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/ -Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/ -eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/ -c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/ -Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/ -bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/ -dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/ -cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/ -bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/ -eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/ -bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/ -Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/ -bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/ -bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/ -bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/ -XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/ -bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/ -d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/ -cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/ -am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/ -cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/ -bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/ -d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/ -bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/ -dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/ -cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/ -c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/ -bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/ -c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/ -cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/ -cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/ -am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/ -dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/ -eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/ -Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/ -cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/ -bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/ -am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/ -cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/ -bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/ -dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/ -cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/ -am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/ -Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/ -bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/ -cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/ -bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/ -d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/ -dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/ -c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/ -am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/ -bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/ -amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/ -Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/ -bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/ -c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/ -c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/ -am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/ -b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/ -cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/ -cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/ -cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/ -dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/ -Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/ -bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/ -c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX// -bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/ -dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/ -bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/ -bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/ -Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/ -am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/ -dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/ -c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/ -cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn// -cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn// -bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/ -bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/ -b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/ -b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/ -Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/ -bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/ -aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/ -dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/ -bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/ -Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/ -Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/ -bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/ -d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/ -bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/ -am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/ -dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/ -eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/ -dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/ -am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/ -c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/ -d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/ -cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/ -Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/ -b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/ -dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/ -bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/ -dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/ -am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/ -bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/ -bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/ -d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/ -bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/ -b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/ -cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/ -bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/ -bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/ -Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/ -bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/ -bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn// -c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/ -bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/ -bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/ -dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/ -cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/ -bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/ -bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/ -bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/ -bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/ -d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/ -bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/ -bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/ -dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/ -b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn// -c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/ -c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn// -bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/ -am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/ -cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/ -b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/ -bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/ -Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/ -amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/ -amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/ -am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/ -cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/ -c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/ -dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/ -b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/ -cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/ -cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/ -eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/ -cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/ -cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/ -dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/ -foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/ -bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/ -amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/ -bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/ -c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/ -bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/ -bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/ -c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/ -dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/ -cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/ -cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/ -b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX// -dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/ -foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/ -Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/ -a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/ -cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/ -dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH// -cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/ -c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn// -c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/ -Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/ -Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/ -am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/ -bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/ -dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/ -d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/ -bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/ -bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/ -bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/ -c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/ -dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/ -c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/ -cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/ -dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/ -dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/ -bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/ -bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/ -bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/ -c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/ -d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/ -dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/ -c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn// -cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/ -bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn// -bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/ -bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/ -bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/ -dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/ -dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX// -cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/ -eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn// -eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/ -cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/ -cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/ -am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/ -bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/ -c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/ -cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/ -Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/ -bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/ -bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/ -c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/ -bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/ -bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/ -bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/ -amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/ -d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/ -d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/ -bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/ -bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn// -d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/ -d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/ -cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/ -eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/ -bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/ -b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/ -bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/ -bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/ -c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/ -Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn// -eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/ -bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/ -Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/ -cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/ -am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/ -b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/ -amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/ -Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/ -cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/ -dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn// -d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/ -amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/ -bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/ -b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/ -bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/ -c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/ -bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/ -bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/ -cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/ -bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/ -bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/ -c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn// -c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn// -bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/ -bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/ -amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/ -Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/ -bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/ -Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/ -bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/ -bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/ -bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/ -cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/ -bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/ -cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/ -fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/ -dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/ -bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/ -cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/ -bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/ -cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/ -c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/ -am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/ -cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/ -Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/ -bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/ -bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/ -c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/ -bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/ -cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/ -c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/ -bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/ -dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/ -bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/ -ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/ -bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/ -cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/ -amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/ -bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/ -bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/ -d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/ -bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/ -bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/ -Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/ -bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/ -c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/ -dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/ -am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/ -bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/ -b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/ -bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/ -bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/ -aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/ -cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/ -c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/ -dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX// -cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/ -b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX// -dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/ -c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/ -d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/ -cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/ -d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/ -cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/ -c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn// -bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/ -b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/ -bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/ -c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/ -b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/ -bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/ -c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/ -dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/ -dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/ -am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/ -bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/ -c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/ -c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/ -d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn// -d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/ -cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/ -bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/ -cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/ -a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/ -b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/ -dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/ -bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/ -c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/ -d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/ -bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/ -bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/ -e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/ -dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn// -cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/ -bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/ -bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/ -bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/ -Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/ -eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/ -bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/ -am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn// -b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/ -cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/ -bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/ -Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/ -eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/ -ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/ -bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/ -c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/ -c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/ -cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/ -cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/ -bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/ -bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/ -am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/ -bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/ -bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX// -cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/ -cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/ -bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/ -b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/ -Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/ -c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/ -dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/ -bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/ -Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/ -bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/ -cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX// -dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/ -c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/ -cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn// -cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/ -cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/ -bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/ -d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/ -dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/ -Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/ -bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/ -c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/ -bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/ -d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/ -cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/ -YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/ -amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/ -b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/ -eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/ -bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/ -c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/ -bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/ -bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/ -bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX// -cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/ -e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/ -bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/ -amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/ -e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/ -dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/ -dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/ -cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/ -bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/ -bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/ -am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/ -bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/ -bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/ -bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/ -b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/ -c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/ -bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/ -d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/ -c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/ -bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/ -d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/ -c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/ -bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/ -eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX// -bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/ -YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/ -bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/ -YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/ -am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/ -c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/ -c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/ -YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/ -bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/ -eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/ -cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/ -bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/ -Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/ -c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/ -bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/ -b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/ -eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/ -dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/ -bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/ -eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/ -cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/ -bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/ -bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/ -bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/ -am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/ -dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/ -bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/ -eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/ -dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/ -dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/ -b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/ -dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3// -dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/ -bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/ -dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/ -bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/ -cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/ -am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/ -bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/ -bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/ -c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/ -am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/ -cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/ -dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/ -Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/ -c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/ -dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/ -c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/ -cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/ -Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn// -c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/ -am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/ -c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/ -c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/ -c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/ -cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/ -amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/ -YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/ -am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/ -bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/ -cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/ -cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/ -c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/ -cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/ -a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX// -bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/ -Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/ -bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/ -Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/ -c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/ -eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn// -dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/ -ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/ -Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/ -Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/ -bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/ -cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/ -bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/ -bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn// -d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/ -cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/ -bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/ -dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/ -c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/ -dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX// -bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn// -am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/ -cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/ -bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/ -Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/ -c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/ -am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/ -bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/ -cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/ -bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/ -d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/ -bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/ -am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/ -ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/ -dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/ -c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/ -d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX// -d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/ -cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/ -c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn// -am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/ -bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn// -c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/ -dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/ -bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/ -bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/ -cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/ -bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/ -Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/ -bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/ -cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/ -am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/ -dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/ -bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/ -bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/ -bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/ -c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/ -bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/ -c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/ -d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/ -bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/ -Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/ -c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/ -amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/ -c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/ -Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/ -c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/ -bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/ -bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/ -bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/ -bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/ -YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/ -bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/ -Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/ -ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/ -c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/ -amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/ -bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/ -bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/ -c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/ -bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/ -dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/ -Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/ -cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/ -dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/ -dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/ -cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/ -bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/ -bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/ -Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/ -bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/ -bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/ -am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/ -Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/ -bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/ -bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/ -amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/ -cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/ -dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/ -bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/ -dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/ -bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/ -bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/ -am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/ -cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/ -cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/ -dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/ -cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/ -cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/ -Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/ -Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/ -bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/ -cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/ -am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/ -c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/ -cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/ -bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn// -bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX// -cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/ -cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/ -YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/ -Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/ -bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/ -bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/ -Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/ -dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/ -bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/ -bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/ -dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/ -d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/ -am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/ -ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/ -Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/ -amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/ -am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/ -eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/ -bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/ -ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/ -cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/ -c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/ -bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/ -bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/ -c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn// -cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/ -dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/ -eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/ -c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/ -b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/ -bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/ -bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/ -bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/ -bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/ -am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/ -Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn// -c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/ -c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/ -cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/ -c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/ -YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/ -ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/ -am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/ -c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/ -bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/ -bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/ -Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/ -cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/ -dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/ -eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/ -cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn// -bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/ -d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/ -b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/ -b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn// -bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/ -cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/ -dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/ -cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/ -bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/ -bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/ -bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/ -e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/ -cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/ -bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/ -am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/ -bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/ -amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/ -dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/ -c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/ -cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/ -cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/ -dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX// -cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/ -bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/ -cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/ -Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/ -b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/ -dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/ -am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/ -Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/ -am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/ -c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/ -c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/ -bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn// -dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/ -a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/ -bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/ -Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/ -dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX// -dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/ -am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/ -bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/ -bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/ -Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/ -bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/ -bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/ -b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/ -Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/ -am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/ -Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/ -bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/ -bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/ -eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/ -dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/ -bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/ -bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/ -dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/ -am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/ -am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/ -b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/ -bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/ -amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/ -amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/ -dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/ -eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/ -bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX// -c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/ -bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/ -b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn// -c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/ -cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/ -bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/ -amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/ -amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/ -b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/ -bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/ -am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/ -bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/ -am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/ -c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/ -cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/ -c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/ -amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/ -dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/ -c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/ -dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/ -dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/ -bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/ -cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/ -c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/ -bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/ -c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/ -c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/ -cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/ -am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn// -dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/ -Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/ -bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX// -f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/ -c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX// -bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/ -b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/ -bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/ -bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/ -ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/ -cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/ -c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/ -bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/ -Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/ -cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/ -bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/ -Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/ -d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/ -am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/ -Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/ -bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/ -bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/ -d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3// -dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/ -dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/ -eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/ -bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/ -bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/ -fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/ -dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/ -bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/ -dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/ -c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/ -am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/ -amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/ -bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/ -amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/ -bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/ -foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/ -bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/ -cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn// -bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/ -Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/ -bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/ -dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn// -c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/ -c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/ -c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/ -amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/ -Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/ -dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/ -bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/ -Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn// -d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/ -eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/ -Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/ -YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/ -bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/ -d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/ -ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/ -bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/ -eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/ -d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/ -dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/ -am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/ -bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/ -am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/ -bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/ -bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/ -bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/ -am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/ -Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/ -bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/ -am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/ -c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/ -amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/ -cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/ -bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/ -bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/ -am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/ -bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/ -bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/ -d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/ -bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/ -bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/ -bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/ -bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/ -bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/ -bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/ -bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/ -bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/ -b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn// -bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/ -aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/ -bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/ -bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/ -bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/ -bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/ -b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/ -bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/ -dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/ -bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/ -Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/ -ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/ -bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/ -amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/ -bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/ -amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/ -am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/ -am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/ -b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/ -dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/ -amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/ -bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/ -YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/ -bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/ -b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/ -Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/ -bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/ -amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/ -c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/ -am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/ -c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/ -am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/ -cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/ -c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/ -bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/ -cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/ -bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/ -amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/ -bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/ -bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX// -bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/ -bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/ -bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/ -cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/ -bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/ -dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/ -am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/ -Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/ -Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/ -bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/ -dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/ -bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/ -cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/ -am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/ -amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/ -cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/ -bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/ -e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/ -cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/ -cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/ -dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/ -dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/ -c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/ -am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/ -bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/ -bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/ -bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/ -cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/ -bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/ -cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/ -dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/ -cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/ -bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/ -bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn// -dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/ -cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/ -bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/ -Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/ -bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/ -c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/ -dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/ -d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/ -Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/ -amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX// -c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/ -bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/ -Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/ -cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/ -bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/ -c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/ -bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/ -c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/ -bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/ -bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/ -am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/ -eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/ -eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/ -dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/ -bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/ -bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/ -am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/ -cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/ -bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/ -bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/ -cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/ -cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/ -bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/ -bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/ -bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/ -cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/ -eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/ -bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/ -dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/ -bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/ -bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/ -Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/ -cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn// -cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/ -cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/ -bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/ -b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/ -e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/ -ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/ -ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/ -bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/ -eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/ -cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/ -bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn// -c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/ -c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/ -bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/ -cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/ -c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/ -eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/ -b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/ -cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/ -bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/ -bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/ -bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/ -aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/ -aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/ -bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/ -bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/ -am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/ -bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/ -dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/ -am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/ -b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/ -Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/ -amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/ -cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/ -cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/ -dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/ -bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/ -dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/ -bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/ -bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/ -bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/ -cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/ -cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/ -dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/ -eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/ -c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/ -bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/ -ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/ -Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/ -bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/ -eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/ -bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/ -Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/ -cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/ -bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/ -a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/ -c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/ -dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/ -amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/ -am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/ -cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/ -bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/ -bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/ -Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/ -bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/ -bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/ -d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/ -b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn// -bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/ -bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/ -bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX// -c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/ -c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/ -bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/ -c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/ -bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/ -dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/ -amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/ -bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/ -dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/ -dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX// -dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/ -bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/ -am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/ -dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/ -dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/ -amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/ -cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/ -c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/ -cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/ -bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/ -cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/ -bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/ -bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/ -c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/ -bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/ -am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/ -bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/ -eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/ -am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/ -bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/ -am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/ -bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/ -cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/ -dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/ -b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/ -bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/ -cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/ -dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/ -bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn// -cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/ -cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/ -bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/ -cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/ -Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn// -dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/ -YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/ -dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/ -b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/ -c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/ -amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/ -c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/ -bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/ -cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/ -bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/ -bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/ -cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/ -cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/ -bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/ -cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/ -bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/ -cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/ -bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/ -b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/ -bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/ -b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/ -bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/ -Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/ -bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/ -bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/ -bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/ -am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/ -b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/ -c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/ -Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/ -cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/ -bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/ -bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/ -amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/ -c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/ -Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/ -am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/ -dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/ -bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/ -c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/ -bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/ -am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/ -c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/ -bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/ -Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX// -Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/ -ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/ -am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/ -c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/ -c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/ -d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/ -cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/ -Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/ -dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/ -eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/ -dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/ -bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/ -d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/ -bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/ -d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/ -c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/ -bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn// -c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/ -Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/ -bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/ -dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/ -Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/ -cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/ -bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/ -dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn// -cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/ -bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/ -bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/ -bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/ -am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/ -bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/ -bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/ -eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/ -bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/ -bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/ -bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/ -amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/ -bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn// -bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/ -b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn// -c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/ -bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/ -bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/ -d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/ -bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/ -dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/ -dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn// -bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/ -am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/ -cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/ -b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/ -bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/ -bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/ -cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/ -c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/ -c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/ -am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/ -cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/ -eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/ -e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/ -Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/ -Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/ -bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/ -am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/ -cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/ -bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/ -bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/ -cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/ -cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/ -am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/ -bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/ -bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/ -c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/ -bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/ -dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn// -dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/ -eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/ -d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/ -bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/ -bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/ -am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/ -Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/ -bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX// -dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/ -bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/ -dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/ -Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/ -bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/ -dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/ -d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn// -cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn// -e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/ -eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/ -cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/ -e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/ -c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/ -bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/ -dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/ -bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/ -d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/ -d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/ -c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/ -bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn// -dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/ -c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn// -bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/ -d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/ -dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/ -bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/ -Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/ -a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/ -bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/ -cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/ -amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/ -bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/ -c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/ -e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/ -c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/ -bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/ -Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/ -bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/ -a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/ -bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/ -bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3// -eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/ -enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/ -amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/ -Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/ -bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX// -cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/ -dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/ -bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/ -dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/ -bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ -ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/ -am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/ -bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/ -cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/ -cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/ -dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/ -bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/ -bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/ -cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH// -bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/ -c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/ -bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/ -d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/ -cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/ -cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/ -cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/ -c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/ -foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/ -c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/ -cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/ -am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/ -bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/ -c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/ -cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/ -cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/ -foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/ -eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/ -d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/ -b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/ -bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/ -b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/ -bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/ -ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/ -bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/ -Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/ -Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/ -bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/ -bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/ -bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/ -Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/ -cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/ -bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/ -c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/ -bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/ -amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/ -bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/ -am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/ -a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/ -cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/ -am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/ -Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/ -bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/ -bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/ -c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/ -bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn// -b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/ -bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn// -c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/ -bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/ -bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/ -bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/ -b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/ -b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/ -bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/ -bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/ -bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/ -cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/ -cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/ -bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/ -bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn// -cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/ -cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/ -Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/ -Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/ -bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/ -dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/ -b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/ -bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/ -bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/ -a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/ -b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/ -dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/ -bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/ -c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/ -bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/ -bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/ -bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/ -Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/ -cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/ -bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/ -c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/ -bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/ -b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/ -bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/ -bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/ -cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/ -b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/ -c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/ -cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/ -bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/ -Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/ -dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/ -bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/ -bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/ -c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/ -Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/ -am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/ -bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/ -cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/ -c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/ -cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/ -d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/ -bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX// -bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/ -Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/ -Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/ -d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/ -bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/ -a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/ -foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn// -c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/ -bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/ -am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/ -c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/ -Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/ -amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/ -bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/ -eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/ -b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/ -bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/ -d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/ -bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/ -bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/ -bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/ -bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/ -dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/ -bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/ -cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/ -a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/ -am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/ -cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/ -cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/ -c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/ -bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/ -bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/ -cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/ -am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/ -c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/ -bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/ -c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/ -bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/ -bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/ -cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/ -bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/ -am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/ -cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/ -f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/ -aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/ -bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/ -c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/ -Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/ -Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn// -c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/ -cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/ -bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/ -bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/ -Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/ -cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/ -bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX// -bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/ -bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/ -bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/ -bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/ -fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/ -bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/ -amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/ -am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/ -amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/ -cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/ -bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/ -b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/ -bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/ -c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/ -am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/ -bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/ -bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/ -cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/ -bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/ -bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/ -dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/ -bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/ -bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/ -bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/ -bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn// -bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/ -dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/ -am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/ -bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/ -dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/ -amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/ -bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/ -bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/ -dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/ -bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/ -bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/ -bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/ -bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/ -dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn// -dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/ -bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/ -d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/ -eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/ -cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/ -Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/ -bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/ -cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/ -cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/ -bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/ -a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/ -am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3// -dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/ -dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/ -cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/ -cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/ -ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/ -bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/ -cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/ -d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/ -am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/ -cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/ -bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/ -c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/ -dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX// -dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/ -bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/ -b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/ -bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/ -cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/ -bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/ -dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/ -cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/ -a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW// -aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/ -bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/ -b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/ -cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/ -aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/ -bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/ -dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/ -c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/ -bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/ -cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/ -dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/ -bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/ -bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/ -bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/ -dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/ -dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/ -aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/ -aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn// -eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/ -dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/ -aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/ -d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/ -dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/ -d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/ -bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/ -bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH// -am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/ -bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/ -am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/ -cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/ -b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/ -bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/ -amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/ -cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/ -bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/ -bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/ -dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/ -bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/ -bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/ -aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/ -d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/ -bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/ -bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/ -bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/ -ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/ -bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/ -bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/ -bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn// -c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/ -am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/ -cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/ -c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX// -c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/ -eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/ -am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/ -c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/ -am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/ -dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/ -dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/ -am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/ -bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/ -d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/ -cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/ -bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/ -bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/ -bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/ -cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/ -b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/ -bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/ -eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/ -b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/ -am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/ -ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/ -am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/ -am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/ -amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/ -aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/ -bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/ -c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/ -ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/ -cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/ -bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/ -bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/ -b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/ -Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/ -b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/ -cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/ -c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/ -b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/ -am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/ -bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/ -cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/ -bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/ -b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/ -bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/ -cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/ -ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/ -cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/ -cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/ -cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/ -c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/ -dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/ -bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/ -gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/ -cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/ -bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/ -bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/ -d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/ -eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/ -cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH// -bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/ -c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/ -a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/ -b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/ -am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/ -dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX// -bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/ -cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/ -a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/ -dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/ -cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/ -bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/ -bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/ -bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/ -b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/ -dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/ -bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/ -c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/ -cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/ -bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/ -dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/ -cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/ -eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/ -dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/ -d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/ -dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/ -bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/ -d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/ -bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/ -bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/ -bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/ -dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/ -bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/ -dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/ -Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/ -cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/ -a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/ -bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/ -bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/ -dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/ -Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/ -Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/ -bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/ -cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/ -c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/ -c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/ -bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/ -bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/ -cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/ -eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/ -bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/ -cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/ -bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/ -a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/ -amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/ -f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/ -cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/ -bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/ -bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/ -cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/ -c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn// -e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/ -bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/ -c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/ -Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/ -bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/ -Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/ -c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG// -bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX// -d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/ -Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/ -eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/ -c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/ -cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn// -bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/ -Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/ -bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/ -c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/ -cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/ -bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/ -dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/ -c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX// -bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/ -cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/ -bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/ -X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/ -eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/ -bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/ -bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/ -cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/ -cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/ -d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/ -e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/ -dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/ -bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/ -cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/ -e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/ -c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/ -bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/ -d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/ -cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/ -am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/ -a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/ -Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/ -bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/ -am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/ -c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/ -cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/ -cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/ -am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/ -cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/ -cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/ -cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/ -cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/ -bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/ -amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/ -c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/ -bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/ -dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/ -c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/ -amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/ -YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/ -b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/ -aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/ -Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn// -foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/ -bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/ -bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/ -bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/ -cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/ -dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/ -amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/ -c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/ -cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/ -YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/ -cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/ -bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX// -bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/ -dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/ -dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/ -bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/ -bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/ -bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/ -bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/ -b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/ -bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/ -c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/ -bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/ -b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/ -dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/ -c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/ -am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/ -b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/ -d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/ -dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/ -c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/ -am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/ -aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/ -a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/ -bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/ -bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/ -bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/ -Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/ -bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/ -cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/ -bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/ -dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/ -aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/ -cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/ -dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/ -bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/ -dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/ -cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/ -a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/ -a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/ -bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/ -bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn// -c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/ -bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/ -cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/ -b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/ -a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/ -cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/ -cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/ -aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/ -cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/ -bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/ -cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/ -bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/ -eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/ -cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/ -cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/ -bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/ -c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/ -d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/ -c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/ -b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/ -cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/ -dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/ -aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/ -cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/ -bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/ -bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/ -bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/ -bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/ -c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/ -Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/ -eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/ -bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/ -YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/ -bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/ -dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/ -bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/ -cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/ -bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn// -c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/ -cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/ -bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/ -dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/ -cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/ -bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/ -b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/ -Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/ -ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/ -Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/ -bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/ -c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/ -cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/ -dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX// -dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/ -dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/ -c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/ -c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/ -bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/ -am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/ -cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn// -bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/ -bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/ -Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/ -c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/ -bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/ -Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/ -b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/ -amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/ -b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/ -bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/ -d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/ -ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/ -cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/ -eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX// -dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/ -cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/ -bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/ -bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/ -bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/ -dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/ -c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/ -bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/ -b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/ -bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/ -b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/ -dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/ -cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/ -am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/ -c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/ -am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/ -bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn// -eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/ -dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/ -YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/ -bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/ -am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/ -bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX// -dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/ -dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn// -dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/ -bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/ -c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/ -enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/ -c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/ -eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/ -am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/ -c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/ -bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/ -ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/ -Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/ -am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/ -eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn// -dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/ -c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/ -bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/ -c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/ -eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/ -bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/ -bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/ -am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/ -bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/ -e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/ -dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/ -bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/ -bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/ -bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/ -dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/ -bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/ -bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/ -c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/ -c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/ -Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/ -bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/ -bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/ -bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX// -bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/ -bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/ -cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/ -bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/ -cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/ -cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/ -cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/ -b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn// -c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/ -foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn// -cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/ -amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/ -c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/ -ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/ -dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/ -bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/ -dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/ -c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/ -c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/ -cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/ -b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/ -b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/ -am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/ -bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/ -am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/ -bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/ -bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/ -cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/ -cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/ -bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/ -bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn// -bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/ -bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/ -cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn// -eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/ -cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/ -dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/ -e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/ -dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn// -bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/ -bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/ -bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/ -bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/ -cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/ -bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/ -am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/ -bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/ -bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/ -am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/ -c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/ -cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/ -am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/ -cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/ -e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/ -cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/ -d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn// -dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/ -bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/ -dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/ -am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/ -am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/ -Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/ -c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/ -bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/ -dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/ -cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/ -cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/ -cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/ -eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/ -cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/ -d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/ -c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/ -dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/ -c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/ -c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/ -Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/ -bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/ -bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/ -ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/ -c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/ -bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/ -bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn// -am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/ -c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/ -b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/ -g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/ -b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/ -dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/ -Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/ -am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/ -bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/ -b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/ -Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/ -am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/ -cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/ -amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/ -am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn// -eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/ -bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/ -bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/ -cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/ -Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/ -Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/ -b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/ -Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/ -b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/ -b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/ -cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/ -dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/ -Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/ -bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/ -cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/ -Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn// -cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/ -b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/ -cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/ -cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/ -bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/ -dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/ -d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/ -d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/ -dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/ -Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/ -am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/ -a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/ -bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/ -bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/ -eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/ -cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/ -b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/ -cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/ -am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/ -am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/ -cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/ -bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/ -c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/ -c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/ -bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/ -dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/ -dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/ -Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/ -a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/ -YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/ -d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn// -cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/ -b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/ -cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/ -ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/ -c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/ -Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/ -cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn// -d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn// -e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/ -cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/ -cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/ -bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/ -bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/ -bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/ -dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/ -am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/ -bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/ -cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/ -ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/ -bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/ -d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/ -c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/ -cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ -ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX// -Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/ -dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/ -am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/ -d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/ -aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/ -ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/ -bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/ -c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/ -c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/ -bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/ -bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/ -am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/ -Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/ -bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/ -b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/ -bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ -ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/ -dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/ -bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn// -c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/ -am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/ -a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/ -cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/ -d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/ -amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/ -Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/ -amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/ -cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/ -am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/ -bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/ -dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/ -bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/ -ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/ -am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/ -bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/ -Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/ -cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/ -d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/ -bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/ -cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/ -Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/ -bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/ -bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/ -c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/ -bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/ -d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/ -bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/ -bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/ -bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/ -cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/ -c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/ -e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/ -dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/ -bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/ -cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/ -aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn// -c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/ -cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/ -a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn// -cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/ -cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/ -bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/ -Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/ -cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/ -dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/ -c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/ -am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/ -cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/ -cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/ -am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/ -am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/ -cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/ -bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/ -d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/ -d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/ -b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/ -dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/ -bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/ -bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/ -c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/ -Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/ -bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/ -am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/ -cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/ -ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/ -am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/ -amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/ -bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/ -bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/ -bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/ -d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/ -bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/ -a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/ -bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/ -bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/ -bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/ -cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/ -bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/ -bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/ -bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/ -bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/ -bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/ -d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/ -bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/ -bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/ -fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/ -e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/ -Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/ -cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/ -dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/ -cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/ -cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/ -dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/ -Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/ -bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/ -am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/ -Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/ -bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/ -Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/ -bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/ -cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/ -Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/ -dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/ -dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/ -bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/ -bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/ -Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/ -YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/ -dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/ -cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn// -c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn// -eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/ -bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/ -am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/ -c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/ -bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/ -amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/ -bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/ -dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/ -dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/ -am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/ -cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/ -bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/ -e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/ -bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn// -bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/ -d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/ -bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/ -YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/ -bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/ -bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/ -bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/ -dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/ -bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/ -ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/ -bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/ -c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/ -c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn// -bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn// -bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/ -cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/ -dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/ -dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/ -cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/ -dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/ -bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/ -bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/ -cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn// -c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/ -c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/ -bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/ -Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/ -bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/ -eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/ -aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/ -e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/ -c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/ -bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/ -ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/ -bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/ -amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/ -bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/ -c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/ -bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/ -cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/ -am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/ -am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/ -d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/ -eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/ -Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/ -bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/ -dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/ -bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/ -bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/ -cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/ -aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/ -c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/ -bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/ -bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/ -bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/ -amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/ -bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/ -bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/ -YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/ -bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/ -c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/ -Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/ -c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/ -dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/ -Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/ -am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/ -dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/ -b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/ -Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/ -cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/ -c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn// -d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/ -d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/ -bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/ -fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/ -cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/ -amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/ -c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/ -eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn// -cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/ -d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/ -bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/ -bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/ -bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/ -cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/ -bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/ -c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/ -amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/ -bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/ -bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/ -ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/ -cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/ -cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/ -bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/ -cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/ -amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/ -dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/ -eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH// -bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/ -eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/ -dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/ -bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/ -bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/ -Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/ -bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/ -eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/ -bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/ -bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/ -bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/ -bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/ -bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/ -bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/ -bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/ -bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/ -cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/ -dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/ -dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/ -amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/ -c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/ -cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/ -bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/ -bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/ -Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/ -Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/ -bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/ -Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn// -cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/ -bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/ -dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/ -bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/ -bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/ -c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/ -b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/ -bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/ -bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/ -am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/ -bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/ -Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/ -Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/ -b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/ -c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/ -cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/ -cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/ -dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/ -c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/ -cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/ -amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/ -amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/ -c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/ -a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/ -bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/ -am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/ -Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/ -dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/ -e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/ -am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/ -c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/ -d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/ -bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/ -Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/ -Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/ -bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/ -bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/ -b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/ -Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/ -am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/ -b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/ -am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/ -cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/ -bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/ -dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/ -c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn// -cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/ -bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/ -cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/ -am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/ -am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/ -amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/ -Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/ -bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/ -Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/ -am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/ -bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/ -bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/ -bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/ -eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/ -bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/ -c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/ -c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/ -bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/ -bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/ -bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/ -bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/ -bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/ -amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/ -amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/ -cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/ -eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/ -cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/ -cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX// -bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/ -cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/ -c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/ -c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/ -c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/ -bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/ -amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/ -bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/ -bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/ -cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn// -dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/ -bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/ -cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/ -cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/ -am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/ -cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/ -c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/ -dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/ -cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/ -bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn// -eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/ -cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/ -amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/ -c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/ -bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/ -bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/ -bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/ -dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/ -c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/ -cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/ -dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/ -cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/ -e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/ -c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/ -ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/ -cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/ -eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/ -d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/ -amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn// -dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/ -cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/ -b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/ -c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX// -amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/ -amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/ -bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/ -eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX// -bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/ -cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn// -bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/ -dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/ -bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/ -cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/ -cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/ -bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/ -c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/ -bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/ -am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn// -dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/ -cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/ -c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/ -cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/ -e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn// -dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/ -d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/ -b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/ -am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/ -bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/ -bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/ -c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/ -bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/ -bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/ -foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/ -cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/ -bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/ -dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/ -cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/ -bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/ -c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/ -c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/ -am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/ -cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/ -cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/ -c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/ -bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/ -bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/ -eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/ -bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/ -bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/ -a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/ -amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/ -cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/ -amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/ -cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/ -cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/ -bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/ -bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/ -Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/ -cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/ -am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/ -bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/ -am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX// -bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/ -bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/ -cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/ -bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/ -a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/ -bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/ -cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/ -bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/ -bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/ -Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/ -bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/ -foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/ -bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/ -cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/ -amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/ -bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/ -bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/ -bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/ -bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/ -cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/ -bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/ -cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/ -bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/ -bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/ -bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/ -cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/ -dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/ -bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/ -g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/ -bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/ -bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/ -bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/ -dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/ -cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/ -dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/ -cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/ -c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/ -bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/ -cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/ -bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/ -e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/ -cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/ -cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn// -eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/ -eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/ -bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX// -foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/ -bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX// -cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/ -c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/ -dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn// -cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX// -bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/ -Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/ -am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/ -bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/ -c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/ -dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/ -c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/ -dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/ -bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/ -am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/ -dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/ -bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/ -amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/ -c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/ -dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/ -bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/ -bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/ -cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/ -bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/ -bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/ -bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/ -bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/ -cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/ -am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/ -bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/ -c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/ -bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/ -bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/ -bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/ -c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/ -cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/ -Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/ -ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/ -bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/ -cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/ -bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX// -bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/ -cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/ -dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/ -d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/ -bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/ -bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/ -cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/ -bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/ -d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/ -cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/ -cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/ -dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/ -c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/ -bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/ -am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/ -b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/ -b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/ -dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/ -bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/ -dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/ -cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/ -dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/ -cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/ -cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/ -eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/ -c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/ -cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/ -c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/ -c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/ -Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/ -bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/ -Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/ -b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/ -bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/ -cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/ -c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/ -b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/ -am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/ -Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/ -YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/ -c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/ -bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/ -c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/ -b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/ -bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/ -bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/ -bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/ -c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/ -bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/ -bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn// -c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/ -cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/ -cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/ -dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/ -bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/ -bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/ -b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/ -dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/ -bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/ -Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/ -cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/ -d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/ -c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/ -c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/ -am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/ -YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/ -Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/ -am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/ -bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/ -cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/ -cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/ -dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/ -am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/ -bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/ -bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/ -Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/ -Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn// -e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/ -bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/ -am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/ -bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/ -e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/ -cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/ -bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/ -Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/ -cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/ -bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/ -am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/ -b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/ -d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/ -bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/ -bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/ -am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/ -c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/ -c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/ -bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/ -cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/ -bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/ -bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/ -amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn// -bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/ -bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/ -e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/ -c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/ -c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/ -eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/ -dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/ -bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn// -cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX// -cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/ -c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/ -bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/ -c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/ -eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/ -bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/ -bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/ -Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/ -Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/ -bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/ -dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/ -foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/ -cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/ -Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/ -Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/ -bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/ -bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/ -bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/ -bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn// -cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/ -dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/ -dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/ -bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/ -bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/ -bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/ -c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/ -cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/ -bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn// -bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/ -dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/ -bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/ -cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/ -bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/ -b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/ -e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/ -d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/ -am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/ -bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/ -c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/ -cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/ -c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn// -dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/ -aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/ -bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/ -amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/ -bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/ -a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX// -bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/ -dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/ -dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/ -Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/ -YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/ -ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/ -c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/ -bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/ -bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/ -cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/ -cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/ -dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/ -bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/ -bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/ -bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn// -bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/ -cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn// -eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/ -b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/ -bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/ -Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/ -ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/ -cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/ -bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/ -am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/ -dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/ -am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/ -bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/ -am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/ -cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/ -bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/ -dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/ -bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/ -bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX// -foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/ -cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/ -Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/ -Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/ -ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/ -Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/ -dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/ -bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/ -c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/ -bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/ -dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/ -Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/ -a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam// -ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/ -bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/ -bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/ -cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/ -bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/ -am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/ -b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/ -bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/ -c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn// -cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/ -c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/ -cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/ -dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/ -cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/ -cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX// -cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/ -bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/ -b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/ -bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/ -bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/ -Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/ -Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/ -eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn// -d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/ -c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/ -bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/ -cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX// -d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/ -bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/ -cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn// -dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/ -d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/ -dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/ -bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/ -bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/ -Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/ -am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/ -Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/ -c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/ -d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/ -bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/ -b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/ -d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/ -dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/ -eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/ -am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/ -dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX// -c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/ -c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/ -cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/ -bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/ -b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/ -cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX// -bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/ -bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/ -d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/ -Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/ -ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/ -bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/ -am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/ -dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn// -bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/ -bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/ -c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/ -dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/ -bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/ -bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/ -bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/ -bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/ -bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/ -d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/ -bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/ -bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/ -am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/ -c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/ -bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX// -dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/ -Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/ -bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/ -am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/ -cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/ -dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/ -Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/ -bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn// -amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/ -bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/ -cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/ -bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/ -cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/ -bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/ -bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/ -dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/ -c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/ -dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/ -cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/ -eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX// -Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/ -bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/ -cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/ -Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/ -amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/ -dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/ -bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/ -b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/ -cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/ -cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/ -dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/ -amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/ -ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/ -cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/ -bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/ -c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/ -d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/ -eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/ -bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX// -bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/ -am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/ -cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/ -bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/ -bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/ -cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/ -cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn// -cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/ -d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/ -dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX// -Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/ -ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/ -dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/ -cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX// -bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/ -c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/ -Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn// -d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/ -c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/ -eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/ -cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/ -cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/ -cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/ -amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/ -bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/ -Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/ -c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/ -eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/ -bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/ -am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/ -d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/ -eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/ -cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/ -am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/ -c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/ -am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/ -Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/ -c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/ -d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/ -cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/ -cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/ -Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX// -bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/ -eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/ -bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/ -Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/ -c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn// -c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/ -am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/ -cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/ -Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/ -bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/ -am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/ -c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/ -dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/ -bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/ -Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/ -am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/ -cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/ -fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn// -bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/ -c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/ -bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/ -amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/ -amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/ -Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/ -bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/ -cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/ -amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/ -bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/ -c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/ -cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/ -eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/ -c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/ -bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/ -c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/ -cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/ -c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX// -bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/ -dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/ -c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/ -cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/ -cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/ -bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/ -dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/ -c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/ -am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/ -am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/ -cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/ -amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/ -bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/ -bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/ -d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/ -bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/ -c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/ -cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/ -f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/ -cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/ -bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/ -am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/ -Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/ -cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/ -bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/ -cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/ -bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/ -dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/ -dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/ -bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/ -amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/ -XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/ -aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/ -c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/ -ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/ -bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/ -cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/ -bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/ -Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/ -c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/ -eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/ -dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/ -cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn// -Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/ -b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/ -cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/ -amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/ -bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/ -bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/ -cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/ -e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/ -amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/ -bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/ -am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/ -bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/ -dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn// -c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/ -bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/ -cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/ -d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/ -c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/ -am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/ -cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/ -am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/ -aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/ -cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/ -bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/ -cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/ -b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/ -Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn// -c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/ -c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/ -bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/ -eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn// -bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/ -bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/ -bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ -ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/ -bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/ -bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/ -cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/ -cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/ -cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/ -bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/ -Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/ -dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/ -eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/ -Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/ -Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/ -cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/ -bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/ -c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/ -bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/ -am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/ -dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/ -e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/ -cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/ -b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/ -aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/ -cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/ -bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn// -cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/ -cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/ -Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/ -bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/ -bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn// -eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/ -dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/ -bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/ -am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/ -bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn// -d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/ -foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/ -dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/ -bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/ -b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/ -bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/ -bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/ -e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/ -bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/ -am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/ -bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/ -cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/ -bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/ -bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/ -bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX// -dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/ -eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/ -bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/ -cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/ -c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/ -dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/ -c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/ -bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/ -am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/ -c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/ -am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/ -c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX// -dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/ -bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/ -bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/ -cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/ -amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/ -dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/ -dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/ -bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/ -cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/ -am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/ -dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/ -bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/ -ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/ -amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/ -cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/ -ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/ -cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/ -bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/ -Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/ -bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/ -eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/ -e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/ -bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/ -bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/ -bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/ -Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/ -cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/ -dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/ -c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/ -bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn// -bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/ -bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/ -bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/ -dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/ -g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX// -c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/ -bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/ -d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/ -dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/ -am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/ -eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/ -bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/ -dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/ -cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/ -c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/ -bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/ -cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/ -cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/ -Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/ -bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/ -bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn// -c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/ -eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/ -Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/ -eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/ -amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/ -dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/ -bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/ -b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/ -bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/ -bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/ -bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/ -cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/ -aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/ -eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/ -c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/ -Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/ -bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/ -bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/ -eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/ -d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/ -bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/ -bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/ -cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/ -c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/ -am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/ -Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/ -cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/ -am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/ -bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/ -a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/ -Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/ -a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/ -c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/ -Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/ -b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn// -c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/ -cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/ -bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/ -c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn// -bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/ -bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/ -dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/ -dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/ -cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/ -cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/ -bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/ -cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/ -bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/ -a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/ -e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/ -bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/ -bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/ -bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/ -bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/ -dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/ -e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/ -d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/ -am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/ -bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/ -dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/ -amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/ -bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/ -dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/ -dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/ -bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/ -dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/ -bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/ -c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/ -c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/ -d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/ -bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn// -bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/ -am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/ -d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX// -amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/ -bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/ -d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/ -dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/ -am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/ -am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/ -bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/ -bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/ -bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/ -dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/ -bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/ -e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/ -dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/ -amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/ -Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/ -Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX// -eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/ -f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn// -am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/ -am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/ -cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/ -dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/ -bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/ -bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/ -c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/ -a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/ -bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/ -c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/ -cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/ -Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/ -bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/ -bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/ -Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/ -bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/ -cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/ -c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/ -bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/ -bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn// -c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/ -bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/ -bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/ -bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/ -bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/ -cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/ -bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/ -am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/ -dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/ -dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/ -amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/ -am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/ -Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/ -bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/ -bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/ -cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/ -eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/ -cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/ -amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/ -bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/ -bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/ -am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/ -dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/ -am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/ -cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/ -c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/ -b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/ -bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/ -bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/ -b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/ -bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/ -bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/ -bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX// -e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/ -Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/ -a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/ -b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/ -am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/ -c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/ -d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/ -cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/ -eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/ -bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/ -bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/ -bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn// -dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/ -dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/ -am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/ -bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/ -Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/ -Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/ -dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/ -cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/ -bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn// -bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/ -bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn// -amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/ -bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/ -YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/ -YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/ -am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/ -dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/ -c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/ -bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/ -bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/ -bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/ -bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/ -c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/ -bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/ -cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/ -bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/ -dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/ -bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/ -dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn// -d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/ -d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/ -d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/ -bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/ -dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/ -bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/ -bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/ -foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/ -e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/ -dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/ -cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/ -c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/ -bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/ -c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX// -c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/ -bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/ -c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/ -bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn// -cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/ -Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/ -bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/ -cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/ -dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn// -cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/ -dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/ -dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/ -eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/ -cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/ -d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/ -dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/ -c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX// -d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/ -cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/ -Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn// -ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/ -am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/ -cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/ -Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/ -c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/ -bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/ -am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/ -bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX// -am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/ -Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn// -am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/ -e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/ -bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/ -d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/ -d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/ -bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/ -cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn// -d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/ -c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/ -dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/ -dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/ -cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/ -bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/ -bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/ -bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/ -d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/ -amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/ -bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/ -dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/ -bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/ -bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/ -bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/ -c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/ -c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/ -cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/ -am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/ -c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/ -bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/ -c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/ -Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/ -dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/ -d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/ -bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ -ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/ -bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/ -bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/ -Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/ -bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn// -dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/ -cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/ -bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/ -cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/ -bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/ -am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/ -cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/ -cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/ -dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/ -amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/ -am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/ -bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/ -Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/ -am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/ -bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/ -cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/ -cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/ -cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/ -bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/ -Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/ -cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/ -am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/ -c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/ -Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/ -d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/ -bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/ -c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/ -bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/ -bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/ -cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/ -bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/ -bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/ -dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/ -cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/ -cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/ -dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/ -dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/ -bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/ -Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/ -amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/ -bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/ -bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/ -bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/ -c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/ -bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/ -bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/ -cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/ -amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/ -bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/ -dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/ -b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/ -bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/ -b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/ -bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/ -d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/ -bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/ -bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/ -bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/ -c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/ -c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/ -Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/ -f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/ -c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/ -dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/ -cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/ -c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/ -am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/ -bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/ -b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/ -bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/ -Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/ -bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/ -Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/ -Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/ -cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/ -Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn// -c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/ -bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/ -cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/ -d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/ -bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/ -bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/ -dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/ -cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/ -cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/ -a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/ -bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/ -bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX// -c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/ -dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/ -bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/ -bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/ -bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn// -d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/ -bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/ -cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/ -c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX// -c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/ -amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX// -am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/ -Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/ -Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/ -amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/ -bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/ -amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/ -cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/ -bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/ -bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/ -c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/ -f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn// -dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/ -dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/ -bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/ -Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/ -c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/ -bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/ -eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/ -b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/ -bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/ -bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/ -bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/ -Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/ -bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/ -cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/ -am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/ -am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/ -bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/ -cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/ -bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/ -bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/ -bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/ -Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/ -c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/ -c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/ -am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/ -b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/ -bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/ -c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/ -bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/ -bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn// -cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/ -bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/ -bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/ -eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn// -c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/ -cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/ -cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/ -eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/ -dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/ -c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/ -bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/ -bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/ -cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/ -bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/ -am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/ -b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/ -bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/ -bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/ -Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/ -bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/ -Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/ -bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/ -d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/ -eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/ -bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/ -dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/ -bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/ -cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/ -Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/ -cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/ -dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/ -bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/ -bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/ -bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/ -Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/ -cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/ -c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/ -bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/ -bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/ -bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/ -bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/ -c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/ -bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/ -c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/ -Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX// -eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/ -am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/ -cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/ -am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/ -bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/ -f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/ -bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/ -eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX// -cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/ -Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/ -d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/ -d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/ -amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/ -am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/ -Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/ -Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/ -bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/ -c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/ -d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/ -c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/ -cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/ -fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/ -Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/ -amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/ -amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/ -am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/ -ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/ -dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/ -c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/ -bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/ -Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/ -am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/ -cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX// -am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/ -Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/ -bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/ -b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/ -e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/ -cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/ -cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/ -bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/ -bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/ -dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/ -eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/ -b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/ -bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/ -bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/ -cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/ -am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/ -am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/ -c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/ -bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/ -bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/ -dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/ -cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/ -bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/ -bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/ -d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/ -b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/ -dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/ -bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/ -bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/ -cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB -AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA -AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI -AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - - - - - - 3 - MCAwAA - - - scrollViewTexturedBackgroundColor - - 0.80000001192092896 - IBIPadFramework - - YES - - 1 - Ticks - - NSImage - ticks_tab.png - - IBIPadFramework - - - - 2 - Title - - NSImage - title_tab.png - - IBIPadFramework - - - - 3 - Labels - - NSImage - label_tab.png - - IBIPadFramework - - - - - - {250, 400} - - - _NS:195 - - IBIPadFramework - - - - - YES - - - view - - - - 7 - - - - tabBar - - - - 18 - - - - delegate - - - - 19 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - YES - - - - - - 14 - - - YES - - - - - - - - 15 - - - - - 16 - - - - - 17 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 14.IBPluginDependency - 15.IBPluginDependency - 16.IBPluginDependency - 17.IBPluginDependency - 4.IBPluginDependency - - - YES - AxisInspector - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 19 - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - label_tab.png - ticks_tab.png - title_tab.png - - - YES - {30, 30} - {30, 30} - {30, 30} - - - 534 - - diff --git a/test/ios/RootBrowser/AxisLabelsInspector.h b/test/ios/RootBrowser/AxisLabelsInspector.h deleted file mode 100644 index 083e7fd5f89d3..0000000000000 --- a/test/ios/RootBrowser/AxisLabelsInspector.h +++ /dev/null @@ -1,33 +0,0 @@ -#import "ObjectInspectorComponent.h" - -@class ROOTObjectController; - - -class TObject; -class TAxis; - -@interface AxisLabelsInspector : UIViewController { -@private - __weak IBOutlet UIButton *plusSize; - __weak IBOutlet UIButton *minusSize; - __weak IBOutlet UILabel *sizeLabel; - - __weak IBOutlet UIButton *plusOffset; - __weak IBOutlet UIButton *minusOffset; - __weak IBOutlet UILabel *offsetLabel; - - __weak IBOutlet UISwitch *noExp; -} - -+ (CGRect) inspectorFrame; - -- (void) setROOTObjectController : (ROOTObjectController *)c; -- (void) setROOTObject : (TObject *)o; - -- (IBAction) showLabelFontInspector; - -- (IBAction) plusBtn : (UIButton *)sender; -- (IBAction) minusBtn : (UIButton *)sender; -- (IBAction) noExpPressed; - -@end diff --git a/test/ios/RootBrowser/AxisLabelsInspector.mm b/test/ios/RootBrowser/AxisLabelsInspector.mm deleted file mode 100644 index 00a3d31bd0094..0000000000000 --- a/test/ios/RootBrowser/AxisLabelsInspector.mm +++ /dev/null @@ -1,153 +0,0 @@ -#import "ROOTObjectController.h" -#import "AxisLabelsInspector.h" -#import "AxisFontInspector.h" - -#import "TObject.h" -#import "TAxis.h" - -//It's mm file == C++, consts have internal linkage. -const float sizeStep = 0.01f; -const float minSize = 0.f; -const float maxSize = 1.f; - -const float offsetStep = 0.001f; -const float minOffset = -1.f; -const float maxOffset = 1.f; - -const float totalHeight = 400.f; -const float tabBarHeight = 49.f; -const CGRect componentFrame = CGRectMake(0.f, tabBarHeight, 250.f, totalHeight - tabBarHeight); - -@implementation AxisLabelsInspector { - __weak ROOTObjectController *controller; - TAxis *object; -} - -//____________________________________________________________________________________________________ -+ (CGRect) inspectorFrame -{ - return componentFrame; -} - -//____________________________________________________________________________________________________ -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - [self view]; - - if (self) - [self view]; - - return self; -} - -//____________________________________________________________________________________________________ -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -//____________________________________________________________________________________________________ -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -//____________________________________________________________________________________________________ -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -//____________________________________________________________________________________________________ -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return YES; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObjectController : (ROOTObjectController *)c -{ - controller = c; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObject : (TObject *)o -{ - object = dynamic_cast(o); - - sizeLabel.text = [NSString stringWithFormat : @"%.2f", object->GetLabelSize()]; - offsetLabel.text = [NSString stringWithFormat : @"%.3f", object->GetLabelOffset()]; - - noExp.on = object->GetNoExponent(); -} - -//____________________________________________________________________________________________________ -- (void) showLabelFontInspector -{ - AxisFontInspector *fontInspector = [[AxisFontInspector alloc] initWithNibName : @"AxisFontInspector" mode : ROOT_IOSObjectInspector::afimLabelFont]; - - [fontInspector setROOTObjectController : controller]; - [fontInspector setROOTObject : object]; - - [self.navigationController pushViewController : fontInspector animated : YES]; -} - -//____________________________________________________________________________________________________ -- (IBAction) plusBtn : (UIButton *)sender -{ - if (sender == plusSize) { - if (object->GetLabelSize() + sizeStep > maxSize) - return; - - sizeLabel.text = [NSString stringWithFormat : @"%.2f", object->GetLabelSize() + sizeStep]; - object->SetLabelSize(object->GetLabelSize() + sizeStep); - } else if (sender == plusOffset) { - if (object->GetLabelOffset() + offsetStep > maxOffset) - return; - - offsetLabel.text = [NSString stringWithFormat : @"%.3f", object->GetLabelOffset() + offsetStep]; - object->SetLabelOffset(object->GetLabelOffset() + offsetStep); - } - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) minusBtn : (UIButton *)sender -{ - if (sender == minusSize) { - if (object->GetLabelSize() - sizeStep < minSize) - return; - - sizeLabel.text = [NSString stringWithFormat : @"%.2f", object->GetLabelSize() - sizeStep]; - object->SetLabelSize(object->GetLabelSize() - sizeStep); - } else if (sender == minusOffset) { - if (object->GetLabelOffset() - offsetStep < minOffset) - return; - - offsetLabel.text = [NSString stringWithFormat : @"%.3f", object->GetLabelOffset() - offsetStep]; - object->SetLabelOffset(object->GetLabelOffset() - offsetStep); - } - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) noExpPressed -{ - object->SetNoExponent(noExp.on); - [controller objectWasModifiedUpdateSelection : NO]; -} - -@end diff --git a/test/ios/RootBrowser/AxisLabelsInspector.xib b/test/ios/RootBrowser/AxisLabelsInspector.xib deleted file mode 100644 index cfdc32a77a6ca..0000000000000 --- a/test/ios/RootBrowser/AxisLabelsInspector.xib +++ /dev/null @@ -1,789 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - YES - IBUISwitch - IBUIButton - IBUIImageView - IBUIView - IBUILabel - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - YES - - - 292 - {{10, 270}, {230, 3}} - - - - _NS:544 - NO - IBIPadFramework - - - - 292 - {{35, 281}, {180, 50}} - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - 1 - Label font - - 3 - MQA - - - - 3 - MC41AA - - - NSImage - forward_btn.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{20, 44}, {90, 21}} - - - - _NS:327 - - 3 - MCAwAA - - NO - YES - 7 - NO - IBIPadFramework - Label size: - - 1 - MCAwIDAAA - - - 1 - 10 - - Helvetica - Helvetica - 0 - 15 - - - Helvetica - 15 - 16 - - - - - 292 - {{20, 136}, {100, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - Label offset: - - - 1 - 10 - - - - - - 292 - {{20, 225}, {113, 21}} - - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - No exponent: - - - 1 - 10 - - - - - - 292 - {{146, 222}, {94, 27}} - - - - _NS:592 - NO - IBIPadFramework - 0 - 0 - - - - 292 - {{113, 44}, {42, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{163, 36}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - plus_btn.png - - - - - - - 292 - {{200, 36}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - minus_btn.png - - - - - - - 292 - {{113, 136}, {42, 21}} - - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - - - - - - 292 - {{163, 128}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{200, 128}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - {250, 351} - - - - _NS:195 - - IBIPadFramework - - - - - YES - - - view - - - - 20 - - - - sizeLabel - - - - 21 - - - - offsetLabel - - - - 22 - - - - plusSize - - - - 23 - - - - minusSize - - - - 24 - - - - plusOffset - - - - 25 - - - - minusOffset - - - - 26 - - - - noExp - - - - 38 - - - - showLabelFontInspector - - - 7 - - 33 - - - - noExpPressed - - - 13 - - 37 - - - - plusBtn: - - - 7 - - 29 - - - - minusBtn: - - - 7 - - 30 - - - - plusBtn: - - - 7 - - 31 - - - - minusBtn: - - - 7 - - 32 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - YES - - - - - - - - - - - - - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - 12 - - - - - 13 - - - - - 14 - - - - - 15 - - - - - 16 - - - - - 17 - - - - - 18 - - - - - 19 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 10.IBPluginDependency - 11.IBPluginDependency - 12.IBPluginDependency - 13.IBPluginDependency - 14.IBPluginDependency - 15.IBPluginDependency - 16.IBPluginDependency - 17.IBPluginDependency - 18.IBPluginDependency - 19.IBPluginDependency - 4.IBPluginDependency - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - AxisLabelsInspector - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 38 - - - - YES - - AxisLabelsInspector - UIViewController - - YES - - YES - back - minusBtn: - noExpPressed - plusBtn: - showLabelColorInspector - showLabelFontInspector - - - YES - id - UIButton - id - UIButton - id - id - - - - YES - - YES - back - minusBtn: - noExpPressed - plusBtn: - showLabelColorInspector - showLabelFontInspector - - - YES - - back - id - - - minusBtn: - UIButton - - - noExpPressed - id - - - plusBtn: - UIButton - - - showLabelColorInspector - id - - - showLabelFontInspector - id - - - - - YES - - YES - minusOffset - minusSize - noExp - offsetLabel - plusOffset - plusSize - sizeLabel - - - YES - UIButton - UIButton - UISwitch - UILabel - UIButton - UIButton - UILabel - - - - YES - - YES - minusOffset - minusSize - noExp - offsetLabel - plusOffset - plusSize - sizeLabel - - - YES - - minusOffset - UIButton - - - minusSize - UIButton - - - noExp - UISwitch - - - offsetLabel - UILabel - - - plusOffset - UIButton - - - plusSize - UIButton - - - sizeLabel - UILabel - - - - - IBProjectSource - ./Classes/AxisLabelsInspector.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - forward_btn.png - minus_btn.png - plus_btn.png - - - YES - {180, 50} - {40, 40} - {40, 40} - - - 933 - - diff --git a/test/ios/RootBrowser/AxisTicksInspector.h b/test/ios/RootBrowser/AxisTicksInspector.h deleted file mode 100644 index ef8c79822696b..0000000000000 --- a/test/ios/RootBrowser/AxisTicksInspector.h +++ /dev/null @@ -1,33 +0,0 @@ -#import - -#import "ObjectInspectorComponent.h" - -@interface AxisTicksInspector : UIViewController { -@private - __weak IBOutlet UILabel *tickLengthLabel; - __weak IBOutlet UIButton *plusLengthBtn; - __weak IBOutlet UIButton *minusLengthBtn; - - __weak IBOutlet UIButton *plusPrim; - __weak IBOutlet UIButton *minusPrim; - __weak IBOutlet UILabel *primLabel; - - __weak IBOutlet UIButton *plusSec; - __weak IBOutlet UIButton *minusSec; - __weak IBOutlet UILabel *secLabel; - - __weak IBOutlet UIButton *plusTer; - __weak IBOutlet UIButton *minusTer; - __weak IBOutlet UILabel *terLabel; - - __weak IBOutlet UISegmentedControl *ticksNegPos; -} - -- (void) setROOTObject : (TObject *)object; -- (void) setROOTObjectController : (ROOTObjectController *)c; - -- (IBAction) plusTick : (UIButton *)sender; -- (IBAction) minusTick :(UIButton *)sender; -- (IBAction) ticksNegPosPressed; - -@end diff --git a/test/ios/RootBrowser/AxisTicksInspector.mm b/test/ios/RootBrowser/AxisTicksInspector.mm deleted file mode 100644 index b29ec9e5c55b4..0000000000000 --- a/test/ios/RootBrowser/AxisTicksInspector.mm +++ /dev/null @@ -1,229 +0,0 @@ -#import - -#import "ROOTObjectController.h" -#import "AxisTicksInspector.h" - -#import "TObject.h" -#import "TAxis.h" - - -//It's mm file == C++, consts have internal linkage. -const float tickLengthStep = 0.01f; -const float maxTickLength = 1.f; -const float minTickLength = -1.f; - -const CGFloat tabBarHeight = 49.f; -const CGFloat totalHeight = 400.f; -const CGRect componentFrame = CGRectMake(0.f, tabBarHeight, 250.f, totalHeight - tabBarHeight); - -@implementation AxisTicksInspector { - float tickLength; - unsigned primaryTicks; - unsigned secondaryTicks; - unsigned tertiaryTicks; - - __weak ROOTObjectController *controller; - - TAxis *object; -} - -//____________________________________________________________________________________________________ -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - - [self view]; - - if (self) { - // Custom initialization - self.view.frame = componentFrame; - } - - return self; -} - -//____________________________________________________________________________________________________ -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -//____________________________________________________________________________________________________ -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -//____________________________________________________________________________________________________ -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -//____________________________________________________________________________________________________ -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return YES; -} - -#pragma mark - Inspector's protocol. - -//____________________________________________________________________________________________________ -- (void) setTicksWidgets -{ -// object->SetNdivisions(int(primaryTicks.value), int(secondaryTicks.value), int(tertiaryTicks.value), 1); -// [controller objectWasModifiedByEditor]; - - const int nDivisions = object->GetNdivisions(); - //Hardcoded constants from TAttAxis, never defined as named values in ROOT. - //"Formulas" from TAxisEditor. - primaryTicks = nDivisions % 100; - secondaryTicks = (nDivisions / 100) % 100; - tertiaryTicks = (nDivisions / 10000) % 100; - - primLabel.text = [NSString stringWithFormat : @"%u", primaryTicks]; - secLabel.text = [NSString stringWithFormat : @"%u", secondaryTicks]; - terLabel.text = [NSString stringWithFormat : @"%u", tertiaryTicks]; - - tickLength = object->GetTickLength(); - tickLengthLabel.text = [NSString stringWithFormat : @"%.2f", object->GetTickLength()]; -} - -//____________________________________________________________________________________________________ -- (void) setupInspector -{ - const char *option = object->GetTicks(); - - if (!strcmp("+-", option)) - [ticksNegPos setSelectedSegmentIndex : 1]; - else - [ticksNegPos setSelectedSegmentIndex : 0]; - - [self setTicksWidgets]; -} - - -//____________________________________________________________________________________________________ -- (void) setROOTObject : (TObject *)o -{ - //The result of a cast is not checked here, it's done on top level. - object = dynamic_cast(o); - - [self setupInspector]; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObjectController:(ROOTObjectController *)c -{ - controller = c; -} - -//____________________________________________________________________________________________________ -- (IBAction) ticksNegPosPressed -{ - if (ticksNegPos.selectedSegmentIndex == 0) - object->SetTicks(""); - else - object->SetTicks("+-"); - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (void) setTicks -{ - object->SetNdivisions(primaryTicks, secondaryTicks, tertiaryTicks); -} - -//____________________________________________________________________________________________________ -- (IBAction) plusTick : (UIButton *)sender -{ - if (sender == plusLengthBtn) { - if (tickLength + tickLengthStep < maxTickLength) { - tickLength += tickLengthStep; - tickLengthLabel.text = [NSString stringWithFormat:@"%.2f", tickLength]; - object->SetTickLength(tickLength); - [controller objectWasModifiedUpdateSelection : NO]; - } - return; - } - - UILabel *labelToModify = 0; - unsigned n = 0; - - if (sender == plusPrim) { - labelToModify = primLabel; - if (primaryTicks < 99) - n = ++primaryTicks; - else - return; - } else if (sender == plusSec) { - labelToModify = secLabel; - if (secondaryTicks < 99) - n = ++secondaryTicks; - else - return; - } else { - labelToModify = terLabel; - if (tertiaryTicks < 99) - n = ++tertiaryTicks; - else - return; - } - - labelToModify.text = [NSString stringWithFormat : @"%u", n]; - [self setTicks]; - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) minusTick :(UIButton *)sender -{ - if (sender == minusLengthBtn) { - if (tickLength - tickLengthStep > minTickLength) { - tickLength -= tickLengthStep; - tickLengthLabel.text = [NSString stringWithFormat:@"%.2g", tickLength]; - object->SetTickLength(tickLength); - [controller objectWasModifiedUpdateSelection : NO]; - } - return; - } - - UILabel *labelToModify = 0; - unsigned n = 0; - - if (sender == minusPrim) { - labelToModify = primLabel; - if (primaryTicks > 0) - n = --primaryTicks; - else - return; - } else if (sender == minusSec) { - labelToModify = secLabel; - if (secondaryTicks > 0) - n = --secondaryTicks; - else - return; - } else { - labelToModify = terLabel; - if (tertiaryTicks > 0) - n = --tertiaryTicks; - else - return; - } - - labelToModify.text = [NSString stringWithFormat : @"%u", n]; - [self setTicks]; - [controller objectWasModifiedUpdateSelection : NO]; -} - - -@end diff --git a/test/ios/RootBrowser/AxisTicksInspector.xib b/test/ios/RootBrowser/AxisTicksInspector.xib deleted file mode 100644 index 0a39d1140c6e7..0000000000000 --- a/test/ios/RootBrowser/AxisTicksInspector.xib +++ /dev/null @@ -1,1127 +0,0 @@ - - - - 1056 - 11B26 - 1617 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 534 - - - YES - IBUIImageView - IBUIButton - IBUISegmentedControl - IBUIView - IBUILabel - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - YES - - - 292 - {{10, 102}, {230, 3}} - - - - _NS:544 - NO - IBIPadFramework - - NSImage - separator.png - - - - - 292 - {{10, 167}, {230, 3}} - - - - _NS:544 - NO - IBIPadFramework - - - - - 292 - {{20, 43}, {210, 44}} - - - - _NS:277 - NO - IBIPadFramework - 2 - 0 - - YES - + - -+ - - - YES - - - - - YES - - - - - YES - {0, 0} - {0, 0} - - - YES - - - - - - - 292 - {{71, 15}, {107, 20}} - - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Ticks on both sides: - - Helvetica - 17 - 16 - - - 1 - MCAwIDAAA - - - 1 - 10 - - - - 292 - {{148, 178}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - plus_btn.png - - - - - 292 - {{185, 178}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - minus_btn.png - - - - - 292 - {{148, 226}, {40, 40}} - - - - _NS:237 - - 3 - MCAwAA - - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - 292 - {{185, 226}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - 292 - {{148, 274}, {40, 40}} - - - - _NS:237 - - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - 292 - {{185, 274}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - 292 - {{17, 189}, {73, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - N of primary: - - - 1 - 10 - - - - 292 - {{17, 235}, {90, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - N of secondary: - - - 1 - 10 - - - - 292 - {{17, 283}, {73, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - N of tertiary: - - - 1 - 10 - - - - 292 - {{109, 189}, {31, 21}} - - - - _NS:327 - - 3 - MC42NjY2NjY2NjY3AA - - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - 1 - - - - 292 - {{109, 235}, {31, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - 1 - - - - 292 - {{109, 283}, {31, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - 1 - - - - 292 - {{17, 126}, {65, 21}} - - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Tick length: - - - 1 - 10 - - - - 292 - {{90, 126}, {50, 21}} - - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - Label - - - - 1 - 10 - 1 - - - - 292 - {{148, 117}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - 1 - - - - - - - - 292 - {{185, 117}, {40, 40}} - - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - 1 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - {250, 351} - - - - _NS:195 - - IBIPadFramework - - - - - YES - - - view - - - - 26 - - - - plusPrim - - - - 50 - - - - minusPrim - - - - 51 - - - - plusSec - - - - 52 - - - - minusSec - - - - 53 - - - - plusTer - - - - 54 - - - - minusTer - - - - 55 - - - - primLabel - - - - 62 - - - - secLabel - - - - 63 - - - - terLabel - - - - 64 - - - - plusTick: - - - 7 - - 65 - - - - plusTick: - - - 7 - - 66 - - - - plusTick: - - - 7 - - 67 - - - - minusTick: - - - 7 - - 68 - - - - minusTick: - - - 7 - - 69 - - - - minusTick: - - - 7 - - 70 - - - - tickLengthLabel - - - - 75 - - - - plusLengthBtn - - - - 77 - - - - minusLengthBtn - - - - 79 - - - - plusTick: - - - 7 - - 80 - - - - minusTick: - - - 7 - - 81 - - - - ticksNegPosPressed - - - 13 - - 82 - - - - ticksNegPos - - - - 83 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - 37 - - - - - 42 - - - - - 44 - - - - - 45 - - - - - 46 - - - - - 47 - - - - - 48 - - - - - 49 - - - - - 56 - - - - - 57 - - - - - 58 - - - - - 59 - - - - - 60 - - - - - 61 - - - - - 71 - - - - - 72 - - - - - 73 - - - - - 74 - - - - - 76 - - - - - 78 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 37.IBPluginDependency - 37.IUISegmentedControlInspectorSelectedSegmentMetadataKey - 4.IBPluginDependency - 42.IBPluginDependency - 44.IBPluginDependency - 45.IBPluginDependency - 46.IBPluginDependency - 47.IBPluginDependency - 48.IBPluginDependency - 49.IBPluginDependency - 56.IBPluginDependency - 57.IBPluginDependency - 58.IBPluginDependency - 59.IBPluginDependency - 60.IBPluginDependency - 61.IBPluginDependency - 71.IBPluginDependency - 72.IBPluginDependency - 73.IBPluginDependency - 74.IBPluginDependency - 76.IBPluginDependency - 78.IBPluginDependency - - - YES - AxisTicksInspector - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 83 - - - - YES - - AxisTicksInspector - UIViewController - - YES - - YES - back - minusTick: - plusTick: - ticksNegPos - ticksNegPosPressed - - - YES - id - UIButton - UIButton - id - id - - - - YES - - YES - back - minusTick: - plusTick: - ticksNegPos - ticksNegPosPressed - - - YES - - back - id - - - minusTick: - UIButton - - - plusTick: - UIButton - - - ticksNegPos - id - - - ticksNegPosPressed - id - - - - - YES - - YES - minusLengthBtn - minusPrim - minusSec - minusTer - plusLengthBtn - plusPrim - plusSec - plusTer - primLabel - secLabel - terLabel - tickLengthLabel - ticksNegPos - - - YES - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UILabel - UILabel - UILabel - UISegmentedControl - - - - YES - - YES - minusLengthBtn - minusPrim - minusSec - minusTer - plusLengthBtn - plusPrim - plusSec - plusTer - primLabel - secLabel - terLabel - tickLengthLabel - ticksNegPos - - - YES - - minusLengthBtn - UIButton - - - minusPrim - UIButton - - - minusSec - UIButton - - - minusTer - UIButton - - - plusLengthBtn - UIButton - - - plusPrim - UIButton - - - plusSec - UIButton - - - plusTer - UIButton - - - primLabel - UILabel - - - secLabel - UILabel - - - terLabel - UILabel - - - tickLengthLabel - UILabel - - - ticksNegPos - UISegmentedControl - - - - - IBProjectSource - ./Classes/AxisTicksInspector.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - minus_btn.png - plus_btn.png - separator.png - - - YES - {40, 40} - {40, 40} - {230, 3} - - - 534 - - diff --git a/test/ios/RootBrowser/AxisTitleInspector.h b/test/ios/RootBrowser/AxisTitleInspector.h deleted file mode 100644 index 1afc7f7874818..0000000000000 --- a/test/ios/RootBrowser/AxisTitleInspector.h +++ /dev/null @@ -1,31 +0,0 @@ -#import - -#import "ObjectInspectorComponent.h" - -@interface AxisTitleInspector : UIViewController { -@private - __weak IBOutlet UITextField *titleField; - __weak IBOutlet UISwitch *centered; - __weak IBOutlet UISwitch *rotated; - __weak IBOutlet UILabel *offsetLabel; - __weak IBOutlet UILabel *sizeLabel; - __weak IBOutlet UIButton *plusSizeBtn; - __weak IBOutlet UIButton *minusSizeBtn; -} - -+ (CGRect) inspectorFrame; - -- (void) setROOTObjectController : (ROOTObjectController *)c; -- (void) setROOTObject : (TObject *)o; - -- (IBAction) showTitleFontInspector; -- (IBAction) textFieldDidEndOnExit : (id) sender; -- (IBAction) textFieldEditingDidEnd : (id) sender; -- (IBAction) centerTitle; -- (IBAction) rotateTitle; -- (IBAction) plusOffset; -- (IBAction) minusOffset; -- (IBAction) plusSize; -- (IBAction) minusSize; - -@end diff --git a/test/ios/RootBrowser/AxisTitleInspector.mm b/test/ios/RootBrowser/AxisTitleInspector.mm deleted file mode 100644 index de621565cc01b..0000000000000 --- a/test/ios/RootBrowser/AxisTitleInspector.mm +++ /dev/null @@ -1,205 +0,0 @@ -#import "ROOTObjectController.h" -#import "AxisTitleInspector.h" -#import "AxisFontInspector.h" - -//C++ (ROOT) imports. -#import "TObject.h" -#import "TAxis.h" - -//It's mm file == C++, consts have internal linkage. -const float minTitleOffset = 0.1f; -const float maxTitleOffset = 10.f; -const float titleOffsetStep = 0.01f; - -const float minTitleSize = 0.01f; -const float maxTitleSize = 1.f; -const float titleSizeStep = 0.01f; - -const float totalHeight = 400.f; -const float tabBarHeight = 49.f; - -@implementation AxisTitleInspector { - - ROOTObjectController *controller; - TAxis *object; - float offset; - float titleSize; - -} - -//____________________________________________________________________________________________________ -+ (CGRect) inspectorFrame -{ - return CGRectMake(0.f, tabBarHeight, 250.f, totalHeight - tabBarHeight); -} - -//____________________________________________________________________________________________________ -- (id)initWithNibName : (NSString *)nibNameOrNil bundle : (NSBundle *)nibBundleOrNil -{ - - self = [super initWithNibName : nibNameOrNil bundle : nibBundleOrNil]; - - if (self) - [self view]; - - return self; -} - -//____________________________________________________________________________________________________ -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -//____________________________________________________________________________________________________ -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view from its nib. -} - -//____________________________________________________________________________________________________ -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -//____________________________________________________________________________________________________ -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return YES; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObjectController : (ROOTObjectController *)c -{ - controller = c; -} - -//____________________________________________________________________________________________________ -- (void) setROOTObject : (TObject *)o -{ - object = dynamic_cast(o); - - const char *axisTitle = object->GetTitle(); - if (!axisTitle || !*axisTitle) - titleField.text = @""; - else - titleField.text = [NSString stringWithFormat : @"%s", axisTitle]; - - centered.on = object->GetCenterTitle(); - rotated.on = object->GetRotateTitle(); - - offset = object->GetTitleOffset(); - offsetLabel.text = [NSString stringWithFormat:@"%.2f", offset]; - - titleSize = object->GetTitleSize(); - if (titleSize > maxTitleSize || titleSize < minTitleSize) {//this is baaad - titleSize = minTitleSize; - object->SetTitleSize(titleSize); - [controller objectWasModifiedUpdateSelection : NO]; - } - - sizeLabel.text = [NSString stringWithFormat:@"%.2f", titleSize]; -} - -//____________________________________________________________________________________________________ -- (IBAction) showTitleFontInspector -{ - AxisFontInspector *fontInspector = [[AxisFontInspector alloc] initWithNibName : @"AxisFontInspector" mode : ROOT_IOSObjectInspector::afimTitleFont]; - - [fontInspector setROOTObjectController : controller]; - [fontInspector setROOTObject : object]; - - [self.navigationController pushViewController : fontInspector animated : YES]; -} - -//____________________________________________________________________________________________________ -- (IBAction) textFieldDidEndOnExit : (id) sender -{ - object->SetTitle([titleField.text cStringUsingEncoding : [NSString defaultCStringEncoding]]); - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) textFieldEditingDidEnd : (id) sender -{ - [sender resignFirstResponder]; -} - -//____________________________________________________________________________________________________ -- (IBAction) centerTitle -{ - object->CenterTitle(centered.on); - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) rotateTitle -{ - object->RotateTitle(rotated.on); - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) plusOffset -{ - if (offset + titleOffsetStep > maxTitleOffset) - return; - - offset += titleOffsetStep; - offsetLabel.text = [NSString stringWithFormat:@"%.2f", offset]; - object->SetTitleOffset(offset); - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) minusOffset -{ - if (offset - titleOffsetStep < minTitleOffset) - return; - - offset -= titleOffsetStep; - offsetLabel.text = [NSString stringWithFormat:@"%.2f", offset]; - object->SetTitleOffset(offset); - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) plusSize -{ - if (titleSize + titleSizeStep > maxTitleSize) - return; - - titleSize += titleSizeStep; - sizeLabel.text = [NSString stringWithFormat:@"%.2f", titleSize]; - object->SetTitleSize(titleSize); - - [controller objectWasModifiedUpdateSelection : NO]; -} - -//____________________________________________________________________________________________________ -- (IBAction) minusSize -{ - if (titleSize - titleSizeStep < minTitleSize) - return; - - titleSize -= titleSizeStep; - sizeLabel.text = [NSString stringWithFormat:@"%.2f", titleSize]; - object->SetTitleSize(titleSize); - - [controller objectWasModifiedUpdateSelection : NO]; -} - - -@end diff --git a/test/ios/RootBrowser/AxisTitleInspector.xib b/test/ios/RootBrowser/AxisTitleInspector.xib deleted file mode 100644 index b448f4c72b5d3..0000000000000 --- a/test/ios/RootBrowser/AxisTitleInspector.xib +++ /dev/null @@ -1,797 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - YES - IBUIView - IBProxyObject - IBUILabel - IBUISwitch - IBUIImageView - IBUITextField - IBUIButton - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - - YES - - - 292 - {{10, 270}, {230, 3}} - - - _NS:544 - NO - IBIPadFramework - - NSImage - separator.png - - - - - 292 - {{84, 38}, {156, 31}} - - - _NS:310 - NO - YES - IBIPadFramework - 0 - - 3 - - 3 - MAA - - 2 - - - 1 - YES - 17 - - 1 - 1 - 9 - IBCocoaTouchFramework - - 1 - - 1 - 12 - - - Helvetica - 12 - 16 - - - - - 292 - {{10, 43}, {42, 21}} - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Title: - - 1 - MCAwIDAAA - - - 1 - 10 - 1 - - Helvetica - Helvetica - 0 - 15 - - - Helvetica - 15 - 16 - - - - - 292 - {{10, 203}, {96, 21}} - - - _NS:327 - - 3 - MCAwAA - - NO - YES - 7 - NO - IBIPadFramework - Centered: - - - 1 - 10 - - - - - - 292 - {{136, 200}, {94, 27}} - - - _NS:592 - NO - IBIPadFramework - 0 - 0 - - - - 292 - {{10, 238}, {87, 21}} - - - _NS:327 - - NO - YES - 7 - NO - IBIPadFramework - Rotated: - - - 1 - 10 - - - - - - 292 - {{136, 235}, {94, 27}} - - - _NS:592 - NO - IBIPadFramework - 0 - 0 - - - - 292 - {{35, 281}, {180, 50}} - - _NS:237 - NO - IBIPadFramework - 0 - 0 - 1 - Title font - - 3 - MQA - - - - 3 - MC41AA - - - NSImage - forward_btn.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{152, 153}, {40, 40}} - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - plus_btn.png - - - - - - - 292 - {{190, 153}, {40, 40}} - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - minus_btn.png - - - - - - - 292 - {{10, 161}, {66, 21}} - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Offset: - - - 1 - 10 - - - - - - 292 - {{92, 161}, {42, 21}} - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - - 292 - {{10, 112}, {73, 21}} - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Title size: - - - 1 - 10 - - - - - - 292 - {{92, 112}, {42, 21}} - - - _NS:327 - NO - YES - 7 - NO - IBIPadFramework - Label - - - 1 - 10 - - - - - - 292 - {{152, 103}, {40, 40}} - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{190, 103}, {40, 40}} - - - _NS:237 - NO - IBIPadFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - {250, 351} - - - _NS:195 - - IBIPadFramework - - - - - YES - - - view - - - - 14 - - - - centered - - - - 15 - - - - rotated - - - - 16 - - - - titleField - - - - 23 - - - - offsetLabel - - - - 34 - - - - sizeLabel - - - - 41 - - - - plusSizeBtn - - - - 42 - - - - minusSizeBtn - - - - 43 - - - - textFieldDidEndOnExit: - - - 20 - - 26 - - - - textFieldEditingDidEnd: - - - 19 - - 27 - - - - centerTitle - - - 13 - - 28 - - - - rotateTitle - - - 13 - - 29 - - - - showTitleFontInspector - - - 7 - - 17 - - - - plusOffset - - - 7 - - 35 - - - - minusOffset - - - 7 - - 36 - - - - plusSize - - - 7 - - 44 - - - - minusSize - - - 7 - - 45 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - YES - - - - - - - - - - - - - - - - - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 10 - - - - - 11 - - - - - 25 - - - - - 30 - - - - - 31 - - - - - 32 - - - - - 33 - - - - - 37 - - - - - 38 - - - - - 39 - - - - - 40 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 10.IBPluginDependency - 11.IBPluginDependency - 25.IBPluginDependency - 30.IBPluginDependency - 31.IBPluginDependency - 32.IBPluginDependency - 33.IBPluginDependency - 37.IBPluginDependency - 38.IBPluginDependency - 39.IBPluginDependency - 4.IBPluginDependency - 40.IBPluginDependency - 5.IBPluginDependency - 6.IBPluginDependency - 7.IBPluginDependency - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - AxisTitleInspector - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 45 - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - forward_btn.png - minus_btn.png - plus_btn.png - separator.png - - - YES - {180, 50} - {40, 40} - {40, 40} - {230, 3} - - - 933 - - diff --git a/test/ios/RootBrowser/ColorCell.h b/test/ios/RootBrowser/ColorCell.h deleted file mode 100644 index 1ebe9b20866d4..0000000000000 --- a/test/ios/RootBrowser/ColorCell.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface ColorCell : UIView - -- (void) setRGB : (const double *) rgb; - -@end diff --git a/test/ios/RootBrowser/ColorCell.mm b/test/ios/RootBrowser/ColorCell.mm deleted file mode 100644 index 21bb41b1e99ae..0000000000000 --- a/test/ios/RootBrowser/ColorCell.mm +++ /dev/null @@ -1,53 +0,0 @@ -#import - -#import "ColorCell.h" - -@implementation ColorCell { - double rgb[3]; -} - -//____________________________________________________________________________________________________ -- (id)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - - if (self) { - self.backgroundColor = [UIColor clearColor]; - self.layer.shadowColor = [UIColor darkGrayColor].CGColor; - self.layer.shadowOffset = CGSizeMake(4.f, 4.f); - self.layer.shadowOpacity = 0.4f; - - //Here important optimization. - self.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(10.f, 10.f, frame.size.width - 20.f, frame.size.height - 20)].CGPath; - // - - self.opaque = NO; - } - - return self; -} - -//____________________________________________________________________________________________________ -- (void) setRGB : (const double *) newRgb -{ - rgb[0] = newRgb[0]; - rgb[1] = newRgb[1]; - rgb[2] = newRgb[2]; -} - -//____________________________________________________________________________________________________ -- (void)drawRect:(CGRect)rect -{ - CGContextRef ctx = UIGraphicsGetCurrentContext(); - if (!ctx) { - //Log error: ctx is nil. - return; - } - - CGContextSetRGBFillColor(ctx, CGFloat(rgb[0]), CGFloat(rgb[1]), CGFloat(rgb[2]), 1.f); - - const CGRect colorCellRect = CGRectMake(10.f, 10.f, rect.size.width - 20.f, rect.size.height - 20.f); - CGContextFillRect(ctx, colorCellRect); -} - -@end diff --git a/test/ios/RootBrowser/Constants.cxx b/test/ios/RootBrowser/Constants.cxx deleted file mode 100644 index 2cc5b70922790..0000000000000 --- a/test/ios/RootBrowser/Constants.cxx +++ /dev/null @@ -1,90 +0,0 @@ -#include "Constants.h" - -namespace ROOT { -namespace iOS { -namespace Browser { - -/////////////Geometric constants for ROOTObjectController. -//'L' postfix is for landscape, 'P' is for portrait. -////Main view (self.view): - -//X and Y are the same for portrait and landscape orientation. -const float viewX = 0.f; -const float viewY = 0.f; - -//portrait - 768 x 1004 (20 Y pixels are taken by iOS). -const float viewWP = 768.f; -const float viewHP = 1004.f; - -//landscape - 1024 x 748 (20 Y pixels are taken by iOS). -const float viewWL = 1024.f; -const float viewHL = 748.f; - -////Scroll view: - -//X and Y are the same for landscape and portrait. -const float scrollX = 0.f; -const float scrollY = 44.f;//Navigation bar height. - -//portrait - 768 x 960 (44 Y pixels from parent are taken by navigation bar). -const float scrollWP = 768.f; -const float scrollHP = 960.f; - -//landscape - 1024 x 704 (44 Y pixels from parent are taken by navigation bar). -const float scrollWL = 1024.f; -const float scrollHL = 704.f; - -//Default pad's width and height, -//when not zoomed, without editor -//or with editor in landscape orientation. -const float padW = 600.f; -const float padH = 600.f; - -//This is pad's width and height, when -//pad is not zoomed and editor is visible, -//device orientation is portrait. -const float padWSmall = 600.f;//30.08 : I decided to make the sizes equal for all possible orientations and states. -const float padHSmall = 600.f; - -const float padXNoEditorP = scrollWP / 2 - padW / 2; -const float padYNoEditorP = scrollHP / 2 - padH / 2; -const float padXNoEditorL = scrollWL / 2 - padW / 2; -const float padYNoEditorL = scrollHL / 2 - padH / 2; - -//X and Y for pad (no zoom) with editor in portrait orientation: -const float padXWithEditorP = 20.f; -const float padYWithEditorP = scrollHP / 2 - padHSmall / 2; - -//X and Y for pad (no zoom) with editor in landscape orientation: -const float padXWithEditorL = 100.f; -const float padYWithEditorL = scrollHL / 2 - padH / 2; - -const double predefinedFillColors[nROOTDefaultColors][3] = -{ -{1., 1., 1.}, -{0., 0., 0.}, -{251 / 255., 0., 24 / 255.}, -{40 / 255., 253 / 255., 44 / 255.}, -{31 / 255., 29 / 255., 251 / 255.}, -{253 / 255., 254 / 255., 52 / 255.}, -{253 / 255., 29 / 255., 252 / 255.}, -{53 / 255., 1., 254 / 255.}, -{94 / 255., 211 / 255., 90 / 255.}, -{92 / 255., 87 / 255., 214 / 255.}, -{135 / 255., 194 / 255., 164 / 255.}, -{127 / 255., 154 / 255., 207 / 255.}, -{211 / 255., 206 / 255., 138 / 255.}, -{220 / 255., 185 / 255., 138 / 255.}, -{209 / 255., 89 / 255., 86 / 255.}, -{147 / 255., 29 / 255., 251 / 255.} -}; - -const unsigned colorIndices[nROOTDefaultColors] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 30, 38, 41, 42, 50, 51}; - -const unsigned stippleBase = 3000; - -bool deviceIsiPad3 = false; - -}//namespace Browser -}//namespace iOS -}//namespace ROOT diff --git a/test/ios/RootBrowser/Constants.h b/test/ios/RootBrowser/Constants.h deleted file mode 100644 index f59873a69a598..0000000000000 --- a/test/ios/RootBrowser/Constants.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef CONSTANTS_INCLUDED -#define CONSTANTS_INCLUDED - -namespace ROOT { -namespace iOS { -namespace Browser { - -/////////////////////////////////////////////////////////////////////// -//Pad's geometry: sizes, positioins. -//'L' postfix is for landscape, 'P' is for portrait -//device orientation. - -////Main view (self.view for ROOTObjectController): - -//X and Y are the same for portrait and landscape orientation. -extern const float viewX; -extern const float viewY; - -//portrait - 768 x 1004 (20 Y pixels are taken by iOS). -extern const float viewWP; -extern const float viewHP; - -//landscape - 1024 x 748 (20 Y pixels are taken by iOS). -extern const float viewWL; -extern const float viewHL; - -////Scroll view: - -//X and Y are the same for landscape and portrait. -extern const float scrollX; -extern const float scrollY; - -//portrait - 768 x 960 (44 Y pixels from parent are taken by navigation bar). -extern const float scrollWP; -extern const float scrollHP; - -//landscape - 1024 x 704 (44 Y pixels from parent are taken by navigation bar). -extern const float scrollWL; -extern const float scrollHL; - -//Default pad's width and height, -//when not zoomed, without editor -//or with editor in landscape orientation. -extern const float padW; -extern const float padH; - -//This is pad's width and height, when -//pad is not zoomed and editor is visible, -//device orientation is portrait. -extern const float padWSmall; -extern const float padHSmall; - -extern const float padXNoEditorP; -extern const float padYNoEditorP; -extern const float padXNoEditorL; -extern const float padYNoEditorL; - -//X and Y for pad (no zoom) with editor in portrait orientation: -extern const float padXWithEditorP; -extern const float padYWithEditorP; - -//X and Y for pad (no zoom) with editor in landscape orientation: -extern const float padXWithEditorL; -extern const float padYWithEditorL; - -/////////////////////////////////////////////////////////////////////// -//Editor's constants; -enum { - -nROOTDefaultColors = 16 - -}; - -extern const double predefinedFillColors[nROOTDefaultColors][3]; -//Color indices in a standard ROOT's color selection control. -extern const unsigned colorIndices[nROOTDefaultColors]; - - -//Constant for TAttFill, never defined in ROOT, I have to define it here. -extern const unsigned stippleBase; - -//This does not have const qualifier, but set only once during startup (by application delegate). -extern bool deviceIsiPad3; - -}//namespace Browser -}//namespace iOS -}//namespace ROOT - -#endif diff --git a/test/ios/RootBrowser/Default-Landscape.png b/test/ios/RootBrowser/Default-Landscape.png deleted file mode 100644 index 1f214c3f6ba4d9a77f7423d45020ff5e316b19fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597652 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�CqIt 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 `y1oQzTf5XYi}iiCQ8nZH0)hggGZ{r; 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

    ;j5LbMrv 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%0DKP^hioephDE7fCICRA0`-0{^PoHc1SWuSKmcw+ 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áge|{kb@Z0UNHEY*RO|4tIcB(Tn#_$#)3L$+> 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 diff --git a/test/ios/RootBrowser/Default-LandscapeRight.png b/test/ios/RootBrowser/Default-LandscapeRight.png deleted file mode 100644 index 1f214c3f6ba4d9a77f7423d45020ff5e316b19fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597652 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�CqIt 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 `y1oQzTf5XYi}iiCQ8nZH0)hggGZ{r; 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

    ;j5LbMrv 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%0DKP^hioephDE7fCICRA0`-0{^PoHc1SWuSKmcw+ zrWIHn>Vr@p2=61A7ASNkOWi4h;{jxVwEzH+4}L%Rb>KFU=Rp;q8i09EZHO?Q;X)Tv zh#&!hKn%ckBw$FKsTvHa!8kHxr@N)=)nJ0UHXOL$JljS6?J^5|^B7eN6v8Xh7*;MLa(U;;$}HX`7V zm(Z@LO3+}?M!*RRb?PI=p={UZ&8>f@ZPb7K_leI@-=b+ZJg`0M(mN)%opj9f8khGx z{LEgXONY)r#P2Py-qOG6snv7ljydVLaZa`H@KdYCkMBJ2;IaD*Ze4O!kxhGOpCj%X zJNjL#)-U_R)vFgQ*zf4$M!CwpW$|K$>gZ!;*^cRXK5`qF5hNRcKL}`m$OCXd4nW`y zfGNRl0c;5)5P+c856T0(1vm!+@Llj4;5$GHJO}I+u(Dug6LY&p8I%u$+klx+9s#ll z*^*{;r=T_fz6)j!kUPh&4-SLR7U9S;+#uiq6O@}7*n8eV z`yP8-uA|`8>!he&uD&^og>hjR*7nV-9>4e6mCGI)HF2MlF8JoSy=FO$8UVOX{m2tP z0)Xn(BX1#%{_f4!{`_NG*Ds&D=so+)Iq~g~POyvXKoSi?DSL22#MrA+Ymlb$J2p#MFYe>2NBOr*x|0bGF zXu58loJDC!o&umdFeulLV{!)KAggA7^TY#5QzUCiU#WaAB#lKxO;)P$A!-VqAS6tE z5Q2W-U}(Ra^dPMvnq*Ape#Q1t$*0FQrfG+#bTQa0w?*yqNDCrvnvHt##@}YZps-BY^I`X^wp#_km1Z)6kz}T^4qp>=`a)2>u zeemlZa&uV)kCbN-gQj_9>Z*}&HA7=$;-OI^GBQjLcBlZBf$t}|o&W$TJp@pMjYi7h z=T&w6hrR@a`COyF-vU6(a+L2Q<3ZOR5phq9(VAQSk%oYX!XS21O8H9pZ|e~O5dfGO z%gow{=r!D0dAsry1KWe`0Kh22p#_xZ!#1;A^7q?o+jl=b^2=A1F1zBy&z@a7T)<8k{I4>@8&bx_{>)T&YK*%1>nxpDOJ#&z2&Z2y_L{bm>Y>pc%VyQ-~FoG^1l zefzw6|D&0aKWgzWIQ#vRHf`zu{hyv$c*L0F-f@_Z_TTP#o-wv);mk(0*K?~Vi@*$! zrRX|X27dr#E66tR8c-bs^uc#P`M?dxw1z|R*bLgOfiS@;001Z-s{P=*AZ?Hq)T&VL z2eSk6oxrn@>wszns)N8dm<2!vZUejqFagLxx!}71Sr9e=0JFly@0CH-fn|Ukj;>({ zX^;>e00LM5R^WH%IganRuHz`>ks1W@fViUV9(32K7Xe)G*27mA`0a4Wg!~k+dwA)q z2OM@lsqN^_y~h}q?Yjs1t_J{bPQM?K8CIq`*!%QDH@*1O-Q)K@DFLMpPGSx+bLa zcrjw2#NE;a&%~s~m*yOxT zN!1W{Z}nYHfN2UFMmbV?*EmH4B8_jID4me}8&FDtY< zML*l5Q=vlLZDLD<`XnSpph8R~^CD{+e(5EOPFzVvB5N$8aH|6uO44Ib!T#np-cEee znh8EJLx#nUD zmn2J>CDS|H(Kju86Nae-LEbaIM8Y(@K&lZSbme=<_#1)9WAqV^0VzeH>m9vK>j5Gn;*#fDTM*HA zJ*VcY2KcJ#!yt#O2^~Ioer@Bx0jB!)$)mphmyzGUacjAI(YgE6K~tZ*dsVwft(}EA zGYYFVZC$af+&+HXq|QlW7<+Na#c?Z8jWTfL_1wp$;cKY#kWPn+&~-mP~$hRmEle`clXD+OUJ7dJuV0dnE>m|Nfg z;6NY0dEh&cX$3<715gBR1Kc`z4e%O}ZH0VCQV%c=b`csCaBILNgaOZ5qfQvWN>Cqw zT5l*5%eDb9Z~#03XafTHHSnvzOd!RvVHm=+vWy9Ugz=K1z7PR`kWxr#W-|e*V2lZl z#bGVO9OKi!y_kIBCTENj_)7W8^_8!^g94}eCV^vV+RAfZciHrf!|NQ6K^-BK%^Uk>MwqN&c-{91%kKg;p>9ZC| z(|VoWpl^5?07HAXF{GpB)S9r@J*4*;UObtWLd{aeLu9tNgNcGpR7v!^iQpAgv||o5b6B8h0MNW)sD+rZ7}+8uMGl2=vMkX}r((n6E;Bs5y6mHrFh4ZSYIukBK7eajVKn!utd>- z8j~uO|Gc9`mV5`AR2|WvCH6}~*wGN7Sznz_K!eosWx7ugYi{!=Z^Cvs$lEz{qPb4+ zef7KFUEb5v6TkvQlv3=y_uj`HcbwxmS6zMelTSRk-+ud@dFB}{EiJ)2tX#S3$}6v| zRLVymeax}PE=o=`L(?=xLS4X}gy1&i=EBYi@y(>M9sMTmGHQ2dMz3Bv;?5I-hyMA{ zmtf~R2s`;8cyst!L1Ut&lzHT?N1WT8%`b2EeD92N&&V)4@Kc2S015!-?$J-(3!np_ z3!nqQ0jL5nfC|8~07s<@gV%%pJyedFvPwuq{;8bw_`k#>qIUYhxgtVGPy6yj0R4li zpyBHHUcSDrzdw`;VV0kn276?1u4^I%iCqzzWvNWgDJezkYw*|G-)5fb*Zb^4E1_ z*1`o-&pYq1^&5JwyypG|M@>KVq;uqJmQ3E7$Rur?_&fo93jiPu00PFrbD&m%!Oh?!WLm&( z0Uy8vAb^SwUN0blC;<_8gMv9$)-uds=w^ipM5JED;e{a55rGsD`JM{^s_wm2CtL`F zbFps4(|^DD=blqL>YX2(e(>=#4nEd(8i+V-%wBh2|AWJhzp&UkVo%ZQ1APC1FI~%+ z03s`sU$ykX&e3}ve*A@lecRr~=syN0G3;VZ04aJ2o4tCXII0xJz~pTahSm=$+D)3= z9e*x0U7Aq`Z%7GqKKbi7YFE=@>g3`k_KsFzkbWpI!n!oHt{4iQAtZ~(2$$(xeA30! zQ9Lk9@&?k#P-lxLJ?L=zVrv|x6-$_EeK&V>5r9PCFhl7oRWHx(Emk|*7&hj1qtHDDyMBrJl46aq=$R}`p0 zx+8D8AcZESH0%V1?(|8{`3FAm!T6tl|NA{Z`N>buJMX+Fo_ONC^UnX{AOHCN_r1SX zs~vaTv1god=Epz&@lSs0QyVvIxbC_?GsYG#UOaW`w0rKkXVj=s!AWDtUMU23XNAfx zzy-e2e&KHHGVaEo?0(SiZhkbpwc>0f^fq~`pIJR+?a8qpxRYK!`FqOnFw+NVYex$nkt?Z+K4_2|!yRBN{XupP=#05u9f6sY`uU^~rhpQf3IDh(ai}rO~zgG7I57UnrC&?9nhZzBoRph!px*l_V zt{Q!SJR}Rn9doq6_rb3M2w+8M41m)OG7D${0=Nj3J}8&L9tmOucs1zn1>_(K(dd{1 zGZ|DZF<@FYVwNZak=Wy3_rVyKrro_|%_EEdux-Y;|AUK@PZCw>6{1HD_{-iHl`;v|BUr(@!ssr?KIzQdTv zuQh+0(S4HDHM9qZv9L7&-;6Yu#N>wv4$)37K4B3+8j6dl8IXEUgi~9jRaTL_Gf{y;V(Sxa9HRsrH+70p#3Y*?v_2uh zyAj4s%rr?qsrtxpVG%U_VG!%@$1wiZPuWPi_?S}eHBt#b)2-z zQFlVs5-32Y=QNF3lCw;jG?$RlonLAyP_;mfINVng(kC;YB-3FiC`qE>65?4DBBp&S z5&?%+XGM0s6qiQnKDDkOz&#=8``qU~*VEH;^UXH{z}LV2joGtj@4x^40ASnp8E2e% z#~pW^a>^->KJw_-zV@}i>gVvo51%k$!Y#Mle9=W8<(#iwyYBnn|2`igUQ|jMhH>t> z=eD=E!@nPI=EH}1Q|8Tk&pgP%+U09sTK>{=%bt^Hjy!$*LOD;o-k$s}9|d@cURrw7 z(h;LZj2|_@e!wc7_*yFfO3=UWSx71s+d}DFme>X~U}$m%oV_B3REi1VBY+|Z2tQUZ z5ZGl9*lXnirC#FP&tx3K@VdLR1enb@M0*}sE9Jw^twncU0yGB^AY$M*8X|zVXE0eX zJgqgV6FdFyzkBp0*LL3a^d~>G;Aw*2-}dzJvnL;a!v2-+@=c4M8)h4aA3k;L_>MKp zH$Cyfrjr)VJodx`$~E_<+n?y?o)q3k1vm?e3?z5DVu| zzu?@%*RAjV!!-{rJZk#LkuB9~19#9#2Lv)W8C(H+n9UH8r`(3iT#qS2@cMuh$QIz) z$P1_?ym2(TKs5jqSi?cK0&pMz6d>CG0h9yvE@=uolNG`MD7@-U|Jx9~GG>^W%3#lv z_x*Y0vWH4-BkfG##0$Re)GNUPt`7E2pLHw%`00o)rMw~8peUuuxBvo0zUMSv=aKoB z$k{;64@GBuLsO$rM;gtDRcmFYyPc$s&xxA4)JfoJgm88LPlT8%uUkJ-!mida8$qJ5 zO+?F0OpvB7u*Uf(Evi>1x`ht$sp1Gzl~Gb%3~|_@bk;#SyDR1Up7txH6omjOO$bP$ zf^|Hs5mzYAJ_8b{<4S!LqqngmooOs*jpCR!SdZ!UJS3j`u^*=HQlIjJ!qh2Bc2YCX zq_|{@SYC0`SLn$UPa5>`2P82JQEO)?aX5D`$0{( z9+KpYrlEKe=u7${Ogk#+b!KvQ^{E7;raW31N)$_|Z;(Mxm>QhyDNTmU|=AV&9t<%NGTmBv_bGZuU4xTizNW?eShrOv7i0y zXE^_N67bvR;Q*`#U;qxZwYBvQ^v<7ml#~`b#^jv6p;n{>)R^du7&+p_dfPKX(ZZvqd2k9m^uVygf4_OM79KVIediy(YE9RbS3j_D z{*2+nOO0LRTSaMnf+=AtumAxRWgQP2E_r@*ZC4F&`he%aXa@lB2O}YG6;vGv!0R^+ zW#_W2&=InA{*^&L02qetD{txJcP)A3mO`m>&e7)|@s1B4y6C;W=K@i=f18l@4zTLZ zAJVYyyY*N9y!F>J4?d1D{_MlI9J=T|3r_pA@3{c0<$3Ps3YjHycF3NQKDQ%prjCigqVYnmL*Vggs}$D z!<7ROX-PXf$ykao38YKH7y>|#$fDqA(w-033MGdov6CVlc@u@XUBnWk94*f{V+@F; zR&9L5LPISUIW6gfn&i;wO?^U5Ssq^Rlf+`3a+j(VG2)Y9+-8U;3i^bF0uC;v;^(yB zk5u5ptA5;n|NYlrfBgdwJ`g|i`Okm;#1l{W!hd|>z3+MNgAYD<_0?DZ`OkmO<#M0= zn<d!*~XLvb(>77C620gC|hxrS1E;A8|2KaBCf zTJ(*C9&r#sbL|0dX%GRcG@P;R8@}_d(VxGj_4>!aSHnJe{5c;V*7x+9tFO6#-s~yI zEtt-wxaXedTt!D7G3~u)&)HCMuKB|QbLUN6G=I9GXz@cYxsE^Ykh!fdJkN{&{pTAF znKx(lJC57Wcj2zPmk7ZZ&Y%9C^A2CPuKVh1A6z(p#tx?eJE;c%L74(f=?8ZQ$MG7T z;j&>V`#5C4Y(Uo%HOmx?<%6U8FOBWXB=u_I_R;!j7> zf~Fg$7>=jL9D0ye{09+Srsu~h+e!bj^k4bDdiTW&oNB}a;=05J|C&>UIS4ocq159Fh)3cKlw<&?}NLp-f zP-$rMA*PLMP_x?C*A(dC1xaP68COPVIVGgf2hE8*AYO>!fznL#wP8yW>y5%yop>xo zVE_SxHI>Vt$&-WKWHlX9uT( zKoJw%M*)h^ad;R67RUgIzaD(w)b-b1^7WV6+q~|cED`2&_18HEAf$-2a?df@QrW|$X-ZEo6^4Q9O?E^<1zyDch&#BeD8*hH{&;!RWn720|d-92u z+n%&fIb-(cKezhvN2mSyh80I0G4<4w=lVW9`0#Qm#q5Kp?7i3cwHvw~eRR#f`;0M6 z;kh1>+ATVM#QZfRH>3~fBY@|#x+fgZH`zc--fK1TnM}6kIR8SpKXBOyNHLEkdszAaP}9 z1iJJ&0aWSva^g%xsi@!>urZy~qwN!7QYxUn%X&aolWLh#xowGqYQ&O4fvH2F4MUo> z6dKfya4~5h5z>fuX!ZhX2?L>+8Pf>}I#?$?AE9|OaL1-csKakc45c*ls@N$=<1-Ox zOtN?sL6}YpNMU+?_nX{#s5xm^lQ)1CNj7v}bSVa=&=V#ksC2}cCPLA5zbv>wGGK(r zqH86?C{PXofu-f}q=H*0gm+OzN=4M6Hz3+)+}N?Gxzz^STP);C#hm_Y*^Dt|^5{tu z#|NxnO5}NOEW~ZvFxXKhQiL&H*M_A$eDQT|b{uU8J4Iu!?Z8Ec01?3hB!o!-Ie<9; zHo#KA)xc+QDLEpG%nRPgGc*EVG{8mx0k9EZDZl|yF}pkHUzC+&kRy_47M2nKYxB-n z$3r9-2p%Z`UL9az7;%BP3WLBx8Gs)KfxT+z@9!q`4_+d|w$^HQj{uVSy!(1;0Ax%H zAW@{~)oK8Cd(pAoc|Oh|2wo!P*J^`7tdcY=!^|+w!v(pguNvrhep_zC_s$#r#cNJn z-&1{T)fI#FtYsWKw(X3QXH{#?LyxT-z4wS&`;1{ytX#2W%l5%T_8D`^DF;!tao+Ex-2pa%BS@a>ffYrk~N%ZM?i{^VGe@z4PSb0AStv%>X!a`o4Qlnc8U7 zT(|D68C>^6yv7UUVTwEWLo}uiumrqt2g(R8r>YdcJ53Q4p^C<;NTK z>KPyY(c#CvztO0Y?>qkjF8;3#`lA$>%bJE+oH?y6pEoj=FipXEc!YdKjk;H@c>{w^ zZ(n0z(5cj2x2`;2#mAbOJ!e1{5K}@(z&NBeMpjLDmZGnClPf0>Xhd+Gr41>zOWI=w zn`O0ndp`oP3F$@art8@PI=J0Y_bs?AQM7n;pUt$e8Jqe}y89$1z3Pyjq4jFD?T^bT z9D1G8a+x6&x`i0ofNEWF(kcPcWCIvK)nq?N$)~1&En>z5cT&=3xO&Q(o?ojGfYQdF zNQuLKN z0E&c&K~qop4%iwhaq%nJ_pPEQB$yrwEWD zW>Eu+uhS{;Pg=+HRTKjlz&^y*eJ29|GE8Pg>Br{Bml3JZUo9kWya6MC48SyijQ{{( z06Yt@?`{+Tgn+&f71faBiIfNH&~}1u0}4Qr$2PyOb%7^Jt%gC_Jgyrs)G zcN8-dr;HfhS=_RHuxIV|8Iy(|b;R_Zy1%*NmD)4Yj+ije*!Nezz3-P-U(#Q$144Mw z;VdlcwNRu7ul|AS`o8b^J|QYZe51Z)Z!`4I1!-C%F&#+ZF z1KVWnZMpW`$Y0*_{as)7&pGyMtJd^y-csrIUC*b`)r3HIFxM4}3C%tFXDsB!9W}8v zW_$$p67Yz+MN0}vM?@PN7r%^MW`$VXm!d+f(1$Im!odGf=SB=lRT?V7Gpf<1370ndWk|J7GY|R<@X%gvPPO)q?u?0%;Usz1g)g-v_{afp}C*C?qzcv;2 z9F;{F**Qf)%xRw^3ex^|j_>q>oTycUFy_6$wJp8j~pMH;fu4O+~FG zB%|b*&6({j=7@WaIM z6Qr<)wT+%Se*a3j+CNbBJ!Tk;F{Ttm7i2CzwMqo{&4-Z>o%hDFGSqQwdRvQ{xK*3ph7l(?#XAKaMZEW_nPke;QOEy1i7@YtrB>h8wLQcZNm_O zF%X;y!6wX|vg^z1o_+lJ7r&i%&}>q%s`8ZpL{u9gW5^LXL&2HBnc&D7Fx1Hy<#J!6 z;Q@e@QcA-xq!8i_K_}w@S^;_h1i&D`a{veIvU&>8zpSX5Bwy~><+CYXG5DuXWC&n; zW*2;)3GOo%1c3$O;5|V25rTFG{e_6D0%e+BdwaRNJJ;WDmx?t-ZzI&Gd>;{mqHzyo zmJtDh@A;;cW1NSV{UDpxb?Vgt-*=^9Noh&L!jMM%8o?W@IjWRd|J`?u_`)^M-?MCj z;~#VBDQJp^?_4r|pxQp6bKm{PZCt+Tsio`o8de-VwyhJ{%GF)1BihGJ9%r|-6)gp^ecQ|AR938cF*tOOKJ|$HiH|(>NRz+&^eNK{`2qmUKJ-Xm z!KCq1XHGx3R`+WSRjK>cnyNIg-tZePxt{XX|Ak6`AsPZ@F*9m-<`pmddrz{;g9H72 zejmC73W-BPmB+ZTse!VzHA~!#rI_A>vHf~v$P&B{OA~6MK075KJMqt<7>vf6Q>Fu} zro^QPWrgJb2w>@SAkscu$7qR;Iqltpp}Ha5yqLltV(>`w5dS{Kp9mC)MHBA6Cc=dj zLQkrx5R@XO4TMsW1(?)gL;xrP>QX|%Py96FaK}gt9cxzOF1J2Qh>)qH>M`nL#gmALrNJD${V+#9D zZ~ejLp8>?^s~aL*9lx6GxoEr;Zj}f4Lf0B1fbHZKHfc&f0)owKbnQ)j*7^lYZ! z`=AsOK_mhk8jKYmdBzxV#yDp}fE4VPSN`T(KmIN<3`vE8iM)k^Gs#eJ6pV2OoM8mJ zquwBZQjSlT-*f%{-t{N)6uJI~&p7Y>r(KY>3%(BoEFL}XvJ!}?Sn-CT5KId8%PW7q zr#CF``$&K)#+8Y2EMp8fM=5dFm)AY}ARfp4MR#H1Y@tv;U*vyoZC`l zOi{3S#^9D@l4C@RCtr1St?%uvD#dcSLh!I{6k^XiIJpIPeQAB)-};|lv5a$mhH<7G zC!p<>djEBUd;#fzitWKw-SZu{QTNFeAJW-TLA`+B;jvwj7`u;5yPrO9%_Vd-1Wqa&P0ovkyN1 zb63IQUl>fb?7&Ey#a&QJ(0C42a(hd=cBi~Gw1$QidKlbo57 zTasCVTasDP7D~=UfV0EfUP52-iF~CzpFE`;PdVNd58w8?dvD4z^HXPC_|BtFB*ln0 zAPbX>cLE@SKI2=rVTt@d&@%4&^16o$07Z2*xM9O;$05tKi^WnQpSNw>FpS;!Tg3$D zrWAS8XwAw}Mr2K92_{15raZr=XUmo?gG%w17KbrzS!OT<*yB4QNiJ8*H?7z-b?me; z1w@3ooHICR_VwAN(%Yy8P|61)MD_-W3WBL^qdI713lQ1ea3;8&gG|0w>E}W+ zWQ|(Ib?Qp_LcSWxkf)RsYc4xy#5Zmj{?wZOi+*?AJN7&J9s3{pfurcT^?$o}>4fne z`yDvZt@~XyRV`OvT(kX>pZ^Xe=ceFUQ{*gJuteSxd5c?;nIgCdAjjmkNtDZ2D^{!- z7$^&YEv1Z<+_DVA_`hJ0jEIJrsSI{MdEfObpMRv(Hp0#nPCW0cu2WM=5vf|aZ`@vU z@+A{FEazw+V#_~q<5 z7k3n@D83fl8G}NLTSM=R5YKxP97Eyt69Sf}ugF*ADbMvUzxR*7z3VFF_!qwOf};*O zWqTj>mZ@5YhDXW=^)FtV5zs4M_DPkMH|TqVM2g5{B%`=o9gZj9D>fu-X1zuLY6p3= zP0$jXx{dnp5)HwkpaFu!&NPY^Ce&leFx8+=U>9jR5lVr&CgDgEVgubpH3gwHC)G$T zt+%iN(h0Op+GEt?$I@zI(CUZ~pGRdEHqBi`;(^noVQxD5I%o}mIHgK7qF2r})l;<6 z**?8PkAf{WBy=Z72IkS~_ua{PK?e zFuBBFEbngSf;9V-pr$fTo@5L;W1I)gT0<0UqctN7HqV*dlqh-J=g?HH$(JK)eMJp3 z0`e6p0$(Xlk?Z*lUp3tC-gf!VZoBeNU;c@~^MH~wgA2i!z$m&WAdE=Cq+~CySa#M$ z=l7QfQ81o0xMlE+A+iR~nj&j*TLw2g6hXTSQ!RFl{2GoUh=MDx@_g0sRKxYE&iC&8 z{kO0G_0K-~<^3k^?-OSzk#WX&lR3%TX~Q@H5|Qt}0;=A_S94$WReGSe?mDbkYyn_~ zGz??6J#+%1g5=zi+%`nc$TKRlI`EQuD2*UBF9S`FH{s9p1 z`JV-t0nk45+M_(bhMqx6G)Zm}T0cRGqZ*9#B!A=X-M(UiD-;w4fxQlgA4qZicQp_o z!bU@Kt_;I#Z}WP3Gd(?-*4FA(L9lzEe1DA!?X=E z6L?0ujaqfE7Z82V#ULAykYN0S6=e;n)?r)`1_~U9(&}} zlccEG=54n>GkVg<+4B!>Nc)s?Kfw&aZA0WOS;`nCTNX1SXEIv`jsKh!=TDk8Guz(X z-PhkgI5mYdaAUa}*=RC`GdV*W?53^0H6l0yzK<5d!(T zV?FHz5XPqUGz2@*(1V3TTJw;OjBQ#~JF#|4zgvQzQ$YaDFmLBTcqpW!=D#4)=O8+1 zhIC$v=2bK#h$}_qZ#r5U6dAh9n#E32nWg`x(A<2|#-6FPEJ(#mrI_)0#nI$qqmy_@ z(+fiw=?suc07lTP=P8!;p&m5WbW%~XFhy+(HPfBw=ulESQhEpD1woqIE2W!)m|i-l z#W5rvs_ArM03fDk_d+_V0g`;^CI*dW!LR3{rGl4X$X|tD*6=MjqU79`B4^2>E%Fw( z4U{}SY#*I?fX(GFVR!eG8+DfpfhHRe?#gQa(|udI8?}@HB545E^;O;Vs?Pbpy!6-a zy@XQ^nPnOo)3Sw-LU6_yXDB5z4F2wmFSzgV2T^d5HG*r0DA*!z$-K!kCbuL;yqBX! zPMB8gm@JCbYTfgE#<*!3WYDwy>+jyOv8z!HCO}D{5^s;=`E}2)Ha>UVkB^wR&wrfy zp}Hp-Go`SkA%n66LfSpB+XXR+GTQw+IQc zHz?^Z7;Gw~n+5HxJb?57NGTr~vvZ|*U`GVXcb)2Bqfz0)kkXW(K+&je8;NQ%Whxa=&6=U+bSiblE^E*aNY}Cr}#l$e}pvX~*8m^)WxUQcu3g7w6|2CXW_r7?~ z%jHcy(8vg5YRjV`q29Q^!mr zz_Hn)QsjGn15~e5TU+USp?_P|_fo5cfRv(O0_=LK?)f$6yNiEw&a7kh9eJ4309Q%n zOF)T?!~b!iHYPUaguqg|%`}XRT6mo!Vyu#2v_$Reh6ys^}obemaBVRLO~k@Ur-+Z08sAyva53=uEHeFf6EZko|2 z4Y3r`-YT&-3KTFbHY?J}_Hm0lnxlozHKEM`XEB#F_?&TO;qfO{-?e#biC@eEo(2Fzp!&yVQF>a|15cs2_9_^GATe3vn0>>DsRey{c!in4_y9@ zU!MOTwQ8loGo~AsC5$0sjB{p4wnsM1wvAlQy0A36bFbI3VV0M%?2J;9$ball_top= z!NJ~v{;qPluTmXsG^)Pu0f1>5rDAs2@RocobKYH7hNPjuq6nc$C3E@Vrwk5Ow`}Ph z7^r%l3Vt_OSH7=2*Q?c?M&0#1uOhrcflFyhAvq6Z4Y;S^Ry1Y_AJGtI2c|^Yos?eP zohI(MzQd1FOiCZoQwm*IFs61#1`xfZh*&n`RVu8fN4B(hJ8EI=0>SO9 zHwL9rE}OL@N+G2Rb)}RvENNIA4J3c#*G?P$U$++TUfTZ2E9#fM z`@Byczimy=op(Qf)ZCdf_M3L;HGg3S=eCqNOBQWeutm<~mSBYKj`HeF9Wv|{paq0mRrycCnY6{40R2Q83 zseAwO(|ToK(#*p>w=wiGafTy^0F5;u3ECWtEbXvC}|j$ zX$;ThrwkXEHdj24#KaTC(8Y@bUvATib0hyzF!3W)#{? zn4Al3JPzT7JoxbFpD~p-5|@Fm0>TmaemIPeji+BFJP&P-0?9)tEn%S(9YiC4Uy<*V zuOJwEBWJrMFehzh5_VBhGu4dXeL`)=6z4igU?n6>`lz~rN{mY>{mmt<*Q}FrlFn%u z4;;LUuG!VnV0BBD5SUVEA(Jp&Fis;TjIHdok|j)i)q}-=SZbmW1K{RV-iW}j2iwNB zI+Qr)Cunwu^rvK(LCdd=Q6x*@XG8!J2{=xw02a2x5u4`#dWJ$;Gl!^$VL_@6OL#rW zpTtSPqVdGjN^6X}*{HrAJiz0<3MwJ6$M}MIA1y?IgUyuZ4qetQ&pU*EfO zRnLpd`_^x+4^|lCoO6)E%Va7eR>PVNaNz#K&ljobA=Lgj<0;n%37Ae7)Z(X)P_kR7)QpjzaL-ohM8uTG3I*E zXh5|F{R7n7=U2+AUI*VJ05C1(x{7gS+jf0ZKT6IF!7ZVGM0`Sfd&@7qv~kPUfqKm| zq+uF{lrq#-5)cR?Zkbt`let{3SS)q4w-t&7(=_;Q>J9u?{uRTJ*{sc&Stw+4xr}XF zQcBL{5Qo#)l9UqrN7zMxfCfF9-fCa)dwsuOZQHoDqqW0Z;@eYf91a@piG8;y`Xm(| z5{|@q_^tL;82!r_auEubG;s?Kf2Fu#cvAWR-19hNWSYvd zyh_EaRLoqyhRI&+V4kfV2Q71AhfpzvMf?%DTqc{f zgM8v(qE)T*lk$tLBam^P$s5x4eYcn$#<>i&{D?uWuu{J7d!Fwq-w)g`I2S^iQkX&- zoJ&L`r997Z-MVSouG{cjhsX<<>xPx}J;!zGLKv=7cbu9x;H|#su+bUO{?C_NzIF48 zi;kOc;9iq2o}RCh$mgD0wKf|6Qck17IPSgIpyh&s*m`vulkrRe3gzX|TeG%r&4x;U8GW!# zD{GjRQ4`w+`St;KRA2p~y-&P%{S&vYc#4^kT0`*E)!r2U-2BYR!;e5u`HhC+K4WNF z+%$w?FjF$qV5Ve-L{l;;PzJYF9@YR+!2_;Ro$5ozByJI|x zfu#jUDbO;QWiZ=h8H?LyumMc);Bo|t!1u}VsNtwu!zTjMl*IG-!fy6tGzf=~=uwmA zbqsG=s>Q4qO7h!RpNUU0> z#I!Li31axBOLdciN28vk^}Rr00#lM19Lb}TafFsviy`ofKTc!FM;1kZ$aFqRx*~|` zjKq)$w6NK5JT7ANiJD(0AT|?*($!wG;Y%{=z#S2gQp6@m5IF4YQ=0nql-vuN^%k+k zlIAOgI`*b?Pe?P}*EcVbI1>z!bYPRGDx`l|OP|&!Q$y7(O+%-+64uR2Q-x6T!D*_a zF#XZm;OCXf07XiHB7r=^gvEqJo*`yBz?FmD{pOY~d*c><_?&%zv-YpDV98QO)Hv-jXHTXw4a=j3`)Pf1R<6ke5uH zyXN`L>(}>Gs=i?q+B;g?+dEs^+KR$SS;dWdL9#!Vpwp8BypvtdCRl2Y{A zH_UPK1u{*WbD7EH85g#lYwsB0I*#kPfla5B+_sHE-Y%8w^2%*IW5~QEiy4tOdB#Ad zooJ$Z-Sd5BnYnx})7jqIQYvM$St&)D%*ivMt-r*rs9bu1L4~%D>XqRxA{X zoM)KKT=}<~uDnkHtiSnhxBvdSYu9dE51J@2*@ZM1J$b>R^G`i<-obN83mHL7LEhl4`v(Un z9Xe}>2q*P;;hx7^idoLd_tAAl1CBjn&H8maw2poGpO5CV`2gQb*}!nZ zz=AOXB0pf!QEN7=+nMd`e$!^$b>(#$@ZyLNs?`w@@h^AY{`)^)`;UhoXgan@SVrP? z9Uhs(51MoCJ5P_TBzELHs~32Ph`+z?+P~a&`%XS3wSLBq7=8XJXMXI03&)QiJ}@xK zG_#)P1Oqfu3XuUa#+VR>$cm?yt@*?UKD)Ce^rxSGb;|e=2*8D`J9PPVcl`3o>zg)U z?g2A@_=O8S&v6_@LD|WU-KtdWq8UbIY|1+n`j=Kj|Z~wus{`koHt-&!z z!FXUTV9B6gzy#Bac_6yr@3(uEhTB(dbd}v3D(=8izv?{t$DdVeJ)Ya}eMc!3(Cru# zLKxDp48t;w%+~I~yY7ABnw#!ew|VRCtlLF%4icr}L3>YhYBjH3^PIZxILh~w?>Fh5 zkuxC;X=k2VvHrqu{%B{%@cQq4b?VsQyR0gX^S`(L{g>DNrRf+RIDP7w3r?nDp}$;F z9w^|!($N#UnjV~iW%AZyrnMl>|G+`W0vjKWlCj|GD#CIO6n+2mSM?20xeg7FDdNbO za$U~@t5C#O%&j0Ig}@BcF6LyG8znneGOaA<5>W|@JB;<$jI(FG^SXQP76mJq-mt*A zAt<#Z2gDc3+fV0?a;v`UFch|7w-s1>tJRX1)ymd~AG_zC`~LRAiWfqLeK?U|pmi;p zzDKk7JNWqdC-1+{5xs+6e?<*e{8~df4tP5$1A;5A6lj?|Z}UPkofzcY2GcBM@u~N~IXCpzf_cl%3uTCX;qI z#<5Nb!lN|8Orx-X%AMpmX><$S-xHd`cqui$z#&S7G;gMf<%G>d^(F#TjPfb%=&u{& zMCA!+(*)3rN#kA90>Usg9*Fos$suYE3IHSk5qXs+nYB7~Cm9!L(gg}{Y$?{ic9L`u zt%YYLPibyX=|7If#&Kj;DulK9Z6L`spmZ{vPK`m*5`7TU2O?$PG~^l5N;-;aP0~}N zH6wn~CCHIsY+@ob^hoFjiu71)Y?jODu@tfWl%_?{BJrAsGrRb%GDHSU0t4h0<2hg^ z=h8HJCTHdgg+i&d=DLk-1FGSYucE&QAyaU{n%Oa8V4yrOSd#{niY}t!9DZ}n|15dw zd2UIOGiAv(+j6ocEAtl5NR%NX|KdppZCKT{Woy~ue%x9U07l98UpGe&6RfPjoKQv%>E ztDl`aVlVDwlmf$$8Cx=D{`#ul?AC^@)HbYh`0!yPIy#3HOC{UN7^Y;%8E5gaR?1hT z$ajevuWG|wPZ40DK$&dbv@FxI^7(>N6hDH#mm#@na?8TT_Cb-iKoLs8Ou-D5BD)iC z&ZRVSdAn3>A2)hLM@L5?pEpdi8A^u+O$ke9w*;3Cz~$oPY>Nij(^TECw%kb&l3S6)1Y}Akp|<(jtfXuOmJo-gsb4j zKkSf^GxwQUsk?K&_>MK3)&r5q7|0nj1(PD^u*w#@r)OKW+CUVxZP~VM+qRUFv5;JK z-=hz`_fr@5mj`xe1sedhzzR09w+kfT>Tl0Ka@UfF0)@;a@B7Gy&N@H11@Z{k#SM&7 zq4>4We&Jg``$5nw4BocMSNrPQuf5=eGa3z)l35mKOf(u6qBKpPG4=cF{;4;?UL+VIxS z0Eio*_pFEqEHPQ-C;$8Ful?{lh@nNJ$eB!va8m_KJ|$T{v`v-2f5UIT_ov^G>woOD zlQNmMTD?q8RVmLfbB%h%a~o0?7~`a9@5z&Qv4kAp#bW1RrF!zmzPN6~mK`o3qdixv zIeoq5Mx(}#h%-{SighyJI6i@X(G z1Vq5{4Zpk)UX~wR{p9`Mew-ZtgC`#+3pNYK&M61Hp(LXe6*Ns&}&XOW5tj3KSt z4SJ$0>>{QSwz%e?&HzT0~ef)OjnMi_0dr) zHWJOQp4_G#fri!&|L zDmud)1qT8l5Y64+u>GtFjjBh)gpfiSA|p8CBIwp@7Y~LgI7)*HLCW#T@s;NXu?#!a z;4*F)hGp3q+sl=I`-&d}$8s5z>JapsxPx$yrXPed@K_H7e6ljjoINl3<3bo28MoOI}6l}bYh z)3S=0OtGbf83q7w-xojm-LC`Nc#$=O0KPy$zgdue9IknG@fiz_P>v)rip6X$mvP;k zQduccO8*Zx{4ung&ln?S6i)bPl>W5z61FRxh9FN9Gj6icOIHk%6qB4Wn+r@r>3 zE3Us57zQ@DEc_Ii@DB~aWaPseuOAiYFMV=-zv2D%(FcBg@87?9{<{vIJhtvun6L}2 zqZ+k-w^7Sv@}<^M!$uC<#S&V&W!>7IZQuLjjlRFrC1ecGb#?b{+0x}S>Xyax1)DQ& zS`rx>>MX_Vs%M z{iTcz#bVC3ip5gfl{en=onQW8kF48Y-ha=}|90oXnKQrkt~1rZAk~2g!1t584kBZG z+~|&7eGRv7S^q%qcdxt2S35n1=J34hlm~j(^$(y2d2SYwG0FJOx)6xWb80TK*_mCoFb>T3>zG*R?5|yOVVyI^p8FA_(z_+^M#emxhaybPh|NT z_D2GSKGVlsM1dDy;5g*?e%<}n_5YPY`TdW4SE306Q1O{UP61wGC^(u1D`Z4_NseeY zzkb=pk3RhkOmlOYoBnFy;mmc&iym*uOUd%_;m0*Jw8hld(>F#w1>+cD`VYr0iT z<$EO@l{gMI=&~}usp2a4Y5G6*( zSqpJHJx+okh?W9sN+VqceL~n23`4_x*{!#O%&zSz(-~RUW(@wwSl1qS^SX9W6G0qwAF~i3lJYo71YhOru zCk&$o3?O4D`Lf>42j?ev4M+KP zI5GDXn4l;av!n!Il80f#oH2tlV~DSLJoyT2G+f_zJiq4r=F!_<+`jJ8Q!fPIrfFN2 zZCR$2l5<8xC>S$^$XP~PRu*lZwYVuzF!I%%T}w7~bz7rKe$`Q~j|`b1xGj0c3=kwT zWO=!D>*oIchHd9FnGBKQoNd^=X~Eg2^j8L%A($z6#t>OkE)N78yH|69R=IA0BF;;Eptvg0RVVLa@&yk(5pVcuOaf|Y@g1N7)`}i5A;+$ zS3fcbwvAl2?0MJ4e7-nrm@9-ZO_RtB=84Zfzij?lCj&!fiU=i}B5ws$I%XN%6vs@N zF|nn!Gm{6T=eo8$wsqaM$Sa0oLq^wE4bQJR-@fbC z5IkebmWvIx27AYuAMYF3 zt#v!Iy%QNO>*;#Mb^BoV`UT(l_V>lx@J z7mD0MAx%>L?qB>$#Y|gk-2?E@7M4{gn%SI@vCUjYv=zj#R^tc%{r_(K+h0V+2o0cj zB%hv>AG2-6K>uL9;d5bom8#dt_Eefps;i>EXgey^b5l8Z;%dT2nlBnC5P!|;@81~|$_$`Q~^})`C{b${4CLAsVrZ_-A$l}hpme++E4vbsE zVWwDsIrWrW!i4dYqz^=i2eJAh_#C0}ZlVfI@2w~NAsjMl3B8<9`=n?R$KteI{rBS( z+n7QW&nO_pXo(dJX+96JNTkg)YEAUliH%Q`Je?dGNK_9gVpC!h8bE=0t4o%62ak3W9$5Rq|2IBcJTUU9?NIP$!@>oLR3W$KMg#`Aq8B-c_eXh)VOZ`NZ8fCpfN zyX*T3iB&6uugED2j%Pk&pFCm4!Vy#Y`pVU6O(_zB<@1?A!@KPNBelhnI zxt3pWAMRfH`-g5mW8eAZawVJ16$<%GCKrT51ym6xSXjtqjleRM6!o~S(UMVFLp3~7 zgd9-{W^f+CEF!2m?&i(giKK1k4MSR%@#wQpoptdC03dj`&=RU(i@e3NCN~8$_=HmX zXZJa*XLIlN?fvztgUFBV7~9@nDs>jW^Tge2277`aXFvcn0u$KqCS7$tchj#vdDJNj zr_bTswC!vrlQB&L5s#lY{~ZtCyLj2-0VzBfOvNTJ%Ju%SarxO}4szZ4;2<}Qf^GZR ztjiet>F<8S49+bfa%SjW6%_#C-+KPdYnLn-JGELx-{+=j`o7`179zi8@$F17Zc3gt zM9z{0TNEvkF@g!$1rzsQy?VozEfp!Vjyp`sY$juU;>^lhzF zs-PN$f*dwtT)vdaH9zw8|02)d)w(UV zd}{iEU7NbLZSAf0))Dcj{DjWV*4E+e-+%g{HRb+YtlKXyzUAUMN6Z;M+NsyM@+D&y zC)cS#6=c?aoyV|Jch;`mTK1Wv@&Y{~HS`+idv39H#QQI~GWci4HXps`cZRp}{11NR z6>aG~x8^pgo&z4*Alz4l{sEw+ls#ltsi&V@mF2RK&E~V&45|8k58d^(Yk#|O%f@h~ z5ghrf$xX?E8B28IUD!Fn-|TGKI?z7|AhV8#gH^S;yHU!IICkDC#Zu)=8@&c2A-HXuM-(Rw8($bZx^2xs*AJe&yGmX_c>*)KQ3W2;Md$ZV-}Hff z&*<;>m1}sE6NW8qyO80Xtwyc9>Vuy-H~3}+CfBl*kwseumy5_oVqC6x>X_-Rj?vRw zZZteZ%x0{%*8D2J@5+~+ta?sLg{Z52b|D8w3_GleWR^i>xzdEyG^%-uDw)u^W7LQ` zi#tyC)tL0CYcgXIZA#o4`2~fITg{)p$&Vjnv&JSb)7Y0jF&|2Vr{OkHoPUf%@E=Al zJE6WA6Xpx*GK8igD-@X^CHBw`zYv<%~9BLGBDGYjbSj_P00*#QLI^15v8n5Q`WUw?VM7y(2kyIO4f@QW=TZcD>rL7Ln(r;9sn>? zgqLhY;22mLh>RIvh2SEa&)6qSn7UUZw{qo{r?;)C*U7f?rIwBnBSv?049^#frfG$C zV^Ty@dyb*eK*9}BJ|J=_WvSHq(o1Uw1_l~VWBmB>fmMZJn#EFS%hs*Io|THFIdkVi zG;QMyg+Rf{kXhw;s_y!Ak2^kjJ}HhIlW1(l02C?T_Z_7?U=WNucd=o9uwjO;B<7;$|q-yp4cW@>-D-)iZLz(XN(7zz%Z49(xYd= z7z&h}S#o@~bk?MOM#@}Ye`Rp6R;x8?HK);VU6*=TrKP1UlgZ@sSyy@IeC8uTTPpy# zvL!1^w#->PW1!^7*;x~3Omp*(-M_4>Yp~JqIhVOy)^$y#8ouASbpMn7v0>>IPv5Wm zfdv2MrsTHd8RO@V-7&VUeMELxwOVzYVzHPvO$&g1{``;J`SAxlO9q4ZfC!EpgR#jY z+t!{vah6ixI1WG+px}A%^DBPSUo8i-dy!3s_{dp8gX9ba|NF)l=C@Dtyn3zXR4RTh z=W*`+;GT4pxiroST*DdoAYB5F9Ua$O?D z48v|~Z*}^r!u6w^!N>_x>&@3|&Wp=dZ(O&fcWamHDo|uF%oVaFS;%`+a+&(Y-}!NH zqD98o;krFz{FJ@w^1*wb+OnmqTB#vJ+ct`Y?BGDTT&{g`uLB%+0G7O zqQOL9w7Nq%uItnRfN{~^(_QZ0I-V;e0=uz7QvAyi}RlRb$>e}p4UZ30vF`f&?tQB7 zmRGIqa~oylxuk>;rEJEqEX%Sj+cYf8$Y#uzqHSgDz3tXB#`gc_vAe>=VlylnnZbkj z&5hOa=K5MeMc?5*`BE@TSfw2AY>{Vt<|33_1bo-vn^nq)m~hCj-OPS!^6b^iw?2FK zs_k9nTAc_u<1&-63x({+;iXTEJC+yvzy9E2jiH30^91h91_+yiRs)ch>S?CEQ3!`b z8HFABv=_bh);Ls2yaSIJ-CJE#)22*cb|mV>R3KB#zNWO~w@FYNL1@%N1uzYrQ|g11 z93Pus9dcwtco)SdV8S{|+gqkhcbfB;HRW{ttVrQ<-Ifw#+DhVPpJKAao0QBtP-6`d zqzyQAg+wA@h-g&-Qcj#XV})@zjfkOhe1aIJcMH;=NGa8I^O42GT)!!QOOL4|-DNZC zu@lAdx#_+>hPyD-GfC4dYha&J_OJA_=g}$h}p#wk+t`5P7 zR<>l7$)BRp4SOG~L#D&_Mz z(=-i3nx=4F@%`gI@TqHmzOuI~5JAT7tH=V88Un(78(%nS)PdD%gE3|phG`mxVePv1 z2>OfP+xO`H6$5Mkv30q>s(~J&2)H*=TDEN#3i*zX_F=<1OQq6xfA=e73=Jl-rqP-W z83lQZ+cMamgWE?=_lhsC*wouwMKn7*i|y?l?d@%aLLr;A4MQ4+IP1XCFRj|}&(+IB z!3qMT16vZ{$e0XTch@ev|6}_fS1#8a$0eec7BmcV%!pARJn^jG-hETT0}k}KLFSWS zk9My)&>qW}=XuI;fHC#+D}Tcz=Vo9Z8QjaoNt0*XzVRh(EQ=`E&8wc9KXMwmK-562 z`@Z*+-~De;>ac(Z99U0E9$ZI{E{*SA)8jb45Sd)AwY4?Z-fp_CweQrK%htUdeck-d+(X{`u%av*?aAC?|bz^iX=ka zPq$RwyYJp}_L;tGt?y7O=I=Q@{ZpTMPnhCMFS+Vzmt4B0wMGavIvPsp@7Qs9k|h0p zlq7MMX(5E~2kmyN)oL~xP0#ZX#hZWYzYfd83S{V^l0UoSs=8m>x^?6F^&6!On$1qV z-m2Fdz8~beWFg?CS3L7GH-Ehd@yNkV4pxK!fnPgu^an;a^m+*a1!34svgO1xl~d>s zo^s=<2TwfowSC_>In(X-06@xIm<~#bTHR|l>#bIx)A=;gL1$fkY)s@cX_pI<>!7tJ zpbQbD@})um>>WO%nxSe1ITuLQyn-cI{?)0Ivoq6Y=1-mRdT~8eP0wpL8lzL=YbM91 z)^GW<_kBqx87iUbzBf`IJa3;ezGi#m@7ep{iRsgE5;t4H=xDRkZnRqUdcD?c1v*Q9 zaL4X@?>qSQqlZ^GZ$EJVw_mgM@>GTdS(HK?MfFxYpT(Vh4X?WK%mXJLx_RI2CuVv} zJo{`9+e2gIDU zsAN6xN44;TY6LpTry2QkEoU_OvhJ&b*HrY9Ha9viR9har`{Z3m=jWC{W24?0sWnH# zdfN+XQhA;dzLG&ZsCk`wkTvV#)cmpiNA`Vf|2MyJ&s~sFPRc5{CsK%f%8~cr+M&_` z00>_J3Pb=;i5i?pXQt54Vx18}7=~W6)es;3~CHB>|g!Zhh-yBCNfzHT&4yvE?tgY zBUbxl#EmpUv8D`}$Xd4Mv=!mh9b`?Pasm^T5dh`)iK53_+WKQjzcK}ty+lbEIkv5e z%Jev6c}jU6opT}-vl(l^X^(?Blgv~`81ZvKY9esw09Ym#6P6(fhCzhHW6O-F0bM)Q z(s!w_q(+_{KxWKP5`l;*Fs$irDQ-55xmCGs57104sR+RaP6-6Wecid=xa+HwW-r{h z^Jy1eI64{=`L+5;r!(5=jJDdXdcEd(J^)^N$*zLyA`lG1c5m)`XCHj{fg^X{edu}5 zd)`eq{Qx4q=e_TH&wJkU{O3I{O|y$HzUV7o`O4V%cscq)S^89#+ANd;zWj}^LC#?% zf?Ra#x2YX0xf3xANo}2w%VB>JxXLKDhVf+>yR$dSkoCM@Pp-Mmmi~Bj1L4 zz20m#JDpam)qK}KeLyHFYra>`$MY@0GF|n$v5lvXETkzk8tt*M@%8IBOiisFA0KZv z8@a9*fV9qDcFlAC<>s$?{RWL`&;*S_`CWJd0^B`+0w7shT1=8m2PhQ1?jBqF z@gw_7pNT?}f=Yb;*q-NaxLgRGra(j=`_iWivUu74FWhMnfAoS~@#*gTe5|!MHrAe) zXf>NHrNS^w{`Y_VpU?S)7Z-vSRj4@3Y(IZ3#?k+~`LlodiH|08y>v0ky75b&@ys2U zUb%JS1zD!EEX%#E5K$?mlvK)-QhxDkU%hMJJ%yIEQ}ajbUZ<9$f8j|Yc-VTLptds;sKdnik@O^Kr)eP%lC-g?z&9O$U zxptyCJ~lEw@}7@>As=I^Ryg#$y{0pH{Ql{s#U-h5a%6OJvOPZD9_iF;^}zQ$&#wsp z-xJTiWY-sN`}PXw?LCV#$`^5(X8lM?QIC^MXM;O9bPbQ)d*p%p4xc_btK+m$4?3;7 zf+X~CVsdJxf2IfV#QN=?7kWW0Pg)Qto(MOWZU?a{TJ(aBb)(`hwE+Tm!+8*Qs^-~IWw zzxywaoqD)vLKXhVm&uu>Zu7hZpC23WIj1Io|B7sW(T0u&Mk&N>K}>*R1z?$2NIE_s|({ zr0$Q@^Q_E#Y&A?1hEB{b3fp5vmNjp!{3~{uNG8L{v^_x>(-T9lFBGvnCbe{KM8|!G zF{p_f))HDCJR#R47XX;W@uKmXB-Sn#c6$MBM47RWvEc&3h7^~PWF<5urV>W3MmBw9 z>quEKvLr^&aogKSHbJbEhZ-u3@%BN?=|BL=kkG9F85y&Og=VoF0Y=6#5(h5NpaJc0 z0nP=JD4>l#CYK6EMI~T91i6KN@r|V{oZR}17>U04g+Tie+{)C1Q*g6UQPTbeh9<*B)f2>|@>%YOg> z`cbkl-$%p~DmoS|+8R&8Mx%8i)2aT*y?6Xee8(UC(0_omE>)veZ`W!K-}jaB z5rrnW?#b5_su>MV&@y}77st=N{-zx}Q$H9f@-?-7)vI3h>Q}#d;C3vIPfx%1z3-Jm zB7*OW>#x6V>((ttjvx8*H@>EtVL_tJqg!1C?e^Bh{6e?e1*sW`M&j?ZEt*mmxmgf6WoJtku);;)yNr~S&v31LJ7o^*gh2Fx% znhDAXYXT)g22ej6{wGRPlG1CnTJ84O)YQ85>(@_Aj5V8i$JfSwXIb|2D{qKTE>c=L z8s)$;S3w}46epuDKo-aSrKP1_uNTKrtrnhbFhbj8Yk%)ySWshPVq8tG+c~vn{bZ-p zsn>J6PniQyrPNn%y9G4mPK&Y`s6sbcJ|huG(`MDWKkEiTyOw%9!=_Ttd;WX^;#H)s-_U-FTe8Ve)DhN zp4L1Ws@&6%@(4L89$cI`lFVGxUhn%-O7)Hp{(VmPk#(;yknzo#9HHZ`eg(@XP3 z%R&^D=tmy-_77crRUlLtX1CmP+dT&l+_)xPinDI~(Qn=Q zkzf3(jjo zq_pOHoqBDwT^p%48m&gH(fG!`2T4bXqS#a-}`7}iNzB~ z79RT6(L3g%UY}C(l|NorwxdD*qK?QqMuXYE?F*6TFD)h@op$R)Yd*9a0S&3nOQn4;VUMBBHuOq(j-m-ryV zYGsjtM~|_cbxFeo?#MgK=6#~5Fbb?)Iw1i=VN@0#$gP7MD}INv&ojS>u~-o8_W+@F z0U{n>HE5WMF0-r3y)qPk*RhlRPc^HVbF5sBKMe$FIe}c9)rD?3!b)UxIcJ1b>sa>Z zSlJyifxDbEMm%W@Dl9G%6=$4asT<#Z z`$PK4%EBx|qAU-O9E!6^ z>osfEy!=OhR4OGzo@gkP#NYqZw-p0fCDHK69Ux6t1#9m=b}EWQt)8U`C5e9dvtIat zFMjHrY*^(1pKseE*s#S@aiZ&<^gPc~s-PD<5uSbzqntxo4}wMj8o22bjGXO{HRW_2 zL^(3j85!xcTFqLm?)$!taxGjRB><(}sL;Qbd~}i}2_6w8CP@-S5n?}%qclym&X#wf zE*eH@3bN_7TAdb+u2<{VhwH{Sjx`z$&-1_rO^G60K%nqM-V_&shq)b|b>Jo`mG6i3 zI*g2rb~>GAvl)gp&r>Emp{xN=M`_kevZYwp6CHZO*QQC9xAV15`~7~Jra{o{_4;v~ zgn^by{=^Gj{N7K0bl;gH#Wv*Uj3;x#@!hA6UcLF^Fbv=MnGY>yk*xbNSLW0_5vXP@ zeAdQ`5XH0BU-b8Pem%#9g=@Y*RN`|7@BXpNZ}5Hb$y>i7>pmcenkT~2y+;W^e8q-c z(?@5bDE7Rt*&H7k8K0bNv|0h8pQavS&-40!_KR;LTKfC1edq)C-jaK72v6msfP906 zCuPIeNsZ!6C#jCIEJ}2groH$TzyIcj@Za+r|8xDsI;A|{5AtIH0GM}DL%#^d@}wbB zBLWB^1C@V;YKBE4R@=~{{5^%azAud>ky-X;;Lpy@FD`aHC6hSG(oAc;ic=^B#9BS@ zz1rAVV{)?7=`?D!K&j;tGs-BMbN3?BS=`HX1}Tu&z>JDEg9a*yC~}4KRtVwys#f!r zqLGpM_~cl--Kf=kM9i|Z-<^{}rb!Rr?B{K!bri?FejF$nC#lw&-0Y^IYna3dXdQa8 z)~GdJo7qO{+S zdrL{Tmn=RI9q1jqtD8izjuX`22{qz1n$1S1))=WZM(Xu;z1bY;G{!pN`ibzq{a^m| zKlsnai&NJ9oK#aNd4j@@vl-T&x?$@Dow2c?v2A3$?s-7)+RwiiikuSToxqz+w z`&(_&Dx_!XYYS-cHeyq zM~}x#T@eIvXQX%Fq1hu3iyyo4rVl;zg?%$8N_Cwq?CLxz1)>yjH~yR3KKAk*&s?03 zVn42DS)u=Duw*@gKCF(i^iGEMOfuXxS- z|Mi@07?gg|-`R!{1fCZJLCyCAPkH!6n1E}5qW~Fz0MG!J04M+-U<6<@!06dOAPjxq z&+Q$(ywN^5-^d>2yRC|+nZYEnYI9@c81@B6Y^sv)BI(yd=D z?D^76r-kr?w>A)QqiP-P&Ssg)Y4K^A5|I!>YxwWK@XIg#)n7=%DEHJis!$Z-vxoP; z>WZgjS@d^b{Df@yKu}n!*L>lt7hiPg+}sk8`r(VO`kOC*0klR>$(kn!WS~%rckj9F zWxKCQ)BcBV|B`A1fFSFIt$u!5K4aYl&3QO7*H6=2q}!gH?9^%<#AXl(#57H%5Y0wo z{?sY&`4_+7MLVtqNDs^%{nGLMx1Ky~LZE~v!IL8Ja(8*qTBn+lOea~^PqJ?O(*OA@ z@A!AWylw54AZRq3%`glv+qny+5IJ=xhyJ<0INC-m2$V{SK$T92gJU~HQC^1w{v_)~ z_|SvLy4`NO-AL1vXcc~1ngCEK6$W0drW%c~R`Y#dDfL*7>7*AF4+9N4R}<(=XX&*& zFFfmcdo=4eoAo3~JP#Z7P|0GV2>_l7w9W!A2y4xo@4V-%=j{d&Jk&ki>-FotO0z7V zh_2!?6rS(b>a`Fl^uSlxT{z(@iJ%u|rjw|PPYlA(&}ZXPH~#iLM;)& z|I2NQR3lLB(y}R6tputO)_(0NKd^Xw;h}@4PTVuUf9a6&)I;MZHgB5Ty>nx_80DR~ zqG*>x)3``$%2J)AI!>}{uDJU41K(zUl6z)aj@coa9~*Bk^dl8F$*XxP5KT^pqajNb;sQfVb(aWFzYyb4eUZ>_zv=Q@1j!@#W$M)W| zWoIMnL{XX%1(%K*lQd-ak|&XX2bWqnv_1Fst4i!eB-bG=fC{@N55eO zB?%$KZ~w_3E_XZ3UsrV2&d+xH{UitoR+ClCstdJ7d8a*`e$Y6WuYfLMM{8&Ah4UJcRqaZ#QahhGt~@%D8~?a`~Rtp^@k6i34)ps z!E3I5_B%fPQ4uK6lxv7{z5566xn*5rRJ8)_O904;0m7I0Y59!C#v>1$?)P=A7LJd1 zI-SWd9Bnj$MgtHrjy)l=W-|%Hrsw%5PKL9yb<)$5F!_U{%@>VarW7<9epaK8KXmWs zj~&R_%(**_@TtTNnU1rx8~@EWKKUy*{V2eE6pfCIj9hocl|?87GA%w^;$OM!`rV^z zr>AF6otj@*=%uOE5)3`^)6>U#y~WANmex9o;(kBw_hzSwd`}=Ylu|;j-2ERoi&S3j zmD%TyDGJq^QqVfqQP%5Wr$I@olQ>P1bg}!i%Xi)S;Daliw_lw;`lC}9<~BrS;&Q>L zB+#UjW_v@UIr*{AfBh`y?bN0-XXcj{yJ?(govl7)5)kqd)(^aPyU`wPwHkE+NpESc zHL}JF5~8IiDE!xS^3>AwiQcIhn(x&$hB+puy<6uXbqz0p$m6#BxGb>IKJ%YNXScRaZ7z=`A2ON%{J zUTti=Rqu>vVvWYJr3X*tW76EgvmzO{k94i$BxY$iCl-c9{pII|#_XS(VCMG#PC!uq~@Psty7i&J(#S;A|xt zgC8c3;4yJb!_BRE>{tk`o`AVS5mk6dE+LF(859u+MWtcl5O^ko-Rp99Sl}Au*=ban z=9GI-)*gkIDl_xRH${|#H{cNi>?CBd6~@q$WdJkRB4nqiU{@HfF8-_X5{RA<0%aXV zGlgKWAD*7`k4)p*Jl4@V<%AfvZs^R{nKAwKXuU?pZgOvPfL+Vp`u?lmuZ;qyEtZod8I>tFhVD1`_-)d;+H%^R(I?Jy65G4iHeoyn&rlMg<0Vqr1! z{8qEoX|>uxSd%g!QqOqGGk$Gp{?TukVCetm+i!mPzyGO6x?!z$r_&i}wpw9WlO^-v zaemDJ%mHKoR{?n6$p`%Px4!oCmp<)=ExU<=TCM1p8>&o>tL7FKp84`0K6LV!tOvqV z(zd+(oKq|7u=EBT_VUncsVHvaotPa3{i2lpZ zz5d1j@#iQlDPcLjWKW7)jvw0Ant0~A%hFUyDf0Fw5eXqn^e^A}f%kmmUq7W9LGC}} z7)+IqyBllkj~_bI?`Mrh-Sd2%@`!Pn=M# z5LJ%gy}X70@{6uGcI@>0eAI5sUQfLAs%O9R6CYoUdH{e*XkSVtP>OGzI(B?v-fPt| zKLLP30qjW-;-|JgX=Zw1X(>`lHJf9t)|&D0_Q;4I1b&hPo=0Jr0$`SfLSVZcwOZ-y zZ2k0^iOI>+z25x7!eX!2U0RC#MEv;H>wfX6&wcw>|K&3e?a3p1i(ufKL+B~t%X_*f z78hrFJ?i%(A|mR%?#F)muRr#FzW9uiM{m3HEC1!nr>_s&VW`v8PZFJHot8(zrk)5P zq!b4a9zA_}acZg!1X5t&3(pIc!de(iPPSXETHyOa$Q6x%23mput1mv!B@<8i0u`e0 z{Xm5^$}}j-;xt?8#-8`4m%ZpG{@_nmIB#z~acpaI0iHg$I9pJb>8UV6GxU7yQ-vr=X}t!UWGi=*nFJwYMrsVkmr~#b*?J_ z5Ga)&hIJ3ZmI_8|&CwuiNaf|xz-4(T5cAnfF@dRAfD4g(Mxn3pmb-4vW7@ngl-+dA3*Pa;zadTeNdiUNzC1+)o{E-!^(*iHFW0|hLo$A5LG@BE1BucT zD11-ULowR&rY6Eq{mY$i{j0yvV-|{WpTHGe1}*spZRRW5%v3axso=R+2Lvp<3kk}+ zS7RE)NiPNH!ooerf_Q>qhNDJxKqXO{+dLZ72S$yF+(;72tl}am%qACG6h@YzBB*jb z5VFq{C596=Y@m>E6|JH2;u-8zBWodx(ufGF+!z~+U=xYS!b|fJLKziv5hZOB%78H& zEovu=*qQgKlavO)Vzf%rB3Jf7WTn}rpUut~BIl4XT0Y18=*U56*f@ueXDrbOj00&A z2f@4lXjYjlRSb+$+mNVAO@*B-Gjm$w(Mn~|9Wcf|&#R#2=1)$K7j&|lUi!>K#}1<`vqGDJ*QxmR^VpO{!PGBR4LH$3HokXZ)jWW(kc=Rfl4PyEUM{fkGlVWXp?jYcyk zmOLRIeun{;O2W@~fO!O>6z}-v7vKK*Prcy6%YXKnKfJa+nR_WoDd!dzKK!Xq{I~!0 z*15%b;i)2Ht{s{=IGPqa!OyO{^w_~Oi;I!(H^Q(MhN18KLI_wLdYhR)v*+MG_zYgO z=AvU$M{oL1H@5s1hyVF~cK1cwf9G{?{%`O4^Q@o9IHfcLEy+v_5K)SE-*f9%?%V&i zm;7wqt9zalf&hvs#@xcU9bI@}%k!9j{e*VqB`OZI;p_i4+F%c*f;-e4UqoY(c1K~+P$QivCPOP~E+Yg+X z?)OE#E`8reRKN5?Kl$75`U@0TaDSCVCGMG>{&sRqH3Jc-g1hfaRB~&3?83D9(Co=1 z!A7G!F)^}sZL8I4O4&m6gCIjht<^(^k38jtH@*55Kk>%b{)bKLwoFW9BO|o9H0FC< zqFx-QX&M8NQlJzZdGL7e=!|LxvJt4dF9HRssFc7{Pa2z=o12@Pi@M!dDPJl1i$DJA zyC2$r>w|lAoEDzBB_)ptNbBFd`7`NK^yqpA-bX&R!g>3iz2Ew(_rUMI@P~v3(wXNg-}8Lm55h*Az{~!_uibs${VSih zuUWVK*aOE;PM=D8{gFl(`d(-v5x-+_eRgid6X1m?P%0$@Y^YkR-spt&mQ?;DV^b0l zL7GvLX1jLmzVG1&Ma@$UUpB1RJ&!ZpGjrnW&BIT>de`PHaW@K--)VP7$H&_BAbacE zfA2G2{cP^mE$abk4YVwaSrbKZw$w{!7UFuX_QqGf{!c&r*E&vgoa!VKnIr-BkF=nBopO@HVQ~a>8Of zIe~u&w==bY5x~u$TtBNm5TRySq=ohE&G zDxx_VxmLpDGMjps>=L;JlR{6ZugLU3E@mRtxK1!6|j?d#duWcp;ZVO{6hmtX(+ zz2A_vI4fPlNtS$5fx?#`IB?sWcfVk6KJNFIf*|+FQ@-y5s!V5_*Ie|u-~HR){lK4p z`Ov*UAPJ!Ch$A9+QWl<%Qr7&B-*@YWZ~s!d*w1>2juM?@#Z5F1Ef}fi>B6cJs8;B; z!`wn!gkEm@U02?lHe7Z1{*(7Ud?Jb<3|nL4Yo?~wuUR|Q>5PP7UC3PT{>0j_TCJ{> z_k?Kw_W=$A5WpIM@fF!QD-b6)LO<=sI!+-ELlEeVG-S=o zds;=vbTg2Fhe`rqLwf&y-Q_1AI5jiV7s78eTJ3f_FOya@Aa`D)?a|H+V`F0M5_K^) zu!XGw4NP8Cp1O6H z?x$b8`DV&A0H74Pn9u9fywQf&uBjqrQy}L1@}x5l&YV8I1mL&Zjq&lqlhpJ4lJtdA z3L^OvFL?2LKl8EuXO4(a6}e!tq|+eg^+5iOD8-96@0>n5-|ePBP^;HN&ua=%fBCas z^!`tOV&Cb*GW2BVXH|$$Una8V;?jX8WC-t+PG!?#{9W+@Ys<<$B*UqL|!Y@QQgaQ zKHZQ)KoO#iH;itYo<7sX_g>lK@fzY?(O~OYi5#FPz?c^x;Df>kLL(&CyN+bytE`N+QDf*VzjI4RNA-eLc6B zyy#g!^uOQxcEiXY6svsTzPsLg$1OomZw@B1rR4BKhYuY*M43i`vgXM~pjx471TysV zVQEErYQ_&)M%{iox0rbRmr6(a z0bK$jZ`iECB?=G5CDL}f_09-Vs)#G%yI^T%=6UA zC}YikR%w8fJIp)&B@?Us50+VgW;|1t75SHvaAFUfflH+T&k_MRw zplIJ)*>=8BuH3vVIBj4V^QA2fo_MH*O@lzDG2qAqD#~njcA6Aw5J&Xp7ykU~lG#7}^xu7J<|wra;$zi9B=l4(^v2?>8)v;(_fs9Glosrx zJguy>F!u`~V;N@N@ce(b{<8jáge|{kb@Z0UNHEY*RO|4tIcB(Tn#_$#)3L$+> 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 diff --git a/test/ios/RootBrowser/Default-Portrait.png b/test/ios/RootBrowser/Default-Portrait.png deleted file mode 100644 index 15824248138768ae48d1fe9c5090a2875202481d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582128 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

    ;j5LbMrv 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%0DKP^hioephDE7fCICRA0`-0{^PoHc1SWuSKmcw+ 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áge|{kb@Z0UNHEY*RO|4tIcB(Tn#_$#)3L$+> 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 diff --git a/test/ios/RootBrowser/Default-LandscapeLeft.png b/test/ios/RootBrowser/Default-LandscapeLeft.png deleted file mode 100644 index 1f214c3f6ba4d9a77f7423d45020ff5e316b19fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 597652 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�CqIt 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 `y1oQzTf5XYi}iiCQ8nZH0)hggGZ{r; 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