You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by fj...@apache.org on 2019/12/24 03:32:09 UTC

[druid] branch 0.17.0-incubating updated: Handle null values for metrics in TDigest aggregators. (#9073) (#9094)

This is an automated email from the ASF dual-hosted git repository.

fjy pushed a commit to branch 0.17.0-incubating
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/0.17.0-incubating by this push:
     new b41bbc0  Handle null values for metrics in TDigest aggregators. (#9073) (#9094)
b41bbc0 is described below

commit b41bbc089bd6123429f5ace8c6d67372a1a96015
Author: Clint Wylie <cw...@apache.org>
AuthorDate: Mon Dec 23 19:31:59 2019 -0800

    Handle null values for metrics in TDigest aggregators. (#9073) (#9094)
    
    Add support for rollup during ingestion.
    
    Co-authored-by: Samarth Jain <sa...@apache.org>
---
 .../tdigestsketch/TDigestSketchAggregator.java     |  19 +-
 .../TDigestSketchAggregatorFactory.java            |  45 ++
 .../TDigestSketchBufferAggregator.java             |  12 +-
 .../tdigestsketch/TDigestSketchUtils.java          |  13 -
 .../tdigestsketch/GenerateTestData.java            |   3 +-
 .../tdigestsketch/TDigestSketchAggregatorTest.java |  13 +-
 .../src/test/resources/doubles_build_data.tsv      | 800 ++++++++++-----------
 .../src/test/resources/doubles_sketch_data.tsv     |  40 +-
 8 files changed, 498 insertions(+), 447 deletions(-)

diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregator.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregator.java
index 9197923..d43b19c 100644
--- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregator.java
+++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregator.java
@@ -21,6 +21,7 @@ package org.apache.druid.query.aggregation.tdigestsketch;
 
 import com.google.errorprone.annotations.concurrent.GuardedBy;
 import com.tdunning.math.stats.MergingDigest;
+import org.apache.druid.java.util.common.IAE;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 
@@ -56,16 +57,24 @@ public class TDigestSketchAggregator implements Aggregator
   @Override
   public void aggregate()
   {
-    if (selector.getObject() instanceof Number) {
+    Object obj = selector.getObject();
+    if (obj == null) {
+      return;
+    }
+    if (obj instanceof Number) {
       synchronized (this) {
-        histogram.add(((Number) selector.getObject()).doubleValue());
+        histogram.add(((Number) obj).doubleValue());
       }
-    } else if (selector.getObject() instanceof MergingDigest) {
+    } else if (obj instanceof MergingDigest) {
       synchronized (this) {
-        histogram.add((MergingDigest) selector.getObject());
+        histogram.add((MergingDigest) obj);
       }
     } else {
-      TDigestSketchUtils.throwExceptionForWrongType(selector);
+      throw new IAE(
+          "Expected a number or an instance of MergingDigest, but received [%s] of type [%s]",
+          obj,
+          obj.getClass()
+      );
     }
   }
 
diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java
index 74caf61..dc93f75 100644
--- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java
+++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java
@@ -24,13 +24,16 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonTypeName;
 import com.tdunning.math.stats.MergingDigest;
 import com.tdunning.math.stats.TDigest;
+import org.apache.druid.query.aggregation.AggregateCombiner;
 import org.apache.druid.query.aggregation.Aggregator;
 import org.apache.druid.query.aggregation.AggregatorFactory;
 import org.apache.druid.query.aggregation.AggregatorFactoryNotMergeableException;
 import org.apache.druid.query.aggregation.AggregatorUtil;
 import org.apache.druid.query.aggregation.BufferAggregator;
+import org.apache.druid.query.aggregation.ObjectAggregateCombiner;
 import org.apache.druid.query.cache.CacheKeyBuilder;
 import org.apache.druid.segment.ColumnSelectorFactory;
+import org.apache.druid.segment.ColumnValueSelector;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -220,6 +223,48 @@ public class TDigestSketchAggregatorFactory extends AggregatorFactory
   }
 
   @Override
+  public AggregateCombiner makeAggregateCombiner()
+  {
+    return new ObjectAggregateCombiner<MergingDigest>()
+    {
+      private MergingDigest combined = new MergingDigest(compression);
+
+      @Override
+      public void reset(final ColumnValueSelector selector)
+      {
+        combined = null;
+        fold(selector);
+      }
+
+      @Override
+      public void fold(final ColumnValueSelector selector)
+      {
+        MergingDigest other = (MergingDigest) selector.getObject();
+        if (other == null) {
+          return;
+        }
+        if (combined == null) {
+          combined = new MergingDigest(compression);
+        }
+        combined.add(other);
+      }
+
+      @Nullable
+      @Override
+      public MergingDigest getObject()
+      {
+        return combined;
+      }
+
+      @Override
+      public Class<MergingDigest> classOfObject()
+      {
+        return MergingDigest.class;
+      }
+    };
+  }
+
+  @Override
   public boolean equals(final Object o)
   {
     if (this == o) {
diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java
index 3a9eb14..be65896 100644
--- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java
+++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java
@@ -23,6 +23,7 @@ import com.google.common.base.Preconditions;
 import com.tdunning.math.stats.MergingDigest;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import org.apache.druid.java.util.common.IAE;
 import org.apache.druid.query.aggregation.BufferAggregator;
 import org.apache.druid.segment.ColumnValueSelector;
 
@@ -66,14 +67,21 @@ public class TDigestSketchBufferAggregator implements BufferAggregator
   @Override
   public void aggregate(ByteBuffer buffer, int position)
   {
-    MergingDigest sketch = sketchCache.get(buffer).get(position);
     Object x = selector.getObject();
+    if (x == null) {
+      return;
+    }
+    MergingDigest sketch = sketchCache.get(buffer).get(position);
     if (x instanceof Number) {
       sketch.add(((Number) x).doubleValue());
     } else if (x instanceof MergingDigest) {
       sketch.add((MergingDigest) x);
     } else {
-      TDigestSketchUtils.throwExceptionForWrongType(selector);
+      throw new IAE(
+          "Expected a number or an instance of MergingDigest, but received [%s] of type [%s]",
+          x,
+          x.getClass()
+      );
     }
   }
 
diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchUtils.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchUtils.java
index edfd148..3a5be13 100644
--- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchUtils.java
+++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchUtils.java
@@ -22,7 +22,6 @@ package org.apache.druid.query.aggregation.tdigestsketch;
 import com.tdunning.math.stats.MergingDigest;
 import org.apache.druid.java.util.common.IAE;
 import org.apache.druid.java.util.common.StringUtils;
-import org.apache.druid.segment.ColumnValueSelector;
 import org.apache.druid.segment.VirtualColumn;
 import org.apache.druid.segment.virtual.ExpressionVirtualColumn;
 import org.apache.druid.sql.calcite.aggregation.Aggregation;
@@ -80,18 +79,6 @@ public class TDigestSketchUtils
     return intermediateSize + 1000;
   }
 
-  static void throwExceptionForWrongType(ColumnValueSelector selector)
-  {
-    final String msg = selector.getObject() == null
-                       ? StringUtils.format("Expected a number, but received null")
-                       : StringUtils.format(
-                           "Expected a number, but received [%s] of type [%s]",
-                           selector.getObject(),
-                           selector.getObject().getClass()
-                       );
-    throw new IAE(msg);
-  }
-
   public static boolean matchingAggregatorFactoryExists(
       final DruidExpression input,
       final Integer compression,
diff --git a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/GenerateTestData.java b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/GenerateTestData.java
index b6a2392..0d5f66a 100644
--- a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/GenerateTestData.java
+++ b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/GenerateTestData.java
@@ -57,7 +57,8 @@ public class GenerateTestData
         buildData.write('\t');
         buildData.write(Integer.toString(product)); // product dimension
         buildData.write('\t');
-        buildData.write(Double.toString(value));
+        // make 20% of the values null
+        buildData.write((rand.nextInt(10) % 5 == 0) ? "" : Double.toString(value));
         buildData.newLine();
         sketch.add(value);
         sequenceNumber++;
diff --git a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorTest.java b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorTest.java
index d5577b9..a2220e6 100644
--- a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorTest.java
+++ b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorTest.java
@@ -20,6 +20,7 @@
 package org.apache.druid.query.aggregation.tdigestsketch;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.druid.common.config.NullHandling;
 import org.apache.druid.jackson.DefaultObjectMapper;
 import org.apache.druid.java.util.common.granularity.Granularities;
 import org.apache.druid.java.util.common.guava.Sequence;
@@ -136,8 +137,8 @@ public class TDigestSketchAggregatorTest extends InitializedNullHandlingTest
     Object quantilesObject = row.get(1); // "quantiles"
     Assert.assertTrue(quantilesObject instanceof double[]);
     double[] quantiles = (double[]) quantilesObject;
-    Assert.assertEquals(0, quantiles[0], 0.05); // min value
-    Assert.assertEquals(0.5, quantiles[1], 0.05); // median value
+    Assert.assertEquals(0.001, quantiles[0], 0.0006); // min value
+    Assert.assertEquals(NullHandling.replaceWithDefault() ? 0.47 : 0.5, quantiles[1], 0.05); // median value
     Assert.assertEquals(1, quantiles[2], 0.05); // max value
   }
 
@@ -192,8 +193,8 @@ public class TDigestSketchAggregatorTest extends InitializedNullHandlingTest
     Object quantilesObject = row.get(1); // "quantiles"
     Assert.assertTrue(quantilesObject instanceof double[]);
     double[] quantiles = (double[]) quantilesObject;
-    Assert.assertEquals(0, quantiles[0], 0.05); // min value
-    Assert.assertEquals(0.5, quantiles[1], 0.05); // median value
+    Assert.assertEquals(NullHandling.replaceWithDefault() ? 0.0 : 0.001, quantiles[0], 0.0006); // min value
+    Assert.assertEquals(NullHandling.replaceWithDefault() ? 0.35 : 0.5, quantiles[1], 0.05); // median value
     Assert.assertEquals(1, quantiles[2], 0.05); // max value
   }
 
@@ -256,8 +257,8 @@ public class TDigestSketchAggregatorTest extends InitializedNullHandlingTest
     Object quantilesObject = row.get(1); // "quantiles"
     Assert.assertTrue(quantilesObject instanceof double[]);
     double[] quantiles = (double[]) quantilesObject;
-    Assert.assertEquals(0, quantiles[0], 0.05); // min value
-    Assert.assertEquals(0.5, quantiles[1], 0.05); // median value
+    Assert.assertEquals(0.001, quantiles[0], 0.0006); // min value
+    Assert.assertEquals(NullHandling.replaceWithDefault() ? 0.47 : 0.5, quantiles[1], 0.05); // median value
     Assert.assertEquals(1, quantiles[2], 0.05); // max value
   }
 }
diff --git a/extensions-contrib/tdigestsketch/src/test/resources/doubles_build_data.tsv b/extensions-contrib/tdigestsketch/src/test/resources/doubles_build_data.tsv
index 56eda05..3f37059 100644
--- a/extensions-contrib/tdigestsketch/src/test/resources/doubles_build_data.tsv
+++ b/extensions-contrib/tdigestsketch/src/test/resources/doubles_build_data.tsv
@@ -1,400 +1,400 @@
-2016010101	0	4	0.18400342240873802
-2016010101	1	4	0.6865245424441776
-2016010101	2	4	0.7739519201819897
-2016010101	3	4	0.5856367722263963
-2016010101	4	4	0.7975517383656839
-2016010101	5	4	0.43358568598862635
-2016010101	6	4	0.12275185396963084
-2016010101	7	4	0.9993974605827314
-2016010101	8	4	0.4874039882191328
-2016010101	9	4	0.5692609022340854
-2016010101	10	4	0.26678754447065534
-2016010101	11	4	0.1989527055444228
-2016010101	12	4	0.9110129077294297
-2016010101	13	4	0.5538363335848467
-2016010101	14	4	0.10562455403723603
-2016010101	15	4	0.6935674808894914
-2016010101	16	4	0.4726911873373467
-2016010101	17	4	0.11900464634546115
-2016010101	18	4	0.4559981547074664
-2016010101	19	4	0.904574218307998
-2016010101	20	4	0.9776521615693896
-2016010101	21	4	0.2539035002418517
-2016010101	22	4	0.20805734530287534
-2016010101	23	4	0.41417993613962933
-2016010101	24	4	0.4952370716312732
-2016010101	25	4	0.07011744863814762
-2016010101	26	4	0.4531974535282244
-2016010101	27	4	0.6424395861589562
-2016010101	28	4	0.7228621538271517
-2016010101	29	4	0.5843296221504063
-2016010101	30	4	0.331742294401003
-2016010101	31	4	0.8294570315308673
-2016010101	32	4	0.9120986646735282
-2016010101	33	4	0.2286300818426008
-2016010101	34	4	0.8624446565970323
-2016010101	35	4	0.5343087459095744
-2016010101	36	4	0.4130981692773146
-2016010101	37	4	0.6713822529812259
-2016010101	38	4	0.6359244178847552
-2016010101	39	4	0.8614097204164315
-2016010101	40	6	0.855433193186756
-2016010101	41	6	0.5494808135474287
-2016010101	42	6	0.2494867642163876
-2016010101	43	6	0.44676257684891874
-2016010101	44	6	0.26941623048140995
-2016010101	45	6	0.24707447705353103
-2016010101	46	6	0.7763084722362548
-2016010101	47	6	0.7197776524998396
-2016010101	48	6	0.8547881573358272
-2016010101	49	6	0.04962070578119382
-2016010101	50	6	0.8577013635322285
-2016010101	51	6	0.3248850193586539
-2016010101	52	6	0.7099486817951516
-2016010101	53	6	0.9086831898801163
-2016010101	54	6	0.25911405409920296
-2016010101	55	6	0.48594375975487214
-2016010101	56	6	0.6328081792059475
-2016010101	57	6	0.2541410518420717
-2016010101	58	6	0.8855225528099031
-2016010101	59	6	0.8947324865996268
-2016010101	60	3	0.4115770024239612
-2016010101	61	3	0.407209253168066
-2016010101	62	3	0.20712349395555596
-2016010101	63	3	0.9019620910065339
-2016010101	64	3	0.9024166734838822
-2016010101	65	3	0.9229600784866859
-2016010101	66	3	0.985147872082527
-2016010101	67	3	0.10673099772511685
-2016010101	68	3	0.5996259775565335
-2016010101	69	3	0.5326920547476084
-2016010101	70	3	0.2908715666501662
-2016010101	71	3	0.9554390881150112
-2016010101	72	3	0.36984132919562984
-2016010101	73	3	0.2817272979933143
-2016010101	74	3	0.739014257182305
-2016010101	75	3	0.4547691759148418
-2016010101	76	3	0.5517497118489398
-2016010101	77	3	0.2277857035162798
-2016010101	78	3	0.8173939363090669
-2016010101	79	3	0.3930423279427335
-2016010101	80	6	0.9919726250736455
-2016010101	81	6	0.7670059532445269
-2016010101	82	6	0.042563956599481534
-2016010101	83	6	0.9637944309418425
-2016010101	84	6	0.7332037660613114
-2016010101	85	6	0.4426495381649056
-2016010101	86	6	0.7166993196134611
-2016010101	87	6	0.24743532603299845
-2016010101	88	6	0.4799158294749326
-2016010101	89	6	0.6653475668391361
-2016010101	90	6	0.775227487806507
-2016010101	91	6	0.6351773012367866
-2016010101	92	6	0.11859244615305142
-2016010101	93	6	0.47937789482404425
-2016010101	94	6	0.9176591572395486
-2016010101	95	6	0.31531929207681375
-2016010101	96	6	0.2620957460429699
-2016010101	97	6	0.48434732612327625
-2016010101	98	6	0.5404432154037893
-2016010101	99	6	0.0756673384583817
-2016010101	100	2	0.03467763042527283
-2016010101	101	2	0.6599322068206671
-2016010101	102	2	0.5851566930666781
-2016010101	103	2	0.9289365437820967
-2016010101	104	2	0.18676909308684186
-2016010101	105	2	0.9879999829181275
-2016010101	106	2	0.5989887945104968
-2016010101	107	2	0.5116753904494058
-2016010101	108	2	0.47180963140539234
-2016010101	109	2	0.3817179664370707
-2016010101	110	2	0.43867514596244317
-2016010101	111	2	0.8682947779291971
-2016010101	112	2	0.4531002982651964
-2016010101	113	2	0.4137446783476031
-2016010101	114	2	0.7828722097979959
-2016010101	115	2	0.7544029243316186
-2016010101	116	2	0.8073610464180303
-2016010101	117	2	0.3988232509895424
-2016010101	118	2	0.7420954813030962
-2016010101	119	2	0.9682767534483183
-2016010101	120	5	0.932266170435191
-2016010101	121	5	0.9442118007962537
-2016010101	122	5	0.3459369305182035
-2016010101	123	5	0.7353091264347587
-2016010101	124	5	0.09173481217567525
-2016010101	125	5	0.4841125699937996
-2016010101	126	5	0.09980357210224322
-2016010101	127	5	0.6310323689510959
-2016010101	128	5	0.5150126421118538
-2016010101	129	5	0.25952271088776446
-2016010101	130	5	0.5831931427843442
-2016010101	131	5	0.4857630294618446
-2016010101	132	5	0.1236953097751542
-2016010101	133	5	0.26865146249505867
-2016010101	134	5	0.758753349838143
-2016010101	135	5	0.4470022609108373
-2016010101	136	5	0.17341364635583423
-2016010101	137	5	0.7912507932298367
-2016010101	138	5	0.5888308222727439
-2016010101	139	5	0.3588616442423166
-2016010101	140	4	0.17634206104241368
-2016010101	141	4	0.5410328570948041
-2016010101	142	4	0.37692978933091825
-2016010101	143	4	0.7141908938615491
-2016010101	144	4	0.07267656582545412
-2016010101	145	4	0.8558523550312013
-2016010101	146	4	0.9813834781771359
-2016010101	147	4	0.8901977712477311
-2016010101	148	4	0.9560822202831745
-2016010101	149	4	0.3835659668522904
-2016010101	150	4	0.24970317775825412
-2016010101	151	4	0.23101157937207617
-2016010101	152	4	0.9962568046377394
-2016010101	153	4	0.8361247330090413
-2016010101	154	4	0.840684054948499
-2016010101	155	4	0.9052044460975798
-2016010101	156	4	0.6463926661125562
-2016010101	157	4	0.04411048858353084
-2016010101	158	4	0.38084927682182457
-2016010101	159	4	0.9341567696712807
-2016010101	160	2	0.6444600998039801
-2016010101	161	2	0.9959038761023891
-2016010101	162	2	0.6277409184324876
-2016010101	163	2	0.15567670882328122
-2016010101	164	2	0.9399539050143508
-2016010101	165	2	0.9427950658336692
-2016010101	166	2	0.32695366924165714
-2016010101	167	2	0.06494423391083837
-2016010101	168	2	0.7350656166921584
-2016010101	169	2	0.6597571880397293
-2016010101	170	2	0.6232896262457435
-2016010101	171	2	0.3991049576034902
-2016010101	172	2	0.030384991176152565
-2016010101	173	2	0.31798195313124733
-2016010101	174	2	0.35924006958852484
-2016010101	175	2	0.6967463287336736
-2016010101	176	2	0.48130500580323377
-2016010101	177	2	0.6307327262923675
-2016010101	178	2	0.8278978150044358
-2016010101	179	2	0.18235069592612707
-2016010101	180	6	0.33506690463108024
-2016010101	181	6	0.7467491419926762
-2016010101	182	6	0.935716427990453
-2016010101	183	6	0.27312535493840295
-2016010101	184	6	0.08411352680155793
-2016010101	185	6	0.7286593203874426
-2016010101	186	6	0.4944768219354745
-2016010101	187	6	0.3657278465928795
-2016010101	188	6	0.9032089768136577
-2016010101	189	6	0.07319490990372934
-2016010101	190	6	0.2711714964325377
-2016010101	191	6	0.43076666049459356
-2016010101	192	6	0.3929942938831871
-2016010101	193	6	0.06702713588446585
-2016010101	194	6	0.2880711799296227
-2016010101	195	6	0.2753747150639939
-2016010101	196	6	0.4504200108910671
-2016010101	197	6	0.785606159065031
-2016010101	198	6	0.6424553371008628
-2016010101	199	6	0.03389914063403954
-2016010101	200	7	0.7231577934981064
-2016010101	201	7	0.8020703973388846
-2016010101	202	7	0.34618571636736384
-2016010101	203	7	0.8870323946331024
-2016010101	204	7	0.22829122357756182
-2016010101	205	7	0.7391887247919631
-2016010101	206	7	0.32667298905806685
-2016010101	207	7	0.28966062987780283
-2016010101	208	7	0.35051206876737706
-2016010101	209	7	0.8028045292717977
-2016010101	210	7	0.8416165660849151
-2016010101	211	7	0.7392329281431951
-2016010101	212	7	0.338124145223625
-2016010101	213	7	0.42239056684731546
-2016010101	214	7	0.8257949422958452
-2016010101	215	7	0.4420414268433974
-2016010101	216	7	0.29256916602260286
-2016010101	217	7	0.6850345466358918
-2016010101	218	7	0.7464113033810255
-2016010101	219	7	0.35843523655425125
-2016010101	220	0	0.5941513813898424
-2016010101	221	0	0.027368543668205403
-2016010101	222	0	0.0646593769174727
-2016010101	223	0	0.9569978913839153
-2016010101	224	0	0.6811984053832584
-2016010101	225	0	0.5606358380083493
-2016010101	226	0	0.26670488547550186
-2016010101	227	0	0.9014400833785653
-2016010101	228	0	0.637566015918935
-2016010101	229	0	0.019791340881956998
-2016010101	230	0	0.4245542806308241
-2016010101	231	0	0.444662141732598
-2016010101	232	0	0.1758335119170732
-2016010101	233	0	0.0159214929875503
-2016010101	234	0	0.1771063482497166
-2016010101	235	0	0.9604671407661743
-2016010101	236	0	0.47384714026832164
-2016010101	237	0	0.18977081242542304
-2016010101	238	0	0.4766476987574778
-2016010101	239	0	0.9294775624405623
-2016010101	240	3	0.12594080257677187
-2016010101	241	3	0.7559152350398667
-2016010101	242	3	0.05745443874940148
-2016010101	243	3	0.6717027081764814
-2016010101	244	3	0.5700849510416076
-2016010101	245	3	0.8261816952276474
-2016010101	246	3	0.7060976979132971
-2016010101	247	3	0.4176561761388906
-2016010101	248	3	0.5256334635141646
-2016010101	249	3	0.49816409290688646
-2016010101	250	3	0.9830449049508984
-2016010101	251	3	0.5777317502988757
-2016010101	252	3	0.69224309816127
-2016010101	253	3	0.640944588547068
-2016010101	254	3	0.17549906190868492
-2016010101	255	3	0.5626366786777154
-2016010101	256	3	0.5489319715869551
-2016010101	257	3	0.5001626533570611
-2016010101	258	3	0.5248247072184595
-2016010101	259	3	0.5157966135463232
-2016010101	260	0	0.043824985443986386
-2016010101	261	0	0.4355867507058666
-2016010101	262	0	0.8517353983128922
-2016010101	263	0	0.050511310614060556
-2016010101	264	0	0.018975576091520008
-2016010101	265	0	0.24288753566173815
-2016010101	266	0	0.42592232986751477
-2016010101	267	0	0.8219313240908653
-2016010101	268	0	0.9200298974447165
-2016010101	269	0	0.9038295212557719
-2016010101	270	0	0.5268384730163258
-2016010101	271	0	0.8370249923326465
-2016010101	272	0	0.20764198291870795
-2016010101	273	0	0.28224686510065466
-2016010101	274	0	0.05114706164317673
-2016010101	275	0	0.6822109116561871
-2016010101	276	0	0.1920487580753658
-2016010101	277	0	0.5374714224193021
-2016010101	278	0	0.1407286063444365
-2016010101	279	0	0.6300903200679441
-2016010101	280	3	0.5761961995211345
-2016010101	281	3	0.48860594440363003
-2016010101	282	3	0.9621962588672488
-2016010101	283	3	0.3795960509843891
-2016010101	284	3	0.157214495528595
-2016010101	285	3	0.8775922187262636
-2016010101	286	3	0.04594168614675043
-2016010101	287	3	0.856217645027161
-2016010101	288	3	0.4401812473830602
-2016010101	289	3	0.45997954611887704
-2016010101	290	3	0.7575967536722598
-2016010101	291	3	0.30081626796169747
-2016010101	292	3	0.5556330504516347
-2016010101	293	3	0.2610662583323312
-2016010101	294	3	0.9456901737901005
-2016010101	295	3	0.7732531252738661
-2016010101	296	3	0.9312784670391524
-2016010101	297	3	0.1700551978587308
-2016010101	298	3	0.09416802177766626
-2016010101	299	3	0.047486020483062275
-2016010101	300	0	0.2368720948888663
-2016010101	301	0	0.1363540247675844
-2016010101	302	0	0.6796632164100268
-2016010101	303	0	0.4847790313081668
-2016010101	304	0	0.8923911191374748
-2016010101	305	0	0.4629209972203546
-2016010101	306	0	0.8770504803374757
-2016010101	307	0	0.16132164307745944
-2016010101	308	0	0.07724195103053844
-2016010101	309	0	0.7818522541007664
-2016010101	310	0	0.12646019668431752
-2016010101	311	0	0.7833272631599443
-2016010101	312	0	0.6456747363593918
-2016010101	313	0	0.007262692215570188
-2016010101	314	0	0.7252559157521992
-2016010101	315	0	0.3561896202462319
-2016010101	316	0	0.4916774723249263
-2016010101	317	0	0.41665575732393756
-2016010101	318	0	0.8873537893988267
-2016010101	319	0	2.671170814837476E-4
-2016010101	320	3	0.38601998905690915
-2016010101	321	3	0.3386538450586696
-2016010101	322	3	0.9029330123077748
-2016010101	323	3	0.7119643269179263
-2016010101	324	3	0.999586987542997
-2016010101	325	3	0.2606007123119771
-2016010101	326	3	0.758173586634067
-2016010101	327	3	0.8745954276793834
-2016010101	328	3	0.6271248733821071
-2016010101	329	3	0.9022512107069566
-2016010101	330	3	0.7581268831412983
-2016010101	331	3	0.5960487672639095
-2016010101	332	3	0.9976334716314451
-2016010101	333	3	0.16634963588078155
-2016010101	334	3	0.845497495310386
-2016010101	335	3	0.29561984090341287
-2016010101	336	3	0.3852437651241116
-2016010101	337	3	0.6298152822162192
-2016010101	338	3	0.22342878011982603
-2016010101	339	3	0.7315688774325575
-2016010101	340	1	0.5184463792301018
-2016010101	341	1	0.8248209481750183
-2016010101	342	1	0.19301501207164873
-2016010101	343	1	0.9789732956413038
-2016010101	344	1	0.0320870306724641
-2016010101	345	1	0.7513122728857949
-2016010101	346	1	0.4256312747004757
-2016010101	347	1	0.8885035744639196
-2016010101	348	1	0.9385374330083497
-2016010101	349	1	0.5124115905623042
-2016010101	350	1	0.1723444960263597
-2016010101	351	1	0.6268182721826895
-2016010101	352	1	0.8325112646795693
-2016010101	353	1	0.8753479069746972
-2016010101	354	1	0.17435564546281812
-2016010101	355	1	0.7733161692529222
-2016010101	356	1	0.09477460168514973
-2016010101	357	1	0.5522517284701014
-2016010101	358	1	0.2309322491262773
-2016010101	359	1	0.4553785462375177
-2016010101	360	3	0.4207538591898
-2016010101	361	3	0.5777884912044923
-2016010101	362	3	0.09598914695635141
-2016010101	363	3	0.8298751445992327
-2016010101	364	3	0.8455400406757709
-2016010101	365	3	0.7082357095169295
-2016010101	366	3	0.3428513232921617
-2016010101	367	3	0.002034459046941328
-2016010101	368	3	0.8041741490355258
-2016010101	369	3	0.5046992061463758
-2016010101	370	3	0.5968379402186867
-2016010101	371	3	0.49251728555072416
-2016010101	372	3	0.499514272967044
-2016010101	373	3	0.3163953106310815
-2016010101	374	3	0.9141264759479766
-2016010101	375	3	0.5654017237196727
-2016010101	376	3	0.870688146748015
-2016010101	377	3	0.8346158948878163
-2016010101	378	3	0.2534223361266069
-2016010101	379	3	0.6615127870881999
-2016010101	380	0	0.9404409994982728
-2016010101	381	0	0.7181624188084241
-2016010101	382	0	0.8688492337400265
-2016010101	383	0	0.7423992107648576
-2016010101	384	0	0.962538954563567
-2016010101	385	0	0.3065544881403711
-2016010101	386	0	0.5581815487224352
-2016010101	387	0	0.057834629796017833
-2016010101	388	0	0.7639391385884952
-2016010101	389	0	0.7851115146196147
-2016010101	390	0	0.5742903447712463
-2016010101	391	0	0.9505151407243474
-2016010101	392	0	0.7991385460697642
-2016010101	393	0	0.42243212914925077
-2016010101	394	0	0.5001511188980361
-2016010101	395	0	0.4162146563124456
-2016010101	396	0	0.053188648211970335
-2016010101	397	0	0.5917396934991566
-2016010101	398	0	0.1840362970791214
-2016010101	399	0	0.24913435524980954
+2016010101	0	3	0.4806453614322793
+2016010101	1	3	0.6419678871373409
+2016010101	2	3
+2016010101	3	3	0.7020558734824461
+2016010101	4	3	0.22613138189319204
+2016010101	5	3	0.06909583208106174
+2016010101	6	3	0.5376346416013744
+2016010101	7	3
+2016010101	8	3	0.8149467521679741
+2016010101	9	3	0.7251559245004248
+2016010101	10	3	0.49855832099546715
+2016010101	11	3	0.5798820881203658
+2016010101	12	3	0.5677866915980911
+2016010101	13	3
+2016010101	14	3	0.8516993764638755
+2016010101	15	3
+2016010101	16	3	0.8109196906946308
+2016010101	17	3	0.7791330245692353
+2016010101	18	3	0.5499336255807227
+2016010101	19	3	0.23268682623354076
+2016010101	20	4
+2016010101	21	4	0.6399367705457312
+2016010101	22	4	0.6484832626361673
+2016010101	23	4	0.1662318456280305
+2016010101	24	4	0.19354936279837376
+2016010101	25	4	0.5802200573751369
+2016010101	26	4	0.4269381252768615
+2016010101	27	4	0.3070593197796049
+2016010101	28	4	0.35382552338561346
+2016010101	29	4	0.7119445442397593
+2016010101	30	4	0.7869733865139936
+2016010101	31	4	0.0805272768355706
+2016010101	32	4	0.03922392755570692
+2016010101	33	4	0.5840598980488145
+2016010101	34	4	0.20511232154618975
+2016010101	35	4
+2016010101	36	4	0.07710156514815447
+2016010101	37	4	0.23290085820099904
+2016010101	38	4
+2016010101	39	4	0.5733869947288424
+2016010101	40	1	0.9858872798659482
+2016010101	41	1
+2016010101	42	1	0.14839505115144447
+2016010101	43	1	0.09840489123150087
+2016010101	44	1	0.5479691071569414
+2016010101	45	1	0.0023559980599913155
+2016010101	46	1	0.7896086868719593
+2016010101	47	1	0.0319014726614526
+2016010101	48	1	0.842015759464531
+2016010101	49	1	0.6604873440176756
+2016010101	50	1
+2016010101	51	1	0.6615216129493895
+2016010101	52	1	0.8367143245438604
+2016010101	53	1	0.9758944303783366
+2016010101	54	1	0.5709096686275406
+2016010101	55	1	0.21653637585091645
+2016010101	56	1	0.3261165064735497
+2016010101	57	1	0.5334133677491381
+2016010101	58	1	0.8620204683908819
+2016010101	59	1	0.5484128559617791
+2016010101	60	4	0.12033006888377096
+2016010101	61	4
+2016010101	62	4
+2016010101	63	4
+2016010101	64	4	0.9858000457292002
+2016010101	65	4	0.19210448139852032
+2016010101	66	4	0.3974718376343238
+2016010101	67	4	0.9732376558043744
+2016010101	68	4	0.11356123536860396
+2016010101	69	4
+2016010101	70	4	0.8076862670275398
+2016010101	71	4	0.09236347669493417
+2016010101	72	4
+2016010101	73	4	0.854189677115464
+2016010101	74	4	0.7396706282809763
+2016010101	75	4	0.31708622509985873
+2016010101	76	4	0.43648603480196757
+2016010101	77	4	0.589213905769546
+2016010101	78	4	0.7415426026749161
+2016010101	79	4	0.7358282894757189
+2016010101	80	9
+2016010101	81	9	0.4255911372929798
+2016010101	82	9	0.9331910249355163
+2016010101	83	9	0.06445900439995578
+2016010101	84	9	0.8115413172888221
+2016010101	85	9
+2016010101	86	9	0.0963857458400349
+2016010101	87	9	0.06153408750057188
+2016010101	88	9	0.44027926988833244
+2016010101	89	9
+2016010101	90	9	0.5233141932162747
+2016010101	91	9	0.32621493954167546
+2016010101	92	9	0.34647299592637026
+2016010101	93	9	0.15192824813669525
+2016010101	94	9	0.644889890933122
+2016010101	95	9
+2016010101	96	9	0.3015940264437008
+2016010101	97	9	0.435933310145303
+2016010101	98	9	0.7965720726264395
+2016010101	99	9	0.6948764513522069
+2016010101	100	8
+2016010101	101	8	0.9541985425546318
+2016010101	102	8	0.4078660397769671
+2016010101	103	8	0.3761817754153792
+2016010101	104	8	0.4630916538268274
+2016010101	105	8	0.17184297531868054
+2016010101	106	8	0.616480413683724
+2016010101	107	8	0.9958850843107127
+2016010101	108	8	0.29264803594577704
+2016010101	109	8	0.9282101022070045
+2016010101	110	8	0.12103623749465953
+2016010101	111	8	0.5756846725738404
+2016010101	112	8	0.4986956805169892
+2016010101	113	8	0.16368254315504893
+2016010101	114	8	0.8246939105217244
+2016010101	115	8
+2016010101	116	8	0.2802464651921067
+2016010101	117	8	0.14533675338382146
+2016010101	118	8	0.1550635453509872
+2016010101	119	8	0.9764250057102191
+2016010101	120	3	0.5639798746175808
+2016010101	121	3	0.5252357184891421
+2016010101	122	3	0.4224461843890118
+2016010101	123	3	0.8623764079415396
+2016010101	124	3	0.23821471344004463
+2016010101	125	3	0.6562988643211294
+2016010101	126	3	0.6045632944796968
+2016010101	127	3	0.9216081547045152
+2016010101	128	3	0.9111787373931876
+2016010101	129	3
+2016010101	130	3	0.22309670266127934
+2016010101	131	3	0.5610286454514603
+2016010101	132	3	0.6449829420830484
+2016010101	133	3	0.47359871694806055
+2016010101	134	3	0.4456546777062259
+2016010101	135	3	0.3233370634627728
+2016010101	136	3	0.535941427413942
+2016010101	137	3	0.1465746735321063
+2016010101	138	3	0.1619540222600243
+2016010101	139	3
+2016010101	140	1	0.017761763118174123
+2016010101	141	1	0.19652899466185436
+2016010101	142	1	0.8918577110251682
+2016010101	143	1	0.5483769339947813
+2016010101	144	1	0.35583586810262346
+2016010101	145	1	0.7872104182932219
+2016010101	146	1	0.4708873523759258
+2016010101	147	1
+2016010101	148	1	0.5782684331898654
+2016010101	149	1	0.9493458125552832
+2016010101	150	1	0.34871248062641946
+2016010101	151	1	0.12964044092772886
+2016010101	152	1	0.7565381339014415
+2016010101	153	1	0.722119729581673
+2016010101	154	1	0.35411310281363473
+2016010101	155	1	0.4485837785057891
+2016010101	156	1
+2016010101	157	1	0.29365186469373317
+2016010101	158	1	0.28026386528276104
+2016010101	159	1	0.04245162399196889
+2016010101	160	3	0.17387064034440958
+2016010101	161	3	0.08578972205632507
+2016010101	162	3	0.14307939514143686
+2016010101	163	3
+2016010101	164	3	0.05790520846514535
+2016010101	165	3	0.5340068761562542
+2016010101	166	3	0.700106038458213
+2016010101	167	3	0.38998802776748753
+2016010101	168	3	0.5050112412495604
+2016010101	169	3	0.4923503731785702
+2016010101	170	3	0.09763476584855624
+2016010101	171	3	0.9181948066342877
+2016010101	172	3
+2016010101	173	3	0.845482260534406
+2016010101	174	3	0.43828851854546647
+2016010101	175	3	0.753761527760726
+2016010101	176	3	0.04212838877462455
+2016010101	177	3	0.691468086019305
+2016010101	178	3	0.5740697793884527
+2016010101	179	3
+2016010101	180	2
+2016010101	181	2
+2016010101	182	2	0.6391276620023679
+2016010101	183	2	0.18995634100597447
+2016010101	184	2
+2016010101	185	2	0.3601348485475453
+2016010101	186	2	0.5898107379081887
+2016010101	187	2	0.7654577155215041
+2016010101	188	2	0.9861893898445978
+2016010101	189	2
+2016010101	190	2
+2016010101	191	2
+2016010101	192	2	0.2502642896132842
+2016010101	193	2	0.007316463522836103
+2016010101	194	2	0.7995874341737429
+2016010101	195	2	0.8767428241522481
+2016010101	196	2	0.20911811774820832
+2016010101	197	2	0.6944454810391126
+2016010101	198	2	0.6138639733419406
+2016010101	199	2	0.5340384213931233
+2016010101	200	4	0.610341783366869
+2016010101	201	4	0.8095356348162531
+2016010101	202	4	0.14576711100717
+2016010101	203	4	0.324791997579967
+2016010101	204	4	0.7012027438404959
+2016010101	205	4	0.6855125265148104
+2016010101	206	4	0.725721465888873
+2016010101	207	4	0.37334253570089415
+2016010101	208	4	0.7033238012522983
+2016010101	209	4	0.6289935861560849
+2016010101	210	4	0.22100961408197517
+2016010101	211	4	0.5361822265452533
+2016010101	212	4	0.23524963349934325
+2016010101	213	4
+2016010101	214	4	0.2151612160248132
+2016010101	215	4	0.27034057325897454
+2016010101	216	4	0.45788942603194727
+2016010101	217	4	0.1900006529735202
+2016010101	218	4	0.21761539728764212
+2016010101	219	4
+2016010101	220	9	0.11191094372411481
+2016010101	221	9	0.7257156210111483
+2016010101	222	9
+2016010101	223	9	0.09767407184252375
+2016010101	224	9
+2016010101	225	9	0.8016522677725126
+2016010101	226	9	0.8944075176139713
+2016010101	227	9	0.7071810476904448
+2016010101	228	9	0.7425380900058187
+2016010101	229	9
+2016010101	230	9	0.1031211607034147
+2016010101	231	9	0.38694779402631885
+2016010101	232	9	0.6121565493162887
+2016010101	233	9	0.08826787524008717
+2016010101	234	9	0.34982652581050666
+2016010101	235	9	0.294468865237702
+2016010101	236	9
+2016010101	237	9	0.5190906777357499
+2016010101	238	9	0.2424354751098784
+2016010101	239	9	0.7584304131139413
+2016010101	240	7	0.35704199266816017
+2016010101	241	7	0.6213205251006355
+2016010101	242	7	0.6794778377157997
+2016010101	243	7	0.9660152207885527
+2016010101	244	7	0.746230867578865
+2016010101	245	7
+2016010101	246	7	0.6637336893540101
+2016010101	247	7	0.527025000973831
+2016010101	248	7
+2016010101	249	7	0.3689478346414077
+2016010101	250	7	0.1046606291981873
+2016010101	251	7	0.42368572552625094
+2016010101	252	7	0.10870686807188557
+2016010101	253	7	0.06569693633418128
+2016010101	254	7	0.29873141724229657
+2016010101	255	7	0.29158560982689863
+2016010101	256	7	0.7678017218931323
+2016010101	257	7	0.8900303350507414
+2016010101	258	7	0.4419580092209411
+2016010101	259	7	0.6381120775261563
+2016010101	260	3
+2016010101	261	3
+2016010101	262	3	0.4227980856443392
+2016010101	263	3
+2016010101	264	3	0.8755401132173695
+2016010101	265	3	0.5275377089199973
+2016010101	266	3	0.12424387758622746
+2016010101	267	3	0.01547071944810885
+2016010101	268	3	0.37451206779305857
+2016010101	269	3	0.1989423043276275
+2016010101	270	3	0.5949853939670747
+2016010101	271	3
+2016010101	272	3
+2016010101	273	3	0.6788434157726136
+2016010101	274	3	0.4138070035489033
+2016010101	275	3	0.3262153201368553
+2016010101	276	3
+2016010101	277	3	0.43177816031851957
+2016010101	278	3	0.551450932204876
+2016010101	279	3	0.7282741792330263
+2016010101	280	3	0.9122069202680759
+2016010101	281	3	0.7413285089462801
+2016010101	282	3	0.03663726371403986
+2016010101	283	3	0.23947998113921076
+2016010101	284	3	0.9362838173143953
+2016010101	285	3	0.28291781154121487
+2016010101	286	3	0.9083170701852669
+2016010101	287	3	0.6955809083495521
+2016010101	288	3	0.9102559703489196
+2016010101	289	3	0.5856005115807994
+2016010101	290	3
+2016010101	291	3	0.7547680618605328
+2016010101	292	3	0.3635413762669889
+2016010101	293	3	0.5060093676499698
+2016010101	294	3	0.748493032129933
+2016010101	295	3	0.36173218418100006
+2016010101	296	3	0.8017631866114252
+2016010101	297	3	0.09251208639535535
+2016010101	298	3	0.3956843833130532
+2016010101	299	3	0.8965031193765175
+2016010101	300	8	0.06138169953397199
+2016010101	301	8	0.22791862853999423
+2016010101	302	8	0.4246825688431949
+2016010101	303	8	0.7695915902917281
+2016010101	304	8
+2016010101	305	8
+2016010101	306	8	0.15549809858942576
+2016010101	307	8	0.3236736994444922
+2016010101	308	8
+2016010101	309	8	0.44112090310236873
+2016010101	310	8	0.28658459361862487
+2016010101	311	8	0.9346348774247973
+2016010101	312	8
+2016010101	313	8	0.32921840037119676
+2016010101	314	8
+2016010101	315	8	0.5619515224721092
+2016010101	316	8	0.5436607404043168
+2016010101	317	8	0.13126793260709302
+2016010101	318	8
+2016010101	319	8	0.08486286173372692
+2016010101	320	2	0.9380754465335691
+2016010101	321	2	0.8698491012104429
+2016010101	322	2	0.2141986220865666
+2016010101	323	2	0.8191428099424286
+2016010101	324	2	0.5374397266436216
+2016010101	325	2	0.8014642292436202
+2016010101	326	2	0.2454633759035828
+2016010101	327	2	0.2659186693999648
+2016010101	328	2	0.12215527116473579
+2016010101	329	2	0.23512672887844477
+2016010101	330	2	0.17317858307470202
+2016010101	331	2	0.014761951009997776
+2016010101	332	2
+2016010101	333	2
+2016010101	334	2
+2016010101	335	2	0.4839228057946262
+2016010101	336	2	0.13113562836707116
+2016010101	337	2	0.5776063788487777
+2016010101	338	2	0.18353702932146465
+2016010101	339	2	0.9550943323447759
+2016010101	340	3	0.010294130457498829
+2016010101	341	3
+2016010101	342	3
+2016010101	343	3	0.043939221631064784
+2016010101	344	3	0.468615649016912
+2016010101	345	3	0.8182318625708176
+2016010101	346	3
+2016010101	347	3
+2016010101	348	3	0.13438311444894857
+2016010101	349	3	0.9612868278105434
+2016010101	350	3	0.8957083777498813
+2016010101	351	3	0.49303068183606236
+2016010101	352	3	0.3907574108316315
+2016010101	353	3	0.7609044660129155
+2016010101	354	3	0.0015306502862820759
+2016010101	355	3
+2016010101	356	3	0.0777103319482042
+2016010101	357	3	0.040512845904230654
+2016010101	358	3
+2016010101	359	3	0.8615439676963182
+2016010101	360	0	0.541631191849709
+2016010101	361	0	0.38839056303777064
+2016010101	362	0
+2016010101	363	0
+2016010101	364	0	0.25282693081575114
+2016010101	365	0
+2016010101	366	0	0.8088940492058253
+2016010101	367	0	0.23287052835067323
+2016010101	368	0	0.2388792692348808
+2016010101	369	0
+2016010101	370	0	0.047812293417679674
+2016010101	371	0	0.5904656835670964
+2016010101	372	0
+2016010101	373	0	0.21010216933405235
+2016010101	374	0	0.6128169315116692
+2016010101	375	0	0.0021979088847082773
+2016010101	376	0
+2016010101	377	0	0.029233195772592535
+2016010101	378	0
+2016010101	379	0	0.13492455955229932
+2016010101	380	7	0.45162411597798047
+2016010101	381	7	0.6017062629482749
+2016010101	382	7
+2016010101	383	7	0.6347243397708097
+2016010101	384	7
+2016010101	385	7	0.3679411384173339
+2016010101	386	7	0.11111298782358625
+2016010101	387	7	0.848348012358186
+2016010101	388	7	0.20181516171015812
+2016010101	389	7
+2016010101	390	7
+2016010101	391	7	0.03477179524923002
+2016010101	392	7
+2016010101	393	7
+2016010101	394	7
+2016010101	395	7	0.4974934049704761
+2016010101	396	7	0.6947690881973858
+2016010101	397	7	0.21185369837139645
+2016010101	398	7
+2016010101	399	7	0.6859065700191138
diff --git a/extensions-contrib/tdigestsketch/src/test/resources/doubles_sketch_data.tsv b/extensions-contrib/tdigestsketch/src/test/resources/doubles_sketch_data.tsv
index f1f0bb8..b6dbb51 100644
--- a/extensions-contrib/tdigestsketch/src/test/resources/doubles_sketch_data.tsv
+++ b/extensions-contrib/tdigestsketch/src/test/resources/doubles_sketch_data.tsv
@@ -1,20 +1,20 @@
-2016010101	4	AAAAAT+7CjX1PphwP+/7EGIdEKJAWQAAAAAAAAAAABQ/8AAAAAAAAD+7CjX1PphwP/AAAAAAAAA/vncWqCA0iD/wAAAAAAAAP79sql5Sq7A/8AAAAAAAAD/HjWyUzH5EP/AAAAAAAAA/yXdIQeHLND/wAAAAAAAAP9ETDBCe0rQ/8AAAAAAAAD/bv94tVW6aP/AAAAAAAAA/3S8S4mBQjj/wAAAAAAAAP95AkomuKgA/8AAAAAAAAD/fMaB/VdVQP/AAAAAAAAA/4bkG+YKruz/wAAAAAAAAP+I3YqO/lEc/8AAAAAAAAD/ivYlUAYQVP/AAAAAAAAA/5fgCUTZfFT/wAAAAAAAAP+YxtG3/qb4/8AAAAAAAAD/oxDbRO3UhP/AAAAAAAAA/6YWLOSTBAz/wAAAAAAAAP+zyRaGOAPM/8AAAAAAAAD/tJwSKndEHP/AAAAAAAAA/7/sQYh0Qog==
-2016010101	4	AAAAAT+x8zeUx6E4P+9I7S+ZvE5AWQAAAAAAAAAAABQ/8AAAAAAAAD+x8zeUx6E4P/AAAAAAAAA/yqGfguJb4D/wAAAAAAAAP81DwCIyqLg/8AAAAAAAAD/QP/R3eDxQP/AAAAAAAAA/1TtECEm/ej/wAAAAAAAAP9pwM03FWLA/8AAAAAAAAD/ageyQGELKP/AAAAAAAAA/3QEv5GIwZD/wAAAAAAAAP9+x9tSbFIY/8AAAAAAAAD/hGQ6ntL+pP/AAAAAAAAA/4rLUCScKgT/wAAAAAAAAP+RZfioxXx4/8AAAAAAAAD/kjt12hqv2P/AAAAAAAAA/5Xv2onVpyj/wAAAAAAAAP+chr8/GhQU/8AAAAAAAAD/qiul4+5gXP/AAAAAAAAA/65CrHjSkeD/wAAAAAAAAP+uZJYlWNuw/8AAAAAAAAD/tL+mJ7/A5P/AAAAAAAAA/70jtL5m8Tg==
-2016010101	6	AAAAAT+pZ+KZEb+wP+0T7sTeuMtAWQAAAAAAAAAAABQ/8AAAAAAAAD+pZ+KZEb+wP/AAAAAAAAA/z6Ai70+EFD/wAAAAAAAAP8/vLqqMEFA/8AAAAAAAAD/QQ9jUjuUwP/AAAAAAAAA/0JVTHRKQND/wAAAAAAAAP9E+HZK7eOY/8AAAAAAAAD/UyuqJRsSIP/AAAAAAAAA/3JfCECkjhD/wAAAAAAAAP98Zs9r16tA/8AAAAAAAAD/hlVjJfubaP/AAAAAAAAA/5D/28EqWVj/wAAAAAAAAP+a35kxEwGc/8AAAAAAAAD/nCGskvBxgP/AAAAAAAAA/6NeE3XuZGD/wAAAAAAAAP+tabLGYftE/8AAAAAAAAD/rX7VulMyIP/AAAAAAAAA/63JKIUNgfT/wAAAAAAAAP+xWM2SGDAQ/8AAAAAAAAD/soaYGE6cpP/AAAAAAAAA/7RPuxN64yw==
-2016010101	3	AAAAAT+7UrkAsuZYP++GVNSKMLNAWQAAAAAAAAAAABQ/8AAAAAAAAD+7UrkAsuZYP/AAAAAAAAA/yoMFzGLc6D/wAAAAAAAAP80oFPmMpKA/8AAAAAAAAD/SB9Hu0WQMP/AAAAAAAAA/0p2jxoZR5D/wAAAAAAAAP9erevdmrn4/8AAAAAAAAD/ZJ5sCHUu8P/AAAAAAAAA/2g+3Zj8RQD/wAAAAAAAAP9pXRxFMlYY/8AAAAAAAAD/dGvAsch6UP/AAAAAAAAA/4QvQNT9cUj/wAAAAAAAAP+Gn7wL+/vA/8AAAAAAAAD/jMCLRbf6zP/AAAAAAAAA/56YBOjwGAT/wAAAAAAAAP+ooF1QMrUE/8AAAAAAAAD/s3N+aY1rXP/AAAAAAAAA/7OCY7n9O7T/wAAAAAAAAP+2I45MTpSU/8AAAAAAAAD/ukvT+mMTmP/AAAAAAAAA/74ZU1Iowsw==
-2016010101	6	AAAAAT+lyvFjKpDgP+++PV/m/pVAWQAAAAAAAAAAABQ/8AAAAAAAAD+lyvFjKpDgP/AAAAAAAAA/s17vSA3aUD/wAAAAAAAAP75cExXHreA/8AAAAAAAAD/Pq/X0l+noP/AAAAAAAAA/0MYtPGs3vj/wAAAAAAAAP9QuMPfRI2w/8AAAAAAAAD/cVF66gH9cP/AAAAAAAAA/3q4gnyx0Sj/wAAAAAAAAP9628OIbXPQ/8AAAAAAAAD/e/4vtZrBsP/AAAAAAAAA/4UtPkfAjtD/wAAAAAAAAP+RTX1j/Jzs/8AAAAAAAAD/lSob7AYMvP/AAAAAAAAA/5u8zaVnEvz/wAAAAAAAAP+d2Z76RMh0/8AAAAAAAAD/oi1ARoLi3P/AAAAAAAAA/6M6p4GLanT/wAAAAAAAAP+1ddrynAEU/8AAAAAAAAD/u12drHsniP/AAAAAAAAA/7749X+b+lQ==
-2016010101	2	AAAAAT+hwUQxKJzQP++dsiPinw9AWQAAAAAAAAAAABQ/8AAAAAAAAD+hwUQxKJzQP/AAAAAAAAA/x+gMtVsUlD/wAAAAAAAAP9huETGJJFw/8AAAAAAAAD/ZhlH0+JtkP/AAAAAAAAA/2nrK9ZloXD/wAAAAAAAAP9wTQOtegpQ/8AAAAAAAAD/c/5hkttbcP/AAAAAAAAA/3jIhBjS8AD/wAAAAAAAAP+BfpRGEvko/8AAAAAAAAD/iuZqHeDh2P/AAAAAAAAA/4yrqjGL6QD/wAAAAAAAAP+UeKiW75mM/8AAAAAAAAD/nvz8F1pkCP/AAAAAAAAA/6CQRmgBapD/wAAAAAAAAP+kNSgVA8tY/8AAAAAAAAD/p1ebVTcC+P/AAAAAAAAA/68kSIU/Knz/wAAAAAAAAP+252SFzTt4/8AAAAAAAAD/u/B+HsTPgP/AAAAAAAAA/752yI+KfDw==
-2016010101	5	AAAAAT+3e+7CMwCYP+42+6qdWYJAWQAAAAAAAAAAABQ/8AAAAAAAAD+3e+7CMwCYP/AAAAAAAAA/uYy6FjP/MD/wAAAAAAAAP7+qfu4nIug/8AAAAAAAAD/GMmsZ46MwP/AAAAAAAAA/0JwFJPVC9D/wAAAAAAAAP9ExledcFhQ/8AAAAAAAAD/WI9Smw3nKP/AAAAAAAAA/1veW1HPPcj/wAAAAAAAAP9ybr172aCA/8AAAAAAAAD/e+7NJ7S0kP/AAAAAAAAA/3xa90Uk/mj/wAAAAAAAAP+B6+8rcs+8/8AAAAAAAAD/iqYSqcFOyP/AAAAAAAAA/4tezvJE5ID/wAAAAAAAAP+QxastrmHo/8AAAAAAAAD/nh6cBT5qQP/AAAAAAAAA/6Ee1Gukg8T/wAAAAAAAAP+lR7S77Zgw/8AAAAAAAAD/t1R/dJfY7P/AAAAAAAAA/7jb7qp1Zgg==
-2016010101	4	AAAAAT+mlaZjwPIAP+/hVfNKxQhAWQAAAAAAAAAAABQ/8AAAAAAAAD+mlaZjwPIAP/AAAAAAAAA/sprucWfqKD/wAAAAAAAAP8aSYGyLDzw/8AAAAAAAAD/NkcmVMz+AP/AAAAAAAAA/z/ZGExbosD/wAAAAAAAAP9gfnh+EICw/8AAAAAAAAD/YX9WlKetQP/AAAAAAAAA/2IxYRN9PLD/wAAAAAAAAP+FQJCNpE3U/8AAAAAAAAD/krz+sKnxTP/AAAAAAAAA/5tqm3IeQRD/wAAAAAAAAP+rBiKf00Ww/8AAAAAAAAD/q5uI/SLgTP/AAAAAAAAA/62MkemII7z/wAAAAAAAAP+x8gAlPZSA/8AAAAAAAAD/s929QhdpRP/AAAAAAAAA/7eScvOJnrD/wAAAAAAAAP+6YOb2M59o/8AAAAAAAAD/vZ35S82B9P/AAAAAAAAA/7+FV80rFCA==
-2016010101	2	AAAAAT+fHT49kDQgP+/ecc46OIBAWQAAAAAAAAAAABQ/8AAAAAAAAD+fHT49kDQgP/AAAAAAAAA/sKAvcLX4oD/wAAAAAAAAP8PtNuKSjFQ/8AAAAAAAAD/HV0SBs+lEP/AAAAAAAAA/1FnQ+lqusD/wAAAAAAAAP9TszxUszr4/8AAAAAAAAD/W/coPkukeP/AAAAAAAAA/2YrvhSUFcD/wAAAAAAAAP97Ns4LU3Ng/8AAAAAAAAD/j8f0WFStEP/AAAAAAAAA/5BZ0H2DpyD/wAAAAAAAAP+Qu9mX+Khc/8AAAAAAAAD/kn2rJh4ULP/AAAAAAAAA/5Ry7Gz3PVj/wAAAAAAAAP+ZLvvTwnTs/8AAAAAAAAD/nhahUA2upP/AAAAAAAAA/6n4jjvv3Ej/wAAAAAAAAP+4UGjY5F5I/8AAAAAAAAD/uK2CO0r6uP/AAAAAAAAA/795xzjo4gA==
-2016010101	6	AAAAAT+hWzpoxXsQP+3xY5QRkN9AWQAAAAAAAAAAABQ/8AAAAAAAAD+hWzpoxXsQP/AAAAAAAAA/sSiwvJF+AD/wAAAAAAAAP7K85tBFKsg/8AAAAAAAAD+1iHbOw4+oP/AAAAAAAAA/0VrfsTI/kj/wAAAAAAAAP9F64sTKzig/8AAAAAAAAD/Rn71E1hdOP/AAAAAAAAA/0m/CGi3xcD/wAAAAAAAAP9VxvHVXMjo/8AAAAAAAAD/XaBXFFpZIP/AAAAAAAAA/2SbRie+Lsj/wAAAAAAAAP9uRrlPCArI/8AAAAAAAAD/c0650D24iP/AAAAAAAAA/36WCHLXxuD/wAAAAAAAAP+SO/n6/pMA/8AAAAAAAAD/nUS1Z36s7P/AAAAAAAAA/5+VedOWWXD/wAAAAAAAAP+kjr4cXDjA/8AAAAAAAAD/s5xaDG8j4P/AAAAAAAAA/7fFjlBGQ3w==
-2016010101	7	AAAAAT/NOKWVnV6wP+xikcKuIr1AWQAAAAAAAAAAABQ/8AAAAAAAAD/NOKWVnV6wP/AAAAAAAAA/0onMvRDkID/wAAAAAAAAP9K5dAX4pQw/8AAAAAAAAD/U6DXTH2vwP/AAAAAAAAA/1aPTdG5MlD/wAAAAAAAAP9Yn6CKI+GA/8AAAAAAAAD/WbsosDWNUP/AAAAAAAAA/1vCaWK8Clj/wAAAAAAAAP9sIcnGv4To/8AAAAAAAAD/cSmgf8UCcP/AAAAAAAAA/5evNkc3Njj/wAAAAAAAAP+ckG9AdgBw/8AAAAAAAAD/np28c0bWqP/AAAAAAAAA/56fL0FAK/D/wAAAAAAAAP+fimfUsXBE/8AAAAAAAAD/pqo+JtSClP/AAAAAAAAA/6bCTH8myjT/wAAAAAAAAP+ps6YPLnJE/8AAAAAAAAD/q7oXdY2i4P/AAAAAAAAA/7GKRwq4ivQ==
-2016010101	0	AAAAAT+QTblOvXZgP+68JZXPJalAWQAAAAAAAAAAABQ/8AAAAAAAAD+QTblOvXZgP/AAAAAAAAA/lEQuZ1P2AD/wAAAAAAAAP5wGf9/58sA/8AAAAAAAAD+wjYRVPYMoP/AAAAAAAAA/xoG2Z5zBhD/wAAAAAAAAP8ara7rSwSg/8AAAAAAAAD/ISmj0jSAcP/AAAAAAAAA/0RGxXjM+xD/wAAAAAAAAP9sr5ber6qI/8AAAAAAAAD/cdVgzILFcP/AAAAAAAAA/3lOC9LBbMj/wAAAAAAAAP96BZVl4ITY/8AAAAAAAAD/h8LqRpsPnP/AAAAAAAAA/4wNJwf4pvz/wAAAAAAAAP+Rm8NhtNf8/8AAAAAAAAD/lzGCZJquVP/AAAAAAAAA/7NiY361DLz/wAAAAAAAAP+2+R7qhiVM/8AAAAAAAAD/un7oKurdPP/AAAAAAAAA/7rwllc8lqQ==
-2016010101	3	AAAAAT+taqsO4J8wP+91GpaobuVAWQAAAAAAAAAAABQ/8AAAAAAAAD+taqsO4J8wP/AAAAAAAAA/wB7UBiZNGD/wAAAAAAAAP8Z2wNWwMIg/8AAAAAAAAD/auuD4X0r4P/AAAAAAAAA/3+HrpcTmvD/wAAAAAAAAP+ABVRvbLFY/8AAAAAAAAD/ggWfmUjVSP/AAAAAAAAA/4MtdLzRamD/wAAAAAAAAP+DR/UTvP94/8AAAAAAAAD/hkNnINjuVP/AAAAAAAAA/4gEeos5tWT/wAAAAAAAAP+I+IsuVS38/8AAAAAAAAD/ifMdLrJ/SP/AAAAAAAAA/5IKeOctzXz/wAAAAAAAAP+V+lq2IFXU/8AAAAAAAAD/mJtr/b3/7P/AAAAAAAAA/5phaMwoxJD/wAAAAAAAAP+gwdSWha5E/8AAAAAAAAD/qcBSYMc+LP/AAAAAAAAA/73Ualqhu5Q==
-2016010101	0	AAAAAT+TblVa8X+AP+1w4oobwNpAWQAAAAAAAAAAABQ/8AAAAAAAAD+TblVa8X+AP/AAAAAAAAA/pnA6fnWN0D/wAAAAAAAAP6ncnlZUutA/8AAAAAAAAD+qL/KaFn9QP/AAAAAAAAA/wgNlHO41rD/wAAAAAAAAP8iVDb+V5wA/8AAAAAAAAD/KlAMy9MrgP/AAAAAAAAA/zxbwUyL4MD/wAAAAAAAAP9IQVSfAX5w/8AAAAAAAAD/bQk+7WrHEP/AAAAAAAAA/2+CnQDaRCD/wAAAAAAAAP+Db3Ft8Jnw/8AAAAAAAAD/hMvdEumqHP/AAAAAAAAA/5CmzLMb5yz/wAAAAAAAAP+XUq/pRNJU/8AAAAAAAAD/qTULrkOdfP/AAAAAAAAA/6sjoowAblj/wAAAAAAAAP+tBapgTLlU/8AAAAAAAAD/s7CvjXn34P/AAAAAAAAA/7XDiihvA2g==
-2016010101	3	AAAAAT+nhasvC/mwP+7KT88FY2ZAWQAAAAAAAAAAABQ/8AAAAAAAAD+nhasvC/mwP/AAAAAAAAA/qFAWcfvfYD/wAAAAAAAAP7gbZT3dNSg/8AAAAAAAAD/EH5rGYFBoP/AAAAAAAAA/xcReZKi2ID/wAAAAAAAAP9C1T0BoF8I/8AAAAAAAAD/TQJLgQARQP/AAAAAAAAA/2EtNPCrL+j/wAAAAAAAAP9wr7fd0p5g/8AAAAAAAAD/dcE4M2jVCP/AAAAAAAAA/30VR3fYQ9j/wAAAAAAAAP+HHvvaIhxQ/8AAAAAAAAD/icDMDILp7P/AAAAAAAAA/6D47jBJ//T/wAAAAAAAAP+i+fVaSl+4/8AAAAAAAAD/rZiKL9MscP/AAAAAAAAA/7BU8RtTofz/wAAAAAAAAP+3NCH/s3ps/8AAAAAAAAD/uQxgKEncYP/AAAAAAAAA/7spPzwVjZg==
-2016010101	0	AAAAAT8xgXshEagAP+yOd9H99h9AWQAAAAAAAAAAABQ/8AAAAAAAAD8xgXshEagAP/AAAAAAAAA/fb98GL+kgD/wAAAAAAAAP7PGIOWOLnA/8AAAAAAAAD/AL9kEgJ+gP/AAAAAAAAA/wXQMdocCBD/wAAAAAAAAP8SmMAaTzFQ/8AAAAAAAAD/OUdMmcPv4P/AAAAAAAAA/1svPjIh2Yj/wAAAAAAAAP9qqfOjZXwQ/8AAAAAAAAD/doH9j7Fw+P/AAAAAAAAA/3waeoVBUKD/wAAAAAAAAP993pMn0MTY/8AAAAAAAAD/kqV4QkItYP/AAAAAAAAA/5b/NEtjOuz/wAAAAAAAAP+c1S+TsW/g/8AAAAAAAAD/pBO8EtVVkP/AAAAAAAAA/6REEVirJ5z/wAAAAAAAAP+wQzCs/spQ/8AAAAAAAAD/sZTPGLmNjP/AAAAAAAAA/7I530f32Hw==
-2016010101	3	AAAAAT/FSvHi55yMP+/8ndmgI3xAWQAAAAAAAAAAABQ/8AAAAAAAAD/FSvHi55yMP/AAAAAAAAA/zJlQc8zHKD/wAAAAAAAAP9Ctrpwsbog/8AAAAAAAAD/S6297LqX+P/AAAAAAAAA/1ayBLUxDyD/wAAAAAAAAP9in1XcMirA/8AAAAAAAAD/YtI0vJoJMP/AAAAAAAAA/4xLU3UcHBT/wAAAAAAAAP+QRaC615bY/8AAAAAAAAD/kJ3Jg9HgxP/AAAAAAAAA/5shpaYD/Jj/wAAAAAAAAP+dpAyJrBDw/8AAAAAAAAD/oQpNPKe3lP/AAAAAAAAA/6EL1QOkZUT/wAAAAAAAAP+sOUMNmqBw/8AAAAAAAAD/r/K+M46aVP/AAAAAAAAA/7N897lhouT/wAAAAAAAAP+zk08XK5qw/8AAAAAAAAD/v7J0Hwan9P/AAAAAAAAA/7/yd2aAjfA==
-2016010101	1	AAAAAT+gbbYWulvgP+9Tv84N+cRAWQAAAAAAAAAAABQ/8AAAAAAAAD+gbbYWulvgP/AAAAAAAAA/uEMl9rqpOD/wAAAAAAAAP8YPYmsKFqw/8AAAAAAAAD/GUUkpkWEQP/AAAAAAAAA/yLS3Rj4NKD/wAAAAAAAAP82PMBzLZyg/8AAAAAAAAD/bPYr1P5LOP/AAAAAAAAA/3STsDtj4bD/wAAAAAAAAP+BlrP3xzlk/8AAAAAAAAD/glxzccLubP/AAAAAAAAA/4awL0R4Iqj/wAAAAAAAAP+QO5TFx6oU/8AAAAAAAAD/oCsAJJBflP/AAAAAAAAA/6L8BjQ0ZAD/wAAAAAAAAP+pk7uau9Q8/8AAAAAAAAD/qo+6p6zYRP/AAAAAAAAA/7ALZnSKCDD/wAAAAAAAAP+xunwxWc8w/8AAAAAAAAD/uCH+nmvcDP/AAAAAAAAA/71O/zg35xA==
-2016010101	3	AAAAAT9gqpHiSxMAP+1AhirTVlhAWQAAAAAAAAAAABQ/8AAAAAAAAD9gqpHiSxMAP/AAAAAAAAA/uJK+pvLOwD/wAAAAAAAAP9A4ElFvVy4/8AAAAAAAAD/UP9Id8SscP/AAAAAAAAA/1fFGrTuHtD/wAAAAAAAAP9rtoZg4s+Y/8AAAAAAAAD/fhWc4iexmP/AAAAAAAAA/3/gKtpHVvj/wAAAAAAAAP+AmfvMW6DY/8AAAAAAAAD/iF8VbD0v0P/AAAAAAAAA/4n0+SjdPsT/wAAAAAAAAP+MZS+FIClg/8AAAAAAAAD/lKxzdTb+HP/AAAAAAAAA/5qnd70eBlT/wAAAAAAAAP+m7y2zMrcc/8AAAAAAAAD/qjlZRuiSqP/AAAAAAAAA/6rUsZKh6bT/wAAAAAAAAP+sOqfzFJng/8AAAAAAAAD/r3K1jaYW4P/AAAAAAAAA/7UCGKtNWWA==
-2016010101	0	AAAAAT+rO4rhLX9AP+7NHn5fP+ZAWQAAAAAAAAAAABQ/8AAAAAAAAD+rO4rhLX9AP/AAAAAAAAA/rZyAJxmvED/wAAAAAAAAP8eOgFqdqog/8AAAAAAAAD/P46JyDdI4P/AAAAAAAAA/056Wt0BQgj/wAAAAAAAAP9qjQsw+lNQ/8AAAAAAAAD/bCSDE3nGMP/AAAAAAAAA/4AE861cyKD/wAAAAAAAAP+Hcn40fyqs/8AAAAAAAAD/iYJYlJm8lP/AAAAAAAAA/4u+IFOpduj/wAAAAAAAAP+b7L8C/8zI/8AAAAAAAAD/nwbv9WfX2P/AAAAAAAAA/6HIwfgvnaT/wAAAAAAAAP+kfoi7gIv0/8AAAAAAAAD/pkosACvbMP/AAAAAAAAA/682c6IItqT/wAAAAAAAAP+4YF7kVNEw/8AAAAAAAAD/uap66eHHzP/AAAAAAAAA/7s0efl8/5g==
+2016010101	3	AAAAAT+xsEOzE/xAP+tBHwz98zNAWQAAAAAAAAAAABQ/8AAAAAAAAD+xsEOzE/xAP/AAAAAAAAA/zPHfhOpPWD/wAAAAAAAAP83IrpJxCSw/8AAAAAAAAD/QXr1zLi6iP/AAAAAAAAA/3sLkwxTY6j/wAAAAAAAAP999yNeVpKY/8AAAAAAAAD/fseTgIDWMP/AAAAAAAAA/3+hhKPS/uD/wAAAAAAAAP+E0TZBb/Jg/8AAAAAAAAD/hmQ5nGuCRP/AAAAAAAAA/4itO/vCSJD/wAAAAAAAAP+KOZOGAa9E/8AAAAAAAAD/kiwA9CsmCP/AAAAAAAAA/5nc94RJMWT/wAAAAAAAAP+c0ejKHW+k/8AAAAAAAAD/o7qhheEUPP/AAAAAAAAA/6RJmipS0YD/wAAAAAAAAP+nzDdnm6HI/8AAAAAAAAD/qFAs2EV8oP/AAAAAAAAA/60EfDP3zMw==
+2016010101	4	AAAAAT+kFSicJRYgP+ku4s+8zI5AWQAAAAAAAAAAABQ/8AAAAAAAAD+kFSicJRYgP/AAAAAAAAA/s7ztnMgf6D/wAAAAAAAAP7Sdb4Rx2Mg/8AAAAAAAAD/DaXVAMS+EP/AAAAAAAAA/xUcVykNXoD/wAAAAAAAAP8jGObuwuUg/8AAAAAAAAD/KQR7chhUsP/AAAAAAAAA/zc+yAJeBAD/wAAAAAAAAP9Om3CIYqoo/8AAAAAAAAD/WpRPO25pOP/AAAAAAAAA/21L0SV6y7j/wAAAAAAAAP+BzIym5Ip8/8AAAAAAAAD/iWS+uyfy+P/AAAAAAAAA/4pEpp10aRT/wAAAAAAAAP+KwnmIgysY/8AAAAAAAAD/kelytoA6DP/AAAAAAAAA/5MBf+KDSrT/wAAAAAAAAP+Ut1lrG3Tw/8AAAAAAAAD/myD/swmmbP/AAAAAAAAA/6S7iz7zMjg==
+2016010101	1	AAAAAT9jTOLTv00AP++MY3sSIfhAWQAAAAAAAAAAABQ/8AAAAAAAAD9jTOLTv00AP/AAAAAAAAA/oFVjy4zkAD/wAAAAAAAAP7QIPYZEaBg/8AAAAAAAAD+5MRAdmxFYP/AAAAAAAAA/wv6b6cq2uD/wAAAAAAAAP8u3dsZWR0g/8AAAAAAAAD/U3xfEf1a6P/AAAAAAAAA/3LsvjOo31j/wAAAAAAAAP+ERuOk3aqc/8AAAAAAAAD/hiPaCTqLhP/AAAAAAAAA/4YyZHiH6RD/wAAAAAAAAP+JE5Fp3Nyo/8AAAAAAAAD/lIrZav0pJP/AAAAAAAAA/5SsvX6bfoD/wAAAAAAAAP+lEeW/YFQ0/8AAAAAAAAD/qxl0egFbsP/AAAAAAAAA/6vHLCLO8hj/wAAAAAAAAP+uVq/MHFgg/8AAAAAAAAD/vOob02lomP/AAAAAAAAA/74xjexIh+A==
+2016010101	4	AAAAAT+3pSH/v+XQP++LrImZq8hAWQAAAAAAAAAAABQ/8AAAAAAAAD+3pSH/v+XQP/AAAAAAAAA/t9AJhnsVeD/wAAAAAAAAP70SWWAAYyA/8AAAAAAAAD++zfOOlMsQP/AAAAAAAAA/yJbhMILGlD/wAAAAAAAAP9A2VdMNF14/8AAAAAAAAD/USyQFtDkkP/AAAAAAAAA/1WkV3NUchD/wAAAAAAAAP9lwLbfuG7w/8AAAAAAAAD/b72MfKKaaP/AAAAAAAAA/4l6iqiRjxT/wAAAAAAAAP+La1x70HbQ/8AAAAAAAAD/ni+fE2KJ6P/AAAAAAAAA/56thvMjqAz/wAAAAAAAAP+e6t41iiyg/8AAAAAAAAD/p2JDeyfiuP/AAAAAAAAA/61WFlvlVwD/wAAAAAAAAP+yTZZqLLAk/8AAAAAAAAD/vJMNL3Uu3P/AAAAAAAAA/74usiZmryA==
+2016010101	9	AAAAAT+vgWVazu3gP+3cs2ygmbVAWQAAAAAAAAAAABQ/8AAAAAAAAD+vgWVazu3gP/AAAAAAAAA/sIBio9SdoD/wAAAAAAAAP7isvHou+wg/8AAAAAAAAD/DcmKEiveIP/AAAAAAAAA/001RCA+oaj/wAAAAAAAAP9TgtKAzFEo/8AAAAAAAAD/WLJ0SnNuSP/AAAAAAAAA/2zzinAkCxj/wAAAAAAAAP9vmVNOT6RY/8AAAAAAAAD/cLYkaUbzAP/AAAAAAAAA/3Up9Y8hcuD/wAAAAAAAAP91y9a0/yY4/8AAAAAAAAD/giQL+z+AZP/AAAAAAAAA/4L79aCywVT/wAAAAAAAAP+Si8B/ihUA/8AAAAAAAAD/mPG2KKi83P/AAAAAAAAA/6IZBcInfYT/wAAAAAAAAP+l9hLcazME/8AAAAAAAAD/p+CV/I3bJP/AAAAAAAAA/7dyzbKCZtQ==
+2016010101	8	AAAAAT++/DsZq6K4P+/eSmV2CfFAWQAAAAAAAAAAABQ/8AAAAAAAAD++/DsZq6K4P/AAAAAAAAA/wpplDVhcwD/wAAAAAAAAP8PZH0wKynA/8AAAAAAAAD/E84yw43YsP/AAAAAAAAA/xf7zW4VBuD/wAAAAAAAAP9Hvjt60dfo/8AAAAAAAAD/Sur7T6Aw0P/AAAAAAAAA/2BNcubCoRj/wAAAAAAAAP9oaeil/blQ/8AAAAAAAAD/do0stDydaP/AAAAAAAAA/3+qhSZ6GEj/wAAAAAAAAP+FFqmG3uBw/8AAAAAAAAD/ibAJDMGtrP/AAAAAAAAA/47o1IeytOT/wAAAAAAAAP+pj5Hvc1kY/8AAAAAAAAD/ssfXmciNJP/AAAAAAAAA/7bPlrBl4Bz/wAAAAAAAAP+6Iy2HFN1w/8AAAAAAAAD/vPt+nULRCP/AAAAAAAAA/795KZXYJ8Q==
+2016010101	3	AAAAAT+Re3LE3bVAP+190GKF2YJAWQAAAAAAAAAAABQ/8AAAAAAAAD+Re3LE3bVAP/AAAAAAAAA/wsL1ep8C0D/wAAAAAAAAP8S66M6H/rQ/8AAAAAAAAD/Mjm7I40fgP/AAAAAAAAA/zn3R2dNUFD/wAAAAAAAAP9SxjfBKEPg/8AAAAAAAAD/bCVu4kVSmP/AAAAAAAAA/3IWbMoOwtj/wAAAAAAAAP91IqdyrmNA/8AAAAAAAAD/eT3D+Lgv6P/AAAAAAAAA/4M67IzNC/j/wAAAAAAAAP+EmbqLqD+I/8AAAAAAAAD/h8/JYiqmVP/AAAAAAAAA/4gwfhaK1yD/wAAAAAAAAP+NYlR9E38Q/8AAAAAAAAD/ko7NEVy+OP/AAAAAAAAA/5QBmedUofD/wAAAAAAAAP+uYlmiebYE/8AAAAAAAAD/tKGBPvUINP/AAAAAAAAA/7X3QYoXZgg==
+2016010101	1	AAAAAT+SMCO+2PEAP+5hCngwn6RAWQAAAAAAAAAAABQ/8AAAAAAAAD+SMCO+2PEAP/AAAAAAAAA/pbw4IWpJ8D/wAAAAAAAAP7dVtWNupgA/8AAAAAAAAD/AmA7XAwXUP/AAAAAAAAA/ySfcsmTrDD/wAAAAAAAAP9Hv19no9eY/8AAAAAAAAD/SyzEw0TdQP/AAAAAAAAA/1lFOJv/XID/wAAAAAAAAP9apygDq234/8AAAAAAAAD/WxgPOD6aAP/AAAAAAAAA/3LWYvIyzxD/wAAAAAAAAP94jBLSjfww/8AAAAAAAAD/hjE3IrG1AP/AAAAAAAAA/4oEszRuCHT/wAAAAAAAAP+U/HSqtIks/8AAAAAAAAD/nG5rVyzBUP/AAAAAAAAA/6DWPdekS7T/wAAAAAAAAP+kw0+c0ec0/8AAAAAAAAD/sihkusTuGP/AAAAAAAAA/7mEKeDCfpA==
+2016010101	3	AAAAAT+lkdooClXQP+1h2hM7Pe1AWQAAAAAAAAAAABQ/8AAAAAAAAD+lkdooClXQP/AAAAAAAAA/raXAYUBw8D/wAAAAAAAAP7X2ULKQmcA/8AAAAAAAAD+4/peORay4P/AAAAAAAAA/wlBs9W6VWD/wAAAAAAAAP8ZBZKUBxMQ/8AAAAAAAAD/SuFZxcpXCP/AAAAAAAAA/1i+HOa7COD/wAAAAAAAAP9j1kFhF8g4/8AAAAAAAAD/cDOtJV11GP/AAAAAAAAA/3FQTaYlSWD/wAAAAAAAAP9+CqyO+bDY/8AAAAAAAAD/gKQ1VqO9wP/AAAAAAAAA/4RaVlp3Eej/wAAAAAAAAP+Jex5YDDQU/8AAAAAAAAD/mIIGt9ce4P/AAAAAAAAA/5mdEx10f5D/wAAAAAAAAP+ge0H7W49s/8AAAAAAAAD/rDjDQSv1XP/AAAAAAAAA/7WHaEzs97Q==
+2016010101	2	AAAAAT9999442OqAP++O3Q0hbodAWQAAAAAAAAAAABQ/8AAAAAAAAD9999442OqAP/AAAAAAAAA/yFB9SCTtDD/wAAAAAAAAP8rEYepdZJQ/8AAAAAAAAD/QBFSCz7oCP/AAAAAAAAA/0wEEESPJpj/wAAAAAAAAP9cMcwkqV/w/8AAAAAAAAD/cFhjUNpfQP/AAAAAAAAA/4RbXvlYcHD/wAAAAAAAAP+LfusTEpkg/8AAAAAAAAD/jpMYPNkewP/AAAAAAAAA/5HO72sickT/wAAAAAAAAP+SotU5UAuM/8AAAAAAAAD/mOOW6vWARP/AAAAAAAAA/6H6hLdRX6j/wAAAAAAAAP+mWOGMCM28/8AAAAAAAAD/rvxpFgM51P/AAAAAAAAA/7A5G95eSGj/wAAAAAAAAP+1XL4NZ1x0/8AAAAAAAAD/ux0oguTaqP/AAAAAAAAA/747dDSFuhw==
+2016010101	4	AAAAAT+m3C8b+aEwP+nnt0aPb99AWQAAAAAAAAAAABQ/8AAAAAAAAD+m3C8b+aEwP/AAAAAAAAA/wqh/J03ZZD/wAAAAAAAAP8hR8P9etYQ/8AAAAAAAAD/LimcZGNpcP/AAAAAAAAA/y9rSQzptnD/wAAAAAAAAP8xKCwRKtYQ/8AAAAAAAAD/OHKj1I0kAP/AAAAAAAAA/0U1CjDt30D/wAAAAAAAAP9TJZF/m8So/8AAAAAAAAD/X5NgXQqCcP/AAAAAAAAA/3U4Pc39zgD/wAAAAAAAAP+EoZ6D2qps/8AAAAAAAAD/jh+t93i02P/AAAAAAAAA/5CC3KD3kgD/wAAAAAAAAP+XLXomaYzU/8AAAAAAAAD/l77f3TCRnP/AAAAAAAAA/5nBAvJUh9T/wAAAAAAAAP+aBoOqcEJc/8AAAAAAAAD/nORw5P+61P/AAAAAAAAA/6ee3Ro9v3w==
+2016010101	9	AAAAAT94j9Ko3+8AP+ye/IOuWodAWQAAAAAAAAAAABQ/8AAAAAAAAD94j9Ko3+8AP/AAAAAAAAA/tpi5NXGOoD/wAAAAAAAAP7kBKwA7FVA/8AAAAAAAAD+6ZiX8vyl4P/AAAAAAAAA/vKYyE1wMwD/wAAAAAAAAP88IICp+Wuw/8AAAAAAAAD/Rf1DR/nYCP/AAAAAAAAA/0tiT8Hi23j/wAAAAAAAAP9ZjjsvoSIQ/8AAAAAAAAD/Yw8CuJo10P/AAAAAAAAA/4JxkDZESmz/wAAAAAAAAP+OWyVTrD70/8AAAAAAAAD/lCywmoa8pP/AAAAAAAAA/5qE6JgXOqD/wAAAAAAAAP+c5D/dODgc/8AAAAAAAAD/na/LamNpTP/AAAAAAAAA/58LfPZN/Wj/wAAAAAAAAP+hFD9uTt3s/8AAAAAAAAD/ppyKoGxwSP/AAAAAAAAA/7J78g65ahw==
+2016010101	7	AAAAAT+w0YOxALEgP+7pmMCXM6NAWQAAAAAAAAAAABQ/8AAAAAAAAD+w0YOxALEgP/AAAAAAAAA/ussJ+5XCYD/wAAAAAAAAP7vUNps4Jlg/8AAAAAAAAD/SqVawjDUuP/AAAAAAAAA/0x5qYNX6LD/wAAAAAAAAP9bZxqhzvSY/8AAAAAAAAD/XnNdg7cBMP/AAAAAAAAA/2x2qu7q0uD/wAAAAAAAAP9xJCj7zyhI/8AAAAAAAAD/g3WOI62xRP/AAAAAAAAA/4+HblPSBPj/wAAAAAAAAP+RragUFCeU/8AAAAAAAAD/lPU5vIOy5P/AAAAAAAAA/5b5ITmsTtD/wAAAAAAAAP+dDXlx0KII/8AAAAAAAAD/nqnp9eJ8IP/AAAAAAAAA/5+EfjnCKtT/wAAAAAAAAP+iR1Oqq/eA/8AAAAAAAAD/seyDlr7UZP/AAAAAAAAA/7umYwJczow==
+2016010101	3	AAAAAT+PrxzQmgxAP+yI5iOn0R9AWQAAAAAAAAAAABQ/8AAAAAAAAD+PrxzQmgxAP/AAAAAAAAA/usZCS3p5+D/wAAAAAAAAP7/Ocl72CPg/8AAAAAAAAD/JdvEBcGOYP/AAAAAAAAA/y8dhB3biJD/wAAAAAAAAP8/6diire1w/8AAAAAAAAD/Ss7JjSMrKP/AAAAAAAAA/1OC2ONxJIj/wAAAAAAAAP9f4AXbIObI/8AAAAAAAAD/aL6okrWAeP/AAAAAAAAA/2nvQXsZKej/wAAAAAAAAP9sPH7Op2JQ/8AAAAAAAAD/bokDdbHxMP/AAAAAAAAA/4OGWwub7Ij/wAAAAAAAAP+GlfGzlZaA/8AAAAAAAAD/jCh7PFfXbP/AAAAAAAAA/5bkV07slUz/wAAAAAAAAP+dOBabKd4Y/8AAAAAAAAD/sBGyzE1oGP/AAAAAAAAA/7IjmI6fRHw==
+2016010101	3	AAAAAT+iwh6S7vcQP+32CXrkdbBAWQAAAAAAAAAAABQ/8AAAAAAAAD+iwh6S7vcQP/AAAAAAAAA/t67fQY2C2D/wAAAAAAAAP86nR6+FEdg/8AAAAAAAAD/SG1NPAaBOP/AAAAAAAAA/1yaevz30bj/wAAAAAAAAP9dEQwxzz6I/8AAAAAAAAD/ZUuSXd4T8P/AAAAAAAAA/34pBg2b31j/wAAAAAAAAP+AxOo6w1yE/8AAAAAAAAD/ivT1IuFU4P/AAAAAAAAA/5kIy5KKqZD/wAAAAAAAAP+e49pCwiPE/8AAAAAAAAD/n86eoyQWmP/AAAAAAAAA/6CcPWbgzjj/wAAAAAAAAP+moC0U0QAg/8AAAAAAAAD/ssCdPT333P/AAAAAAAAA/7RDu9dsEKT/wAAAAAAAAP+0g0SD0ZTc/8AAAAAAAAD/tMMyRN499P/AAAAAAAAA/7fYJeuR1sA==
+2016010101	8	AAAAAT+vbWwQJIKAP+3oh2cHsfVAWQAAAAAAAAAAABQ/8AAAAAAAAD+vbWwQJIKAP/AAAAAAAAA/sD2W5LsTwD/wAAAAAAAAP7W5ko/KlGg/8AAAAAAAAD/AzWM6x868P/AAAAAAAAA/w+dcmAQQ9D/wAAAAAAAAP80scAfdPcQ/8AAAAAAAAD/SV2boSEjQP/AAAAAAAAA/1LcR5GwflD/wAAAAAAAAP9UR6g21fII/8AAAAAAAAD/a3gGas/4GP/AAAAAAAAA/2y3/zBc39j/wAAAAAAAAP9w7UysaBrI/8AAAAAAAAD/hZas1hPtiP/AAAAAAAAA/4YSE6Xzv8z/wAAAAAAAAP+H7gcJekFQ/8AAAAAAAAD/iw9La42+dP/AAAAAAAAA/47nu8/tkND/wAAAAAAAAP+igforyjBw/8AAAAAAAAD/tQfieUskQP/AAAAAAAAA/7eiHZwex9Q==
+2016010101	2	AAAAAT+OO4OGgTfAP+6QIf1AgStAWQAAAAAAAAAAABQ/8AAAAAAAAD+OO4OGgTfAP/AAAAAAAAA/vb9gdDyVyD/wAAAAAAAAP79FkV6vweA/8AAAAAAAAD/AyQ1hlqdMP/AAAAAAAAA/xiq3P1Y0FD/wAAAAAAAAP8d+JDFFNSA/8AAAAAAAAD/LatxGWuN4P/AAAAAAAAA/zhih9XlkfD/wAAAAAAAAP89rWAnvkfw/8AAAAAAAAD/RBM+9Hf7uP/AAAAAAAAA/3viXXCtLbj/wAAAAAAAAP98Cuvp1PWo/8AAAAAAAAD/hMrTMMC1XP/AAAAAAAAA/4nvAX2O6Qj/wAAAAAAAAP+MIMzc5k54/8AAAAAAAAD/ppZhPsHx7P/AAAAAAAAA/6jZq+26ZzT/wAAAAAAAAP+vVzchE7E8/8AAAAAAAAD/uBLbMgVpTP/AAAAAAAAA/7pAh/UCBKw==
+2016010101	3	AAAAAT9ZFAM69NoAP+7C3JfwsyNAWQAAAAAAAAAAABQ/8AAAAAAAAD9ZFAM69NoAP/AAAAAAAAA/hRUWzT7ngD/wAAAAAAAAP6S+GYhz/3A/8AAAAAAAAD+mfzOf1ZCgP/AAAAAAAAA/s+TTBkdiID/wAAAAAAAAP8Ezd0TYr5w/8AAAAAAAAD/WeqxSn9JsP/AAAAAAAAA/2JQy3vAB1j/wAAAAAAAAP9kCK18MQW4/8AAAAAAAAD/d/cx9uvkQP/AAAAAAAAA/343Qj5pFID/wAAAAAAAAP+EZfDhmZ0Q/8AAAAAAAAD/hx1Fh5B0NP/AAAAAAAAA/52S6S92nrT/wAAAAAAAAP+hZVFKc/HE/8AAAAAAAAD/pikIpuRuUP/AAAAAAAAA/6i70lkktsj/wAAAAAAAAP+uRxKeqS+s/8AAAAAAAAD/sqaSdpgvqP/AAAAAAAAA/7sLcl/CzIw==
+2016010101	0	AAAAAT9iAVlY8O0AP+n+Tr9bC/ZAWQAAAAAAAAAAABQ/8AAAAAAAAD9iAVlY8O0AP/AAAAAAAAA/ne9OjzQSID/wAAAAAAAAP54+gQvEzwA/8AAAAAAAAD+gt+lQ1DIAP/AAAAAAAAA/qHraWSbA4D/wAAAAAAAAP8FFNT1aJ3w/8AAAAAAAAD/IC7GNR4BIP/AAAAAAAAA/yuSgvQ3gWD/wAAAAAAAAP8wsFl5eTkQ/8AAAAAAAAD/NzrOTu/P0P/AAAAAAAAA/zpOYjIcxTD/wAAAAAAAAP9AuUQHZtYw/8AAAAAAAAD/X/YXsSa9WP/AAAAAAAAA/2E6WGGV2WD/wAAAAAAAAP9jbZBeUn8Q/8AAAAAAAAD/hVQrv7522P/AAAAAAAAA/4uUYSgqXQT/wAAAAAAAAP+OcMkDo4tg/8AAAAAAAAD/p4nXF6JO9P/AAAAAAAAA/6f5Ov1sL9g==
+2016010101	7	AAAAAT+hzZvW1llwP+5/TQhG10RAWQAAAAAAAAAAABQ/8AAAAAAAAD+hzZvW1llwP/AAAAAAAAA/vHHmmNz3WD/wAAAAAAAAP8a/FYscQ/g/8AAAAAAAAD/J1RRHsOgEP/AAAAAAAAA/ypIAO1TrBD/wAAAAAAAAP8seBaEFWZQ/8AAAAAAAAD/R+kIoQAXoP/AAAAAAAAA/0qaIewbYAj/wAAAAAAAAP9eMWP0Wv9Q/8AAAAAAAAD/c52jWDXYqP/AAAAAAAAA/39bulBS6bj/wAAAAAAAAP+GEPfm4qVs/8AAAAAAAAD/iaPd5T7uoP/AAAAAAAAA/40EtfiUosT/wAAAAAAAAP+RPqWspTmU/8AAAAAAAAD/l8vJVyv8AP/AAAAAAAAA/5juMYgKLXD/wAAAAAAAAP+slqrsWj3c/8AAAAAAAAD/tTWV1+bJJP/AAAAAAAAA/7n9NCEbXRA==


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org