From 817cf41f5c090d9ab0d898b2c3bdabf362329819 Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 30 Oct 2015 13:10:08 -0500 Subject: [PATCH 1/6] druid aggregators based on datasketches lib http://datasketches.github.io/ --- extensions/datasketches/README.md | 9 + extensions/datasketches/pom.xml | 119 + .../datasketches/EmptySketchAggregator.java | 71 + .../EmptySketchBufferAggregator.java | 64 + .../datasketches/SketchAggregator.java | 108 + .../datasketches/SketchAggregatorFactory.java | 220 ++ .../datasketches/SketchBufferAggregator.java | 126 + .../SketchBuildAggregatorFactory.java | 69 + .../SketchBuildComplexMetricSerde.java | 81 + .../SketchEstimatePostAggregator.java | 118 + .../datasketches/SketchJsonSerializer.java | 37 + .../SketchMergeAggregatorFactory.java | 127 + .../SketchMergeComplexMetricSerde.java | 83 + .../datasketches/SketchModule.java | 68 + .../datasketches/SketchObjectStrategy.java | 107 + .../datasketches/SketchOperations.java | 129 + .../datasketches/SketchSetPostAggregator.java | 160 + .../datasketches/SynchronizedUnion.java | 68 + .../io.druid.initialization.DruidModule | 1 + .../datasketches/SketchAggregationTest.java | 209 + .../src/test/resources/simple_test_data.tsv | 3360 ++++++++++++++++ .../simple_test_data_aggregators.json | 12 + .../simple_test_data_group_by_query.json | 84 + .../simple_test_data_record_parser.json | 16 + .../src/test/resources/sketch_test_data.tsv | 3361 +++++++++++++++++ .../sketch_test_data_aggregators.json | 14 + .../sketch_test_data_group_by_query.json | 83 + .../sketch_test_data_record_parser.json | 16 + 28 files changed, 8920 insertions(+) create mode 100644 extensions/datasketches/README.md create mode 100644 extensions/datasketches/pom.xml create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java create mode 100644 extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule create mode 100644 extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java create mode 100644 extensions/datasketches/src/test/resources/simple_test_data.tsv create mode 100644 extensions/datasketches/src/test/resources/simple_test_data_aggregators.json create mode 100644 extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json create mode 100644 extensions/datasketches/src/test/resources/simple_test_data_record_parser.json create mode 100644 extensions/datasketches/src/test/resources/sketch_test_data.tsv create mode 100644 extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json create mode 100644 extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json create mode 100644 extensions/datasketches/src/test/resources/sketch_test_data_record_parser.json diff --git a/extensions/datasketches/README.md b/extensions/datasketches/README.md new file mode 100644 index 000000000000..a934b622ec21 --- /dev/null +++ b/extensions/datasketches/README.md @@ -0,0 +1,9 @@ +This module provides druid aggregators based on http://datasketches.github.io/ . + +Credits: This module is a result of feedback and work done by following people. + +https://github.com/cheddar +https://github.com/himanshug +https://github.com/leerho +https://github.com/will-lauer + diff --git a/extensions/datasketches/pom.xml b/extensions/datasketches/pom.xml new file mode 100644 index 000000000000..30a375f6a45a --- /dev/null +++ b/extensions/datasketches/pom.xml @@ -0,0 +1,119 @@ + + + + + 4.0.0 + + io.druid.extensions + druid-datasketches + druid-datasketches + Druid Aggregators based on datasketches lib http://datasketches.github.io/ + + + io.druid + druid + 0.9.0-SNAPSHOT + ../../pom.xml + + + + + com.yahoo.datasketches + sketches-core + 0.1.1 + + + io.druid + druid-api + ${druid.api.version} + provided + + + io.druid + druid-processing + ${project.parent.version} + provided + + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + provided + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + provided + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + provided + + + com.fasterxml.jackson.datatype + jackson-datatype-guava + ${jackson.version} + provided + + + com.fasterxml.jackson.datatype + jackson-datatype-joda + ${jackson.version} + provided + + + com.fasterxml.jackson.dataformat + jackson-dataformat-smile + ${jackson.version} + provided + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-json-provider + ${jackson.version} + provided + + + com.fasterxml.jackson.jaxrs + jackson-jaxrs-smile-provider + ${jackson.version} + provided + + + + + junit + junit + test + + + io.druid + druid-processing + ${project.parent.version} + test-jar + test + + + + diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java new file mode 100644 index 000000000000..0b469d701327 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java @@ -0,0 +1,71 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import io.druid.query.aggregation.Aggregator; + +public class EmptySketchAggregator implements Aggregator +{ + private final String name; + + public EmptySketchAggregator(String name) + { + this.name = name; + } + + @Override + public void aggregate() + { + } + + @Override + public void reset() + { + } + + @Override + public Object get() + { + return SketchOperations.EMPTY_SKETCH; + } + + @Override + public float getFloat() + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong() + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public String getName() + { + return name; + } + + @Override + public void close() + { + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java new file mode 100644 index 000000000000..21be7ccb39d5 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java @@ -0,0 +1,64 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import io.druid.query.aggregation.BufferAggregator; + +import java.nio.ByteBuffer; + +public class EmptySketchBufferAggregator implements BufferAggregator +{ + public EmptySketchBufferAggregator() + { + } + + @Override + public void init(ByteBuffer buf, int position) + { + } + + @Override + public void aggregate(ByteBuffer buf, int position) + { + } + + @Override + public Object get(ByteBuffer buf, int position) + { + return SketchOperations.EMPTY_SKETCH; + } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public void close() + { + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java new file mode 100644 index 000000000000..54aaec1eb8a6 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java @@ -0,0 +1,108 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.yahoo.sketches.Family; +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.theta.SetOpReturnState; +import com.yahoo.sketches.theta.SetOperation; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Union; +import io.druid.query.aggregation.Aggregator; +import io.druid.segment.ObjectColumnSelector; + +public class SketchAggregator implements Aggregator +{ + private final ObjectColumnSelector selector; + private final String name; + private final int size; + + private Union union; + + public SketchAggregator(String name, ObjectColumnSelector selector, int size) + { + this.name = name; + this.selector = selector; + this.size = size; + union = new SynchronizedUnion((Union) SetOperation.builder().build(size, Family.UNION)); + } + + @Override + public void aggregate() + { + Object update = selector.get(); + + if(update == null) { + return; + } + + SetOpReturnState success; + if (update instanceof Memory) { + success = union.update((Memory) update); + } else { + success = union.update((Sketch) update); + } + + if(success != SetOpReturnState.Success) { + throw new IllegalStateException("Sketch Aggregation failed with state " + success); + } + } + + @Override + public void reset() + { + union.reset(); + } + + @Override + public Object get() + { + //in the code below, I am returning SetOp.getResult(true, null) + //"true" returns an ordered sketch but slower to compute than unordered sketch. + //however, advantage of ordered sketch is that they are faster to "union" later + //given that results from the aggregator will be combined further, it is better + //to return the ordered sketch here + return union.getResult(true, null); + } + + @Override + public float getFloat() + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong() + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public String getName() + { + return name; + } + + @Override + public void close() + { + union = null; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java new file mode 100644 index 000000000000..cb1aab16eade --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java @@ -0,0 +1,220 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Preconditions; +import com.google.common.primitives.Doubles; +import com.metamx.common.IAE; +import com.yahoo.sketches.Family; +import com.yahoo.sketches.Util; +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.theta.SetOperation; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Sketches; +import com.yahoo.sketches.theta.Union; +import io.druid.query.aggregation.Aggregator; +import io.druid.query.aggregation.AggregatorFactory; +import io.druid.query.aggregation.BufferAggregator; +import io.druid.segment.ColumnSelectorFactory; +import io.druid.segment.ObjectColumnSelector; + +import java.nio.ByteBuffer; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public abstract class SketchAggregatorFactory implements AggregatorFactory +{ + public static final int DEFAULT_MAX_SKETCH_SIZE = 16384; + + protected final String name; + protected final String fieldName; + protected final int size; + private final byte cacheId; + + public static final Comparator COMPARATOR = new Comparator() + { + @Override + public int compare(Sketch o, Sketch o1) + { + return Doubles.compare(o.getEstimate(), o1.getEstimate()); + } + }; + + public SketchAggregatorFactory(String name, String fieldName, Integer size, byte cacheId) + { + this.name = Preconditions.checkNotNull(name, "Must have a valid, non-null aggregator name"); + this.fieldName = Preconditions.checkNotNull(fieldName, "Must have a valid, non-null fieldName"); + + this.size = size == null ? DEFAULT_MAX_SKETCH_SIZE : size; + Util.checkIfPowerOf2(this.size, "size"); + + this.cacheId = cacheId; + } + + @SuppressWarnings("unchecked") + @Override + public Aggregator factorize(ColumnSelectorFactory metricFactory) + { + ObjectColumnSelector selector = metricFactory.makeObjectColumnSelector(fieldName); + if (selector == null) { + return new EmptySketchAggregator(name); + } else { + return new SketchAggregator(name, selector, size); + } + } + + @SuppressWarnings("unchecked") + @Override + public BufferAggregator factorizeBuffered(ColumnSelectorFactory metricFactory) + { + ObjectColumnSelector selector = metricFactory.makeObjectColumnSelector(fieldName); + if (selector == null) { + return new EmptySketchBufferAggregator(); + } else { + return new SketchBufferAggregator(selector, size, getMaxIntermediateSize()); + } + } + + @Override + public Object deserialize(Object object) + { + return SketchOperations.deserialize(object); + } + + @Override + public Comparator getComparator() + { + return COMPARATOR; + } + + @Override + public Object combine(Object lhs, Object rhs) + { + Union union = (Union) SetOperation.builder().build(size, Family.UNION); + updateUnion(union, lhs); + updateUnion(union, rhs); + return union.getResult(false, null); + } + + private void updateUnion(Union union, Object obj) + { + if (obj == null) { + return; + } else if (obj instanceof Memory) { + union.update((Memory) obj); + } else if (obj instanceof Sketch) { + union.update((Sketch) obj); + } else { + throw new IAE("Object of type [%s] can not be unioned", obj.getClass().getName()); + } + } + + @Override + @JsonProperty + public String getName() + { + return name; + } + + @JsonProperty + public String getFieldName() + { + return fieldName; + } + + @JsonProperty + public int getSize() + { + return size; + } + + @Override + public int getMaxIntermediateSize() + { + return SetOperation.getMaxUnionBytes(size); + } + + @Override + public Object getAggregatorStartValue() + { + return Sketches.updateSketchBuilder().build(size); + } + + @Override + public List requiredFields() + { + return Collections.singletonList(fieldName); + } + + @Override + public byte[] getCacheKey() + { + byte[] fieldNameBytes = fieldName.getBytes(); + return ByteBuffer.allocate(1 + fieldNameBytes.length).put(cacheId).put(fieldNameBytes).array(); + } + + @Override + public String toString() + { + return getClass().getSimpleName() + "{" + + "fieldName='" + fieldName + '\'' + + ", name='" + name + '\'' + + ", size=" + size + + '}'; + } + + + @Override + public boolean equals(Object o) + { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + SketchAggregatorFactory that = (SketchAggregatorFactory) o; + + if (size != that.size) { + return false; + } + if (cacheId != that.cacheId) { + return false; + } + if (!name.equals(that.name)) { + return false; + } + return fieldName.equals(that.fieldName); + + } + + @Override + public int hashCode() + { + int result = name.hashCode(); + result = 31 * result + fieldName.hashCode(); + result = 31 * result + size; + result = 31 * result + (int) cacheId; + return result; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java new file mode 100644 index 000000000000..6607deff9a25 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java @@ -0,0 +1,126 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.yahoo.sketches.Family; +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.memory.MemoryRegion; +import com.yahoo.sketches.memory.NativeMemory; +import com.yahoo.sketches.theta.SetOpReturnState; +import com.yahoo.sketches.theta.SetOperation; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Union; +import io.druid.query.aggregation.BufferAggregator; +import io.druid.segment.ObjectColumnSelector; + +import java.nio.ByteBuffer; +import java.util.HashMap; +import java.util.Map; + +public class SketchBufferAggregator implements BufferAggregator +{ + private final ObjectColumnSelector selector; + private final int size; + private final int maxIntermediateSize; + + private NativeMemory nm; + + private final Map unions = new HashMap<>(); //position in BB -> Union Object + + public SketchBufferAggregator(ObjectColumnSelector selector, int size, int maxIntermediateSize) + { + this.selector = selector; + this.size = size; + this.maxIntermediateSize = maxIntermediateSize; + } + + @Override + public void init(ByteBuffer buf, int position) + { + if (nm == null) { + nm = new NativeMemory(buf); + } + + Memory mem = new MemoryRegion(nm, position, maxIntermediateSize); + unions.put(position, (Union) SetOperation.builder().setMemory(mem).build(size, Family.UNION)); + } + + @Override + public void aggregate(ByteBuffer buf, int position) + { + Object update = selector.get(); + if(update == null) { + return; + } + + Union union = getUnion(buf, position); + SetOpReturnState success; + if (update instanceof Memory) { + success = union.update((Memory) update); + } else { + success = union.update((Sketch) update); + } + + if(success != SetOpReturnState.Success) { + throw new IllegalStateException("Sketch Buffer Aggregation failed with state " + update); + } + } + + @Override + public Object get(ByteBuffer buf, int position) + { + //in the code below, I am returning SetOp.getResult(true, null) + //"true" returns an ordered sketch but slower to compute than unordered sketch. + //however, advantage of ordered sketch is that they are faster to "union" later + //given that results from the aggregator will be combined further, it is better + //to return the ordered sketch here + return getUnion(buf, position).getResult(true, null); + } + + //Note that this is not threadsafe and I don't think it needs to be + private Union getUnion(ByteBuffer buf, int position) + { + Union union = unions.get(position); + if(union == null) { + Memory mem = new MemoryRegion(nm, position, maxIntermediateSize); + union = (Union) SetOperation.wrap(mem); + unions.put(position, union); + } + return union; + } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public void close() { + unions.clear(); + } + +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java new file mode 100644 index 000000000000..22cc3f2a422e --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java @@ -0,0 +1,69 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yahoo.sketches.theta.Sketch; +import io.druid.query.aggregation.AggregatorFactory; + +import java.util.Arrays; +import java.util.List; + +/** + */ +public class SketchBuildAggregatorFactory extends SketchAggregatorFactory +{ + private static final byte CACHE_TYPE_ID = 17; + + @JsonCreator + public SketchBuildAggregatorFactory( + @JsonProperty("name") String name, + @JsonProperty("fieldName") String fieldName, + @JsonProperty("size") Integer size + ) + { + super(name, fieldName, size, CACHE_TYPE_ID); + } + + @Override + public AggregatorFactory getCombiningFactory() + { + return new SketchBuildAggregatorFactory(name, name, size); + } + + @Override + public Object finalizeComputation(Object object) + { + return ((Sketch) object).getEstimate(); + } + + @Override + public List getRequiredColumns() + { + return Arrays.asList(new SketchBuildAggregatorFactory(fieldName, fieldName, size)); + } + + @Override + public String getTypeName() + { + return SketchModule.SKETCH_BUILD; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java new file mode 100644 index 000000000000..8cedeef63d88 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java @@ -0,0 +1,81 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.metamx.common.IAE; +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Sketches; +import com.yahoo.sketches.theta.UpdateSketch; +import io.druid.data.input.InputRow; +import io.druid.segment.serde.ComplexMetricExtractor; + +import java.util.List; + +/** + */ +public class SketchBuildComplexMetricSerde extends SketchMergeComplexMetricSerde +{ + @Override + public ComplexMetricExtractor getExtractor() + { + return new ComplexMetricExtractor() + { + + @Override + public Class extractedClass() + { + return Object.class; + } + + @Override + public Object extractValue(InputRow inputRow, String metricName) + { + Object obj = inputRow.getRaw(metricName); + if (obj == null || obj instanceof Sketch || obj instanceof Memory) { + return obj; + } + + UpdateSketch sketch = Sketches.updateSketchBuilder().build(4096); + if (obj instanceof String) { + sketch.update((String) obj); + } else if (obj instanceof byte[]) { + sketch.update((byte[]) obj); + } else if (obj instanceof Double) { + sketch.update(((Double) obj)); + } else if (obj instanceof Integer || obj instanceof Long) { + sketch.update(((Number) obj).longValue()); + } else if (obj instanceof int[]) { + sketch.update((int[]) obj); + } else if (obj instanceof long[]) { + sketch.update((long[]) obj); + } else if (obj instanceof List) { + for (Object entry : (List) obj) { + sketch.update(entry.toString()); + } + } else { + throw new IAE("Unknown object type[%s] received for ingestion.", obj.getClass()); + } + + return sketch; + } + }; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java new file mode 100644 index 000000000000..b2881d5788f0 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java @@ -0,0 +1,118 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Preconditions; +import com.google.common.collect.Sets; +import com.yahoo.sketches.theta.Sketch; +import io.druid.query.aggregation.PostAggregator; + +import java.util.Comparator; +import java.util.Map; +import java.util.Set; + +public class SketchEstimatePostAggregator implements PostAggregator +{ + + private final String name; + private final PostAggregator field; + + @JsonCreator + public SketchEstimatePostAggregator( + @JsonProperty("name") String name, + @JsonProperty("field") PostAggregator field + ) + { + this.name = Preconditions.checkNotNull(name, "name is null"); + this.field = Preconditions.checkNotNull(field, "field is null"); + } + + @Override + public Set getDependentFields() + { + Set dependentFields = Sets.newHashSet(); + dependentFields.addAll(field.getDependentFields()); + return dependentFields; + } + + @Override + public Comparator getComparator() + { + return SketchAggregatorFactory.COMPARATOR; + } + + @Override + public Object compute(Map combinedAggregators) + { + Sketch sketch = (Sketch) field.compute(combinedAggregators); + return sketch.getEstimate(); + } + + @Override + @JsonProperty + public String getName() + { + return name; + } + + @JsonProperty + public PostAggregator getField() + { + return field; + } + + @Override + public String toString() + { + return "SketchEstimatePostAggregator{" + + "name='" + name + '\'' + + ", field=" + field + + "}"; + } + + @Override + public boolean equals(Object o) + { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + SketchEstimatePostAggregator that = (SketchEstimatePostAggregator) o; + + if (!name.equals(that.name)) { + return false; + } + return field.equals(that.field); + + } + + @Override + public int hashCode() + { + int result = name.hashCode(); + result = 31 * result + field.hashCode(); + return result; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java new file mode 100644 index 000000000000..02038b024e3d --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java @@ -0,0 +1,37 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.yahoo.sketches.theta.Sketch; + +import java.io.IOException; + +public class SketchJsonSerializer extends JsonSerializer +{ + @Override + public void serialize(Sketch sketch, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException + { + jgen.writeBinary(sketch.toByteArray()); + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java new file mode 100644 index 000000000000..6ce64824409c --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java @@ -0,0 +1,127 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.yahoo.sketches.theta.Sketch; +import io.druid.query.aggregation.AggregatorFactory; + +import java.util.Collections; +import java.util.List; + +public class SketchMergeAggregatorFactory extends SketchAggregatorFactory +{ + + private static final byte CACHE_TYPE_ID = 15; + + private final boolean shouldFinalize; + + @JsonCreator + public SketchMergeAggregatorFactory( + @JsonProperty("name") String name, + @JsonProperty("fieldName") String fieldName, + @JsonProperty("size") Integer size, + @JsonProperty("shouldFinalize") Boolean shouldFinalize + ) + { + super(name, fieldName, size, CACHE_TYPE_ID); + this.shouldFinalize = (shouldFinalize == null) ? true : shouldFinalize.booleanValue(); + } + + @Override + public List getRequiredColumns() + { + return Collections.singletonList(new SketchMergeAggregatorFactory(fieldName, fieldName, size, shouldFinalize)); + } + + @Override + public AggregatorFactory getCombiningFactory() + { + return new SketchMergeAggregatorFactory(name, name, size, shouldFinalize); + } + + @JsonProperty + public boolean getShouldFinalize() + { + return shouldFinalize; + } + + /** + * Finalize the computation on sketch object and returns estimate from underlying + * sketch. + * + * @param object the sketch object + * @return sketch object + */ + @Override + public Object finalizeComputation(Object object) + { + if (shouldFinalize) { + return ((Sketch) object).getEstimate(); + } else { + return object; + } + } + + @Override + public String getTypeName() + { + return SketchModule.SET_SKETCH; + } + + @Override + public boolean equals(Object o) + { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + + SketchMergeAggregatorFactory that = (SketchMergeAggregatorFactory) o; + + return shouldFinalize == that.shouldFinalize; + + } + + @Override + public int hashCode() + { + int result = super.hashCode(); + result = 31 * result + (shouldFinalize ? 1 : 0); + return result; + } + + @Override + public String toString() + { + return getClass().getSimpleName() + "{" + + "fieldName='" + fieldName + '\'' + + ", name='" + name + '\'' + + ", size=" + size + '\'' + + ", shouldFinalize=" + shouldFinalize + + + '}'; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java new file mode 100644 index 000000000000..83556e5734d9 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java @@ -0,0 +1,83 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.theta.Sketch; +import io.druid.data.input.InputRow; +import io.druid.segment.column.ColumnBuilder; +import io.druid.segment.data.GenericIndexed; +import io.druid.segment.data.ObjectStrategy; +import io.druid.segment.serde.ColumnPartSerde; +import io.druid.segment.serde.ComplexColumnPartSerde; +import io.druid.segment.serde.ComplexColumnPartSupplier; +import io.druid.segment.serde.ComplexMetricExtractor; +import io.druid.segment.serde.ComplexMetricSerde; + +import java.nio.ByteBuffer; + +public class SketchMergeComplexMetricSerde extends ComplexMetricSerde +{ + private SketchObjectStrategy strategy = new SketchObjectStrategy(); + + @Override + public String getTypeName() + { + return SketchModule.SET_SKETCH; + } + + @Override + public ComplexMetricExtractor getExtractor() + { + return new ComplexMetricExtractor() + { + @Override + public Class extractedClass() + { + return Sketch.class; + } + + @Override + public Object extractValue(InputRow inputRow, String metricName) + { + final Object object = inputRow.getRaw(metricName); + if (object == null || object instanceof Sketch || object instanceof Memory) { + return object; + } + return SketchOperations.deserialize(object); + } + }; + } + + @Override + public ColumnPartSerde deserializeColumn(ByteBuffer buffer, ColumnBuilder builder) + { + GenericIndexed ge = GenericIndexed.read(buffer, strategy); + builder.setComplexColumn(new ComplexColumnPartSupplier(getTypeName(), ge)); + return new ComplexColumnPartSerde(ge, getTypeName()); + } + + @Override + public ObjectStrategy getObjectStrategy() + { + return strategy; + } + +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java new file mode 100644 index 000000000000..ea34259adcea --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java @@ -0,0 +1,68 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.google.inject.Binder; + +import com.yahoo.sketches.theta.Sketch; +import io.druid.initialization.DruidModule; +import io.druid.segment.serde.ComplexMetrics; + +import java.util.Arrays; +import java.util.List; + +public class SketchModule implements DruidModule +{ + + public static final String SET_SKETCH = "setSketch"; + public static final String SKETCH_BUILD = "sketchBuild"; + + @Override + public void configure(Binder binder) + { + //gives the extractor to ingest non-sketch input data + if (ComplexMetrics.getSerdeForType(SKETCH_BUILD) == null) { + ComplexMetrics.registerSerde(SKETCH_BUILD, new SketchBuildComplexMetricSerde()); + } + + //gives the extractor to ingest sketch input data + if (ComplexMetrics.getSerdeForType(SET_SKETCH) == null) { + ComplexMetrics.registerSerde(SET_SKETCH, new SketchMergeComplexMetricSerde()); + } + } + + @Override + public List getJacksonModules() + { + return Arrays.asList( + new SimpleModule("SketchModule") + .registerSubtypes( + new NamedType(SketchBuildAggregatorFactory.class, "sketchBuild"), + new NamedType(SketchMergeAggregatorFactory.class, "sketchMerge"), + new NamedType(SketchEstimatePostAggregator.class, "sketchEstimate"), + new NamedType(SketchSetPostAggregator.class, "sketchSetOper") + ) + .addSerializer(Sketch.class, new SketchJsonSerializer()) + ); + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java new file mode 100644 index 000000000000..9ac21ebfd85b --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java @@ -0,0 +1,107 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.google.common.primitives.Longs; +import com.metamx.common.IAE; +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.memory.MemoryRegion; +import com.yahoo.sketches.memory.NativeMemory; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Sketches; +import io.druid.segment.data.ObjectStrategy; + +import java.nio.ByteBuffer; + +public class SketchObjectStrategy implements ObjectStrategy +{ + + private static final byte[] EMPTY_BYTES = new byte[]{}; + private static final Sketch EMPTY_SKETCH = Sketches.updateSketchBuilder().build().compact(true, null); + + @Override + public int compare(Object s1, Object s2) + { + if (s1 instanceof Sketch) { + if (s2 instanceof Sketch) { + return SketchAggregatorFactory.COMPARATOR.compare((Sketch) s1, (Sketch) s2); + } else { + return -1; + } + } + if (s1 instanceof Memory) { + if (s2 instanceof Memory) { + Memory s1Mem = (Memory) s1; + Memory s2Mem = (Memory) s2; + + // We have two Ordered Compact sketches, so just compare their last entry if they have the size. + // This is to produce a deterministic ordering, though it might not match the actual estimate + // ordering, but that's ok because this comparator is only used by GenericIndexed + int retVal = Longs.compare(s1Mem.getCapacity(), s2Mem.getCapacity()); + if (retVal == 0) { + retVal = Longs.compare(s1Mem.getLong(s1Mem.getCapacity() - 8), s2Mem.getLong(s2Mem.getCapacity() - 8)); + } + + return retVal; + } else { + return 1; + } + } + throw new IAE("Unknwon class[%s], toString[%s]", s1.getClass(), s1); + + } + + @Override + public Class getClazz() + { + return Sketch.class; + } + + @Override + public Object fromByteBuffer(ByteBuffer buffer, int numBytes) + { + if (numBytes == 0) { + return EMPTY_SKETCH; + } + + return new MemoryRegion(new NativeMemory(buffer), buffer.position(), numBytes); + } + + @Override + public byte[] toBytes(Object obj) + { + if (obj instanceof Sketch) { + Sketch sketch = (Sketch) obj; + if (sketch.isEmpty()) { + return EMPTY_BYTES; + } + return sketch.toByteArray(); + } else if (obj instanceof Memory) { + Memory mem = (Memory) obj; + byte[] retVal = new byte[(int) mem.getCapacity()]; + mem.getByteArray(0, retVal, 0, (int) mem.getCapacity()); + return retVal; + } else if (obj == null) { + return EMPTY_BYTES; + } else { + throw new IAE("Unknown class[%s], toString[%s]", obj.getClass(), obj); + } + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java new file mode 100644 index 000000000000..5df8ba1fd08e --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java @@ -0,0 +1,129 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.google.common.base.Charsets; +import com.metamx.common.logger.Logger; +import com.yahoo.sketches.Family; +import com.yahoo.sketches.memory.NativeMemory; +import com.yahoo.sketches.theta.AnotB; +import com.yahoo.sketches.theta.Intersection; +import com.yahoo.sketches.theta.SetOpReturnState; +import com.yahoo.sketches.theta.SetOperation; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Sketches; +import com.yahoo.sketches.theta.Union; +import org.apache.commons.codec.binary.Base64; + +public class SketchOperations +{ + + private static final Logger LOG = new Logger(SketchOperations.class); + + public static final Sketch EMPTY_SKETCH = Sketches.updateSketchBuilder().build().compact(true, null); + + public static enum Func + { + UNION, + INTERSECT, + NOT; + } + + public static Sketch deserialize(Object serializedSketch) + { + if (serializedSketch instanceof String) { + return deserializeFromBase64EncodedString((String) serializedSketch); + } else if (serializedSketch instanceof byte[]) { + return deserializeFromByteArray((byte[]) serializedSketch); + } else if (serializedSketch instanceof Sketch) { + return (Sketch) serializedSketch; + } + + throw new IllegalStateException( + "Object is not of a type that can deserialize to sketch: " + + serializedSketch.getClass() + ); + } + + public static Sketch deserializeFromBase64EncodedString(String str) + { + return deserializeFromByteArray( + Base64.decodeBase64( + str.getBytes(Charsets.UTF_8) + ) + ); + } + + public static Sketch deserializeFromByteArray(byte[] data) + { + NativeMemory mem = new NativeMemory(data); + if(Sketch.getSerializationVersion(mem) < 3) { + return Sketches.heapifySketch(mem); + } else { + return Sketches.wrapSketch(mem); + } + } + + public static Sketch sketchSetOperation(Func func, int sketchSize, Sketch... sketches) + { + //in the code below, I am returning SetOp.getResult(false, null) + //"false" gets us an unordered sketch which is faster to build + //"true" returns an ordered sketch but slower to compute. advantage of ordered sketch + //is that they are faster to "union" later but given that this method is used in + //the final stages of query processing, ordered sketch would be of no use. + switch (func) { + case UNION: + Union union = (Union) SetOperation.builder().build(sketchSize, Family.UNION); + for(Sketch sketch : sketches) { + SetOpReturnState success = union.update(sketch); + if(success != SetOpReturnState.Success) { + throw new IllegalStateException("Sketch operation failed " + func); + } + } + return union.getResult(false, null); + case INTERSECT: + Intersection intersection = (Intersection) SetOperation.builder().build(sketchSize, Family.INTERSECTION); + for(Sketch sketch : sketches) { + SetOpReturnState success = intersection.update(sketch); + if(success != SetOpReturnState.Success) { + throw new IllegalStateException("Sketch operation failed " + func); + } + } + return intersection.getResult(false, null); + case NOT: + if(sketches.length < 2) { + throw new IllegalArgumentException("A-Not-B requires atleast 2 sketches"); + } + + Sketch result = sketches[0]; + for (int i = 1; i < sketches.length; i++) { + AnotB anotb = (AnotB) SetOperation.builder().build(sketchSize, Family.A_NOT_B); + SetOpReturnState success = anotb.update(result, sketches[i]); + if(success != SetOpReturnState.Success) { + throw new IllegalStateException("Sketch operation failed " + func); + } + result = anotb.getResult(false, null); + } + return result; + default: + throw new IllegalArgumentException("Unknown sketch operation " + func); + } + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java new file mode 100644 index 000000000000..50152070b81f --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java @@ -0,0 +1,160 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import io.druid.query.aggregation.datasketches.SketchOperations.Func; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.collect.Sets; +import com.metamx.common.IAE; +import com.metamx.common.logger.Logger; + +import com.yahoo.sketches.Util; +import com.yahoo.sketches.theta.Sketch; +import io.druid.query.aggregation.PostAggregator; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class SketchSetPostAggregator implements PostAggregator +{ + + private static final Logger LOG = new Logger(SketchSetPostAggregator.class); + + private final String name; + private final List fields; + private final Func func; + private final int maxSketchSize; + + @JsonCreator + public SketchSetPostAggregator( + @JsonProperty("name") String name, + @JsonProperty("func") String func, + @JsonProperty("size") Integer maxSize, + @JsonProperty("fields") List fields + ) + { + this.name = name; + this.fields = fields; + this.func = SketchOperations.Func.valueOf(func); + this.maxSketchSize = maxSize == null ? SketchAggregatorFactory.DEFAULT_MAX_SKETCH_SIZE : maxSize; + Util.checkIfPowerOf2(this.maxSketchSize, "size"); + + if (fields.size() <= 1) { + throw new IAE("Illegal number of fields[%s], must be > 1", fields.size()); + } + } + + @Override + public Set getDependentFields() + { + Set dependentFields = Sets.newLinkedHashSet(); + for (PostAggregator field : fields) { + dependentFields.addAll(field.getDependentFields()); + } + return dependentFields; + } + + @Override + public Comparator getComparator() + { + return SketchAggregatorFactory.COMPARATOR; + } + + @Override + public Object compute(final Map combinedAggregators) + { + Sketch[] sketches = new Sketch[fields.size()]; + for (int i = 0; i < sketches.length; i++) { + sketches[i] = (Sketch) fields.get(i).compute(combinedAggregators); + } + + return SketchOperations.sketchSetOperation(func, maxSketchSize, sketches); + } + + @Override + @JsonProperty + public String getName() + { + return name; + } + + @JsonProperty + public String getFunc() + { + return func.toString(); + } + + @JsonProperty + public List getFields() + { + return fields; + } + + @JsonProperty + public int getSize() + { + return maxSketchSize; + } + + @Override + public String toString() + { + return "SketchSetPostAggregator{" + "name='" + name + '\'' + ", fields=" + fields + ", func=" + func + ", size=" + maxSketchSize +"}"; + } + + @Override + public boolean equals(Object o) + { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + SketchSetPostAggregator that = (SketchSetPostAggregator) o; + + if (maxSketchSize != that.maxSketchSize) { + return false; + } + if (!name.equals(that.name)) { + return false; + } + if (!fields.equals(that.fields)) { + return false; + } + return func == that.func; + + } + + @Override + public int hashCode() + { + int result = name.hashCode(); + result = 31 * result + fields.hashCode(); + result = 31 * result + func.hashCode(); + result = 31 * result + maxSketchSize; + return result; + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java new file mode 100644 index 000000000000..37dad2071c67 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java @@ -0,0 +1,68 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.yahoo.sketches.memory.Memory; +import com.yahoo.sketches.theta.CompactSketch; +import com.yahoo.sketches.theta.SetOpReturnState; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Union; + +/** + */ +public class SynchronizedUnion implements Union +{ + private final Union delegate; + + public SynchronizedUnion(Union delegate) + { + this.delegate = delegate; + } + + @Override + public synchronized SetOpReturnState update(Sketch sketch) + { + return delegate.update(sketch); + } + + @Override + public synchronized SetOpReturnState update(Memory memory) + { + return delegate.update(memory); + } + + @Override + public synchronized CompactSketch getResult(boolean b, Memory memory) + { + return delegate.getResult(b, memory); + } + + @Override + public synchronized byte[] toByteArray() + { + return delegate.toByteArray(); + } + + @Override + public synchronized void reset() + { + delegate.reset(); + } +} diff --git a/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule b/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule new file mode 100644 index 000000000000..3c66dca1cdb3 --- /dev/null +++ b/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule @@ -0,0 +1 @@ +io.druid.query.aggregation.datasketches.SketchModule diff --git a/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java new file mode 100644 index 000000000000..5313e80b6e5c --- /dev/null +++ b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java @@ -0,0 +1,209 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.io.Files; +import com.metamx.common.guava.Sequence; +import com.metamx.common.guava.Sequences; +import com.yahoo.sketches.theta.Sketch; +import com.yahoo.sketches.theta.Sketches; +import io.druid.data.input.MapBasedRow; +import io.druid.granularity.QueryGranularity; +import io.druid.query.aggregation.AggregationTestHelper; +import io.druid.query.aggregation.AggregatorFactory; +import io.druid.query.aggregation.PostAggregator; +import io.druid.query.aggregation.post.FieldAccessPostAggregator; +import org.joda.time.DateTime; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.List; + +/** + */ +public class SketchAggregationTest +{ + private final AggregationTestHelper helper; + + @Rule + public final TemporaryFolder tempFolder = new TemporaryFolder(); + + public SketchAggregationTest() + { + SketchModule sm = new SketchModule(); + sm.configure(null); + helper = new AggregationTestHelper(sm.getJacksonModules(), tempFolder); + } + + @Test + public void testSimpleDataIngestAndQuery() throws Exception + { + Sequence seq = helper.createIndexAndRunQueryOnSegment( + new File(this.getClass().getClassLoader().getResource("simple_test_data.tsv").getFile()), + readFileFromClasspathAsString("simple_test_data_record_parser.json"), + readFileFromClasspathAsString("simple_test_data_aggregators.json"), + 0, + QueryGranularity.NONE, + 5, + readFileFromClasspathAsString("simple_test_data_group_by_query.json") + ); + + List results = Sequences.toList(seq, Lists.newArrayList()); + Assert.assertEquals(1, results.size()); + Assert.assertEquals( + new MapBasedRow( + DateTime.parse("2014-10-19T00:00:00.000Z"), + ImmutableMap + .builder() + .put("sketch_count", 50.0) + .put("sketchEstimatePostAgg", 50.0) + .put("sketchUnionPostAggEstimate", 50.0) + .put("sketchIntersectionPostAggEstimate", 50.0) + .put("sketchAnotBPostAggEstimate", 0.0) + .put("non_existing_col_validation", 0.0) + .build() + ), + results.get(0) + ); + } + + @Test + public void testSketchDataIngestAndQuery() throws Exception + { + Sequence seq = helper.createIndexAndRunQueryOnSegment( + new File(SketchAggregationTest.class.getClassLoader().getResource("sketch_test_data.tsv").getFile()), + readFileFromClasspathAsString("sketch_test_data_record_parser.json"), + readFileFromClasspathAsString("sketch_test_data_aggregators.json"), + 0, + QueryGranularity.NONE, + 5, + readFileFromClasspathAsString("sketch_test_data_group_by_query.json") + ); + + List results = Sequences.toList(seq, Lists.newArrayList()); + Assert.assertEquals(1, results.size()); + Assert.assertEquals( + new MapBasedRow( + DateTime.parse("2014-10-19T00:00:00.000Z"), + ImmutableMap + .builder() + .put("sids_sketch_count", 50.0) + .put("sketchEstimatePostAgg", 50.0) + .put("sketchUnionPostAggEstimate", 50.0) + .put("sketchIntersectionPostAggEstimate", 50.0) + .put("sketchAnotBPostAggEstimate", 0.0) + .put("non_existing_col_validation", 0.0) + .build() + ), + results.get(0) + ); + } + + @Test + public void testSketchMergeAggregatorFactorySerde() throws Exception + { + assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, null)); + assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, false)); + assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, true)); + } + + @Test + public void testSketchMergeFinalization() throws Exception + { + Sketch sketch = Sketches.updateSketchBuilder().build(128); + + SketchMergeAggregatorFactory agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, null); + Assert.assertEquals(0.0, ((Double) agg.finalizeComputation(sketch)).doubleValue(), 0.0001); + + agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, true); + Assert.assertEquals(0.0, ((Double) agg.finalizeComputation(sketch)).doubleValue(), 0.0001); + + agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, false); + Assert.assertEquals(sketch, agg.finalizeComputation(sketch)); + } + + @Test + public void testSketchBuildAggregatorFactorySerde() throws Exception + { + assertAggregatorFactorySerde(new SketchBuildAggregatorFactory("name", "fieldName", 16)); + } + + private void assertAggregatorFactorySerde(AggregatorFactory agg) throws Exception{ + Assert.assertEquals( + agg, + helper.getObjectMapper().readValue( + helper.getObjectMapper().writeValueAsString(agg), + AggregatorFactory.class + ) + ); + } + + @Test + public void testSketchEstimatePostAggregatorSerde() throws Exception + { + assertPostAggregatorSerde( + new SketchEstimatePostAggregator( + "name", + new FieldAccessPostAggregator("name", "fieldName") + ) + ); + } + + @Test + public void testSketchSetPostAggregatorSerde() throws Exception + { + assertPostAggregatorSerde( + new SketchSetPostAggregator( + "name", + "INTERSECT", + null, + Lists.newArrayList( + new FieldAccessPostAggregator("name1", "fieldName1"), + new FieldAccessPostAggregator("name2", "fieldName2") + ) + ) + ); + } + + private void assertPostAggregatorSerde(PostAggregator agg) throws Exception{ + Assert.assertEquals( + agg, + helper.getObjectMapper().readValue( + helper.getObjectMapper().writeValueAsString(agg), + PostAggregator.class + ) + ); + } + + public final static String readFileFromClasspathAsString(String fileName) throws IOException + { + return Files.asCharSource( + new File(SketchAggregationTest.class.getClassLoader().getResource(fileName).getFile()), + Charset.forName("UTF-8") + ).read(); + } +} diff --git a/extensions/datasketches/src/test/resources/simple_test_data.tsv b/extensions/datasketches/src/test/resources/simple_test_data.tsv new file mode 100644 index 000000000000..361f350905d7 --- /dev/null +++ b/extensions/datasketches/src/test/resources/simple_test_data.tsv @@ -0,0 +1,3360 @@ +2014102000 product_1 pty_country_34 +2014102000 product_14 pty_country_8 +2014102000 product_10 pty_country_39 +2014102000 product_7 pty_country_6 +2014102000 product_15 pty_country_28 +2014102000 product_14 pty_country_44 +2014102000 product_11 pty_country_16 +2014102000 product_13 pty_country_12 +2014102000 product_5 pty_country_31 +2014102000 product_12 pty_country_9 +2014102001 product_10 pty_country_29 +2014102001 product_1 pty_country_23 +2014102001 product_14 pty_country_5 +2014102001 product_10 pty_country_17 +2014102001 product_3 pty_country_8 +2014102001 product_1 pty_country_13 +2014102001 product_8 pty_country_12 +2014102001 product_1 pty_country_34 +2014102001 product_9 pty_country_6 +2014102001 product_3 pty_country_34 +2014102002 product_7 pty_country_44 +2014102002 product_7 pty_country_16 +2014102002 product_5 pty_country_1 +2014102002 product_10 pty_country_8 +2014102002 product_14 pty_country_43 +2014102002 product_6 pty_country_17 +2014102002 product_8 pty_country_43 +2014102002 product_15 pty_country_8 +2014102002 product_4 pty_country_37 +2014102002 product_8 pty_country_4 +2014102003 product_10 pty_country_42 +2014102003 product_9 pty_country_34 +2014102003 product_2 pty_country_14 +2014102003 product_4 pty_country_18 +2014102003 product_15 pty_country_39 +2014102003 product_14 pty_country_8 +2014102003 product_13 pty_country_17 +2014102003 product_6 pty_country_12 +2014102003 product_9 pty_country_49 +2014102003 product_8 pty_country_5 +2014102004 product_8 pty_country_35 +2014102004 product_14 pty_country_4 +2014102004 product_7 pty_country_5 +2014102004 product_5 pty_country_16 +2014102004 product_5 pty_country_4 +2014102004 product_4 pty_country_43 +2014102004 product_2 pty_country_20 +2014102004 product_5 pty_country_3 +2014102004 product_8 pty_country_48 +2014102004 product_7 pty_country_29 +2014102005 product_7 pty_country_19 +2014102005 product_15 pty_country_6 +2014102005 product_3 pty_country_1 +2014102005 product_4 pty_country_39 +2014102005 product_10 pty_country_42 +2014102005 product_4 pty_country_14 +2014102005 product_13 pty_country_41 +2014102005 product_9 pty_country_34 +2014102005 product_4 pty_country_42 +2014102005 product_7 pty_country_34 +2014102006 product_7 pty_country_6 +2014102006 product_1 pty_country_36 +2014102006 product_4 pty_country_27 +2014102006 product_3 pty_country_4 +2014102006 product_5 pty_country_14 +2014102006 product_2 pty_country_48 +2014102006 product_11 pty_country_21 +2014102006 product_13 pty_country_26 +2014102006 product_8 pty_country_1 +2014102006 product_4 pty_country_31 +2014102007 product_4 pty_country_5 +2014102007 product_11 pty_country_18 +2014102007 product_13 pty_country_48 +2014102007 product_2 pty_country_1 +2014102007 product_6 pty_country_12 +2014102007 product_11 pty_country_37 +2014102007 product_14 pty_country_43 +2014102007 product_8 pty_country_35 +2014102007 product_7 pty_country_18 +2014102007 product_12 pty_country_19 +2014102008 product_14 pty_country_30 +2014102008 product_3 pty_country_22 +2014102008 product_6 pty_country_46 +2014102008 product_10 pty_country_25 +2014102008 product_15 pty_country_32 +2014102008 product_11 pty_country_8 +2014102008 product_4 pty_country_7 +2014102008 product_1 pty_country_28 +2014102008 product_7 pty_country_26 +2014102008 product_9 pty_country_21 +2014102009 product_10 pty_country_23 +2014102009 product_12 pty_country_3 +2014102009 product_6 pty_country_17 +2014102009 product_2 pty_country_27 +2014102009 product_3 pty_country_11 +2014102009 product_1 pty_country_30 +2014102009 product_12 pty_country_25 +2014102009 product_9 pty_country_43 +2014102009 product_3 pty_country_44 +2014102009 product_7 pty_country_17 +2014102010 product_6 pty_country_16 +2014102010 product_4 pty_country_41 +2014102010 product_12 pty_country_44 +2014102010 product_1 pty_country_9 +2014102010 product_2 pty_country_12 +2014102010 product_9 pty_country_20 +2014102010 product_4 pty_country_16 +2014102010 product_5 pty_country_28 +2014102010 product_12 pty_country_46 +2014102010 product_9 pty_country_15 +2014102011 product_10 pty_country_12 +2014102011 product_6 pty_country_35 +2014102011 product_1 pty_country_43 +2014102011 product_1 pty_country_15 +2014102011 product_4 pty_country_2 +2014102011 product_9 pty_country_11 +2014102011 product_6 pty_country_50 +2014102011 product_10 pty_country_18 +2014102011 product_15 pty_country_22 +2014102011 product_8 pty_country_20 +2014102012 product_7 pty_country_14 +2014102012 product_8 pty_country_37 +2014102012 product_6 pty_country_37 +2014102012 product_13 pty_country_17 +2014102012 product_9 pty_country_31 +2014102012 product_3 pty_country_22 +2014102012 product_8 pty_country_29 +2014102012 product_3 pty_country_8 +2014102012 product_10 pty_country_17 +2014102012 product_7 pty_country_20 +2014102013 product_7 pty_country_33 +2014102013 product_8 pty_country_46 +2014102013 product_5 pty_country_44 +2014102013 product_11 pty_country_25 +2014102013 product_1 pty_country_8 +2014102013 product_2 pty_country_23 +2014102013 product_7 pty_country_45 +2014102013 product_14 pty_country_8 +2014102013 product_8 pty_country_5 +2014102013 product_12 pty_country_45 +2014102014 product_13 pty_country_36 +2014102014 product_10 pty_country_14 +2014102014 product_15 pty_country_38 +2014102014 product_9 pty_country_20 +2014102014 product_3 pty_country_28 +2014102014 product_5 pty_country_25 +2014102014 product_12 pty_country_30 +2014102014 product_9 pty_country_49 +2014102014 product_8 pty_country_10 +2014102014 product_4 pty_country_50 +2014102015 product_8 pty_country_29 +2014102015 product_3 pty_country_10 +2014102015 product_6 pty_country_34 +2014102015 product_11 pty_country_47 +2014102015 product_14 pty_country_16 +2014102015 product_1 pty_country_12 +2014102015 product_5 pty_country_19 +2014102015 product_15 pty_country_31 +2014102015 product_11 pty_country_25 +2014102015 product_11 pty_country_3 +2014102016 product_8 pty_country_6 +2014102016 product_7 pty_country_32 +2014102016 product_8 pty_country_12 +2014102016 product_9 pty_country_41 +2014102016 product_8 pty_country_29 +2014102016 product_6 pty_country_19 +2014102016 product_9 pty_country_30 +2014102016 product_9 pty_country_41 +2014102016 product_4 pty_country_47 +2014102016 product_1 pty_country_24 +2014102017 product_2 pty_country_47 +2014102017 product_3 pty_country_32 +2014102017 product_8 pty_country_44 +2014102017 product_2 pty_country_38 +2014102017 product_14 pty_country_2 +2014102017 product_5 pty_country_9 +2014102017 product_8 pty_country_19 +2014102017 product_5 pty_country_10 +2014102017 product_8 pty_country_14 +2014102017 product_12 pty_country_34 +2014102018 product_12 pty_country_26 +2014102018 product_5 pty_country_40 +2014102018 product_5 pty_country_31 +2014102018 product_10 pty_country_34 +2014102018 product_14 pty_country_8 +2014102018 product_11 pty_country_5 +2014102018 product_1 pty_country_9 +2014102018 product_2 pty_country_26 +2014102018 product_11 pty_country_31 +2014102018 product_1 pty_country_17 +2014102019 product_13 pty_country_43 +2014102019 product_5 pty_country_25 +2014102019 product_5 pty_country_16 +2014102019 product_8 pty_country_32 +2014102019 product_4 pty_country_7 +2014102019 product_12 pty_country_2 +2014102019 product_1 pty_country_35 +2014102019 product_15 pty_country_40 +2014102019 product_1 pty_country_39 +2014102019 product_4 pty_country_14 +2014102020 product_7 pty_country_37 +2014102020 product_11 pty_country_13 +2014102020 product_7 pty_country_40 +2014102020 product_7 pty_country_1 +2014102020 product_5 pty_country_9 +2014102020 product_14 pty_country_39 +2014102020 product_7 pty_country_34 +2014102020 product_5 pty_country_28 +2014102020 product_4 pty_country_3 +2014102020 product_10 pty_country_27 +2014102021 product_8 pty_country_1 +2014102021 product_13 pty_country_25 +2014102021 product_3 pty_country_26 +2014102021 product_6 pty_country_25 +2014102021 product_15 pty_country_13 +2014102021 product_15 pty_country_50 +2014102021 product_10 pty_country_27 +2014102021 product_6 pty_country_34 +2014102021 product_13 pty_country_41 +2014102021 product_9 pty_country_42 +2014102022 product_7 pty_country_37 +2014102022 product_13 pty_country_50 +2014102022 product_12 pty_country_22 +2014102022 product_13 pty_country_17 +2014102022 product_13 pty_country_33 +2014102022 product_15 pty_country_38 +2014102022 product_13 pty_country_4 +2014102022 product_9 pty_country_39 +2014102022 product_7 pty_country_33 +2014102022 product_15 pty_country_18 +2014102023 product_6 pty_country_43 +2014102023 product_6 pty_country_20 +2014102023 product_15 pty_country_13 +2014102023 product_2 pty_country_20 +2014102023 product_13 pty_country_32 +2014102023 product_11 pty_country_19 +2014102023 product_4 pty_country_22 +2014102023 product_15 pty_country_38 +2014102023 product_4 pty_country_20 +2014102023 product_3 pty_country_15 +2014102100 product_5 pty_country_5 +2014102100 product_14 pty_country_44 +2014102100 product_9 pty_country_45 +2014102100 product_4 pty_country_5 +2014102100 product_7 pty_country_2 +2014102100 product_10 pty_country_49 +2014102100 product_9 pty_country_24 +2014102100 product_3 pty_country_44 +2014102100 product_1 pty_country_2 +2014102100 product_13 pty_country_31 +2014102101 product_4 pty_country_50 +2014102101 product_8 pty_country_5 +2014102101 product_8 pty_country_34 +2014102101 product_4 pty_country_24 +2014102101 product_14 pty_country_34 +2014102101 product_9 pty_country_17 +2014102101 product_7 pty_country_8 +2014102101 product_9 pty_country_39 +2014102101 product_13 pty_country_9 +2014102101 product_4 pty_country_28 +2014102102 product_10 pty_country_16 +2014102102 product_2 pty_country_37 +2014102102 product_12 pty_country_1 +2014102102 product_3 pty_country_49 +2014102102 product_3 pty_country_47 +2014102102 product_6 pty_country_29 +2014102102 product_9 pty_country_24 +2014102102 product_1 pty_country_27 +2014102102 product_12 pty_country_47 +2014102102 product_2 pty_country_43 +2014102103 product_15 pty_country_46 +2014102103 product_15 pty_country_6 +2014102103 product_13 pty_country_8 +2014102103 product_14 pty_country_1 +2014102103 product_5 pty_country_17 +2014102103 product_9 pty_country_31 +2014102103 product_5 pty_country_34 +2014102103 product_9 pty_country_20 +2014102103 product_6 pty_country_36 +2014102103 product_13 pty_country_5 +2014102104 product_2 pty_country_15 +2014102104 product_12 pty_country_20 +2014102104 product_15 pty_country_43 +2014102104 product_12 pty_country_23 +2014102104 product_6 pty_country_30 +2014102104 product_6 pty_country_50 +2014102104 product_1 pty_country_3 +2014102104 product_15 pty_country_4 +2014102104 product_3 pty_country_1 +2014102104 product_4 pty_country_45 +2014102105 product_11 pty_country_42 +2014102105 product_2 pty_country_49 +2014102105 product_13 pty_country_43 +2014102105 product_1 pty_country_12 +2014102105 product_9 pty_country_37 +2014102105 product_8 pty_country_6 +2014102105 product_2 pty_country_6 +2014102105 product_8 pty_country_36 +2014102105 product_3 pty_country_17 +2014102105 product_10 pty_country_44 +2014102106 product_15 pty_country_1 +2014102106 product_6 pty_country_11 +2014102106 product_9 pty_country_32 +2014102106 product_10 pty_country_43 +2014102106 product_6 pty_country_45 +2014102106 product_12 pty_country_34 +2014102106 product_13 pty_country_1 +2014102106 product_5 pty_country_37 +2014102106 product_4 pty_country_44 +2014102106 product_14 pty_country_18 +2014102107 product_2 pty_country_29 +2014102107 product_2 pty_country_20 +2014102107 product_7 pty_country_22 +2014102107 product_9 pty_country_46 +2014102107 product_14 pty_country_2 +2014102107 product_5 pty_country_16 +2014102107 product_15 pty_country_4 +2014102107 product_12 pty_country_45 +2014102107 product_14 pty_country_11 +2014102107 product_9 pty_country_27 +2014102108 product_2 pty_country_18 +2014102108 product_8 pty_country_23 +2014102108 product_10 pty_country_5 +2014102108 product_2 pty_country_5 +2014102108 product_6 pty_country_43 +2014102108 product_5 pty_country_19 +2014102108 product_7 pty_country_8 +2014102108 product_6 pty_country_3 +2014102108 product_8 pty_country_34 +2014102108 product_13 pty_country_23 +2014102109 product_14 pty_country_8 +2014102109 product_4 pty_country_43 +2014102109 product_11 pty_country_10 +2014102109 product_2 pty_country_33 +2014102109 product_1 pty_country_41 +2014102109 product_11 pty_country_39 +2014102109 product_13 pty_country_31 +2014102109 product_15 pty_country_23 +2014102109 product_5 pty_country_38 +2014102109 product_2 pty_country_32 +2014102110 product_12 pty_country_44 +2014102110 product_1 pty_country_2 +2014102110 product_13 pty_country_14 +2014102110 product_14 pty_country_3 +2014102110 product_10 pty_country_5 +2014102110 product_10 pty_country_28 +2014102110 product_14 pty_country_44 +2014102110 product_13 pty_country_26 +2014102110 product_5 pty_country_40 +2014102110 product_10 pty_country_26 +2014102111 product_10 pty_country_48 +2014102111 product_13 pty_country_23 +2014102111 product_3 pty_country_28 +2014102111 product_9 pty_country_40 +2014102111 product_5 pty_country_43 +2014102111 product_14 pty_country_12 +2014102111 product_7 pty_country_16 +2014102111 product_14 pty_country_11 +2014102111 product_2 pty_country_35 +2014102111 product_12 pty_country_43 +2014102112 product_7 pty_country_22 +2014102112 product_4 pty_country_10 +2014102112 product_6 pty_country_41 +2014102112 product_11 pty_country_28 +2014102112 product_6 pty_country_2 +2014102112 product_7 pty_country_49 +2014102112 product_10 pty_country_8 +2014102112 product_5 pty_country_18 +2014102112 product_12 pty_country_16 +2014102112 product_14 pty_country_29 +2014102113 product_7 pty_country_35 +2014102113 product_9 pty_country_45 +2014102113 product_8 pty_country_2 +2014102113 product_14 pty_country_49 +2014102113 product_6 pty_country_50 +2014102113 product_7 pty_country_49 +2014102113 product_12 pty_country_17 +2014102113 product_6 pty_country_17 +2014102113 product_4 pty_country_8 +2014102113 product_8 pty_country_44 +2014102114 product_6 pty_country_33 +2014102114 product_15 pty_country_7 +2014102114 product_9 pty_country_40 +2014102114 product_12 pty_country_13 +2014102114 product_12 pty_country_21 +2014102114 product_14 pty_country_12 +2014102114 product_9 pty_country_7 +2014102114 product_5 pty_country_47 +2014102114 product_8 pty_country_25 +2014102114 product_14 pty_country_34 +2014102115 product_11 pty_country_8 +2014102115 product_8 pty_country_29 +2014102115 product_1 pty_country_22 +2014102115 product_1 pty_country_44 +2014102115 product_2 pty_country_26 +2014102115 product_14 pty_country_1 +2014102115 product_5 pty_country_32 +2014102115 product_14 pty_country_39 +2014102115 product_7 pty_country_38 +2014102115 product_5 pty_country_28 +2014102116 product_7 pty_country_50 +2014102116 product_7 pty_country_47 +2014102116 product_3 pty_country_34 +2014102116 product_5 pty_country_47 +2014102116 product_12 pty_country_8 +2014102116 product_3 pty_country_4 +2014102116 product_15 pty_country_28 +2014102116 product_9 pty_country_29 +2014102116 product_8 pty_country_20 +2014102116 product_6 pty_country_12 +2014102117 product_13 pty_country_25 +2014102117 product_4 pty_country_44 +2014102117 product_11 pty_country_13 +2014102117 product_2 pty_country_43 +2014102117 product_8 pty_country_13 +2014102117 product_7 pty_country_16 +2014102117 product_10 pty_country_14 +2014102117 product_1 pty_country_38 +2014102117 product_11 pty_country_21 +2014102117 product_11 pty_country_1 +2014102118 product_7 pty_country_49 +2014102118 product_12 pty_country_21 +2014102118 product_11 pty_country_21 +2014102118 product_5 pty_country_41 +2014102118 product_9 pty_country_31 +2014102118 product_5 pty_country_49 +2014102118 product_3 pty_country_30 +2014102118 product_7 pty_country_4 +2014102118 product_11 pty_country_33 +2014102118 product_14 pty_country_5 +2014102119 product_4 pty_country_48 +2014102119 product_8 pty_country_22 +2014102119 product_13 pty_country_35 +2014102119 product_12 pty_country_8 +2014102119 product_13 pty_country_12 +2014102119 product_6 pty_country_34 +2014102119 product_4 pty_country_27 +2014102119 product_11 pty_country_24 +2014102119 product_3 pty_country_14 +2014102119 product_12 pty_country_38 +2014102120 product_5 pty_country_10 +2014102120 product_14 pty_country_37 +2014102120 product_4 pty_country_50 +2014102120 product_13 pty_country_11 +2014102120 product_1 pty_country_40 +2014102120 product_10 pty_country_43 +2014102120 product_5 pty_country_26 +2014102120 product_3 pty_country_26 +2014102120 product_5 pty_country_33 +2014102120 product_12 pty_country_32 +2014102121 product_12 pty_country_16 +2014102121 product_9 pty_country_35 +2014102121 product_3 pty_country_12 +2014102121 product_4 pty_country_3 +2014102121 product_4 pty_country_40 +2014102121 product_2 pty_country_30 +2014102121 product_10 pty_country_11 +2014102121 product_2 pty_country_41 +2014102121 product_7 pty_country_37 +2014102121 product_9 pty_country_33 +2014102122 product_8 pty_country_34 +2014102122 product_11 pty_country_10 +2014102122 product_9 pty_country_10 +2014102122 product_14 pty_country_10 +2014102122 product_2 pty_country_11 +2014102122 product_8 pty_country_25 +2014102122 product_7 pty_country_25 +2014102122 product_10 pty_country_16 +2014102122 product_6 pty_country_33 +2014102122 product_9 pty_country_27 +2014102123 product_10 pty_country_16 +2014102123 product_13 pty_country_48 +2014102123 product_10 pty_country_34 +2014102123 product_2 pty_country_16 +2014102123 product_7 pty_country_41 +2014102123 product_10 pty_country_26 +2014102123 product_12 pty_country_43 +2014102123 product_10 pty_country_35 +2014102123 product_7 pty_country_11 +2014102123 product_5 pty_country_38 +2014102200 product_12 pty_country_1 +2014102200 product_2 pty_country_24 +2014102200 product_12 pty_country_27 +2014102200 product_1 pty_country_16 +2014102200 product_2 pty_country_42 +2014102200 product_13 pty_country_18 +2014102200 product_8 pty_country_32 +2014102200 product_11 pty_country_25 +2014102200 product_2 pty_country_49 +2014102200 product_3 pty_country_14 +2014102201 product_10 pty_country_16 +2014102201 product_3 pty_country_2 +2014102201 product_9 pty_country_27 +2014102201 product_8 pty_country_6 +2014102201 product_9 pty_country_5 +2014102201 product_13 pty_country_34 +2014102201 product_2 pty_country_50 +2014102201 product_4 pty_country_46 +2014102201 product_14 pty_country_23 +2014102201 product_2 pty_country_23 +2014102202 product_8 pty_country_40 +2014102202 product_8 pty_country_13 +2014102202 product_2 pty_country_9 +2014102202 product_7 pty_country_15 +2014102202 product_7 pty_country_42 +2014102202 product_11 pty_country_17 +2014102202 product_14 pty_country_24 +2014102202 product_5 pty_country_50 +2014102202 product_9 pty_country_1 +2014102202 product_3 pty_country_27 +2014102203 product_10 pty_country_11 +2014102203 product_3 pty_country_19 +2014102203 product_10 pty_country_8 +2014102203 product_14 pty_country_18 +2014102203 product_8 pty_country_11 +2014102203 product_2 pty_country_29 +2014102203 product_2 pty_country_48 +2014102203 product_13 pty_country_23 +2014102203 product_9 pty_country_6 +2014102203 product_1 pty_country_9 +2014102204 product_11 pty_country_2 +2014102204 product_12 pty_country_8 +2014102204 product_3 pty_country_33 +2014102204 product_7 pty_country_25 +2014102204 product_11 pty_country_16 +2014102204 product_3 pty_country_4 +2014102204 product_1 pty_country_24 +2014102204 product_8 pty_country_46 +2014102204 product_7 pty_country_30 +2014102204 product_10 pty_country_2 +2014102205 product_11 pty_country_49 +2014102205 product_6 pty_country_41 +2014102205 product_9 pty_country_9 +2014102205 product_14 pty_country_5 +2014102205 product_10 pty_country_31 +2014102205 product_11 pty_country_20 +2014102205 product_4 pty_country_11 +2014102205 product_3 pty_country_41 +2014102205 product_7 pty_country_15 +2014102205 product_11 pty_country_49 +2014102206 product_5 pty_country_31 +2014102206 product_10 pty_country_13 +2014102206 product_9 pty_country_28 +2014102206 product_1 pty_country_48 +2014102206 product_12 pty_country_31 +2014102206 product_11 pty_country_40 +2014102206 product_11 pty_country_12 +2014102206 product_8 pty_country_16 +2014102206 product_14 pty_country_22 +2014102206 product_7 pty_country_44 +2014102207 product_4 pty_country_1 +2014102207 product_6 pty_country_36 +2014102207 product_1 pty_country_41 +2014102207 product_14 pty_country_16 +2014102207 product_11 pty_country_37 +2014102207 product_14 pty_country_34 +2014102207 product_8 pty_country_42 +2014102207 product_13 pty_country_34 +2014102207 product_2 pty_country_14 +2014102207 product_2 pty_country_18 +2014102208 product_5 pty_country_10 +2014102208 product_4 pty_country_20 +2014102208 product_9 pty_country_32 +2014102208 product_15 pty_country_24 +2014102208 product_7 pty_country_48 +2014102208 product_15 pty_country_36 +2014102208 product_13 pty_country_33 +2014102208 product_12 pty_country_40 +2014102208 product_11 pty_country_40 +2014102208 product_5 pty_country_7 +2014102209 product_3 pty_country_8 +2014102209 product_12 pty_country_10 +2014102209 product_5 pty_country_29 +2014102209 product_7 pty_country_18 +2014102209 product_4 pty_country_31 +2014102209 product_10 pty_country_6 +2014102209 product_8 pty_country_25 +2014102209 product_9 pty_country_2 +2014102209 product_15 pty_country_17 +2014102209 product_14 pty_country_16 +2014102210 product_9 pty_country_8 +2014102210 product_4 pty_country_46 +2014102210 product_5 pty_country_46 +2014102210 product_10 pty_country_38 +2014102210 product_13 pty_country_34 +2014102210 product_8 pty_country_29 +2014102210 product_5 pty_country_28 +2014102210 product_5 pty_country_45 +2014102210 product_2 pty_country_5 +2014102210 product_1 pty_country_48 +2014102211 product_3 pty_country_45 +2014102211 product_13 pty_country_26 +2014102211 product_6 pty_country_15 +2014102211 product_4 pty_country_50 +2014102211 product_11 pty_country_38 +2014102211 product_10 pty_country_29 +2014102211 product_8 pty_country_39 +2014102211 product_12 pty_country_25 +2014102211 product_1 pty_country_25 +2014102211 product_10 pty_country_16 +2014102212 product_8 pty_country_13 +2014102212 product_7 pty_country_48 +2014102212 product_2 pty_country_23 +2014102212 product_14 pty_country_41 +2014102212 product_15 pty_country_27 +2014102212 product_10 pty_country_38 +2014102212 product_9 pty_country_13 +2014102212 product_14 pty_country_40 +2014102212 product_6 pty_country_50 +2014102212 product_8 pty_country_8 +2014102213 product_12 pty_country_30 +2014102213 product_2 pty_country_6 +2014102213 product_15 pty_country_44 +2014102213 product_3 pty_country_35 +2014102213 product_3 pty_country_15 +2014102213 product_1 pty_country_26 +2014102213 product_10 pty_country_33 +2014102213 product_3 pty_country_2 +2014102213 product_9 pty_country_17 +2014102213 product_5 pty_country_15 +2014102214 product_5 pty_country_41 +2014102214 product_5 pty_country_12 +2014102214 product_10 pty_country_27 +2014102214 product_13 pty_country_30 +2014102214 product_10 pty_country_8 +2014102214 product_10 pty_country_43 +2014102214 product_4 pty_country_50 +2014102214 product_8 pty_country_50 +2014102214 product_14 pty_country_11 +2014102214 product_2 pty_country_44 +2014102215 product_6 pty_country_40 +2014102215 product_5 pty_country_2 +2014102215 product_3 pty_country_46 +2014102215 product_7 pty_country_48 +2014102215 product_1 pty_country_34 +2014102215 product_14 pty_country_41 +2014102215 product_10 pty_country_21 +2014102215 product_2 pty_country_13 +2014102215 product_13 pty_country_19 +2014102215 product_7 pty_country_3 +2014102216 product_14 pty_country_42 +2014102216 product_11 pty_country_11 +2014102216 product_14 pty_country_35 +2014102216 product_2 pty_country_21 +2014102216 product_12 pty_country_21 +2014102216 product_6 pty_country_32 +2014102216 product_11 pty_country_27 +2014102216 product_12 pty_country_7 +2014102216 product_9 pty_country_34 +2014102216 product_5 pty_country_7 +2014102217 product_1 pty_country_42 +2014102217 product_1 pty_country_32 +2014102217 product_3 pty_country_1 +2014102217 product_7 pty_country_24 +2014102217 product_13 pty_country_41 +2014102217 product_6 pty_country_9 +2014102217 product_14 pty_country_13 +2014102217 product_15 pty_country_1 +2014102217 product_6 pty_country_41 +2014102217 product_15 pty_country_49 +2014102218 product_14 pty_country_12 +2014102218 product_10 pty_country_26 +2014102218 product_4 pty_country_47 +2014102218 product_1 pty_country_25 +2014102218 product_10 pty_country_50 +2014102218 product_5 pty_country_16 +2014102218 product_13 pty_country_49 +2014102218 product_4 pty_country_14 +2014102218 product_11 pty_country_30 +2014102218 product_4 pty_country_36 +2014102219 product_2 pty_country_23 +2014102219 product_5 pty_country_9 +2014102219 product_2 pty_country_20 +2014102219 product_15 pty_country_45 +2014102219 product_1 pty_country_2 +2014102219 product_13 pty_country_47 +2014102219 product_9 pty_country_42 +2014102219 product_3 pty_country_41 +2014102219 product_14 pty_country_19 +2014102219 product_13 pty_country_13 +2014102220 product_13 pty_country_41 +2014102220 product_6 pty_country_39 +2014102220 product_1 pty_country_40 +2014102220 product_2 pty_country_38 +2014102220 product_6 pty_country_43 +2014102220 product_13 pty_country_12 +2014102220 product_7 pty_country_43 +2014102220 product_14 pty_country_13 +2014102220 product_2 pty_country_2 +2014102220 product_11 pty_country_2 +2014102221 product_10 pty_country_38 +2014102221 product_4 pty_country_1 +2014102221 product_5 pty_country_16 +2014102221 product_6 pty_country_47 +2014102221 product_8 pty_country_20 +2014102221 product_4 pty_country_7 +2014102221 product_1 pty_country_19 +2014102221 product_2 pty_country_45 +2014102221 product_15 pty_country_24 +2014102221 product_13 pty_country_28 +2014102222 product_1 pty_country_46 +2014102222 product_15 pty_country_31 +2014102222 product_6 pty_country_30 +2014102222 product_10 pty_country_46 +2014102222 product_9 pty_country_34 +2014102222 product_14 pty_country_23 +2014102222 product_2 pty_country_23 +2014102222 product_3 pty_country_17 +2014102222 product_2 pty_country_17 +2014102222 product_4 pty_country_21 +2014102223 product_12 pty_country_12 +2014102223 product_1 pty_country_46 +2014102223 product_1 pty_country_18 +2014102223 product_5 pty_country_35 +2014102223 product_12 pty_country_2 +2014102223 product_7 pty_country_14 +2014102223 product_14 pty_country_44 +2014102223 product_12 pty_country_9 +2014102223 product_15 pty_country_1 +2014102223 product_5 pty_country_48 +2014102300 product_8 pty_country_33 +2014102300 product_13 pty_country_13 +2014102300 product_11 pty_country_19 +2014102300 product_6 pty_country_16 +2014102300 product_5 pty_country_11 +2014102300 product_4 pty_country_42 +2014102300 product_10 pty_country_5 +2014102300 product_4 pty_country_5 +2014102300 product_8 pty_country_2 +2014102300 product_13 pty_country_2 +2014102301 product_4 pty_country_24 +2014102301 product_14 pty_country_6 +2014102301 product_12 pty_country_42 +2014102301 product_3 pty_country_7 +2014102301 product_11 pty_country_1 +2014102301 product_7 pty_country_18 +2014102301 product_5 pty_country_29 +2014102301 product_15 pty_country_32 +2014102301 product_6 pty_country_8 +2014102301 product_1 pty_country_44 +2014102302 product_15 pty_country_39 +2014102302 product_12 pty_country_8 +2014102302 product_8 pty_country_47 +2014102302 product_12 pty_country_8 +2014102302 product_3 pty_country_27 +2014102302 product_12 pty_country_27 +2014102302 product_2 pty_country_22 +2014102302 product_4 pty_country_18 +2014102302 product_3 pty_country_34 +2014102302 product_2 pty_country_17 +2014102303 product_12 pty_country_20 +2014102303 product_11 pty_country_7 +2014102303 product_10 pty_country_23 +2014102303 product_13 pty_country_8 +2014102303 product_11 pty_country_19 +2014102303 product_7 pty_country_46 +2014102303 product_5 pty_country_16 +2014102303 product_14 pty_country_5 +2014102303 product_11 pty_country_35 +2014102303 product_12 pty_country_13 +2014102304 product_7 pty_country_15 +2014102304 product_8 pty_country_34 +2014102304 product_3 pty_country_19 +2014102304 product_15 pty_country_45 +2014102304 product_10 pty_country_44 +2014102304 product_10 pty_country_4 +2014102304 product_8 pty_country_48 +2014102304 product_9 pty_country_46 +2014102304 product_9 pty_country_37 +2014102304 product_6 pty_country_1 +2014102305 product_6 pty_country_46 +2014102305 product_15 pty_country_27 +2014102305 product_8 pty_country_35 +2014102305 product_13 pty_country_37 +2014102305 product_7 pty_country_26 +2014102305 product_2 pty_country_41 +2014102305 product_7 pty_country_44 +2014102305 product_9 pty_country_11 +2014102305 product_12 pty_country_9 +2014102305 product_13 pty_country_19 +2014102306 product_5 pty_country_8 +2014102306 product_2 pty_country_25 +2014102306 product_15 pty_country_12 +2014102306 product_2 pty_country_27 +2014102306 product_13 pty_country_2 +2014102306 product_5 pty_country_47 +2014102306 product_14 pty_country_22 +2014102306 product_2 pty_country_31 +2014102306 product_13 pty_country_40 +2014102306 product_1 pty_country_32 +2014102307 product_9 pty_country_44 +2014102307 product_4 pty_country_50 +2014102307 product_8 pty_country_20 +2014102307 product_4 pty_country_11 +2014102307 product_12 pty_country_41 +2014102307 product_3 pty_country_38 +2014102307 product_14 pty_country_2 +2014102307 product_4 pty_country_21 +2014102307 product_6 pty_country_34 +2014102307 product_12 pty_country_14 +2014102308 product_1 pty_country_41 +2014102308 product_5 pty_country_41 +2014102308 product_9 pty_country_10 +2014102308 product_13 pty_country_17 +2014102308 product_8 pty_country_16 +2014102308 product_15 pty_country_31 +2014102308 product_15 pty_country_8 +2014102308 product_6 pty_country_24 +2014102308 product_5 pty_country_37 +2014102308 product_9 pty_country_7 +2014102309 product_2 pty_country_21 +2014102309 product_3 pty_country_16 +2014102309 product_10 pty_country_38 +2014102309 product_10 pty_country_35 +2014102309 product_11 pty_country_7 +2014102309 product_1 pty_country_8 +2014102309 product_3 pty_country_26 +2014102309 product_12 pty_country_26 +2014102309 product_10 pty_country_30 +2014102309 product_8 pty_country_27 +2014102310 product_8 pty_country_9 +2014102310 product_15 pty_country_29 +2014102310 product_8 pty_country_39 +2014102310 product_6 pty_country_4 +2014102310 product_14 pty_country_47 +2014102310 product_6 pty_country_41 +2014102310 product_4 pty_country_20 +2014102310 product_14 pty_country_16 +2014102310 product_14 pty_country_49 +2014102310 product_13 pty_country_38 +2014102311 product_10 pty_country_43 +2014102311 product_12 pty_country_1 +2014102311 product_10 pty_country_31 +2014102311 product_2 pty_country_5 +2014102311 product_10 pty_country_12 +2014102311 product_13 pty_country_33 +2014102311 product_12 pty_country_9 +2014102311 product_1 pty_country_38 +2014102311 product_15 pty_country_17 +2014102311 product_13 pty_country_7 +2014102312 product_1 pty_country_44 +2014102312 product_8 pty_country_28 +2014102312 product_12 pty_country_28 +2014102312 product_9 pty_country_36 +2014102312 product_11 pty_country_35 +2014102312 product_2 pty_country_42 +2014102312 product_2 pty_country_40 +2014102312 product_2 pty_country_23 +2014102312 product_5 pty_country_24 +2014102312 product_13 pty_country_8 +2014102313 product_2 pty_country_7 +2014102313 product_11 pty_country_45 +2014102313 product_11 pty_country_48 +2014102313 product_1 pty_country_28 +2014102313 product_10 pty_country_28 +2014102313 product_1 pty_country_20 +2014102313 product_9 pty_country_44 +2014102313 product_7 pty_country_45 +2014102313 product_6 pty_country_22 +2014102313 product_10 pty_country_33 +2014102314 product_13 pty_country_9 +2014102314 product_15 pty_country_27 +2014102314 product_8 pty_country_48 +2014102314 product_2 pty_country_23 +2014102314 product_9 pty_country_38 +2014102314 product_9 pty_country_29 +2014102314 product_4 pty_country_30 +2014102314 product_2 pty_country_38 +2014102314 product_7 pty_country_26 +2014102314 product_2 pty_country_41 +2014102315 product_1 pty_country_19 +2014102315 product_11 pty_country_5 +2014102315 product_4 pty_country_15 +2014102315 product_7 pty_country_32 +2014102315 product_12 pty_country_44 +2014102315 product_5 pty_country_9 +2014102315 product_10 pty_country_27 +2014102315 product_3 pty_country_46 +2014102315 product_1 pty_country_18 +2014102315 product_12 pty_country_7 +2014102316 product_4 pty_country_10 +2014102316 product_7 pty_country_3 +2014102316 product_3 pty_country_26 +2014102316 product_14 pty_country_25 +2014102316 product_1 pty_country_45 +2014102316 product_14 pty_country_5 +2014102316 product_15 pty_country_29 +2014102316 product_8 pty_country_46 +2014102316 product_2 pty_country_17 +2014102316 product_15 pty_country_30 +2014102317 product_7 pty_country_31 +2014102317 product_13 pty_country_34 +2014102317 product_13 pty_country_16 +2014102317 product_14 pty_country_22 +2014102317 product_12 pty_country_14 +2014102317 product_2 pty_country_2 +2014102317 product_13 pty_country_16 +2014102317 product_11 pty_country_43 +2014102317 product_14 pty_country_9 +2014102317 product_8 pty_country_26 +2014102318 product_2 pty_country_30 +2014102318 product_2 pty_country_49 +2014102318 product_8 pty_country_21 +2014102318 product_15 pty_country_47 +2014102318 product_1 pty_country_4 +2014102318 product_7 pty_country_19 +2014102318 product_7 pty_country_30 +2014102318 product_3 pty_country_37 +2014102318 product_4 pty_country_12 +2014102318 product_13 pty_country_12 +2014102319 product_8 pty_country_9 +2014102319 product_12 pty_country_37 +2014102319 product_4 pty_country_43 +2014102319 product_10 pty_country_12 +2014102319 product_7 pty_country_20 +2014102319 product_15 pty_country_4 +2014102319 product_4 pty_country_22 +2014102319 product_2 pty_country_32 +2014102319 product_14 pty_country_33 +2014102319 product_12 pty_country_11 +2014102320 product_4 pty_country_29 +2014102320 product_3 pty_country_8 +2014102320 product_15 pty_country_27 +2014102320 product_10 pty_country_40 +2014102320 product_13 pty_country_7 +2014102320 product_9 pty_country_49 +2014102320 product_13 pty_country_38 +2014102320 product_3 pty_country_35 +2014102320 product_9 pty_country_38 +2014102320 product_6 pty_country_18 +2014102321 product_8 pty_country_1 +2014102321 product_13 pty_country_1 +2014102321 product_3 pty_country_30 +2014102321 product_4 pty_country_21 +2014102321 product_11 pty_country_25 +2014102321 product_13 pty_country_20 +2014102321 product_4 pty_country_2 +2014102321 product_14 pty_country_3 +2014102321 product_8 pty_country_5 +2014102321 product_5 pty_country_28 +2014102322 product_7 pty_country_29 +2014102322 product_8 pty_country_29 +2014102322 product_7 pty_country_40 +2014102322 product_8 pty_country_14 +2014102322 product_6 pty_country_26 +2014102322 product_1 pty_country_10 +2014102322 product_4 pty_country_19 +2014102322 product_15 pty_country_20 +2014102322 product_5 pty_country_44 +2014102322 product_6 pty_country_34 +2014102323 product_10 pty_country_21 +2014102323 product_6 pty_country_7 +2014102323 product_2 pty_country_40 +2014102323 product_6 pty_country_22 +2014102323 product_5 pty_country_45 +2014102323 product_1 pty_country_24 +2014102323 product_13 pty_country_49 +2014102323 product_1 pty_country_9 +2014102323 product_8 pty_country_18 +2014102323 product_12 pty_country_41 +2014102400 product_5 pty_country_41 +2014102400 product_13 pty_country_19 +2014102400 product_14 pty_country_48 +2014102400 product_12 pty_country_33 +2014102400 product_2 pty_country_27 +2014102400 product_5 pty_country_29 +2014102400 product_11 pty_country_44 +2014102400 product_6 pty_country_24 +2014102400 product_2 pty_country_18 +2014102400 product_1 pty_country_34 +2014102401 product_3 pty_country_32 +2014102401 product_3 pty_country_15 +2014102401 product_3 pty_country_17 +2014102401 product_15 pty_country_12 +2014102401 product_8 pty_country_17 +2014102401 product_3 pty_country_32 +2014102401 product_12 pty_country_21 +2014102401 product_14 pty_country_12 +2014102401 product_6 pty_country_2 +2014102401 product_1 pty_country_17 +2014102402 product_1 pty_country_47 +2014102402 product_5 pty_country_26 +2014102402 product_10 pty_country_35 +2014102402 product_13 pty_country_43 +2014102402 product_1 pty_country_5 +2014102402 product_12 pty_country_30 +2014102402 product_6 pty_country_36 +2014102402 product_5 pty_country_5 +2014102402 product_11 pty_country_9 +2014102402 product_2 pty_country_48 +2014102403 product_15 pty_country_30 +2014102403 product_3 pty_country_28 +2014102403 product_15 pty_country_15 +2014102403 product_9 pty_country_7 +2014102403 product_12 pty_country_42 +2014102403 product_13 pty_country_46 +2014102403 product_9 pty_country_7 +2014102403 product_7 pty_country_18 +2014102403 product_2 pty_country_11 +2014102403 product_14 pty_country_35 +2014102404 product_15 pty_country_46 +2014102404 product_10 pty_country_40 +2014102404 product_7 pty_country_23 +2014102404 product_15 pty_country_49 +2014102404 product_6 pty_country_48 +2014102404 product_15 pty_country_6 +2014102404 product_8 pty_country_31 +2014102404 product_11 pty_country_21 +2014102404 product_9 pty_country_34 +2014102404 product_15 pty_country_9 +2014102405 product_13 pty_country_45 +2014102405 product_8 pty_country_39 +2014102405 product_3 pty_country_7 +2014102405 product_5 pty_country_12 +2014102405 product_8 pty_country_18 +2014102405 product_14 pty_country_11 +2014102405 product_3 pty_country_38 +2014102405 product_8 pty_country_48 +2014102405 product_10 pty_country_46 +2014102405 product_15 pty_country_9 +2014102406 product_14 pty_country_3 +2014102406 product_6 pty_country_27 +2014102406 product_4 pty_country_33 +2014102406 product_11 pty_country_27 +2014102406 product_13 pty_country_4 +2014102406 product_10 pty_country_15 +2014102406 product_6 pty_country_25 +2014102406 product_8 pty_country_12 +2014102406 product_1 pty_country_11 +2014102406 product_4 pty_country_22 +2014102407 product_2 pty_country_12 +2014102407 product_2 pty_country_12 +2014102407 product_7 pty_country_39 +2014102407 product_4 pty_country_28 +2014102407 product_15 pty_country_45 +2014102407 product_14 pty_country_24 +2014102407 product_9 pty_country_16 +2014102407 product_15 pty_country_40 +2014102407 product_12 pty_country_9 +2014102407 product_2 pty_country_37 +2014102408 product_8 pty_country_40 +2014102408 product_3 pty_country_13 +2014102408 product_15 pty_country_17 +2014102408 product_8 pty_country_40 +2014102408 product_15 pty_country_45 +2014102408 product_13 pty_country_37 +2014102408 product_11 pty_country_38 +2014102408 product_15 pty_country_40 +2014102408 product_5 pty_country_24 +2014102408 product_11 pty_country_23 +2014102409 product_6 pty_country_15 +2014102409 product_9 pty_country_8 +2014102409 product_6 pty_country_49 +2014102409 product_5 pty_country_11 +2014102409 product_1 pty_country_37 +2014102409 product_13 pty_country_27 +2014102409 product_9 pty_country_17 +2014102409 product_6 pty_country_47 +2014102409 product_10 pty_country_37 +2014102409 product_14 pty_country_34 +2014102410 product_10 pty_country_46 +2014102410 product_14 pty_country_40 +2014102410 product_14 pty_country_20 +2014102410 product_1 pty_country_42 +2014102410 product_13 pty_country_9 +2014102410 product_1 pty_country_20 +2014102410 product_10 pty_country_22 +2014102410 product_7 pty_country_30 +2014102410 product_15 pty_country_2 +2014102410 product_8 pty_country_8 +2014102411 product_9 pty_country_11 +2014102411 product_5 pty_country_10 +2014102411 product_12 pty_country_3 +2014102411 product_4 pty_country_4 +2014102411 product_3 pty_country_41 +2014102411 product_4 pty_country_8 +2014102411 product_9 pty_country_30 +2014102411 product_11 pty_country_2 +2014102411 product_5 pty_country_5 +2014102411 product_4 pty_country_7 +2014102412 product_5 pty_country_47 +2014102412 product_8 pty_country_34 +2014102412 product_15 pty_country_3 +2014102412 product_1 pty_country_11 +2014102412 product_13 pty_country_16 +2014102412 product_8 pty_country_26 +2014102412 product_3 pty_country_34 +2014102412 product_2 pty_country_16 +2014102412 product_11 pty_country_23 +2014102412 product_14 pty_country_48 +2014102413 product_2 pty_country_25 +2014102413 product_14 pty_country_13 +2014102413 product_13 pty_country_5 +2014102413 product_5 pty_country_26 +2014102413 product_10 pty_country_4 +2014102413 product_15 pty_country_7 +2014102413 product_4 pty_country_21 +2014102413 product_6 pty_country_25 +2014102413 product_6 pty_country_47 +2014102413 product_10 pty_country_50 +2014102414 product_11 pty_country_47 +2014102414 product_12 pty_country_19 +2014102414 product_7 pty_country_9 +2014102414 product_13 pty_country_12 +2014102414 product_3 pty_country_10 +2014102414 product_10 pty_country_15 +2014102414 product_11 pty_country_3 +2014102414 product_5 pty_country_2 +2014102414 product_5 pty_country_11 +2014102414 product_7 pty_country_25 +2014102415 product_9 pty_country_31 +2014102415 product_10 pty_country_21 +2014102415 product_3 pty_country_28 +2014102415 product_6 pty_country_41 +2014102415 product_7 pty_country_17 +2014102415 product_10 pty_country_23 +2014102415 product_14 pty_country_18 +2014102415 product_12 pty_country_3 +2014102415 product_4 pty_country_20 +2014102415 product_3 pty_country_16 +2014102416 product_10 pty_country_16 +2014102416 product_5 pty_country_19 +2014102416 product_2 pty_country_40 +2014102416 product_1 pty_country_13 +2014102416 product_8 pty_country_33 +2014102416 product_13 pty_country_29 +2014102416 product_4 pty_country_46 +2014102416 product_7 pty_country_12 +2014102416 product_11 pty_country_39 +2014102416 product_6 pty_country_16 +2014102417 product_15 pty_country_21 +2014102417 product_5 pty_country_39 +2014102417 product_5 pty_country_28 +2014102417 product_11 pty_country_29 +2014102417 product_3 pty_country_49 +2014102417 product_15 pty_country_19 +2014102417 product_8 pty_country_10 +2014102417 product_13 pty_country_8 +2014102417 product_14 pty_country_15 +2014102417 product_2 pty_country_42 +2014102418 product_8 pty_country_30 +2014102418 product_9 pty_country_23 +2014102418 product_8 pty_country_50 +2014102418 product_6 pty_country_6 +2014102418 product_15 pty_country_45 +2014102418 product_9 pty_country_10 +2014102418 product_14 pty_country_48 +2014102418 product_7 pty_country_33 +2014102418 product_8 pty_country_30 +2014102418 product_7 pty_country_13 +2014102419 product_11 pty_country_50 +2014102419 product_2 pty_country_12 +2014102419 product_12 pty_country_38 +2014102419 product_3 pty_country_22 +2014102419 product_9 pty_country_17 +2014102419 product_6 pty_country_19 +2014102419 product_12 pty_country_2 +2014102419 product_5 pty_country_23 +2014102419 product_14 pty_country_32 +2014102419 product_14 pty_country_15 +2014102420 product_15 pty_country_4 +2014102420 product_9 pty_country_9 +2014102420 product_3 pty_country_25 +2014102420 product_12 pty_country_4 +2014102420 product_6 pty_country_46 +2014102420 product_13 pty_country_9 +2014102420 product_12 pty_country_32 +2014102420 product_4 pty_country_1 +2014102420 product_3 pty_country_27 +2014102420 product_14 pty_country_11 +2014102421 product_8 pty_country_3 +2014102421 product_1 pty_country_25 +2014102421 product_1 pty_country_45 +2014102421 product_5 pty_country_3 +2014102421 product_1 pty_country_1 +2014102421 product_3 pty_country_40 +2014102421 product_13 pty_country_13 +2014102421 product_3 pty_country_13 +2014102421 product_10 pty_country_13 +2014102421 product_5 pty_country_28 +2014102422 product_2 pty_country_23 +2014102422 product_12 pty_country_9 +2014102422 product_14 pty_country_31 +2014102422 product_5 pty_country_43 +2014102422 product_13 pty_country_30 +2014102422 product_15 pty_country_6 +2014102422 product_1 pty_country_10 +2014102422 product_12 pty_country_21 +2014102422 product_3 pty_country_37 +2014102422 product_11 pty_country_46 +2014102423 product_7 pty_country_40 +2014102423 product_9 pty_country_30 +2014102423 product_9 pty_country_8 +2014102423 product_2 pty_country_3 +2014102423 product_15 pty_country_23 +2014102423 product_9 pty_country_4 +2014102423 product_7 pty_country_50 +2014102423 product_1 pty_country_9 +2014102423 product_8 pty_country_7 +2014102423 product_14 pty_country_41 +2014102500 product_7 pty_country_34 +2014102500 product_7 pty_country_43 +2014102500 product_15 pty_country_49 +2014102500 product_14 pty_country_46 +2014102500 product_11 pty_country_34 +2014102500 product_3 pty_country_29 +2014102500 product_2 pty_country_39 +2014102500 product_12 pty_country_25 +2014102500 product_8 pty_country_49 +2014102500 product_5 pty_country_38 +2014102501 product_4 pty_country_25 +2014102501 product_2 pty_country_8 +2014102501 product_9 pty_country_8 +2014102501 product_2 pty_country_37 +2014102501 product_13 pty_country_2 +2014102501 product_13 pty_country_9 +2014102501 product_8 pty_country_40 +2014102501 product_6 pty_country_49 +2014102501 product_14 pty_country_40 +2014102501 product_3 pty_country_45 +2014102502 product_12 pty_country_35 +2014102502 product_13 pty_country_12 +2014102502 product_11 pty_country_2 +2014102502 product_4 pty_country_42 +2014102502 product_11 pty_country_42 +2014102502 product_15 pty_country_2 +2014102502 product_11 pty_country_46 +2014102502 product_11 pty_country_19 +2014102502 product_3 pty_country_33 +2014102502 product_3 pty_country_6 +2014102503 product_6 pty_country_29 +2014102503 product_1 pty_country_48 +2014102503 product_14 pty_country_36 +2014102503 product_3 pty_country_7 +2014102503 product_13 pty_country_13 +2014102503 product_12 pty_country_42 +2014102503 product_8 pty_country_10 +2014102503 product_15 pty_country_40 +2014102503 product_5 pty_country_7 +2014102503 product_10 pty_country_31 +2014102504 product_4 pty_country_47 +2014102504 product_3 pty_country_8 +2014102504 product_12 pty_country_39 +2014102504 product_4 pty_country_2 +2014102504 product_11 pty_country_41 +2014102504 product_13 pty_country_44 +2014102504 product_10 pty_country_38 +2014102504 product_1 pty_country_7 +2014102504 product_6 pty_country_3 +2014102504 product_7 pty_country_23 +2014102505 product_9 pty_country_8 +2014102505 product_7 pty_country_24 +2014102505 product_6 pty_country_30 +2014102505 product_4 pty_country_43 +2014102505 product_4 pty_country_11 +2014102505 product_1 pty_country_11 +2014102505 product_8 pty_country_48 +2014102505 product_15 pty_country_26 +2014102505 product_1 pty_country_32 +2014102505 product_8 pty_country_1 +2014102506 product_4 pty_country_28 +2014102506 product_10 pty_country_21 +2014102506 product_7 pty_country_22 +2014102506 product_12 pty_country_28 +2014102506 product_2 pty_country_41 +2014102506 product_13 pty_country_31 +2014102506 product_1 pty_country_48 +2014102506 product_2 pty_country_49 +2014102506 product_14 pty_country_34 +2014102506 product_2 pty_country_23 +2014102507 product_10 pty_country_32 +2014102507 product_12 pty_country_31 +2014102507 product_9 pty_country_12 +2014102507 product_6 pty_country_45 +2014102507 product_15 pty_country_36 +2014102507 product_6 pty_country_44 +2014102507 product_11 pty_country_18 +2014102507 product_6 pty_country_37 +2014102507 product_5 pty_country_32 +2014102507 product_3 pty_country_37 +2014102508 product_12 pty_country_20 +2014102508 product_9 pty_country_42 +2014102508 product_10 pty_country_49 +2014102508 product_14 pty_country_38 +2014102508 product_4 pty_country_39 +2014102508 product_12 pty_country_10 +2014102508 product_15 pty_country_4 +2014102508 product_8 pty_country_9 +2014102508 product_8 pty_country_40 +2014102508 product_7 pty_country_48 +2014102509 product_8 pty_country_41 +2014102509 product_5 pty_country_17 +2014102509 product_11 pty_country_50 +2014102509 product_15 pty_country_38 +2014102509 product_9 pty_country_31 +2014102509 product_12 pty_country_8 +2014102509 product_10 pty_country_10 +2014102509 product_2 pty_country_5 +2014102509 product_8 pty_country_40 +2014102509 product_3 pty_country_39 +2014102510 product_10 pty_country_48 +2014102510 product_1 pty_country_37 +2014102510 product_6 pty_country_20 +2014102510 product_9 pty_country_40 +2014102510 product_10 pty_country_25 +2014102510 product_4 pty_country_47 +2014102510 product_12 pty_country_4 +2014102510 product_11 pty_country_27 +2014102510 product_15 pty_country_18 +2014102510 product_3 pty_country_39 +2014102511 product_6 pty_country_22 +2014102511 product_8 pty_country_2 +2014102511 product_8 pty_country_39 +2014102511 product_4 pty_country_33 +2014102511 product_9 pty_country_4 +2014102511 product_10 pty_country_27 +2014102511 product_3 pty_country_25 +2014102511 product_11 pty_country_20 +2014102511 product_12 pty_country_13 +2014102511 product_2 pty_country_30 +2014102512 product_11 pty_country_18 +2014102512 product_3 pty_country_1 +2014102512 product_14 pty_country_38 +2014102512 product_7 pty_country_19 +2014102512 product_14 pty_country_41 +2014102512 product_14 pty_country_47 +2014102512 product_2 pty_country_5 +2014102512 product_5 pty_country_21 +2014102512 product_1 pty_country_35 +2014102512 product_12 pty_country_3 +2014102513 product_13 pty_country_8 +2014102513 product_5 pty_country_33 +2014102513 product_7 pty_country_18 +2014102513 product_12 pty_country_27 +2014102513 product_7 pty_country_31 +2014102513 product_12 pty_country_48 +2014102513 product_8 pty_country_22 +2014102513 product_7 pty_country_44 +2014102513 product_3 pty_country_8 +2014102513 product_8 pty_country_5 +2014102514 product_12 pty_country_3 +2014102514 product_12 pty_country_41 +2014102514 product_12 pty_country_11 +2014102514 product_15 pty_country_17 +2014102514 product_3 pty_country_17 +2014102514 product_1 pty_country_46 +2014102514 product_3 pty_country_9 +2014102514 product_14 pty_country_1 +2014102514 product_1 pty_country_32 +2014102514 product_15 pty_country_40 +2014102515 product_6 pty_country_38 +2014102515 product_4 pty_country_44 +2014102515 product_8 pty_country_35 +2014102515 product_15 pty_country_31 +2014102515 product_10 pty_country_34 +2014102515 product_4 pty_country_1 +2014102515 product_8 pty_country_37 +2014102515 product_10 pty_country_2 +2014102515 product_14 pty_country_29 +2014102515 product_1 pty_country_20 +2014102516 product_13 pty_country_24 +2014102516 product_10 pty_country_47 +2014102516 product_14 pty_country_12 +2014102516 product_8 pty_country_36 +2014102516 product_4 pty_country_13 +2014102516 product_13 pty_country_45 +2014102516 product_14 pty_country_14 +2014102516 product_11 pty_country_5 +2014102516 product_10 pty_country_23 +2014102516 product_13 pty_country_45 +2014102517 product_7 pty_country_2 +2014102517 product_3 pty_country_21 +2014102517 product_11 pty_country_3 +2014102517 product_13 pty_country_1 +2014102517 product_8 pty_country_13 +2014102517 product_3 pty_country_21 +2014102517 product_11 pty_country_14 +2014102517 product_9 pty_country_7 +2014102517 product_10 pty_country_8 +2014102517 product_5 pty_country_48 +2014102518 product_2 pty_country_50 +2014102518 product_4 pty_country_20 +2014102518 product_7 pty_country_39 +2014102518 product_9 pty_country_33 +2014102518 product_2 pty_country_26 +2014102518 product_11 pty_country_47 +2014102518 product_9 pty_country_32 +2014102518 product_4 pty_country_41 +2014102518 product_14 pty_country_2 +2014102518 product_8 pty_country_48 +2014102519 product_8 pty_country_12 +2014102519 product_11 pty_country_18 +2014102519 product_5 pty_country_36 +2014102519 product_11 pty_country_32 +2014102519 product_11 pty_country_50 +2014102519 product_14 pty_country_19 +2014102519 product_7 pty_country_15 +2014102519 product_2 pty_country_42 +2014102519 product_4 pty_country_49 +2014102519 product_13 pty_country_12 +2014102520 product_6 pty_country_8 +2014102520 product_7 pty_country_27 +2014102520 product_9 pty_country_2 +2014102520 product_1 pty_country_15 +2014102520 product_4 pty_country_7 +2014102520 product_9 pty_country_6 +2014102520 product_12 pty_country_38 +2014102520 product_6 pty_country_29 +2014102520 product_14 pty_country_24 +2014102520 product_10 pty_country_2 +2014102521 product_11 pty_country_8 +2014102521 product_9 pty_country_39 +2014102521 product_3 pty_country_50 +2014102521 product_10 pty_country_25 +2014102521 product_10 pty_country_16 +2014102521 product_13 pty_country_39 +2014102521 product_2 pty_country_11 +2014102521 product_13 pty_country_33 +2014102521 product_2 pty_country_7 +2014102521 product_2 pty_country_25 +2014102522 product_11 pty_country_48 +2014102522 product_10 pty_country_9 +2014102522 product_10 pty_country_15 +2014102522 product_7 pty_country_28 +2014102522 product_4 pty_country_45 +2014102522 product_1 pty_country_17 +2014102522 product_10 pty_country_5 +2014102522 product_10 pty_country_9 +2014102522 product_4 pty_country_40 +2014102522 product_15 pty_country_37 +2014102523 product_8 pty_country_32 +2014102523 product_4 pty_country_30 +2014102523 product_13 pty_country_7 +2014102523 product_12 pty_country_5 +2014102523 product_12 pty_country_23 +2014102523 product_3 pty_country_7 +2014102523 product_9 pty_country_27 +2014102523 product_2 pty_country_8 +2014102523 product_15 pty_country_4 +2014102523 product_3 pty_country_12 +2014102600 product_3 pty_country_22 +2014102600 product_2 pty_country_10 +2014102600 product_9 pty_country_20 +2014102600 product_1 pty_country_28 +2014102600 product_7 pty_country_13 +2014102600 product_3 pty_country_26 +2014102600 product_11 pty_country_47 +2014102600 product_2 pty_country_1 +2014102600 product_12 pty_country_23 +2014102600 product_13 pty_country_46 +2014102601 product_10 pty_country_12 +2014102601 product_1 pty_country_47 +2014102601 product_6 pty_country_47 +2014102601 product_7 pty_country_27 +2014102601 product_4 pty_country_3 +2014102601 product_9 pty_country_27 +2014102601 product_8 pty_country_34 +2014102601 product_8 pty_country_19 +2014102601 product_13 pty_country_7 +2014102601 product_12 pty_country_40 +2014102602 product_1 pty_country_21 +2014102602 product_4 pty_country_42 +2014102602 product_15 pty_country_22 +2014102602 product_12 pty_country_13 +2014102602 product_7 pty_country_39 +2014102602 product_14 pty_country_30 +2014102602 product_10 pty_country_29 +2014102602 product_7 pty_country_18 +2014102602 product_9 pty_country_23 +2014102602 product_12 pty_country_49 +2014102603 product_13 pty_country_27 +2014102603 product_9 pty_country_2 +2014102603 product_5 pty_country_32 +2014102603 product_12 pty_country_8 +2014102603 product_11 pty_country_16 +2014102603 product_4 pty_country_39 +2014102603 product_3 pty_country_35 +2014102603 product_8 pty_country_36 +2014102603 product_3 pty_country_15 +2014102603 product_1 pty_country_32 +2014102604 product_13 pty_country_28 +2014102604 product_8 pty_country_36 +2014102604 product_15 pty_country_16 +2014102604 product_14 pty_country_15 +2014102604 product_12 pty_country_30 +2014102604 product_9 pty_country_40 +2014102604 product_6 pty_country_19 +2014102604 product_7 pty_country_41 +2014102604 product_5 pty_country_42 +2014102604 product_3 pty_country_34 +2014102605 product_9 pty_country_41 +2014102605 product_12 pty_country_29 +2014102605 product_5 pty_country_10 +2014102605 product_13 pty_country_41 +2014102605 product_5 pty_country_5 +2014102605 product_2 pty_country_41 +2014102605 product_5 pty_country_41 +2014102605 product_6 pty_country_25 +2014102605 product_11 pty_country_20 +2014102605 product_15 pty_country_41 +2014102606 product_9 pty_country_13 +2014102606 product_15 pty_country_20 +2014102606 product_7 pty_country_6 +2014102606 product_11 pty_country_13 +2014102606 product_1 pty_country_24 +2014102606 product_15 pty_country_3 +2014102606 product_8 pty_country_48 +2014102606 product_10 pty_country_17 +2014102606 product_1 pty_country_12 +2014102606 product_5 pty_country_7 +2014102607 product_8 pty_country_2 +2014102607 product_14 pty_country_2 +2014102607 product_5 pty_country_15 +2014102607 product_5 pty_country_48 +2014102607 product_11 pty_country_11 +2014102607 product_14 pty_country_5 +2014102607 product_13 pty_country_5 +2014102607 product_15 pty_country_25 +2014102607 product_2 pty_country_38 +2014102607 product_14 pty_country_25 +2014102608 product_15 pty_country_27 +2014102608 product_4 pty_country_2 +2014102608 product_10 pty_country_31 +2014102608 product_7 pty_country_8 +2014102608 product_3 pty_country_1 +2014102608 product_6 pty_country_49 +2014102608 product_4 pty_country_39 +2014102608 product_9 pty_country_2 +2014102608 product_3 pty_country_6 +2014102608 product_9 pty_country_8 +2014102609 product_11 pty_country_7 +2014102609 product_10 pty_country_18 +2014102609 product_12 pty_country_27 +2014102609 product_8 pty_country_39 +2014102609 product_14 pty_country_11 +2014102609 product_2 pty_country_9 +2014102609 product_10 pty_country_28 +2014102609 product_12 pty_country_18 +2014102609 product_1 pty_country_40 +2014102609 product_2 pty_country_10 +2014102610 product_5 pty_country_9 +2014102610 product_2 pty_country_10 +2014102610 product_9 pty_country_13 +2014102610 product_12 pty_country_35 +2014102610 product_5 pty_country_12 +2014102610 product_13 pty_country_50 +2014102610 product_4 pty_country_37 +2014102610 product_11 pty_country_50 +2014102610 product_13 pty_country_49 +2014102610 product_9 pty_country_44 +2014102611 product_13 pty_country_23 +2014102611 product_11 pty_country_7 +2014102611 product_1 pty_country_44 +2014102611 product_15 pty_country_21 +2014102611 product_12 pty_country_15 +2014102611 product_1 pty_country_8 +2014102611 product_6 pty_country_29 +2014102611 product_7 pty_country_5 +2014102611 product_6 pty_country_48 +2014102611 product_7 pty_country_10 +2014102612 product_11 pty_country_11 +2014102612 product_9 pty_country_10 +2014102612 product_14 pty_country_16 +2014102612 product_15 pty_country_14 +2014102612 product_10 pty_country_17 +2014102612 product_13 pty_country_1 +2014102612 product_2 pty_country_15 +2014102612 product_4 pty_country_6 +2014102612 product_9 pty_country_2 +2014102612 product_9 pty_country_23 +2014102613 product_5 pty_country_47 +2014102613 product_8 pty_country_33 +2014102613 product_5 pty_country_37 +2014102613 product_12 pty_country_38 +2014102613 product_6 pty_country_48 +2014102613 product_14 pty_country_5 +2014102613 product_1 pty_country_45 +2014102613 product_1 pty_country_12 +2014102613 product_4 pty_country_13 +2014102613 product_1 pty_country_44 +2014102614 product_14 pty_country_35 +2014102614 product_8 pty_country_30 +2014102614 product_14 pty_country_30 +2014102614 product_2 pty_country_22 +2014102614 product_6 pty_country_9 +2014102614 product_12 pty_country_48 +2014102614 product_8 pty_country_34 +2014102614 product_9 pty_country_39 +2014102614 product_10 pty_country_9 +2014102614 product_13 pty_country_22 +2014102615 product_5 pty_country_34 +2014102615 product_13 pty_country_20 +2014102615 product_14 pty_country_34 +2014102615 product_1 pty_country_19 +2014102615 product_2 pty_country_1 +2014102615 product_5 pty_country_24 +2014102615 product_8 pty_country_27 +2014102615 product_13 pty_country_23 +2014102615 product_13 pty_country_39 +2014102615 product_11 pty_country_47 +2014102616 product_4 pty_country_6 +2014102616 product_1 pty_country_35 +2014102616 product_3 pty_country_30 +2014102616 product_14 pty_country_42 +2014102616 product_5 pty_country_45 +2014102616 product_10 pty_country_33 +2014102616 product_9 pty_country_49 +2014102616 product_2 pty_country_7 +2014102616 product_1 pty_country_41 +2014102616 product_2 pty_country_48 +2014102617 product_4 pty_country_46 +2014102617 product_9 pty_country_25 +2014102617 product_6 pty_country_49 +2014102617 product_3 pty_country_32 +2014102617 product_5 pty_country_27 +2014102617 product_10 pty_country_40 +2014102617 product_14 pty_country_16 +2014102617 product_8 pty_country_48 +2014102617 product_8 pty_country_40 +2014102617 product_15 pty_country_39 +2014102618 product_13 pty_country_8 +2014102618 product_10 pty_country_7 +2014102618 product_10 pty_country_6 +2014102618 product_1 pty_country_30 +2014102618 product_4 pty_country_30 +2014102618 product_6 pty_country_42 +2014102618 product_12 pty_country_43 +2014102618 product_6 pty_country_16 +2014102618 product_8 pty_country_4 +2014102618 product_6 pty_country_2 +2014102619 product_15 pty_country_39 +2014102619 product_11 pty_country_22 +2014102619 product_6 pty_country_39 +2014102619 product_7 pty_country_50 +2014102619 product_4 pty_country_28 +2014102619 product_8 pty_country_3 +2014102619 product_3 pty_country_39 +2014102619 product_10 pty_country_4 +2014102619 product_10 pty_country_4 +2014102619 product_3 pty_country_4 +2014102620 product_14 pty_country_31 +2014102620 product_2 pty_country_12 +2014102620 product_1 pty_country_19 +2014102620 product_10 pty_country_4 +2014102620 product_12 pty_country_21 +2014102620 product_2 pty_country_47 +2014102620 product_14 pty_country_46 +2014102620 product_1 pty_country_17 +2014102620 product_14 pty_country_43 +2014102620 product_15 pty_country_12 +2014102621 product_9 pty_country_31 +2014102621 product_13 pty_country_30 +2014102621 product_2 pty_country_39 +2014102621 product_8 pty_country_44 +2014102621 product_9 pty_country_24 +2014102621 product_13 pty_country_11 +2014102621 product_4 pty_country_12 +2014102621 product_4 pty_country_47 +2014102621 product_9 pty_country_19 +2014102621 product_12 pty_country_23 +2014102622 product_5 pty_country_37 +2014102622 product_12 pty_country_13 +2014102622 product_10 pty_country_26 +2014102622 product_5 pty_country_12 +2014102622 product_7 pty_country_16 +2014102622 product_2 pty_country_34 +2014102622 product_9 pty_country_41 +2014102622 product_4 pty_country_25 +2014102622 product_7 pty_country_9 +2014102622 product_2 pty_country_44 +2014102623 product_6 pty_country_14 +2014102623 product_6 pty_country_9 +2014102623 product_13 pty_country_47 +2014102623 product_14 pty_country_36 +2014102623 product_7 pty_country_47 +2014102623 product_7 pty_country_3 +2014102623 product_2 pty_country_23 +2014102623 product_2 pty_country_10 +2014102623 product_13 pty_country_49 +2014102623 product_11 pty_country_18 +2014102700 product_3 pty_country_34 +2014102700 product_4 pty_country_50 +2014102700 product_14 pty_country_15 +2014102700 product_9 pty_country_13 +2014102700 product_11 pty_country_17 +2014102700 product_15 pty_country_42 +2014102700 product_8 pty_country_24 +2014102700 product_12 pty_country_25 +2014102700 product_11 pty_country_24 +2014102700 product_1 pty_country_5 +2014102701 product_8 pty_country_18 +2014102701 product_11 pty_country_33 +2014102701 product_1 pty_country_9 +2014102701 product_9 pty_country_12 +2014102701 product_13 pty_country_19 +2014102701 product_3 pty_country_38 +2014102701 product_13 pty_country_48 +2014102701 product_10 pty_country_6 +2014102701 product_7 pty_country_42 +2014102701 product_14 pty_country_41 +2014102702 product_13 pty_country_12 +2014102702 product_3 pty_country_30 +2014102702 product_9 pty_country_28 +2014102702 product_7 pty_country_21 +2014102702 product_11 pty_country_23 +2014102702 product_4 pty_country_35 +2014102702 product_1 pty_country_7 +2014102702 product_8 pty_country_1 +2014102702 product_2 pty_country_33 +2014102702 product_6 pty_country_25 +2014102703 product_12 pty_country_4 +2014102703 product_3 pty_country_27 +2014102703 product_11 pty_country_2 +2014102703 product_1 pty_country_43 +2014102703 product_12 pty_country_4 +2014102703 product_4 pty_country_4 +2014102703 product_7 pty_country_32 +2014102703 product_9 pty_country_49 +2014102703 product_4 pty_country_13 +2014102703 product_2 pty_country_3 +2014102704 product_1 pty_country_36 +2014102704 product_12 pty_country_12 +2014102704 product_1 pty_country_35 +2014102704 product_3 pty_country_25 +2014102704 product_8 pty_country_33 +2014102704 product_14 pty_country_37 +2014102704 product_15 pty_country_8 +2014102704 product_1 pty_country_25 +2014102704 product_8 pty_country_38 +2014102704 product_11 pty_country_3 +2014102705 product_13 pty_country_8 +2014102705 product_7 pty_country_46 +2014102705 product_10 pty_country_24 +2014102705 product_9 pty_country_16 +2014102705 product_2 pty_country_13 +2014102705 product_4 pty_country_12 +2014102705 product_10 pty_country_38 +2014102705 product_3 pty_country_9 +2014102705 product_3 pty_country_27 +2014102705 product_8 pty_country_28 +2014102706 product_10 pty_country_35 +2014102706 product_11 pty_country_2 +2014102706 product_1 pty_country_7 +2014102706 product_14 pty_country_10 +2014102706 product_11 pty_country_40 +2014102706 product_5 pty_country_15 +2014102706 product_2 pty_country_44 +2014102706 product_2 pty_country_36 +2014102706 product_14 pty_country_21 +2014102706 product_4 pty_country_29 +2014102707 product_14 pty_country_25 +2014102707 product_13 pty_country_17 +2014102707 product_8 pty_country_39 +2014102707 product_10 pty_country_21 +2014102707 product_7 pty_country_50 +2014102707 product_12 pty_country_8 +2014102707 product_3 pty_country_2 +2014102707 product_13 pty_country_41 +2014102707 product_9 pty_country_16 +2014102707 product_14 pty_country_17 +2014102708 product_6 pty_country_1 +2014102708 product_12 pty_country_33 +2014102708 product_8 pty_country_37 +2014102708 product_3 pty_country_50 +2014102708 product_4 pty_country_20 +2014102708 product_14 pty_country_34 +2014102708 product_6 pty_country_13 +2014102708 product_12 pty_country_23 +2014102708 product_11 pty_country_42 +2014102708 product_7 pty_country_35 +2014102709 product_11 pty_country_48 +2014102709 product_12 pty_country_11 +2014102709 product_6 pty_country_17 +2014102709 product_10 pty_country_41 +2014102709 product_8 pty_country_8 +2014102709 product_7 pty_country_41 +2014102709 product_15 pty_country_13 +2014102709 product_10 pty_country_22 +2014102709 product_15 pty_country_5 +2014102709 product_12 pty_country_47 +2014102710 product_11 pty_country_16 +2014102710 product_4 pty_country_21 +2014102710 product_6 pty_country_20 +2014102710 product_8 pty_country_42 +2014102710 product_13 pty_country_9 +2014102710 product_3 pty_country_47 +2014102710 product_4 pty_country_2 +2014102710 product_15 pty_country_33 +2014102710 product_4 pty_country_32 +2014102710 product_15 pty_country_49 +2014102711 product_1 pty_country_37 +2014102711 product_15 pty_country_10 +2014102711 product_7 pty_country_16 +2014102711 product_9 pty_country_45 +2014102711 product_13 pty_country_11 +2014102711 product_3 pty_country_33 +2014102711 product_2 pty_country_33 +2014102711 product_6 pty_country_18 +2014102711 product_9 pty_country_27 +2014102711 product_5 pty_country_31 +2014102712 product_4 pty_country_44 +2014102712 product_8 pty_country_40 +2014102712 product_11 pty_country_21 +2014102712 product_3 pty_country_40 +2014102712 product_9 pty_country_4 +2014102712 product_2 pty_country_31 +2014102712 product_10 pty_country_27 +2014102712 product_8 pty_country_38 +2014102712 product_12 pty_country_1 +2014102712 product_14 pty_country_19 +2014102713 product_8 pty_country_46 +2014102713 product_1 pty_country_11 +2014102713 product_6 pty_country_20 +2014102713 product_6 pty_country_8 +2014102713 product_9 pty_country_45 +2014102713 product_12 pty_country_46 +2014102713 product_3 pty_country_8 +2014102713 product_1 pty_country_49 +2014102713 product_9 pty_country_18 +2014102713 product_14 pty_country_42 +2014102714 product_12 pty_country_12 +2014102714 product_9 pty_country_13 +2014102714 product_5 pty_country_27 +2014102714 product_10 pty_country_2 +2014102714 product_9 pty_country_20 +2014102714 product_15 pty_country_10 +2014102714 product_15 pty_country_49 +2014102714 product_11 pty_country_39 +2014102714 product_8 pty_country_2 +2014102714 product_2 pty_country_36 +2014102715 product_1 pty_country_37 +2014102715 product_11 pty_country_37 +2014102715 product_7 pty_country_16 +2014102715 product_1 pty_country_39 +2014102715 product_1 pty_country_34 +2014102715 product_2 pty_country_25 +2014102715 product_11 pty_country_8 +2014102715 product_15 pty_country_50 +2014102715 product_11 pty_country_39 +2014102715 product_10 pty_country_27 +2014102716 product_14 pty_country_5 +2014102716 product_3 pty_country_31 +2014102716 product_8 pty_country_36 +2014102716 product_9 pty_country_26 +2014102716 product_5 pty_country_31 +2014102716 product_7 pty_country_18 +2014102716 product_11 pty_country_22 +2014102716 product_4 pty_country_4 +2014102716 product_1 pty_country_43 +2014102716 product_4 pty_country_18 +2014102717 product_6 pty_country_12 +2014102717 product_5 pty_country_24 +2014102717 product_7 pty_country_28 +2014102717 product_5 pty_country_45 +2014102717 product_13 pty_country_31 +2014102717 product_12 pty_country_19 +2014102717 product_5 pty_country_20 +2014102717 product_14 pty_country_41 +2014102717 product_3 pty_country_12 +2014102717 product_1 pty_country_41 +2014102718 product_8 pty_country_3 +2014102718 product_11 pty_country_25 +2014102718 product_14 pty_country_21 +2014102718 product_5 pty_country_2 +2014102718 product_4 pty_country_7 +2014102718 product_15 pty_country_11 +2014102718 product_2 pty_country_12 +2014102718 product_4 pty_country_24 +2014102718 product_7 pty_country_25 +2014102718 product_9 pty_country_42 +2014102719 product_15 pty_country_45 +2014102719 product_9 pty_country_44 +2014102719 product_15 pty_country_32 +2014102719 product_8 pty_country_31 +2014102719 product_5 pty_country_27 +2014102719 product_14 pty_country_24 +2014102719 product_13 pty_country_48 +2014102719 product_10 pty_country_6 +2014102719 product_7 pty_country_14 +2014102719 product_1 pty_country_2 +2014102720 product_4 pty_country_49 +2014102720 product_4 pty_country_4 +2014102720 product_14 pty_country_29 +2014102720 product_5 pty_country_35 +2014102720 product_8 pty_country_47 +2014102720 product_4 pty_country_16 +2014102720 product_11 pty_country_18 +2014102720 product_3 pty_country_28 +2014102720 product_10 pty_country_11 +2014102720 product_11 pty_country_26 +2014102721 product_6 pty_country_34 +2014102721 product_11 pty_country_9 +2014102721 product_15 pty_country_10 +2014102721 product_14 pty_country_21 +2014102721 product_3 pty_country_12 +2014102721 product_15 pty_country_36 +2014102721 product_4 pty_country_43 +2014102721 product_15 pty_country_34 +2014102721 product_11 pty_country_8 +2014102721 product_9 pty_country_24 +2014102722 product_12 pty_country_26 +2014102722 product_12 pty_country_20 +2014102722 product_14 pty_country_39 +2014102722 product_5 pty_country_39 +2014102722 product_10 pty_country_4 +2014102722 product_7 pty_country_12 +2014102722 product_4 pty_country_13 +2014102722 product_10 pty_country_41 +2014102722 product_8 pty_country_15 +2014102722 product_3 pty_country_4 +2014102723 product_11 pty_country_25 +2014102723 product_8 pty_country_4 +2014102723 product_10 pty_country_4 +2014102723 product_10 pty_country_36 +2014102723 product_4 pty_country_11 +2014102723 product_8 pty_country_31 +2014102723 product_3 pty_country_47 +2014102723 product_15 pty_country_39 +2014102723 product_3 pty_country_7 +2014102723 product_14 pty_country_37 +2014102800 product_4 pty_country_28 +2014102800 product_2 pty_country_45 +2014102800 product_10 pty_country_28 +2014102800 product_7 pty_country_44 +2014102800 product_9 pty_country_39 +2014102800 product_12 pty_country_20 +2014102800 product_15 pty_country_41 +2014102800 product_12 pty_country_43 +2014102800 product_12 pty_country_45 +2014102800 product_13 pty_country_30 +2014102801 product_3 pty_country_19 +2014102801 product_1 pty_country_5 +2014102801 product_2 pty_country_15 +2014102801 product_1 pty_country_15 +2014102801 product_4 pty_country_25 +2014102801 product_9 pty_country_17 +2014102801 product_12 pty_country_13 +2014102801 product_12 pty_country_22 +2014102801 product_6 pty_country_46 +2014102801 product_9 pty_country_2 +2014102802 product_5 pty_country_13 +2014102802 product_11 pty_country_8 +2014102802 product_8 pty_country_44 +2014102802 product_13 pty_country_34 +2014102802 product_3 pty_country_8 +2014102802 product_13 pty_country_30 +2014102802 product_5 pty_country_8 +2014102802 product_5 pty_country_42 +2014102802 product_11 pty_country_38 +2014102802 product_15 pty_country_28 +2014102803 product_15 pty_country_23 +2014102803 product_3 pty_country_7 +2014102803 product_2 pty_country_33 +2014102803 product_4 pty_country_48 +2014102803 product_9 pty_country_47 +2014102803 product_15 pty_country_41 +2014102803 product_8 pty_country_40 +2014102803 product_5 pty_country_32 +2014102803 product_4 pty_country_26 +2014102803 product_12 pty_country_43 +2014102804 product_3 pty_country_49 +2014102804 product_7 pty_country_39 +2014102804 product_5 pty_country_48 +2014102804 product_4 pty_country_49 +2014102804 product_10 pty_country_8 +2014102804 product_11 pty_country_3 +2014102804 product_14 pty_country_26 +2014102804 product_2 pty_country_30 +2014102804 product_9 pty_country_32 +2014102804 product_15 pty_country_12 +2014102805 product_14 pty_country_12 +2014102805 product_7 pty_country_15 +2014102805 product_15 pty_country_7 +2014102805 product_13 pty_country_32 +2014102805 product_11 pty_country_7 +2014102805 product_15 pty_country_36 +2014102805 product_2 pty_country_25 +2014102805 product_1 pty_country_29 +2014102805 product_9 pty_country_33 +2014102805 product_13 pty_country_40 +2014102806 product_15 pty_country_11 +2014102806 product_3 pty_country_36 +2014102806 product_3 pty_country_35 +2014102806 product_14 pty_country_18 +2014102806 product_5 pty_country_44 +2014102806 product_11 pty_country_23 +2014102806 product_9 pty_country_34 +2014102806 product_14 pty_country_33 +2014102806 product_1 pty_country_31 +2014102806 product_6 pty_country_49 +2014102807 product_3 pty_country_22 +2014102807 product_9 pty_country_16 +2014102807 product_14 pty_country_16 +2014102807 product_7 pty_country_17 +2014102807 product_14 pty_country_24 +2014102807 product_14 pty_country_50 +2014102807 product_10 pty_country_9 +2014102807 product_6 pty_country_36 +2014102807 product_6 pty_country_47 +2014102807 product_5 pty_country_46 +2014102808 product_13 pty_country_2 +2014102808 product_9 pty_country_50 +2014102808 product_10 pty_country_40 +2014102808 product_11 pty_country_21 +2014102808 product_4 pty_country_7 +2014102808 product_4 pty_country_25 +2014102808 product_5 pty_country_1 +2014102808 product_9 pty_country_36 +2014102808 product_14 pty_country_3 +2014102808 product_15 pty_country_25 +2014102809 product_4 pty_country_34 +2014102809 product_14 pty_country_48 +2014102809 product_15 pty_country_6 +2014102809 product_13 pty_country_49 +2014102809 product_13 pty_country_1 +2014102809 product_10 pty_country_3 +2014102809 product_7 pty_country_7 +2014102809 product_5 pty_country_49 +2014102809 product_3 pty_country_12 +2014102809 product_5 pty_country_50 +2014102810 product_1 pty_country_1 +2014102810 product_11 pty_country_5 +2014102810 product_11 pty_country_15 +2014102810 product_1 pty_country_15 +2014102810 product_9 pty_country_30 +2014102810 product_6 pty_country_3 +2014102810 product_1 pty_country_45 +2014102810 product_7 pty_country_42 +2014102810 product_15 pty_country_30 +2014102810 product_5 pty_country_1 +2014102811 product_2 pty_country_25 +2014102811 product_9 pty_country_38 +2014102811 product_11 pty_country_7 +2014102811 product_3 pty_country_45 +2014102811 product_2 pty_country_25 +2014102811 product_13 pty_country_46 +2014102811 product_3 pty_country_18 +2014102811 product_8 pty_country_18 +2014102811 product_9 pty_country_24 +2014102811 product_5 pty_country_31 +2014102812 product_6 pty_country_39 +2014102812 product_6 pty_country_28 +2014102812 product_1 pty_country_14 +2014102812 product_9 pty_country_22 +2014102812 product_5 pty_country_37 +2014102812 product_14 pty_country_48 +2014102812 product_8 pty_country_26 +2014102812 product_1 pty_country_50 +2014102812 product_5 pty_country_22 +2014102812 product_14 pty_country_50 +2014102813 product_1 pty_country_34 +2014102813 product_13 pty_country_19 +2014102813 product_4 pty_country_26 +2014102813 product_13 pty_country_23 +2014102813 product_1 pty_country_17 +2014102813 product_11 pty_country_37 +2014102813 product_9 pty_country_22 +2014102813 product_1 pty_country_39 +2014102813 product_5 pty_country_43 +2014102813 product_12 pty_country_15 +2014102814 product_10 pty_country_28 +2014102814 product_3 pty_country_19 +2014102814 product_9 pty_country_34 +2014102814 product_3 pty_country_36 +2014102814 product_12 pty_country_14 +2014102814 product_2 pty_country_33 +2014102814 product_6 pty_country_6 +2014102814 product_6 pty_country_12 +2014102814 product_5 pty_country_15 +2014102814 product_2 pty_country_25 +2014102815 product_7 pty_country_8 +2014102815 product_14 pty_country_45 +2014102815 product_14 pty_country_30 +2014102815 product_13 pty_country_39 +2014102815 product_7 pty_country_6 +2014102815 product_4 pty_country_34 +2014102815 product_7 pty_country_35 +2014102815 product_5 pty_country_36 +2014102815 product_6 pty_country_36 +2014102815 product_5 pty_country_40 +2014102816 product_7 pty_country_26 +2014102816 product_12 pty_country_45 +2014102816 product_8 pty_country_26 +2014102816 product_6 pty_country_19 +2014102816 product_4 pty_country_7 +2014102816 product_9 pty_country_9 +2014102816 product_14 pty_country_9 +2014102816 product_8 pty_country_31 +2014102816 product_15 pty_country_27 +2014102816 product_7 pty_country_36 +2014102817 product_10 pty_country_46 +2014102817 product_1 pty_country_39 +2014102817 product_13 pty_country_31 +2014102817 product_6 pty_country_38 +2014102817 product_10 pty_country_25 +2014102817 product_14 pty_country_37 +2014102817 product_1 pty_country_20 +2014102817 product_2 pty_country_1 +2014102817 product_6 pty_country_17 +2014102817 product_6 pty_country_43 +2014102818 product_7 pty_country_44 +2014102818 product_9 pty_country_33 +2014102818 product_7 pty_country_28 +2014102818 product_7 pty_country_32 +2014102818 product_4 pty_country_37 +2014102818 product_7 pty_country_18 +2014102818 product_1 pty_country_8 +2014102818 product_10 pty_country_45 +2014102818 product_13 pty_country_3 +2014102818 product_9 pty_country_9 +2014102819 product_1 pty_country_34 +2014102819 product_11 pty_country_37 +2014102819 product_13 pty_country_29 +2014102819 product_4 pty_country_36 +2014102819 product_13 pty_country_46 +2014102819 product_6 pty_country_16 +2014102819 product_6 pty_country_19 +2014102819 product_14 pty_country_12 +2014102819 product_6 pty_country_4 +2014102819 product_1 pty_country_36 +2014102820 product_12 pty_country_19 +2014102820 product_5 pty_country_26 +2014102820 product_14 pty_country_16 +2014102820 product_9 pty_country_5 +2014102820 product_13 pty_country_36 +2014102820 product_5 pty_country_5 +2014102820 product_5 pty_country_3 +2014102820 product_2 pty_country_42 +2014102820 product_5 pty_country_50 +2014102820 product_6 pty_country_44 +2014102821 product_8 pty_country_24 +2014102821 product_9 pty_country_14 +2014102821 product_10 pty_country_8 +2014102821 product_14 pty_country_49 +2014102821 product_7 pty_country_26 +2014102821 product_15 pty_country_31 +2014102821 product_15 pty_country_28 +2014102821 product_10 pty_country_18 +2014102821 product_14 pty_country_14 +2014102821 product_2 pty_country_30 +2014102822 product_4 pty_country_43 +2014102822 product_4 pty_country_7 +2014102822 product_11 pty_country_22 +2014102822 product_11 pty_country_8 +2014102822 product_8 pty_country_7 +2014102822 product_12 pty_country_38 +2014102822 product_10 pty_country_36 +2014102822 product_13 pty_country_49 +2014102822 product_6 pty_country_5 +2014102822 product_6 pty_country_48 +2014102823 product_12 pty_country_11 +2014102823 product_14 pty_country_20 +2014102823 product_11 pty_country_31 +2014102823 product_7 pty_country_8 +2014102823 product_12 pty_country_45 +2014102823 product_1 pty_country_41 +2014102823 product_7 pty_country_32 +2014102823 product_15 pty_country_6 +2014102823 product_5 pty_country_47 +2014102823 product_4 pty_country_18 +2014102900 product_11 pty_country_32 +2014102900 product_2 pty_country_26 +2014102900 product_2 pty_country_30 +2014102900 product_7 pty_country_22 +2014102900 product_11 pty_country_32 +2014102900 product_8 pty_country_44 +2014102900 product_3 pty_country_44 +2014102900 product_1 pty_country_37 +2014102900 product_8 pty_country_34 +2014102900 product_14 pty_country_3 +2014102901 product_12 pty_country_26 +2014102901 product_15 pty_country_29 +2014102901 product_11 pty_country_45 +2014102901 product_7 pty_country_25 +2014102901 product_11 pty_country_20 +2014102901 product_13 pty_country_38 +2014102901 product_12 pty_country_17 +2014102901 product_2 pty_country_19 +2014102901 product_6 pty_country_3 +2014102901 product_7 pty_country_39 +2014102902 product_11 pty_country_16 +2014102902 product_1 pty_country_13 +2014102902 product_7 pty_country_47 +2014102902 product_10 pty_country_40 +2014102902 product_4 pty_country_46 +2014102902 product_7 pty_country_30 +2014102902 product_13 pty_country_13 +2014102902 product_14 pty_country_48 +2014102902 product_4 pty_country_47 +2014102902 product_9 pty_country_23 +2014102903 product_14 pty_country_46 +2014102903 product_11 pty_country_2 +2014102903 product_8 pty_country_22 +2014102903 product_4 pty_country_9 +2014102903 product_12 pty_country_25 +2014102903 product_15 pty_country_43 +2014102903 product_5 pty_country_33 +2014102903 product_12 pty_country_39 +2014102903 product_9 pty_country_13 +2014102903 product_1 pty_country_24 +2014102904 product_3 pty_country_49 +2014102904 product_6 pty_country_17 +2014102904 product_6 pty_country_26 +2014102904 product_7 pty_country_9 +2014102904 product_5 pty_country_45 +2014102904 product_1 pty_country_30 +2014102904 product_1 pty_country_8 +2014102904 product_3 pty_country_19 +2014102904 product_6 pty_country_36 +2014102904 product_12 pty_country_17 +2014102905 product_5 pty_country_45 +2014102905 product_8 pty_country_14 +2014102905 product_13 pty_country_35 +2014102905 product_8 pty_country_8 +2014102905 product_5 pty_country_42 +2014102905 product_7 pty_country_7 +2014102905 product_3 pty_country_15 +2014102905 product_3 pty_country_44 +2014102905 product_9 pty_country_3 +2014102905 product_8 pty_country_49 +2014102906 product_15 pty_country_25 +2014102906 product_4 pty_country_34 +2014102906 product_1 pty_country_42 +2014102906 product_14 pty_country_42 +2014102906 product_12 pty_country_18 +2014102906 product_8 pty_country_27 +2014102906 product_5 pty_country_27 +2014102906 product_12 pty_country_45 +2014102906 product_14 pty_country_45 +2014102906 product_9 pty_country_16 +2014102907 product_2 pty_country_37 +2014102907 product_12 pty_country_48 +2014102907 product_1 pty_country_8 +2014102907 product_5 pty_country_48 +2014102907 product_9 pty_country_49 +2014102907 product_12 pty_country_1 +2014102907 product_11 pty_country_23 +2014102907 product_2 pty_country_46 +2014102907 product_5 pty_country_11 +2014102907 product_3 pty_country_4 +2014102908 product_12 pty_country_1 +2014102908 product_5 pty_country_9 +2014102908 product_12 pty_country_1 +2014102908 product_10 pty_country_9 +2014102908 product_4 pty_country_40 +2014102908 product_13 pty_country_41 +2014102908 product_13 pty_country_15 +2014102908 product_15 pty_country_45 +2014102908 product_3 pty_country_3 +2014102908 product_4 pty_country_48 +2014102909 product_5 pty_country_37 +2014102909 product_15 pty_country_30 +2014102909 product_4 pty_country_50 +2014102909 product_3 pty_country_46 +2014102909 product_2 pty_country_35 +2014102909 product_11 pty_country_28 +2014102909 product_4 pty_country_1 +2014102909 product_2 pty_country_10 +2014102909 product_9 pty_country_2 +2014102909 product_9 pty_country_11 +2014102910 product_7 pty_country_10 +2014102910 product_3 pty_country_39 +2014102910 product_8 pty_country_32 +2014102910 product_3 pty_country_30 +2014102910 product_6 pty_country_6 +2014102910 product_6 pty_country_41 +2014102910 product_15 pty_country_48 +2014102910 product_10 pty_country_2 +2014102910 product_11 pty_country_11 +2014102910 product_5 pty_country_24 +2014102911 product_3 pty_country_9 +2014102911 product_6 pty_country_20 +2014102911 product_6 pty_country_41 +2014102911 product_8 pty_country_46 +2014102911 product_12 pty_country_49 +2014102911 product_9 pty_country_40 +2014102911 product_9 pty_country_29 +2014102911 product_6 pty_country_42 +2014102911 product_15 pty_country_37 +2014102911 product_13 pty_country_39 +2014102912 product_10 pty_country_50 +2014102912 product_9 pty_country_49 +2014102912 product_6 pty_country_2 +2014102912 product_13 pty_country_33 +2014102912 product_15 pty_country_28 +2014102912 product_2 pty_country_10 +2014102912 product_15 pty_country_7 +2014102912 product_12 pty_country_1 +2014102912 product_2 pty_country_28 +2014102912 product_15 pty_country_16 +2014102913 product_2 pty_country_30 +2014102913 product_1 pty_country_19 +2014102913 product_3 pty_country_25 +2014102913 product_11 pty_country_4 +2014102913 product_12 pty_country_34 +2014102913 product_7 pty_country_44 +2014102913 product_8 pty_country_44 +2014102913 product_9 pty_country_29 +2014102913 product_10 pty_country_3 +2014102913 product_14 pty_country_50 +2014102914 product_4 pty_country_18 +2014102914 product_2 pty_country_45 +2014102914 product_11 pty_country_15 +2014102914 product_8 pty_country_13 +2014102914 product_11 pty_country_28 +2014102914 product_8 pty_country_19 +2014102914 product_7 pty_country_29 +2014102914 product_1 pty_country_33 +2014102914 product_8 pty_country_31 +2014102914 product_1 pty_country_25 +2014102915 product_12 pty_country_20 +2014102915 product_8 pty_country_48 +2014102915 product_14 pty_country_47 +2014102915 product_15 pty_country_13 +2014102915 product_5 pty_country_28 +2014102915 product_13 pty_country_32 +2014102915 product_6 pty_country_27 +2014102915 product_10 pty_country_44 +2014102915 product_15 pty_country_45 +2014102915 product_11 pty_country_30 +2014102916 product_12 pty_country_44 +2014102916 product_2 pty_country_48 +2014102916 product_11 pty_country_17 +2014102916 product_10 pty_country_4 +2014102916 product_14 pty_country_19 +2014102916 product_10 pty_country_7 +2014102916 product_10 pty_country_42 +2014102916 product_10 pty_country_19 +2014102916 product_3 pty_country_13 +2014102916 product_5 pty_country_48 +2014102917 product_8 pty_country_47 +2014102917 product_7 pty_country_27 +2014102917 product_9 pty_country_22 +2014102917 product_11 pty_country_2 +2014102917 product_11 pty_country_36 +2014102917 product_2 pty_country_19 +2014102917 product_8 pty_country_45 +2014102917 product_15 pty_country_20 +2014102917 product_4 pty_country_9 +2014102917 product_7 pty_country_49 +2014102918 product_8 pty_country_19 +2014102918 product_8 pty_country_32 +2014102918 product_9 pty_country_2 +2014102918 product_14 pty_country_47 +2014102918 product_9 pty_country_31 +2014102918 product_15 pty_country_16 +2014102918 product_15 pty_country_17 +2014102918 product_5 pty_country_20 +2014102918 product_9 pty_country_4 +2014102918 product_9 pty_country_20 +2014102919 product_8 pty_country_1 +2014102919 product_15 pty_country_15 +2014102919 product_15 pty_country_45 +2014102919 product_3 pty_country_23 +2014102919 product_15 pty_country_1 +2014102919 product_11 pty_country_43 +2014102919 product_11 pty_country_6 +2014102919 product_8 pty_country_29 +2014102919 product_15 pty_country_24 +2014102919 product_15 pty_country_45 +2014102920 product_2 pty_country_17 +2014102920 product_8 pty_country_14 +2014102920 product_2 pty_country_40 +2014102920 product_7 pty_country_39 +2014102920 product_7 pty_country_28 +2014102920 product_12 pty_country_47 +2014102920 product_13 pty_country_12 +2014102920 product_15 pty_country_31 +2014102920 product_14 pty_country_3 +2014102920 product_2 pty_country_7 +2014102921 product_1 pty_country_43 +2014102921 product_1 pty_country_44 +2014102921 product_4 pty_country_40 +2014102921 product_10 pty_country_28 +2014102921 product_5 pty_country_28 +2014102921 product_12 pty_country_6 +2014102921 product_5 pty_country_19 +2014102921 product_8 pty_country_49 +2014102921 product_6 pty_country_41 +2014102921 product_13 pty_country_25 +2014102922 product_7 pty_country_29 +2014102922 product_14 pty_country_3 +2014102922 product_3 pty_country_29 +2014102922 product_6 pty_country_8 +2014102922 product_15 pty_country_31 +2014102922 product_15 pty_country_38 +2014102922 product_4 pty_country_46 +2014102922 product_8 pty_country_34 +2014102922 product_4 pty_country_39 +2014102922 product_14 pty_country_19 +2014102923 product_11 pty_country_24 +2014102923 product_15 pty_country_24 +2014102923 product_6 pty_country_41 +2014102923 product_6 pty_country_47 +2014102923 product_4 pty_country_44 +2014102923 product_13 pty_country_29 +2014102923 product_6 pty_country_18 +2014102923 product_11 pty_country_41 +2014102923 product_4 pty_country_45 +2014102923 product_6 pty_country_37 +2014103000 product_15 pty_country_26 +2014103000 product_13 pty_country_46 +2014103000 product_1 pty_country_28 +2014103000 product_10 pty_country_15 +2014103000 product_6 pty_country_41 +2014103000 product_10 pty_country_43 +2014103000 product_15 pty_country_36 +2014103000 product_6 pty_country_7 +2014103000 product_2 pty_country_25 +2014103000 product_12 pty_country_1 +2014103001 product_13 pty_country_6 +2014103001 product_10 pty_country_40 +2014103001 product_7 pty_country_17 +2014103001 product_11 pty_country_10 +2014103001 product_10 pty_country_8 +2014103001 product_14 pty_country_37 +2014103001 product_8 pty_country_34 +2014103001 product_13 pty_country_1 +2014103001 product_12 pty_country_2 +2014103001 product_7 pty_country_5 +2014103002 product_9 pty_country_33 +2014103002 product_2 pty_country_39 +2014103002 product_4 pty_country_19 +2014103002 product_8 pty_country_43 +2014103002 product_3 pty_country_20 +2014103002 product_12 pty_country_48 +2014103002 product_10 pty_country_35 +2014103002 product_3 pty_country_12 +2014103002 product_5 pty_country_5 +2014103002 product_5 pty_country_36 +2014103003 product_8 pty_country_27 +2014103003 product_2 pty_country_43 +2014103003 product_9 pty_country_11 +2014103003 product_10 pty_country_45 +2014103003 product_11 pty_country_12 +2014103003 product_15 pty_country_5 +2014103003 product_7 pty_country_17 +2014103003 product_6 pty_country_22 +2014103003 product_6 pty_country_18 +2014103003 product_14 pty_country_25 +2014103004 product_13 pty_country_28 +2014103004 product_12 pty_country_21 +2014103004 product_11 pty_country_31 +2014103004 product_2 pty_country_8 +2014103004 product_3 pty_country_9 +2014103004 product_8 pty_country_10 +2014103004 product_10 pty_country_21 +2014103004 product_11 pty_country_25 +2014103004 product_7 pty_country_39 +2014103004 product_12 pty_country_24 +2014103005 product_10 pty_country_33 +2014103005 product_15 pty_country_10 +2014103005 product_11 pty_country_5 +2014103005 product_1 pty_country_42 +2014103005 product_10 pty_country_26 +2014103005 product_11 pty_country_4 +2014103005 product_13 pty_country_39 +2014103005 product_8 pty_country_19 +2014103005 product_7 pty_country_23 +2014103005 product_11 pty_country_44 +2014103006 product_10 pty_country_7 +2014103006 product_2 pty_country_30 +2014103006 product_13 pty_country_32 +2014103006 product_3 pty_country_15 +2014103006 product_7 pty_country_31 +2014103006 product_13 pty_country_12 +2014103006 product_3 pty_country_20 +2014103006 product_12 pty_country_19 +2014103006 product_2 pty_country_44 +2014103006 product_5 pty_country_7 +2014103007 product_12 pty_country_13 +2014103007 product_3 pty_country_10 +2014103007 product_7 pty_country_3 +2014103007 product_6 pty_country_43 +2014103007 product_6 pty_country_27 +2014103007 product_13 pty_country_22 +2014103007 product_8 pty_country_28 +2014103007 product_3 pty_country_7 +2014103007 product_12 pty_country_42 +2014103007 product_12 pty_country_38 +2014103008 product_5 pty_country_26 +2014103008 product_15 pty_country_8 +2014103008 product_11 pty_country_42 +2014103008 product_8 pty_country_41 +2014103008 product_14 pty_country_32 +2014103008 product_11 pty_country_34 +2014103008 product_10 pty_country_6 +2014103008 product_14 pty_country_3 +2014103008 product_13 pty_country_4 +2014103008 product_14 pty_country_40 +2014103009 product_12 pty_country_17 +2014103009 product_12 pty_country_48 +2014103009 product_9 pty_country_45 +2014103009 product_8 pty_country_49 +2014103009 product_15 pty_country_4 +2014103009 product_5 pty_country_43 +2014103009 product_7 pty_country_37 +2014103009 product_1 pty_country_48 +2014103009 product_9 pty_country_39 +2014103009 product_6 pty_country_36 +2014103010 product_7 pty_country_37 +2014103010 product_9 pty_country_24 +2014103010 product_11 pty_country_32 +2014103010 product_6 pty_country_21 +2014103010 product_8 pty_country_47 +2014103010 product_3 pty_country_21 +2014103010 product_10 pty_country_48 +2014103010 product_8 pty_country_7 +2014103010 product_2 pty_country_22 +2014103010 product_6 pty_country_34 +2014103011 product_13 pty_country_21 +2014103011 product_11 pty_country_28 +2014103011 product_5 pty_country_21 +2014103011 product_13 pty_country_3 +2014103011 product_10 pty_country_18 +2014103011 product_5 pty_country_35 +2014103011 product_6 pty_country_33 +2014103011 product_12 pty_country_9 +2014103011 product_10 pty_country_22 +2014103011 product_3 pty_country_47 +2014103012 product_15 pty_country_32 +2014103012 product_14 pty_country_23 +2014103012 product_4 pty_country_19 +2014103012 product_1 pty_country_45 +2014103012 product_15 pty_country_17 +2014103012 product_13 pty_country_31 +2014103012 product_5 pty_country_46 +2014103012 product_2 pty_country_40 +2014103012 product_2 pty_country_31 +2014103012 product_7 pty_country_22 +2014103013 product_1 pty_country_45 +2014103013 product_8 pty_country_33 +2014103013 product_1 pty_country_40 +2014103013 product_10 pty_country_12 +2014103013 product_12 pty_country_23 +2014103013 product_1 pty_country_13 +2014103013 product_14 pty_country_28 +2014103013 product_2 pty_country_5 +2014103013 product_8 pty_country_40 +2014103013 product_5 pty_country_18 +2014103014 product_1 pty_country_22 +2014103014 product_14 pty_country_40 +2014103014 product_10 pty_country_36 +2014103014 product_8 pty_country_14 +2014103014 product_1 pty_country_36 +2014103014 product_3 pty_country_46 +2014103014 product_6 pty_country_29 +2014103014 product_13 pty_country_28 +2014103014 product_2 pty_country_15 +2014103014 product_14 pty_country_20 +2014103015 product_13 pty_country_32 +2014103015 product_2 pty_country_5 +2014103015 product_10 pty_country_13 +2014103015 product_10 pty_country_6 +2014103015 product_8 pty_country_10 +2014103015 product_3 pty_country_27 +2014103015 product_1 pty_country_31 +2014103015 product_9 pty_country_3 +2014103015 product_10 pty_country_25 +2014103015 product_11 pty_country_44 +2014103016 product_12 pty_country_33 +2014103016 product_13 pty_country_15 +2014103016 product_1 pty_country_33 +2014103016 product_5 pty_country_19 +2014103016 product_1 pty_country_23 +2014103016 product_15 pty_country_29 +2014103016 product_12 pty_country_4 +2014103016 product_4 pty_country_34 +2014103016 product_5 pty_country_27 +2014103016 product_11 pty_country_36 +2014103017 product_12 pty_country_1 +2014103017 product_2 pty_country_1 +2014103017 product_2 pty_country_10 +2014103017 product_11 pty_country_1 +2014103017 product_2 pty_country_27 +2014103017 product_14 pty_country_6 +2014103017 product_11 pty_country_6 +2014103017 product_1 pty_country_10 +2014103017 product_2 pty_country_44 +2014103017 product_6 pty_country_47 +2014103018 product_14 pty_country_31 +2014103018 product_3 pty_country_42 +2014103018 product_1 pty_country_44 +2014103018 product_11 pty_country_4 +2014103018 product_13 pty_country_46 +2014103018 product_3 pty_country_27 +2014103018 product_13 pty_country_28 +2014103018 product_8 pty_country_8 +2014103018 product_7 pty_country_20 +2014103018 product_12 pty_country_42 +2014103019 product_1 pty_country_31 +2014103019 product_5 pty_country_14 +2014103019 product_4 pty_country_40 +2014103019 product_15 pty_country_7 +2014103019 product_15 pty_country_9 +2014103019 product_9 pty_country_8 +2014103019 product_12 pty_country_4 +2014103019 product_1 pty_country_7 +2014103019 product_2 pty_country_45 +2014103019 product_8 pty_country_38 +2014103020 product_5 pty_country_22 +2014103020 product_8 pty_country_34 +2014103020 product_11 pty_country_16 +2014103020 product_6 pty_country_34 +2014103020 product_10 pty_country_11 +2014103020 product_14 pty_country_35 +2014103020 product_13 pty_country_22 +2014103020 product_1 pty_country_27 +2014103020 product_12 pty_country_43 +2014103020 product_13 pty_country_30 +2014103021 product_7 pty_country_50 +2014103021 product_11 pty_country_20 +2014103021 product_5 pty_country_33 +2014103021 product_10 pty_country_26 +2014103021 product_8 pty_country_26 +2014103021 product_13 pty_country_44 +2014103021 product_12 pty_country_40 +2014103021 product_12 pty_country_38 +2014103021 product_3 pty_country_4 +2014103021 product_5 pty_country_27 +2014103022 product_4 pty_country_26 +2014103022 product_10 pty_country_4 +2014103022 product_11 pty_country_32 +2014103022 product_12 pty_country_8 +2014103022 product_8 pty_country_49 +2014103022 product_13 pty_country_14 +2014103022 product_5 pty_country_10 +2014103022 product_7 pty_country_24 +2014103022 product_15 pty_country_20 +2014103022 product_15 pty_country_22 +2014103023 product_1 pty_country_30 +2014103023 product_13 pty_country_29 +2014103023 product_15 pty_country_26 +2014103023 product_13 pty_country_39 +2014103023 product_12 pty_country_31 +2014103023 product_12 pty_country_22 +2014103023 product_14 pty_country_3 +2014103023 product_8 pty_country_49 +2014103023 product_1 pty_country_38 +2014103023 product_8 pty_country_38 +2014103100 product_1 pty_country_22 +2014103100 product_8 pty_country_28 +2014103100 product_7 pty_country_33 +2014103100 product_12 pty_country_36 +2014103100 product_8 pty_country_49 +2014103100 product_10 pty_country_33 +2014103100 product_7 pty_country_49 +2014103100 product_8 pty_country_44 +2014103100 product_12 pty_country_44 +2014103100 product_1 pty_country_50 +2014103101 product_15 pty_country_24 +2014103101 product_4 pty_country_10 +2014103101 product_1 pty_country_21 +2014103101 product_15 pty_country_5 +2014103101 product_14 pty_country_49 +2014103101 product_5 pty_country_18 +2014103101 product_1 pty_country_40 +2014103101 product_14 pty_country_2 +2014103101 product_3 pty_country_25 +2014103101 product_10 pty_country_44 +2014103102 product_6 pty_country_47 +2014103102 product_9 pty_country_27 +2014103102 product_12 pty_country_38 +2014103102 product_12 pty_country_24 +2014103102 product_3 pty_country_33 +2014103102 product_8 pty_country_50 +2014103102 product_14 pty_country_44 +2014103102 product_3 pty_country_27 +2014103102 product_5 pty_country_47 +2014103102 product_14 pty_country_45 +2014103103 product_6 pty_country_24 +2014103103 product_4 pty_country_17 +2014103103 product_14 pty_country_32 +2014103103 product_7 pty_country_21 +2014103103 product_11 pty_country_9 +2014103103 product_3 pty_country_18 +2014103103 product_14 pty_country_11 +2014103103 product_10 pty_country_42 +2014103103 product_7 pty_country_32 +2014103103 product_6 pty_country_35 +2014103104 product_8 pty_country_31 +2014103104 product_5 pty_country_28 +2014103104 product_12 pty_country_15 +2014103104 product_11 pty_country_44 +2014103104 product_12 pty_country_11 +2014103104 product_7 pty_country_8 +2014103104 product_6 pty_country_1 +2014103104 product_9 pty_country_36 +2014103104 product_9 pty_country_8 +2014103104 product_5 pty_country_50 +2014103105 product_14 pty_country_49 +2014103105 product_11 pty_country_1 +2014103105 product_1 pty_country_34 +2014103105 product_13 pty_country_6 +2014103105 product_1 pty_country_4 +2014103105 product_9 pty_country_45 +2014103105 product_2 pty_country_24 +2014103105 product_3 pty_country_36 +2014103105 product_12 pty_country_19 +2014103105 product_2 pty_country_29 +2014103106 product_1 pty_country_17 +2014103106 product_1 pty_country_19 +2014103106 product_3 pty_country_24 +2014103106 product_2 pty_country_34 +2014103106 product_14 pty_country_1 +2014103106 product_2 pty_country_7 +2014103106 product_14 pty_country_27 +2014103106 product_2 pty_country_49 +2014103106 product_1 pty_country_13 +2014103106 product_6 pty_country_19 +2014103107 product_8 pty_country_41 +2014103107 product_12 pty_country_48 +2014103107 product_2 pty_country_11 +2014103107 product_1 pty_country_5 +2014103107 product_12 pty_country_27 +2014103107 product_14 pty_country_16 +2014103107 product_3 pty_country_50 +2014103107 product_8 pty_country_29 +2014103107 product_1 pty_country_13 +2014103107 product_13 pty_country_35 +2014103108 product_13 pty_country_18 +2014103108 product_15 pty_country_10 +2014103108 product_6 pty_country_4 +2014103108 product_10 pty_country_8 +2014103108 product_15 pty_country_29 +2014103108 product_4 pty_country_2 +2014103108 product_3 pty_country_13 +2014103108 product_14 pty_country_7 +2014103108 product_6 pty_country_11 +2014103108 product_6 pty_country_11 +2014103109 product_11 pty_country_13 +2014103109 product_15 pty_country_44 +2014103109 product_8 pty_country_16 +2014103109 product_1 pty_country_1 +2014103109 product_11 pty_country_8 +2014103109 product_13 pty_country_29 +2014103109 product_15 pty_country_7 +2014103109 product_8 pty_country_12 +2014103109 product_11 pty_country_48 +2014103109 product_11 pty_country_13 +2014103110 product_9 pty_country_41 +2014103110 product_6 pty_country_11 +2014103110 product_8 pty_country_42 +2014103110 product_6 pty_country_1 +2014103110 product_14 pty_country_39 +2014103110 product_12 pty_country_36 +2014103110 product_14 pty_country_35 +2014103110 product_11 pty_country_11 +2014103110 product_8 pty_country_17 +2014103110 product_2 pty_country_15 +2014103111 product_8 pty_country_28 +2014103111 product_6 pty_country_50 +2014103111 product_7 pty_country_13 +2014103111 product_5 pty_country_22 +2014103111 product_2 pty_country_23 +2014103111 product_3 pty_country_40 +2014103111 product_9 pty_country_2 +2014103111 product_7 pty_country_26 +2014103111 product_4 pty_country_8 +2014103111 product_2 pty_country_21 +2014103112 product_1 pty_country_43 +2014103112 product_6 pty_country_12 +2014103112 product_9 pty_country_18 +2014103112 product_11 pty_country_13 +2014103112 product_8 pty_country_22 +2014103112 product_13 pty_country_17 +2014103112 product_9 pty_country_15 +2014103112 product_5 pty_country_26 +2014103112 product_7 pty_country_7 +2014103112 product_15 pty_country_45 +2014103113 product_5 pty_country_19 +2014103113 product_13 pty_country_8 +2014103113 product_14 pty_country_31 +2014103113 product_4 pty_country_4 +2014103113 product_9 pty_country_42 +2014103113 product_12 pty_country_4 +2014103113 product_1 pty_country_29 +2014103113 product_13 pty_country_38 +2014103113 product_15 pty_country_1 +2014103113 product_12 pty_country_28 +2014103114 product_9 pty_country_44 +2014103114 product_7 pty_country_25 +2014103114 product_2 pty_country_30 +2014103114 product_3 pty_country_13 +2014103114 product_4 pty_country_46 +2014103114 product_3 pty_country_9 +2014103114 product_2 pty_country_44 +2014103114 product_14 pty_country_44 +2014103114 product_10 pty_country_45 +2014103114 product_4 pty_country_24 +2014103115 product_12 pty_country_35 +2014103115 product_11 pty_country_8 +2014103115 product_15 pty_country_2 +2014103115 product_8 pty_country_37 +2014103115 product_10 pty_country_45 +2014103115 product_10 pty_country_39 +2014103115 product_10 pty_country_20 +2014103115 product_13 pty_country_39 +2014103115 product_12 pty_country_33 +2014103115 product_1 pty_country_13 +2014103116 product_4 pty_country_40 +2014103116 product_10 pty_country_3 +2014103116 product_14 pty_country_48 +2014103116 product_11 pty_country_41 +2014103116 product_4 pty_country_40 +2014103116 product_2 pty_country_36 +2014103116 product_15 pty_country_5 +2014103116 product_7 pty_country_2 +2014103116 product_7 pty_country_1 +2014103116 product_5 pty_country_34 +2014103117 product_9 pty_country_14 +2014103117 product_5 pty_country_37 +2014103117 product_14 pty_country_45 +2014103117 product_2 pty_country_5 +2014103117 product_4 pty_country_6 +2014103117 product_13 pty_country_11 +2014103117 product_8 pty_country_38 +2014103117 product_12 pty_country_43 +2014103117 product_7 pty_country_14 +2014103117 product_8 pty_country_29 +2014103118 product_6 pty_country_21 +2014103118 product_9 pty_country_48 +2014103118 product_3 pty_country_35 +2014103118 product_3 pty_country_42 +2014103118 product_1 pty_country_9 +2014103118 product_12 pty_country_36 +2014103118 product_11 pty_country_39 +2014103118 product_6 pty_country_50 +2014103118 product_1 pty_country_15 +2014103118 product_6 pty_country_43 +2014103119 product_12 pty_country_48 +2014103119 product_10 pty_country_43 +2014103119 product_11 pty_country_19 +2014103119 product_10 pty_country_11 +2014103119 product_10 pty_country_39 +2014103119 product_11 pty_country_42 +2014103119 product_3 pty_country_24 +2014103119 product_15 pty_country_15 +2014103119 product_7 pty_country_24 +2014103119 product_1 pty_country_17 +2014103120 product_6 pty_country_36 +2014103120 product_13 pty_country_5 +2014103120 product_15 pty_country_32 +2014103120 product_4 pty_country_5 +2014103120 product_11 pty_country_40 +2014103120 product_14 pty_country_42 +2014103120 product_7 pty_country_36 +2014103120 product_14 pty_country_5 +2014103120 product_1 pty_country_25 +2014103120 product_6 pty_country_8 +2014103121 product_3 pty_country_9 +2014103121 product_11 pty_country_43 +2014103121 product_8 pty_country_14 +2014103121 product_12 pty_country_9 +2014103121 product_9 pty_country_37 +2014103121 product_5 pty_country_9 +2014103121 product_14 pty_country_40 +2014103121 product_14 pty_country_50 +2014103121 product_8 pty_country_15 +2014103121 product_13 pty_country_20 +2014103122 product_4 pty_country_44 +2014103122 product_13 pty_country_10 +2014103122 product_9 pty_country_44 +2014103122 product_1 pty_country_46 +2014103122 product_5 pty_country_36 +2014103122 product_11 pty_country_20 +2014103122 product_13 pty_country_8 +2014103122 product_11 pty_country_45 +2014103122 product_10 pty_country_26 +2014103122 product_9 pty_country_14 +2014103123 product_7 pty_country_41 +2014103123 product_8 pty_country_6 +2014103123 product_12 pty_country_13 +2014103123 product_5 pty_country_23 +2014103123 product_1 pty_country_20 +2014103123 product_14 pty_country_20 +2014103123 product_1 pty_country_5 +2014103123 product_6 pty_country_35 +2014103123 product_12 pty_country_29 +2014103123 product_4 pty_country_35 +2014110100 product_14 pty_country_37 +2014110100 product_13 pty_country_13 +2014110100 product_12 pty_country_38 +2014110100 product_8 pty_country_13 +2014110100 product_14 pty_country_23 +2014110100 product_1 pty_country_45 +2014110100 product_6 pty_country_26 +2014110100 product_9 pty_country_18 +2014110100 product_6 pty_country_4 +2014110100 product_13 pty_country_28 +2014110101 product_11 pty_country_38 +2014110101 product_11 pty_country_26 +2014110101 product_11 pty_country_9 +2014110101 product_9 pty_country_29 +2014110101 product_4 pty_country_25 +2014110101 product_5 pty_country_49 +2014110101 product_5 pty_country_40 +2014110101 product_7 pty_country_11 +2014110101 product_7 pty_country_2 +2014110101 product_13 pty_country_33 +2014110102 product_2 pty_country_11 +2014110102 product_12 pty_country_4 +2014110102 product_13 pty_country_16 +2014110102 product_12 pty_country_42 +2014110102 product_2 pty_country_12 +2014110102 product_5 pty_country_9 +2014110102 product_7 pty_country_14 +2014110102 product_6 pty_country_26 +2014110102 product_14 pty_country_47 +2014110102 product_5 pty_country_6 +2014110103 product_15 pty_country_11 +2014110103 product_4 pty_country_26 +2014110103 product_2 pty_country_31 +2014110103 product_7 pty_country_29 +2014110103 product_7 pty_country_41 +2014110103 product_15 pty_country_44 +2014110103 product_1 pty_country_3 +2014110103 product_15 pty_country_6 +2014110103 product_1 pty_country_13 +2014110103 product_15 pty_country_46 +2014110104 product_3 pty_country_28 +2014110104 product_3 pty_country_24 +2014110104 product_2 pty_country_11 +2014110104 product_10 pty_country_43 +2014110104 product_11 pty_country_40 +2014110104 product_12 pty_country_25 +2014110104 product_14 pty_country_3 +2014110104 product_10 pty_country_25 +2014110104 product_2 pty_country_34 +2014110104 product_6 pty_country_37 +2014110105 product_9 pty_country_40 +2014110105 product_7 pty_country_37 +2014110105 product_2 pty_country_40 +2014110105 product_4 pty_country_29 +2014110105 product_7 pty_country_21 +2014110105 product_7 pty_country_33 +2014110105 product_1 pty_country_34 +2014110105 product_7 pty_country_17 +2014110105 product_11 pty_country_44 +2014110105 product_10 pty_country_34 +2014110106 product_1 pty_country_45 +2014110106 product_1 pty_country_48 +2014110106 product_5 pty_country_15 +2014110106 product_12 pty_country_17 +2014110106 product_9 pty_country_12 +2014110106 product_9 pty_country_17 +2014110106 product_1 pty_country_29 +2014110106 product_2 pty_country_45 +2014110106 product_1 pty_country_16 +2014110106 product_15 pty_country_48 +2014110107 product_11 pty_country_11 +2014110107 product_1 pty_country_43 +2014110107 product_12 pty_country_46 +2014110107 product_8 pty_country_23 +2014110107 product_6 pty_country_18 +2014110107 product_14 pty_country_39 +2014110107 product_7 pty_country_37 +2014110107 product_1 pty_country_31 +2014110107 product_3 pty_country_43 +2014110107 product_1 pty_country_17 +2014110108 product_5 pty_country_4 +2014110108 product_8 pty_country_27 +2014110108 product_5 pty_country_37 +2014110108 product_2 pty_country_48 +2014110108 product_8 pty_country_17 +2014110108 product_9 pty_country_9 +2014110108 product_1 pty_country_30 +2014110108 product_8 pty_country_4 +2014110108 product_13 pty_country_30 +2014110108 product_13 pty_country_47 +2014110109 product_1 pty_country_44 +2014110109 product_13 pty_country_39 +2014110109 product_6 pty_country_24 +2014110109 product_8 pty_country_40 +2014110109 product_4 pty_country_22 +2014110109 product_6 pty_country_31 +2014110109 product_12 pty_country_23 +2014110109 product_7 pty_country_38 +2014110109 product_12 pty_country_23 +2014110109 product_4 pty_country_24 +2014110110 product_2 pty_country_32 +2014110110 product_14 pty_country_17 +2014110110 product_5 pty_country_34 +2014110110 product_14 pty_country_12 +2014110110 product_6 pty_country_1 +2014110110 product_2 pty_country_18 +2014110110 product_3 pty_country_50 +2014110110 product_13 pty_country_34 +2014110110 product_12 pty_country_46 +2014110110 product_5 pty_country_40 +2014110111 product_7 pty_country_16 +2014110111 product_12 pty_country_47 +2014110111 product_11 pty_country_26 +2014110111 product_1 pty_country_11 +2014110111 product_14 pty_country_3 +2014110111 product_3 pty_country_6 +2014110111 product_9 pty_country_26 +2014110111 product_15 pty_country_6 +2014110111 product_9 pty_country_20 +2014110111 product_14 pty_country_5 +2014110112 product_9 pty_country_10 +2014110112 product_10 pty_country_11 +2014110112 product_6 pty_country_20 +2014110112 product_4 pty_country_21 +2014110112 product_4 pty_country_11 +2014110112 product_7 pty_country_37 +2014110112 product_14 pty_country_31 +2014110112 product_13 pty_country_27 +2014110112 product_13 pty_country_37 +2014110112 product_4 pty_country_1 +2014110113 product_11 pty_country_5 +2014110113 product_6 pty_country_27 +2014110113 product_11 pty_country_41 +2014110113 product_15 pty_country_7 +2014110113 product_7 pty_country_27 +2014110113 product_13 pty_country_24 +2014110113 product_12 pty_country_15 +2014110113 product_10 pty_country_9 +2014110113 product_7 pty_country_6 +2014110113 product_10 pty_country_44 +2014110114 product_3 pty_country_24 +2014110114 product_15 pty_country_18 +2014110114 product_2 pty_country_9 +2014110114 product_6 pty_country_8 +2014110114 product_1 pty_country_38 +2014110114 product_13 pty_country_25 +2014110114 product_10 pty_country_31 +2014110114 product_3 pty_country_16 +2014110114 product_2 pty_country_7 +2014110114 product_11 pty_country_44 +2014110115 product_8 pty_country_22 +2014110115 product_13 pty_country_10 +2014110115 product_4 pty_country_36 +2014110115 product_13 pty_country_9 +2014110115 product_2 pty_country_27 +2014110115 product_7 pty_country_44 +2014110115 product_11 pty_country_28 +2014110115 product_3 pty_country_17 +2014110115 product_3 pty_country_42 +2014110115 product_2 pty_country_46 +2014110116 product_2 pty_country_13 +2014110116 product_11 pty_country_17 +2014110116 product_14 pty_country_35 +2014110116 product_1 pty_country_38 +2014110116 product_5 pty_country_9 +2014110116 product_9 pty_country_21 +2014110116 product_6 pty_country_10 +2014110116 product_11 pty_country_23 +2014110116 product_11 pty_country_41 +2014110116 product_2 pty_country_3 +2014110117 product_2 pty_country_46 +2014110117 product_6 pty_country_24 +2014110117 product_8 pty_country_31 +2014110117 product_7 pty_country_26 +2014110117 product_9 pty_country_44 +2014110117 product_9 pty_country_21 +2014110117 product_1 pty_country_41 +2014110117 product_14 pty_country_17 +2014110117 product_2 pty_country_31 +2014110117 product_7 pty_country_35 +2014110118 product_15 pty_country_34 +2014110118 product_7 pty_country_31 +2014110118 product_5 pty_country_2 +2014110118 product_4 pty_country_15 +2014110118 product_9 pty_country_26 +2014110118 product_7 pty_country_2 +2014110118 product_1 pty_country_16 +2014110118 product_2 pty_country_45 +2014110118 product_6 pty_country_7 +2014110118 product_6 pty_country_27 +2014110119 product_13 pty_country_15 +2014110119 product_14 pty_country_2 +2014110119 product_13 pty_country_21 +2014110119 product_8 pty_country_16 +2014110119 product_2 pty_country_41 +2014110119 product_7 pty_country_34 +2014110119 product_5 pty_country_21 +2014110119 product_13 pty_country_13 +2014110119 product_13 pty_country_12 +2014110119 product_14 pty_country_49 +2014110120 product_9 pty_country_36 +2014110120 product_2 pty_country_30 +2014110120 product_1 pty_country_8 +2014110120 product_6 pty_country_33 +2014110120 product_15 pty_country_23 +2014110120 product_15 pty_country_1 +2014110120 product_9 pty_country_19 +2014110120 product_13 pty_country_36 +2014110120 product_6 pty_country_21 +2014110120 product_10 pty_country_41 +2014110121 product_12 pty_country_28 +2014110121 product_13 pty_country_11 +2014110121 product_5 pty_country_50 +2014110121 product_5 pty_country_30 +2014110121 product_6 pty_country_41 +2014110121 product_12 pty_country_8 +2014110121 product_4 pty_country_9 +2014110121 product_2 pty_country_5 +2014110121 product_3 pty_country_6 +2014110121 product_2 pty_country_40 +2014110122 product_12 pty_country_16 +2014110122 product_11 pty_country_49 +2014110122 product_4 pty_country_45 +2014110122 product_1 pty_country_2 +2014110122 product_7 pty_country_46 +2014110122 product_15 pty_country_39 +2014110122 product_9 pty_country_23 +2014110122 product_7 pty_country_16 +2014110122 product_14 pty_country_23 +2014110122 product_3 pty_country_37 +2014110123 product_7 pty_country_47 +2014110123 product_6 pty_country_40 +2014110123 product_10 pty_country_32 +2014110123 product_7 pty_country_21 +2014110123 product_8 pty_country_19 +2014110123 product_12 pty_country_47 +2014110123 product_5 pty_country_28 +2014110123 product_7 pty_country_11 +2014110123 product_9 pty_country_24 +2014110123 product_5 pty_country_44 +2014110200 product_10 pty_country_36 +2014110200 product_7 pty_country_13 +2014110200 product_7 pty_country_21 +2014110200 product_7 pty_country_6 +2014110200 product_4 pty_country_13 +2014110200 product_12 pty_country_15 +2014110200 product_5 pty_country_23 +2014110200 product_7 pty_country_29 +2014110200 product_6 pty_country_27 +2014110200 product_13 pty_country_19 +2014110201 product_7 pty_country_1 +2014110201 product_14 pty_country_47 +2014110201 product_1 pty_country_24 +2014110201 product_14 pty_country_43 +2014110201 product_5 pty_country_10 +2014110201 product_12 pty_country_2 +2014110201 product_4 pty_country_43 +2014110201 product_4 pty_country_47 +2014110201 product_3 pty_country_21 +2014110201 product_5 pty_country_33 +2014110202 product_14 pty_country_41 +2014110202 product_11 pty_country_37 +2014110202 product_2 pty_country_20 +2014110202 product_4 pty_country_12 +2014110202 product_12 pty_country_38 +2014110202 product_14 pty_country_14 +2014110202 product_10 pty_country_12 +2014110202 product_8 pty_country_31 +2014110202 product_10 pty_country_14 +2014110202 product_1 pty_country_26 +2014110203 product_4 pty_country_4 +2014110203 product_15 pty_country_30 +2014110203 product_6 pty_country_49 +2014110203 product_11 pty_country_13 +2014110203 product_12 pty_country_3 +2014110203 product_7 pty_country_20 +2014110203 product_8 pty_country_46 +2014110203 product_7 pty_country_18 +2014110203 product_14 pty_country_6 +2014110203 product_2 pty_country_9 +2014110204 product_13 pty_country_11 +2014110204 product_7 pty_country_28 +2014110204 product_13 pty_country_16 +2014110204 product_6 pty_country_36 +2014110204 product_6 pty_country_8 +2014110204 product_7 pty_country_7 +2014110204 product_12 pty_country_18 +2014110204 product_3 pty_country_35 +2014110204 product_2 pty_country_26 +2014110204 product_6 pty_country_43 +2014110205 product_6 pty_country_33 +2014110205 product_8 pty_country_20 +2014110205 product_5 pty_country_43 +2014110205 product_14 pty_country_10 +2014110205 product_10 pty_country_9 +2014110205 product_8 pty_country_17 +2014110205 product_4 pty_country_49 +2014110205 product_6 pty_country_27 +2014110205 product_4 pty_country_35 +2014110205 product_8 pty_country_37 +2014110206 product_8 pty_country_47 +2014110206 product_12 pty_country_18 +2014110206 product_12 pty_country_46 +2014110206 product_12 pty_country_47 +2014110206 product_3 pty_country_10 +2014110206 product_3 pty_country_40 +2014110206 product_5 pty_country_8 +2014110206 product_1 pty_country_27 +2014110206 product_5 pty_country_31 +2014110206 product_4 pty_country_14 +2014110207 product_10 pty_country_31 +2014110207 product_7 pty_country_15 +2014110207 product_12 pty_country_23 +2014110207 product_9 pty_country_37 +2014110207 product_8 pty_country_10 +2014110207 product_8 pty_country_46 +2014110207 product_4 pty_country_39 +2014110207 product_4 pty_country_31 +2014110207 product_13 pty_country_10 +2014110207 product_13 pty_country_38 +2014110208 product_9 pty_country_3 +2014110208 product_15 pty_country_10 +2014110208 product_1 pty_country_36 +2014110208 product_1 pty_country_3 +2014110208 product_9 pty_country_46 +2014110208 product_13 pty_country_20 +2014110208 product_10 pty_country_38 +2014110208 product_14 pty_country_48 +2014110208 product_12 pty_country_37 +2014110208 product_9 pty_country_49 +2014110209 product_2 pty_country_32 +2014110209 product_13 pty_country_39 +2014110209 product_2 pty_country_4 +2014110209 product_9 pty_country_31 +2014110209 product_5 pty_country_10 +2014110209 product_10 pty_country_11 +2014110209 product_3 pty_country_15 +2014110209 product_11 pty_country_44 +2014110209 product_1 pty_country_16 +2014110209 product_10 pty_country_48 +2014110210 product_10 pty_country_41 +2014110210 product_3 pty_country_27 +2014110210 product_14 pty_country_1 +2014110210 product_3 pty_country_20 +2014110210 product_12 pty_country_24 +2014110210 product_10 pty_country_13 +2014110210 product_9 pty_country_27 +2014110210 product_11 pty_country_20 +2014110210 product_11 pty_country_23 +2014110210 product_7 pty_country_15 +2014110211 product_3 pty_country_17 +2014110211 product_7 pty_country_9 +2014110211 product_10 pty_country_13 +2014110211 product_14 pty_country_40 +2014110211 product_7 pty_country_38 +2014110211 product_9 pty_country_20 +2014110211 product_9 pty_country_32 +2014110211 product_2 pty_country_47 +2014110211 product_4 pty_country_31 +2014110211 product_7 pty_country_35 +2014110212 product_4 pty_country_45 +2014110212 product_2 pty_country_28 +2014110212 product_13 pty_country_16 +2014110212 product_2 pty_country_40 +2014110212 product_7 pty_country_44 +2014110212 product_5 pty_country_2 +2014110212 product_10 pty_country_22 +2014110212 product_3 pty_country_15 +2014110212 product_10 pty_country_2 +2014110212 product_5 pty_country_30 +2014110213 product_2 pty_country_23 +2014110213 product_2 pty_country_47 +2014110213 product_8 pty_country_12 +2014110213 product_6 pty_country_29 +2014110213 product_13 pty_country_4 +2014110213 product_10 pty_country_9 +2014110213 product_10 pty_country_37 +2014110213 product_4 pty_country_44 +2014110213 product_13 pty_country_21 +2014110213 product_14 pty_country_4 +2014110214 product_15 pty_country_45 +2014110214 product_15 pty_country_29 +2014110214 product_8 pty_country_48 +2014110214 product_2 pty_country_14 +2014110214 product_9 pty_country_10 +2014110214 product_8 pty_country_24 +2014110214 product_8 pty_country_19 +2014110214 product_4 pty_country_6 +2014110214 product_7 pty_country_33 +2014110214 product_10 pty_country_16 +2014110215 product_11 pty_country_37 +2014110215 product_1 pty_country_18 +2014110215 product_3 pty_country_11 +2014110215 product_11 pty_country_12 +2014110215 product_1 pty_country_35 +2014110215 product_11 pty_country_1 +2014110215 product_4 pty_country_16 +2014110215 product_5 pty_country_30 +2014110215 product_6 pty_country_21 +2014110215 product_5 pty_country_4 +2014110216 product_4 pty_country_43 +2014110216 product_15 pty_country_11 +2014110216 product_1 pty_country_19 +2014110216 product_5 pty_country_40 +2014110216 product_4 pty_country_38 +2014110216 product_14 pty_country_48 +2014110216 product_9 pty_country_41 +2014110216 product_12 pty_country_31 +2014110216 product_7 pty_country_37 +2014110216 product_4 pty_country_21 +2014110217 product_12 pty_country_29 +2014110217 product_15 pty_country_15 +2014110217 product_14 pty_country_1 +2014110217 product_9 pty_country_48 +2014110217 product_10 pty_country_26 +2014110217 product_9 pty_country_8 +2014110217 product_6 pty_country_2 +2014110217 product_2 pty_country_44 +2014110217 product_5 pty_country_38 +2014110217 product_2 pty_country_17 +2014110218 product_13 pty_country_23 +2014110218 product_8 pty_country_4 +2014110218 product_8 pty_country_37 +2014110218 product_15 pty_country_42 +2014110218 product_5 pty_country_28 +2014110218 product_2 pty_country_12 +2014110218 product_12 pty_country_20 +2014110218 product_12 pty_country_33 +2014110218 product_13 pty_country_7 +2014110218 product_9 pty_country_25 +2014110219 product_2 pty_country_50 +2014110219 product_3 pty_country_33 +2014110219 product_3 pty_country_40 +2014110219 product_2 pty_country_34 +2014110219 product_6 pty_country_39 +2014110219 product_8 pty_country_6 +2014110219 product_8 pty_country_39 +2014110219 product_11 pty_country_27 +2014110219 product_11 pty_country_48 +2014110219 product_12 pty_country_33 +2014110220 product_8 pty_country_3 +2014110220 product_2 pty_country_27 +2014110220 product_7 pty_country_19 +2014110220 product_1 pty_country_1 +2014110220 product_5 pty_country_3 +2014110220 product_12 pty_country_12 +2014110220 product_10 pty_country_24 +2014110220 product_9 pty_country_37 +2014110220 product_1 pty_country_2 +2014110220 product_3 pty_country_34 +2014110221 product_1 pty_country_39 +2014110221 product_14 pty_country_34 +2014110221 product_8 pty_country_19 +2014110221 product_13 pty_country_36 +2014110221 product_1 pty_country_44 +2014110221 product_13 pty_country_34 +2014110221 product_12 pty_country_17 +2014110221 product_2 pty_country_21 +2014110221 product_6 pty_country_4 +2014110221 product_11 pty_country_24 +2014110222 product_3 pty_country_10 +2014110222 product_11 pty_country_35 +2014110222 product_1 pty_country_15 +2014110222 product_15 pty_country_13 +2014110222 product_9 pty_country_21 +2014110222 product_1 pty_country_14 +2014110222 product_14 pty_country_8 +2014110222 product_15 pty_country_40 +2014110222 product_14 pty_country_4 +2014110222 product_6 pty_country_20 +2014110223 product_6 pty_country_9 +2014110223 product_5 pty_country_38 +2014110223 product_7 pty_country_5 +2014110223 product_2 pty_country_28 +2014110223 product_3 pty_country_10 +2014110223 product_1 pty_country_2 +2014110223 product_15 pty_country_7 +2014110223 product_6 pty_country_18 +2014110223 product_13 pty_country_45 +2014110223 product_12 pty_country_50 diff --git a/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json b/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json new file mode 100644 index 000000000000..fbefe20e2d24 --- /dev/null +++ b/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json @@ -0,0 +1,12 @@ +[ + { + "type": "sketchBuild", + "name": "pty_country", + "fieldName": "pty_country" + }, + { + "type": "sketchBuild", + "name": "non_existing_col_validation", + "fieldName": "non_existing_col" + } +] diff --git a/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json new file mode 100644 index 000000000000..5339421e37f2 --- /dev/null +++ b/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json @@ -0,0 +1,84 @@ +{ + "queryType": "groupBy", + "dataSource": "test_datasource", + "granularity": "ALL", + "dimensions": [], + "aggregations": [ + { "type": "sketchMerge", "name": "sketch_count", "fieldName": "pty_country", "size": 16384 }, + { "type": "sketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + ], + "postAggregations": [ + { + "type": "sketchEstimate", + "name": "sketchEstimatePostAgg", + "field": { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + }, + { + "type": "sketchEstimate", + "name": "sketchIntersectionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchIntersectionPostAgg", + "func": "INTERSECT", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchAnotBPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchAnotBUnionPostAgg", + "func": "NOT", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchUnionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchUnionPostAgg", + "func": "UNION", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + ] + } + } + ], + "intervals": [ "2014-10-19T00:00:00.000Z/2014-10-22T00:00:00.000Z" ] +} diff --git a/extensions/datasketches/src/test/resources/simple_test_data_record_parser.json b/extensions/datasketches/src/test/resources/simple_test_data_record_parser.json new file mode 100644 index 000000000000..fbe1cd6f04ad --- /dev/null +++ b/extensions/datasketches/src/test/resources/simple_test_data_record_parser.json @@ -0,0 +1,16 @@ +{ + "type" : "string", + "parseSpec" : { + "format" : "tsv", + "timestampSpec" : { + "column" : "timestamp", + "format" : "yyyyMMddHH" + }, + "dimensionsSpec" : { + "dimensions": ["product"], + "dimensionExclusions" : [], + "spatialDimensions" : [] + }, + "columns": ["timestamp", "product", "pty_country"] + } +} diff --git a/extensions/datasketches/src/test/resources/sketch_test_data.tsv b/extensions/datasketches/src/test/resources/sketch_test_data.tsv new file mode 100644 index 000000000000..a5a9ab26b208 --- /dev/null +++ b/extensions/datasketches/src/test/resources/sketch_test_data.tsv @@ -0,0 +1,3361 @@ +2014102000 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102000 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102000 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102000 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102000 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102000 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102000 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102000 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102000 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102000 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102000 product_no +2014102001 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102001 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102001 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102001 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102001 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102001 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102001 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102001 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102001 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102001 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102002 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102002 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102002 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102002 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102002 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102002 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102002 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102002 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102002 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102002 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102003 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102003 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102003 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102003 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102003 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102003 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102003 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102003 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102003 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102003 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102004 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102004 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102004 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102004 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102004 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102004 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102004 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102004 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102004 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102004 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102005 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102005 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102005 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102005 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102005 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102005 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102005 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102005 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102005 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102005 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102006 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102006 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102006 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102006 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102006 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102006 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102006 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102006 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102006 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102006 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102007 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102007 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102007 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102007 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102007 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102007 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102007 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102007 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102007 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102007 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102008 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102008 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102008 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102008 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102008 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102008 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102008 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102008 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102008 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102008 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102009 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102009 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102009 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102009 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102009 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102009 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102009 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102009 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102009 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102009 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102010 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102010 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102010 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102010 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102010 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102010 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102010 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102010 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102010 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102010 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102011 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102011 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102011 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102011 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102011 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102011 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102011 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102011 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102011 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102011 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102012 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102012 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102012 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102012 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102012 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102012 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102012 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102012 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102012 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102012 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102013 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102013 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102013 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102013 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102013 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102013 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102013 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102013 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102013 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102013 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102014 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102014 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102014 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102014 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102014 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102014 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102014 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102014 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102014 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102014 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102015 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102015 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102015 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102015 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102015 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102015 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102015 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102015 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102015 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102015 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102016 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102016 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102016 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102016 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102016 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102016 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102016 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102016 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102016 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102016 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102017 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102017 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102017 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102017 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102017 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102017 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102017 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102017 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102017 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102017 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102018 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102018 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102018 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102018 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102018 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102018 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102018 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102018 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102018 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102018 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102019 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102019 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102019 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102019 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102019 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102019 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102019 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102019 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102019 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102019 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102020 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102020 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102020 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102020 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102020 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102020 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102020 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102020 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102020 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102020 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102021 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102021 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102021 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102021 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102021 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102021 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102021 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102021 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102021 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102021 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102022 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102022 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102022 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102022 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102022 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102022 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102022 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102022 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102022 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102022 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102023 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102023 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102023 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102023 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102023 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102023 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102023 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102023 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102023 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102023 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102100 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102100 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102100 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102100 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102100 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102100 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102100 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102100 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102100 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102100 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102101 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102101 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102101 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102101 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102101 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102101 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102101 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102101 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102101 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102101 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102102 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102102 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102102 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102102 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102102 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102102 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102102 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102102 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102102 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102102 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102103 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102103 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102103 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102103 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102103 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102103 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102103 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102103 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102103 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102103 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102104 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102104 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102104 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102104 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102104 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102104 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102104 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102104 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102104 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102104 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102105 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102105 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102105 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102105 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102105 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102105 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102105 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102105 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102105 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102105 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102106 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102106 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102106 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102106 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102106 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102106 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102106 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102106 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102106 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102106 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102107 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102107 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102107 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102107 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102107 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102107 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102107 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102107 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102107 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102107 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102108 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102108 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102108 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102108 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102108 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102108 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102108 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102108 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102108 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102108 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102109 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102109 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102109 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102109 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102109 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102109 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102109 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102109 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102109 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102109 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102110 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102110 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102110 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102110 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102110 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102110 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102110 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102110 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102110 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102110 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102111 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102111 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102111 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102111 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102111 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102111 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102111 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102111 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102111 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102111 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102112 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102112 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102112 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102112 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102112 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102112 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102112 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102112 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102112 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102112 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102113 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102113 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102113 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102113 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102113 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102113 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102113 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102113 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102113 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102113 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102114 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102114 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102114 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102114 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102114 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102114 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102114 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102114 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102114 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102114 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102115 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102115 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102115 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102115 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102115 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102115 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102115 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102115 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102115 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102115 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102116 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102116 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102116 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102116 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102116 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102116 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102116 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102116 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102116 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102116 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102117 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102117 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102117 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102117 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102117 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102117 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102117 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102117 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102117 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102117 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102118 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102118 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102118 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102118 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102118 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102118 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102118 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102118 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102118 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102118 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102119 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102119 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102119 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102119 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102119 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102119 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102119 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102119 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102119 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102119 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102120 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102120 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102120 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102120 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102120 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102120 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102120 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102120 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102120 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102120 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102121 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102121 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102121 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102121 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102121 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102121 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102121 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102121 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102121 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102121 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102122 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102122 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102122 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102122 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102122 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102122 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102122 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102122 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102122 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102122 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102123 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102123 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102123 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102123 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102123 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102123 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102123 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102123 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102123 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102123 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102200 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102200 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102200 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102200 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102200 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102200 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102200 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102200 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102200 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102200 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102201 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102201 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102201 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102201 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102201 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102201 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102201 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102201 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102201 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102201 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102202 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102202 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102202 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102202 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102202 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102202 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102202 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102202 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102202 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102202 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102203 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102203 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102203 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102203 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102203 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102203 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102203 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102203 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102203 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102203 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102204 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102204 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102204 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102204 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102204 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102204 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102204 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102204 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102204 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102204 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102205 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102205 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102205 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102205 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102205 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102205 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102205 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102205 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102205 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102205 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102206 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102206 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102206 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102206 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102206 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102206 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102206 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102206 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102206 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102206 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102207 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102207 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102207 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102207 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102207 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102207 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102207 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102207 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102207 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102207 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102208 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102208 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102208 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102208 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102208 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102208 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102208 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102208 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102208 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102208 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102209 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102209 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102209 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102209 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102209 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102209 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102209 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102209 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102209 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102209 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102210 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102210 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102210 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102210 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102210 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102210 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102210 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102210 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102210 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102210 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102211 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102211 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102211 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102211 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102211 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102211 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102211 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102211 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102211 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102211 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102212 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102212 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102212 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102212 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102212 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102212 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102212 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102212 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102212 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102212 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102213 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102213 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102213 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102213 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102213 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102213 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102213 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102213 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102213 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102213 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102214 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102214 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102214 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102214 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102214 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102214 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102214 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102214 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102214 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102214 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102215 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102215 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102215 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102215 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102215 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102215 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102215 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102215 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102215 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102215 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102216 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102216 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102216 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102216 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102216 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102216 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102216 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102216 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102216 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102216 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102217 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102217 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102217 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102217 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102217 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102217 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102217 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102217 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102217 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102217 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102218 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102218 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102218 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102218 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102218 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102218 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102218 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102218 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102218 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102218 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102219 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102219 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102219 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102219 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102219 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102219 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102219 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102219 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102219 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102219 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102220 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102220 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102220 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102220 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102220 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102220 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102220 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102220 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102220 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102220 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102221 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102221 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102221 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102221 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102221 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102221 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102221 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102221 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102221 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102221 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102222 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102222 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102222 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102222 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102222 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102222 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102222 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102222 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102222 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102222 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102223 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102223 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102223 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102223 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102223 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102223 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102223 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102223 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102223 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102223 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102300 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102300 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102300 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102300 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102300 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102300 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102300 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102300 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102300 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102300 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102301 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102301 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102301 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102301 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102301 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102301 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102301 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102301 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102301 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102301 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102302 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102302 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102302 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102302 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102302 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102302 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102302 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102302 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102302 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102302 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102303 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102303 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102303 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102303 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102303 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102303 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102303 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102303 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102303 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102303 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102304 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102304 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102304 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102304 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102304 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102304 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102304 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102304 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102304 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102304 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102305 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102305 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102305 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102305 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102305 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102305 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102305 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102305 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102305 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102305 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102306 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102306 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102306 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102306 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102306 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102306 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102306 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102306 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102306 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102306 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102307 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102307 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102307 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102307 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102307 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102307 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102307 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102307 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102307 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102307 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102308 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102308 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102308 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102308 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102308 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102308 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102308 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102308 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102308 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102308 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102309 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102309 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102309 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102309 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102309 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102309 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102309 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102309 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102309 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102309 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102310 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102310 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102310 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102310 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102310 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102310 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102310 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102310 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102310 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102310 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102311 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102311 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102311 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102311 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102311 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102311 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102311 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102311 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102311 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102311 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102312 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102312 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102312 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102312 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102312 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102312 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102312 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102312 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102312 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102312 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102313 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102313 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102313 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102313 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102313 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102313 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102313 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102313 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102313 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102313 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102314 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102314 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102314 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102314 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102314 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102314 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102314 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102314 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102314 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102314 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102315 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102315 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102315 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102315 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102315 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102315 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102315 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102315 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102315 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102315 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102316 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102316 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102316 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102316 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102316 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102316 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102316 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102316 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102316 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102316 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102317 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102317 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102317 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102317 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102317 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102317 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102317 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102317 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102317 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102317 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102318 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102318 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102318 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102318 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102318 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102318 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102318 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102318 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102318 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102318 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102319 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102319 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102319 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102319 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102319 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102319 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102319 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102319 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102319 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102319 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102320 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102320 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102320 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102320 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102320 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102320 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102320 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102320 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102320 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102320 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102321 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102321 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102321 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102321 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102321 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102321 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102321 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102321 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102321 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102321 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102322 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102322 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102322 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102322 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102322 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102322 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102322 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102322 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102322 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102322 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102323 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102323 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102323 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102323 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102323 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102323 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102323 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102323 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102323 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102323 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102400 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102400 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102400 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102400 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102400 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102400 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102400 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102400 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102400 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102400 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102401 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102401 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102401 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102401 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102401 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102401 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102401 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102401 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102401 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102401 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102402 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102402 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102402 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102402 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102402 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102402 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102402 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102402 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102402 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102402 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102403 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102403 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102403 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102403 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102403 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102403 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102403 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102403 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102403 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102403 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102404 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102404 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102404 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102404 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102404 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102404 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102404 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102404 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102404 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102404 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102405 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102405 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102405 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102405 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102405 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102405 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102405 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102405 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102405 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102405 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102406 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102406 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102406 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102406 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102406 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102406 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102406 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102406 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102406 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102406 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102407 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102407 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102407 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102407 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102407 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102407 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102407 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102407 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102407 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102407 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102408 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102408 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102408 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102408 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102408 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102408 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102408 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102408 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102408 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102408 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102409 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102409 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102409 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102409 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102409 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102409 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102409 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102409 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102409 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102409 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102410 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102410 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102410 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102410 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102410 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102410 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102410 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102410 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102410 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102410 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102411 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102411 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102411 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102411 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102411 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102411 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102411 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102411 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102411 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102411 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102412 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102412 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102412 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102412 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102412 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102412 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102412 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102412 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102412 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102412 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102413 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102413 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102413 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102413 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102413 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102413 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102413 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102413 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102413 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102413 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102414 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102414 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102414 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102414 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102414 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102414 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102414 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102414 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102414 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102414 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102415 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102415 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102415 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102415 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102415 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102415 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102415 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102415 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102415 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102415 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102416 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102416 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102416 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102416 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102416 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102416 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102416 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102416 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102416 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102416 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102417 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102417 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102417 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102417 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102417 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102417 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102417 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102417 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102417 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102417 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102418 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102418 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102418 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102418 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102418 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102418 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102418 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102418 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102418 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102418 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102419 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102419 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102419 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102419 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102419 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102419 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102419 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102419 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102419 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102419 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102420 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102420 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102420 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102420 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102420 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102420 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102420 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102420 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102420 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102420 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102421 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102421 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102421 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102421 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102421 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102421 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102421 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102421 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102421 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102421 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102422 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102422 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102422 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102422 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102422 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102422 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102422 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102422 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102422 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102422 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102423 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102423 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102423 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102423 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102423 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102423 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102423 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102423 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102423 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102423 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102500 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102500 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102500 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102500 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102500 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102500 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102500 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102500 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102500 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102500 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102501 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102501 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102501 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102501 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102501 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102501 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102501 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102501 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102501 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102501 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102502 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102502 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102502 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102502 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102502 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102502 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102502 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102502 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102502 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102502 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102503 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102503 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102503 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102503 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102503 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102503 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102503 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102503 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102503 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102503 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102504 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102504 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102504 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102504 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102504 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102504 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102504 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102504 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102504 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102504 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102505 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102505 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102505 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102505 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102505 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102505 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102505 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102505 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102505 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102505 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102506 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102506 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102506 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102506 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102506 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102506 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102506 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102506 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102506 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102506 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102507 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102507 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102507 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102507 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102507 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102507 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102507 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102507 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102507 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102507 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102508 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102508 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102508 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102508 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102508 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102508 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102508 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102508 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102508 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102508 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102509 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102509 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102509 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102509 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102509 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102509 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102509 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102509 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102509 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102509 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102510 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102510 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102510 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102510 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102510 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102510 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102510 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102510 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102510 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102510 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102511 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102511 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102511 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102511 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102511 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102511 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102511 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102511 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102511 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102511 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102512 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102512 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102512 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102512 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102512 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102512 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102512 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102512 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102512 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102512 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102513 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102513 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102513 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102513 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102513 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102513 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102513 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102513 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102513 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102513 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102514 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102514 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102514 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102514 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102514 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102514 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102514 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102514 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102514 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102514 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102515 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102515 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102515 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102515 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102515 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102515 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102515 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102515 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102515 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102515 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102516 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102516 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102516 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102516 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102516 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102516 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102516 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102516 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102516 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102516 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102517 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102517 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102517 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102517 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102517 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102517 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102517 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102517 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102517 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102517 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102518 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102518 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102518 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102518 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102518 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102518 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102518 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102518 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102518 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102518 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102519 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102519 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102519 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102519 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102519 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102519 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102519 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102519 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102519 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102519 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102520 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102520 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102520 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102520 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102520 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102520 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102520 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102520 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102520 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102520 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102521 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102521 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102521 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102521 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102521 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102521 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102521 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102521 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102521 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102521 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102522 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102522 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102522 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102522 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102522 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102522 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102522 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102522 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102522 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102522 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102523 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102523 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102523 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102523 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102523 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102523 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102523 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102523 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102523 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102523 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102600 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102600 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102600 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102600 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102600 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102600 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102600 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102600 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102600 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102600 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102601 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102601 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102601 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102601 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102601 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102601 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102601 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102601 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102601 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102601 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102602 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102602 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102602 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102602 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102602 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102602 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102602 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102602 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102602 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102602 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102603 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102603 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102603 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102603 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102603 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102603 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102603 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102603 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102603 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102603 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102604 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102604 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102604 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102604 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102604 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102604 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102604 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102604 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102604 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102604 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102605 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102605 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102605 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102605 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102605 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102605 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102605 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102605 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102605 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102605 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102606 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102606 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102606 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102606 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102606 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102606 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102606 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102606 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102606 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102606 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102607 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102607 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102607 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102607 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102607 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102607 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102607 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102607 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102607 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102607 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102608 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102608 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102608 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102608 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102608 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102608 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102608 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102608 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102608 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102608 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102609 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102609 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102609 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102609 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102609 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102609 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102609 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102609 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102609 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102609 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102610 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102610 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102610 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102610 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102610 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102610 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102610 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102610 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102610 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102610 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102611 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102611 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102611 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102611 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102611 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102611 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102611 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102611 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102611 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102611 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102612 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102612 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102612 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102612 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102612 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102612 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102612 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102612 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102612 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102612 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102613 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102613 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102613 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102613 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102613 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102613 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102613 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102613 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102613 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102613 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102614 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102614 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102614 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102614 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102614 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102614 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102614 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102614 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102614 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102614 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102615 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102615 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102615 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102615 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102615 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102615 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102615 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102615 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102615 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102615 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102616 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102616 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102616 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102616 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102616 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102616 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102616 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102616 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102616 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102616 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102617 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102617 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102617 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102617 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102617 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102617 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102617 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102617 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102617 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102617 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102618 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102618 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102618 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102618 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102618 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102618 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102618 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102618 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102618 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102618 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102619 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102619 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102619 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102619 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102619 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102619 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102619 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102619 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102619 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102619 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102620 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102620 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102620 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102620 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102620 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102620 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102620 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102620 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102620 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102620 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102621 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102621 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102621 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102621 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102621 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102621 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102621 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102621 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102621 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102621 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102622 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102622 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102622 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102622 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102622 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102622 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102622 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102622 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102622 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102622 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102623 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102623 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102623 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102623 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102623 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102623 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102623 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102623 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102623 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102623 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102700 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102700 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102700 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102700 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102700 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102700 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102700 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102700 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102700 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102700 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102701 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102701 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102701 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102701 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102701 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102701 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102701 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102701 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102701 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102701 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102702 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102702 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102702 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102702 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102702 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102702 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102702 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102702 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102702 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102702 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102703 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102703 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102703 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102703 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102703 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102703 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102703 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102703 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102703 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102703 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102704 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102704 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102704 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102704 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102704 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102704 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102704 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102704 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102704 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102704 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102705 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102705 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102705 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102705 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102705 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102705 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102705 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102705 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102705 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102705 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102706 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102706 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102706 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102706 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102706 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102706 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102706 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102706 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102706 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102706 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102707 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102707 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102707 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102707 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102707 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102707 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102707 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102707 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102707 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102707 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102708 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102708 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102708 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102708 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102708 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102708 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102708 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102708 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102708 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102708 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102709 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102709 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102709 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102709 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102709 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102709 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102709 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102709 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102709 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102709 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102710 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102710 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102710 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102710 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102710 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102710 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102710 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102710 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102710 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102710 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102711 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102711 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102711 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102711 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102711 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102711 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102711 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102711 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102711 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102711 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102712 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102712 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102712 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102712 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102712 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102712 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102712 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102712 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102712 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102712 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102713 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102713 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102713 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102713 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102713 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102713 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102713 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102713 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102713 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102713 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102714 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102714 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102714 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102714 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102714 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102714 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102714 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102714 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102714 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102714 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102715 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102715 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102715 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102715 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102715 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102715 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102715 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102715 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102715 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102715 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102716 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102716 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102716 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102716 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102716 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102716 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102716 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102716 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102716 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102716 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102717 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102717 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102717 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102717 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102717 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102717 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102717 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102717 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102717 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102717 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102718 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102718 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102718 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102718 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102718 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102718 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102718 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102718 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102718 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102718 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102719 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102719 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102719 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102719 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102719 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102719 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102719 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102719 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102719 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102719 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102720 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102720 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102720 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102720 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102720 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102720 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102720 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102720 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102720 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102720 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102721 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102721 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102721 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102721 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102721 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102721 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102721 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102721 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102721 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102721 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102722 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102722 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102722 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102722 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102722 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102722 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102722 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102722 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102722 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102722 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102723 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102723 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102723 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102723 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102723 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102723 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102723 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102723 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102723 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102723 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102800 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102800 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102800 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102800 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102800 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102800 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102800 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102800 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102800 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102800 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102801 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102801 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102801 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102801 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102801 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102801 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102801 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102801 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102801 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102801 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102802 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102802 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102802 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102802 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102802 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102802 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102802 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102802 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102802 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102802 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102803 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102803 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102803 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102803 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102803 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102803 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102803 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102803 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102803 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102803 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102804 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102804 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102804 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102804 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102804 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102804 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102804 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102804 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102804 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102804 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102805 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102805 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102805 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102805 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102805 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102805 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102805 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102805 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102805 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102805 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102806 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102806 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102806 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102806 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102806 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102806 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102806 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102806 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102806 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102806 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102807 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102807 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102807 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102807 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102807 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102807 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102807 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102807 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102807 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102807 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102808 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102808 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102808 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102808 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102808 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102808 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102808 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102808 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102808 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102808 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102809 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102809 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102809 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102809 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102809 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102809 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102809 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102809 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102809 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102809 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102810 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102810 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102810 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102810 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102810 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102810 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102810 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102810 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102810 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102810 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102811 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102811 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102811 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102811 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102811 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102811 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102811 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102811 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102811 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102811 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102812 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102812 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102812 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102812 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102812 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102812 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102812 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102812 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102812 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102812 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102813 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102813 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102813 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102813 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102813 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102813 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102813 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102813 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102813 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102813 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102814 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102814 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102814 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102814 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102814 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102814 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102814 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102814 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102814 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102814 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102815 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102815 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102815 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102815 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102815 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102815 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102815 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102815 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102815 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102815 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102816 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102816 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102816 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102816 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102816 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102816 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102816 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102816 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102816 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102816 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102817 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102817 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102817 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102817 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102817 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102817 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102817 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102817 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102817 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102817 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102818 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102818 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102818 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102818 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102818 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102818 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102818 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102818 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102818 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102818 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102819 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102819 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102819 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102819 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102819 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102819 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102819 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102819 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102819 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102819 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102820 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102820 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102820 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102820 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102820 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102820 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102820 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102820 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102820 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102820 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102821 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102821 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102821 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102821 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102821 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102821 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102821 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102821 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102821 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102821 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102822 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102822 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102822 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102822 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102822 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102822 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102822 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102822 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102822 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102822 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102823 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102823 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102823 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102823 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102823 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102823 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102823 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102823 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102823 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102823 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102900 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102900 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102900 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102900 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102900 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102900 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102900 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102900 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102900 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102900 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102901 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102901 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102901 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102901 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102901 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102901 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102901 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102901 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102901 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102901 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102902 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102902 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102902 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014102902 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102902 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102902 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102902 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102902 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102902 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014102902 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102903 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102903 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102903 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102903 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102903 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102903 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102903 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102903 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102903 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102903 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102904 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102904 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102904 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102904 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102904 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102904 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102904 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102904 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102904 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102904 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102905 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102905 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102905 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102905 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102905 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102905 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102905 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102905 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102905 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102905 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102906 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102906 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102906 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102906 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102906 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102906 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102906 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102906 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102906 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102906 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102907 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102907 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102907 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102907 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102907 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102907 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102907 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102907 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102907 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102907 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102908 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102908 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102908 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102908 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102908 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102908 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102908 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102908 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102908 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102908 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102909 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102909 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102909 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102909 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014102909 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102909 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102909 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102909 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102909 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102909 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102910 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102910 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102910 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102910 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102910 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102910 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102910 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102910 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102910 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102910 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102911 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102911 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102911 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102911 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102911 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014102911 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102911 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014102911 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102911 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102911 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102912 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102912 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102912 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014102912 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102912 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102912 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102912 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102912 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102912 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102912 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102913 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102913 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102913 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102913 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102913 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102913 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102913 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102913 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102913 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102913 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014102914 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014102914 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102914 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102914 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102914 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102914 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102914 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102914 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102914 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102914 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102915 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102915 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102915 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102915 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102915 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102915 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102915 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014102915 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102915 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102915 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102916 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102916 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102916 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014102916 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102916 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102916 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102916 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014102916 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102916 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102916 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102917 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014102917 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102917 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102917 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102917 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102917 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102917 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014102917 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014102917 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102917 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014102918 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014102918 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102918 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014102918 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102918 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014102918 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102918 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102918 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102918 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014102918 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102919 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014102919 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102919 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102919 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102919 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014102919 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102919 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102919 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102919 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014102919 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102920 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102920 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102920 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014102920 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014102920 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014102920 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014102920 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014102920 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102920 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014102920 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102921 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014102921 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014102921 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014102921 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102921 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014102921 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102921 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014102921 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014102921 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014102921 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014102922 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014102922 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102922 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014102922 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102922 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014102922 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102922 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014102922 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102922 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014102922 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014102923 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014102923 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014102923 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014102923 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102923 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014102923 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102923 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014102923 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014102923 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014102923 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103000 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103000 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103000 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103000 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014103000 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103000 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103000 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103000 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103000 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103000 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103001 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103001 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103001 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103001 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103001 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103001 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103001 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103001 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103001 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103001 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103002 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103002 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103002 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103002 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103002 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103002 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103002 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103002 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103002 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103002 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103003 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103003 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103003 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014103003 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103003 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103003 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103003 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103003 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103003 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103003 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103004 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103004 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103004 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103004 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103004 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103004 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103004 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103004 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103004 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103004 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103005 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103005 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014103005 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103005 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103005 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103005 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014103005 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103005 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014103005 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103005 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014103006 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103006 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103006 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103006 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103006 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014103006 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103006 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103006 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103006 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103006 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103007 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103007 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014103007 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103007 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103007 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103007 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103007 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103007 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103007 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103007 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103008 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014103008 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103008 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103008 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103008 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103008 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103008 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103008 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103008 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103008 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103009 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103009 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103009 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103009 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103009 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014103009 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103009 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103009 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103009 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103009 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103010 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103010 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103010 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014103010 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103010 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103010 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103010 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103010 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103010 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103010 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014103011 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103011 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103011 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103011 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014103011 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103011 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103011 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014103011 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103011 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103011 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103012 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103012 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103012 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103012 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103012 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103012 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014103012 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103012 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103012 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103012 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103013 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103013 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103013 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103013 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103013 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103013 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103013 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103013 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103013 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103013 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103014 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103014 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103014 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103014 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103014 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103014 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103014 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103014 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103014 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103014 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103015 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103015 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103015 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103015 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103015 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103015 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103015 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103015 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103015 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103015 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103016 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103016 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103016 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103016 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103016 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103016 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014103016 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103016 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103016 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014103016 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014103017 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103017 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103017 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103017 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103017 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103017 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014103017 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103017 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103017 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103017 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103018 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103018 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103018 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103018 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103018 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103018 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014103018 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103018 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103018 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103018 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103019 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103019 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103019 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103019 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103019 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103019 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103019 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103019 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014103019 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103019 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103020 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103020 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103020 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103020 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014103020 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103020 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103020 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103020 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103020 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103020 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103021 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103021 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103021 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103021 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103021 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103021 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103021 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103021 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103021 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103021 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103022 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103022 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103022 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014103022 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103022 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103022 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103022 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103022 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014103022 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103022 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014103023 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103023 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103023 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103023 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103023 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014103023 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103023 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103023 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103023 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103023 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103100 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014103100 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103100 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103100 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103100 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103100 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103100 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103100 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103100 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103100 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103101 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103101 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103101 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103101 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103101 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103101 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014103101 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103101 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103101 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103101 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103102 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103102 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103102 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103102 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103102 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103102 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103102 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014103102 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103102 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103102 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103103 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103103 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103103 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103103 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103103 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103103 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103103 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103103 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103103 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103103 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103104 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103104 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103104 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103104 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103104 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103104 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103104 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014103104 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103104 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014103104 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103105 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103105 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103105 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103105 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103105 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103105 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103105 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103105 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103105 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103105 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103106 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103106 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103106 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103106 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103106 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103106 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103106 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103107 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103107 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103107 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103107 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103107 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103107 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103107 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103107 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103107 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103107 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103108 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103108 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103108 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103108 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103108 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103108 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103108 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103108 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103108 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103108 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103109 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103109 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103109 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103109 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103109 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103109 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103109 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103109 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103109 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103109 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103110 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103110 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014103110 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103110 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014103110 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103110 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014103110 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103110 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014103110 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014103110 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103111 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103111 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103111 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103111 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014103111 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103111 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103111 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103111 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103111 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103111 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103112 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103112 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103112 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103112 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103112 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103112 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103112 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103112 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103112 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103112 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103113 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103113 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103113 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103113 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103113 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014103113 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103113 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103113 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014103113 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103113 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103114 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103114 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103114 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103114 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103114 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014103114 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103114 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103114 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014103114 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103114 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103115 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103115 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103115 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014103115 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103115 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103115 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103115 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103115 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103115 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103115 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103116 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014103116 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014103116 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103116 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014103116 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103116 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103116 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103116 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103116 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103116 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103117 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014103117 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103117 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014103117 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103117 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014103117 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103117 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103117 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014103117 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103117 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103118 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103118 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014103118 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103118 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103118 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103118 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103118 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103118 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014103118 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103118 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103119 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103119 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014103119 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014103119 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103119 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103119 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103119 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014103119 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103119 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103119 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014103120 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014103120 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014103120 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103120 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014103120 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014103120 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103120 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014103120 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103120 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103120 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014103121 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014103121 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103121 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014103121 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103121 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014103121 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014103121 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014103121 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103121 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103121 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014103122 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014103122 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103122 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014103122 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014103122 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014103122 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014103122 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014103122 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014103122 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014103122 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014103123 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103123 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014103123 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014103123 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014103123 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014103123 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014103123 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014103123 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014103123 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014103123 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110100 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110100 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110100 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110100 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110100 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110100 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110100 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110100 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110100 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110100 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110101 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110101 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110101 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110101 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110101 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110101 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110101 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110101 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110101 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014110101 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110102 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110102 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110102 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110102 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110102 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110102 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014110102 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110102 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110102 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110102 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110103 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110103 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110103 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110103 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110103 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110103 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110103 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110103 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110103 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110103 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110104 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014110104 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014110104 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110104 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110104 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110104 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110104 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014110104 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110104 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110104 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110105 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110105 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110105 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110105 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110105 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110105 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110105 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110105 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110105 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110105 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014110106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110106 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110106 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110106 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110106 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110106 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110106 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110106 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110107 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110107 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110107 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110107 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110107 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110107 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110107 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110107 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110107 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110107 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110108 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110108 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110108 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110108 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110108 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110108 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110108 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110108 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110108 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110108 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110109 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110109 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110109 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110109 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014110109 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110109 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110109 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110109 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110109 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110109 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110110 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110110 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110110 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110110 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014110110 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110110 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110110 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110110 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110110 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110110 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014110111 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110111 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110111 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110111 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110111 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110111 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110111 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110111 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110111 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110111 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110112 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110112 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110112 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110112 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110112 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110112 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110112 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110112 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110112 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110112 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110113 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110113 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110113 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110113 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110113 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110113 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110113 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110113 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110113 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110113 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110114 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014110114 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110114 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110114 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110114 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110114 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110114 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110114 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110114 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110114 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110115 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110115 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110115 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110115 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110115 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110115 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110115 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110115 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110115 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110115 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110116 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014110116 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110116 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110116 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110116 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110116 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110116 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110116 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110116 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110116 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110117 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110117 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110117 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110117 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110117 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110117 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110117 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110117 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110117 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014110117 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110118 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110118 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110118 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014110118 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110118 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014110118 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110118 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110118 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110118 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110118 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110119 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110119 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110119 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110119 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110119 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110119 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014110119 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110119 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110119 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110119 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014110120 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014110120 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110120 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110120 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110120 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110120 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110120 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110120 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110120 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110120 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110121 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014110121 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110121 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110121 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110121 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110121 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110121 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110121 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110121 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110121 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110122 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110122 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110122 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110122 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014110122 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110122 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110122 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110122 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110122 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110122 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110123 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110123 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110123 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110123 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110123 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110123 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110123 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014110123 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110123 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110123 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110200 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110200 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110200 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110200 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110200 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110200 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110200 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110200 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110200 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110200 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110201 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110201 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110201 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110201 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110201 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110201 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110201 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110201 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110201 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110201 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110202 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110202 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110202 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110202 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110202 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110202 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110202 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110202 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110202 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110202 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110203 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110203 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110203 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110203 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110203 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110203 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110203 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110203 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110203 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110203 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110204 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110204 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110204 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110204 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110204 product_6 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110204 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014110204 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110204 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014110204 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110204 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110205 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110205 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110205 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110205 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110205 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110205 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014110205 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110205 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110205 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110205 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110206 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110206 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110206 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110206 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110206 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014110206 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110206 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110206 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110206 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110206 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110207 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110207 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110207 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110207 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110207 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110207 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110207 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110207 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110207 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110207 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014110208 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110208 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110208 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110208 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110208 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110208 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110208 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110208 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110208 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110208 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110209 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110209 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110209 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110209 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110209 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110209 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110209 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110209 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110209 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110209 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014110210 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110210 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110210 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110210 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110210 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110210 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw= +2014110210 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110210 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110210 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110210 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110211 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110211 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110211 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110211 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110211 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4= +2014110211 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110211 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ= +2014110211 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110211 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110211 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110212 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110212 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110212 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110212 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110212 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110212 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110212 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110212 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110212 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110212 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014110213 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110213 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110213 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014110213 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110213 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110213 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110213 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110213 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014110213 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110213 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110214 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110214 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k= +2014110214 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg= +2014110214 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110214 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110214 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110214 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110214 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110214 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110214 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014110215 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110215 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110215 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110215 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110215 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ= +2014110215 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110215 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110215 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110215 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110215 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110216 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110216 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110216 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014110216 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110216 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110216 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110216 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M= +2014110216 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110216 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110216 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g= +2014110217 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110217 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014110217 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs= +2014110217 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM= +2014110217 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110217 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110217 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110217 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110217 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110217 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo= +2014110218 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI= +2014110218 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o= +2014110218 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110218 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110218 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110218 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc= +2014110218 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110218 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI= +2014110218 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110218 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110219 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8= +2014110219 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q= +2014110219 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110219 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg= +2014110219 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110219 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo= +2014110219 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4= +2014110219 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs= +2014110219 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs= +2014110219 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110220 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110220 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110220 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns= +2014110220 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014110220 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014110220 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110220 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM= +2014110220 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs= +2014110220 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM= +2014110220 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110221 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110221 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110221 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs= +2014110221 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA= +2014110221 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110221 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38= +2014110221 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= +2014110221 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110221 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ= +2014110221 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110222 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI= +2014110222 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg= +2014110222 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0= +2014110222 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= +2014110222 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0= +2014110222 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= +2014110222 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4= +2014110222 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4= +2014110222 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A= +2014110222 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ= +2014110223 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0= +2014110223 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU= +2014110223 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38= +2014110223 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg= +2014110223 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4= +2014110223 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110223 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s= +2014110223 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU= +2014110223 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= +2014110223 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU= diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json b/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json new file mode 100644 index 000000000000..7cd10e17678d --- /dev/null +++ b/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json @@ -0,0 +1,14 @@ +[ + { + "type": "sketchMerge", + "name": "sids_sketch", + "fieldName": "sketch", + "size": 16384 + }, + { + "type": "sketchMerge", + "name": "non_existing_col_validation", + "fieldName": "non_existing_col", + "size": 16384 + } +] diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json new file mode 100644 index 000000000000..5af6e3093208 --- /dev/null +++ b/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json @@ -0,0 +1,83 @@ +{ + "queryType": "groupBy", + "dataSource": "test_datasource", + "granularity": "ALL", + "dimensions": [], + "aggregations": [ + { "type": "sketchMerge", "name": "sids_sketch_count", "fieldName": "sids_sketch", "size": 16384 }, + { "type": "sketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + ], + "postAggregations": [ + { + "type": "sketchEstimate", + "name": "sketchEstimatePostAgg", + "field": { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + }, + { + "type": "sketchEstimate", + "name": "sketchIntersectionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchIntersectionPostAgg", + "func": "INTERSECT", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchAnotBPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchAnotBUnionPostAgg", + "func": "NOT", + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchUnionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchUnionPostAgg", + "func": "UNION", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + ] + } + } + ], + "intervals": [ "2014-10-19T00:00:00.000Z/2014-10-22T00:00:00.000Z" ] +} diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_record_parser.json b/extensions/datasketches/src/test/resources/sketch_test_data_record_parser.json new file mode 100644 index 000000000000..f485cb29261b --- /dev/null +++ b/extensions/datasketches/src/test/resources/sketch_test_data_record_parser.json @@ -0,0 +1,16 @@ +{ + "type" : "string", + "parseSpec" : { + "format" : "tsv", + "timestampSpec" : { + "column" : "timestamp", + "format" : "yyyyMMddHH" + }, + "dimensionsSpec" : { + "dimensions": ["product"], + "dimensionExclusions" : [], + "spatialDimensions" : [] + }, + "columns": ["timestamp", "product", "sketch"] + } +} From 9c569be11e66cd094ccfa9be744b377f0019fd7d Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 30 Oct 2015 13:55:04 -0500 Subject: [PATCH 2/6] adding datasketches module to top level pom --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 5ac8122ff201..05ac8f819390 100644 --- a/pom.xml +++ b/pom.xml @@ -105,6 +105,8 @@ extensions/namespace-lookup extensions/kafka-extraction-namespace extensions/cloudfiles-extensions + extensions/datasketches + distribution From 6c6a38cedb9e46af105b9aa54c8afc62ef5be6fd Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 30 Oct 2015 15:53:24 -0500 Subject: [PATCH 3/6] adding datasketches aggregator to documentation --- .../development/datasketches-aggregators.md | 42 +++++++++++++++++++ docs/content/toc.textile | 1 + 2 files changed, 43 insertions(+) create mode 100644 docs/content/development/datasketches-aggregators.md diff --git a/docs/content/development/datasketches-aggregators.md b/docs/content/development/datasketches-aggregators.md new file mode 100644 index 000000000000..90207489f017 --- /dev/null +++ b/docs/content/development/datasketches-aggregators.md @@ -0,0 +1,42 @@ +--- +layout: doc_page +--- + +## DataSketches aggregator +Druid aggregators based on [datasketches]()http://datasketches.github.io/) library. You would ingest one or more metric columns using either `sketchBuild` or `sketchMerge` aggregators. Then, at query time, you can use `sketchMerge` with appropriate post aggregators described below. Note that sketch algorithms are approxiate, see details in the [datasketches doc](http://datasketches.github.io/docs/theChallenge.html). + +#### aggregators to use at ingestion time + +##### non-sketch input data +You can ingest data to druid and build the sketch objects which are later used at the time of querying to compute uniques. + +```json +{ "type" : "sketchBuild", "name" : , "fieldName" : } +``` + +##### sketch input data +You can ingest data to druid which already contains the sketch objects from batch pipeline by using [sketches-pig](https://github.com/DataSketches/sketches-pig) for example, in which case you just want to merge those and ingest into Druid. + +```json +{ "type" : "sketchMerge", "name" : , "fieldName" : } +``` +#### aggregator to use at query time + +```json +{ "type" : "sketchMerge", "name" : , "fieldName" : } +``` + +Note that you can specify an additional field called "size" in above aggregators which is 16384 by default and must be a power of 2. At query time, size value must be greater than or equal to the value used at indexing time. Internally, size refers to the maximum number of entries sketch object will retain, higher size would mean higher accuracy but higher space needed to store those sketches. See [theta-size](http://datasketches.github.io/docs/ThetaSize.html) for more details. In general, I would recommend just sticking to default size which has worked well for us. + +### Post Aggregators + +#### Sketch Estimator +```json +{ "type" : "sketchEstimate", "name": , "fieldName" : } +``` + +#### Sketch Operations +```json +{ "type" : "sketchSetOp", "name": , "func": , "fields" : } +``` + diff --git a/docs/content/toc.textile b/docs/content/toc.textile index 6e158fa401e3..3e695048006a 100644 --- a/docs/content/toc.textile +++ b/docs/content/toc.textile @@ -89,6 +89,7 @@ h2. Development ** "Geographic Queries":../development/geo.html ** "Select Query":../development/select-query.html ** "Approximate Histograms and Quantiles":../development/approximate-histograms.html +** "Datasketches based Aggregators":../development/datasketches-aggregators.html ** "Router node":../development/router.html ** "New Kafka Firehose":../development/kafka-simple-consumer-firehose.html From 88ae3c43f984ae4932f58c82e0c917d8940bc5e3 Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 6 Nov 2015 10:18:23 -0600 Subject: [PATCH 4/6] changing names to be explicit about theta sketch algorithm old names are still valid though so as to be backwards compatible for now --- .../{ => theta}/EmptySketchAggregator.java | 2 +- .../EmptySketchBufferAggregator.java | 2 +- .../{ => theta}/SketchAggregator.java | 2 +- .../{ => theta}/SketchAggregatorFactory.java | 2 +- .../{ => theta}/SketchBufferAggregator.java | 2 +- .../SketchBuildAggregatorFactory.java | 4 +- .../SketchBuildComplexMetricSerde.java | 2 +- .../SketchEstimatePostAggregator.java | 2 +- .../{ => theta}/SketchJsonSerializer.java | 2 +- .../SketchMergeAggregatorFactory.java | 4 +- .../SketchMergeComplexMetricSerde.java | 4 +- .../{ => theta}/SketchModule.java | 35 ++-- .../{ => theta}/SketchObjectStrategy.java | 2 +- .../{ => theta}/SketchOperations.java | 2 +- .../{ => theta}/SketchSetPostAggregator.java | 6 +- .../{ => theta}/SynchronizedUnion.java | 2 +- .../theta/oldapi/OldApiSketchModule.java | 87 ++++++++ .../OldSketchBuildAggregatorFactory.java | 39 ++++ .../OldSketchEstimatePostAggregator.java | 39 ++++ .../OldSketchMergeAggregatorFactory.java | 40 ++++ .../oldapi/OldSketchSetPostAggregator.java | 43 ++++ .../io.druid.initialization.DruidModule | 3 +- .../{ => theta}/SketchAggregationTest.java | 2 +- .../oldapi/OldApiSketchAggregationTest.java | 196 ++++++++++++++++++ .../old_simple_test_data_aggregators.json | 12 ++ .../old_simple_test_data_group_by_query.json | 84 ++++++++ .../old_sketch_test_data_aggregators.json | 14 ++ .../old_sketch_test_data_group_by_query.json | 83 ++++++++ .../simple_test_data_aggregators.json | 4 +- .../simple_test_data_group_by_query.json | 18 +- .../sketch_test_data_aggregators.json | 4 +- .../sketch_test_data_group_by_query.json | 18 +- 32 files changed, 701 insertions(+), 60 deletions(-) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/EmptySketchAggregator.java (96%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/EmptySketchBufferAggregator.java (96%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchAggregator.java (98%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchAggregatorFactory.java (99%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchBufferAggregator.java (98%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchBuildAggregatorFactory.java (94%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchBuildComplexMetricSerde.java (97%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchEstimatePostAggregator.java (98%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchJsonSerializer.java (96%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchMergeAggregatorFactory.java (96%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchMergeComplexMetricSerde.java (96%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchModule.java (60%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchObjectStrategy.java (98%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchOperations.java (98%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchSetPostAggregator.java (96%) rename extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/{ => theta}/SynchronizedUnion.java (96%) create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchModule.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchEstimatePostAggregator.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java create mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchSetPostAggregator.java rename extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/{ => theta}/SketchAggregationTest.java (99%) create mode 100644 extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchAggregationTest.java create mode 100644 extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_aggregators.json create mode 100644 extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_group_by_query.json create mode 100644 extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_aggregators.json create mode 100644 extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_group_by_query.json diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/EmptySketchAggregator.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/EmptySketchAggregator.java index 0b469d701327..19ee610b53b1 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchAggregator.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/EmptySketchAggregator.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import io.druid.query.aggregation.Aggregator; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/EmptySketchBufferAggregator.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/EmptySketchBufferAggregator.java index 21be7ccb39d5..160cc5f60b38 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/EmptySketchBufferAggregator.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/EmptySketchBufferAggregator.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import io.druid.query.aggregation.BufferAggregator; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchAggregator.java similarity index 98% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchAggregator.java index 54aaec1eb8a6..3b8a9cc1f66c 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregator.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchAggregator.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.yahoo.sketches.Family; import com.yahoo.sketches.memory.Memory; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchAggregatorFactory.java similarity index 99% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchAggregatorFactory.java index cb1aab16eade..7fd551026bcc 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchAggregatorFactory.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchAggregatorFactory.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java similarity index 98% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java index 6607deff9a25..849a8722175f 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBufferAggregator.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.yahoo.sketches.Family; import com.yahoo.sketches.memory.Memory; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java similarity index 94% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java index 22cc3f2a422e..509f3c0ff228 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildAggregatorFactory.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -64,6 +64,6 @@ public List getRequiredColumns() @Override public String getTypeName() { - return SketchModule.SKETCH_BUILD; + return SketchModule.THETA_SKETCH_BUILD_AGG; } } diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildComplexMetricSerde.java similarity index 97% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildComplexMetricSerde.java index 8cedeef63d88..1b82c1118b53 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchBuildComplexMetricSerde.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildComplexMetricSerde.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.metamx.common.IAE; import com.yahoo.sketches.memory.Memory; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java similarity index 98% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java index b2881d5788f0..b34203f2545b 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchEstimatePostAggregator.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchJsonSerializer.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchJsonSerializer.java index 02038b024e3d..b28c44b00305 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchJsonSerializer.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchJsonSerializer.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java index 6ce64824409c..e254b1727f4f 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeAggregatorFactory.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -84,7 +84,7 @@ public Object finalizeComputation(Object object) @Override public String getTypeName() { - return SketchModule.SET_SKETCH; + return SketchModule.THETA_SKETCH_MERGE_AGG; } @Override diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeComplexMetricSerde.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeComplexMetricSerde.java index 83556e5734d9..e67c07f4abf7 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchMergeComplexMetricSerde.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeComplexMetricSerde.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.yahoo.sketches.memory.Memory; import com.yahoo.sketches.theta.Sketch; @@ -40,7 +40,7 @@ public class SketchMergeComplexMetricSerde extends ComplexMetricSerde @Override public String getTypeName() { - return SketchModule.SET_SKETCH; + return SketchModule.THETA_SKETCH; } @Override diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java similarity index 60% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java index ea34259adcea..c115b793f422 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchModule.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java @@ -17,13 +17,12 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.jsontype.NamedType; import com.fasterxml.jackson.databind.module.SimpleModule; import com.google.inject.Binder; - import com.yahoo.sketches.theta.Sketch; import io.druid.initialization.DruidModule; import io.druid.segment.serde.ComplexMetrics; @@ -33,21 +32,27 @@ public class SketchModule implements DruidModule { + public static final String THETA_SKETCH = "thetaSketch"; + + public static final String THETA_SKETCH_MERGE_AGG = "thetaSketchMerge"; + public static final String THETA_SKETCH_BUILD_AGG = "thetaSketchBuild"; - public static final String SET_SKETCH = "setSketch"; - public static final String SKETCH_BUILD = "sketchBuild"; + public static final String THETA_SKETCH_ESTIMATE_POST_AGG = "thetaSketchEstimate"; + public static final String THETA_SKETCH_SET_OP_POST_AGG = "thetaSketchSetOp"; @Override public void configure(Binder binder) { - //gives the extractor to ingest non-sketch input data - if (ComplexMetrics.getSerdeForType(SKETCH_BUILD) == null) { - ComplexMetrics.registerSerde(SKETCH_BUILD, new SketchBuildComplexMetricSerde()); + if (ComplexMetrics.getSerdeForType(THETA_SKETCH) == null) { + ComplexMetrics.registerSerde(THETA_SKETCH, new SketchMergeComplexMetricSerde()); + } + + if (ComplexMetrics.getSerdeForType(THETA_SKETCH_MERGE_AGG) == null) { + ComplexMetrics.registerSerde(THETA_SKETCH_MERGE_AGG, new SketchMergeComplexMetricSerde()); } - //gives the extractor to ingest sketch input data - if (ComplexMetrics.getSerdeForType(SET_SKETCH) == null) { - ComplexMetrics.registerSerde(SET_SKETCH, new SketchMergeComplexMetricSerde()); + if (ComplexMetrics.getSerdeForType(THETA_SKETCH_BUILD_AGG) == null) { + ComplexMetrics.registerSerde(THETA_SKETCH_BUILD_AGG, new SketchBuildComplexMetricSerde()); } } @@ -55,12 +60,12 @@ public void configure(Binder binder) public List getJacksonModules() { return Arrays.asList( - new SimpleModule("SketchModule") + new SimpleModule("ThetaSketchModule") .registerSubtypes( - new NamedType(SketchBuildAggregatorFactory.class, "sketchBuild"), - new NamedType(SketchMergeAggregatorFactory.class, "sketchMerge"), - new NamedType(SketchEstimatePostAggregator.class, "sketchEstimate"), - new NamedType(SketchSetPostAggregator.class, "sketchSetOper") + new NamedType(SketchBuildAggregatorFactory.class, THETA_SKETCH_BUILD_AGG), + new NamedType(SketchMergeAggregatorFactory.class, THETA_SKETCH_MERGE_AGG), + new NamedType(SketchEstimatePostAggregator.class, THETA_SKETCH_ESTIMATE_POST_AGG), + new NamedType(SketchSetPostAggregator.class, THETA_SKETCH_SET_OP_POST_AGG) ) .addSerializer(Sketch.class, new SketchJsonSerializer()) ); diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchObjectStrategy.java similarity index 98% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchObjectStrategy.java index 9ac21ebfd85b..c8ef75bb1222 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchObjectStrategy.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchObjectStrategy.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.google.common.primitives.Longs; import com.metamx.common.IAE; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchOperations.java similarity index 98% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchOperations.java index 5df8ba1fd08e..f2d5867e21fb 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchOperations.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchOperations.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.google.common.base.Charsets; import com.metamx.common.logger.Logger; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchSetPostAggregator.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchSetPostAggregator.java index 50152070b81f..d0c866db90dc 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SketchSetPostAggregator.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchSetPostAggregator.java @@ -17,9 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; - -import io.druid.query.aggregation.datasketches.SketchOperations.Func; +package io.druid.query.aggregation.datasketches.theta; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -43,7 +41,7 @@ public class SketchSetPostAggregator implements PostAggregator private final String name; private final List fields; - private final Func func; + private final SketchOperations.Func func; private final int maxSketchSize; @JsonCreator diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SynchronizedUnion.java similarity index 96% rename from extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java rename to extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SynchronizedUnion.java index 37dad2071c67..bd343b0ee208 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/SynchronizedUnion.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SynchronizedUnion.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.yahoo.sketches.memory.Memory; import com.yahoo.sketches.theta.CompactSketch; diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchModule.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchModule.java new file mode 100644 index 000000000000..816f3967c92f --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchModule.java @@ -0,0 +1,87 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches.theta.oldapi; + +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.google.inject.Binder; + +import com.yahoo.sketches.theta.Sketch; +import io.druid.initialization.DruidModule; +import io.druid.query.aggregation.datasketches.theta.SketchBuildComplexMetricSerde; +import io.druid.query.aggregation.datasketches.theta.SketchJsonSerializer; +import io.druid.query.aggregation.datasketches.theta.SketchMergeComplexMetricSerde; +import io.druid.query.aggregation.datasketches.theta.SketchModule; +import io.druid.segment.serde.ComplexMetrics; + +import java.util.Arrays; +import java.util.List; + +public class OldApiSketchModule implements DruidModule +{ + + public static final String SET_SKETCH = "setSketch"; + public static final String SKETCH_BUILD = "sketchBuild"; + public static final String SKETCH_MERGE = "sketchMerge"; + + @Override + public void configure(Binder binder) + { + if (ComplexMetrics.getSerdeForType(SKETCH_BUILD) == null) { + ComplexMetrics.registerSerde(SKETCH_BUILD, new SketchBuildComplexMetricSerde()); + } + + if (ComplexMetrics.getSerdeForType(SET_SKETCH) == null) { + ComplexMetrics.registerSerde(SET_SKETCH, new SketchMergeComplexMetricSerde()); + } + + if (ComplexMetrics.getSerdeForType(SKETCH_MERGE) == null) { + ComplexMetrics.registerSerde(SKETCH_MERGE, new SketchMergeComplexMetricSerde()); + } + + if (ComplexMetrics.getSerdeForType(SketchModule.THETA_SKETCH) == null) { + ComplexMetrics.registerSerde(SketchModule.THETA_SKETCH, new SketchMergeComplexMetricSerde()); + } + + if (ComplexMetrics.getSerdeForType(SketchModule.THETA_SKETCH_MERGE_AGG) == null) { + ComplexMetrics.registerSerde(SketchModule.THETA_SKETCH_MERGE_AGG, new SketchMergeComplexMetricSerde()); + } + + if (ComplexMetrics.getSerdeForType(SketchModule.THETA_SKETCH_BUILD_AGG) == null) { + ComplexMetrics.registerSerde(SketchModule.THETA_SKETCH_BUILD_AGG, new SketchBuildComplexMetricSerde()); + } + } + + @Override + public List getJacksonModules() + { + return Arrays.asList( + new SimpleModule("OldThetaSketchModule") + .registerSubtypes( + new NamedType(OldSketchBuildAggregatorFactory.class, SKETCH_BUILD), + new NamedType(OldSketchMergeAggregatorFactory.class, SKETCH_MERGE), + new NamedType(OldSketchEstimatePostAggregator.class, "sketchEstimate"), + new NamedType(OldSketchSetPostAggregator.class, "sketchSetOper") + ) + .addSerializer(Sketch.class, new SketchJsonSerializer()) + ); + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java new file mode 100644 index 000000000000..ed5ea477309f --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java @@ -0,0 +1,39 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches.theta.oldapi; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.druid.query.aggregation.datasketches.theta.SketchBuildAggregatorFactory; + +/** + */ +public class OldSketchBuildAggregatorFactory extends SketchBuildAggregatorFactory +{ + @JsonCreator + public OldSketchBuildAggregatorFactory( + @JsonProperty("name") String name, + @JsonProperty("fieldName") String fieldName, + @JsonProperty("size") Integer size + ) + { + super(name, fieldName, size); + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchEstimatePostAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchEstimatePostAggregator.java new file mode 100644 index 000000000000..1f0fa58ffbb7 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchEstimatePostAggregator.java @@ -0,0 +1,39 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches.theta.oldapi; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.druid.query.aggregation.PostAggregator; +import io.druid.query.aggregation.datasketches.theta.SketchEstimatePostAggregator; + +/** + */ +public class OldSketchEstimatePostAggregator extends SketchEstimatePostAggregator +{ + @JsonCreator + public OldSketchEstimatePostAggregator( + @JsonProperty("name") String name, + @JsonProperty("field") PostAggregator field + ) + { + super(name, field); + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java new file mode 100644 index 000000000000..d386889a38c8 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java @@ -0,0 +1,40 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches.theta.oldapi; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.druid.query.aggregation.datasketches.theta.SketchMergeAggregatorFactory; + +/** + */ +public class OldSketchMergeAggregatorFactory extends SketchMergeAggregatorFactory +{ + @JsonCreator + public OldSketchMergeAggregatorFactory( + @JsonProperty("name") String name, + @JsonProperty("fieldName") String fieldName, + @JsonProperty("size") Integer size, + @JsonProperty("shouldFinalize") Boolean shouldFinalize + ) + { + super(name, fieldName, size, shouldFinalize); + } +} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchSetPostAggregator.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchSetPostAggregator.java new file mode 100644 index 000000000000..dee6a5cccbc5 --- /dev/null +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchSetPostAggregator.java @@ -0,0 +1,43 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches.theta.oldapi; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.druid.query.aggregation.PostAggregator; +import io.druid.query.aggregation.datasketches.theta.SketchSetPostAggregator; + +import java.util.List; + +/** + */ +public class OldSketchSetPostAggregator extends SketchSetPostAggregator +{ + @JsonCreator + public OldSketchSetPostAggregator( + @JsonProperty("name") String name, + @JsonProperty("func") String func, + @JsonProperty("size") Integer maxSize, + @JsonProperty("fields") List fields + ) + { + super(name, func, maxSize, fields); + } +} diff --git a/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule b/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule index 3c66dca1cdb3..efd10f3a7e78 100644 --- a/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule +++ b/extensions/datasketches/src/main/resources/META-INF/services/io.druid.initialization.DruidModule @@ -1 +1,2 @@ -io.druid.query.aggregation.datasketches.SketchModule +io.druid.query.aggregation.datasketches.theta.SketchModule +io.druid.query.aggregation.datasketches.theta.oldapi.OldApiSketchModule diff --git a/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java similarity index 99% rename from extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java rename to extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java index 5313e80b6e5c..1dd85c3668e3 100644 --- a/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/SketchAggregationTest.java +++ b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java @@ -17,7 +17,7 @@ * under the License. */ -package io.druid.query.aggregation.datasketches; +package io.druid.query.aggregation.datasketches.theta; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; diff --git a/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchAggregationTest.java b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchAggregationTest.java new file mode 100644 index 000000000000..3469d61332d3 --- /dev/null +++ b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldApiSketchAggregationTest.java @@ -0,0 +1,196 @@ +/* +* Licensed to Metamarkets Group Inc. (Metamarkets) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. Metamarkets licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package io.druid.query.aggregation.datasketches.theta.oldapi; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.io.Files; +import com.metamx.common.guava.Sequence; +import com.metamx.common.guava.Sequences; +import io.druid.data.input.MapBasedRow; +import io.druid.granularity.QueryGranularity; +import io.druid.query.aggregation.AggregationTestHelper; +import io.druid.query.aggregation.AggregatorFactory; +import io.druid.query.aggregation.PostAggregator; +import io.druid.query.aggregation.post.FieldAccessPostAggregator; +import org.joda.time.DateTime; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.List; + +/** + */ +public class OldApiSketchAggregationTest +{ + private final AggregationTestHelper helper; + + @Rule + public final TemporaryFolder tempFolder = new TemporaryFolder(); + + public OldApiSketchAggregationTest() + { + OldApiSketchModule sm = new OldApiSketchModule(); + sm.configure(null); + + helper = new AggregationTestHelper( + sm.getJacksonModules(), + tempFolder + ); + } + + @Test + public void testSimpleDataIngestAndQuery() throws Exception + { + Sequence seq = helper.createIndexAndRunQueryOnSegment( + new File(this.getClass().getClassLoader().getResource("simple_test_data.tsv").getFile()), + readFileFromClasspathAsString("simple_test_data_record_parser.json"), + readFileFromClasspathAsString("oldapi/old_simple_test_data_aggregators.json"), + 0, + QueryGranularity.NONE, + 5, + readFileFromClasspathAsString("oldapi/old_simple_test_data_group_by_query.json") + ); + + List results = Sequences.toList(seq, Lists.newArrayList()); + Assert.assertEquals(1, results.size()); + Assert.assertEquals( + new MapBasedRow( + DateTime.parse("2014-10-19T00:00:00.000Z"), + ImmutableMap + .builder() + .put("sketch_count", 50.0) + .put("sketchEstimatePostAgg", 50.0) + .put("sketchUnionPostAggEstimate", 50.0) + .put("sketchIntersectionPostAggEstimate", 50.0) + .put("sketchAnotBPostAggEstimate", 0.0) + .put("non_existing_col_validation", 0.0) + .build() + ), + results.get(0) + ); + } + + @Test + public void testSketchDataIngestAndQuery() throws Exception + { + Sequence seq = helper.createIndexAndRunQueryOnSegment( + new File(OldApiSketchAggregationTest.class.getClassLoader().getResource("sketch_test_data.tsv").getFile()), + readFileFromClasspathAsString("sketch_test_data_record_parser.json"), + readFileFromClasspathAsString("oldapi/old_sketch_test_data_aggregators.json"), + 0, + QueryGranularity.NONE, + 5, + readFileFromClasspathAsString("oldapi/old_sketch_test_data_group_by_query.json") + ); + + List results = Sequences.toList(seq, Lists.newArrayList()); + Assert.assertEquals(1, results.size()); + Assert.assertEquals( + new MapBasedRow( + DateTime.parse("2014-10-19T00:00:00.000Z"), + ImmutableMap + .builder() + .put("sids_sketch_count", 50.0) + .put("sketchEstimatePostAgg", 50.0) + .put("sketchUnionPostAggEstimate", 50.0) + .put("sketchIntersectionPostAggEstimate", 50.0) + .put("sketchAnotBPostAggEstimate", 0.0) + .put("non_existing_col_validation", 0.0) + .build() + ), + results.get(0) + ); + } + + @Test + public void testSketchMergeAggregatorFactorySerde() throws Exception + { + assertAggregatorFactorySerde(new OldSketchMergeAggregatorFactory("name", "fieldName", 16, null)); + assertAggregatorFactorySerde(new OldSketchMergeAggregatorFactory("name", "fieldName", 16, false)); + assertAggregatorFactorySerde(new OldSketchMergeAggregatorFactory("name", "fieldName", 16, true)); + } + + @Test + public void testSketchBuildAggregatorFactorySerde() throws Exception + { + assertAggregatorFactorySerde(new OldSketchBuildAggregatorFactory("name", "fieldName", 16)); + } + + private void assertAggregatorFactorySerde(AggregatorFactory agg) throws Exception{ + Assert.assertEquals( + agg, + helper.getObjectMapper().readValue( + helper.getObjectMapper().writeValueAsString(agg), + AggregatorFactory.class + ) + ); + } + + @Test + public void testSketchEstimatePostAggregatorSerde() throws Exception + { + assertPostAggregatorSerde( + new OldSketchEstimatePostAggregator( + "name", + new FieldAccessPostAggregator("name", "fieldName") + ) + ); + } + + @Test + public void testSketchSetPostAggregatorSerde() throws Exception + { + assertPostAggregatorSerde( + new OldSketchSetPostAggregator( + "name", + "INTERSECT", + null, + Lists.newArrayList( + new FieldAccessPostAggregator("name1", "fieldName1"), + new FieldAccessPostAggregator("name2", "fieldName2") + ) + ) + ); + } + + private void assertPostAggregatorSerde(PostAggregator agg) throws Exception{ + Assert.assertEquals( + agg, + helper.getObjectMapper().readValue( + helper.getObjectMapper().writeValueAsString(agg), + PostAggregator.class + ) + ); + } + + public final static String readFileFromClasspathAsString(String fileName) throws IOException + { + return Files.asCharSource( + new File(OldApiSketchAggregationTest.class.getClassLoader().getResource(fileName).getFile()), + Charset.forName("UTF-8") + ).read(); + } +} diff --git a/extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_aggregators.json b/extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_aggregators.json new file mode 100644 index 000000000000..fbefe20e2d24 --- /dev/null +++ b/extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_aggregators.json @@ -0,0 +1,12 @@ +[ + { + "type": "sketchBuild", + "name": "pty_country", + "fieldName": "pty_country" + }, + { + "type": "sketchBuild", + "name": "non_existing_col_validation", + "fieldName": "non_existing_col" + } +] diff --git a/extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_group_by_query.json new file mode 100644 index 000000000000..5339421e37f2 --- /dev/null +++ b/extensions/datasketches/src/test/resources/oldapi/old_simple_test_data_group_by_query.json @@ -0,0 +1,84 @@ +{ + "queryType": "groupBy", + "dataSource": "test_datasource", + "granularity": "ALL", + "dimensions": [], + "aggregations": [ + { "type": "sketchMerge", "name": "sketch_count", "fieldName": "pty_country", "size": 16384 }, + { "type": "sketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + ], + "postAggregations": [ + { + "type": "sketchEstimate", + "name": "sketchEstimatePostAgg", + "field": { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + }, + { + "type": "sketchEstimate", + "name": "sketchIntersectionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchIntersectionPostAgg", + "func": "INTERSECT", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchAnotBPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchAnotBUnionPostAgg", + "func": "NOT", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchUnionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchUnionPostAgg", + "func": "UNION", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sketch_count" + } + ] + } + } + ], + "intervals": [ "2014-10-19T00:00:00.000Z/2014-10-22T00:00:00.000Z" ] +} diff --git a/extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_aggregators.json b/extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_aggregators.json new file mode 100644 index 000000000000..7cd10e17678d --- /dev/null +++ b/extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_aggregators.json @@ -0,0 +1,14 @@ +[ + { + "type": "sketchMerge", + "name": "sids_sketch", + "fieldName": "sketch", + "size": 16384 + }, + { + "type": "sketchMerge", + "name": "non_existing_col_validation", + "fieldName": "non_existing_col", + "size": 16384 + } +] diff --git a/extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_group_by_query.json new file mode 100644 index 000000000000..5af6e3093208 --- /dev/null +++ b/extensions/datasketches/src/test/resources/oldapi/old_sketch_test_data_group_by_query.json @@ -0,0 +1,83 @@ +{ + "queryType": "groupBy", + "dataSource": "test_datasource", + "granularity": "ALL", + "dimensions": [], + "aggregations": [ + { "type": "sketchMerge", "name": "sids_sketch_count", "fieldName": "sids_sketch", "size": 16384 }, + { "type": "sketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + ], + "postAggregations": [ + { + "type": "sketchEstimate", + "name": "sketchEstimatePostAgg", + "field": { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + }, + { + "type": "sketchEstimate", + "name": "sketchIntersectionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchIntersectionPostAgg", + "func": "INTERSECT", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchAnotBPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchAnotBUnionPostAgg", + "func": "NOT", + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + ] + } + }, + { + "type": "sketchEstimate", + "name": "sketchUnionPostAggEstimate", + "field": + { + "type": "sketchSetOper", + "name": "sketchUnionPostAgg", + "func": "UNION", + "size": 16384, + "fields": [ + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + }, + { + "type": "fieldAccess", + "fieldName": "sids_sketch_count" + } + ] + } + } + ], + "intervals": [ "2014-10-19T00:00:00.000Z/2014-10-22T00:00:00.000Z" ] +} diff --git a/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json b/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json index fbefe20e2d24..02879448ba98 100644 --- a/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json +++ b/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json @@ -1,11 +1,11 @@ [ { - "type": "sketchBuild", + "type": "thetaSketchBuild", "name": "pty_country", "fieldName": "pty_country" }, { - "type": "sketchBuild", + "type": "thetaSketchBuild", "name": "non_existing_col_validation", "fieldName": "non_existing_col" } diff --git a/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json index 5339421e37f2..3f808b487ead 100644 --- a/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json +++ b/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json @@ -4,12 +4,12 @@ "granularity": "ALL", "dimensions": [], "aggregations": [ - { "type": "sketchMerge", "name": "sketch_count", "fieldName": "pty_country", "size": 16384 }, - { "type": "sketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + { "type": "thetaSketchMerge", "name": "sketch_count", "fieldName": "pty_country", "size": 16384 }, + { "type": "thetaSketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } ], "postAggregations": [ { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchEstimatePostAgg", "field": { "type": "fieldAccess", @@ -17,11 +17,11 @@ } }, { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchIntersectionPostAggEstimate", "field": { - "type": "sketchSetOper", + "type": "thetaSketchSetOp", "name": "sketchIntersectionPostAgg", "func": "INTERSECT", "size": 16384, @@ -38,11 +38,11 @@ } }, { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchAnotBPostAggEstimate", "field": { - "type": "sketchSetOper", + "type": "thetaSketchSetOp", "name": "sketchAnotBUnionPostAgg", "func": "NOT", "size": 16384, @@ -59,11 +59,11 @@ } }, { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchUnionPostAggEstimate", "field": { - "type": "sketchSetOper", + "type": "thetaSketchSetOp", "name": "sketchUnionPostAgg", "func": "UNION", "size": 16384, diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json b/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json index 7cd10e17678d..1ea201981259 100644 --- a/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json +++ b/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json @@ -1,12 +1,12 @@ [ { - "type": "sketchMerge", + "type": "thetaSketchMerge", "name": "sids_sketch", "fieldName": "sketch", "size": 16384 }, { - "type": "sketchMerge", + "type": "thetaSketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json index 5af6e3093208..9c1902fcd58d 100644 --- a/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json +++ b/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json @@ -4,12 +4,12 @@ "granularity": "ALL", "dimensions": [], "aggregations": [ - { "type": "sketchMerge", "name": "sids_sketch_count", "fieldName": "sids_sketch", "size": 16384 }, - { "type": "sketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + { "type": "thetaSketchMerge", "name": "sids_sketch_count", "fieldName": "sids_sketch", "size": 16384 }, + { "type": "thetaSketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } ], "postAggregations": [ { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchEstimatePostAgg", "field": { "type": "fieldAccess", @@ -17,11 +17,11 @@ } }, { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchIntersectionPostAggEstimate", "field": { - "type": "sketchSetOper", + "type": "thetaSketchSetOp", "name": "sketchIntersectionPostAgg", "func": "INTERSECT", "size": 16384, @@ -38,11 +38,11 @@ } }, { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchAnotBPostAggEstimate", "field": { - "type": "sketchSetOper", + "type": "thetaSketchSetOp", "name": "sketchAnotBUnionPostAgg", "func": "NOT", "fields": [ @@ -58,11 +58,11 @@ } }, { - "type": "sketchEstimate", + "type": "thetaSketchEstimate", "name": "sketchUnionPostAggEstimate", "field": { - "type": "sketchSetOper", + "type": "thetaSketchSetOp", "name": "sketchUnionPostAgg", "func": "UNION", "size": 16384, From 338f88b86b32056748e96b7ce39bfe65b34474af Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Tue, 10 Nov 2015 01:04:19 -0600 Subject: [PATCH 5/6] further simplifying the api, users just need to use thetaSketch as aggregator --- .../theta/SketchBuildAggregatorFactory.java | 69 ------------------- .../theta/SketchMergeAggregatorFactory.java | 48 ++++++++++--- .../datasketches/theta/SketchModule.java | 3 +- .../OldSketchBuildAggregatorFactory.java | 6 +- .../OldSketchMergeAggregatorFactory.java | 2 +- .../theta/SketchAggregationTest.java | 18 ++--- .../simple_test_data_aggregators.json | 4 +- .../simple_test_data_group_by_query.json | 4 +- .../src/test/resources/sketch_test_data.tsv | 2 +- .../sketch_test_data_aggregators.json | 6 +- .../sketch_test_data_group_by_query.json | 4 +- 11 files changed, 59 insertions(+), 107 deletions(-) delete mode 100644 extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java deleted file mode 100644 index 509f3c0ff228..000000000000 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchBuildAggregatorFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/* -* Licensed to Metamarkets Group Inc. (Metamarkets) under one -* or more contributor license agreements. See the NOTICE file -* distributed with this work for additional information -* regarding copyright ownership. Metamarkets licenses this file -* to you under the Apache License, Version 2.0 (the -* "License"); you may not use this file except in compliance -* with the License. You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ - -package io.druid.query.aggregation.datasketches.theta; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.yahoo.sketches.theta.Sketch; -import io.druid.query.aggregation.AggregatorFactory; - -import java.util.Arrays; -import java.util.List; - -/** - */ -public class SketchBuildAggregatorFactory extends SketchAggregatorFactory -{ - private static final byte CACHE_TYPE_ID = 17; - - @JsonCreator - public SketchBuildAggregatorFactory( - @JsonProperty("name") String name, - @JsonProperty("fieldName") String fieldName, - @JsonProperty("size") Integer size - ) - { - super(name, fieldName, size, CACHE_TYPE_ID); - } - - @Override - public AggregatorFactory getCombiningFactory() - { - return new SketchBuildAggregatorFactory(name, name, size); - } - - @Override - public Object finalizeComputation(Object object) - { - return ((Sketch) object).getEstimate(); - } - - @Override - public List getRequiredColumns() - { - return Arrays.asList(new SketchBuildAggregatorFactory(fieldName, fieldName, size)); - } - - @Override - public String getTypeName() - { - return SketchModule.THETA_SKETCH_BUILD_AGG; - } -} diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java index e254b1727f4f..dadb1ca15fec 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java @@ -33,29 +33,40 @@ public class SketchMergeAggregatorFactory extends SketchAggregatorFactory private static final byte CACHE_TYPE_ID = 15; private final boolean shouldFinalize; + private final boolean isInputThetaSketch; @JsonCreator public SketchMergeAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") String fieldName, @JsonProperty("size") Integer size, - @JsonProperty("shouldFinalize") Boolean shouldFinalize + @JsonProperty("shouldFinalize") Boolean shouldFinalize, + @JsonProperty("isInputThetaSketch") Boolean isInputThetaSketch ) { super(name, fieldName, size, CACHE_TYPE_ID); this.shouldFinalize = (shouldFinalize == null) ? true : shouldFinalize.booleanValue(); + this.isInputThetaSketch = (isInputThetaSketch == null) ? false : isInputThetaSketch.booleanValue(); } @Override public List getRequiredColumns() { - return Collections.singletonList(new SketchMergeAggregatorFactory(fieldName, fieldName, size, shouldFinalize)); + return Collections.singletonList( + new SketchMergeAggregatorFactory( + fieldName, + fieldName, + size, + shouldFinalize, + isInputThetaSketch + ) + ); } @Override public AggregatorFactory getCombiningFactory() { - return new SketchMergeAggregatorFactory(name, name, size, shouldFinalize); + return new SketchMergeAggregatorFactory(name, name, size, shouldFinalize, isInputThetaSketch); } @JsonProperty @@ -64,6 +75,12 @@ public boolean getShouldFinalize() return shouldFinalize; } + @JsonProperty + public boolean getIsInputThetaSketch() + { + return isInputThetaSketch; + } + /** * Finalize the computation on sketch object and returns estimate from underlying * sketch. @@ -84,7 +101,11 @@ public Object finalizeComputation(Object object) @Override public String getTypeName() { - return SketchModule.THETA_SKETCH_MERGE_AGG; + if (isInputThetaSketch) { + return SketchModule.THETA_SKETCH_MERGE_AGG; + } else { + return SketchModule.THETA_SKETCH_BUILD_AGG; + } } @Override @@ -102,7 +123,10 @@ public boolean equals(Object o) SketchMergeAggregatorFactory that = (SketchMergeAggregatorFactory) o; - return shouldFinalize == that.shouldFinalize; + if (shouldFinalize != that.shouldFinalize) { + return false; + } + return isInputThetaSketch == that.isInputThetaSketch; } @@ -111,17 +135,19 @@ public int hashCode() { int result = super.hashCode(); result = 31 * result + (shouldFinalize ? 1 : 0); + result = 31 * result + (isInputThetaSketch ? 1 : 0); return result; } @Override public String toString() { - return getClass().getSimpleName() + "{" - + "fieldName='" + fieldName + '\'' - + ", name='" + name + '\'' - + ", size=" + size + '\'' - + ", shouldFinalize=" + shouldFinalize + - + '}'; + return "SketchMergeAggregatorFactory{" + + "fieldName=" + fieldName + + ", name=" + name + + ", size=" + size + + ",shouldFinalize=" + shouldFinalize + + ", isInputThetaSketch=" + isInputThetaSketch + + "}"; } } diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java index c115b793f422..333b7f8a8b48 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/SketchModule.java @@ -62,8 +62,7 @@ public List getJacksonModules() return Arrays.asList( new SimpleModule("ThetaSketchModule") .registerSubtypes( - new NamedType(SketchBuildAggregatorFactory.class, THETA_SKETCH_BUILD_AGG), - new NamedType(SketchMergeAggregatorFactory.class, THETA_SKETCH_MERGE_AGG), + new NamedType(SketchMergeAggregatorFactory.class, THETA_SKETCH), new NamedType(SketchEstimatePostAggregator.class, THETA_SKETCH_ESTIMATE_POST_AGG), new NamedType(SketchSetPostAggregator.class, THETA_SKETCH_SET_OP_POST_AGG) ) diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java index ed5ea477309f..5b5bc3346994 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchBuildAggregatorFactory.java @@ -21,11 +21,11 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import io.druid.query.aggregation.datasketches.theta.SketchBuildAggregatorFactory; +import io.druid.query.aggregation.datasketches.theta.SketchMergeAggregatorFactory; /** */ -public class OldSketchBuildAggregatorFactory extends SketchBuildAggregatorFactory +public class OldSketchBuildAggregatorFactory extends SketchMergeAggregatorFactory { @JsonCreator public OldSketchBuildAggregatorFactory( @@ -34,6 +34,6 @@ public OldSketchBuildAggregatorFactory( @JsonProperty("size") Integer size ) { - super(name, fieldName, size); + super(name, fieldName, size, true, false); } } diff --git a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java index d386889a38c8..82beb7a35373 100644 --- a/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java +++ b/extensions/datasketches/src/main/java/io/druid/query/aggregation/datasketches/theta/oldapi/OldSketchMergeAggregatorFactory.java @@ -35,6 +35,6 @@ public OldSketchMergeAggregatorFactory( @JsonProperty("shouldFinalize") Boolean shouldFinalize ) { - super(name, fieldName, size, shouldFinalize); + super(name, fieldName, size, shouldFinalize, true); } } diff --git a/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java index 1dd85c3668e3..913854064076 100644 --- a/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java +++ b/extensions/datasketches/src/test/java/io/druid/query/aggregation/datasketches/theta/SketchAggregationTest.java @@ -126,9 +126,9 @@ public void testSketchDataIngestAndQuery() throws Exception @Test public void testSketchMergeAggregatorFactorySerde() throws Exception { - assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, null)); - assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, false)); - assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, true)); + assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, null, null)); + assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, false, true)); + assertAggregatorFactorySerde(new SketchMergeAggregatorFactory("name", "fieldName", 16, true, false)); } @Test @@ -136,22 +136,16 @@ public void testSketchMergeFinalization() throws Exception { Sketch sketch = Sketches.updateSketchBuilder().build(128); - SketchMergeAggregatorFactory agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, null); + SketchMergeAggregatorFactory agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, null, null); Assert.assertEquals(0.0, ((Double) agg.finalizeComputation(sketch)).doubleValue(), 0.0001); - agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, true); + agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, true, null); Assert.assertEquals(0.0, ((Double) agg.finalizeComputation(sketch)).doubleValue(), 0.0001); - agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, false); + agg = new SketchMergeAggregatorFactory("name", "fieldName", 16, false, null); Assert.assertEquals(sketch, agg.finalizeComputation(sketch)); } - @Test - public void testSketchBuildAggregatorFactorySerde() throws Exception - { - assertAggregatorFactorySerde(new SketchBuildAggregatorFactory("name", "fieldName", 16)); - } - private void assertAggregatorFactorySerde(AggregatorFactory agg) throws Exception{ Assert.assertEquals( agg, diff --git a/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json b/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json index 02879448ba98..c98b97187871 100644 --- a/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json +++ b/extensions/datasketches/src/test/resources/simple_test_data_aggregators.json @@ -1,11 +1,11 @@ [ { - "type": "thetaSketchBuild", + "type": "thetaSketch", "name": "pty_country", "fieldName": "pty_country" }, { - "type": "thetaSketchBuild", + "type": "thetaSketch", "name": "non_existing_col_validation", "fieldName": "non_existing_col" } diff --git a/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json index 3f808b487ead..1badd1382baf 100644 --- a/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json +++ b/extensions/datasketches/src/test/resources/simple_test_data_group_by_query.json @@ -4,8 +4,8 @@ "granularity": "ALL", "dimensions": [], "aggregations": [ - { "type": "thetaSketchMerge", "name": "sketch_count", "fieldName": "pty_country", "size": 16384 }, - { "type": "thetaSketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + { "type": "thetaSketch", "name": "sketch_count", "fieldName": "pty_country", "size": 16384 }, + { "type": "thetaSketch", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } ], "postAggregations": [ { diff --git a/extensions/datasketches/src/test/resources/sketch_test_data.tsv b/extensions/datasketches/src/test/resources/sketch_test_data.tsv index a5a9ab26b208..8180d80647c6 100644 --- a/extensions/datasketches/src/test/resources/sketch_test_data.tsv +++ b/extensions/datasketches/src/test/resources/sketch_test_data.tsv @@ -1,4 +1,4 @@ -2014102000 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ= +2014102000 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ 2014102000 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ= 2014102000 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg= 2014102000 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg= diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json b/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json index 1ea201981259..05cd0baa59bb 100644 --- a/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json +++ b/extensions/datasketches/src/test/resources/sketch_test_data_aggregators.json @@ -1,14 +1,16 @@ [ { - "type": "thetaSketchMerge", + "type": "thetaSketch", "name": "sids_sketch", "fieldName": "sketch", + "isInputThetaSketch": true, "size": 16384 }, { - "type": "thetaSketchMerge", + "type": "thetaSketch", "name": "non_existing_col_validation", "fieldName": "non_existing_col", + "isInputThetaSketch": true, "size": 16384 } ] diff --git a/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json b/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json index 9c1902fcd58d..2a7251ef6db8 100644 --- a/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json +++ b/extensions/datasketches/src/test/resources/sketch_test_data_group_by_query.json @@ -4,8 +4,8 @@ "granularity": "ALL", "dimensions": [], "aggregations": [ - { "type": "thetaSketchMerge", "name": "sids_sketch_count", "fieldName": "sids_sketch", "size": 16384 }, - { "type": "thetaSketchMerge", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } + { "type": "thetaSketch", "name": "sids_sketch_count", "fieldName": "sids_sketch", "size": 16384 }, + { "type": "thetaSketch", "name": "non_existing_col_validation", "fieldName": "non_existing_col", "size": 16384 } ], "postAggregations": [ { From 7788f7c2a1adb2ac13fa53ef0b9c61a1c7bfff3e Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Tue, 10 Nov 2015 01:17:35 -0600 Subject: [PATCH 6/6] update doc with new thetaSketch api --- .../development/datasketches-aggregators.md | 132 +++++++++++++++--- 1 file changed, 115 insertions(+), 17 deletions(-) diff --git a/docs/content/development/datasketches-aggregators.md b/docs/content/development/datasketches-aggregators.md index 90207489f017..c82a4349c060 100644 --- a/docs/content/development/datasketches-aggregators.md +++ b/docs/content/development/datasketches-aggregators.md @@ -3,40 +3,138 @@ layout: doc_page --- ## DataSketches aggregator -Druid aggregators based on [datasketches]()http://datasketches.github.io/) library. You would ingest one or more metric columns using either `sketchBuild` or `sketchMerge` aggregators. Then, at query time, you can use `sketchMerge` with appropriate post aggregators described below. Note that sketch algorithms are approxiate, see details in the [datasketches doc](http://datasketches.github.io/docs/theChallenge.html). +Druid aggregators based on [datasketches]()http://datasketches.github.io/) library. Note that sketch algorithms are approxiate, see details in the "Accuracy" section of the datasketches doc. +At ingestion time, this aggregator creates the theta sketch objects which get stored in Druid segments. Logically speaking, a theta sketch object can be thought of as a Set data structure. At query time, sketches are read and aggregated(set unioned) together. In the end, by default, you receive the estimate of number of unique entries in the sketch object. Also, You can use post aggregators to do union, intersection or difference on sketch columns in the same row. -#### aggregators to use at ingestion time - -##### non-sketch input data -You can ingest data to druid and build the sketch objects which are later used at the time of querying to compute uniques. +### Aggregators ```json -{ "type" : "sketchBuild", "name" : , "fieldName" : } +{ + "type" : "thetaSketch", + "name" : , + "fieldName" : , + + //following boolean field is optional. This should only be used at + //indexing time if your input data contains theta sketch objects. + //that would be the case if you use datasketches library outside of Druid, + //say with Pig/Hive, to produce the data that you are ingesting into Druid + "isInputThetaSketch": false + + //following field is optional, default = 16384. must be a power of 2. + //Internally, size refers to the maximum number + //of entries sketch object will retain, higher size would mean higher + //accuracy but higher space needed to store those sketches. + //note that after you index with a particular size, druid will persist sketch in segments + //and you will use size greater or equal to that at query time. + //See [theta-size](http://datasketches.github.io/docs/ThetaSize.html) for details. + //In general, We recommend just sticking to default size, which has worked well. + "size": 16384 + } ``` -##### sketch input data -You can ingest data to druid which already contains the sketch objects from batch pipeline by using [sketches-pig](https://github.com/DataSketches/sketches-pig) for example, in which case you just want to merge those and ingest into Druid. +### Post Aggregators +#### Sketch Estimator ```json -{ "type" : "sketchMerge", "name" : , "fieldName" : } +{ "type" : "thetaSketchEstimate", "name": , "fieldName" : } ``` -#### aggregator to use at query time +#### Sketch Operations ```json -{ "type" : "sketchMerge", "name" : , "fieldName" : } +{ "type" : "thetaSketchSetOp", "name": , "func": , "fields" : } ``` -Note that you can specify an additional field called "size" in above aggregators which is 16384 by default and must be a power of 2. At query time, size value must be greater than or equal to the value used at indexing time. Internally, size refers to the maximum number of entries sketch object will retain, higher size would mean higher accuracy but higher space needed to store those sketches. See [theta-size](http://datasketches.github.io/docs/ThetaSize.html) for more details. In general, I would recommend just sticking to default size which has worked well for us. +### Examples -### Post Aggregators +Assuming, you have a dataset containing (timestamp, product, user_id). You want to answer questions like + +How many unique users visited product A? +How many unique users visited both product A and product B? + +to answer above questions, you would index your data using following aggregator. -#### Sketch Estimator ```json -{ "type" : "sketchEstimate", "name": , "fieldName" : } +{ "type": "thetaSketch", "name": "user_id_sketch", "fieldName": "user_id" } ``` -#### Sketch Operations +then, sample query for, How many unique users visited product A? ```json -{ "type" : "sketchSetOp", "name": , "func": , "fields" : } +{ + "queryType": "groupBy", + "dataSource": "test_datasource", + "granularity": "ALL", + "dimensions": [], + "aggregations": [ + { "type": "thetaSketch", "name": "unique_users", "fieldName": "user_id_sketch" } + ], + "filter": { "type": "selector", "dimension": "product", "value": "A" }, + "intervals": [ "2014-10-19T00:00:00.000Z/2014-10-22T00:00:00.000Z" ] +} ``` +sample query for, How many unique users visited both product A and B? + +```json +{ + "queryType": "groupBy", + "dataSource": "test_datasource", + "granularity": "ALL", + "dimensions": [], + "filter": { + "type": "or", + "fields": [ + {"type": "selector", "dimension": "product", "value": "A"}, + {"type": "selector", "dimension": "product", "value": "B"} + ] + }, + "aggregations": [ + { + "type" : "filtered", + "filter" : { + "type" : "selector", + "dimension" : "product", + "value" : "A" + }, + "aggregator" : { + "type": "thetaSketch", "name": "A_unique_users", "fieldName": "user_id_sketch" + } + }, + { + "type" : "filtered", + "filter" : { + "type" : "selector", + "dimension" : "product", + "value" : "B" + }, + "aggregator" : { + "type": "thetaSketch", "name": "B_unique_users", "fieldName": "user_id_sketch" + } + } + ], + "postAggregations": [ + { + "type": "thetaSketchEstimate", + "name": "final_unique_users", + "field": + { + "type": "thetaSketchSetOp", + "name": "final_unique_users_sketch", + "func": "INTERSECT", + "fields": [ + { + "type": "fieldAccess", + "fieldName": "A_unique_users" + }, + { + "type": "fieldAccess", + "fieldName": "B_unique_users" + } + ] + } + } + ], + "intervals": [ + "2014-10-19T00:00:00.000Z/2014-10-22T00:00:00.000Z" + ] +} +```