You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by kf...@apache.org on 2022/08/24 11:33:35 UTC
[druid] branch master updated: Add the new integration test framework (#12368)
This is an automated email from the ASF dual-hosted git repository.
kfaraz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new cfed036091 Add the new integration test framework (#12368)
cfed036091 is described below
commit cfed036091038dc05cdb246e2849fdbed39aec0d
Author: Paul Rogers <pa...@users.noreply.github.com>
AuthorDate: Wed Aug 24 04:33:23 2022 -0700
Add the new integration test framework (#12368)
This commit is a first draft of the revised integration test framework which provides:
- A new directory, integration-tests-ex that holds the new integration test structure. (For now, the existing integration-tests is left unchanged.)
- Maven module druid-it-tools to hold code placed into the Docker image.
- Maven module druid-it-image to build the Druid-only test image from the tarball produced in distribution. (Dependencies live in their "official" image.)
- Maven module druid-it-cases that holds the revised tests and the framework itself. The framework includes file-based test configuration, test-specific clients, test initialization and updated versions of some of the common test support classes.
The integration test setup is primarily a huge mass of details. This approach refactors many of those details: from how the image is built and configured to how the Docker Compose scripts are structured to test configuration. An extensive set of "readme" files explains those details. Rather than repeat that material here, please consult those files for explanations.
---
.gitignore | 2 +-
.travis.yml | 52 +-
.../main/java/org/apache/druid/guice/PolyBind.java | 19 +-
.../metadata/MetadataStorageConnectorConfig.java | 2 +
.../metadata/MetadataStorageTablesConfig.java | 2 +
.../PrefetchableTextFilesFirehoseFactoryTest.java | 3 +
.../java/org/apache/druid/guice/PolyBindTest.java | 8 +-
.../metadata/storage/mysql/MySQLConnector.java | 2 +-
.../storage/mysql/MySQLConnectorDriverConfig.java | 5 +-
extensions-core/testing-tools/.gitignore | 1 +
integration-tests-ex/README.md | 115 +-
integration-tests-ex/cases/.gitignore | 1 +
integration-tests-ex/{ => cases}/assets/log4j2.xml | 0
integration-tests-ex/cases/cluster.sh | 201 ++
.../cases/cluster/BatchIndex/docker-compose.yaml | 98 +
.../cases/cluster/Common/dependencies.yaml | 166 +
.../cases/cluster/Common/druid.yaml | 177 ++
.../cluster/Common/environment-configs/auth.env | 53 +
.../cluster/Common/environment-configs/broker.env | 53 +
.../cluster/Common/environment-configs/common.env | 117 +
.../Common/environment-configs/coordinator.env | 39 +
.../Common/environment-configs/historical.env | 30 +
.../cluster/Common/environment-configs/indexer.env | 35 +
.../Common/environment-configs/middlemanager.env | 37 +
.../Common/environment-configs/overlord.env | 30 +
.../cluster/Common/environment-configs/router.env | 37 +
.../cluster/HighAvailability/docker-compose.yaml | 157 +
integration-tests-ex/cases/pom.xml | 374 +++
integration-tests-ex/cases/resources/README.md | 42 +
.../batch_index/avro/wikipedia_index_data1.avro | Bin 0 -> 1066 bytes
.../batch_index/avro/wikipedia_index_data2.avro | Bin 0 -> 1055 bytes
.../batch_index/avro/wikipedia_index_data3.avro | Bin 0 -> 1151 bytes
.../data/batch_index/csv/wikipedia_index_data1.csv | 4 +
.../data/batch_index/csv/wikipedia_index_data2.csv | 4 +
.../data/batch_index/csv/wikipedia_index_data3.csv | 5 +
.../data/batch_index/hadoop_tsv/batch_hadoop.data | 3360 ++++++++++++++++++++
.../batch_index/json/wikipedia_index_data1.json | 3 +
.../batch_index/json/wikipedia_index_data2.json | 3 +
.../batch_index/json/wikipedia_index_data3.json | 4 +
.../data/batch_index/orc/wikipedia_index_data1.orc | Bin 0 -> 2035 bytes
.../data/batch_index/orc/wikipedia_index_data2.orc | Bin 0 -> 2026 bytes
.../data/batch_index/orc/wikipedia_index_data3.orc | Bin 0 -> 2008 bytes
.../parquet/wikipedia_index_data1.parquet | Bin 0 -> 4119 bytes
.../parquet/wikipedia_index_data2.parquet | Bin 0 -> 4116 bytes
.../parquet/wikipedia_index_data3.parquet | Bin 0 -> 4160 bytes
.../data/batch_index/tsv/wikipedia_index_data1.tsv | 4 +
.../data/batch_index/tsv/wikipedia_index_data2.tsv | 4 +
.../data/batch_index/tsv/wikipedia_index_data3.tsv | 5 +
.../indexer/wikipedia_combining_index_data.json | 3 +
.../wikipedia_index_queries_only_data3.json | 198 ++
.../indexer/wikipedia_realtime_index_data.json | 22 +
.../druid/testsEx/categories/BatchIndex.java} | 12 +-
.../testsEx/categories/HighAvailability.java} | 12 +-
.../druid/testsEx/cluster/DruidClusterClient.java | 340 ++
.../apache/druid/testsEx/cluster/KafkaClient.java | 83 +
.../druid/testsEx/cluster/MetastoreClient.java | 88 +
.../druid/testsEx/cluster/ZooKeeperClient.java | 89 +
.../org/apache/druid/testsEx/config/Cluster.java | 48 +
.../apache/druid/testsEx/config/ClusterConfig.java | 342 ++
.../druid/testsEx/config/ClusterConfigTest.java | 123 +
.../apache/druid/testsEx/config/Configure.java} | 25 +-
.../druid/testsEx/config/DruidTestRunner.java | 208 ++
.../apache/druid/testsEx/config/Initializer.java | 590 ++++
.../testsEx/config/IntegrationTestingConfigEx.java | 421 +++
.../apache/druid/testsEx/config/KafkaConfig.java | 18 +-
.../druid/testsEx/config/MetastoreConfig.java | 121 +
.../apache/druid/testsEx/config/MetastoreStmt.java | 78 +
.../druid/testsEx/config/ResolvedConfig.java | 406 +++
.../druid/testsEx/config/ResolvedDruidService.java | 145 +
.../druid/testsEx/config/ResolvedMetastore.java | 128 +
.../druid/testsEx/config/ResolvedService.java | 219 ++
.../apache/druid/testsEx/config/ServiceConfig.java | 116 +
.../druid/testsEx/config/ServiceInstance.java | 124 +
.../apache/druid/testsEx/config/TestConfigs.java | 66 +
.../testsEx/indexer/AbstractITBatchIndexTest.java | 502 +++
.../testsEx}/indexer/AbstractIndexerTest.java | 10 +-
.../AbstractLocalInputSourceParallelIndexTest.java | 115 +
.../ITBestEffortRollupParallelIndexTest.java | 250 ++
.../ITCombiningFirehoseFactoryIndexTest.java | 101 +
.../ITCombiningInputSourceParallelIndexTest.java | 130 +
.../druid/testsEx/indexer/ITIndexerTest.java | 386 +++
.../testsEx/indexer/ITOverwriteBatchIndexTest.java | 166 +
.../indexer/ITSystemTableBatchIndexTaskTest.java | 72 +
.../druid/testsEx/indexer/ITTransformTest.java | 125 +
.../testsEx/leadership/ITHighAvailabilityTest.java | 246 ++
.../testsEx/utils/DruidClusterAdminClient.java | 328 ++
.../resources/cluster/AzureDeepStorage/docker.yaml | 58 +
.../test/resources/cluster/BatchIndex/docker.yaml} | 27 +-
.../src/test/resources/cluster/Common/kafka.yaml} | 9 +-
.../resources/cluster/Common/zk-metastore.yaml} | 15 +-
.../resources/cluster/HighAvailability/docker.yaml | 204 ++
.../cluster/HighAvailability/queries/sys.json | 39 +
.../cases/src/test/resources/config-test/test.yaml | 85 +
.../indexer/broadcast_join_index_task.json | 82 +
.../resources/indexer/json_path_index_queries.json | 49 +
.../resources/indexer/json_path_index_task.json | 80 +
.../resources/indexer/segment_metadata_query.json | 16 +
.../indexer/sparse_column_index_queries.json | 80 +
.../indexer/sparse_column_index_task.json | 57 +
.../sparse_column_with_dim_compaction_task.json | 19 +
.../sparse_column_without_dim_compaction_task.json | 16 +
.../indexer/sys_segment_batch_index_queries.json | 35 +
.../indexer/wikipedia_cloud_index_task.json | 87 +
.../indexer/wikipedia_cloud_simple_index_task.json | 81 +
...wikipedia_combining_firehose_index_queries.json | 141 +
.../wikipedia_combining_firehose_index_task.json | 95 +
...combining_input_source_index_parallel_task.json | 98 +
.../indexer/wikipedia_compaction_task.json | 14 +
...edia_compaction_task_with_granularity_spec.json | 15 +
...a_compaction_task_with_segment_granularity.json | 15 +
...ingestion_non_perfect_rollup_index_queries.json | 143 +
...ble_ingestion_perfect_rollup_index_queries.json | 143 +
.../wikipedia_http_inputsource_queries.json | 47 +
.../indexer/wikipedia_http_inputsource_task.json | 74 +
.../resources/indexer/wikipedia_index_queries.json | 150 +
...pedia_index_queries_hour_query_granularity.json | 150 +
.../wikipedia_index_queries_with_transform.json | 62 +
...pedia_index_queries_year_query_granularity.json | 150 +
.../indexer/wikipedia_index_rollup_queries.json | 56 +
.../resources/indexer/wikipedia_index_task.json | 89 +
.../wikipedia_index_task_with_dimension_spec.json | 86 +
...wikipedia_index_task_with_granularity_spec.json | 71 +
...edia_index_task_with_inputsource_transform.json | 103 +
.../wikipedia_index_task_with_transform.json | 103 +
...kipedia_index_with_merge_column_limit_task.json | 86 +
.../wikipedia_local_input_source_index_task.json | 89 +
.../indexer/wikipedia_merge_index_queries.json | 42 +
.../indexer/wikipedia_merge_index_task.json | 70 +
...edia_merge_reindex_druid_input_source_task.json | 63 +
.../indexer/wikipedia_merge_reindex_task.json | 65 +
.../wikipedia_override_credentials_index_task.json | 82 +
...dia_parallel_druid_input_source_index_task.json | 64 +
.../indexer/wikipedia_parallel_index_queries.json | 71 +
.../indexer/wikipedia_parallel_index_task.json | 77 +
...a_parallel_index_using_sqlinputsource_task.json | 88 +
...kipedia_parallel_ingest_segment_index_task.json | 69 +
.../wikipedia_parallel_reindex_queries.json | 18 +
.../indexer/wikipedia_parallel_reindex_task.json | 75 +
...ipedia_realtime_appenderator_index_queries.json | 87 +
...wikipedia_realtime_appenderator_index_task.json | 94 +
.../indexer/wikipedia_realtime_index_queries.json | 147 +
.../indexer/wikipedia_realtime_index_task.json | 98 +
.../wikipedia_reindex_druid_input_source_task.json | 51 +
...ex_druid_input_source_task_with_transforms.json | 106 +
.../indexer/wikipedia_reindex_queries.json | 66 +
.../wikipedia_reindex_queries_with_transforms.json | 80 +
.../resources/indexer/wikipedia_reindex_task.json | 53 +
.../wikipedia_reindex_task_with_transforms.json | 108 +
.../indexer/wikipedia_union_index_task.json | 98 +
.../wikipedia_with_timestamp_index_task.json | 86 +
.../resources/indexer/wikiticker_index_task.json | 66 +
integration-tests-ex/check-results.sh | 89 -
integration-tests-ex/docs/compose.md | 238 ++
integration-tests-ex/docs/conversion.md | 292 ++
integration-tests-ex/docs/debugging.md | 159 +
integration-tests-ex/docs/dependencies.md | 239 ++
integration-tests-ex/docs/docker.md | 302 ++
integration-tests-ex/docs/druid-config.md | 138 +
integration-tests-ex/docs/guide.md | 241 ++
integration-tests-ex/docs/history.md | 96 +
integration-tests-ex/docs/maven.md | 255 ++
integration-tests-ex/docs/next-steps.md | 77 +
integration-tests-ex/docs/quickstart.md | 201 ++
integration-tests-ex/docs/runtime.md | 105 +
integration-tests-ex/docs/scripts.md | 74 +
integration-tests-ex/docs/test-config.md | 588 ++++
integration-tests-ex/docs/tests.md | 411 +++
integration-tests-ex/docs/travis.md | 168 +
.../{it-image => image}/build-image.sh | 0
.../{it-image => image}/docker-build.sh | 0
.../{it-image => image}/docker/Dockerfile | 0
.../{it-image => image}/docker/druid.sh | 0
.../{it-image => image}/docker/launch.sh | 30 +-
.../{it-image => image}/docker/test-setup.sh | 0
integration-tests-ex/{it-image => image}/pom.xml | 13 +-
.../{it-image => image}/rebuild.sh | 0
.../it-image/scripts/build-shared.sh | 40 -
integration-tests-ex/{it-tools => tools}/README.md | 0
integration-tests-ex/{it-tools => tools}/pom.xml | 7 +-
.../druid/testing/tools/CliCustomNodeRole.java | 0
.../tools/CliHistoricalForQueryErrorTest.java | 0
.../testing/tools/CustomNodeRoleClientModule.java | 0
.../tools/CustomNodeRoleCommandCreator.java | 0
.../tools/QueryRetryTestCommandCreator.java | 0
.../tools/ServerManagerForQueryErrorTest.java | 0
.../apache/druid/testing/tools/SleepExprMacro.java | 0
.../apache/druid/testing/tools/SleepModule.java | 0
.../testing/tools/SleepOperatorConversion.java | 0
.../org/apache/druid/testing/tools/package.java | 0
.../org.apache.druid.cli.CliCommandCreator | 0
.../org.apache.druid.initialization.DruidModule | 0
integration-tests/README.md | 20 +-
integration-tests/pom.xml | 1 +
.../druid/cli/CustomNodeRoleCommandCreator.java | 1 +
.../druid/testing/ConfigFileConfigProvider.java | 3 +-
.../testing/IntegrationTestingConfigProvider.java | 1 +
.../clients/OverlordResourceTestClient.java | 2 +
.../druid/testing/guice/DruidTestModule.java | 2 +-
.../druid/tests/indexer/AbstractIndexerTest.java | 4 +
it.sh | 130 +
pom.xml | 24 +-
.../apache/druid/guice/DruidInjectorBuilder.java | 40 +-
.../apache/druid/guice/MetadataConfigModule.java | 4 +-
.../initialization/ExtensionInjectorBuilder.java | 2 +-
.../java/org/apache/druid/cli/GuiceRunnable.java | 4 +-
205 files changed, 20388 insertions(+), 266 deletions(-)
diff --git a/.gitignore b/.gitignore
index f906e24267..89eabfcbdd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,5 +25,5 @@ README
.pmdruleset.xml
.java-version
integration-tests/gen-scripts/
-/bin/
+bin/
*.hprof
diff --git a/.travis.yml b/.travis.yml
index 9ca6fee1ad..14d16e5e36 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -46,7 +46,7 @@ addons:
# Add various options to make 'mvn install' fast and skip javascript compile (-Ddruid.console.skip=true) since it is not
# needed. Depending on network speeds, "mvn -q install" may take longer than the default 10 minute timeout to print any
# output. To compensate, use travis_wait to extend the timeout.
-install: ./check_test_suite.py && travis_terminate 0 || echo 'Running Maven install...' && MAVEN_OPTS='-Xmx3000m' travis_wait 15 ${MVN} clean install -q -ff -pl '!distribution,!:it-tools,!:it-image' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -T1C && ${MVN} install -q -ff -pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
+install: ./check_test_suite.py && travis_terminate 0 || echo 'Running Maven install...' && MAVEN_OPTS='-Xmx3000m' travis_wait 15 ${MVN} clean install -q -ff -pl '!distribution,!:druid-it-tools,!:druid-it-image,!:druid-it-cases' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -T1C && ${MVN} install -q -ff -pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
# There are 3 stages of tests
# 1. Tests - phase 1
@@ -72,7 +72,7 @@ jobs:
- name: "animal sniffer checks"
stage: Tests - phase 1
script: ${MVN} animal-sniffer:check --fail-at-end
-
+
- name: "checkstyle"
script: ${MVN} checkstyle:checkstyle --fail-at-end
@@ -347,7 +347,7 @@ jobs:
<<: *test_processing_module
name: "(openjdk8) other modules test"
env:
- - MAVEN_PROJECTS='!processing,!indexing-hadoop,!indexing-service,!extensions-core/kafka-indexing-service,!extensions-core/kinesis-indexing-service,!server,!web-console,!integration-tests,!:it-image,!:it-tools'
+ - MAVEN_PROJECTS='!processing,!indexing-hadoop,!indexing-service,!extensions-core/kafka-indexing-service,!extensions-core/kinesis-indexing-service,!server,!web-console,!integration-tests,!:druid-it-tools,!:druid-it-image,!:druid-it-cases'
- <<: *test_other_modules
name: "(openjdk11) other modules test"
@@ -457,9 +457,9 @@ jobs:
docker exec -it druid-$v sh -c 'dmesg | tail -3' ;
done
- - <<: *integration_batch_index
- name: "(Compile=openjdk8, Run=openjdk8) batch index integration test with Indexer"
- env: TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
+ #- <<: *integration_batch_index
+ # name: "(Compile=openjdk8, Run=openjdk8) batch index integration test with Indexer"
+ # env: TESTNG_GROUPS='-Dgroups=batch-index' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
- &integration_input_format
name: "(Compile=openjdk8, Run=openjdk8) input format integration test"
@@ -666,16 +666,33 @@ jobs:
name: "(Compile=openjdk8, Run=openjdk8) other integration tests with Indexer"
env: TESTNG_GROUPS='-DexcludedGroups=batch-index,input-format,input-source,perfect-rollup-parallel-batch-index,kafka-index,query,query-retry,query-error,realtime-index,security,ldap-security,s3-deep-storage,gcs-deep-storage,azure-deep-storage,hdfs-deep-storage,s3-ingestion,kinesis-index,kinesis-data-format,kafka-transactional-index,kafka-index-slow,kafka-transactional-index-slow,kafka-data-format,hadoop-s3-to-s3-deep-storage,hadoop-s3-to-hdfs-deep-storage,hadoop-azure-to-azure-deep [...]
- - <<: *integration_tests
- name: "(Compile=openjdk8, Run=openjdk8) leadership and high availability integration tests"
- jdk: openjdk8
- env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
+ #- <<: *integration_tests
+ # name: "(Compile=openjdk8, Run=openjdk8) leadership and high availability integration tests"
+ # jdk: openjdk8
+ # env: TESTNG_GROUPS='-Dgroups=high-availability' JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
- <<: *integration_query
name: "(Compile=openjdk8, Run=openjdk8) query integration test (mariaDB)"
jdk: openjdk8
env: TESTNG_GROUPS='-Dgroups=query' USE_INDEXER='middleManager' MYSQL_DRIVER_CLASSNAME='org.mariadb.jdbc.Driver' OVERRIDE_CONFIG_PATH='./environment-configs/test-groups/prepopulated-data'
+ # Revised ITs.
+ - &integration_tests_ex
+ name: "(Compile=openjdk8, Run=openjdk8) leadership and high availability integration tests (new)"
+ stage: Tests - phase 2
+ jdk: openjdk8
+ services: *integration_test_services
+ env: JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='middleManager'
+ # Uses the install defined above. Then, builds the test tools and docker image,
+ # and runs one IT. If tests fail, echos log lines of any of
+ # the Druid services that did not exit normally.
+ script: ./it.sh travis HighAvailability
+
+ - <<: *integration_tests_ex
+ name: "(Compile=openjdk8, Run=openjdk8) batch index integration test with Indexer (new)"
+ env: JVM_RUNTIME='-Djvm.runtime=8' USE_INDEXER='indexer'
+ script: ./it.sh travis BatchIndex
+
# END - Integration tests for Compile with Java 8 and Run with Java 8
# START - Integration tests for Compile with Java 8 and Run with Java 11
@@ -756,21 +773,6 @@ jobs:
# END - Integration tests for Compile with Java 8 and Run with Java 11
- # BEGIN - Revised integration tests
-
- # Experimental build of the revised integration test Docker image.
- # Actual tests will come later.
- - name: "experimental docker tests"
- stage: Tests - phase 2
- # Uses the install defined above. Then, builds the test tools and docker image,
- # and run the various IT tests. If tests fail, echos log lines of any of
- # the Druid services that did not exit normally.
- # Run though install to ensure the test tools are installed, and the docker
- # image is built. The tests only need verify.
- script: ${MVN} install -P dist,test-image -rf :distribution ${MAVEN_SKIP} -DskipUTs=true
-
- # END - Revised integration tests
-
- &integration_batch_index_k8s
name: "(Compile=openjdk8, Run=openjdk8, Cluster Build On K8s) ITNestedQueryPushDownTest integration test"
stage: Tests - phase 2
diff --git a/core/src/main/java/org/apache/druid/guice/PolyBind.java b/core/src/main/java/org/apache/druid/guice/PolyBind.java
index e7e53b6c98..19931a6b63 100644
--- a/core/src/main/java/org/apache/druid/guice/PolyBind.java
+++ b/core/src/main/java/org/apache/druid/guice/PolyBind.java
@@ -40,12 +40,13 @@ import java.util.Map;
import java.util.Properties;
/**
- * Provides the ability to create "polymorphic" bindings. Where the polymorphism is actually just making a decision
- * based on a value in a Properties.
- *
- * The workflow is that you first create a choice by calling createChoice(). Then you create options using the binder
- * returned by the optionBinder() method. Multiple different modules can call optionBinder and all options will be
- * reflected at injection time as long as equivalent interface Key objects are passed into the various methods.
+ * Provides the ability to create "polymorphic" bindings where the polymorphism is actually just making a decision
+ * based on a value in Properties.
+ * <p>
+ * The workflow is that you first create a choice by calling {@code createChoice()}. Then you create options using
+ * the binder returned by the {@code optionBinder()} method. Multiple different modules can call
+ * {@code optionBinder()} and all options will be reflected at injection time as long as equivalent interface
+ * {@code Key} objects are passed into the various methods.
*/
@PublicApi
public class PolyBind
@@ -110,10 +111,10 @@ public class PolyBind
}
/**
- * Binds an option for a specific choice. The choice must already be registered on the injector for this to work.
+ * Binds an option for a specific choice. The choice must already be registered on the injector for this to work.
*
* @param binder the binder for the injector that is being configured
- * @param interfaceKey the interface that will have an option added to it. This must equal the
+ * @param interfaceKey the interface that will have an option added to it. This must equal the
* Key provided to createChoice
* @param <T> interface type
* @return A MapBinder that can be used to create the actual option bindings.
@@ -195,7 +196,7 @@ public class PolyBind
if (provider == null) {
throw new ProvisionException(
- StringUtils.format("Unknown provider[%s] of %s, known options[%s]", implName, key, implsMap.keySet())
+ StringUtils.format("Unknown provider [%s] of %s, known options [%s]", implName, key, implsMap.keySet())
);
}
diff --git a/core/src/main/java/org/apache/druid/metadata/MetadataStorageConnectorConfig.java b/core/src/main/java/org/apache/druid/metadata/MetadataStorageConnectorConfig.java
index 512cd57d89..2e6767f0b7 100644
--- a/core/src/main/java/org/apache/druid/metadata/MetadataStorageConnectorConfig.java
+++ b/core/src/main/java/org/apache/druid/metadata/MetadataStorageConnectorConfig.java
@@ -29,6 +29,8 @@ import java.util.Properties;
*/
public class MetadataStorageConnectorConfig
{
+ public static final String PROPERTY_BASE = "druid.metadata.storage.connector";
+
@JsonProperty
private boolean createTables = true;
diff --git a/core/src/main/java/org/apache/druid/metadata/MetadataStorageTablesConfig.java b/core/src/main/java/org/apache/druid/metadata/MetadataStorageTablesConfig.java
index 766efabb52..267f4fe6b6 100644
--- a/core/src/main/java/org/apache/druid/metadata/MetadataStorageTablesConfig.java
+++ b/core/src/main/java/org/apache/druid/metadata/MetadataStorageTablesConfig.java
@@ -30,6 +30,8 @@ import java.util.Map;
*/
public class MetadataStorageTablesConfig
{
+ public static final String PROPERTY_BASE = "druid.metadata.storage.tables";
+
public static MetadataStorageTablesConfig fromBase(String base)
{
return new MetadataStorageTablesConfig(base, null, null, null, null, null, null, null, null, null, null);
diff --git a/core/src/test/java/org/apache/druid/data/input/impl/prefetch/PrefetchableTextFilesFirehoseFactoryTest.java b/core/src/test/java/org/apache/druid/data/input/impl/prefetch/PrefetchableTextFilesFirehoseFactoryTest.java
index dd9c384e91..38fb843a34 100644
--- a/core/src/test/java/org/apache/druid/data/input/impl/prefetch/PrefetchableTextFilesFirehoseFactoryTest.java
+++ b/core/src/test/java/org/apache/druid/data/input/impl/prefetch/PrefetchableTextFilesFirehoseFactoryTest.java
@@ -41,6 +41,7 @@ import org.hamcrest.CoreMatchers;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.ClassRule;
+import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -249,6 +250,7 @@ public class PrefetchableTextFilesFirehoseFactoryTest
}
@Test
+ @Ignore("See issue #12638")
public void testWithLargeCacheAndSmallFetch() throws IOException
{
final TestPrefetchableTextFilesFirehoseFactory factory =
@@ -336,6 +338,7 @@ public class PrefetchableTextFilesFirehoseFactoryTest
}
@Test
+ @Ignore("See issue #12638")
public void testReconnectWithCacheAndPrefetch() throws IOException
{
final TestPrefetchableTextFilesFirehoseFactory factory =
diff --git a/core/src/test/java/org/apache/druid/guice/PolyBindTest.java b/core/src/test/java/org/apache/druid/guice/PolyBindTest.java
index d6a50d5139..372d428458 100644
--- a/core/src/test/java/org/apache/druid/guice/PolyBindTest.java
+++ b/core/src/test/java/org/apache/druid/guice/PolyBindTest.java
@@ -112,7 +112,7 @@ public class PolyBindTest
}
catch (Exception e) {
Assert.assertTrue(e instanceof ProvisionException);
- Assert.assertTrue(e.getMessage().contains("Unknown provider[c] of Key[type=org.apache.druid.guice.PolyBindTest$Gogo"));
+ Assert.assertTrue(e.getMessage().contains("Unknown provider [c] of Key[type=org.apache.druid.guice.PolyBindTest$Gogo"));
}
try {
Assert.assertEquals("B", injector.getInstance(Key.get(Gogo.class, Names.named("reverse"))).go());
@@ -120,9 +120,9 @@ public class PolyBindTest
}
catch (Exception e) {
Assert.assertTrue(e instanceof ProvisionException);
- Assert.assertTrue(e.getMessage().contains("Unknown provider[c] of Key[type=org.apache.druid.guice.PolyBindTest$Gogo"));
+ Assert.assertTrue(e.getMessage().contains("Unknown provider [c] of Key[type=org.apache.druid.guice.PolyBindTest$Gogo"));
}
-
+
// test default property value
Assert.assertEquals("B", injector.getInstance(GogoSally.class).go());
props.setProperty("sally", "a");
@@ -136,7 +136,7 @@ public class PolyBindTest
}
catch (Exception e) {
Assert.assertTrue(e instanceof ProvisionException);
- Assert.assertTrue(e.getMessage().contains("Unknown provider[c] of Key[type=org.apache.druid.guice.PolyBindTest$GogoSally"));
+ Assert.assertTrue(e.getMessage().contains("Unknown provider [c] of Key[type=org.apache.druid.guice.PolyBindTest$GogoSally"));
}
}
diff --git a/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnector.java b/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnector.java
index bbe238ffb0..4098e30a54 100644
--- a/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnector.java
+++ b/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnector.java
@@ -61,7 +61,7 @@ public class MySQLConnector extends SQLMetadataConnector
)
{
super(config, dbTables);
- log.info("Loading \"MySQL\" metadata connector driver %s", driverConfig.getDriverClassName());
+ log.info("Loading MySQL metadata connector driver %s", driverConfig.getDriverClassName());
tryLoadDriverClass(driverConfig.getDriverClassName(), true);
if (driverConfig.getDriverClassName().contains("mysql")) {
diff --git a/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnectorDriverConfig.java b/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnectorDriverConfig.java
index 0f6fa03245..4aad21651c 100644
--- a/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnectorDriverConfig.java
+++ b/extensions-core/mysql-metadata-storage/src/main/java/org/apache/druid/metadata/storage/mysql/MySQLConnectorDriverConfig.java
@@ -25,8 +25,11 @@ import java.util.Objects;
public class MySQLConnectorDriverConfig
{
+ public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
+ public static final String MARIA_DB_DRIVER = "org.mariadb.jdbc.Driver";
+
@JsonProperty
- private String driverClassName = "com.mysql.jdbc.Driver";
+ private String driverClassName = MYSQL_DRIVER;
@JsonProperty
public String getDriverClassName()
diff --git a/extensions-core/testing-tools/.gitignore b/extensions-core/testing-tools/.gitignore
new file mode 100644
index 0000000000..ae3c172604
--- /dev/null
+++ b/extensions-core/testing-tools/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/integration-tests-ex/README.md b/integration-tests-ex/README.md
index 9619897bae..9c29ec101f 100644
--- a/integration-tests-ex/README.md
+++ b/integration-tests-ex/README.md
@@ -19,17 +19,116 @@
# Revised Integration Tests
-This directory builds a Docker image for Druid. Later revisions
-use the image to run revised integration tests.
+This directory builds a Docker image for Druid, then uses that image, along
+with test configuration to run tests. This version greatly evolves the
+integration tests from the earlier form. See the [History](docs/history.md)
+section for details.
-The `it-base` project is built as part of the normal build,
-though it is used only for the Docker image.
+## Shortcuts
-To build the image:
+List of the most common commands once you're familiar with the framework.
+If you are new to the framework, see [Quickstart](docs/quickstart.md) for
+an explanation.
+
+### Build Druid
+
+To make the text a bit simpler, define a variable for the standard settings:
+
+```bash
+export MAVEN_IGNORE=-P skip-static-checks,skip-tests -Dmaven.javadoc.skip=true
+
+```bash
+mvn clean package -P dist $MAVEN_IGNORE -T1.0C
+```
+
+### Build the Test Image
+
+```bash
+cd $DRUID_DEV/integration-tests-ex/image
+mvn install -P test-image $MAVEN_IGNORE
+```
+
+### Run an IT from the Command Line
+
+```bash
+mvn verify -P IT-<category> -pl :druid-it-cases $MAVEN_IGNORE
+```
+
+Where `<category>` is one of the test categories.
+
+Or
```bash
-mvn $USUAL_CAVEATS -P test-image
+cd $DRUID_DEV/integration-tests-ex/cases
+mvn verify -P skip-static-checks,docker-tests,IT-<category> \
+ -Dmaven.javadoc.skip=true -DskipUTs=true \
+ -pl :druid-it-cases
```
-Where `$USUAL_CAVEATS` are your favorite options to turn
-off static checks, UTs, etc.
\ No newline at end of file
+### Run an IT from the IDE
+
+Start the cluster:
+
+```bash
+cd $DRUID_DEV/integration-tests-ex/cases
+./cluster.sh <category> up
+```
+
+Where `<category>` is one of the test categories. Then launch the
+test as a JUnit test.
+
+## Contents
+
+* [Goals](#Goals)
+* [Quickstart](docs/quickstart.md)
+* [Create a new test](docs/guide.md)
+* [Maven configuration](docs/maven.md)
+* [Travis integration](docs/travis.md)
+* [Docker image](docs/docker.md)
+* [Druid configuration](docs/druid-config.md)
+* [Docker Compose configuration](docs/compose.md)
+* [Test configuration](docs/test-config.md)
+* [Test structure](docs/tests.md)
+* [Test runtime semantics](docs/runtime.md)
+* [Scripts](docs/scripts.md)
+* [Dependencies](docs/dependencies.md)
+* [Debugging](docs/debugging.md)
+
+Background information
+
+* [Next steps](docs/next-steps.md)
+* [Test conversion](docs/conversion.md) - How to convert existing tests.
+* [History](docs/history.md) - Comparison with prior integration tests.
+
+## Goals
+
+The goal of the present version is to simplify development.
+
+* Speed up the Druid test image build by avoiding download of
+ dependencies. (Instead, any such dependencies are managed by
+ Maven and reside in the local build cache.)
+* Use official images for dependencies to avoid the need to
+ download, install, and manage those dependencies.
+* Make it is easy to manually build the image, launch
+ a cluster, and run a test against the cluster.
+* Convert tests to JUnit so that they will easily run in your
+ favorite IDE, just like other Druid tests.
+* Use the actual Druid build from `distribution` so we know
+ what is tested.
+* Leverage, don't fight, Maven.
+* Run the integration tests easily on a typical development machine.
+
+By meeting these goals, you can quickly:
+
+* Build the Druid distribution.
+* Build the Druid image. (< 1 minute)
+* Launch the cluster for the particular test. (a few seconds)
+* Run the test any number of times in your debugger.
+* Clean up the test artifacts.
+
+The result is that the fastest path to develop a Druid patch or
+feature is:
+
+* Create a normal unit test and run it to verify your code.
+* Create an integration test that double-checks the code in
+ a live cluster.
diff --git a/integration-tests-ex/cases/.gitignore b/integration-tests-ex/cases/.gitignore
new file mode 100644
index 0000000000..ae3c172604
--- /dev/null
+++ b/integration-tests-ex/cases/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/integration-tests-ex/assets/log4j2.xml b/integration-tests-ex/cases/assets/log4j2.xml
similarity index 100%
rename from integration-tests-ex/assets/log4j2.xml
rename to integration-tests-ex/cases/assets/log4j2.xml
diff --git a/integration-tests-ex/cases/cluster.sh b/integration-tests-ex/cases/cluster.sh
new file mode 100755
index 0000000000..0b19b478fc
--- /dev/null
+++ b/integration-tests-ex/cases/cluster.sh
@@ -0,0 +1,201 @@
+#! /bin/bash
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF 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.
+#--------------------------------------------------------------------
+
+# Starts the test-specific test cluster using Docker compose using
+# versions and other settings gathered when the test image was built.
+# Maps category names to cluster names. The mapping here must match
+# that in the test category classes when @Cluster is used.
+
+# Enable for debugging
+#set -x
+
+export MODULE_DIR=$(cd $(dirname $0) && pwd)
+
+function usage {
+ cat <<EOF
+Usage: $0 cmd [category]
+ -h, help
+ Display this message
+ up category
+ Start the cluster
+ down category
+ Stop the cluster
+ status category
+ Status of the cluster (for debugging within build scripts)
+ compose-cmd category
+ Pass the command to Docker compose.
+EOF
+}
+
+# Command name is required
+if [ $# -eq 0 ]; then
+ usage 1>&2
+ exit 1
+fi
+
+CMD=$1
+shift
+
+function category {
+ if [ $# -eq 0 ]; then
+ usage 1>&2
+ exit 1
+ fi
+ export CATEGORY=$1
+
+ # All commands need env vars
+ ENV_FILE=$MODULE_DIR/../image/target/env.sh
+ if [ ! -f $ENV_FILE ]; then
+ echo "Please build the Docker test image before testing" 1>&2
+ exit 1
+ fi
+
+ source $ENV_FILE
+ # The untranslated category is used for the local name of the
+ # shared folder.
+
+ # DRUID_INTEGRATION_TEST_GROUP is used in
+ # docker-compose files and here. Despite the name, it is the
+ # name of the cluster configuration we want to run, not the
+ # test category. Multiple categories an map to the same cluster
+ # definition.
+
+ # Map from category name to shared cluster definition name.
+ # Add an entry here if you create a new category that shares
+ # a definition.
+ case $CATEGORY in
+ "InputFormat")
+ export DRUID_INTEGRATION_TEST_GROUP=BatchIndex
+ ;;
+ *)
+ export DRUID_INTEGRATION_TEST_GROUP=$CATEGORY
+ ;;
+ esac
+
+ export CLUSTER_DIR=$MODULE_DIR/cluster/$DRUID_INTEGRATION_TEST_GROUP
+ if [ ! -d $CLUSTER_DIR ]; then
+ echo "Cluster directory $CLUSTER_DIR does not exist." 1>&2
+ echo "$USAGE" 1>&2
+ exit 1
+ fi
+
+ export TARGET_DIR=$MODULE_DIR/target
+ export SHARED_DIR=$TARGET_DIR/$CATEGORY
+ export ENV_FILE="$TARGET_DIR/${CATEGORY}.env"
+}
+
+function build_override {
+
+ mkdir -p target
+ rm -f "$ENV_FILE"
+ touch "$ENV_FILE"
+
+ # User-local settings?
+ LOCAL_ENV="$HOME/druid-it/${CATEGORY}.env"
+ if [ -f "$LOCAL_ENV" ]; then
+ cat "$LOCAL_ENV" >> "$ENV_FILE"
+ fi
+
+ # Provided override file
+ if [ -n "$OVERRIDE_ENV" ]; then
+ if [ ! -f "$OVERRIDE_ENV" ]; then
+ echo "Environment override file (OVERRIDE_ENV) not found: $OVERRIDE_ENV" 1>&2
+ exit 1
+ fi
+ cat "$OVERRIDE_ENV" >> "$ENV_FILE"
+ fi
+
+ # Add all environment variables of the form druid_*
+ env | grep "^druid_" >> "$ENV_FILE"
+
+ # Reuse the OVERRIDE_ENV variable to pass the full list to Docker compose
+ export OVERRIDE_ENV="$ENV_FILE"
+}
+
+# Dump lots of information to debug Docker failures when run inside
+# of a build environment where we can't inspect Docker directly.
+function show_status {
+ echo "===================================="
+ ls -l target/shared
+ echo "docker ps -a"
+ docker ps -a
+ # Was: --filter status=exited
+ for id in $(docker ps -a --format "{{.ID}}"); do
+ echo "===================================="
+ echo "Logs for Container ID $id"
+ docker logs $id | tail -n 20
+ done
+ echo "===================================="
+}
+
+function build_shared_dir {
+ mkdir -p $SHARED_DIR
+ # Must start with an empty DB to keep MySQL happy
+ rm -rf $SHARED_DIR/db
+ mkdir -p $SHARED_DIR/logs
+ mkdir -p $SHARED_DIR/tasklogs
+ mkdir -p $SHARED_DIR/db
+ mkdir -p $SHARED_DIR/kafka
+ mkdir -p $SHARED_DIR/resources
+ cp $MODULE_DIR/assets/log4j2.xml $SHARED_DIR/resources
+ # Permissions in some build setups are screwed up. See above. The user
+ # which runs Docker does not have permission to write into the /shared
+ # directory. Force ownership to allow writing.
+ chmod -R a+rwx $SHARED_DIR
+}
+
+# Print environment for debugging
+#env
+
+case $CMD in
+ "-h" )
+ usage
+ ;;
+ "help" )
+ usage
+ docker-compose help
+ ;;
+ "up" )
+ category $*
+ echo "Starting cluster $DRUID_INTEGRATION_TEST_GROUP"
+ build_override
+ build_shared_dir
+ cd $CLUSTER_DIR
+ docker-compose up -d
+ # Enable the following for debugging
+ show_status
+ ;;
+ "status" )
+ category $*
+ cd $CLUSTER_DIR
+ show_status
+ ;;
+ "down" )
+ category $*
+ # Enable the following for debugging
+ show_status
+ cd $CLUSTER_DIR
+ echo OVERRIDE_ENV="$ENV_FILE" docker-compose $CMD
+ OVERRIDE_ENV="$ENV_FILE" docker-compose $CMD
+ ;;
+ "*" )
+ category $*
+ cd $CLUSTER_DIR
+ OVERRIDE_ENV="$ENV_FILE" docker-compose $CMD
+ ;;
+esac
diff --git a/integration-tests-ex/cases/cluster/BatchIndex/docker-compose.yaml b/integration-tests-ex/cases/cluster/BatchIndex/docker-compose.yaml
new file mode 100644
index 0000000000..f8235db625
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/BatchIndex/docker-compose.yaml
@@ -0,0 +1,98 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF 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.
+
+networks:
+ druid-it-net:
+ name: druid-it-net
+ ipam:
+ config:
+ - subnet: 172.172.172.0/24
+
+services:
+ zookeeper:
+ extends:
+ file: ../Common/dependencies.yaml
+ service: zookeeper
+
+ metadata:
+ extends:
+ file: ../Common/dependencies.yaml
+ service: metadata
+
+ coordinator:
+ extends:
+ file: ../Common/druid.yaml
+ service: coordinator
+ container_name: coordinator
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ # The frequency with which the coordinator polls the database
+ # for changes. The DB population code has to wait at least this
+ # long for the coordinator to notice changes.
+ - druid_manager_segments_pollDuration=PT5S
+ - druid_coordinator_period=PT10S
+ depends_on:
+ - zookeeper
+ - metadata
+
+ overlord:
+ extends:
+ file: ../Common/druid.yaml
+ service: overlord
+ container_name: overlord
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ depends_on:
+ - zookeeper
+ - metadata
+
+ broker:
+ extends:
+ file: ../Common/druid.yaml
+ service: broker
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ depends_on:
+ - zookeeper
+
+ router:
+ extends:
+ file: ../Common/druid.yaml
+ service: router
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ depends_on:
+ - zookeeper
+
+ historical:
+ extends:
+ file: ../Common/druid.yaml
+ service: historical
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ depends_on:
+ - zookeeper
+
+ indexer:
+ extends:
+ file: ../Common/druid.yaml
+ service: indexer
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ volumes:
+ # Test data
+ - ../../resources:/resources
+ depends_on:
+ - zookeeper
diff --git a/integration-tests-ex/cases/cluster/Common/dependencies.yaml b/integration-tests-ex/cases/cluster/Common/dependencies.yaml
new file mode 100644
index 0000000000..ccfce630a2
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/dependencies.yaml
@@ -0,0 +1,166 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF 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.
+
+# Service definitions for Druid's dependencies: ZooKeeper, MySQL, and Kafka.
+# All tests need ZK and MySQL, ingestion tasks may need Kafka.
+#
+# These services use "official" images from the project or other sources.
+# Some amount of fiddling is needed to map them into configuration which
+# Druid requires.
+
+services:
+
+ # Uses the official Zookeeper image
+ # See https://hub.docker.com/_/zookeeper
+ zookeeper:
+ image: zookeeper:${ZK_VERSION}
+ container_name: zookeeper
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.4
+ ports:
+ - 2181:2181
+ volumes:
+ - ${SHARED_DIR}/logs:/logs
+ environment:
+ ZOO_LOG4J_PROP: INFO,ROLLINGFILE
+
+ # Uses the Bitnami Kafka image
+ # See https://hub.docker.com/r/bitnami/kafka/
+ kafka:
+ image: bitnami/kafka:${KAFKA_VERSION}
+ container_name: kafka
+ ports:
+ - 9092:9092
+ - 9093:9093
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.2
+ volumes:
+ - ${SHARED_DIR}/kafka:/bitnami/kafka
+ environment:
+ # This is the default: making it explicit
+ KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
+ # Plaintext is disabled by default
+ ALLOW_PLAINTEXT_LISTENER: "yes"
+ # Adapted from base-setup.sh and Bitnami docs
+ KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: "INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT"
+ KAFKA_CFG_LISTENERS: "INTERNAL://:9092,EXTERNAL://:9093"
+ KAFKA_CFG_ADVERTISED_LISTENERS: "INTERNAL://kafka:9092,EXTERNAL://localhost:9093"
+ KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
+ depends_on:
+ - zookeeper
+
+ # Uses the official MySQL image
+ # See https://hub.docker.com/_/mysql
+ # The image will intialize the user and DB upon first start.
+ metadata:
+ # platform: linux/x86_64 - Add when running on M1 Macs
+ image: mysql:$MYSQL_IMAGE_VERSION
+ container_name: metadata
+ command:
+ - --character-set-server=utf8mb4
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.3
+ ports:
+ - 3306:3306
+ volumes:
+ - ${SHARED_DIR}/db:/var/lib/mysql
+ environment:
+ MYSQL_ROOT_PASSWORD: driud
+ MYSQL_DATABASE: druid
+ MYSQL_USER: druid
+ MYSQL_PASSWORD: diurd
+
+## TODO: Not yet retested
+### Optional supporting infra
+
+ openldap:
+ image: osixia/openldap:1.4.0
+ container_name: openldap
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.102
+ ports:
+ - 8389:389
+ - 8636:636
+ privileged: true
+ volumes:
+ - ./ldap-configs:/container/service/slapd/assets/config/bootstrap/ldif/custom
+ command: --copy-service
+
+ schema-registry:
+ image: confluentinc/cp-schema-registry:5.5.1
+ container_name: schema-registry
+ ports:
+ - 8085:8085
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.103
+ volumes:
+ - ./schema-registry/jaas_config.file:/usr/lib/druid/conf/jaas_config.file
+ - ./schema-registry/password-file:/usr/lib/druid/conf/password-file
+ privileged: true
+ environment:
+ SCHEMA_REGISTRY_HOST_NAME: schema-registry
+ SCHEMA_REGISTRY_LISTENERS: "http://0.0.0.0:8085"
+ SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka:9092
+ SCHEMA_REGISTRY_AUTHENTICATION_METHOD: BASIC
+ SCHEMA_REGISTRY_AUTHENTICATION_REALM: druid
+ SCHEMA_REGISTRY_AUTHENTICATION_ROLES: users
+ SCHEMA_REGISTRY_OPTS: -Djava.security.auth.login.config=/usr/lib/druid/conf/jaas_config.file -Xmx32m
+
+ druid-it-hadoop:
+ ## Giving fake version
+ image: druid-it/hadoop:9.9.9
+ container_name: druid-it-hadoop
+ ports:
+ - 2049:2049
+ - 2122:2122
+ - 8020:8020
+ - 8021:8021
+ - 8030:8030
+ - 8031:8031
+ - 8032:8032
+ - 8033:8033
+ - 8040:8040
+ - 8042:8042
+ - 8088:8088
+ - 8443:8443
+ - 9000:9000
+ - 10020:10020
+ - 19888:19888
+ - 34455:34455
+ - 50010:50010
+ - 50020:50020
+ - 50030:50030
+ - 50060:50060
+ - 50070:50070
+ - 50075:50075
+ - 50090:50090
+ - 51111:51111
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.101
+ privileged: true
+ volumes:
+ - ${HOME}/shared:/shared
+ - ./../src/test/resources:/resources
+ hostname: "druid-it-hadoop"
+ command: "bash -c 'echo Start druid-it-hadoop container... && \
+ /etc/bootstrap.sh && \
+ tail -f /dev/null'"
+
diff --git a/integration-tests-ex/cases/cluster/Common/druid.yaml b/integration-tests-ex/cases/cluster/Common/druid.yaml
new file mode 100644
index 0000000000..bd5caad223
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/druid.yaml
@@ -0,0 +1,177 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF 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.
+
+version: "2.2"
+
+# IP address ranges:
+# 172.172.172.2: zookeeper + kafka (dockerfile depends on this)
+# 172.172.172.3: metadata store
+# 172.172.172.10-19: overlord
+# 172.172.172.20-29: coordinator
+# 172.172.172.30-39: historicals
+# 172.172.172.40-49: middle managers
+# 172.172.172.50-59: indexers
+# 172.172.172.60-69: brokers
+# 172.172.172.70-79: routers
+# 172.172.172.101+: hadoop, other supporting infra
+#
+# See https://docs.docker.com/compose/networking/
+# Key things to know:
+# * The containers communicate using the Compose network.
+# * Containers use service name as the host, container port as port
+# * Ports are also exposed to the host: "host:container", use the
+# host port to connect from the local machine (outside of a container).
+#
+# TODO: The static IPs should not be required. Remove?
+
+networks:
+ druid-it-net:
+ name: druid-it-net
+ ipam:
+ config:
+ - subnet: 172.172.172.0/24
+
+services:
+
+ overlord:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: overlord
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.10
+ ports:
+ - 8090:8090
+ - 8290:8290
+ - 5009:8000
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/overlord.env
+ - ${OVERRIDE_ENV}
+
+ coordinator:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: coordinator
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.20
+ ports:
+ - 8081:8081
+ - 8281:8281
+ - 5006:8000
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/coordinator.env
+ - ${OVERRIDE_ENV}
+
+ historical:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: historical
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.30
+ ports:
+ - 8083:8083
+ - 8283:8283
+ - 5007:8000
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/historical.env
+ - ${OVERRIDE_ENV}
+
+ middlemanager:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: middlemanager
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.40
+ ports:
+ - 5008:8000
+ - 8091:8091
+ - 8291:8291
+ - 8100:8100
+ - 8101:8101
+ - 8102:8102
+ - 8103:8103
+ - 8104:8104
+ - 8105:8105
+ - 8300:8300
+ - 8301:8301
+ - 8302:8302
+ - 8303:8303
+ - 8304:8304
+ - 8305:8305
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/middlemanager.env
+ - ${OVERRIDE_ENV}
+
+ indexer:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: indexer
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.50
+ ports:
+ - 5008:8000
+ - 8091:8091
+ - 8291:8291
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/indexer.env
+ - ${OVERRIDE_ENV}
+
+ broker:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: broker
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.60
+ ports:
+ - 5005:8000
+ - 8082:8082
+ - 8282:8282
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/broker.env
+ - ${OVERRIDE_ENV}
+
+ router:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: router
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.70
+ ports:
+ - 5004:8000
+ - 8888:8888
+ - 9088:9088
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - environment-configs/common.env
+ - environment-configs/router.env
+ - ${OVERRIDE_ENV}
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/auth.env b/integration-tests-ex/cases/cluster/Common/environment-configs/auth.env
new file mode 100644
index 0000000000..fec58cc0a0
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/auth.env
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+# Settings for a secure cluster.
+# Disabled by default for each of testing.
+# Use only for security tests.
+
+druid_auth_authenticator_basic_authorizerName=basic
+druid_auth_authenticator_basic_initialAdminPassword=priest
+druid_auth_authenticator_basic_initialInternalClientPassword=warlock
+druid_auth_authenticator_basic_type=basic
+druid_auth_authenticatorChain=["basic"]
+druid_auth_authorizer_basic_type=basic
+druid_auth_authorizers=["basic"]
+druid_client_https_certAlias=druid
+druid_client_https_keyManagerPassword=druid123
+druid_client_https_keyStorePassword=druid123
+druid_client_https_keyStorePath=/tls/server.p12
+druid_client_https_protocol=TLSv1.2
+druid_client_https_trustStoreAlgorithm=PKIX
+druid_client_https_trustStorePassword=druid123
+druid_client_https_trustStorePath=/tls/truststore.jks
+druid_enableTlsPort=true
+druid_server_http_allowedHttpMethods=["OPTIONS"]
+druid_server_https_certAlias=druid
+druid_server_https_keyManagerPassword=druid123
+druid_server_https_keyStorePassword=druid123
+druid_server_https_keyStorePath=/tls/server.p12
+druid_server_https_keyStoreType=PKCS12
+druid_server_https_requireClientCertificate=true
+druid_server_https_trustStoreAlgorithm=PKIX
+druid_server_https_trustStorePassword=druid123
+druid_server_https_trustStorePath=/tls/truststore.jks
+druid_server_https_validateHostnames=true
+druid_escalator_authorizerName=basic
+druid_escalator_internalClientPassword=warlock
+druid_escalator_internalClientUsername=druid_system
+druid_escalator_type=basic
+druid_server_https_crlPath=/tls/revocations.crl
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/broker.env b/integration-tests-ex/cases/cluster/Common/environment-configs/broker.env
new file mode 100644
index 0000000000..652bbaf69d
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/broker.env
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+DRUID_SERVICE=broker
+
+# JAVA OPTS
+SERVICE_DRUID_JAVA_OPTS=-Xms192m -Xmx256m
+
+# Druid configs
+druid_host=broker
+
+# HTTP server settings
+druid_server_http_numThreads=40
+druid_server_https_crlPath=/tls/revocations.crl
+
+# HTTP client settings
+druid_broker_http_numConnections=20
+druid_broker_http_readTimeout=PT5M
+
+# Processing threads and buffers
+druid_processing_buffer_sizeBytes=25000000
+druid_processing_numMergeBuffers=2
+druid_processing_numThreads=1
+druid_processing_tmpDir=/tmp/druid/processing
+
+# Query cache
+druid_broker_cache_useCache=true
+druid_broker_cache_populateCache=true
+druid_cache_sizeInBytes=40000000
+
+druid_query_groupBy_maxOnDiskStorage=300000000
+druid_lookup_namespace_cache_type=onHeap
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/broker
+druid_sql_avatica_enable=true
+druid_query_scheduler_laning_strategy=manual
+druid_query_scheduler_laning_lanes_one=1
+druid_segmentCache_locations=[{"path":"/shared/druid/brokerIndexCache","maxSize":1000000000}]
+druid_server_maxSize=1000000000
+druid_sql_planner_metadataRefreshPeriod=PT15S
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/common.env b/integration-tests-ex/cases/cluster/Common/environment-configs/common.env
new file mode 100644
index 0000000000..350a1f5b79
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/common.env
@@ -0,0 +1,117 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+LANG=C.UTF-8
+LANGUAGE=C.UTF-8
+LC_ALL=C.UTF-8
+
+# JAVA OPTS
+# -XX:HeapDumpPath set in container based on the service and intance
+DRUID_COMMON_JAVA_OPTS=-server -Duser.timezone=UTC -Dfile.encoding=UTF-8 -XX:+UseG1GC -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError
+DRUID_SERVICE_JAVA_OPTS=
+
+# Debugging. Enabled by default. Always uses port 8000 in the container.
+# May to unique ports onto the host in Docker Compose.
+DEBUG_PORT=
+DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
+
+# Extra classpath. Standard classpath includes Druid libs, Hadoop config, Druid config.
+DRUID_CLASSPATH=
+
+# Number of an instance when there are two or more of the same type.
+DRUID_INSTANCE=
+
+# Druid configs
+# Mostly adapted from the micro-quickstart/_common file.
+
+# Hostname
+# druid.host is set on each host by the launch script
+
+# Extensions specified in the load list will be loaded by Druid at runtime.
+# The extension jars must be installed as part of Druid, or via the image
+# build script.
+#
+# The launch script creates druid_extensions_loadList by combining two test-specific
+# variables: druid_standard_loadList defined here, and druid_test_loadList, defined
+# in a docker-compose.yaml file, for any test-specific extensions.
+# See compose.md for more details.
+druid_standard_loadList=mysql-metadata-storage,it-tools,druid-lookups-cached-global,druid-histogram,druid-datasketches,druid-parquet-extensions,druid-avro-extensions,druid-protobuf-extensions,druid-orc-extensions,druid-kafka-indexing-service,druid-s3-extensions
+
+# Location of Hadoop dependencies provided at runtime in the shared directory.
+druid_extensions_hadoopDependenciesDir=/shared/hadoop-dependencies
+
+# Logging
+druid_startup_logging_logProperties=true
+
+# Zookeeper
+# Name of the ZK container, mapped to a host name
+druid_zk_service_host=zookeeper
+druid_zk_paths_base=/druid
+
+# Metadata storage
+# For MySQL (MySQL JDBC installed in $DRUID_HOME/lib)
+druid_metadata_storage_type=mysql
+druid_metadata_storage_connector_connectURI=jdbc:mysql://metadata/druid
+druid_metadata_storage_connector_user=druid
+druid_metadata_storage_connector_password=diurd
+
+# Deep storage
+druid_storage_type=local
+druid_storage_storageDirectory=/shared/druid/storage
+
+# Indexing service logs
+druid_indexer_logs_type=file
+druid_indexer_logs_directory=/shared/tasklogs
+
+# Service discovery
+druid_selectors_indexing_serviceName=druid/overlord
+druid_selectors_coordinator_serviceName=druid/coordinator
+
+# Monitoring
+druid_monitoring_monitors=["org.apache.druid.java.util.metrics.JvmMonitor"]
+druid_emitter=noop
+druid_emitter_logging_logLevel=info
+
+# Storage type of double columns
+druid_indexing_doubleStorage=double
+
+# SQL
+druid_sql_enable=true
+druid_sql_planner_authorizeSystemTablesDirectly=true
+
+# Lookups
+druid_lookup_numLookupLoadingThreads=1
+
+# Test-specific
+druid_server_http_numThreads=20
+# Allow OPTIONS method for ITBasicAuthConfigurationTest.testSystemSchemaAccess
+druid_auth_basic_common_maxSyncRetries=20
+druid_request_logging_type=slf4j
+
+# TODO: Can these 4 move to the Coordinator config?
+druid_coordinator_kill_supervisor_on=true
+druid_coordinator_kill_supervisor_period=PT10S
+druid_coordinator_kill_supervisor_durationToRetain=PT0M
+druid_coordinator_period_metadataStoreManagementPeriod=PT10S
+
+# TODO: Can the following be moved to Overlord? Or removed?
+# Testing the legacy config from https://github.com/apache/druid/pull/10267
+# Can remove this when the flag is no longer needed
+druid_indexer_task_ignoreTimestampSpecForDruidInputSource=true
+
+
+# TODO: Pass this from the test (AzureDeepStorage)
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/coordinator.env b/integration-tests-ex/cases/cluster/Common/environment-configs/coordinator.env
new file mode 100644
index 0000000000..fa20cf6cca
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/coordinator.env
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+DRUID_SERVICE=coordinator
+
+# JAVA OPTS
+DRUID_SERVICE_JAVA_OPTS=-Xmx64m -Xms64m
+
+# Druid configs
+druid_host=coordinator
+druid_coordinator_startDelay=PT5S
+druid_manager_lookups_hostUpdateTimeout=PT30S
+druid_manager_lookups_period=10000
+druid_manager_lookups_threadPoolSize=2
+druid_manager_config_pollDuration=PT10S
+druid_manager_rules_pollDuration=PT10S
+druid_manager_segments_pollDuration=PT2S
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/coordinator
+druid_auth_unsecuredPaths=["/druid/coordinator/v1/loadqueue"]
+druid_server_https_crlPath=/tls/revocations.crl
+druid_coordinator_period_indexingPeriod=PT180000S
+
+# 2x indexing period so that kill period is valid
+druid_coordinator_kill_period=PT360000S
+druid_coordinator_period=PT1S
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/historical.env b/integration-tests-ex/cases/cluster/Common/environment-configs/historical.env
new file mode 100644
index 0000000000..cf969f6289
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/historical.env
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+DRUID_SERVICE=historical
+
+# JAVA OPTS
+SERVICE_DRUID_JAVA_OPTS=-Xmx512m -Xms512m
+
+# Druid configs
+druid_host=historical
+druid_processing_buffer_sizeBytes=25000000
+druid_processing_numThreads=2
+druid_query_groupBy_maxOnDiskStorage=300000000
+druid_segmentCache_locations=[{"path":"/shared/druid/indexCache","maxSize":5000000000}]
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/historical
+druid_server_https_crlPath=/tls/revocations.crl
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/indexer.env b/integration-tests-ex/cases/cluster/Common/environment-configs/indexer.env
new file mode 100644
index 0000000000..1c6afffb18
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/indexer.env
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+DRUID_SERVICE=indexer
+
+# JAVA OPTS
+SERVICE_DRUID_JAVA_OPTS=-Xmx1g -Xms512m
+
+# Druid configs
+druid_host=indexer
+druid_server_http_numThreads=4
+druid_storage_storageDirectory=/shared/storage
+
+druid_processing_buffer_sizeBytes=25000000
+druid_processing_numThreads=1
+druid_selectors_indexing_serviceName=druid/overlord
+druid_indexer_task_chathandler_type=announce
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/indexer
+druid_startup_logging_logProperties=true
+druid_server_https_crlPath=/tls/revocations.crl
+druid_worker_capacity=10
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/middlemanager.env b/integration-tests-ex/cases/cluster/Common/environment-configs/middlemanager.env
new file mode 100644
index 0000000000..8ea21dac6e
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/middlemanager.env
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+DRUID_SERVICE=middleManager
+
+# JAVA OPTS
+SERVICE_DRUID_JAVA_OPTS=-Xmx64m -Xms64m
+
+# Druid configs
+druid_host=middlemanager
+druid_server_http_numThreads=100
+druid_storage_storageDirectory=/shared/storage
+druid_indexer_runner_javaOptsArray=["-server", "-Xmx256m", "-Xms256m", "-XX:NewSize=128m", "-XX:MaxNewSize=128m", "-XX:+UseG1GC", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-Dlog4j.configurationFile=/shared/resources/log4j2.xml"]
+
+druid_indexer_fork_property_druid_processing_buffer_sizeBytes=25000000
+druid_indexer_fork_property_druid_processing_numThreads=1
+druid_indexer_fork_server_http_numThreads=20
+druid_selectors_indexing_serviceName=druid/overlord
+druid_indexer_task_chathandler_type=announce
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/middleManager
+druid_startup_logging_logProperties=true
+druid_server_https_crlPath=/tls/revocations.crl
+druid_worker_capacity=10
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/overlord.env b/integration-tests-ex/cases/cluster/Common/environment-configs/overlord.env
new file mode 100644
index 0000000000..1e73199ee5
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/overlord.env
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+DRUID_SERVICE=overlord
+
+# JAVA OPTS
+SERVICE_DRUID_JAVA_OPTS=-Xmx64m -Xms64m
+
+# Druid configs
+druid_host=overlord
+
+druid_indexer_queue_startDelay=PT5S
+druid_indexer_storage_type=metadata
+druid_indexer_runner_type=remote
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/overlord
+druid_server_https_crlPath=/tls/revocations.crl
diff --git a/integration-tests-ex/cases/cluster/Common/environment-configs/router.env b/integration-tests-ex/cases/cluster/Common/environment-configs/router.env
new file mode 100644
index 0000000000..2e8c5bc6f4
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/Common/environment-configs/router.env
@@ -0,0 +1,37 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+#
+
+DRUID_SERVICE=router
+
+# JAVA OPTS
+DRUID_SERVICE_JAVA_OPTS=-Xmx64m -Xms64m
+
+# Druid configs
+druid_host=router
+druid_auth_basic_common_cacheDirectory=/tmp/authCache/router
+druid_sql_avatica_enable=true
+
+# HTTP proxy
+druid_router_http_numConnections=50
+druid_router_http_readTimeout=PT5M
+druid_router_http_numMaxThreads=100
+druid_server_http_numThreads=100
+
+# Management proxy to coordinator / overlord: required for unified web console.
+druid_router_managementProxy_enabled=true
diff --git a/integration-tests-ex/cases/cluster/HighAvailability/docker-compose.yaml b/integration-tests-ex/cases/cluster/HighAvailability/docker-compose.yaml
new file mode 100644
index 0000000000..bcecf4d9ee
--- /dev/null
+++ b/integration-tests-ex/cases/cluster/HighAvailability/docker-compose.yaml
@@ -0,0 +1,157 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF 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.
+
+networks:
+ druid-it-net:
+ name: druid-it-net
+ ipam:
+ config:
+ - subnet: 172.172.172.0/24
+
+services:
+ zookeeper:
+ extends:
+ file: ../Common/dependencies.yaml
+ service: zookeeper
+
+ metadata:
+ extends:
+ file: ../Common/dependencies.yaml
+ service: metadata
+
+ coordinator-one:
+ extends:
+ file: ../Common/druid.yaml
+ service: coordinator
+ container_name: coordinator-one
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ - DRUID_INSTANCE=one
+ # The frequency with which the coordinator polls the database
+ # for changes. The DB population code has to wait at least this
+ # long for the coordinator to notice changes.
+ - druid_manager_segments_pollDuration=PT5S
+ - druid_coordinator_period=PT10S
+ - druid_host=coordinator-one
+ depends_on:
+ - zookeeper
+ - metadata
+
+ # The second Coordinator (and Overlord) cannot extend
+ # The base service: they need distinct ports.
+ coordinator-two:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: coordinator-two
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.120
+ ports:
+ - 18081:8081
+ - 18281:8281
+ - 15006:8000
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - ../Common/environment-configs/common.env
+ - ../Common/environment-configs/coordinator.env
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ - DRUID_INSTANCE=two
+ - druid_manager_segments_pollDuration=PT5S
+ - druid_coordinator_period=PT10S
+ - druid_host=coordinator-two
+ depends_on:
+ - zookeeper
+ - metadata
+
+ overlord-one:
+ extends:
+ file: ../Common/druid.yaml
+ service: overlord
+ container_name: overlord-one
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ - DRUID_INSTANCE=one
+ - druid_host=overlord-one
+ depends_on:
+ - zookeeper
+ - metadata
+
+ overlord-two:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: overlord-two
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.110
+ ports:
+ - 18090:8090
+ - 18290:8290
+ - 15009:8000
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - ../Common/environment-configs/common.env
+ - ../Common/environment-configs/overlord.env
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ - DRUID_INSTANCE=two
+ - druid_host=overlord-two
+ depends_on:
+ - zookeeper
+ - metadata
+
+ broker:
+ extends:
+ file: ../Common/druid.yaml
+ service: broker
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ depends_on:
+ - zookeeper
+
+ router:
+ extends:
+ file: ../Common/druid.yaml
+ service: router
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ depends_on:
+ - zookeeper
+
+ # The custom node role has no base definition. Also, there is
+ # no environment file: the needed environment settings are
+ # given here.
+ custom-node-role:
+ image: ${DRUID_IT_IMAGE_NAME}
+ container_name: custom-node-role
+ networks:
+ druid-it-net:
+ ipv4_address: 172.172.172.90
+ ports:
+ - 50011:50011
+ - 9301:9301
+ - 9501:9501
+ - 5010:8000
+ volumes:
+ - ${SHARED_DIR}:/shared
+ env_file:
+ - ../Common/environment-configs/common.env
+ environment:
+ - DRUID_INTEGRATION_TEST_GROUP=${DRUID_INTEGRATION_TEST_GROUP}
+ - DRUID_SERVICE=custom-node-role
+ - SERVICE_DRUID_JAVA_OPTS=-Xmx64m -Xms64m
+ - druid_host=custom-node-role
+ - druid_auth_basic_common_cacheDirectory=/tmp/authCache/custom_node_role
+ - druid_server_https_crlPath=/tls/revocations.crl
diff --git a/integration-tests-ex/cases/pom.xml b/integration-tests-ex/cases/pom.xml
new file mode 100644
index 0000000000..5c34af881d
--- /dev/null
+++ b/integration-tests-ex/cases/pom.xml
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.druid.integration-tests</groupId>
+ <artifactId>druid-it-cases</artifactId>
+ <name>druid-it-cases</name>
+ <description>New Integration Tests</description>
+
+ <parent>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid</artifactId>
+ <version>0.24.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <properties>
+ <it.category>MustSetACategory</it.category>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-integration-tests</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <!-- See https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html -->
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-integration-tests</artifactId>
+ <version>${project.parent.version}</version>
+ <classifier>tests</classifier>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-core</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-processing</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-server</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-services</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid</groupId>
+ <artifactId>druid-indexing-service</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject.extensions</groupId>
+ <artifactId>guice-multibindings</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.curator</groupId>
+ <artifactId>curator-framework</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.curator</groupId>
+ <artifactId>curator-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.dataformat</groupId>
+ <artifactId>jackson-dataformat-yaml</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>joda-time</groupId>
+ <artifactId>joda-time</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.github.docker-java</groupId>
+ <artifactId>docker-java-core</artifactId>
+ <version>3.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.github.docker-java</groupId>
+ <artifactId>docker-java-api</artifactId>
+ <version>3.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.github.docker-java</groupId>
+ <artifactId>docker-java-transport-netty</artifactId>
+ <version>3.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>com.github.docker-java</groupId>
+ <artifactId>docker-java</artifactId>
+ <version>3.2.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.github.docker-java</groupId>
+ <artifactId>docker-java-transport-jersey</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-transport-native-kqueue</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>${mysql.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jdbi</groupId>
+ <artifactId>jdbi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid.extensions</groupId>
+ <artifactId>mysql-metadata-storage</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid.extensions</groupId>
+ <artifactId>druid-azure-extensions</artifactId>
+ <version>${project.parent.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.druid.extensions</groupId>
+ <artifactId>druid-hdfs-storage</artifactId>
+ <version>${project.parent.version}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>com.amazonaws</groupId>
+ <artifactId>aws-java-sdk-bundle</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.kafka</groupId>
+ <artifactId>kafka-clients</artifactId>
+ <version>${apache.kafka.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>jsr305</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>pl.pragmatists</groupId>
+ <artifactId>JUnitParams</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <!-- Exclude ITs from surefire. Required because they end with "Test". -->
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>**/IT*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <!--
+ ~ The analysis gets confused between javax.xml.bind:jaxb-api and jakarta.xml.bind:jakarta.xml.bind-api.
+ ~ The latter is a transitive dependency of jackson 2.10+.
+ -->
+ <ignoredUsedUndeclaredDependencies>
+ <ignoredUsedUndeclaredDependency>org.glassfish.hk2.external:jakarta.inject</ignoredUsedUndeclaredDependency>
+ </ignoredUsedUndeclaredDependencies>
+ <!-- Dynamically loaded. -->
+ <ignoredUnusedDeclaredDependencies>
+ <ignoredUnusedDeclaredDependency>mysql:mysql-connector-java:jar</ignoredUnusedDeclaredDependency>
+ </ignoredUnusedDeclaredDependencies>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>IT-HighAvailability</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <it.category>HighAvailability</it.category>
+ </properties>
+ </profile>
+ <profile>
+ <id>IT-BatchIndex</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <it.category>BatchIndex</it.category>
+ </properties>
+ </profile>
+ <profile>
+ <id>IT-InputFormat</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <it.category>InputFormat</it.category>
+ </properties>
+ </profile>
+ <profile>
+ <id>IT-AzureDeepStorage</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <properties>
+ <it.category>AzureDeepStorage</it.category>
+ </properties>
+ </profile>
+ <profile>
+ <id>docker-tests</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>3.0.0-M7</version>
+ <dependencies>
+ <!-- Required to force Failsafe to use JUnit instead of TestNG.
+ junit47 is required to use test categories. -->
+ <dependency>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>surefire-junit47</artifactId>
+ <version>3.0.0-M7</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>functional-test</id>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>integration-test</goal>
+ </goals>
+ <configuration>
+ <!-- our tests are very verbose, let's keep the volume down -->
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ <!-- Can run only one test category per Maven run. -->
+ <groups>org.apache.druid.testsEx.categories.${it.category}</groups>
+ </configuration>
+ </execution>
+ <execution>
+ <id>verify</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>start-cluster</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${project.basedir}</workingDirectory>
+ <executable>bash</executable>
+ <arguments>
+ <argument>cluster.sh</argument>
+ <argument>up</argument>
+ <argument>${it.category}</argument>
+ </arguments>
+ </configuration>
+ </execution>
+
+ <execution>
+ <id>stop-cluster</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>exec</goal>
+ </goals>
+ <configuration>
+ <workingDirectory>${project.basedir}</workingDirectory>
+ <executable>bash</executable>
+ <arguments>
+ <argument>cluster.sh</argument>
+ <argument>down</argument>
+ <argument>${it.category}</argument>
+ </arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/integration-tests-ex/cases/resources/README.md b/integration-tests-ex/cases/resources/README.md
new file mode 100644
index 0000000000..7ae95d8a55
--- /dev/null
+++ b/integration-tests-ex/cases/resources/README.md
@@ -0,0 +1,42 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF 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.
+ -->
+
+# Test Data
+
+This directory contains resources, such as test data, mounted into
+Druid indexer container at `/resources`.
+That name is chosen for backward compatibility with the previous IT
+version that mounted `/src/test/resources` to that mount point.
+See the `indexer` node in `docker-compose.yaml` for `BatchIndex`
+for the actual volume mount.
+
+The many indexer specs expect data to be at
+`/resources/data/batch_index/json/spec.json`, where `spec` is the
+name of some ingest spec. The structure here was chosen to allow
+the existing specs to be reused without change.
+
+Put data for the Indexer in this folder. Put files to be used by
+tests in `/src/test/resources`. That way, we only mount into the container
+the data which the server needs. Resources which tests need, such as
+queries, specs and other resources, are on the class path of the test,
+but are not visible to the server.
+
+Paths within this folder are the same as the former
+`/src/test/resources` folder so that the many indexer specs don't
+have to change.
diff --git a/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data1.avro b/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data1.avro
new file mode 100644
index 0000000000..5ed0d60703
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data1.avro differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data2.avro b/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data2.avro
new file mode 100644
index 0000000000..aa25803d5d
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data2.avro differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data3.avro b/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data3.avro
new file mode 100644
index 0000000000..2e0f9f2e1d
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/avro/wikipedia_index_data3.avro differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data1.csv b/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data1.csv
new file mode 100644
index 0000000000..c2e2b0714d
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data1.csv
@@ -0,0 +1,4 @@
+timestamp,page,language,user,unpatrolled,newPage,robot,anonymous,namespace,continent,country,region,city,added,deleted,delta
+2013-08-31T01:02:33Z,Gypsy Danger,en,nuclear,TRUE,TRUE,FALSE,FALSE,article,North America,United States,Bay Area,San Francisco,57,200,-143
+2013-08-31T03:32:45Z,Striker Eureka,en,speed,FALSE,TRUE,TRUE,FALSE,wikipedia,Australia,Australia,Cantebury,Syndey,459,129,330
+2013-08-31T07:11:21Z,Cherno Alpha,ru,masterYi,FALSE,TRUE,TRUE,FALSE,article,Asia,Russia,Oblast,Moscow,123,12,111
diff --git a/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data2.csv b/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data2.csv
new file mode 100644
index 0000000000..cbed2815db
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data2.csv
@@ -0,0 +1,4 @@
+timestamp,page,language,user,unpatrolled,newPage,robot,anonymous,namespace,continent,country,region,city,added,deleted,delta
+2013-08-31T11:58:39Z,Crimson Typhoon,zh,triplets,TRUE,FALSE,TRUE,FALSE,wikipedia,Asia,China,Shanxi,Taiyuan,905,5,900
+2013-08-31T12:41:27Z,Coyote Tango,ja,stringer,TRUE,FALSE,TRUE,FALSE,wikipedia,Asia,Japan,Kanto,Tokyo,1,10,-9
+2013-09-01T01:02:33Z,Gypsy Danger,en,nuclear,TRUE,TRUE,FALSE,FALSE,article,North America,United States,Bay Area,San Francisco,57,200,-143
diff --git a/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data3.csv b/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data3.csv
new file mode 100644
index 0000000000..51d6d21d0d
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/csv/wikipedia_index_data3.csv
@@ -0,0 +1,5 @@
+timestamp,page,language,user,unpatrolled,newPage,robot,anonymous,namespace,continent,country,region,city,added,deleted,delta
+2013-09-01T03:32:45Z,Striker Eureka,en,speed,FALSE,TRUE,TRUE,FALSE,wikipedia,Australia,Australia,Cantebury,Syndey,459,129,330
+2013-09-01T07:11:21Z,Cherno Alpha,ru,masterYi,FALSE,TRUE,TRUE,FALSE,article,Asia,Russia,Oblast,Moscow,123,12,111
+2013-09-01T11:58:39Z,Crimson Typhoon,zh,triplets,TRUE,FALSE,TRUE,FALSE,wikipedia,Asia,China,Shanxi,Taiyuan,905,5,900
+2013-09-01T12:41:27Z,Coyote Tango,ja,stringer,TRUE,FALSE,TRUE,FALSE,wikipedia,Asia,Japan,Kanto,Tokyo,1,10,-9
diff --git a/integration-tests-ex/cases/resources/data/batch_index/hadoop_tsv/batch_hadoop.data b/integration-tests-ex/cases/resources/data/batch_index/hadoop_tsv/batch_hadoop.data
new file mode 100644
index 0000000000..5cbad1d1a8
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/hadoop_tsv/batch_hadoop.data
@@ -0,0 +1,3360 @@
+2014102000 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/EjCpo+GRSVI= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102000 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/f9W8+ncS4gY= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102000 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/GgfpDdmxLhY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102000 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/K8REsye3fwU= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102000 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/WsCXYZhyozE= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102000 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/dK4342O/FTk= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102000 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/AlCrGy8+2nQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102000 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/UI5wPt/62mg= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102000 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/MOmSBXAdjjM= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102000 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/knV/W1AAhkI= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102001 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/eRHUCoYK01Y= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102001 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/kQuDnt2wKl0= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102001 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/at+3K9VLgDA= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102001 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/MP+fZwNS/C8= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102001 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/hezyCab9fwk= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102001 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/mZpq/D+8WkA= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102001 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ai4fvSJgG3Y= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102001 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/5KOnRDI9Al8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102001 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/2bsjx1MucyI= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102001 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GBq+Q6KT+Sw= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102002 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/biX5Pvg75gg= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102002 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RnfDgoKmUyo= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102002 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/0jOeJMIdryc= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102002 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/vfoeSlxgIk8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102002 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/YkYckSgh7Rs= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102002 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/8JnLkGK3MDQ= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102002 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/P7jPaTii00U= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102002 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/UY785K8nMmk= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102002 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/M4NSbjrLAiI= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102002 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/E8lPrdC2EAQ= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102003 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/IWfsCAHfuVc= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102003 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/3kjlykqJ4Ak= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102003 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/1NWqkl/Wh0Y= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102003 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Wnr0C+7kAW0= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102003 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/IQ9EMf+HsUs= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102003 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//TelFFXedRM= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102003 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Mrd4L1nzm2U= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102003 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/rUhLLKkNgko= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102003 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/MA2BbW3p1WE= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102003 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/yHliv0IAwGA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102004 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//DrPhe1qSF8= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102004 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EzLoG0F2cAY= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102004 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/m88oI8oTtGM= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102004 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/CHqdGL+V9SU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102004 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/IADP3uPMfnA= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102004 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Vy3QzlASAnQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102004 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/p/nv5UT0hkk= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102004 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/xcQkGwA6LkQ= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102004 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PVVoyeQgLkQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102004 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Jf5Hi1pRdAE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102005 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/5T6JRK+ic3I= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102005 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/xLPzAF186Xg= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102005 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/S0bU2mFrLFc= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102005 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3hYiQkhVxVI= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102005 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ttepKTpirGw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102005 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8lrKkjilpQg= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102005 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/gs9UAv7fG3o= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102005 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/DEC78zuV+Tc= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102005 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cJ4RK5Cn4h0= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102005 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/2smHx2YUeWc= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102006 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Wnr0C+7kAW0= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102006 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/hI0eujTrADA= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102006 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/OaJYFiAa8gY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102006 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/n/gqwVpESw0= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102006 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/tO+rpwDU21c= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102006 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/w3fCLLXxhTM= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102006 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/zrw+p+CnfCE= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102006 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/uUCbqGlTpks= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102006 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/6+5YY4zs8Uc= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102006 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/XKoYdy8CCF0= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102007 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3FisV+hJ3yw= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102007 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/zGwavWRoO1I= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102007 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/doRdr3CBth0= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102007 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/60YW0tKbryg= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102007 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/GqHtnaQebh8= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102007 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/R74pFhujI1g= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102007 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/opoPGsJOGzI= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102007 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/JL0s8uipTQw= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102007 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/eoPH+uP4L2o= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102007 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/glL81aNiBEk= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102008 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SfSvrBCAGT8= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102008 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/4OCDCLYpbU4= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102008 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/s/5gNjr5xgA= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102008 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/OLUpmjmHqCQ= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102008 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/mmb9xnNfPys= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102008 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/WrpnFRSQYUg= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102008 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/sLCb7NQp6jU= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102008 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//yBBZPvR0D0= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102008 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/vwAK5Fd0oB4= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102008 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//59wJDrWEVA= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102009 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/I7JGqQaXtyY= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102009 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/m654qCtd3XA= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102009 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9Imuzu07tjo= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102009 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/lXd3l8gTBlU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102009 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/oCHsQOWjmWA= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102009 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bU6EPMtqWCk= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102009 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/L19+i80vKGY= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102009 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GoLfPgnv0h8= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102009 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/S5yGd7ik+ls= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102009 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/WrpnFRSQYUg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102010 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TGBWoBYd0xo= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102010 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/h2ewwHINmSk= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102010 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TJyqB+exnQc= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102010 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/uFHSG8MeTk0= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102010 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gBbNQWl14yE= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102010 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wY0a+8BvDyE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102010 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/EIzvyk0fDAE= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102010 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kUXocIeoQ3Y= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102010 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/mYUlG2lnaCU= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102010 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ZHFFmMMR7m0= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102011 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/zYTnqCnaxmQ= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102011 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ahH2H456QGA= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102011 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1ZXjBwzc5mY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102011 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/UmqQBatvpGU= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102011 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/IP/Y4LmEeCg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102011 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/hEbyA8utUj0= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102011 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/qskSK5ugEzE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102011 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/3ZD8vvNwggU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102011 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/iz9LPZDxkzU= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102011 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/2KyOnv+ZQgA= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102012 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/S5z1m0RlNS4= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102012 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/6X2CHREsO08= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102012 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Ux2z7GiIZRI= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102012 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Hd4urCIDPXM= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102012 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/rqxDRRBvSGs= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102012 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/xw/wDgSRo2w= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102012 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ee3Wct+FhVU= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102012 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wIbQEqHPOnI= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102012 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/uuWAa5Mp6Xo= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102012 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/KCZEeTWPv2U= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102013 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/c2FHaM2oagw= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102013 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/FBpYL5B+D2s= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102013 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/WkP8v1HrrBE= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102013 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/k8xLUDGh7Vs= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102013 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/hTUjQbz4lQ4= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102013 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/x0fXR9FoUFc= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102013 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/WjG6L5GPMzM= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102013 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Up4+X3MoCQs= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102013 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/2B8H3QEtchw= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102013 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kNbdEaLBwXc= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102014 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/zoGitFDsjhk= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102014 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/7ECGq5853HI= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102014 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9bjw8Km9dX8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102014 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/WBySGh7tzU4= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102014 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pAJwBPZk7EM= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102014 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/UZ3mJRW9cnQ= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102014 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/V1hWSuT9BB4= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102014 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/AcCYNbHzWm8= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102014 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/1S/zsqYXshA= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102014 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8ZKc81ZP52M= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102015 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/qSVdyQHpwjI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102015 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/xTu6Dmnq6xQ= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102015 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/CX1yxvlWoBI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102015 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ER5jgCH5iHw= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102015 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/lNUqcsSZrTI= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102015 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//59wJDrWEVA= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102015 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wKk8PlXz2To= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102015 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/qCn38yfeKzY= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102015 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/95liMtBPMFw= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102015 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Auhs9UTEh2w= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102016 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/eX44R7Sy5WY= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102016 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9gR5U6xDKwg= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102016 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/UfC8STenaxA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102016 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/RqI5Z2Ku0Xk= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102016 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/151P1dI3l3U= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102016 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/x3XuZ+6TSjo= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102016 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ToEo4LH0vAg= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102016 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/MOHYU96cf3A= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102016 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3SZ70yZAYnU= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102016 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ogaNqO1hUEc= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102017 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/+g7ltp9kX28= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102017 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/TQlUUHD8cig= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102017 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/CelCe4afiyw= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102017 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/WG8Owc1482k= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102017 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/bS/gorLelUY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102017 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/FC6Tbd/+Xhg= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102017 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/iEHM7XP21zw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102017 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/+Ln8mKeR+kc= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102017 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Y2lZhpTodF0= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102017 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TIy6r9s4uRg= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102018 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ftbXf1FxZj0= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102018 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/f2DCYGmvvXA= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102018 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2qgXkg44iD8= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102018 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VDrYTcwlen0= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102018 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/oATATWw1lEo= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102018 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/NC0lbYkVKF8= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102018 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NS+5y3SlezU= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102018 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/R7EouBlgPnQ= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102018 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/0m+JD4989zU= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102018 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/XmyrLJc72Tk= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102019 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/1P0JhfFWZw8= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102019 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/10e/Xbimpng= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102019 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/IbsO3i8pDSo= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102019 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/hVUeBbJOwyY= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102019 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/AQY8fxNiABI= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102019 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cID3BDxKmW8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102019 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/b3xcUFkPFGU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102019 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ajhL+h5wAks= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102019 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NMqZ1NrX30U= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102019 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/cxTI8ScW2zQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102020 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/kYJhOeythFw= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102020 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/lOnH9H9RjB4= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102020 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fX24ApmYU34= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102020 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/sHLGiFIuTQY= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102020 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wRTuptRCRS4= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102020 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/RJZEwW4iDTM= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102020 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/w+GsMQyDrU4= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102020 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/jyUW17oebRM= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102020 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/QQ/JniDBoSM= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102020 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DCwa9W8bA0E= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102021 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/r9zslGq3bSE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102021 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/7Aw05ort+hU= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102021 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Kp7E46gklS0= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102021 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/+MFRGoulaRk= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102021 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/IIJm6VoRI0U= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102021 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EoPJgwEu+nk= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102021 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/QkMcJXMmWzI= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102021 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/V8ZnoROux1w= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102021 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/idPh/GXSblo= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102021 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/spbnJG+aFgA= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102022 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/8yxf6z0EL3o= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102022 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/oW6Q8PsRCXY= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102022 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TjRw1SpIEjM= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102022 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J8LPtKYpJQk= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102022 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/at0vcmvuOSI= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102022 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/foMO37NT/S8= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102022 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/iYx2usAfinw= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102022 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/f2CohA638Vc= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102022 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TgxoxeZq+0g= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102022 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Nr0DBJ4BOjo= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102023 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VyedrC5XmkE= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102023 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/oIqF04EnjUc= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102023 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/7NWB+iBVx2c= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102023 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/iczMZBFKW3Y= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102023 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/xj6KGd4fcns= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102023 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VTp1TdRi9iI= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102023 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/rdTKQWrVPAs= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102023 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/yPqD1SKbARE= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102023 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/qNqwAW5y3S0= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102023 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/0Yo4ZTl/DGs= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102100 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/7nIlnkGje3g= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102100 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/b/VRSdo/aQM= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102100 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/tMm7TeW6XQA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102100 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/AppWYHaBx2Y= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102100 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/30cZQDANsBg= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102100 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/kX0ref+A0W4= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102100 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OoU+B8dWqm0= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102100 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/WRYriQJyTUM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102100 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/n1IcNnu65kY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102100 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/lqA3l7+KIRY= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102101 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KQOD8Qhk3is= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102101 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/smdh3btULV8= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102101 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/MIH2jJi76nU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102101 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/1PcGG/IkhT8= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102101 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/aKCbDT3JSFc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102101 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/UCfZ21glVn0= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102101 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/HC1S48bcwjs= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102101 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KBPs2jD48VE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102101 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/MwXhswRMUSA= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102101 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/gnNMgYOL7Rg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102102 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/O8dAsCXIKC0= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102102 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/M0oA16y/gjA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102102 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/xQ2waxZVZk4= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102102 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/vec2eXrLVUw= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102102 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/BgB1PAyQ+QI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102102 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/22skqX11ejg= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102102 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Bbzv/dtX+H4= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102102 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/3mYQg9vnanI= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102102 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TRBbZOhYx0M= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102102 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/cADvKAYoPSY= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102103 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/raZ0GMc6GF4= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102103 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/NI85+6J9Ujs= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102103 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/qPEICzNY1HM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102103 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/IwXov6YK4x0= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102103 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/FItrMoypwFQ= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102103 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/xfdH8ii6VmY= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102103 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/1IWYzQqNN0o= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102103 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/YVbQlOnlfz8= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102103 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9hBrz/Ry1Ak= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102103 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PbTUcvl3a2E= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102104 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/u8eEQHjGw2Q= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102104 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//f/9lNvuKEI= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102104 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/8ufLAsPSKlU= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102104 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/speBcvdbWFI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102104 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/qzPfq5w38VQ= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102104 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/MtAOFdDyhUI= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102104 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/HyBjdsXewSc= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102104 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Aqntx/IvjVQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102104 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/puJZa9vwAxM= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102104 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Et0ZgfIdTRU= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102105 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/YT6SikvL4HA= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102105 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/CBHfVS3OIWE= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102105 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TeSJWzWZJUo= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102105 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/sl9x/1TsDGg= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102105 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/loPwI1mulCI= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102105 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VXC8cWMmvUU= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102105 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/meG+k+K+2iY= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102105 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PSLsEfRKhVQ= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102105 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/xFkYjLmq4go= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102105 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/sG28ezvw9B4= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102106 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/u7Iew7N6VhE= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102106 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jRK/FWgeGGA= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102106 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/K9VbMl87IhI= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102106 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9mVpa8Jp9T0= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102106 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/+IIQT40pBEU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102106 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/QEjV9mwblis= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102106 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/HAREADcAmjM= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102106 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/xRNSdYCOjDQ= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102106 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/2p7Kz8IVyFk= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102106 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/mQtkX9wT8FM= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102107 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Sg996n2ujAU= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102107 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/M+cgc82wago= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102107 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+ijkb1qVWkU= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102107 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/DHQX/ZFYbRo= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102107 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/yK5snZdgeE0= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102107 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/OW2HBPfeizc= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102107 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/p7NOKwEsmhQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102107 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/LaTIRPBJr3Y= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102107 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/baTMwzeSEwk= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102107 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/SZnBtl8vJVQ= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102108 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Y+Jp8fVoV0Q= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102108 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/L4crmkyNYiE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102108 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/7zVuLsqdigg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102108 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Sn2YunqkY24= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102108 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/qz8LM+wpZjc= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102108 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/lONDKIk5YCI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102108 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/HgZu+HJD8QQ= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102108 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/5Ci4GKPYMgg= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102108 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/0m+JD4989zU= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102108 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Ac+JpJXxmEA= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102109 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/5QjAxsfUIV4= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102109 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/hKd9Mn3AN0g= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102109 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jjYyq0zvCA8= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102109 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/fB2eXq7uImw= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102109 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7bSZCgU3O2Q= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102109 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/1oJ/sAyamB0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102109 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/z7HtrjTyc3I= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102109 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/rh8AHFJHE2Q= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102109 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/YCxIz1E7c3I= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102109 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/nFxzT42c5g0= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102110 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gddXIuUKWUs= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102110 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/h0JZwasZG0o= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102110 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RoQCodTAWw8= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102110 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/HRGR0uUAdiw= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102110 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/i7hZrUxnjG0= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102110 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NxcALOHKVDY= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102110 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/4v0T98rF+j8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102110 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//NzlARfB8Vc= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102110 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/f6SEWDwU32A= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102110 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Fi/7SYNtOVI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102111 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/o+koQ0maC0k= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102111 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jLvtij91vAA= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102111 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/t9VWsHGeQmQ= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102111 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/FE2ttvzLTDY= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102111 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ridfXKT1/g0= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102111 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/MtbeKuW3rDw= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102111 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/2An3LGjVLxw= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102111 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/xLPzAF186Xg= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102111 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//ZF5ZgQWQjQ= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102111 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/XKBIDJH7mUE= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102112 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/JVQtQk+bKTg= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102112 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o+koQ0maC0k= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102112 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/a450Qz11tnM= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102112 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PzjlfNzqQC4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102112 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/uTsQt/wsSCM= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102112 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/2rY5qv3rRy0= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102112 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/CXzSLQRuAn8= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102112 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/E0U2q03HnD8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102112 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/bDQoz6tSNC8= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102112 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/aDBTShjR10c= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102113 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/5c4H0CB5tho= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102113 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/y1MngQbDbAY= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102113 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/fEnEDvjnGBk= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102113 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/rRLRjFMj8VU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102113 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ZWg/P3QxGyc= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102113 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/1M6z/ccs02E= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102113 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/8S36XOx7E0k= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102113 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/FzBokozQqEM= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102113 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/nuhpGgh6zH8= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102113 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pwL1ch+pT1Q= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102114 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/tyOi8d3DDRA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102114 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/S6MYjB4TJmI= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102114 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OZKiPUpi7FE= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102114 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/7doyDQ5COBk= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102114 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Zloe4v4gRU0= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102114 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/25B1OfcTYHM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102114 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/zJAQLJILLwo= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102114 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/mnSZ56CBYlo= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102114 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/B0diYOd/ohk= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102114 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ZTger/JpxCo= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102115 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/JFNCc4nEtn8= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102115 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/k5QzzGwR6jk= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102115 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/SliWyHmcySM= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102115 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/8RJDrFP5BUk= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102115 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l5XndaVgeE0= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102115 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/sVc3EMYaEzo= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102115 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Ea+W8vFnTnA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102115 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/N0phsYJ4Q34= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102115 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/7v2H8vBWLX8= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102115 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/pcrlExqMQgM= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102116 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ca+7ibSIfFE= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102116 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/UlC/V1jQWmw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102116 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HCJi3Jxwu2M= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102116 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/mrTkeKSnvgw= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102116 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/uZ3VrKQVwDw= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102116 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/LHds0YHyyS4= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102116 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/x3XuZ+6TSjo= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102116 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/6qVpgbm9nEQ= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102116 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/WPGtOO6GySY= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102116 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jwRbv6kfT1c= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102117 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/YEaPWhL7Axs= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102117 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/g/prwWporXU= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102117 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ud1fqbgAqiQ= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102117 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EY8wWZQZwW4= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102117 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c1kBbAy9exQ= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102117 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Xc1bwRX3PyY= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102117 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/jYzlG9lC+Bk= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102117 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/WaRJHyU0sVE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102117 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/uGAkicHPRx4= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102117 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Hi8+ou2x1F0= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102118 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dTXg2720Gwo= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102118 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/sZq9XYVwhG8= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102118 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ant7JLHeyUE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102118 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Ju/5D+TAqgc= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102118 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Lfxtn3rLa0E= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102118 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/AGdn0OGI22w= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102118 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/kXm3oSGplyA= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102118 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/B3/V4iQBKAQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102118 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/NFkqONxcYAY= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102118 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9//6Cgj0OxwTg= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102119 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/plToNfKBSX0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102119 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//HqgUP+5Fmo= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102119 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/SMPzsyfCinU= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102119 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/JCDSQg+TV28= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102119 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/3jnOvTOaHRw= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102119 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ybFzUWooGBs= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102119 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/sLUKGdoFWWc= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102119 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dNl9P7yGIiA= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102119 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/aUO+poG4j1c= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102119 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/QvlGrtjYsgU= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102120 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/90+glfIqCV0= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102120 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/LPidDpsycAQ= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102120 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/s47m89Q/ihQ= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102120 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/vLDKX9TgynI= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102120 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/magcVfa8BXw= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102120 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/p2FBDGzqaCg= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102120 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/luy+clrT1hY= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102120 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9eo7MsYQrnE= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102120 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/JbOLfNPPl1w= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102120 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/1GvnpUamJ1k= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102121 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/6eeD/7JAm0k= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102121 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/8iW7CKnUh2s= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102121 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ROXqJgIgTGY= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102121 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//A90YB2tiX0= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102121 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ibO8gmKwnVo= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102121 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/WFZklygF8Ag= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102121 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/WFMVBTwtUFM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102121 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/b7A2Figzw38= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102121 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/rspUSPwrwxY= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102121 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/NReLKz/rdDE= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102122 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Cuix/DlO12I= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102122 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/fhvjmosVt0A= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102122 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/7Rc+p2kSW10= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102122 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/HfS2qeCZl0g= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102122 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/cyp+QjyYdQc= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102122 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PNXxCrkinV0= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102122 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/JDpXx1+1OUg= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102122 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/76EoHFeb+Q8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102122 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/iJbBGpI4I1s= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102122 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/a7k2pWfVcG8= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102123 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/M4h2G2uULzk= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102123 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/xe+c/57YB0c= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102123 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/g6wKEzJZxSE= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102123 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/f7E/Uoc2iFA= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102123 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Xc1bwRX3PyY= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102123 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//TelFFXedRM= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102123 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/upvGSurrHjw= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102123 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/buwV/ryLzDw= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102123 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VO0lgkZFJCA= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102123 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2juIINsV9Es= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102200 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//3Vy4laswlU= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102200 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/CzRzjyGOeRE= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102200 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/uDt//0xQaGU= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102200 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/h63ABryNBwA= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102200 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/m+N3vXPukik= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102200 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VHb5nneCkHs= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102200 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ConRc3/LaF8= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102200 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bHS3f7zGfVk= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102200 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/+p9kbAmvwhs= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102200 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/8qq509jULBU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102201 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wD+AFnf45Es= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102201 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/xkFIGQs+JWQ= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102201 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ktdHAKZ55yY= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102201 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NMUzCqLkfjg= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102201 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/5VmoGbanm1g= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102201 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wXorZMD9Dz4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102201 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/N09iWDS0yHc= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102201 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/jLXedmLT90g= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102201 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/mE6zo06AsG4= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102201 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/573Dk+S8AxY= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102202 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jeAakLstq1w= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102202 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/uW9fQbTKom4= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102202 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/iYO4W3zhZAw= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102202 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/85t+StVIawg= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102202 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PtcMltBBoWo= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102202 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/yz+X5UT4VmE= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102202 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9tL4W0NComs= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102202 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/XD9bK56omE4= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102202 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/VjXHqAK5K3c= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102202 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Mz54gtWHqDs= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102203 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/35OMNbBZKE8= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102203 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/3ZpOvYB09UM= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102203 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ckRqUtlrX0c= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102203 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/bQy1rac1Y28= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102203 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/1olJQwYaVTo= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102203 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/s/l1LCpDr28= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102203 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/o1yCfMSIh0k= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102203 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/e/9ULlVvhUs= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102203 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/6KAxLZKFKgc= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102203 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BeI4VpNIrWM= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102204 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/E0faEuC6ohc= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102204 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kZkhd+FgbgQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102204 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Rvng8Rip008= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102204 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VO0lgkZFJCA= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102204 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/CuGbgBdb4W8= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102204 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/m9DPR7iYCjg= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102204 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/9Vm1GXmW+Fw= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102204 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/lEJeHcpOXVg= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102204 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/rgcfw/xM7jQ= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102204 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/LMyszIy0CTw= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102205 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/HY0phf3NGRs= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102205 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/xIbv9HfuORY= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102205 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/VazWuFUxQAc= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102205 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/x5XOg3kczkY= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102205 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/jv/nl1THgSk= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102205 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/CBXmkG2HNgk= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102205 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Sjt26wsdFxs= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102205 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/gRBBfRdGlFs= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102205 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wbLFw9aKk1g= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102205 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ttepKTpirGw= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102206 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/r0vDSL83MBM= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102206 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/p/nv5UT0hkk= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102206 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/a8cQHjQn4Uw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102206 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/iZLsYKXlWRY= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102206 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iYx2usAfinw= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102206 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/b2ZCkD5vYEI= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102206 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5Ziw1150WXg= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102206 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/d56HL9YLqlc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102206 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/JdCQlOgnOB8= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102206 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4K6K0tY8+SI= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102207 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/iw9xznQf4wY= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102207 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4hwedfQt9zU= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102207 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/LDoNv5I95y4= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102207 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/7Rc+p2kSW10= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102207 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tQoxUa1Q/1c= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102207 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/17XZka/CIR8= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102207 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/zEnYzu8SRx4= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102207 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VgCdLbu87mQ= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102207 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/6Hv+grNg3zs= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102207 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/735qVCCJxyw= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102208 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/H0ijvPz6+3E= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102208 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/IaJMtYMjjk8= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102208 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/baTMwzeSEwk= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102208 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/787Ufc5ex2Q= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102208 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/iHKaL4Sju0k= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102208 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ExQKL/chimU= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102208 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NRI8kaIAtU0= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102208 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iwbIOkwROSU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102208 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VKM55Ek7Exs= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102208 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PnOKntFwLik= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102209 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Sg996n2ujAU= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102209 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Y+gHLXSnog0= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102209 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/JubYeWrzJyY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102209 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/vFXIZ5ke40c= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102209 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/VUQGmMvvPW0= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102209 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/xdynHKSsXRY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102209 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NQYR3qcovzU= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102209 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//zIvankEVVU= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102209 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Q2KkOar241Q= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102209 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/f7E/Uoc2iFA= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102210 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/X+dVfCX6Vzw= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102210 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/jOh8YzazNhM= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102210 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GeegbsgnuAs= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102210 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/JMMm5peCPn0= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102210 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Kn9qEuNPbVo= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102210 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/zvW2Nu+P/GM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102210 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/MxM4scqVSQo= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102210 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//CgB3TYfoGk= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102210 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GZBnS+LrPGM= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102210 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ArMIGEgnilw= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102211 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/rzuwQN7xVE8= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102211 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/OOmHQutBMGY= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102211 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TI61zESVXF0= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102211 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/JCbxT6OntmI= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102211 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/YDFKn8ZekVs= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102211 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/rqNir7nAqW0= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102211 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/atikuFlf5TY= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102211 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/CAU1vHeQgzY= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102211 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/m9FkryhpjAk= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102211 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/aA4MS1+p4RI= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102212 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/oGnwt+dIPG8= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102212 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/HyuJVE4MJ3g= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102212 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/I7kJ1Z7qfwM= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102212 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/hffhORdxA18= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102212 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/E/rMK0OiiEk= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102212 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/QcSXX59v5Xs= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102212 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fmPNGzDzWiw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102212 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/U0ktfeh9cjY= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102212 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/tLVTThjk9FY= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102212 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/j4c8ynl5/y8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102213 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/D2naXAn7vwQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102213 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/pKCq6iEhaFw= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102213 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/XJXzdyS8Xiw= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102213 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Nt0NkMl3Zxg= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102213 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/rpYjpmIn7m0= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102213 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/akMN3tflpwY= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102213 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/3mYQg9vnanI= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102213 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/gWhLKPVERRM= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102213 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PK+GYbOXtgw= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102213 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/IM/zNxranyM= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102214 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/3ie4HjDSHis= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102214 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/i05cUWnL53Q= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102214 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/xxuNWa7xEVA= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102214 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/S0tOPWnjUjU= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102214 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/oi/1fC4SsxA= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102214 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/d9ACNaRq3FY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102214 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/F9+i2d56NRg= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102214 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/azbfNSNQI24= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102214 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/x875GnUtdho= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102214 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PHDRoNQSWEY= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102215 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BseSel04Xm8= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102215 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GXnHj++I1k0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102215 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/62NERFGS4kc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102215 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/XXIhNLwBiBc= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102215 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7C7TiIks/m8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102215 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/cTZgUo4SKws= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102215 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/aDagEhDiTC4= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102215 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RsLFHx1NnEU= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102215 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/OtS11a0R2yM= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102215 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GIDdnNgbvVs= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102216 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/b6b4TwPTMXk= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102216 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PMCIqNdEn3M= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102216 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/d6TjdLZjFxQ= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102216 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/zEnYzu8SRx4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102216 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//TST8DhtMV0= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102216 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/izGTGDjoZFU= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102216 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/zfrL9DQM+mc= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102216 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gFX0VaKAeAI= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102216 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/S992/oa96S8= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102216 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/lqYS9tV4H3U= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102217 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/M1abvU6O3UI= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102217 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/TORIE4TcKWU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102217 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cbzvStM6rUA= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102217 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/a0wRaZUiBm4= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102217 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/YG7d2biwMB8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102217 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ExQKL/chimU= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102217 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/OgMpXLxOeE4= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102217 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/hfJr3nBPSB8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102217 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/FqlB1TKDdmY= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102217 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Q5ugxbb1FFc= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102218 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/sDliSlr6y3M= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102218 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Lyi2dla3UDU= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102218 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/73TLLzAS4ys= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102218 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/5eDShs+2ySw= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102218 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/H5MoYeZ8iHY= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102218 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/1IK0VBz652A= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102218 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/CQ+WCzvhrHU= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102218 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/WCLBFKTK5Hs= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102218 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/rUHMDAk55j4= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102218 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9su33S7omUw= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102219 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TR1nTn+CKFQ= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102219 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DdVwW1TKoS8= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102219 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/s2/CrrdTgRo= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102219 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/eTumWV9ONwU= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102219 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/aJ2FYV8/m3s= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102219 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/IcnsBv1WBCU= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102219 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Ncypc2UgnCo= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102219 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/7azpDk/X4kQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102219 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/qoKahZQZMng= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102219 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/b1b3CC5EcwE= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102220 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/lO3LfV0jOgE= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102220 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/mQclEF6C7zM= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102220 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/y+rDKsTpGjA= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102220 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h84TvlaxTBo= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102220 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/uXj0bxCRVR8= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102220 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TkadcqybtXw= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102220 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/60YW0tKbryg= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102220 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/6tQpC5MYenQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102220 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/XFVSgHPazD0= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102220 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/vSejYJ4W2CA= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102221 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/8KNmW+Zq2D4= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102221 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/L8YY1Um00kM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102221 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/fS5XrVqFgTA= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102221 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/eAn8BJJMeWo= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102221 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/26zgscfWDXo= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102221 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/nT4lq038CxQ= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102221 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/15ZjMyNO2A0= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102221 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/uFHSG8MeTk0= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102221 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tCv31/N8LUc= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102221 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/spbnJG+aFgA= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102222 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/aFJtKWZ/sAQ= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102222 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/uf3CbQyOl1M= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102222 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/S6MYjB4TJmI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102222 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/idGibFqc12U= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102222 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9//TOkcujtDhc= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102222 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NxBhJ1Wl6nY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102222 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FBIPuZzSeCQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102222 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NyK9FE6hGhg= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102222 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PZHiLpbciBg= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102222 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/skiNbUCPiCw= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102223 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/KT4w2+oiKmU= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102223 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/zea2eYmb3U8= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102223 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/gBbNQWl14yE= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102223 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/iN36dGCtdW8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102223 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/vfYn3/immiA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102223 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/2yZvQZ1FJgs= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102223 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/zpnmp63grhw= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102223 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/10e/Xbimpng= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102223 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/5I+SPG9jyVc= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102223 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/t3XMIOdkd2w= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102300 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/5Lb2EDZZSko= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102300 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/EuA7iasMjBc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102300 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jf72odbmwV8= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102300 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9Vm1GXmW+Fw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102300 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/wb7IRcKJPls= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102300 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3pPmHUWuLXs= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102300 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/a7p7cZxrClI= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102300 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Y9W3RiXtWBE= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102300 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/JLJWxUAjM3M= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102300 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dKi+4wmQKQg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102301 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ovPw7CRUYHw= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102301 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/+0s00yblOl4= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102301 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/rgmZ9E3GGBE= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102301 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/eVukUy1In2o= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102301 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/W2ohDhfTkwQ= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102301 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/MIH2jJi76nU= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102301 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/AuJBnIcWNhY= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102301 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Im2APXA61AY= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102301 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jmChtm+zA1U= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102301 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/xpSyiqYESBA= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102302 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ldio7MH75VI= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102302 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/S5Y7xafHGlM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102302 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DHup2QUlbxk= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102302 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/HbCIy+WB8V4= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102302 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/vpxBKUshIXE= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102302 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/R/R87JPsbzg= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102302 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/A8z2GOGAfHU= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102302 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ausn4yp9xlM= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102302 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NnO/8NdTg1E= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102302 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wZixDuyHbmg= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102303 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/uUxFk0n/wVc= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102303 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/60YW0tKbryg= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102303 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/WcCAA02VfyM= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102303 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ZQlq3BkkVkU= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102303 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/j4r4v4e0uWA= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102303 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/vu1NAfekLnE= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102303 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/IG+T84wVnTg= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102303 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ChdLbmvCPQ8= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102303 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ujpDS0MeoR4= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102303 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/k5qFeIJxqDU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102304 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/XR64le8uszc= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102304 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kBI/r2YQ5TI= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102304 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/8u6761dMd0o= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102304 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/xVnIvcM63Uk= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102304 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wKk8PlXz2To= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102304 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/20REVvQQgBU= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102304 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/FdP0YhuHnD0= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102304 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/HHxVo7li7l4= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102304 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kpI0s4kPNlI= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102304 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/UD6i6gf/iAI= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102305 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/L8sP46WoeTo= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102305 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Mylw39K6PmQ= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102305 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/cYXmF5b6jCI= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102305 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pWLFNs0sGGw= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102305 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/8lrKkjilpQg= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102305 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/difz4OuSmmw= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102305 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/mHXglwjp9nM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102305 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J9HB/EnJ1E0= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102305 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/nmYSN57Nei8= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102305 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/lE97+rNNcVo= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102306 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/vUNYYhnz3VM= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102306 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wQCbYffDURA= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102306 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o7i8nGUz/Ww= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102306 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/p3s3O8pQTxk= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102306 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/E0MJDxed5wU= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102306 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NvzoroIJlho= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102306 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/HzXacbeyQUM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102306 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/e4Km+/4h3U4= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102306 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/6YVGT/rGrk8= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102306 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/6xnHnIgTX1s= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102307 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/6FEdK3bmBBI= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102307 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/GLBx/kxq23g= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102307 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/E5N8lI1hW14= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102307 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/CBXmkG2HNgk= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102307 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VazWuFUxQAc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102307 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/lNENWUoyYQ0= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102307 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wuzl0/Veiwg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102307 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/XbhS2KdIXDA= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102307 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/EZ0PBS9Ur20= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102307 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jT+YRY21CGA= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102308 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/GXyI320myxY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102308 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/i+mJ5xhignI= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102308 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/uKanK4YIgVk= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102308 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9OuU2gwqh3w= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102308 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jusfZfMvvDQ= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102308 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/3bSbTcBCrV4= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102308 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/OHfIVh4zuzA= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102308 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/pzAmGBpiqU8= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102308 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/yRBaIN4t2Bw= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102308 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/bqtOOY1nl0c= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102309 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wRlTrvGOmnk= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102309 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/DZQWfIbeD2Q= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102309 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9FZyBS45JUY= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102309 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PMPYzVUgPio= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102309 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/e0AhmWWYdWw= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102309 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//qPj0oRTEGg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102309 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RUcSrkGPijI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102309 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/OForEbxcjSk= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102309 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/s5BDe5qH5Gg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102309 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/aUGAU/EYths= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102310 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/gb4U2z/EuTA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102310 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/fjtrocsDxwI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102310 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kSHNde6aZiI= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102310 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/U8SxzTcJYyg= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102310 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/+WXq5LZBrB8= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102310 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/oO0wJPenb2I= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102310 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/SUFMO3CWZFQ= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102310 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/U+8z0Uz9Ejg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102310 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/K3anmAfw+nE= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102310 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/tjstetpt50Q= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102311 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/hFFQ8lf5DC4= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102311 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/THR2uBr7z3Q= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102311 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/95ajNy9dgz4= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102311 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/r75EoMqZvRg= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102311 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/BOrbVSPLpV8= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102311 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/uUCbqGlTpks= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102311 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FTcY9VdK3xo= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102311 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/9frpsYB6Bhg= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102311 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/zuPOX/zPJy0= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102311 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/S6Y3oTecsX0= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102312 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/YG7d2biwMB8= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102312 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/bnafkZ2ioEM= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102312 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/c3F10XIpbAg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102312 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/nwUmQPpdVi0= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102312 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/QbtXn1yT2Tg= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102312 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/eOy2VgwLPSQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102312 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/hq+WYsTZCDE= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102312 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/fWEo9uNkzW0= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102312 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/OMO3e6rdv2c= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102312 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/q1kcj+BcKWE= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102313 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/lnzcMfhGlDQ= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102313 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ajuV0hZ69TU= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102313 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/A5fJjT656Ag= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102313 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/94l7A5Z10wg= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102313 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9kA3mAtwejE= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102313 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//L5vCqDS0Rg= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102313 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/HZhEN96Eexg= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102313 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/lq+Wy6ZWZj0= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102313 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/P77IL6B9wCE= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102313 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/HamgqeMPxxU= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102314 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/rsUckMFDJXI= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102314 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/S5z1m0RlNS4= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102314 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/7WJuz+bKDhc= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102314 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/scbhF1AsI3c= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102314 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KAkhBuZHVjA= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102314 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/VgCdLbu87mQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102314 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/5KOnRDI9Al8= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102314 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SvMGix/Ya34= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102314 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/WibKhbQvvCM= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102314 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/dJn9jHUOpTg= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102315 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/+Ai2i0nUrXo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102315 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/hud9+ZPQ/Vk= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102315 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/mOLDv4NA/xs= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102315 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/qnZSpcT7Z2I= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102315 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iwHmvgKHSgA= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102315 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/OAmhe6WEn0A= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102315 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/F7y7u0nO4ic= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102315 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/5J1jLgI0fic= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102315 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/L4a1aYGMllo= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102315 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tj48ONmHdlQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102316 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/dYmMKSs/ZXA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102316 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/YmEDHyfmzh8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102316 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FRBZI/epwko= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102316 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/6I2w1v/YG1E= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102316 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/c51tbWM8aWg= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102316 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/3FMQkqQ4RmE= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102316 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/WUrMQYweFgA= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102316 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/qXyohSwaNw8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102316 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/6vKyF/YUzHg= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102316 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/um7+4qpgkjE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102317 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//6kfuMeILUc= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102317 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/G1OXBFyhWzo= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102317 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/JRCk6ZZQGBg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102317 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/7iSwHLHHjSE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102317 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/osAY/2SMTRI= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102317 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wRlTrvGOmnk= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102317 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/s/BWbzMUIA4= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102317 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BhttbWkBmws= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102317 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/t6VNHM7MrFw= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102317 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/f+vt/sYNWW0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102318 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/TBv36L6iolI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102318 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gce6X5dBb2c= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102318 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//zfj0in8z1c= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102318 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/27lOGYAKjWE= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102318 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/XH8eEaHS4iY= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102318 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/E8nFkXQGpRk= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102318 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/tXoZ6+Hh7S4= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102318 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/hKsSZECOqUw= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102318 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/NF43guoaMBk= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102318 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/knmCaftT4X8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102319 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/rpe4RGwesTE= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102319 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/TO/dFCMjKzI= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102319 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8bfCEfaXkUw= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102319 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/cdtu/U62bHY= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102319 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VlV39FGfBA4= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102319 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/McgZxI+AVBE= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102319 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9zjnQv4nCVU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102319 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/6tNiVVfMWTE= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102319 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/xB+eHto6oCM= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102319 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/K5g4ybfm2zc= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102320 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Lbo+XmdHPz0= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102320 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Wiwu6gukLx4= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102320 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kl8Jk+MgFSc= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102320 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Nn7RaNBjb2s= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102320 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//bu/wCPSITg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102320 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OfLdCN5mgDE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102320 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/sg3haRfrYgc= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102320 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/qZijnq3tBQk= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102320 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/QCMHEdBmDDM= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102320 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/uQmHqp8Scno= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102321 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/G0XUS+I0HGM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102321 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/poafNgduXWw= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102321 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/0wBOjyOVsWM= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102321 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Y4tLq1Y25Fw= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102321 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cn+A3wnwTjE= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102321 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Q9ls32MxTWY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102321 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DPJvh0LfxmI= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102321 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/HiLBY/ShRX8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102321 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/o5g01FrRD10= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102321 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/1DuoHG/exgY= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102322 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/bbf5AwpLuVI= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102322 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Pq7WsHomlhk= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102322 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/01ANdzdR3nY= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102322 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/qAAhE7W71CU= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102322 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/OuA/ndIXzD8= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102322 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pB4AH8TCtEc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102322 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8WEzjtEphXg= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102322 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/gI7Gz1Z8ByM= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102322 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SRt2ShngoTo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102322 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/1/+Xb0JTY1s= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102323 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/bL3//ToZrT8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102323 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/D6sbR/X+j2Q= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102323 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PprvQhYISi8= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102323 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/j8190fZefHM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102323 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/LzgfBaC47V0= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102323 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/6yZKQ+Mi9Go= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102323 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/T4PnFB/KjVw= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102323 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/hNH87NR9Jiw= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102323 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/GUnY0tMX/3s= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102323 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/02DAx9vfIhU= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102400 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/573Dk+S8AxY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102400 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DoGgxwfG70A= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102400 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/d1CMgaiZBQc= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102400 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/t3MtJ3Wo4FE= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102400 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/MoEUQALMU3E= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102400 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/xUtgGZ22y14= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102400 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jTrAwbx6hQU= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102400 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4gej9ywykRY= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102400 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/MMFF4+LQzEg= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102400 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/9/b3R0vNoXg= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102401 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/obL4EbgqzhE= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102401 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Dd9I5uKwRRM= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102401 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/8RYkM2mR0zU= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102401 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/icfti7OZBTM= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102401 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/JfC1TrUG3Es= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102401 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/LsbRPuxoYgA= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102401 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/sUBqVMuZfDI= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102401 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NTDy9LwmiAg= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102401 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BwJY4NMRl14= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102401 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//ZTuj7ILMQ8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102402 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/sKVjRuEx+U0= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102402 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2oEBjEenaiQ= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102402 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DkHw8dD/PwE= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102402 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/iDtuiEMGzDg= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102402 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/yZUHISVxMy8= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102402 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Qd2Uiq2D/gY= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102402 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/YGSm/7Un1H0= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102402 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/5Gv2TxwJUT8= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102402 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/qX4PmI0CaAs= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102402 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Ktplzo/RC2w= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102403 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/1XTXYa6kZyU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102403 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/qeuf/C86RRI= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102403 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/rXk54CNFpUo= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102403 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4HVu2wjSTlU= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102403 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ln2gUPb6IXk= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102403 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/95liMtBPMFw= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102403 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/MR6e9sHe7TY= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102403 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/MXTZEyYwEAE= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102403 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/e5qA4zsJgCE= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102403 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ed0oSr1+jmo= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102404 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/g6GGioErymQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102404 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/QNWkjuzRrXE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102404 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Y2lZhpTodF0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102404 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/LEwK4AF/RAg= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102404 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Ed2DxmBqJn0= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102404 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bkmgZGowZEU= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102404 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/bhqUgHaXlk0= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102404 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Yh3a7xjRfUw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102404 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/UzZK8s/wgA4= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102404 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/OuA/ndIXzD8= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102405 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/M6YsbveQ/QQ= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102405 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/XEEANax4KDc= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102405 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pOrx6rHjfG8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102405 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cDQ/+FyTA3Q= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102405 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Fx47GsWRWBM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102405 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/3eDpvMiYZBI= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102405 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FOm5OFZ59Vo= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102405 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ECqGJTdZ/lw= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102405 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Xq64t1SgpT4= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102405 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/KKoPuoemtXY= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102406 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Qe1AVc77oU4= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102406 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/I1hC95UvpHM= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102406 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/4lUbIoYQq2M= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102406 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/e+O6W2MkjWA= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102406 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/yfHysgJomWU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102406 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/U+T8T9FL5jU= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102406 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J5A4ChepR0I= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102406 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ziQ/eLw4sjg= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102406 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ALwro6mkEy8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102406 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bLZXx5lhXQo= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102407 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/2bic3LP36Ac= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102407 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RL/MMZkXnzI= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102407 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wZixDuyHbmg= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102407 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/25J/ldIvKW8= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102407 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/WuAIkpdK/wg= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102407 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FoiGza8Hjlw= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102407 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/nZQDYsj6aiU= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102407 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/NFE1K/06/iM= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102407 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kLTkrY7EwAI= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102407 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/+df+AHL8jR8= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102408 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KBPs2jD48VE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102408 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RvxDrAnFwmo= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102408 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9GmjRz0n+y0= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102408 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KrrBY4pfDXc= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102408 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/klVUnaiaA3U= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102408 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/90uf4CEsghs= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102408 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/JRCk6ZZQGBg= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102408 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/qYItY0tu0Fg= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102408 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/s2/CrrdTgRo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102408 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/MIZ/pAFSkyM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102409 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Ii0aNz0y5HU= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102409 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/yzb/2VMYMTc= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102409 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/1brBfRKUMh4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102409 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/dFlq2YKfdE0= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102409 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/xmgv5hrWQQk= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102409 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/uRdCGQwF1Hg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102409 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/vSaDIrIAG1Q= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102409 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/vrwlSupsiDY= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102409 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/EIuBM2+DEzE= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102409 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FDAGaDMpfFQ= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102410 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/eb9Kfy8/7lE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102410 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/nxu1vk5uYCE= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102410 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/1kTzXe3LmVI= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102410 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/xqCXHnvHUlo= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102410 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/iUB4Rn/cgF4= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102410 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/M33QVSthZR8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102410 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/35UFDx7/oj8= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102410 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/rMLq3zytrgE= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102410 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TfY5Ov/BfBc= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102410 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SksUH8hlx3E= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102411 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OInP/rTAQiQ= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102411 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kG1tcaZJG2k= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102411 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/kFZ0mr9sFBk= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102411 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/aUSfPT3WCWs= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102411 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ngjmCTIlS0U= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102411 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/gBbNQWl14yE= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102411 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/HjryXeutVjY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102411 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/15Le+NGSslg= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102411 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9/b3R0vNoXg= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102411 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/gb4U2z/EuTA= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102412 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/aoCIcSFeORg= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102412 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/NZQQPNbPQ3Q= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102412 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/R74pFhujI1g= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102412 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/OZRR1uJIEEY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102412 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pvA2PWByCjM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102412 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/CwjYVO0CTy4= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102412 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/AaCRDNH0QxA= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102412 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h1SdgwG0ong= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102412 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/xUtgGZ22y14= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102412 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/0w1z2ubZ/GA= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102413 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Z7Bde5OIoHs= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102413 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/5PH9/yT0g00= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102413 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/r8f2Qsno0gI= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102413 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/xGMKqAl0hW8= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102413 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NnO/8NdTg1E= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102413 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/j2sEBoTo9H0= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102413 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/lzeXxsokUHE= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102413 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/qXSqIkaJ6y0= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102413 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/uhXig2l4a3Q= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102413 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/D1+E2tb9Uj4= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102414 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/XKBIDJH7mUE= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102414 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/MLNb1dLwYQQ= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102414 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/DLrCzClwvG8= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102414 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Vfv4RYz5MHE= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102414 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/UsCJ1lUsXks= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102414 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/YFfR73LpR0Y= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102414 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/p7NOKwEsmhQ= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102414 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2eziLrfpQ2k= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102414 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/7Ap4+pDY8Ss= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102414 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/a6asCY4lxCw= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102415 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/qskSK5ugEzE= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102415 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ujpDS0MeoR4= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102415 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/5gz+iy5jNV4= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102415 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/8977Rawotwc= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102415 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+Xpdlbs3EFI= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102415 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Bi2qLQuSjBs= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102415 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/kgHpM0ie9RY= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102415 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jMROFjhVckE= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102415 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/CjORYbO9rl8= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102415 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/3jnOvTOaHRw= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102416 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/aOTf/+9bcE0= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102416 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/6I9SLqmw6VE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102416 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/WZaD574fnx4= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102416 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/kN0j5LK8tAo= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102416 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/85YFeu/l9Ds= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102416 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/XE5MOcpxmzk= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102416 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/otz2rONLUiU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102416 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/zqxwohMwYQo= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102416 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Cft9WcDR9z0= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102416 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/gjFlfuaIIhQ= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102417 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/vCynq8GTcU4= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102417 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/WLSXAPgs4Hg= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102417 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/3FisV+hJ3yw= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102417 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5MZmFVt+wBQ= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102417 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/opyQ9jPRRzE= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102417 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EBv1Q3iQ7hY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102417 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/AbEmi9bYSgk= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102417 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NKBiB04Aywg= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102417 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EA03xnLO2y8= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102417 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/zLoopbJ2tB4= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102418 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/OAmhe6WEn0A= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102418 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/RTPdacS4/10= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102418 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/UyU/wNEk+yM= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102418 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/cvALpzOgIR8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102418 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wmZFI3+KyHM= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102418 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/vyGsOqWM7wo= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102418 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/FY8C8AEcCWM= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102418 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/QI0Uo9npvUI= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102418 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/23N5DADyclU= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102418 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/a0lNxRGeGyk= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102419 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jQRAE6BroTQ= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102419 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/zjH301hifGA= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102419 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/9+XOGyAl7ko= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102419 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/k1CN9BQy3Xw= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102419 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/YGSm/7Un1H0= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102419 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/iGifNhzbJCo= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102419 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/W+fi/QbYgCU= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102419 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/OyFbNFS8hVc= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102419 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/W43/BXyxhQE= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102419 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/2YulRUQXdUs= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102420 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/pA1KJXq2zTw= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102420 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/AG3UWluLMQ4= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102420 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/05vwCCW/wS0= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102420 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/JmDglvDA0RA= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102420 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/doRdr3CBth0= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102420 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GyKvctZeR2I= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102420 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/c6zpY5MdRTk= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102420 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/YiN4Kk1OZ3U= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102420 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/5ldsqOrP6n8= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102420 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/88LIRU7MXns= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102421 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PzzwhSerYUA= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102421 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/AppWYHaBx2Y= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102421 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/XcToaiyzWys= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102421 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RQkYtvHW4Dw= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102421 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/573Dk+S8AxY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102421 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9frpsYB6Bhg= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102421 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/G0RwFUktmW0= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102421 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/3PBw+sL7fQY= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102421 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/OMO3e6rdv2c= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102421 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/7izvWdkAAS4= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102422 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Idtw0SuA5HI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102422 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Q7u51zRC+QM= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102422 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/00dYSte8tkE= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102422 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NSsffQOaTyM= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102422 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/dd9kFtm0eQM= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102422 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/YK6VIkLJyF0= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102422 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/nXhHrNpCTWQ= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102422 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RRzfCKL4hXQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102422 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fWxy+/E1jT0= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102422 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/MPv7g6+x034= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102423 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/AaCRDNH0QxA= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102423 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/xi8pqIMAXXk= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102423 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Q20N+J6teRI= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102423 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/8k19pznZ/wo= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102423 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Wi2JM33bDhQ= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102423 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/GokS9STmmQ0= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102423 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/IrLhouDCeUs= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102423 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4FzKH1QopFc= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102423 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/eRHUCoYK01Y= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102423 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/+c3V0e8u7VY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102500 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jcrdezOa8FA= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102500 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/WRYriQJyTUM= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102500 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/11CCEMieHTg= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102500 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/n5oatIftLh8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102500 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5PIj9mXy/UY= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102500 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/nDmHzpBypEw= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102500 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//afAa6n8QR0= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102500 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/T49V8L76WGc= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102500 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TIy6r9s4uRg= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102500 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/p//SMlvyayM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102501 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9qA63aL5/wI= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102501 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/bU6EPMtqWCk= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102501 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/iNBCSjpRRFA= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102501 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FRBZI/epwko= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102501 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L+r3CDfS5Dc= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102501 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BaroYWrrg1A= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102501 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/1uky/6Buej0= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102501 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/CLMrAoEEIAk= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102501 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/BgQHfbRtVC0= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102501 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FtrokeiuyCo= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102502 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4+SSOAbEkEU= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102502 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/S0J0MaKb9Hc= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102502 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/539Uv6NtrBc= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102502 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DzqxhiNqjA8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102502 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5gz+iy5jNV4= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102502 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/O2uUX/QV5U4= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102502 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/SlWkZzoFigc= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102502 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/zooWa0z4wgE= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102502 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/RE4Iy8Mprkw= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102502 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ggzqcBRJXxI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102503 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bQs3vCjl4Fo= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102503 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/8Hk5YaDs/hE= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102503 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ZCEspYeZkgU= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102503 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/3NdkX6DO/0g= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102503 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/3NoeSBUc1B4= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102503 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Enw3YTKC9ks= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102503 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TgxoxeZq+0g= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102503 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/8KNmW+Zq2D4= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102503 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/waY7VfYGfSI= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102503 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/OApQkXsryBk= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102504 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/hEs0QW6T2Hc= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102504 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/iOpWhf+JfRA= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102504 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/nIixmg026H8= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102504 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/45MMwms8Z3M= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102504 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FPKUS7Olsh0= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102504 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VujnxauWJkw= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102504 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/P9Fsr7mXNF0= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102504 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Aq3hNd8t9mA= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102504 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/rHPMN43y+Ck= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102504 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/GOl37kPkAHg= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102505 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/TkMkrmRUwGo= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102505 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/u3Z7BfJKBD8= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102505 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/1o+X/xYO9x8= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102505 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/7Aw05ort+hU= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102505 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/lCADQOY0IlI= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102505 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/nXr90LwSdSM= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102505 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/HVLJSG5E6WE= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102505 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/CJf+Ub3BsAs= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102505 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1r+do89tUEk= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102505 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/HXGikpsHgjA= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102506 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/l1n54GaaY3U= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102506 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/zx0+4C3nrFU= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102506 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/5w+eNqEM6Ak= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102506 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/o5sj2rVMa1c= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102506 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PW350nGc1zU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102506 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Bi10H4biBys= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102506 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/O4OS07Oe/WY= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102506 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/+EzCrVaPYBs= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102506 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/g+VvSAXJ9g4= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102506 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/MMQ+fxkbmQo= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102507 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pC077IV9/Tk= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102507 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4b+zfkdQEB4= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102507 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Byhhh3BDHEo= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102507 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Sx/Ii9wOnns= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102507 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9goyxo8zils= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102507 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/epbB+Wu9hQM= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102507 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/z0/wEAk4fAY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102507 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/m79f/01sWjE= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102507 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/zT8O+rLOzR4= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102507 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/12X+jsG99lk= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102508 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/aZIHF3wiq3U= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102508 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/BELXZ2KdXXs= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102508 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/GFqS/Gdq3WA= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102508 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/P5YGiLNPLXs= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102508 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Op3Hst3w8Ss= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102508 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/aL2FBvXjzDA= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102508 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/fLgnz4y81lE= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102508 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/5qWdSQrhHV0= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102508 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/i4TJQOEIEzI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102508 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/NGt/07Ml2lM= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102509 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/kPxwy2jRXxg= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102509 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//G3TyX4EHyU= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102509 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/7C7TiIks/m8= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102509 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tWFZ6Lp1ZwI= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102509 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/aFEqwUztvXM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102509 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ydW/AH4Pu1U= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102509 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/S/c89sUKpBY= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102509 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jLPR8TQxtXY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102509 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/rUHMDAk55j4= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102509 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/PaMsfATLoRg= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102510 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/5T0w3QQGGho= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102510 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/em0CWkrGlgk= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102510 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/r8aCDRnAKAg= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102510 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/y4ezL/k/GA0= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102510 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/JAr5rsoe42M= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102510 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/oDvDE441mxs= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102510 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/AIM4dqPtAFA= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102510 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/6IH98Iz5wnY= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102510 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/LzE5Ob+YH2c= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102510 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9meDnZIMQSk= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102511 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/8bfCEfaXkUw= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102511 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/YOmU4NyzvFk= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102511 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/0ZldrjRXU0g= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102511 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/2pcBOIoMk0M= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102511 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/LBza5xZiwSE= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102511 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/n+KWq9cS7U4= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102511 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/VVO5++dfWiA= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102511 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/E4i5G1TNkys= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102511 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/XtEpJveM42M= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102511 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/vwb4La19zmc= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102512 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/lRUQIvzNmkQ= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102512 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FJebRhL7dXE= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102512 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/gBbNQWl14yE= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102512 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EcxNT/FwJGY= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102512 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wu0FvZ3cWHg= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102512 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/49Wq8LpA9lQ= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102512 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/3UNXSKWV6Ro= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102512 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/c+v3UTTXLno= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102512 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Kl15sBKGvwg= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102512 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/oWN/0z/AfW0= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102513 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/W04dhrurcQg= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102513 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/AHcKbemN+m4= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102513 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Me/kAvkSyyg= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102513 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/6A32Pv9wM0M= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102513 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+wLDXTg5plI= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102513 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iRKuQiXO9EI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102513 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jqJEiA7nHnM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102513 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/mBNbM9ygr2g= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102513 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/aqdOQ2L3qBA= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102513 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Bg0To9He+l8= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102514 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PX270LM4nH4= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102514 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NsoXEoSlqCM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102514 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/AhDV7AMXCEA= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102514 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ngXuPN7Ponk= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102514 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/BduevXWsu3A= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102514 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/uObiG+NgG3A= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102514 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/O+vMqEFUNiw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102514 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/aW520WVj1wE= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102514 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/k7eZIquQnBo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102514 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/w8T6sByD0CY= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102515 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jqJEiA7nHnM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102515 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Ehpti9DFKTE= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102515 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/tasbbzssrgI= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102515 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/kfSZqe0hsAQ= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102515 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/iz7xpV6x4RU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102515 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/FTcY9VdK3xo= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102515 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/M+m9sVnmujo= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102515 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/CxcU7rvEa3I= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102515 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wOx0RXpqQ0M= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102515 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1MRugQKdBRE= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102516 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BgG8Zysj3To= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102516 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/J5A4ChepR0I= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102516 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/fo0ZOfooiC4= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102516 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/m/7ZgBjaf1A= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102516 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9l1ineQypR0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102516 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/4e5NQlaheAQ= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102516 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/2ahDA/VraHs= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102516 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/bSRGFZiiMyQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102516 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/MPX2xd4uFmY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102516 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//rsZnB52z2o= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102517 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/S1MxHV/NpEw= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102517 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/YNQW5LXB9U4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102517 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/OstoFtBpDC8= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102517 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/UiofebRSeVU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102517 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jBSQORU8qi8= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102517 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GNQrUXLJPG0= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102517 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/9D6Ynbv7ojw= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102517 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OxO5Od/XiUA= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102517 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/XcToaiyzWys= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102517 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Zt3VdJ1jR3s= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102518 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/BuqQ9Yp8IUo= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102518 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/gYE7VgxALlE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102518 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VO0lgkZFJCA= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102518 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/qN7aZv4cdHI= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102518 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jKI8KXjozCU= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102518 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/vFOwzck6BBM= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102518 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jC1OfZ3i/nk= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102518 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/59jsd3D7awU= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102518 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/pKCq6iEhaFw= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102518 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/duvFAQ/HYic= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102519 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RR5ESCjWWDs= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102519 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ne97UK5trnw= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102519 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/5kBRgf77Mgw= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102519 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Kzl9jqLUMgQ= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102519 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/0jOeJMIdryc= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102519 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ELVmm70tETg= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102519 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/1q9nMvHLTnE= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102519 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/F8Bf7BH5cmQ= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102519 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/+df+AHL8jR8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102519 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/xRNSdYCOjDQ= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102520 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/vrwlSupsiDY= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102520 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/T8CZ6rs/jWY= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102520 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/5wJ5FCbHhns= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102520 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/atikuFlf5TY= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102520 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/DFBmCX0PyCw= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102520 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4R6+A+qNIS4= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102520 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/uQBB6qzuTWU= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102520 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/xd0TY3E+nUI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102520 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/O1Q3NA+cjjo= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102520 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/TP+9g9v/fVo= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102521 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Orq+ViiewWo= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102521 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/CvsVmDhvijw= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102521 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/e9u4LIR72X8= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102521 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/OoZQpZERaBs= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102521 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/o7i8nGUz/Ww= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102521 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/s5BDe5qH5Gg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102521 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/7m7+AIKjkRA= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102521 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/3tZv8NsRBiQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102521 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gpyqfMRZHTQ= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102521 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/7iOlyhnenG0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102522 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FC6Tbd/+Xhg= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102522 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/3UNXSKWV6Ro= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102522 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/O8dAsCXIKC0= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102522 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/1HM1ngEsZkM= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102522 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/qF755Iht/Uw= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102522 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/LNQYzoTj2yA= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102522 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/y0Hqvqbegh8= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102522 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/TR/2TGk4Qy4= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102522 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/mqR9QoLJKCQ= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102522 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//ZF5ZgQWQjQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102523 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/CBXmkG2HNgk= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102523 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/VTvL8WBNSws= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102523 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/4046GvUFgEc= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102523 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ydW/AH4Pu1U= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102523 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gpZ9rVJfsiQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102523 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/4bFkHIK9hU4= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102523 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/f12QtvyVWxM= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102523 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/y1QgNcbiNhA= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102523 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ydKtkLsPvhc= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102523 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/DS/dPzFuT0Y= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102600 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/m0ietvkFsi4= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102600 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Oi4HneX1B0M= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102600 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/p6QYo+hKank= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102600 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NQYR3qcovzU= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102600 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Q36YbF0Brwg= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102600 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/hlMnMMN11Hc= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102600 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/q1v2wADvlTU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102600 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/JCbxT6OntmI= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102600 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//KG/QeQlOHU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102600 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/2ADNGeb/Ljk= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102601 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wyawAuXQDiI= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102601 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/9CbB4ML03Vk= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102601 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/AupJsLomN3Q= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102601 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/gmJE36rsLz4= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102601 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/M+m9sVnmujo= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102601 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/151P1dI3l3U= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102601 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/M1s/X66RCRI= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102601 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/CHCpRIzE/BI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102601 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/2YulRUQXdUs= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102601 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/XzjqOuAE1ng= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102602 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/JYC3ohZvzEQ= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102602 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/gZzph2x1fXk= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102602 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//hMB15ATXnU= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102602 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/3oYSdGXXtCg= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102602 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/8tJtmzrGZAs= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102602 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/zlbev9Ew7hU= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102602 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/GO95JTkLQBg= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102602 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+xVPG0P3wwI= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102602 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/rNYSp5EpWTs= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102602 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PFOn6d/7nDk= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102603 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/zMcLB5GJjUg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102603 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/QCMHEdBmDDM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102603 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RCS/aKVvd1I= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102603 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/qzPfq5w38VQ= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102603 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BpebS5GNEFI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102603 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/zNg4l7Ry7QE= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102603 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pTobhHORESg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102603 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/JbOLfNPPl1w= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102603 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/0pjjImbp6U0= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102603 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/qv3nSgJ+Wlc= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102604 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/JeF1d3Y9GUc= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102604 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/3DSePgj8aBM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102604 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/qWPi7SkAIWY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102604 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9hTiMqPyEEM= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102604 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/eg4RxtsLPm0= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102604 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OcndxpAYvEA= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102604 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/mQclEF6C7zM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102604 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/sEu5cFlYJzQ= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102604 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/IKtoamReJRA= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102604 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ZOta9ekTIWk= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102605 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4Ha+37KKW3s= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102605 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/xNwsyRYKuwQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102605 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/HA0rCOD303E= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102605 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/a71dcnJ7SGw= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102605 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/7Aw05ort+hU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102605 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EtsTQll7CFw= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102605 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/aJECvwT+cUY= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102605 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J+nq0jC2nlw= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102605 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/GRJwAOVGiWs= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102605 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/CoHRImz7Yko= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102606 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/giMdHhndKBA= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102606 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/b3oE/gEl6Qg= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102606 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/zyiUpvxnxyg= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102606 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/OwgGqa1pJwo= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102606 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J9bqbKfspw8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102606 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/IM/zNxranyM= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102606 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/5m7bN4JrFU0= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102606 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ckRqUtlrX0c= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102606 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/iF3vI5xq1ms= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102606 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/kIP5UpMlWBk= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102607 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pXKOryGeWxQ= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102607 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/i4qp2brOEmQ= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102607 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/g8Kfv4WLFT8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102607 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/lfIdjlnl6Sk= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102607 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/kyRJFGXaaAo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102607 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/88IGI8k7pSU= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102607 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/S5z1m0RlNS4= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102607 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/MhrKLZaGYiQ= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102607 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gc8tig3SMT0= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102607 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/6R9GwjIoTko= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102608 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/OOZrbtENtGw= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102608 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//wrmYkrEIFI= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102608 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/JlPgJ+8wXEw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102608 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/RFeVuSoFGVY= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102608 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/2TKmbYuTzBA= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102608 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Oy14jqaedCE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102608 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/c2ZEj7FN9hY= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102608 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/xIbv9HfuORY= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102608 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/JjxYxjxzAlk= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102608 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/O4OS07Oe/WY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102609 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/yrjs7zWGYQ8= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102609 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KQU9RJ9bQX4= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102609 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/LVA5XN7ZmVg= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102609 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/W/74b8yNYwI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102609 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/xm0FWo7/F1Q= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102609 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/JwCdf3hIhVo= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102609 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/hqRO1luF1m0= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102609 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cmVIej2uEkM= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102609 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/e/9ULlVvhUs= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102609 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jxN/nYMrIQE= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102610 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/iHm9/hlsWkY= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102610 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/lnzcMfhGlDQ= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102610 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/p0VedthdGVM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102610 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/SY0/xbA5FhQ= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102610 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Y32CtWgnY10= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102610 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/x3XuZ+6TSjo= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102610 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/iAGkQbGGNB8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102610 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/+Oi+7u+BtCM= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102610 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NtJNhppFh1Q= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102610 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ai0Hzj/1B0g= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102611 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/rHjZg0Udszw= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102611 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/xDojGL1uhQg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102611 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/CQIoBvQtoms= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102611 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/R+5buO1r4j0= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102611 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/LEwK4AF/RAg= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102611 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J9HB/EnJ1E0= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102611 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/P78wXwOMC00= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102611 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/7aeE350A3RI= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102611 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Mi7/kgLuFwg= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102611 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fWEo9uNkzW0= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102612 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Q6DNk0m7+jo= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102612 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/qPEICzNY1HM= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102612 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/CHqdGL+V9SU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102612 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/MgqGIkozID4= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102612 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/k5qFeIJxqDU= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102612 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RL/MMZkXnzI= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102612 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/x875GnUtdho= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102612 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/fLtSWbXuPjM= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102612 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/6a23ifXeOg8= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102612 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/8+uDdnGoLVg= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102613 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/8VV9Ml5hERU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102613 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Wv8BvNHYo38= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102613 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2HwB2tDmMh0= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102613 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/CQlsiQ650Qo= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102613 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/gojtxli8XEg= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102613 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/PGZAfy8vrD4= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102613 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/vvASgvaZwwY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102613 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/y+rDKsTpGjA= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102613 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/O9rCrRIk3x0= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102613 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/2GNzSzMqwBk= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102614 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/qc+M67WHPhw= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102614 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/BDhwDkFCiUo= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102614 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/c3lMaibEsig= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102614 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GcZ1GjzWhj0= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102614 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VIVmL0MGWSU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102614 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/1gb6H5sRyUs= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102614 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/8bEpHXdODHs= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102614 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ocf15X8pIWA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102614 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/vyGsOqWM7wo= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102614 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/I8i7C3gGPyk= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102615 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/LLls3jIWc0Y= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102615 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/N2od1SLD9T0= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102615 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/p7+1s0lzJgw= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102615 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/tkuh97gfDD4= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102615 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/qnZSpcT7Z2I= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102615 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/qogV5ib/WiU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102615 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/qc+M67WHPhw= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102615 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/QJ/9v7xoGAQ= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102615 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pQxP1PISWT8= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102615 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/uuUPtSVYjy0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102616 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9K5P0MKcbCQ= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102616 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dcyMfBjvUig= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102616 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/QummCFQFcHY= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102616 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/saPM57mJZhQ= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102616 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/rMLq3zytrgE= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102616 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/rKweEUnrd3Y= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102616 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jIlVMu1t/F4= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102616 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/c1IG+mNRnl0= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102616 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/O2FFV5Fq1UU= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102616 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Rc7w2Nu+k1I= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102617 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/lC9Dskr+AS0= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102617 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/u6RqRnCjXyI= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102617 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/zyiUpvxnxyg= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102617 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GfnBsiI7fDY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102617 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//LLUwEi6Ohs= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102617 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/lzis391ZKDM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102617 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/6Ss2vgZi5BE= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102617 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/7nIlnkGje3g= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102617 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/WmMrwRlW7hQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102617 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/T2T0F/4yMlA= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102618 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/3kjlykqJ4Ak= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102618 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/SpravPTPDUU= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102618 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/1t8YdPl3LVs= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102618 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1R7XxABFKlQ= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102618 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/887KxGToq24= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102618 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/KY3FTxn8Kgc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102618 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//J43EG6CYXk= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102618 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/keaDwGC/11Y= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102618 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/1uLsNFfsPF8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102618 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/KaTZlP2kOAQ= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102619 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TR8puauvNjM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102619 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/yx3tOKaOinU= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102619 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/2a6I2HHm6Us= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102619 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/eA4dFnePBT4= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102619 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/c7W4dE6zzm4= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102619 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Wiwu6gukLx4= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102619 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/VLpm1wsdLWM= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102619 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RyAUUk/IEB0= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102619 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/SX/y317+fks= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102619 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/IKtoamReJRA= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102620 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/mrBwH+Q3Pi0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102620 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/osAY/2SMTRI= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102620 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NGt/07Ml2lM= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102620 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/+kEqURQsIkc= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102620 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gzlyGohXIQg= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102620 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/vtX1sT9XlCM= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102620 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/HIBgM+9iYnY= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102620 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NSsffQOaTyM= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102620 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EZ8Yt9Akm00= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102620 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/o7KGAvYmpQo= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102621 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/rVpHB2+pTmE= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102621 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/r+O1xnbgXSs= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102621 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/lIZi7ZWtEhg= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102621 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//qJD2ZABdGE= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102621 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/QNVnLyeSphE= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102621 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/WrpnFRSQYUg= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102621 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/U1Da6Z0gkGo= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102621 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pfKyGuWKe08= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102621 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/NGt/07Ml2lM= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102621 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/M+r/JDbJAik= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102622 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/lO03o11Ubwo= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102622 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/AA0TOPGO4Cw= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102622 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/A2g7zCXKWQI= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102622 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/7nCxmr+TZiE= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102622 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PhfGLesWhh4= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102622 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/IVOfdV3JG3g= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102622 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/iAGkQbGGNB8= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102622 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/KSahUvC8Gx8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102622 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/J9tKw1vi3VI= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102622 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/nujWe9s912k= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102623 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/AQ4T1UcK+n0= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102623 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/BnrKZM5qLSc= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102623 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//6kfuMeILUc= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102623 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/16Ayvne8VgA= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102623 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/tRizK/bpHQg= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102623 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/XJY6NewRfkU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102623 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/iSvRLikzgGI= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102623 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PmpMT6ZTB2U= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102623 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Yvjz8d2TLWc= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102623 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/W4xKx0FRpj0= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102700 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/5NlDZ77lVBI= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102700 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bKpWqSpHSCE= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102700 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DxXHJsoNhRM= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102700 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ml+GX+tO7Fc= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102700 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tO00Fd2BmnA= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102700 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Anarr7f01yM= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102700 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Y0v7hzuT3mw= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102700 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/hUs3uQFy6Rw= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102700 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/eG58GyPQWDQ= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102700 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/JABPG4KU4Rg= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102701 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Ne6Y03djAVY= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102701 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/OWKfreAtNWY= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102701 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Gf9Pq/og6zE= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102701 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/no1mFI+sA1U= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102701 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/8OlS0Pj2B00= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102701 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/8JhvjeHRej8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102701 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/J5d0bK2pBgg= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102701 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pp9FP2yzHmw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102701 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4lN8jVU11yc= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102701 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/uNWsu6GDhms= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102702 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/QxyCav0I9jI= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102702 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/uuWGLkP5f34= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102702 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/O7a77eENkTs= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102702 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/E9Asaq0CQ2Q= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102702 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/I1M0SwfGvmE= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102702 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/B6IduyZ24gY= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102702 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KEZNo9faBi8= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102702 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/cZ+Z7tWB4jI= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102702 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h0JZwasZG0o= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102702 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/DwRpgKWNkgU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102703 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/nXhHrNpCTWQ= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102703 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Rsu1H9u0B1Q= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102703 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/9GmjRz0n+y0= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102703 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/JIZNMzXLhXE= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102703 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/1mzkpcO7D1Q= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102703 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/aNwe6tce4zM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102703 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/fH8s5lyGDxM= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102703 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/xmInuzNYb2E= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102703 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/bD1Tl0Pa4Do= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102703 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SbDON6n1V2Y= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102704 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/sn2Us599lHQ= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102704 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iSA/DwzLYQQ= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102704 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/vo7JGTCTXFA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102704 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HNXs20ptexI= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102704 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/7lZ9DfZSpxI= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102704 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/o03QUrQUphM= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102704 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/TiWKSbnJXmM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102704 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/nIixmg026H8= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102704 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/HmzwFfeGEX0= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102704 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/UiofebRSeVU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102705 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/h/AIYKfH+nw= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102705 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/6FwJ6QRUWVA= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102705 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NtJNhppFh1Q= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102705 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/pC077IV9/Tk= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102705 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//KfE6UIkq0w= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102705 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TAXa67NYYA4= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102705 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VJgJuxag1jQ= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102705 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/gXt3qrthrn8= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102705 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/qP0fVUIjojU= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102705 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Ep5bMDuumDM= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102706 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/uE1IUc3ryTM= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102706 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/hq9LSvR+wxk= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102706 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pilaoG/Sm2M= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102706 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/epbB+Wu9hQM= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102706 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wXW2SNTHniU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102706 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/90jgt44jx3U= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102706 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/hEs0QW6T2Hc= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102706 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GBafo/Rbn0A= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102706 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/qgY6HbsVY0Y= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102706 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/akok8vTZYyI= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102707 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/2MZyRiDtTWo= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102707 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9UBlzYwv8xk= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102707 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/9gR5U6xDKwg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102707 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ac3DRTuowA0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102707 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/KSahUvC8Gx8= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102707 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//NzlARfB8Vc= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102707 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ai5GEZY75xk= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102707 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/lC5h+RK+TQY= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102707 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/zt6I1NBfi0E= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102707 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/xStzxl6rBB4= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102708 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/5XewbAzkV0g= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102708 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/2gUWdeI7RUc= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102708 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/hIE0dGGNyj0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102708 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/aTUesafyyBQ= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102708 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/oadfngWebgk= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102708 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/V11Q206ESiY= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102708 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/J3NhuuDTq0g= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102708 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ljEDbnqdpEo= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102708 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/R+rMB8TYYHA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102708 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/MAHJobDwzlk= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102709 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//+6muSkhb38= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102709 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/OCGehDLrW1Q= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102709 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/t6dt3+b1r1Y= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102709 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/2c+clE1GLG8= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102709 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/GfTZvblwN0g= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102709 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/wfQ6jyJBJRU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102709 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/HNPOJFjAJlU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102709 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/oATATWw1lEo= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102709 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/p7zrROjR8iA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102709 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DHW4xqFI9UE= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102710 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ggzqcBRJXxI= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102710 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/VDrYTcwlen0= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102710 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/zCziIFZyQEI= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102710 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/VOs3pEBmWzU= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102710 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ud1fqbgAqiQ= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102710 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/1v5dL7D0YRA= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102710 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/qb/9H9f8umQ= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102710 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Ta7KhN5LT1k= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102710 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/B9Ou+DA7nEM= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102710 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/fA6UcDkPV2o= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102711 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/qpfXiPWXsUA= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102711 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/iW13REV5qRQ= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102711 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/LSi1RwS6q0k= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102711 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/N87bqszneTM= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102711 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9AH6xngv/W8= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102711 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/d/aScbzmjmg= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102711 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/nA8d227mB18= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102711 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/S1MxHV/NpEw= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102711 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/AiyZDMJYQVQ= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102711 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/llGotcSR+U0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102712 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/9zRriconhG4= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102712 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/k0utHcOBRHA= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102712 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/f3khJcln33Q= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102712 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KJYrx6zxIDM= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102712 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/uT7SN+U4Kno= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102712 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/HVVGh9VAfXk= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102712 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/YiN4Kk1OZ3U= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102712 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/hFFQ8lf5DC4= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102712 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Fiq8HFYutEo= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102712 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/42HTi+pKW28= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102713 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/dMn3Fo8FCVY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102713 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/9cw/wJKaADs= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102713 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/hcl5W0xfXxc= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102713 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/pD1uhKx0AFY= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102713 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Ot0Q4l9tFlM= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102713 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/mkIo01tnpTg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102713 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Gh40MdJXTVU= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102713 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bgP80A+5Jns= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102713 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/6W4CsUGT30Q= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102713 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SadbqCZbQzk= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102714 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pHhu5Ag8pDo= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102714 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/cyN7nHvP6Rk= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102714 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/JQBy5dFxBk0= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102714 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/rTXZkIoKfms= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102714 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J1qhJvRoajg= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102714 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bWG+PSrabks= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102714 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RgRLY2I0ES8= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102714 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cqSNrb0aBF0= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102714 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/DzumUAxFTGk= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102714 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gVn4zim/qGc= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102715 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/qJQ2zv9AMUM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102715 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Fm5JzNZLl3w= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102715 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/o5sj2rVMa1c= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102715 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/90T3kD5DgiQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102715 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/3LSHMemSPAM= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102715 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/baI3ZVQx7Qs= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102715 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/d6TjdLZjFxQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102715 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/2K7pZn6Zcic= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102715 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/jdMFuZuyyxU= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102715 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/2wWFBnqBWgs= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102716 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/zm687FtRN2o= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102716 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/TWeRae9Fey4= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102716 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/FGWncrPqBlc= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102716 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/R6R2+zdGkVU= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102716 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/xm0FWo7/F1Q= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102716 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/9ddllwNAZUQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102716 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/zIr4bc03gzc= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102716 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/39U4oADash0= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102716 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/b963SeW9N3U= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102716 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/EsRJc4kJ5nc= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102717 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/S6k+1MPO63s= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102717 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PbBD5jBHDSE= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102717 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/NFi2mjBkSCw= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102717 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2cemv8lXm1g= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102717 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//B9Jww9seDg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102717 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fZlOHKHf7Ag= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102717 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PlkOs8DBNQI= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102717 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DRTd9+ztiE0= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102717 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/rh8AHFJHE2Q= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102717 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KltSyytCbQQ= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102718 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/P3sfi2oS1hQ= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102718 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/j1wlVLuyVVo= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102718 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/vdI0ENSeWHs= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102718 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/lPyPPfDkcXg= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102718 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/R0pM4st8b3o= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102718 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/GA8B/0YNCHY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102718 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/n5dRO8+SgB4= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102718 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/RL1uyuCA93c= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102718 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/6JYeTL86KVU= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102718 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/X4qtgwTndSg= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102719 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/bSxC9SR8ImU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102719 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/W9uyygEJKlE= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102719 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tC5U5vfM5To= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102719 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/7DSYNDUYPXw= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102719 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/sUyaQxFX4H8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102719 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/75lRatRzYSY= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102719 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ij99Yxw4xgs= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102719 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/XafQ4hQDMk4= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102719 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/R2LeacFb+XQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102719 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/oxv/xHUDcHk= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102720 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/aTUesafyyBQ= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102720 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TfK8qDKCwg8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102720 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/KPgx/lcTiis= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102720 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/+iMVv8u1cQQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102720 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Q75u5Gr7+Gg= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102720 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/aYQxoYxYUig= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102720 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/TqqwPjqo+io= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102720 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/rZwPDNXQ2Cc= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102720 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/6PMrcb5G6BU= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102720 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/ShAChC7JGB8= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102721 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9oj4iyH12Dw= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102721 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/gt96omix+jI= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102721 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/qWHaNA+kbVw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102721 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ujpDS0MeoR4= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102721 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/rN6R1hSjH2Y= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102721 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/THyx6a0p7Ag= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102721 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/15ZjMyNO2A0= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102721 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/j8190fZefHM= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102721 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/01s1ty6NHmA= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102721 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KSHF/cEiOXM= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102722 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ofEbcaELdEQ= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102722 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/8ahnPVJ0xEM= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102722 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/gvkDv8fteHU= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102722 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/lHVYIyy6LnQ= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102722 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/tMbSHBoVA0I= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102722 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/f80oc2myEw8= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102722 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/McJXSO8OlwM= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102722 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/YbrEPR53tzY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102722 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ZckOPnboODg= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102722 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tm/3IIVUBkw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102723 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/uuWGLkP5f34= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102723 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/4qctwshZtUM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102723 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DntyHqhbxWY= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102723 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/AUFY+BaG7Gk= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102723 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/OCOHv0Gojyo= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102723 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/OyamecZfC2M= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102723 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/QEjV9mwblis= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102723 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/1Jq2mQub43g= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102723 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/yOxXIaHbG1k= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102723 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/F9KDF7PpJn0= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102800 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Nwfc68q2LSw= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102800 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gtpOENxNNS4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102800 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Id+XZFDzbFI= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102800 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/uytl7ecA6Hw= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102800 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/jD4CuScrXis= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102800 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/pCYvm9RT6R4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102800 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/F7y7u0nO4ic= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102800 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/4e82PdZNJjs= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102800 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PX5jsh4ptzU= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102800 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/aVe0qHXhtms= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102801 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/r0ybKSzRam4= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102801 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/6n1iJWvZT0I= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102801 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/w8T6sByD0CY= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102801 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/42arDk0cMGo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102801 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/gd4HoKdwGh0= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102801 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/J8epRTpaKxY= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102801 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/zNeGzeavjg4= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102801 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/IwDRBVPT908= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102801 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/hUHJ68Tyfj0= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102801 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/fJguLPHVZBM= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102802 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/AyzgQfqPi0c= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102802 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/e1lB4dimWS4= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102802 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/t7i1PnEESS0= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102802 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DFtSegD6/RM= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102802 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/hVUeBbJOwyY= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102802 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/xkVAz/2iHB8= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102802 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/eD8u4QXZJ1k= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102802 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/GUBwKm0YiC8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102802 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/qx1d5NHqVBk= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102802 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/jjYyq0zvCA8= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102803 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/mYRVReeI1B4= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102803 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FOtSMsoH6gg= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102803 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/0WQFYhoSXD8= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102803 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/CZuuOtN8WC4= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102803 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/TfY5Ov/BfBc= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102803 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/uhvDM3/RAkQ= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102803 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/5BRyyEzf5xE= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102803 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/WuAZeQvt/3M= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102803 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ToEo4LH0vAg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102803 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/K76GvOUmn14= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102804 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wGsrdg8OOVU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102804 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/zGZOJnwFv0I= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102804 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/mMXEvr7qeUc= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102804 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/BMr9D+yaeGI= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102804 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/r3WTFd0HWBk= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102804 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/yXyrExaad1s= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102804 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NMRdNer/exo= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102804 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/x6nOI0qpBWI= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102804 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/3FisV+hJ3yw= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102804 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/QyfTPEwwe1M= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102805 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/tVHj53dVLEw= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102805 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TD5tu189z2M= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102805 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/dqn3p5F/Dnc= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102805 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/lNUqcsSZrTI= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102805 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/MrFW+i0iUBI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102805 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/iJE38P4gIRc= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102805 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/SeDWZxxxpwQ= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102805 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fwilyOsNQEA= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102805 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/B5gOw/PcUzs= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102805 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/WUJ7UhSNuVQ= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102806 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/rppAJHRhFUs= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102806 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/OC+wnQdUlD8= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102806 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Y7DZh4qFGUw= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102806 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/jC1OfZ3i/nk= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102806 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/PVqM3AmHPlo= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102806 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/FGK4VRdzKDM= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102806 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PXkAmpUNbEY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102806 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/qzPfq5w38VQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102806 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/VX1YjXyr4iw= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102806 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/a0wRaZUiBm4= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102807 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/sfQZqsqn5gw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102807 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/WsCXYZhyozE= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102807 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9oZyR718aXA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102807 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/gT4IbHAGGzw= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102807 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/8l6hKiKeKyU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102807 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/nwUmQPpdVi0= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102807 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//DdNiTviACY= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102807 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wFvSz+td72c= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102807 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/RFlmZN7xLRY= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102807 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/umqjTIzgKz4= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102808 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TOZJnPpjzz8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102808 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/R6R2+zdGkVU= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102808 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/On3TG/Ckm0U= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102808 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Vvwyw62ApH4= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102808 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/LA5C+d76y1I= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102808 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//O9a7lQQCHY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102808 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L+riW0YGTxo= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102808 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/WFpd5NYMVVg= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102808 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/E1Ct8FBUKl4= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102808 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/pF/dD9zDxz0= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102809 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/QYqPS0xP318= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102809 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9KJedC7KRFs= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102809 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/DabYPulSvBM= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102809 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/AuiwC26HQAU= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102809 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/zzT6806bOnc= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102809 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/1UowjeMO6HQ= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102809 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/7jCXjKSzfVI= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102809 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/j3oaMZe33C8= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102809 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/yeI9GguJtGY= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102809 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/oEb9yRB7ZE4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102810 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/JfC1TrUG3Es= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102810 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/vFSTkg07NTE= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102810 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tqkqEvY4q30= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102810 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/DawlgBDiZWE= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102810 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/yWjK2BjPESI= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102810 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dHjuHGmH+jg= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102810 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4znUnNjJGUg= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102810 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/idhFF1myTyM= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102810 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Csh0LuetNSk= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102810 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/nLVdG4kkJgI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102811 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KEz6sbosPko= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102811 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/xDDNAhRzChc= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102811 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/p8+SUYX7wQI= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102811 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/SAU1hsN5/Cg= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102811 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/X+IZ7obZbhA= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102811 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NBXQUrxqk0k= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102811 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/qMqh7NYVLnM= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102811 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/vdOmtzjjJxE= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102811 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/3vZpvehd4Vc= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102811 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/D2tj9JnKCTM= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102812 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/95ajNy9dgz4= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102812 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/WIUuMHl4m1M= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102812 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/YO0UOi6BRg0= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102812 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/a6asCY4lxCw= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102812 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bd7PF8gQ0Sc= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102812 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/MiKc6se4d3c= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102812 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/2JKK/1MiqUQ= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102812 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/J4AU2O1sOzo= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102812 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/mX3u0a49PQM= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102812 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/IphTfmCeVXw= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102813 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/mAJEgjMNwGI= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102813 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/9Bj0FTSjFxw= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102813 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pE0JCininCE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102813 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/opx0NPEHrG8= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102813 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/3qeFw6HOPH4= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102813 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/TkMkrmRUwGo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102813 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PqhijQncszs= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102813 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7MgGzsAOkUY= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102813 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/CIjCnO7Bkis= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102813 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/IOBsmzkUUFI= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102814 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/nyIVNYU1+VI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102814 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/F9KDF7PpJn0= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102814 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/NCDW0UJZ5CY= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102814 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cyN7nHvP6Rk= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102814 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gmyV2KypsmU= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102814 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KpVNnmaWN3E= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102814 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jtpAit/OYBo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102814 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/wm+xa7ik5l4= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102814 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/EDffE2r7x0Y= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102814 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/01s1ty6NHmA= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102815 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/a1mAnw8ipAg= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102815 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/OCGehDLrW1Q= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102815 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ZgVmjXvTPz8= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102815 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/xjEKMVg30mw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102815 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/qViUVmYdOgI= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102815 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/NyaRpdqf4DA= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102815 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VX1YjXyr4iw= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102815 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/AwUwUELaV1E= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102815 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/b0bFMOLzPSg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102815 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9XYrqJKfiks= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102816 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/N1dNDm4JcSY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102816 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Dz27V7OPABg= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102816 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/l7zXpjvMgxs= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102816 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/mXmPl4vdjXU= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102816 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/69Ht0SK1ZkQ= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102816 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/5necI3Us4mE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102816 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/TaWvXOoQvE0= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102816 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/1LAM2YAZ+gk= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102816 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/W+fi/QbYgCU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102816 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ZeeYFkkzPTE= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102817 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/LCFwAdyYZCs= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102817 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/62fAGVe76gE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102817 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/rN6R1hSjH2Y= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102817 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jC1OfZ3i/nk= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102817 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/DLrCzClwvG8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102817 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/knPYdh2CDFw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102817 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7yQwQ9rKVEU= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102817 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/hCr78B2v62E= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102817 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/B6YaohPXADg= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102817 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VJgJuxag1jQ= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102818 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Q0puVdD5nzA= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102818 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/aw7HuD1+i2Q= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102818 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/x1AjEtE64hc= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102818 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/CHqdGL+V9SU= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102818 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/aTUesafyyBQ= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102818 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/AZX/Yhqc1Vk= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102818 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/+JoyuU4l5ik= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102818 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/MPX2xd4uFmY= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102818 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/vmot1GqCiwk= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102818 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/7XHZrR3IzBY= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102819 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/795B5uZ8dEA= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102819 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/QTgkCSuXGEs= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102819 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/S0HHjbBk+mU= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102819 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/R4z8J3s9FVU= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102819 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/pNyIBEJ2Yh8= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102819 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/yKH/F9BgDAQ= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102819 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/EYoG8NEdlnQ= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102819 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/sX77l5By6B0= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102819 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/YzXRRaThIyk= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102819 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/NyKOQuqlihw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102820 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Q7wwVYQ/1yc= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102820 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Df48nqPdLAM= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102820 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/eevM+EE7xU4= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102820 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/N7rDIP5WrDI= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102820 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/5xbSfstrCic= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102820 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RtQbmmEOtiY= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102820 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/MlYIqnh2UQI= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102820 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EZaUUq611gE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102820 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/nqEHouK7C2A= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102820 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/qzIM3mARoCo= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102821 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/B+NDQfvVSwg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102821 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/q9E5lETClng= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102821 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/fxegCKaGbUU= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102821 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/xIbv9HfuORY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102821 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/nc+a3igl0G8= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102821 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/MUcU+MOtums= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102821 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BJdcXPp4an8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102821 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/uwhoXbu3Ryc= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102821 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/m654qCtd3XA= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102821 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/6KPS+aD2mgA= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102822 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ioLc94J3uyw= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102822 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ziQ/eLw4sjg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102822 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/SiKfLv3Y1Ak= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102822 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/GLGx79wgxEk= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102822 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/5cPvupMhHGQ= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102822 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/+pRRrxncgmQ= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102822 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VnN+N+SHAA0= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102822 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/uYWBMQhN9hs= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102822 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/gfZejv/OdUk= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102822 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ha7jLBrG62A= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102823 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/CqBSgWW2iCs= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102823 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/z5C43FrrSlM= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102823 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/LRo388j3T1M= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102823 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/aeDSAzuKvC4= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102823 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fuf2DmPqyzY= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102823 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/OsI6DdtGN2Y= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102823 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/2NBnmuxTdWU= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102823 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/62fAGVe76gE= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102823 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/HDmMBrCkdWY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102823 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/6OBIsQLN7QM= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102900 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/WjG6L5GPMzM= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102900 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/s8eQk24l91M= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102900 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/X++46lCfayQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102900 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/qvA9t8FkJws= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102900 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/7yQwQ9rKVEU= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102900 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/lpC98IgFmhY= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102900 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/vB9/YOdFBWk= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102900 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/MuU29ufLI1c= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102900 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ZiTkghpu/UA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102900 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/jZVV/CkaHy8= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102901 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cONFTg+fzEA= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102901 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/nIQ556/zfDQ= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102901 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KgN5AokGIWs= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102901 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/6GWp39xdcWY= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102901 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Y+EsNTfSMhk= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102901 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//ZF5ZgQWQjQ= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102901 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/OTjghlF0dHA= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102901 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/3gdf5XARyjs= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102901 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4zejO9zjmgo= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102901 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/akok8vTZYyI= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102902 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/AHcKbemN+m4= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102902 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7ymxVtgp9GM= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102902 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/nqEHouK7C2A= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014102902 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/P1ZO1HHQ/Uk= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102902 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/X4SE+RaE5VA= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102902 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/mWFP0ZtxqzY= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102902 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/b95JUyGrvj4= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102902 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/C0Wc9veHkwc= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102902 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/rGrhGeyKtXk= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014102902 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/a7p7cZxrClI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102903 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/08/nLkuFhBY= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102903 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/qJQ2zv9AMUM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102903 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/QFREIa9GxD0= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102903 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/NRI8kaIAtU0= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102903 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VrQGEBpBj0M= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102903 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9HbkKBkjVls= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102903 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/p5VLrMiY7BA= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102903 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VqHUivLVHhI= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102903 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/oNe75qx0vR8= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102903 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/X+dVfCX6Vzw= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102904 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/lZX9+1tBoQI= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102904 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/O+vMqEFUNiw= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102904 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/I4hu42zSigA= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102904 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ASjyWWFvOy8= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102904 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/1LAM2YAZ+gk= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102904 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dKi+4wmQKQg= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102904 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1g/GdHUkmAY= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102904 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/AMzjNfsnolg= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102904 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/0IGEbmx//RY= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102904 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/JKmsBDGlpBM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102905 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/zXR2EPqujTI= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102905 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/br8VLBogJQ0= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102905 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VYkegGtL2S0= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102905 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/tlfRbWF0kHI= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102905 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ghQF3jeVtyE= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102905 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/6/njQbRQi1U= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102905 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/gMJqGPAJT3I= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102905 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/tAn1TgZW9iQ= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102905 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/YK6VIkLJyF0= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102905 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Mec6xz4pxSQ= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102906 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Of/e3XF8LCU= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102906 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/s/BWbzMUIA4= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102906 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/htl8oRcGsmk= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102906 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/0JyImgdbUwU= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102906 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NaAmBHBN70w= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102906 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KILo0M3sehI= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102906 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/5/bOvIujMG0= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102906 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fp5KOnXYIBA= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102906 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/I7kJ1Z7qfwM= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102906 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/kBnc6RJpLUk= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102907 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/7doyDQ5COBk= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102907 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/D8Wxnd+h80k= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102907 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/3Ka2YTlhzhQ= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102907 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/RmW+Wz0bEzU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102907 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/+/7hpZmKnnY= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102907 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//q0hThBT9lw= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102907 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/byukfGlmPiA= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102907 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EOCQNmlf7yI= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102907 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/L+hy9ORBym8= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102907 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fUHt+TV3fg4= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102908 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/dFhRLbSL+UI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102908 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/mU1yFNXA4X4= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102908 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/PbTUcvl3a2E= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102908 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/8uAbI0ovvmw= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102908 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pwdKVt/llkA= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102908 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/BSrjrL6R1kM= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102908 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/NAxlauJjSgo= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102908 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/HyuJVE4MJ3g= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102908 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/7P+AmUCtK3E= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102908 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/b95JUyGrvj4= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102909 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/uf3CbQyOl1M= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102909 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/95e5Z23H8SI= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102909 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/qv5pwpl5jjk= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102909 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/zQUIMlt9lSc= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014102909 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/z8JBY4XwrC8= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102909 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/rK3qcbz+Fns= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102909 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/rthSey6MF3M= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102909 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/hys8kzrDNHI= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102909 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/qHAFihHonBM= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102909 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/2c+clE1GLG8= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102910 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/CuZi5SJYK1Q= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102910 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/fEFt1aQ5Ejg= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102910 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/XP0ZsK9DMDI= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102910 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/0/Kbel2PkRI= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102910 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/qnq2fx44URo= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102910 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/vCynq8GTcU4= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102910 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/xrmMVcz2+xc= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102910 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Z60AmL0kWQo= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102910 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/8qcU3WXnED4= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102910 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cVnvI1eO3BU= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102911 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/QNWkjuzRrXE= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102911 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/v0jj/BFxiG8= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102911 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Jcsf2y4Hmjs= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102911 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/y1MngQbDbAY= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102911 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//04N7+JgOhE= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014102911 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/0hXjLXTn4VM= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102911 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/KUMI4HLt7nM= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014102911 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/uD+BBmBniR4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102911 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//KJZPW2t7VI= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102911 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/aBqD5NojAVM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102912 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NyhQQOPDAHQ= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102912 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/MKxcc2MD6k8= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102912 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/JrFbWqhMZ1Y= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014102912 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/OxCPHgV+WTQ= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102912 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/J8LPtKYpJQk= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102912 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/CU8I3k2jVSE= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102912 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/XE5MOcpxmzk= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102912 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GbcmjWKlKi8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102912 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/EoPJgwEu+nk= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102912 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/M6YsbveQ/QQ= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102913 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/VXQA8YWciyg= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102913 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ono/hmhh4Bw= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102913 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/5FgARfIUyhM= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102913 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/HElaNDDxcxI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102913 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/C0dieYkRomc= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102913 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/gWmErUBFpRo= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102913 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/G9xY3zYwbXY= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102913 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/R6R2+zdGkVU= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102913 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/gYJH/O9/kVU= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102913 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/10e/Xbimpng= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014102914 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/pAd9Zm2ZICQ= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014102914 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/+c9k8r8yR1c= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102914 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/LpuZQHtKzUE= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102914 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Fx47GsWRWBM= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102914 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/hE+u13vRNCs= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102914 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/iQ6TyI9hCGc= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102914 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/mrTkeKSnvgw= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102914 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/rUhLLKkNgko= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102914 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/P1ZO1HHQ/Uk= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102914 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/gt2hN2gAsj0= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102915 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ZQyJidkaXUI= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102915 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/2zu+L3xMEE8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102915 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/YQbIHgGz8lI= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102915 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/tXoZ6+Hh7S4= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102915 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/jvXn9dBI0WQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102915 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/KoFZHj+qFnU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102915 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/dpT7WNc95Ro= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014102915 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/xPxHqPpEeVA= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102915 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/OGQQoFjLUHM= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102915 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/pd+drNed5HA= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102916 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Rbxf9E8Pgz8= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102916 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/FRGZ5pf9xmI= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102916 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/85YFeu/l9Ds= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014102916 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VXC8cWMmvUU= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102916 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Wm/GhZhgTxo= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102916 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wcFhjjkrRyg= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102916 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/AECnlTBl5Wg= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014102916 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/wNe7WGgRRkU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102916 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9XTs/Un8Qz4= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102916 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/b3XoUCWLPGc= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102917 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SGR3V5/QElQ= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014102917 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/qUWANymfJ2o= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102917 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/f6SEWDwU32A= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102917 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/rthSey6MF3M= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102917 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/WJXV5uR45To= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102917 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/OZRR1uJIEEY= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102917 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/tNYlx+7OJQs= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014102917 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/gc6JLzmZ4k8= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014102917 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/frnEXNDb6zE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102917 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/H0ijvPz6+3E= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014102918 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/88J1UQe8z1M= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014102918 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/HpBmQXc5rQM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102918 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/F/HPgLjfIn4= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014102918 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/pkrR6cKN9EY= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102918 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/YT6SikvL4HA= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014102918 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/axs4wgrrKRU= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102918 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/z44RAMf3/B0= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102918 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/P7K+KP9tqgc= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102918 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/5hqt7zXz/SA= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014102918 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/BwanQEmaZRo= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102919 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pmZRW8JdCm8= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014102919 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/cYXmF5b6jCI= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102919 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/RfLCdejMSn0= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102919 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/OZRR1uJIEEY= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102919 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/8ahnPVJ0xEM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014102919 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/AwUwUELaV1E= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102919 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/9AF05Vc3rz0= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102919 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/QNVnLyeSphE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102919 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/NScgoN9H4mE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014102919 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EaKpmZW08zs= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102920 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/El0dqmzdmTc= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102920 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Lt733x/KohI= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102920 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/sB1Ao7Y7KEo= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014102920 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/HzXacbeyQUM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014102920 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/v9Rg5YnF8Gg= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014102920 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/xpysWMosfTQ= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014102920 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/nwQcFZr4TXE= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014102920 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/CaIezQGa6wQ= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014102920 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/2lJQWT+5/CM= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014102920 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/vHGySdxmjDc= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102921 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/hFFQ8lf5DC4= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014102921 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/K8Fkspid8g4= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014102921 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/paXJtxVi4Uc= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014102921 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/k5AvA6aDpmQ= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102921 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/WAJlexaIyBk= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014102921 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/eb9Kfy8/7lE= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102921 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/9eU1ECNI7zY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014102921 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/y3+YuPGczis= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014102921 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/KfhkHkEUB1M= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014102921 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Y/uCCFWJxxE= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014102922 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Lq2kc0mTjRA= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014102922 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/CGn9g+Gsdn0= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102922 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/d0fY+9Srlkg= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014102922 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/0AaRo2oN2go= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102922 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/Ida+ByaBTAk= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014102922 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//HOtbP3LWHQ= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102922 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/x2WneesfFVo= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014102922 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/9k5qUz/Mf1I= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102922 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/00nr8ErvhGY= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014102922 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/aR1x2nwL+Vs= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014102923 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/icEFT2H0a20= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014102923 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wxfT3DLBtiw= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014102923 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/rMLq3zytrgE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014102923 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/eRJvgMM7i1o= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102923 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/90+glfIqCV0= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014102923 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/vFOwzck6BBM= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102923 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ubrev+OLtnA= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014102923 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5TohxTRpLEA= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014102923 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3h/XzkkR0gg= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014102923 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jcBBG/H3WwU= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103000 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/3eBhEqpMVQ0= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103000 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/DtmqoPMBJQg= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103000 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/hCr78B2v62E= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103000 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/b3xcUFkPFGU= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014103000 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/+kmIRSUdnng= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103000 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/iz9LPZDxkzU= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103000 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/yf71Io9Tdg8= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103000 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/x1CnnN+4Snk= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103000 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wR8HrwBi7Qg= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103000 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/E/MSzt35HjU= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103001 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/ZxOI63aKO1c= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103001 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Yvb9TgrDOXk= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103001 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/m/mpAc+vrkI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103001 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/m6ns9hMMgyo= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103001 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/L6+TxsZQE0s= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103001 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DjxZx5g6d0w= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103001 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/rDePr4C9/FM= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103001 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/0rO041jy4x4= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103001 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iP5UXOkiN0o= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103001 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BeoSFlg4Rm4= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103002 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/m+N3vXPukik= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103002 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Ry0L00pD9Ww= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103002 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/QOX0j73/oxg= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103002 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/lQdgmb6FJSg= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103002 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9QKTMAz6LiE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103002 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/6lMgDmClOzo= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103002 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/KO3K1SCRjyA= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103002 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/pJFDZG3RTUw= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103002 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/91NIDyj5kwc= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103002 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/+B8v/rgPBC8= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103003 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/WLSXAPgs4Hg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103003 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kIl5NfwhMQo= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103003 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/UwO4yDBvVxA= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014103003 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/NdCXrARHMQc= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103003 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/DWZeVYKdARw= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103003 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/oHFg8/39KRk= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103003 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/jFBsZBkY+S8= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103003 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/eUL/RxtIKGA= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103003 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/11UcNI0BjjU= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103003 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/iRKuQiXO9EI= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103004 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/UJD+K8m5DD8= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103004 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ct/UzZrdjFA= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103004 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/mHXglwjp9nM= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103004 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/U6i6oqdCijI= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103004 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/aDEWmAym53o= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103004 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/D9gch9SEYGk= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103004 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/dpwpwK5JYRE= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103004 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/cdtu/U62bHY= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103004 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/8RJDrFP5BUk= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103004 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/KcCCdwIk9kA= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103005 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/S5yGd7ik+ls= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103005 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/eS/aiqq/dyI= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014103005 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/OqVS6+lPPSA= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103005 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/mNv7iHDmBFs= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103005 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ciCHYm2chWw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103005 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/0fN+LPxFo1Q= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014103005 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/QsO+/YeWeF8= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103005 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/r7r6heHdlUo= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014103005 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4tk3Q5a4VRw= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103005 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/h+irSGgam0U= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014103006 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/8vUcLR6K7Qs= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103006 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/vDlJjJk3MnM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103006 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/RRzfCKL4hXQ= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103006 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/iwHmvgKHSgA= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103006 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/4eh2qvTcBkE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014103006 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/hiNYj5m3Vnw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103006 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NyKOQuqlihw= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103006 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FBJKRYdAXSk= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103006 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/3NdkX6DO/0g= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103006 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/DOfnt7wDijw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103007 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/8eCTAIydqCg= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103007 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HehRLbqMgV0= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014103007 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/IyH8KtUP1AU= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103007 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jFOJ8CwiNQM= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103007 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/rzWYh726mhI= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103007 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/TcmodEIZ+xQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103007 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/OPoiNZubL18= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103007 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/1vlsqse9SWY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103007 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/43yLfitiqCc= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103007 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ZabBS9wV/0U= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103008 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/vfYn3/immiA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014103008 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ydmkYcLuiUw= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103008 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/K/z5R8WX9Vg= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103008 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jNA50vo4hG8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103008 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/D4eOKevszAA= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103008 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/KI/WyzaAXnI= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103008 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/pURXD1KL/hE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103008 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/MIH2jJi76nU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103008 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/kli/NlcsOHY= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103008 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/60FOl9FZdis= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103009 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/nke98N+zjHc= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103009 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/FLALtAighFQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103009 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Y7BvMBNpZkY= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103009 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RH21+r8KeDo= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103009 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/KxjaERFGXlQ= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014103009 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ZbyFYDtL434= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103009 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/ZMTu93jbr2o= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103009 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/315hIn7P1Ew= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103009 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/mIvPsBRg5Ds= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103009 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/nYqWjYQOXWw= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103010 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/CRGPWK35LFM= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103010 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/yK5snZdgeE0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103010 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/14yQnVuMKTg= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014103010 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/xp7KSBprnE0= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103010 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KYEhQ0FtZ2E= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103010 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/u+q9PiiPYD0= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103010 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/fbfEU0DHLTE= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103010 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/ymggtAfYy04= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103010 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/W0WBrfQZLhQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103010 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VujnxauWJkw= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014103011 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/mOmH4Hk5LX0= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103011 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/nRVfaxWv6Gs= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103011 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/QxyCav0I9jI= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103011 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/taCiuNVS8SI= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014103011 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/CiktFzZ5Y3c= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103011 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/SSkWvfEvixc= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103011 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Cn7rvoalJzk= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014103011 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EdQomAbtNGY= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103011 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/uwhoXbu3Ryc= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103011 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/nWPIuXFr8gg= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103012 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/WZ4E+dtj2VM= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103012 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SpblYgi6kXQ= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103012 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/o5nOSbluC3c= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103012 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/K6In6NBvASY= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103012 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/++dd/X/uTVs= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103012 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/sugQssbanzY= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014103012 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/7jCXjKSzfVI= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103012 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/rX1VJTN7nEY= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103012 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/QttXDSrWHDk= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103012 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TZSL4yMxdXw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103013 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/tT8votdbigI= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103013 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/MnsMvcLjn1M= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103013 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/zbt/NSOttR8= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103013 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/IG+T84wVnTg= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103013 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/5BpanAU7EUg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103013 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/QWTcraTOQEI= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103013 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/lQAyOpiBaz4= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103013 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/6Ai0BH0PkG0= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103013 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q3BHxMGBdUo= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103013 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Kf5P8h/ZMTk= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103014 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/A4D46RBWkxw= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103014 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/gR3ME/wlLlU= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103014 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/JadPGRrQ7mM= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103014 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/XCvOpti3eEU= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103014 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/prZq6dKn/BU= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103014 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/p5aTkGlpsGc= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103014 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/YaLlCMeidzo= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103014 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/0svsqcr9zAo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103014 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/BseSel04Xm8= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103014 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/inPQCEJJoSk= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103015 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/oQbZPHnWoUM= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103015 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/0LAxK0o4GU0= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103015 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/rXXl5OpHwR0= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103015 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/2ODNaRPOAng= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103015 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/+6h794L9VR8= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103015 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/msVGRSbIjCY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103015 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/PhfGLesWhh4= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103015 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/IogzFiyi2wA= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103015 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/4zejO9zjmgo= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103015 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/PKjTVh7tNg0= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103016 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/WmMrwRlW7hQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103016 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/1QdtBZy0gwI= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103016 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4z1fL7vqbSk= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103016 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9//lGoro7x/Xg= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103016 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/oUBD35re+QA= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103016 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/nR9iwZFwlQQ= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014103016 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/w7CWixhQcXA= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103016 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/OJ1vejkeYF8= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103016 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/NCOOUMtFKnU= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014103016 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/pf/2guNXhDw= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014103017 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/uW9fQbTKom4= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103017 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/n1/ShfIvAjY= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103017 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//41J3Rsffmw= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103017 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/BhLqXPm9Dxc= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103017 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//A90YB2tiX0= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103017 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9n/Lj2bvS14= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014103017 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/MOHYU96cf3A= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103017 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/2ex9v6+HgSY= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103017 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//f/9lNvuKEI= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103017 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/c42P9Wk+tUU= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103018 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/QYqPS0xP318= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103018 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/rjv76Gs9Nh4= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103018 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dpwpwK5JYRE= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103018 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/W7VxO0E9C28= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103018 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/AQY8fxNiABI= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103018 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/umNGawcTVk8= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014103018 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9//3Vy4laswlU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103018 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/bCGdCtF+IHU= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103018 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pidp/G3aKHw= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103018 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/qhB3WPNK1gE= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103019 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/zIr4bc03gzc= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103019 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/u/HXEOi9UGY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103019 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/h+irSGgam0U= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103019 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/qwdSW75D+lE= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103019 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/YiN4Kk1OZ3U= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103019 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/sVi2Crsh5iQ= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103019 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/s2jvO4qDkW4= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103019 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ml+GX+tO7Fc= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014103019 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/C0Wc9veHkwc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103019 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KshVpyu1e3I= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103020 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/zgKQO67/CA4= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103020 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/SM1A54jF/ls= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103020 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/+vUj1l/JCz0= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103020 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/lUZrVsKz7S8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014103020 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/AgXHXoefCko= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103020 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/DmaNWYus1gI= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103020 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/GA8B/0YNCHY= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103020 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/XmKkz04Fugg= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103020 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/hhTOI/EbOg4= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103020 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/gjFlfuaIIhQ= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103021 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/difz4OuSmmw= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103021 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5Wv5lHyM2Bc= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103021 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ZabBS9wV/0U= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103021 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/u9ch/FP1XT8= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103021 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/PTxw9rcxkn0= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103021 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/sUEi/CuAbTg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103021 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/+4kozMsIqhQ= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103021 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/I0tIhoav2yI= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103021 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/XLb+1u0e1l8= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103021 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/b59TAa0EcQQ= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103022 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/D4eOKevszAA= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103022 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/o9YyEBhFWD4= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103022 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/VdsKh0s0olg= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014103022 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/VVfJFkGjwww= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103022 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TVduJDRTFDk= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103022 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Zb4KkdFfslA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103022 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/CKgUDNxrUgY= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103022 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/eFjcCs81o0Q= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014103022 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/1ay9x5iYjEQ= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103022 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/XE8LfcNfAig= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014103023 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/+XNL0HBSmWU= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103023 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/zwXykll2rlY= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103023 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/A04Wkj4tjT0= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103023 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/2bsjx1MucyI= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103023 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/0hlIU7LMQSc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014103023 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/eceYIN13rFg= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103023 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/D9V1+W9rtnY= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103023 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/RuJGb4IxvUY= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103023 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/sS3kmueY3EA= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103023 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/HSRvUvZQzlY= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103100 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9//yi63rVDbg4= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014103100 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/fgH7qBtDdGs= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103100 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//cLSrhFWLDQ= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103100 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/22skqX11ejg= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103100 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/C2MAYHUiGkY= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103100 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/FJs2uT9o9EM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103100 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/7tj/eGdqHS0= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103100 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Bi10H4biBys= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103100 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/83+UFxWjik8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103100 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KoFZHj+qFnU= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103101 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/nBo50qNke1Q= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103101 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/C+qqV4nGvxM= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103101 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/S5yGd7ik+ls= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103101 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/8dtBot9IqzI= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103101 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/m7D8Vz9rck0= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103101 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/8ir9k1j7VT0= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014103101 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1q9nMvHLTnE= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103101 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/gV90GGUmYCg= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103101 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ypQgoF6jFj8= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103101 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/CHenjsWsams= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103102 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ii8FDtRhdTI= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103102 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/vu1NAfekLnE= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103102 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tr5nAKQXOl8= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103102 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/C2MAYHUiGkY= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103102 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/+y8THAZ/2BI= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103102 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/TQvSCmDHRhk= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103102 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9i10M+NNTjY= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014103102 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/wZKujh5moBc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103102 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/62HrdsrS7g8= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103102 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/18VnIn748Ro= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103103 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/l4+c2M0PtmY= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103103 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TFCy38OVviE= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103103 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/AkOyQ8rXrTQ= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103103 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/6a2Ko6Bpbig= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103103 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/xPxHqPpEeVA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103103 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/0lUpgrKdDAQ= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103103 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/GFz3Vk1sZjo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103103 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9RKP/UC29zM= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103103 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/NTDy9LwmiAg= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103103 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/hECT3gY3imY= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103104 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/y7gouNm26wU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103104 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/QNVnLyeSphE= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103104 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Aegdb4Rdsn4= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103104 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/UJlFtan/MxE= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103104 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GFz3Vk1sZjo= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103104 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+7keGpyOJzQ= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103104 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9yPZHYynJTM= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014103104 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/PQfH3tBC8DU= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103104 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Ep4d5Fy5EyI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014103104 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/2GTsG9p4jhc= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103105 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/aBqD5NojAVM= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103105 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/P77IL6B9wCE= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103105 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/q1v2wADvlTU= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103105 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9///kKhfqTkUY= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103105 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/uFlMoWfw3A4= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103105 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/HsjVxbWWfFA= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103105 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jkvpQ+zycHQ= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103105 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/lPc7aSBqez0= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103105 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iEoTT5+4f0U= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103105 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/IQHCnEGewio= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103106 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ZWbW5Musdmc= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103106 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/EjP411uAcgc= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103106 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/cUYoDUo6Ei4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103106 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/LyEVl6xdGQY= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103106 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/E+G1bs4MPBs= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103106 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//FmorDEseCI= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103106 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/o+8LdxZZ1BU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103106 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/h63ABryNBwA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103106 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RE4Iy8Mprkw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103106 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/efVuAH+1b2U= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103107 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/aWkBPS2rwnY= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103107 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9//HWVt9nKMTw= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103107 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/JQoNPYOmnj0= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103107 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ioLc94J3uyw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103107 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NAYoVJlWCHw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103107 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SeJrPzqaGgU= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103107 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/plJnJW7xqBc= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103107 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/0bgSAsYfnxM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103107 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/E77Smams8zE= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103107 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/j26MDZsjOhA= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103108 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/wtsUzn72+mA= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103108 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/c3lMaibEsig= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103108 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4+SSOAbEkEU= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103108 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/9hBrz/Ry1Ak= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103108 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/NhkC8UhtOgg= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103108 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/yz+X5UT4VmE= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103108 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/MBKZzri9S1Q= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103108 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/02DAx9vfIhU= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103108 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/8qcU3WXnED4= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103108 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/n5U+rUI9zSU= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103109 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/oWN/0z/AfW0= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103109 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/35w6V/vGBhw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103109 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/jQgrSv35q28= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103109 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/p3s3O8pQTxk= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103109 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/3lpFzrVZPQo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103109 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/htl8oRcGsmk= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103109 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/U1Da6Z0gkGo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103109 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/YVbQlOnlfz8= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103109 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/R6R2+zdGkVU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103109 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/GNQrUXLJPG0= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103110 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/JjYbQu8pEn0= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103110 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/+P+vy0ZOCBM= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014103110 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Jm6k36INpEw= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103110 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/lnde+ecH4zY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014103110 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/gbkvNku8fTE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103110 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/JRhg7xOfi24= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014103110 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/5PIj9mXy/UY= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103110 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tLlbh5Nbewo= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014103110 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/F5QokNnGZ2A= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014103110 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GFCyYQDkKkE= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103111 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/c9gTlsSRhyk= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103111 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/j0jA0s/8oEY= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103111 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/bGjcwVMDlnY= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103111 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/O2uUX/QV5U4= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014103111 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/itlbFWSJEFc= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103111 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/C0Wc9veHkwc= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103111 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OckfIsKFiSw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103111 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/rAgYC0e21gY= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103111 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/6JYeTL86KVU= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103111 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/7FpdQNCmQTE= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103112 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/nxH4TmaUajA= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103112 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/LJquLeRCazI= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103112 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/rzWYh726mhI= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103112 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/zXR2EPqujTI= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103112 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/MPX2xd4uFmY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103112 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VkU1OOWjLFg= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103112 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Vr1q3uZs8GI= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103112 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/hEbyA8utUj0= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103112 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/MlDDSzgm2HI= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103112 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/e+z4+Ry7uQA= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103113 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Og7PMMoZdSE= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103113 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/qfA5HI1rWFU= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103113 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SlWkZzoFigc= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103113 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/AGdn0OGI22w= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103113 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/JL6ReCIIoDs= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014103113 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/CgsMzK9XNWY= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103113 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/aJuoxrH60gc= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103113 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L19+i80vKGY= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014103113 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/AkOyQ8rXrTQ= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103113 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/JfmYt8Yp/Xs= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103114 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/foMO37NT/S8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103114 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VvU38IlK3yw= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103114 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/p6QYo+hKank= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103114 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/oHFg8/39KRk= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103114 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8tQoHPVlP0Q= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014103114 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/s/5gNjr5xgA= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103114 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/8vOxNAU+2xg= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103114 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/rSHYDyw+8gE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014103114 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PkZIMf/tARI= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103114 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/HejmwaTH9X0= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103115 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gkalPkvu/SE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103115 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/TVYc9T/SiDg= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103115 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/h09rgY/VTnU= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014103115 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9//gytIXaPvig= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103115 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/hfL/0hR2K08= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103115 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/RZUCUQG9XTI= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103115 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VYkegGtL2S0= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103115 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/IVM3FzS7ylE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103115 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/jxAUir8EGEY= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103115 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KT4w2+oiKmU= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103116 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/vhqotu0QMSg= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014103116 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/+3RmZqVLmQI= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014103116 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/H0ijvPz6+3E= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103116 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/tINJRo15wW8= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014103116 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/oiQ+yy6oPSU= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103116 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/MiQrCiGLAwE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103116 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/MQCInzIwIFE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103116 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Op3Hst3w8Ss= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103116 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Jp76tSGb6QU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103116 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/knHgRoXd8FM= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103117 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Y6LidzNvCUM= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014103117 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/VoTyDBCOMQc= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103117 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/j4RwHh23WXA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014103117 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/6jj/igZFNRk= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103117 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8vBI+62WJC8= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014103117 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/5e+A7xrtz0Y= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103117 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/qfasGZFyaTQ= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103117 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/9K5P0MKcbCQ= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014103117 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/1cn1C1rovmM= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103117 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/4frQeC6yTCA= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103118 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/0PDub3hAjkM= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103118 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Im2APXA61AY= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014103118 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/9kA3mAtwejE= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103118 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//gU1lyngqWI= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103118 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Rj66iTRizGs= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103118 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ixLHdjIQjTw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103118 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/CHqdGL+V9SU= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103118 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/nwbzmmog4Ww= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014103118 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/yYyH2fI41yo= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103118 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/akok8vTZYyI= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103119 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/2jGqg4JEQGU= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103119 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/qj6MTzXjQg8= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014103119 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/MYnPxqwJj1Y= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014103119 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/OfeVcgvSyB0= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103119 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//J43EG6CYXk= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103119 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/YKQFk12oHjQ= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103119 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/73JuaeWialE= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014103119 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/67bLu/XK934= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103119 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/6KAxLZKFKgc= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103119 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/LAC2BgUkoFY= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014103120 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/tf8jrY4lWyA= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014103120 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/vfRQdi3hlyY= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014103120 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/5oBNBgemCQA= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103120 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/HaRzT0IXxl4= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014103120 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/wfzD6cGG1RM= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014103120 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EU4zUtCC0W0= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103120 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/2sY0huA38HQ= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014103120 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/v7J1oGkNxgE= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103120 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/OSQPyOcNtRA= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103120 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/KVy2lFq2CyU= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014103121 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/8CXQhuqhMEg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014103121 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/HDrzrLNnLm4= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103121 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/AXe2Od+/7Bc= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014103121 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/1BejEe2s1FQ= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103121 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/09YjmlWCVlw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014103121 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/A89VJg0DiW8= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014103121 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ZbyFYDtL434= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014103121 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9R0x7I9JNiE= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103121 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/q16H6xcL4DA= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103121 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/oJc0t/+FHUY= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014103122 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/X66ZmbQq8gI= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014103122 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/5mW9X3A/5w8= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103122 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/qlON3RFYDAE= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014103122 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/+9eWGwxXT0U= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014103122 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/WiqzZOIj3lI= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014103122 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/WrpnFRSQYUg= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014103122 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jMROFjhVckE= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014103122 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/eyH0kUvnWlk= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014103122 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/sYCgxZyFbHw= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014103122 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/U1Da6Z0gkGo= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014103123 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+mbrkmYMrF8= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103123 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/QbtXn1yT2Tg= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014103123 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/LWGXOP+vb3Q= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014103123 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/mQOP4/QsAHQ= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014103123 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Ak+RJ1G0n2c= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014103123 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/UCfZ21glVn0= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014103123 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/EwQ/iGVVmFU= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014103123 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/TrbiCfb3GVk= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014103123 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/GYoQawz1IU0= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014103123 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/a+Pry6s9phs= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110100 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ZdX9jTN7GCI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110100 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/qa9H+jpJljE= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110100 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/mBNbM9ygr2g= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110100 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/AQY8fxNiABI= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110100 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/Bki6mIctRz4= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110100 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fmuhn/p+9XA= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110100 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9l1ineQypR0= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110100 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/QAfnPCJfCzw= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110100 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/DXFu1VQXZg0= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110100 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/h8/NOW3/hTc= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110101 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/vnfLLNVsGnM= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110101 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/dDdO3oWbmw4= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110101 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/vrwlSupsiDY= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110101 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/s4u6NFDTy0g= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110101 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/7vhq3RqcTy0= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110101 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/MKxcc2MD6k8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110101 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/pvcWHkjP5jM= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110101 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//WtMEZIKaG8= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110101 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/MlDDSzgm2HI= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014110101 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/tr/7dPe2+Ro= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110102 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Z+NenW+hXgI= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110102 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/+Pbi91yfgjY= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110102 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/EdQomAbtNGY= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110102 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/v1hUSfBP8wE= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110102 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/0n7TofeCjmk= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110102 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/yKYmEwsDjGo= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014110102 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/FtFPvCWMOz4= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110102 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/PGJ6Cd+2HxY= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110102 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/SKC90jTvSW4= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110102 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/F6wbbFWmIXI= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110103 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/gfZejv/OdUk= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110103 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/kl9uPkdwMVI= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110103 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/1/nmvGvPlGA= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110103 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pXF0j+KjM1Q= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110103 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/k9GzTmtGFhI= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110103 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/HnaSHxyhrnc= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110103 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RCeL7Rnqagg= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110103 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/thQQn6JfPWQ= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110103 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/dK4342O/FTk= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110103 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/wbLFw9aKk1g= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110104 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/75lRatRzYSY= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014110104 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/WNo26CiaNko= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014110104 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/kimcZ3ojN0g= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110104 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/BdwXpIdjnC0= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110104 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Y+gHLXSnog0= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110104 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/upvGSurrHjw= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110104 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/NZDTg+wXNho= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014110104 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/HLVfDvdrQCg= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110104 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/XyV6EbFzjQg= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110104 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/7yQwQ9rKVEU= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110105 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/L/Vx5kMX4m4= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110105 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/znEhjWWJKwI= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110105 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/GoqMVbSatUE= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110105 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/H0ijvPz6+3E= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110105 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/70pUGYNErWE= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110105 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/pkqk0uF1oHg= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110105 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/RffO6CNcVgw= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110105 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BGP9WDAZyic= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110105 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/RMVUwk0/xjQ= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110105 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/5fWLa4hjvhA= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110106 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/gfZejv/OdUk= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014110106 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/pC077IV9/Tk= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110106 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/N4u4RMfUogQ= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110106 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/gy7ERbUWMxQ= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110106 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/AA/7rcbvLhg= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110106 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4SrqqFKpsSI= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110106 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/+8NGPtPX+is= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110106 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/aSTf/8T1oS4= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110106 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7m8fxslcgAc= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110106 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/ba/xvrJOdhU= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110107 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/TGBWoBYd0xo= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110107 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bQEA46pNqBY= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110107 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/iNBCSjpRRFA= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110107 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/2nTqyjb6Dko= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110107 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/D7+tSeyL4hU= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110107 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/b9aFdWiQ9zo= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110107 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/BWOe31C4hhc= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110107 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/4dBXaDd+pxU= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110107 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ZRjaZZ9w+Rg= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110107 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/vlVHw3vfXBE= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110108 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cYyuElKV9C8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110108 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/e7tZLZ8wlzg= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110108 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/YXtdobQ6+XQ= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110108 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/fDxiF1Rq2kE= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110108 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/YXfqaON7pyI= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110108 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/TbXZutTxC0Q= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110108 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7HSCjc2qzlg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110108 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/aDEWmAym53o= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110108 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/0Yo4ZTl/DGs= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110108 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VZhudayEyyY= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110109 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/8BUXwMOlnVE= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110109 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/qhB3WPNK1gE= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110109 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4WNNxIzm9xc= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110109 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/lCxck2LpRQo= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014110109 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/vB9/YOdFBWk= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110109 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/G/H8/a/8sA0= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110109 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/ie0jP05vqV0= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110109 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/dErbZZ2HwVw= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110109 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/W4xKx0FRpj0= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110109 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3sPB2FrWUF0= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110110 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9//aph2xxcv1E= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110110 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/HvBenZSWBRA= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110110 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/l59mfJ5J3RQ= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110110 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9/9kWh2FWSA= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014110110 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/NSPZucBomzU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110110 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ZkzfGSwfWCw= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110110 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/5h8impkKjwM= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110110 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/f6SEWDwU32A= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110110 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/6MhAtjvagzg= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110110 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ogo6mKZIoHU= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014110111 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/uP6gPaGWMjc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110111 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/MtgccINinWc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110111 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/STyJjFE7ynQ= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110111 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/bqYwm9cHEm4= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110111 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VDnTL3oJPVU= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110111 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/MXFce7S7sH4= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110111 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ryxwWc7EXwg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110111 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/d8EKCKmMLVw= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110111 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wwA54wGMRB8= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110111 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/EBCLolez2Sc= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110112 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/YtwCb0b4EzM= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110112 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/li1RsysroAE= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110112 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jTrAwbx6hQU= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110112 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/1q9nMvHLTnE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110112 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Oafbgdw1iBY= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110112 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/iSufUQQCzls= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110112 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/MogO+MlHnjQ= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110112 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/uuWGLkP5f34= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110112 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/zx0+4C3nrFU= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110112 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/HzvlirMsGWY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110113 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/V6wj4hLZUy0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110113 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bUT6aJKROVs= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110113 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/8RE5OYA30As= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110113 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9//mpfQJ4wUxo= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110113 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VHC0XlCYS1M= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110113 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/7XBxSmsn0jQ= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110113 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DQk5IZeuowM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110113 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/T2JVYAIJ+Q8= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110113 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Q+5RQ2IYLi4= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110113 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/JFSDHB7Gtho= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110114 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Kdxi5YTzpn8= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014110114 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/E69hLOXTaXo= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110114 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/5+Cy8yC0gjI= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110114 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/uz1e48XIH3o= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110114 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7m8fxslcgAc= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110114 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/mmahFmfReRc= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110114 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/ZQyJidkaXUI= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110114 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/jfWzUgeUQjQ= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110114 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/xnxSXqCRfi0= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110114 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/qIkdKSy06UA= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110115 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/FmbcTcVj8g0= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110115 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/SP1p1gzeD0k= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110115 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/8rsphAPAuQE= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110115 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/OUvsK4BdDnY= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110115 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/wVoUBEx3LSI= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110115 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/sq+LKKEYxR4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110115 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/On3TG/Ckm0U= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110115 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/FksU/0QOpWM= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110115 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Y56KyRexvBY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110115 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/KTppuuSw6ig= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110116 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/16azOB2FEgk= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014110116 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Y7DZh4qFGUw= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110116 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/yDgTMT3wBVk= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110116 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/+V/BSM9yNEY= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110116 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/5QJ1bGuRORg= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110116 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/sSLilqnb4n4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110116 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/pS+4lm9Yw0c= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110116 location_5 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/qN3eyvpkqUo= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110116 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/E8nFkXQGpRk= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110116 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/ryT/GBlpVDg= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110117 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/jzl7F3F5C1U= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110117 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Gbdp9Bb3Uik= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110117 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/xB+eHto6oCM= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110117 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/r/nK5YySwk8= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110117 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/VHOpXBnCR0o= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110117 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/YKnYsRBYKAE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110117 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/BRGdjC8W0Ts= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110117 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ISbqS3Ev1T0= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110117 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Cft9WcDR9z0= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014110117 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/hCJ7FiStp2A= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110118 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/AskJHT94tDU= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110118 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/gt96omix+jI= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110118 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/R3DXqM2C3SM= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014110118 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/liHoutkINxU= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110118 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/9gQYngRsgSI= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014110118 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/1p9muQE1KFw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110118 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/6l7tLROMqVQ= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110118 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/fL/7rpt1MHU= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110118 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/37Sph4xYWTw= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110118 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Q+5RQ2IYLi4= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110119 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/6GSiGKe+U3w= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110119 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/auFDF4ib7BM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110119 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/7BsL4rixHRg= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110119 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/xRhh1NsgGAw= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110119 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/8LENYLt4Fh4= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110119 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/KI/WyzaAXnI= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014110119 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/HyuJVE4MJ3g= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110119 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/vOCytry+yCw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110119 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/3x045W24GWU= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110119 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/3Y9hQq6vhWQ= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014110120 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/OU82vcko1RA= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014110120 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/D5Vg3YTdqVY= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110120 location_1 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/B9Ou+DA7nEM= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110120 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ILQPrDfFozI= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110120 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/JMMm5peCPn0= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110120 location_3 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/QINsKuqU31E= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110120 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/EMAu0ZZE9jU= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110120 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/WS3I49rHyCA= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110120 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/R9/UETXuuHU= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110120 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/+v8xbYvYU08= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110121 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/RR5ESCjWWDs= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014110121 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/jeH5LPDxWy0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110121 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/p2ceJAp9GV8= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110121 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/ZQjPSWI2hhk= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110121 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/VsFWMBCmLGM= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110121 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/fZDgWkzMDRA= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110121 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/rd9aH2v3FlA= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110121 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/RsLFHx1NnEU= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110121 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/Pq7WsHomlhk= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110121 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/glRFnAegoC4= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110122 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/QCw2o4ftLTc= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110122 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/pilaoG/Sm2M= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110122 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/zm687FtRN2o= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110122 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/7azpDk/X4kQ= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014110122 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/YVyZSh+iy00= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110122 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/aa/yTcesfw0= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110122 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/V2GDp3f2CVQ= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110122 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/xa/TR8beTWM= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110122 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/QejFoYyhGCs= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110122 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/68d9hryMiko= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110123 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PX94pTbAARM= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110123 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Gl598Kb7VDA= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110123 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/6LIBiTLTeTA= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110123 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/y+zZoJn7GSY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110123 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/qzPfq5w38VQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110123 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/zlN5UWsUpnU= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110123 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/eBT3A0HDHhA= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014110123 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/HD75wFLCfBY= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110123 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wSNeBWfbMxg= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110123 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/B8RUZkwetwI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110200 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/dAuQIgsOSjQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110200 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/0fyWiF/NmXw= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110200 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/TcGNPi74nmU= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110200 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PsIlO1gtuio= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110200 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3tPMezFm1yc= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110200 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/IGMeb4A7Q0w= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110200 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/00dYSte8tkE= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110200 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/+QmU+Q41pl4= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110200 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/IIV/tW4wXmE= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110200 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/Qdi5XZJWHSo= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110201 location_5 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/eUL/RxtIKGA= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110201 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/nnRM+bCB+UI= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110201 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/KuEALf9UHlg= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110201 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/VE6E8NKM6mI= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110201 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/cGw6sQbrjC0= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110201 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/81bvl5lL7l8= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110201 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/T2JVYAIJ+Q8= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110201 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Q/813biBsEw= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110201 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9//zn6axYQoC4= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110201 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Ea+W8vFnTnA= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110202 location_1 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/iwibBbn8zmc= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110202 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Cq1NNkVvAiA= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110202 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/5J1jLgI0fic= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110202 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/njX5GgWoLV0= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110202 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/cdS/YmNKAgA= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110202 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/rYHsokh0azM= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110202 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/PAO01crhsUQ= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110202 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Og7PMMoZdSE= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110202 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/VUQPDzW7GiY= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110202 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/l7xBWSpuHUQ= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110203 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/XKBIDJH7mUE= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110203 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/6mRS3aa/33E= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110203 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/OaJYFiAa8gY= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110203 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/oh2XafR0ulY= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110203 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/n5U+rUI9zSU= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110203 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/EuA7iasMjBc= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110203 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/yrEXUwdjVjc= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110203 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/lXd3l8gTBlU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110203 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/9k2gEvJ+gkk= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110203 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/PwOY5Wa23AQ= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110204 location_3 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/PbTUcvl3a2E= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110204 location_1 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/OC+wnQdUlD8= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110204 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/gOmmv39+eWQ= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110204 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/I1M0SwfGvmE= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110204 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/ESEcRxmuUBk= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110204 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/VUNk9pqhBD8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014110204 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/DzZUwbzNBjc= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110204 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HC1S48bcwjs= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014110204 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/4BdZzt5DQFU= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110204 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/T/zVEYqqGwk= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110205 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/CAzvBbWlnSE= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110205 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/z8KEu8Pw+Do= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110205 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/f3oLMqAADCI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110205 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/beBWiWgIn24= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110205 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/3Y0fvSeEOQE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110205 location_5 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/Jf5Hi1pRdAE= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014110205 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/qynul6NtjyM= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110205 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Ot2a/0h+mB8= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110205 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/7lZ9DfZSpxI= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110205 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/KCZEeTWPv2U= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110206 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/3Hw5rd7enX4= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110206 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/NgjTgn+9DEE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110206 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/EfrKxU+1lQc= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110206 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/m/mpAc+vrkI= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110206 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HaRzT0IXxl4= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014110206 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/H/bI/Vkp7Aw= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110206 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/zXR2EPqujTI= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110206 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/6a23ifXeOg8= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110206 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/bCwj3bahuxU= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110206 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/nw8X7RDLDD0= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110207 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/WusSoLuoBzg= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110207 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/CUKQdgvlN04= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110207 location_1 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/M7Rno9BT9Hs= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110207 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/ZdX9jTN7GCI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110207 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/EsD36WzmhzE= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110207 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/p/nv5UT0hkk= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110207 location_3 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/TnofqvefdXI= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110207 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/5qWdSQrhHV0= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110207 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/8r5r46hPAEw= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110207 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/VIVmL0MGWSU= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014110208 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wlS8e8NE9Fo= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110208 location_4 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/T+8eEM7m1Uw= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110208 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Z8guCudNNxg= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110208 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/U0rR4dshSnE= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110208 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/5xVssgtVKls= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110208 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/h8iyvyQj4ww= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110208 location_4 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/XkOS+Z2zjkA= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110208 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ED1vP/zC5Wo= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110208 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/9GkMUQVpJgU= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110208 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/yokbaX88njY= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110209 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/vK2cf4JbyFU= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110209 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/L1h+ZEcYHRg= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110209 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/3JRx0eiOkVU= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110209 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/saPM57mJZhQ= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110209 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/d8EKCKmMLVw= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110209 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/w6AsAnuAvgk= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110209 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/ltvwGOzB1HU= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110209 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Vsb2diytZzs= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110209 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/Ho58LPw66Hs= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110209 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/LLls3jIWc0Y= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014110210 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/FPPcmsEC5F8= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110210 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/OkLVBTWc2TI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110210 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/knPYdh2CDFw= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110210 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/GIltrs4UXBY= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110210 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/tAiFB9uTT2o= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110210 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9//+nqr0tu5Xk= AwEDAAAAAgABAAAAAAAAAP////////9/Je73qhRRHjw=
+2014110210 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/rxx3mzSdfCU= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110210 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Da1T2BnOaEM= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110210 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/E9GvRTxPc0k= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110210 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Y00PaHFpyWw= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110211 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HBz/TZPkphQ= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110211 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/nPKHhcUCAzw= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110211 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/I16DIaW90XI= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110211 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/lWub/FYW8BQ= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110211 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9//80ZjybDKzo= AwEDAAAAAgABAAAAAAAAAP////////9/C7HkJPudcg4=
+2014110211 location_1 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/A44nockpekc= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110211 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/WJYmme7F9TI= AwEDAAAAAgABAAAAAAAAAP////////9/af6UlZ8mGiQ=
+2014110211 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/mP9/SeQlvxU= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110211 location_1 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/Qc1yG8QMtgI= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110211 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/Fn7sJEOy4E0= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110212 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/aFI4KGHLaUY= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110212 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/gt2hN2gAsj0= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110212 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/KEZCmnk/Enw= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110212 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/S1XML6WIhV0= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110212 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/8YQ3JucVtyU= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110212 location_2 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/UjVB7P5peXw= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110212 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/nxMvemioeSw= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110212 location_5 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/BBffeFz9Rgg= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110212 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/nYLwC41v+XI= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110212 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/XoT7iHJ3Gns= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014110213 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/Qa1GJJFhbyA= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110213 location_5 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/QQzXgcb3TlA= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110213 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/CiH8NZB+9D4= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014110213 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/4m3dbIeB/Rw= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110213 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/U37A0Cak5Ag= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110213 location_1 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/CZuuOtN8WC4= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110213 location_3 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/oadfngWebgk= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110213 location_4 product_4 AwEDAAAAAgABAAAAAAAAAP////////9//WtMEZIKaG8= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014110213 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/CpoqQfgIklE= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110213 location_5 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/iSTepHt8tDA= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110214 location_5 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9oj4iyH12Dw= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110214 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/hVquUFv73Xs= AwEDAAAAAgABAAAAAAAAAP////////9/bvSh3SRDc3k=
+2014110214 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/1RHnGA+TzQ8= AwEDAAAAAgABAAAAAAAAAP////////9/wossxL0+HGg=
+2014110214 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/N7rDIP5WrDI= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110214 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/4NXKdcEMp0I= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110214 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/uP6gPaGWMjc= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110214 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/opx0NPEHrG8= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110214 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/hC2GGuPvITw= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110214 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/vi9i89oHA0s= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110214 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/2cXIcuaULVk= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014110215 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/XaDOMRIP82g= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110215 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/fNf6YQo+oEI= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110215 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/M7TENuosSQ8= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110215 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/Dg71cBo5wFE= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110215 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/FOHPObSYdz0= AwEDAAAAAgABAAAAAAAAAP////////9/tR9dunpTLSQ=
+2014110215 location_3 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/0fN+LPxFo1Q= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110215 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/3s8jlZtVLk4= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110215 location_4 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Xy1Vml/ypV0= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110215 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/OLUpmjmHqCQ= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110215 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/Vq/8inhFHHk= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110216 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/vdOmtzjjJxE= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110216 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/poafNgduXWw= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110216 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/sObbCr9mylU= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014110216 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/aRVwxTqno14= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110216 location_2 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/ff4SwRioHl4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110216 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/wFhm6MZqWgY= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110216 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/Xk6usrJoikg= AwEDAAAAAgABAAAAAAAAAP////////9/J+zV+RnYt2M=
+2014110216 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Cuix/DlO12I= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110216 location_4 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/v3vOtPi8SmE= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110216 location_5 product_4 AwEDAAAAAgABAAAAAAAAAP////////9/rv7BHQWwWyE= AwEDAAAAAgABAAAAAAAAAP////////9/H8YZlbHE03g=
+2014110217 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/8rZ6gJ+ztmk= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110217 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/BjkoRvD6d2E= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014110217 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/3FMQkqQ4RmE= AwEDAAAAAgABAAAAAAAAAP////////9/4EyBvXLM/xs=
+2014110217 location_4 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/wXW2SNTHniU= AwEDAAAAAgABAAAAAAAAAP////////9/cJx3p0WZekM=
+2014110217 location_2 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/kYiPnE1DCw8= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110217 location_3 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/aA4MS1+p4RI= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110217 location_3 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/9hTiMqPyEEM= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110217 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/NC+Z/0JWoB8= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110217 location_5 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/dKqF7WMTuH4= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110217 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/LPrBhx8VkgQ= AwEDAAAAAgABAAAAAAAAAP////////9/PzNis25KfDo=
+2014110218 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/OGwMjhqF0hE= AwEDAAAAAgABAAAAAAAAAP////////9/BnXke/a7yDI=
+2014110218 location_2 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/dhqDNJnYzkg= AwEDAAAAAgABAAAAAAAAAP////////9/SlCxAVB4E1o=
+2014110218 location_1 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/d2U+t+TrTQA= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110218 location_2 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/OxUFxWpPdCo= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110218 location_1 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/qnq2fx44URo= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110218 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/+sAQDix4tUo= AwEDAAAAAgABAAAAAAAAAP////////9/ke63h/cmGSc=
+2014110218 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/Cu569Vs9IH0= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110218 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/edHLOvd49nQ= AwEDAAAAAgABAAAAAAAAAP////////9/L05RVtSVmSI=
+2014110218 location_5 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/0J+WQlqNe28= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110218 location_2 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/USS/ybhfyjE= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110219 location_2 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/JlIzlHEQ2wk= AwEDAAAAAgABAAAAAAAAAP////////9/FF5eeCgr3W8=
+2014110219 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/KQU9RJ9bQX4= AwEDAAAAAgABAAAAAAAAAP////////9/pF5fWpcjl1Q=
+2014110219 location_1 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/735qVCCJxyw= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110219 location_1 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/lC9Dskr+AS0= AwEDAAAAAgABAAAAAAAAAP////////9/NJVTgFqIyGg=
+2014110219 location_4 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/3Eefo4TWx2E= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110219 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/76EoHFeb+Q8= AwEDAAAAAgABAAAAAAAAAP////////9/L/RaCEd0lEo=
+2014110219 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/pQxP1PISWT8= AwEDAAAAAgABAAAAAAAAAP////////9/RM/PPPc6GH4=
+2014110219 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9//Qw9uappBUg= AwEDAAAAAgABAAAAAAAAAP////////9/wOBWrCfrXVs=
+2014110219 location_4 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/LrBg1ogUMmE= AwEDAAAAAgABAAAAAAAAAP////////9/i3zstpLhWWs=
+2014110219 location_5 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/lQqUp076bjA= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110220 location_3 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/HXYbxYjrI2w= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110220 location_3 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/rVV5eWpBej4= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110220 location_3 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/PHQJ7WLdXBE= AwEDAAAAAgABAAAAAAAAAP////////9/q7QpTMZYNns=
+2014110220 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/ttPQPGsknio= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014110220 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/MtgccINinWc= AwEDAAAAAgABAAAAAAAAAP////////9/RI5olqYUtnQ=
+2014110220 location_4 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/0AhnuYJKW2Y= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110220 location_5 product_10 AwEDAAAAAgABAAAAAAAAAP////////9/Kl15sBKGvwg= AwEDAAAAAgABAAAAAAAAAP////////9/kV36ypNb+hM=
+2014110220 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/81Crw4k0Z1Q= AwEDAAAAAgABAAAAAAAAAP////////9/fp5jsENLzEs=
+2014110220 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/U+T8T9FL5jU= AwEDAAAAAgABAAAAAAAAAP////////9/Emg4u9g/BVM=
+2014110220 location_3 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/NdCXrARHMQc= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110221 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/1cn1C1rovmM= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110221 location_4 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/yEW9PJYjx1k= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110221 location_4 product_8 AwEDAAAAAgABAAAAAAAAAP////////9/MA2BbW3p1WE= AwEDAAAAAgABAAAAAAAAAP////////9/GedjOSzb7zs=
+2014110221 location_4 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/rv7BHQWwWyE= AwEDAAAAAgABAAAAAAAAAP////////9/9ehUclgDjnA=
+2014110221 location_3 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/doRdr3CBth0= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110221 location_2 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/K/VnrIL6wGM= AwEDAAAAAgABAAAAAAAAAP////////9/DTn8nRFFr38=
+2014110221 location_3 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/3DX+7ru55mY= AwEDAAAAAgABAAAAAAAAAP////////9/h3XDlGJinVg=
+2014110221 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/VyffUoJiVS8= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110221 location_1 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/jxjTaiIn9nc= AwEDAAAAAgABAAAAAAAAAP////////9/ac/6/cikcwQ=
+2014110221 location_1 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/T+PVJ49WZB8= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110222 location_4 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/HAbhk/rDDTM= AwEDAAAAAgABAAAAAAAAAP////////9//BA41YVjDFI=
+2014110222 location_2 product_11 AwEDAAAAAgABAAAAAAAAAP////////9/5PH9/yT0g00= AwEDAAAAAgABAAAAAAAAAP////////9/j+e0cICJPFg=
+2014110222 location_4 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/h1bAreYUv0U= AwEDAAAAAgABAAAAAAAAAP////////9/jDwgknTL/S0=
+2014110222 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/EYD/m8cNCz4= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
+2014110222 location_5 product_9 AwEDAAAAAgABAAAAAAAAAP////////9/I8Y+umpLF18= AwEDAAAAAgABAAAAAAAAAP////////9/dJ1rHBj48G0=
+2014110222 location_2 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/3Vd3VU28Djw= AwEDAAAAAgABAAAAAAAAAP////////9/srmtgZz8Slg=
+2014110222 location_3 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/yW8HrQ/3VC0= AwEDAAAAAgABAAAAAAAAAP////////9/Rn5CRuhP3h4=
+2014110222 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/9mVpa8Jp9T0= AwEDAAAAAgABAAAAAAAAAP////////9/Czv0sOyV7j4=
+2014110222 location_2 product_14 AwEDAAAAAgABAAAAAAAAAP////////9/ZanI2mnZ5gg= AwEDAAAAAgABAAAAAAAAAP////////9/q08lHAK+X3A=
+2014110222 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/a0lNxRGeGyk= AwEDAAAAAgABAAAAAAAAAP////////9/PZr5ma3+TRQ=
+2014110223 location_2 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/bEGc2mwSyyg= AwEDAAAAAgABAAAAAAAAAP////////9/l9m5EDihmD0=
+2014110223 location_3 product_5 AwEDAAAAAgABAAAAAAAAAP////////9/C4LToyHPCww= AwEDAAAAAgABAAAAAAAAAP////////9/c7D7fxngbxU=
+2014110223 location_2 product_7 AwEDAAAAAgABAAAAAAAAAP////////9/y4ezL/k/GA0= AwEDAAAAAgABAAAAAAAAAP////////9/KKcfz0hRe38=
+2014110223 location_4 product_2 AwEDAAAAAgABAAAAAAAAAP////////9/l4NSpYnPLgM= AwEDAAAAAgABAAAAAAAAAP////////9/VqUKjaiiSUg=
+2014110223 location_2 product_3 AwEDAAAAAgABAAAAAAAAAP////////9/qWW+CRi0uRI= AwEDAAAAAgABAAAAAAAAAP////////9/EOmCmVerjm4=
+2014110223 location_5 product_1 AwEDAAAAAgABAAAAAAAAAP////////9/EtNnyx66Dmk= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110223 location_1 product_15 AwEDAAAAAgABAAAAAAAAAP////////9/0AxfWShkkx4= AwEDAAAAAgABAAAAAAAAAP////////9/o31ldGC0E2s=
+2014110223 location_5 product_6 AwEDAAAAAgABAAAAAAAAAP////////9/Wi1iJmzKZlM= AwEDAAAAAgABAAAAAAAAAP////////9/TqyltB+ASmU=
+2014110223 location_1 product_13 AwEDAAAAAgABAAAAAAAAAP////////9/A5LtYs2Z3mE= AwEDAAAAAgABAAAAAAAAAP////////9/V3s8Tt0yshQ=
+2014110223 location_2 product_12 AwEDAAAAAgABAAAAAAAAAP////////9/IlGEu4Rv9XQ= AwEDAAAAAgABAAAAAAAAAP////////9//mseeN0UsgU=
diff --git a/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data1.json b/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data1.json
new file mode 100644
index 0000000000..169796cd74
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data1.json
@@ -0,0 +1,3 @@
+{"timestamp": "2013-08-31T01:02:33Z", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 57, "deleted": 200, "delta": -143}
+{"timestamp": "2013-08-31T03:32:45Z", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 459, "deleted": 129, "delta": 330}
+{"timestamp": "2013-08-31T07:11:21Z", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYi", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 123, "deleted": 12, "delta": 111}
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data2.json b/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data2.json
new file mode 100644
index 0000000000..62e270113d
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data2.json
@@ -0,0 +1,3 @@
+{"timestamp": "2013-08-31T11:58:39Z", "page": "Crimson Typhoon", "language" : "zh", "user" : "triplets", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"China", "region":"Shanxi", "city":"Taiyuan", "added": 905, "deleted": 5, "delta": 900}
+{"timestamp": "2013-08-31T12:41:27Z", "page": "Coyote Tango", "language" : "ja", "user" : "stringer", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"Japan", "region":"Kanto", "city":"Tokyo", "added": 1, "deleted": 10, "delta": -9}
+{"timestamp": "2013-09-01T01:02:33Z", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 57, "deleted": 200, "delta": -143}
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data3.json b/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data3.json
new file mode 100644
index 0000000000..28e0762f84
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/json/wikipedia_index_data3.json
@@ -0,0 +1,4 @@
+{"timestamp": "2013-09-01T03:32:45Z", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 459, "deleted": 129, "delta": 330}
+{"timestamp": "2013-09-01T07:11:21Z", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYi", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 123, "deleted": 12, "delta": 111}
+{"timestamp": "2013-09-01T11:58:39Z", "page": "Crimson Typhoon", "language" : "zh", "user" : "triplets", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"China", "region":"Shanxi", "city":"Taiyuan", "added": 905, "deleted": 5, "delta": 900}
+{"timestamp": "2013-09-01T12:41:27Z", "page": "Coyote Tango", "language" : "ja", "user" : "stringer", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"Japan", "region":"Kanto", "city":"Tokyo", "added": 1, "deleted": 10, "delta": -9}
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data1.orc b/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data1.orc
new file mode 100644
index 0000000000..897b090e3b
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data1.orc differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data2.orc b/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data2.orc
new file mode 100644
index 0000000000..3f0927403c
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data2.orc differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data3.orc b/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data3.orc
new file mode 100644
index 0000000000..5c5f54486a
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/orc/wikipedia_index_data3.orc differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data1.parquet b/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data1.parquet
new file mode 100644
index 0000000000..aaed7672c5
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data1.parquet differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data2.parquet b/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data2.parquet
new file mode 100644
index 0000000000..6f26f1f07e
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data2.parquet differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data3.parquet b/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data3.parquet
new file mode 100644
index 0000000000..fd318da28b
Binary files /dev/null and b/integration-tests-ex/cases/resources/data/batch_index/parquet/wikipedia_index_data3.parquet differ
diff --git a/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data1.tsv b/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data1.tsv
new file mode 100644
index 0000000000..b13d9adca1
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data1.tsv
@@ -0,0 +1,4 @@
+timestamp page language user unpatrolled newPage robot anonymous namespace continent country region city added deleted delta
+2013-08-31T01:02:33Z Gypsy Danger en nuclear true true false false article North America United States Bay Area San Francisco 57 200 -143
+2013-08-31T03:32:45Z Striker Eureka en speed false true true false wikipedia Australia Australia Cantebury Syndey 459 129 330
+2013-08-31T07:11:21Z Cherno Alpha ru masterYi false true true false article Asia Russia Oblast Moscow 123 12 111
diff --git a/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data2.tsv b/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data2.tsv
new file mode 100644
index 0000000000..e271291911
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data2.tsv
@@ -0,0 +1,4 @@
+timestamp page language user unpatrolled newPage robot anonymous namespace continent country region city added deleted delta
+2013-08-31T11:58:39Z Crimson Typhoon zh triplets true false true false wikipedia Asia China Shanxi Taiyuan 905 5 900
+2013-08-31T12:41:27Z Coyote Tango ja stringer true false true false wikipedia Asia Japan Kanto Tokyo 1 10 -9
+2013-09-01T01:02:33Z Gypsy Danger en nuclear true true false false article North America United States Bay Area San Francisco 57 200 -143
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data3.tsv b/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data3.tsv
new file mode 100644
index 0000000000..b91eae4fde
--- /dev/null
+++ b/integration-tests-ex/cases/resources/data/batch_index/tsv/wikipedia_index_data3.tsv
@@ -0,0 +1,5 @@
+timestamp page language user unpatrolled newPage robot anonymous namespace continent country region city added deleted delta
+2013-09-01T03:32:45Z Striker Eureka en speed false true true false wikipedia Australia Australia Cantebury Syndey 459 129 330
+2013-09-01T07:11:21Z Cherno Alpha ru masterYi false true true false article Asia Russia Oblast Moscow 123 12 111
+2013-09-01T11:58:39Z Crimson Typhoon zh triplets true false true false wikipedia Asia China Shanxi Taiyuan 905 5 900
+2013-09-01T12:41:27Z Coyote Tango ja stringer true false true false wikipedia Asia Japan Kanto Tokyo 1 10 -9
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/indexer/wikipedia_combining_index_data.json b/integration-tests-ex/cases/resources/indexer/wikipedia_combining_index_data.json
new file mode 100644
index 0000000000..fb7ca6ef70
--- /dev/null
+++ b/integration-tests-ex/cases/resources/indexer/wikipedia_combining_index_data.json
@@ -0,0 +1,3 @@
+{"timestamp": "2013-08-31T05:18:22Z", "page": "Gypsy Danger", "language" : "zh", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 977, "deleted": 200, "delta": -143}
+{"timestamp": "2013-08-31T17:57:01Z", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 459, "deleted": 129, "delta": 330}
+{"timestamp": "2013-09-01T18:22:39Z", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYo", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 123, "deleted": 12, "delta": 111}
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/indexer/wikipedia_index_queries_only_data3.json b/integration-tests-ex/cases/resources/indexer/wikipedia_index_queries_only_data3.json
new file mode 100644
index 0000000000..5838c247d7
--- /dev/null
+++ b/integration-tests-ex/cases/resources/indexer/wikipedia_index_queries_only_data3.json
@@ -0,0 +1,198 @@
+[
+ {
+ "description": "timeseries, 1 agg, all",
+ "query":{
+ "queryType" : "timeBoundary",
+ "dataSource": "%%DATASOURCE%%"
+ },
+ "expectedResults":[
+ {
+ "timestamp" : "2013-09-01T03:32:45.000Z",
+ "result" : {
+ "minTime" : "2013-09-01T03:32:45.000Z",
+ "maxTime" : "2013-09-01T12:41:27.000Z"
+ }
+ }
+ ]
+ },
+ {
+ "description": "timeseries, datasketch aggs, all",
+ "query":{
+ "queryType" : "timeseries",
+ "dataSource": "%%DATASOURCE%%",
+ "granularity":"day",
+ "intervals":[
+ "2013-08-31T00:00/2013-09-01T00:00"
+ ],
+ "filter":null,
+ "aggregations":[
+ {
+ "type": "HLLSketchMerge",
+ "name": "approxCountHLL",
+ "fieldName": "HLLSketchBuild",
+ "lgK": 12,
+ "tgtHllType": "HLL_4",
+ "round": true
+ },
+ {
+ "type":"thetaSketch",
+ "name":"approxCountTheta",
+ "fieldName":"thetaSketch",
+ "size":16384,
+ "shouldFinalize":true,
+ "isInputThetaSketch":false,
+ "errorBoundsStdDev":null
+ },
+ {
+ "type":"quantilesDoublesSketch",
+ "name":"quantilesSketch",
+ "fieldName":"quantilesDoublesSketch",
+ "k":128
+ }
+ ]
+ },
+ "expectedResults":[]
+ },
+ {
+ "description": "timeseries, datasketch aggs, all",
+ "query":{
+ "queryType" : "timeseries",
+ "dataSource": "%%DATASOURCE%%",
+ "granularity":"day",
+ "intervals":[
+ "2013-09-01T00:00/2013-09-02T00:00"
+ ],
+ "filter":null,
+ "aggregations":[
+ {
+ "type": "HLLSketchMerge",
+ "name": "approxCountHLL",
+ "fieldName": "HLLSketchBuild",
+ "lgK": 12,
+ "tgtHllType": "HLL_4",
+ "round": true
+ },
+ {
+ "type":"thetaSketch",
+ "name":"approxCountTheta",
+ "fieldName":"thetaSketch",
+ "size":16384,
+ "shouldFinalize":true,
+ "isInputThetaSketch":false,
+ "errorBoundsStdDev":null
+ },
+ {
+ "type":"quantilesDoublesSketch",
+ "name":"quantilesSketch",
+ "fieldName":"quantilesDoublesSketch",
+ "k":128
+ }
+ ]
+ },
+ "expectedResults":[
+ {
+ "timestamp" : "2013-09-01T00:00:00.000Z",
+ "result" : {
+ "quantilesSketch":4,
+ "approxCountTheta":4.0,
+ "approxCountHLL":4
+ }
+ }
+ ]
+ },
+ {
+ "description":"having spec on post aggregation",
+ "query":{
+ "queryType":"groupBy",
+ "dataSource":"%%DATASOURCE%%",
+ "granularity":"day",
+ "dimensions":[
+ "page"
+ ],
+ "filter":{
+ "type":"selector",
+ "dimension":"language",
+ "value":"zh"
+ },
+ "aggregations":[
+ {
+ "type":"count",
+ "name":"rows"
+ },
+ {
+ "type":"longSum",
+ "fieldName":"added",
+ "name":"added_count"
+ }
+ ],
+ "postAggregations": [
+ {
+ "type":"arithmetic",
+ "name":"added_count_times_ten",
+ "fn":"*",
+ "fields":[
+ {"type":"fieldAccess", "name":"added_count", "fieldName":"added_count"},
+ {"type":"constant", "name":"const", "value":10}
+ ]
+ }
+ ],
+ "having":{"type":"greaterThan", "aggregation":"added_count_times_ten", "value":9000},
+ "intervals":[
+ "2013-08-31T00:00/2013-09-01T00:00"
+ ]
+ },
+ "expectedResults":[]
+ },
+ {
+ "description":"having spec on post aggregation",
+ "query":{
+ "queryType":"groupBy",
+ "dataSource":"%%DATASOURCE%%",
+ "granularity":"day",
+ "dimensions":[
+ "page"
+ ],
+ "filter":{
+ "type":"selector",
+ "dimension":"language",
+ "value":"zh"
+ },
+ "aggregations":[
+ {
+ "type":"count",
+ "name":"rows"
+ },
+ {
+ "type":"longSum",
+ "fieldName":"added",
+ "name":"added_count"
+ }
+ ],
+ "postAggregations": [
+ {
+ "type":"arithmetic",
+ "name":"added_count_times_ten",
+ "fn":"*",
+ "fields":[
+ {"type":"fieldAccess", "name":"added_count", "fieldName":"added_count"},
+ {"type":"constant", "name":"const", "value":10}
+ ]
+ }
+ ],
+ "having":{"type":"greaterThan", "aggregation":"added_count_times_ten", "value":9000},
+ "intervals":[
+ "2013-09-01T00:00/2013-09-02T00:00"
+ ]
+ },
+ "expectedResults":[ {
+ "version" : "v1",
+ "timestamp" : "2013-09-01T00:00:00.000Z",
+ "event" : {
+ "added_count_times_ten" : 9050.0,
+ "page" : "Crimson Typhoon",
+ "added_count" : 905,
+ "rows" : 1
+ }
+ } ]
+ }
+]
\ No newline at end of file
diff --git a/integration-tests-ex/cases/resources/indexer/wikipedia_realtime_index_data.json b/integration-tests-ex/cases/resources/indexer/wikipedia_realtime_index_data.json
new file mode 100644
index 0000000000..626bb2df86
--- /dev/null
+++ b/integration-tests-ex/cases/resources/indexer/wikipedia_realtime_index_data.json
@@ -0,0 +1,22 @@
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 1, "deleted": 1, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 3, "deleted": 3, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYi", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 5, "deleted": 5, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 7, "deleted": 3, "delta": 4}
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Coyote Tango", "language" : "ja", "user" : "stringer", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"Japan", "region":"Kanto", "city":"Tokyo", "added": 11, "deleted": 11, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 13, "deleted": 13, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 17, "deleted": 17, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 19, "deleted": 19, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYi", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 23, "deleted": 23, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 29, "deleted": 31, "delta": -1}
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Coyote Tango", "language" : "ja", "user" : "stringer", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"Japan", "region":"Kanto", "city":"Tokyo", "added": 31, "deleted": 31, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 37, "deleted": 37, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 41, "deleted": 41, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 43, "deleted": 43, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYi", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 47, "deleted": 47, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Crimson Typhoon", "language" : "zh", "user" : "triplets", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"China", "region":"Shanxi", "city":"Taiyuan", "added": 905, "deleted": 5, "delta": 900}
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Coyote Tango", "language" : "ja", "user" : "stringer", "unpatrolled" : "true", "newPage" : "false", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Asia", "country":"Japan", "region":"Kanto", "city":"Tokyo", "added": 59, "deleted": 59, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 61, "deleted": 61, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 67, "deleted": 67, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Gypsy Danger", "language" : "en", "user" : "nuclear", "unpatrolled" : "true", "newPage" : "true", "robot": "false", "anonymous": "false", "namespace":"article", "continent":"North America", "country":"United States", "region":"Bay Area", "city":"San Francisco", "added": 71, "deleted": 71, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Striker Eureka", "language" : "en", "user" : "speed", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"wikipedia", "continent":"Australia", "country":"Australia", "region":"Cantebury", "city":"Syndey", "added": 73, "deleted": 73, "delta": 0},
+{"timestamp": "YYYY-MM-DDTHH:MM:SSZ", "page": "Cherno Alpha", "language" : "ru", "user" : "masterYi", "unpatrolled" : "false", "newPage" : "true", "robot": "true", "anonymous": "false", "namespace":"article", "continent":"Asia", "country":"Russia", "region":"Oblast", "city":"Moscow", "added": 79, "deleted": 79, "delta": 0}
diff --git a/integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories/BatchIndex.java
similarity index 83%
copy from integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java
copy to integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories/BatchIndex.java
index 74930f7abb..f11bfb6f60 100644
--- a/integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories/BatchIndex.java
@@ -17,9 +17,9 @@
* under the License.
*/
-/**
- * Code loaded into a test Druid server for integration testing.
- *
- * Code here is excluded from Jacoco inspections.
- */
-package org.apache.druid.testing.tools;
+package org.apache.druid.testsEx.categories;
+
+public class BatchIndex
+{
+
+}
diff --git a/integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories/HighAvailability.java
similarity index 83%
copy from integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java
copy to integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories/HighAvailability.java
index 74930f7abb..b12ba7f23e 100644
--- a/integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/categories/HighAvailability.java
@@ -17,9 +17,9 @@
* under the License.
*/
-/**
- * Code loaded into a test Druid server for integration testing.
- *
- * Code here is excluded from Jacoco inspections.
- */
-package org.apache.druid.testing.tools;
+package org.apache.druid.testsEx.categories;
+
+public class HighAvailability
+{
+
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/DruidClusterClient.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/DruidClusterClient.java
new file mode 100644
index 0000000000..88ee6c0afd
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/DruidClusterClient.java
@@ -0,0 +1,340 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.cluster;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.java.util.common.RE;
+import org.apache.druid.java.util.common.StringUtils;
+import org.apache.druid.java.util.common.jackson.JacksonUtils;
+import org.apache.druid.java.util.common.logger.Logger;
+import org.apache.druid.java.util.http.client.HttpClient;
+import org.apache.druid.java.util.http.client.Request;
+import org.apache.druid.java.util.http.client.response.StatusResponseHandler;
+import org.apache.druid.java.util.http.client.response.StatusResponseHolder;
+import org.apache.druid.server.DruidNode;
+import org.apache.druid.testing.guice.TestClient;
+import org.apache.druid.testsEx.config.ResolvedConfig;
+import org.apache.druid.testsEx.config.ResolvedDruidService;
+import org.apache.druid.testsEx.config.ResolvedService.ResolvedInstance;
+import org.jboss.netty.handler.codec.http.HttpMethod;
+import org.jboss.netty.handler.codec.http.HttpResponseStatus;
+
+import javax.inject.Inject;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Map;
+
+/**
+ * Client to the Druid cluster described by the test cluster
+ * configuration. Various clients exist for specific services or tasks:
+ * this client is about the cluster as a whole, with operations used
+ * by tests.
+ */
+public class DruidClusterClient
+{
+ private static final Logger log = new Logger(DruidClusterClient.class);
+
+ private final ResolvedConfig config;
+ private final HttpClient httpClient;
+ private final ObjectMapper jsonMapper;
+
+ @Inject
+ public DruidClusterClient(
+ ResolvedConfig config,
+ @TestClient HttpClient httpClient,
+ ObjectMapper jsonMapper
+ )
+ {
+ this.config = config;
+ this.httpClient = httpClient;
+ this.jsonMapper = jsonMapper;
+ }
+
+ public ResolvedConfig config()
+ {
+ return config;
+ }
+
+ /**
+ * Return the configuration object for the leader for
+ * the given service.
+ */
+ public ResolvedInstance leader(ResolvedDruidService service)
+ {
+ if (service.requireInstances().size() == 1) {
+ return service.instance();
+ }
+ String leader = getLeader(service.service());
+ return service.findHost(leader);
+ }
+
+ /**
+ * Returns the leader URL for the given service.
+ */
+ public String getLeader(String service)
+ {
+ String url = StringUtils.format(
+ "%s/druid/%s/v1/leader",
+ config.routerUrl(),
+ service
+ );
+ return get(url).getContent();
+ }
+
+ /**
+ * Checks if a node is healthy, given the service and instance.
+ *
+ * @return `true` if the message returns `true`, `false` if the
+ * message fails (indicating the node is not healthy.)
+ */
+ public boolean isHealthy(ResolvedDruidService service, ResolvedInstance instance)
+ {
+ return isHealthy(service.resolveUrl(instance));
+ }
+
+ /**
+ * Checks if a node is healthy given the URL for that node.
+ *
+ * @return `true` if the message returns `true`, `false` if the
+ * message fails (indicating the node is not healthy.)
+ */
+ public boolean isHealthy(String serviceUrl)
+ {
+ try {
+ String url = StringUtils.format(
+ "%s/status/health",
+ serviceUrl
+ );
+ return getAs(url, Boolean.class);
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns the URL for the lead coordinator.
+ */
+ public String leadCoordinatorUrl()
+ {
+ ResolvedDruidService coord = config.requireCoordinator();
+ ResolvedInstance leader = leader(coord);
+ return coord.resolveUrl(leader);
+ }
+
+ /**
+ * Calls the `/v1/cluster` endpoint on the lead coordinator.
+ */
+ public Map<String, Object> coordinatorCluster()
+ {
+ String url = StringUtils.format(
+ "%s/druid/coordinator/v1/cluster",
+ leadCoordinatorUrl()
+ );
+ return getAs(url, JacksonUtils.TYPE_REFERENCE_MAP_STRING_OBJECT);
+ }
+
+ /**
+ * Calls the `/v1/cluster` endpoint on the router.
+ */
+ public Map<String, Object> routerCluster()
+ {
+ String url = StringUtils.format(
+ "%s/druid/router/v1/cluster",
+ config.routerUrl()
+ );
+ return getAs(url, JacksonUtils.TYPE_REFERENCE_MAP_STRING_OBJECT);
+ }
+
+ /**
+ * Low-level HTTP get for the given URL.
+ */
+ public StatusResponseHolder get(String url)
+ {
+ try {
+ StatusResponseHolder response = httpClient.go(
+ new Request(HttpMethod.GET, new URL(url)),
+ StatusResponseHandler.getInstance()
+ ).get();
+
+ if (!response.getStatus().equals(HttpResponseStatus.OK)) {
+ throw new ISE(
+ "Error from GET [%s] status [%s] content [%s]",
+ url,
+ response.getStatus(),
+ response.getContent()
+ );
+ }
+ return response;
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Issue a GET command and deserialize the JSON result to the given class.
+ */
+ public <T> T getAs(String url, Class<T> clazz)
+ {
+ StatusResponseHolder response = get(url);
+ try {
+ return jsonMapper.readValue(response.getContent(), clazz);
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Issue a GET command and deserialize the JSON result to the given type reference.
+ */
+ public <T> T getAs(String url, TypeReference<T> typeRef)
+ {
+ StatusResponseHolder response = get(url);
+ try {
+ return jsonMapper.readValue(response.getContent(), typeRef);
+ }
+ catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Call the `/status/selfDiscovered` given a node URL.
+ */
+ public boolean selfDiscovered(String nodeUrl)
+ {
+ String url = StringUtils.format(
+ "%s/status/selfDiscovered",
+ nodeUrl
+ );
+ try {
+ get(url);
+ }
+ catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Validates the cluster by waiting for each service declared in the
+ * test configuration to report that it is healthy. By doing this at the
+ * start of the test, individual tests don't have to retry to handle the
+ * race condition that otherwise occurs between cluster and test startup.
+ */
+ public void validate()
+ {
+ log.info("Starting cluster validation");
+ for (ResolvedDruidService service : config.requireDruid().values()) {
+ for (ResolvedInstance instance : service.requireInstances()) {
+ validateInstance(service, instance);
+ }
+ }
+ log.info("Cluster validated.");
+ }
+
+ /**
+ * Validate an instance by waiting for it to report that it is healthy.
+ */
+ private void validateInstance(ResolvedDruidService service, ResolvedInstance instance)
+ {
+ int timeoutMs = config.readyTimeoutSec() * 1000;
+ int pollMs = config.readyPollMs();
+ long startTime = System.currentTimeMillis();
+ long updateTime = startTime + 5000;
+ while (System.currentTimeMillis() - startTime < timeoutMs) {
+ if (isHealthy(service, instance)) {
+ log.info(
+ "Service %s, host %s is ready",
+ service.service(),
+ instance.clientHost());
+ return;
+ }
+ long currentTime = System.currentTimeMillis();
+ if (currentTime > updateTime) {
+ log.info(
+ "Service %s, host %s not ready, retrying",
+ service.service(),
+ instance.clientHost());
+ updateTime = currentTime + 5000;
+ }
+ try {
+ Thread.sleep(pollMs);
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException("Interrupted during cluster validation");
+ }
+ }
+ throw new RE(
+ StringUtils.format("Service %s, instance %s not ready after %d ms.",
+ service.service(),
+ instance.tag() == null ? "<default>" : instance.tag(),
+ timeoutMs));
+ }
+
+ /**
+ * Wait for an instance to become ready given the URL and a description of
+ * the service.
+ */
+ public void waitForNodeReady(String label, String url)
+ {
+ int timeoutMs = config.readyTimeoutSec() * 1000;
+ int pollMs = config.readyPollMs();
+ long startTime = System.currentTimeMillis();
+ while (System.currentTimeMillis() - startTime < timeoutMs) {
+ if (isHealthy(url)) {
+ log.info(
+ "Service %s, url %s is ready",
+ label,
+ url);
+ return;
+ }
+ log.info(
+ "Service %s, url %s not ready, retrying",
+ label,
+ url);
+ try {
+ Thread.sleep(pollMs);
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException("Interrupted while waiting for note to be ready");
+ }
+ }
+ throw new RE(
+ StringUtils.format("Service %s, url %s not ready after %d ms.",
+ label,
+ url,
+ timeoutMs));
+ }
+
+ public String nodeUrl(DruidNode node)
+ {
+ return StringUtils.format(
+ "http://%s:%s",
+ config.hasProxy() ? config.proxyHost() : node.getHost(),
+ node.getPlaintextPort()
+ );
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/KafkaClient.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/KafkaClient.java
new file mode 100644
index 0000000000..91da889c68
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/KafkaClient.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.cluster;
+
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.testsEx.config.ResolvedService.ResolvedKafka;
+import org.apache.kafka.clients.admin.Admin;
+import org.apache.kafka.clients.admin.DescribeClusterResult;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+
+/**
+ * Simple Kafka client for a test cluster.
+ * <p>
+ * At present, this client contains just enough functionality to validate
+ * that Kafka is up. It can be expanded to gather Kafka code currently
+ * copy/pasted in tests.
+ */
+public class KafkaClient
+{
+ private final ResolvedKafka config;
+ private Admin admin;
+
+ public KafkaClient(ResolvedKafka config)
+ {
+ this.config = config;
+ }
+
+ public void open()
+ {
+ validate();
+ }
+
+ public Admin adminClient()
+ {
+ if (admin == null) {
+ final Map<String, Object> props = new HashMap<>();
+ props.put("bootstrap.servers", config.bootstrap());
+ admin = Admin.create(props);
+ }
+ return admin;
+ }
+
+ public void validate()
+ {
+ DescribeClusterResult result = adminClient().describeCluster();
+ try {
+ if (result.nodes().get().isEmpty()) {
+ throw new ISE("No nodes found in Kafka cluster");
+ }
+ }
+ catch (InterruptedException | ExecutionException e) {
+ throw new ISE(e, "Could not connect to Kafka");
+ }
+ }
+
+ public void close()
+ {
+ if (admin != null) {
+ admin.close();
+ admin = null;
+ }
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/MetastoreClient.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/MetastoreClient.java
new file mode 100644
index 0000000000..86e0ece8d5
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/MetastoreClient.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.cluster;
+
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.metadata.MetadataStorageConnector;
+import org.apache.druid.metadata.SQLMetadataConnector;
+import org.skife.jdbi.v2.DBI;
+import org.skife.jdbi.v2.Handle;
+
+import javax.inject.Inject;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * Simple test-time client to the MySQL metastore.
+ * <p>
+ * Used to verify that the DB is up and available. The JDBC
+ * connection can be used to query the metadata DB for tests.
+ * <p>
+ * Also handles running metastore setup queries on test
+ * startup. Write such queries to be idempotent: REPLACE
+ * rather than INSERT, for example.
+ */
+public class MetastoreClient
+{
+ // See SQLMetadataConnector.getValidationQuery()
+ // That instance isn't available here, so we punt.
+ public static String VALIDATION_QUERY = "SELECT 1";
+
+ private DBI dbi;
+ private Handle handle;
+
+ @Inject
+ public MetastoreClient(MetadataStorageConnector connector)
+ {
+ SQLMetadataConnector sqlConnector = (SQLMetadataConnector) connector;
+ this.dbi = sqlConnector.getDBI();
+ this.handle = dbi.open();
+ }
+
+ public void validate()
+ {
+ boolean ok = execute(VALIDATION_QUERY);
+ if (!ok) {
+ throw new ISE("Metadata store validation failed");
+ }
+ }
+
+ public Connection connection()
+ {
+ return handle.getConnection();
+ }
+
+ public boolean execute(String sql)
+ {
+ try {
+ return connection().prepareStatement(sql).execute();
+ }
+ catch (SQLException e) {
+ throw new ISE(e, "Metadata query failed");
+ }
+ }
+
+ public void close()
+ {
+ handle.close();
+ handle = null;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/ZooKeeperClient.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/ZooKeeperClient.java
new file mode 100644
index 0000000000..cad00d1ae4
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/cluster/ZooKeeperClient.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.cluster;
+
+import org.apache.curator.ensemble.EnsembleProvider;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.druid.curator.CuratorConfig;
+import org.apache.druid.curator.CuratorModule;
+import org.apache.druid.curator.ExhibitorConfig;
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.testsEx.config.ResolvedConfig;
+import org.apache.druid.testsEx.config.ResolvedService.ResolvedZk;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Test oriented ZooKeeper client.
+ * <p>
+ * Currently contains just enough functionality to verify that
+ * ZK is ready.
+ */
+public class ZooKeeperClient
+{
+ private final ResolvedConfig clusterConfig;
+ private final ResolvedZk config;
+ private CuratorFramework curatorFramework;
+
+ public ZooKeeperClient(ResolvedConfig config)
+ {
+ this.clusterConfig = config;
+ this.config = config.zk();
+ if (this.config == null) {
+ throw new ISE("ZooKeeper not configured");
+ }
+ prepare();
+ awaitReady();
+ }
+
+ private void prepare()
+ {
+ CuratorConfig curatorConfig = clusterConfig.toCuratorConfig();
+ ExhibitorConfig exhibitorConfig = clusterConfig.toExhibitorConfig();
+ EnsembleProvider ensembleProvider = CuratorModule.createEnsembleProvider(curatorConfig, exhibitorConfig);
+ curatorFramework = CuratorModule.createCurator(curatorConfig, ensembleProvider);
+ }
+
+ private void awaitReady()
+ {
+ int timeoutSec = config.startTimeoutSecs();
+ if (timeoutSec == 0) {
+ timeoutSec = 5;
+ }
+ try {
+ curatorFramework.start();
+ curatorFramework.blockUntilConnected(timeoutSec, TimeUnit.SECONDS);
+ }
+ catch (InterruptedException e) {
+ throw new ISE("ZooKeeper timed out waiting for connect");
+ }
+ }
+
+ public CuratorFramework curator()
+ {
+ return curatorFramework;
+ }
+
+ public void close()
+ {
+ curatorFramework.close();
+ curatorFramework = null;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Cluster.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Cluster.java
new file mode 100644
index 0000000000..d45ec864d2
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Cluster.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates the cluster configuration to use for a test. If omitted, the
+ * cluster configuration is the same as the category. Use this annotation
+ * on a category class to indicate that category shares configuration with
+ * another category. Example:<pre>{@code
+ * @Cluster(BatchIndex.class)
+ * public class InputFormat
+ * {
+ * }</pre>
+ * Note that a category uses a single cluster configuration. It is not
+ * possible to have <i>tests</i> choose the cluster type because Maven must
+ * start the cluster before running tests, thus clusters are a category-level
+ * concept, not a test-level concept.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+@Target(ElementType.TYPE)
+public @interface Cluster
+{
+ Class<?> value();
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ClusterConfig.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ClusterConfig.java
new file mode 100644
index 0000000000..363f7648b0
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ClusterConfig.java
@@ -0,0 +1,342 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.testsEx.config.ServiceConfig.DruidConfig;
+import org.apache.druid.testsEx.config.ServiceConfig.ZKConfig;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Java representation of the test configuration YAML.
+ * <p>
+ * This object is primarily de-serialized as the files are written by hand
+ * to define a test. It is serialized only for debugging.
+ */
+public class ClusterConfig
+{
+ public enum ClusterType
+ {
+ docker,
+ k8s,
+ local,
+ disabled
+ }
+
+ private boolean isResource;
+ private String basePath;
+
+ @JsonProperty("type")
+ private ClusterType type;
+ @JsonProperty("proxyHost")
+ private String proxyHost;
+ @JsonProperty("include")
+ private List<String> include;
+ @JsonProperty("readyTimeoutSec")
+ private int readyTimeoutSec;
+ @JsonProperty("readyPollMs")
+ private int readyPollMs;
+ @JsonProperty("zk")
+ private ZKConfig zk;
+ @JsonProperty("metastore")
+ private MetastoreConfig metastore;
+ @JsonProperty("kafka")
+ private KafkaConfig kafka;
+ @JsonProperty("druid")
+ private Map<String, DruidConfig> druidServices;
+ @JsonProperty("settings")
+ private Map<String, Object> settings;
+ @JsonProperty("properties")
+ private Map<String, Object> properties;
+ @JsonProperty("metastoreInit")
+ private List<MetastoreStmt> metastoreInit;
+ @JsonProperty("datasourceSuffix")
+ private String datasourceSuffix;
+
+ /**
+ * Delay after initializing the DB to wait for the coordinator to notice
+ * the changes. This is a pure hack to work around an optimization in
+ * the coordinator that would otherwise ignore the changes.
+ * Set to a bit longer than the coordinator druid.manager.segments.pollDuration
+ * property.
+ */
+ @JsonProperty("metastoreInitDelaySec")
+ private int metastoreInitDelaySec;
+
+ public ClusterConfig()
+ {
+ }
+
+ public ClusterConfig(ClusterConfig from)
+ {
+ this.type = from.type;
+ this.proxyHost = from.proxyHost;
+ this.include = null; // Tell IntelliJ inspections we don't want to copy this.
+ this.readyTimeoutSec = from.readyTimeoutSec;
+ this.readyPollMs = from.readyPollMs;
+ this.isResource = from.isResource;
+ this.basePath = from.basePath;
+ this.metastoreInitDelaySec = from.metastoreInitDelaySec;
+ this.datasourceSuffix = from.datasourceSuffix;
+ if (from.include != null) {
+ this.include = new ArrayList<>(from.include);
+ }
+ this.zk = from.zk;
+ this.metastore = from.metastore;
+ this.kafka = from.kafka;
+ if (from.druidServices != null) {
+ this.druidServices = new HashMap<>(from.druidServices);
+ }
+ if (from.properties != null) {
+ this.properties = new HashMap<>(from.properties);
+ }
+ if (from.settings != null) {
+ this.settings = new HashMap<>(from.settings);
+ }
+ if (from.metastoreInit != null) {
+ this.metastoreInit = new ArrayList<>(from.metastoreInit);
+ }
+ }
+
+ public static ClusterConfig loadFromFile(String filePath)
+ {
+ return loadFromFile(new File(filePath));
+ }
+
+ public static ClusterConfig loadFromFile(File configFile)
+ {
+ ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
+ try {
+ ClusterConfig config = mapper.readValue(configFile, ClusterConfig.class);
+ config.isResource = false;
+ config.basePath = configFile.getParent();
+ return config;
+ }
+ catch (IOException e) {
+ throw new ISE(e, "Failed to load config file: " + configFile);
+ }
+ }
+
+ public static ClusterConfig loadFromResource(String resource)
+ {
+ ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
+ try (InputStream is = TestConfigs.class.getResourceAsStream(resource)) {
+ if (is == null) {
+ throw new ISE("Config resource not found: " + resource);
+ }
+ ClusterConfig config = mapper.readValue(is, ClusterConfig.class);
+ config.isResource = true;
+ return config;
+ }
+ catch (IOException e) {
+ throw new ISE(e, "Failed to load config resource: " + resource);
+ }
+ }
+
+ public ResolvedConfig resolve(String clusterName)
+ {
+ return new ResolvedConfig(clusterName, resolveIncludes());
+ }
+
+ public ClusterConfig resolveIncludes()
+ {
+ if (include == null || include.isEmpty()) {
+ return this;
+ }
+ ClusterConfig included = null;
+ for (String entry : include) {
+ ClusterConfig child = loadInclude(entry);
+ if (included == null) {
+ included = child;
+ } else {
+ included = included.merge(child);
+ }
+ }
+ return included.merge(this);
+ }
+
+ private ClusterConfig loadInclude(String includeName)
+ {
+ if (isResource) {
+ return loadFromResource(includeName);
+ } else {
+ File file = new File(new File(basePath), includeName);
+ return loadFromFile(file);
+ }
+ }
+
+ @JsonProperty("type")
+ @JsonInclude(Include.NON_DEFAULT)
+ public ClusterType type()
+ {
+ return type;
+ }
+
+ @JsonProperty("readyTimeoutSec")
+ @JsonInclude(Include.NON_DEFAULT)
+ public int readyTimeoutSec()
+ {
+ return readyTimeoutSec;
+ }
+
+ @JsonProperty("readyPollMs")
+ @JsonInclude(Include.NON_DEFAULT)
+ public int readyPollMs()
+ {
+ return readyPollMs;
+ }
+
+ @JsonProperty("proxyHost")
+ @JsonInclude(Include.NON_NULL)
+ public String proxyHost()
+ {
+ return proxyHost;
+ }
+
+ @JsonProperty("include")
+ @JsonInclude(Include.NON_NULL)
+ public List<String> include()
+ {
+ return include;
+ }
+
+ @JsonProperty("zk")
+ @JsonInclude(Include.NON_NULL)
+ public ZKConfig zk()
+ {
+ return zk;
+ }
+
+ @JsonProperty("metastore")
+ @JsonInclude(Include.NON_NULL)
+ public MetastoreConfig metastore()
+ {
+ return metastore;
+ }
+
+ @JsonProperty("kafka")
+ @JsonInclude(Include.NON_NULL)
+ public KafkaConfig kafka()
+ {
+ return kafka;
+ }
+
+ @JsonProperty("druid")
+ @JsonInclude(Include.NON_NULL)
+ public Map<String, DruidConfig> druid()
+ {
+ return druidServices;
+ }
+
+ @JsonProperty("settings")
+ @JsonInclude(Include.NON_NULL)
+ public Map<String, Object> settings()
+ {
+ return settings;
+ }
+
+ @JsonProperty("properties")
+ @JsonInclude(Include.NON_NULL)
+ public Map<String, Object> properties()
+ {
+ return properties;
+ }
+
+ @JsonProperty("metastoreInit")
+ @JsonInclude(Include.NON_NULL)
+ public List<MetastoreStmt> metastoreInit()
+ {
+ return metastoreInit;
+ }
+
+ @JsonProperty("metastoreInitDelaySec")
+ @JsonInclude(Include.NON_DEFAULT)
+ public int metastoreInitDelaySec()
+ {
+ return metastoreInitDelaySec;
+ }
+
+ @JsonProperty("datasourceSuffix")
+ @JsonInclude(Include.NON_NULL)
+ public String datasourceSuffix()
+ {
+ return datasourceSuffix;
+ }
+
+ @Override
+ public String toString()
+ {
+ return TestConfigs.toYaml(this);
+ }
+
+ public ClusterConfig merge(ClusterConfig overrides)
+ {
+ ClusterConfig merged = new ClusterConfig(this);
+ if (overrides.readyTimeoutSec != 0) {
+ merged.readyTimeoutSec = overrides.readyTimeoutSec;
+ }
+ if (overrides.proxyHost != null) {
+ merged.proxyHost = overrides.proxyHost;
+ }
+ // Includes are already considered.
+ if (overrides.zk != null) {
+ merged.zk = overrides.zk;
+ }
+ if (overrides.metastore != null) {
+ merged.metastore = overrides.metastore;
+ }
+ if (overrides.kafka != null) {
+ merged.kafka = overrides.kafka;
+ }
+ if (merged.druidServices == null) {
+ merged.druidServices = overrides.druidServices;
+ } else if (overrides.druidServices != null) {
+ merged.druidServices.putAll(overrides.druidServices);
+ }
+ if (merged.settings == null) {
+ merged.settings = overrides.settings;
+ } else if (overrides.settings != null) {
+ merged.settings.putAll(overrides.settings);
+ }
+ if (merged.properties == null) {
+ merged.properties = overrides.properties;
+ } else if (overrides.properties != null) {
+ merged.properties.putAll(overrides.properties);
+ }
+ if (merged.metastoreInit == null) {
+ merged.metastoreInit = overrides.metastoreInit;
+ } else if (overrides.metastoreInit != null) {
+ merged.metastoreInit.addAll(overrides.metastoreInit);
+ }
+ return merged;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ClusterConfigTest.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ClusterConfigTest.java
new file mode 100644
index 0000000000..1531edff0f
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ClusterConfigTest.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import org.apache.druid.testing.IntegrationTestingConfig;
+import org.apache.druid.testsEx.config.ClusterConfig.ClusterType;
+import org.apache.druid.testsEx.config.ResolvedService.ResolvedZk;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Sanity check of an example YAML config file using the Java
+ * deserialization classes.
+ */
+public class ClusterConfigTest
+{
+ @Test
+ public void testYaml() throws FileNotFoundException
+ {
+ ClusterConfig config = ClusterConfig.loadFromResource("/config-test/test.yaml");
+ // Uncomment this line to see the full config with includes resolved.
+ //System.out.println(config.resolveIncludes());
+
+ ResolvedConfig resolved = config.resolve("Test");
+ assertEquals(ClusterType.docker, resolved.type());
+ assertEquals(ResolvedConfig.DEFAULT_READY_TIMEOUT_SEC, resolved.readyTimeoutSec());
+ assertEquals(ResolvedConfig.DEFAULT_READY_POLL_MS, resolved.readyPollMs());
+ assertEquals(3, resolved.properties().size());
+
+ ResolvedZk zk = resolved.zk();
+ assertNotNull(zk);
+ assertEquals("zookeeper", zk.service());
+ assertEquals(1, zk.requireInstances().size());
+ assertEquals(2181, zk.instance().port());
+ assertEquals(2181, zk.instance().clientPort());
+ assertEquals("zookeeper", zk.instance().host());
+ assertEquals("localhost", zk.instance().clientHost());
+ assertEquals("zookeeper:2181", zk.clusterHosts());
+ assertEquals("localhost:2181", zk.clientHosts());
+
+ ResolvedMetastore ms = resolved.metastore();
+ assertNotNull(ms);
+ assertEquals("metastore", ms.service());
+ assertEquals(1, ms.requireInstances().size());
+ assertEquals("jdbc:mysql://localhost:3306/druid", ms.connectURI());
+ assertEquals("druid", ms.user());
+ assertEquals("diurd", ms.password());
+
+ ResolvedDruidService service = resolved.requireBroker();
+ assertNotNull(service);
+ assertEquals("broker", service.service());
+ assertEquals("http://localhost:8082", service.clientUrl());
+
+ service = resolved.requireRouter();
+ assertNotNull(service);
+ assertEquals("router", service.service());
+ assertEquals("http://localhost:8888", service.clientUrl());
+ assertEquals("http://localhost:8888", resolved.routerUrl());
+
+ File userEnv = new File(
+ new File(
+ System.getProperty("user.home"),
+ "druid-it"),
+ "Test.env");
+ try (PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(userEnv), StandardCharsets.UTF_8))) {
+ out.println("druid_user_var=user");
+ }
+
+ System.setProperty("druid_sys_prop", "sys");
+ Map<String, Object> props = resolved.toProperties();
+ // Added from ZK section
+ assertEquals("localhost:2181", props.get("druid.zk.service.zkHosts"));
+ // Generic property
+ assertEquals("howdy", props.get("my.test.property"));
+ // Mapped from settings
+ assertEquals("myBucket", props.get("druid.test.config.cloudBucket"));
+ assertEquals("myPath", props.get("druid.test.config.cloudPath"));
+ assertEquals("secret", props.get("druid.test.config.s3AccessKey"));
+ // From settings, overridden in properties
+ assertEquals("myRegion", props.get("druid.test.config.cloudRegion"));
+ // System property
+ assertEquals("sys", props.get("druid.test.config.sys_prop"));
+ // From user override
+ assertEquals("user", props.get("druid.test.config.user_var"));
+
+ // Test plumbing through the test config
+ Properties properties = new Properties();
+ properties.putAll(props);
+ IntegrationTestingConfig testingConfig = new IntegrationTestingConfigEx(resolved, properties);
+ assertEquals("myBucket", testingConfig.getCloudBucket());
+ assertEquals("myPath", testingConfig.getCloudPath());
+ // From settings, overridden in properties
+ assertEquals("myRegion", testingConfig.getCloudRegion());
+ }
+}
diff --git a/integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Configure.java
similarity index 60%
copy from integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java
copy to integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Configure.java
index 74930f7abb..99e8b7e3cb 100644
--- a/integration-tests-ex/it-tools/src/main/java/org/apache/druid/testing/tools/package.java
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Configure.java
@@ -17,9 +17,26 @@
* under the License.
*/
+package org.apache.druid.testsEx.config;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
/**
- * Code loaded into a test Druid server for integration testing.
- *
- * Code here is excluded from Jacoco inspections.
+ * Indicates a method to use to configure the {@link Initializer.Builder}. Must be of the
+ * form:
+ * <pre><code>
+ * @Configure
+ * public static void configure(Initializer.Builder builder)
+ * {
+ * builder.something(arg);
+ * }
+ * </code</pre>
*/
-package org.apache.druid.testing.tools;
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Configure
+{
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/DruidTestRunner.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/DruidTestRunner.java
new file mode 100644
index 0000000000..5e65ec7f9d
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/DruidTestRunner.java
@@ -0,0 +1,208 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import junitparams.JUnitParamsRunner;
+import org.apache.druid.java.util.common.UOE;
+import org.junit.experimental.categories.Category;
+import org.junit.runners.model.InitializationError;
+import org.junit.runners.model.Statement;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+
+/**
+ * Test runner for Druid integration tests. Loads test configuration. Initializes
+ * Guice. Injects dependencies into the test. Runs the tests.
+ * Shuts down afterwards. Since cluster configuration and health checks are a bit
+ * expensive, does that work once per test class rather than once per test method.
+ * <p>
+ * Note that our Guice usage is a bit awkward for tests. Druid modules define
+ * objects that must be lifecycle managed, but as lazy singletons, which means
+ * that they might be created after the lifecycle starts, which causes the dreaded
+ * "it doesn't work that way" message. The awkward workaround is to ask to inject
+ * test members <i>before</i> starting the lifecycle, so that the injection creates
+ * a reference, which creates the object, which registers it in the lifecycle. We
+ * should fix this issue. Until then, the awkwardness is hidden in this test runner.
+ * <p>
+ * Extends the parameterize test runner, so your Druid ITs can also use parameters.
+ */
+public class DruidTestRunner extends JUnitParamsRunner
+{
+ private class CloseInitializer extends Statement
+ {
+ private final Statement next;
+
+ public CloseInitializer(Statement next)
+ {
+ this.next = next;
+ }
+
+ @Override
+ public void evaluate() throws Throwable
+ {
+ next.evaluate();
+ if (initializer != null) {
+ initializer.close();
+ initializer = null;
+ }
+ }
+ }
+
+ private Initializer initializer;
+
+ public DruidTestRunner(Class<?> testClass) throws InitializationError
+ {
+ super(testClass);
+ }
+
+ @Override
+ protected Object createTest() throws Exception
+ {
+ Object test = super.createTest();
+ if (initializer == null) {
+ initializer = buildInitializer(test);
+ } else {
+ initializer.injector().injectMembers(test);
+ }
+ return test;
+ }
+
+ private Initializer buildInitializer(Object test)
+ {
+ Class<?> testClass = test.getClass();
+ Category[] annotations = testClass.getAnnotationsByType(Category.class);
+ if (annotations.length == 0) {
+ throw new UOE(
+ "Class % must have a @Category annotation",
+ testClass.getSimpleName()
+ );
+ }
+ if (annotations.length != 1) {
+ throw new UOE(
+ "Class % must have exactly one @Category annotation",
+ testClass.getSimpleName()
+ );
+ }
+ Class<?>[] categories = annotations[0].value();
+ if (categories.length == 0) {
+ throw new UOE(
+ "Class % must have a @Category value",
+ testClass.getSimpleName()
+ );
+ }
+ if (categories.length != 1) {
+ throw new UOE(
+ "Class % must have exactly one @Category value",
+ testClass.getSimpleName()
+ );
+ }
+ Class<?> category = category(testClass);
+ String clusterName = inferCluster(category);
+ Initializer.Builder builder = Initializer.builder(clusterName)
+ .test(test)
+ .validateCluster();
+ for (Method method : testClass.getMethods()) {
+ if (method.getAnnotation(Configure.class) == null) {
+ continue;
+ }
+ final int requiredMods = Modifier.STATIC | Modifier.PUBLIC;
+ if ((method.getModifiers() & requiredMods) != requiredMods) {
+ throw new UOE(
+ "Method %s annotated with @Configure must be public static",
+ method.getName()
+ );
+ }
+ try {
+ method.invoke(null, builder);
+ }
+ catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ throw new UOE(
+ "Call to Method %s annotated with @Configure failed: %s",
+ method.getName(),
+ e.getMessage()
+ );
+ }
+ }
+ return builder.build();
+ }
+
+ /**
+ * Resolve the {@code @Category} annotation for the test class.
+ */
+ private Class<?> category(Class<?> testClass)
+ {
+ Category[] annotations = testClass.getAnnotationsByType(Category.class);
+ if (annotations.length == 0) {
+ throw new UOE(
+ "Class % must have a @Category annotation",
+ testClass.getSimpleName()
+ );
+ }
+ if (annotations.length != 1) {
+ throw new UOE(
+ "Class % must have exactly one @Category annotation",
+ testClass.getSimpleName()
+ );
+ }
+ Class<?>[] categories = annotations[0].value();
+ if (categories.length == 0) {
+ throw new UOE(
+ "Class % must have a @Category value",
+ testClass.getSimpleName()
+ );
+ }
+ if (categories.length != 1) {
+ throw new UOE(
+ "Class % must have exactly one @Category value",
+ testClass.getSimpleName()
+ );
+ }
+ return categories[0];
+ }
+
+ /**
+ * Resolve the optional {@code @Cluster} annotation on the test category.
+ * If omitted, the category itself is the cluster name.
+ */
+ private String inferCluster(Class<?> category)
+ {
+ String categoryName = category.getSimpleName();
+ Cluster[] annotations = category.getAnnotationsByType(Cluster.class);
+ if (annotations.length == 0) {
+ return categoryName;
+ }
+ if (annotations.length != 1) {
+ throw new UOE(
+ "Category % must have no more than one @Cluster annotation",
+ category.getSimpleName()
+ );
+ }
+ Class<?> clusterClass = annotations[0].value();
+ return clusterClass.getSimpleName();
+ }
+
+ @Override
+ protected Statement withAfterClasses(Statement statement)
+ {
+ return new CloseInitializer(super.withAfterClasses(statement));
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java
new file mode 100644
index 0000000000..a2899a0844
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/Initializer.java
@@ -0,0 +1,590 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.google.common.collect.ImmutableList;
+import com.google.inject.Binder;
+import com.google.inject.Injector;
+import com.google.inject.Key;
+import com.google.inject.Module;
+import com.google.inject.Provides;
+import org.apache.druid.cli.GuiceRunnable;
+import org.apache.druid.curator.CuratorModule;
+import org.apache.druid.curator.discovery.DiscoveryModule;
+import org.apache.druid.discovery.DruidNodeDiscoveryProvider;
+import org.apache.druid.guice.AnnouncerModule;
+import org.apache.druid.guice.DruidProcessingConfigModule;
+import org.apache.druid.guice.JsonConfigProvider;
+import org.apache.druid.guice.LazySingleton;
+import org.apache.druid.guice.ManageLifecycle;
+import org.apache.druid.guice.PolyBind;
+import org.apache.druid.guice.SQLMetadataStorageDruidModule;
+import org.apache.druid.guice.StartupInjectorBuilder;
+import org.apache.druid.guice.StorageNodeModule;
+import org.apache.druid.guice.annotations.Client;
+import org.apache.druid.guice.annotations.EscalatedClient;
+import org.apache.druid.guice.annotations.Self;
+import org.apache.druid.guice.http.HttpClientModule;
+import org.apache.druid.guice.security.EscalatorModule;
+import org.apache.druid.initialization.CoreInjectorBuilder;
+import org.apache.druid.initialization.DruidModule;
+import org.apache.druid.jackson.DruidServiceSerializerModifier;
+import org.apache.druid.jackson.StringObjectPairList;
+import org.apache.druid.jackson.ToStringObjectPairListDeserializer;
+import org.apache.druid.java.util.common.IAE;
+import org.apache.druid.java.util.common.StringUtils;
+import org.apache.druid.java.util.common.lifecycle.Lifecycle;
+import org.apache.druid.java.util.common.logger.Logger;
+import org.apache.druid.java.util.emitter.core.LoggingEmitter;
+import org.apache.druid.java.util.emitter.core.LoggingEmitterConfig;
+import org.apache.druid.java.util.emitter.service.ServiceEmitter;
+import org.apache.druid.java.util.http.client.HttpClient;
+import org.apache.druid.metadata.MetadataStorageConnector;
+import org.apache.druid.metadata.MetadataStorageConnectorConfig;
+import org.apache.druid.metadata.MetadataStorageProvider;
+import org.apache.druid.metadata.MetadataStorageTablesConfig;
+import org.apache.druid.metadata.NoopMetadataStorageProvider;
+import org.apache.druid.metadata.SQLMetadataConnector;
+import org.apache.druid.metadata.storage.mysql.MySQLConnector;
+import org.apache.druid.metadata.storage.mysql.MySQLConnectorDriverConfig;
+import org.apache.druid.metadata.storage.mysql.MySQLConnectorSslConfig;
+import org.apache.druid.metadata.storage.mysql.MySQLMetadataStorageModule;
+import org.apache.druid.server.DruidNode;
+import org.apache.druid.testing.IntegrationTestingConfig;
+import org.apache.druid.testing.IntegrationTestingConfigProvider;
+import org.apache.druid.testing.guice.TestClient;
+import org.apache.druid.testsEx.cluster.DruidClusterClient;
+import org.apache.druid.testsEx.cluster.MetastoreClient;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+
+/**
+ * The magic needed to piece together enough of Druid to allow clients to
+ * run without server dependencies being pulled in. Used to set up the
+ * Guice injector used to inject members into integration tests, while
+ * reading configuration from the docker.yaml or similar test
+ * configuration file.
+ * <p>
+ * Much of the work here deals the tedious task of assembling Druid
+ * modules, sometimes using copy/past to grab the part that a client
+ * wants (such as object deserialization) without the parts that the
+ * server needs (and which would introduce the need for unused configuration
+ * just to make dependencies work.)
+ * <p>
+ * See the documentation for these test for the "user view" of this
+ * class and its configuration.
+ */
+public class Initializer
+{
+ public static final String TEST_CONFIG_PROPERTY = "testConfig";
+ public static final String TEST_CONFIG_VAR = "TEST_CONFIG";
+ public static final String CLUSTER_RESOURCES = "/cluster/";
+ public static final String CLUSTER_CONFIG_RESOURCE = CLUSTER_RESOURCES + "%s/%s.yaml";
+ public static final String CLUSTER_CONFIG_DEFAULT = "docker";
+ public static final String METASTORE_CONFIG_PROPERTY = "sqlConfig";
+ public static final String METASTORE_CONFIG_RESOURCE = "/metastore/%s.sql";
+ public static final String METASTORE_CONFIG_DEFAULT = "init";
+
+ private static final Logger log = new Logger(Initializer.class);
+
+ public static String queryFile(Class<?> category, String fileName)
+ {
+ return CLUSTER_RESOURCES + category.getSimpleName() + "/queries/" + fileName;
+ }
+
+ private static class TestModule implements DruidModule
+ {
+ ResolvedConfig config;
+
+ public TestModule(ResolvedConfig config)
+ {
+ this.config = config;
+ }
+
+ @Override
+ public void configure(Binder binder)
+ {
+ binder
+ .bind(ResolvedConfig.class)
+ .toInstance(config);
+ binder
+ .bind(IntegrationTestingConfig.class)
+ .to(IntegrationTestingConfigEx.class)
+ .in(LazySingleton.class);
+ binder
+ .bind(MetastoreClient.class)
+ .in(LazySingleton.class);
+
+ // Dummy DruidNode instance to make Guice happy. This instance is unused.
+ binder
+ .bind(DruidNode.class)
+ .annotatedWith(Self.class)
+ .toInstance(
+ new DruidNode("integration-tests", "localhost", false, 9191, null, null, true, false));
+
+ // Reduced form of SQLMetadataStorageDruidModule
+ String prop = SQLMetadataStorageDruidModule.PROPERTY;
+ String defaultValue = MySQLMetadataStorageModule.TYPE;
+ PolyBind.createChoiceWithDefault(binder, prop, Key.get(MetadataStorageConnector.class), defaultValue);
+ PolyBind.createChoiceWithDefault(binder, prop, Key.get(MetadataStorageProvider.class), defaultValue);
+ PolyBind.createChoiceWithDefault(binder, prop, Key.get(SQLMetadataConnector.class), defaultValue);
+
+ // Reduced form of MetadataConfigModule
+ // Not actually used here (tests don't create tables), but needed by MySQLConnector constructor
+ JsonConfigProvider.bind(binder, MetadataStorageTablesConfig.PROPERTY_BASE, MetadataStorageTablesConfig.class);
+
+ // Build from properties provided in the config
+ JsonConfigProvider.bind(binder, MetadataStorageConnectorConfig.PROPERTY_BASE, MetadataStorageConnectorConfig.class);
+ }
+
+ @Provides
+ @TestClient
+ public HttpClient getHttpClient(
+ IntegrationTestingConfig config,
+ Lifecycle lifecycle,
+ @Client HttpClient delegate
+ )
+ {
+ return delegate;
+ }
+
+ @Provides
+ @ManageLifecycle
+ public ServiceEmitter getServiceEmitter(ObjectMapper jsonMapper)
+ {
+ return new ServiceEmitter("", "", new LoggingEmitter(new LoggingEmitterConfig(), jsonMapper));
+ }
+
+ // From ServerModule to allow deserialization of DiscoveryDruidNode objects from ZK.
+ // We don't want the other dependencies of that module.
+ @Override
+ public List<? extends com.fasterxml.jackson.databind.Module> getJacksonModules()
+ {
+ return ImmutableList.of(
+ new SimpleModule()
+ .addDeserializer(StringObjectPairList.class, new ToStringObjectPairListDeserializer())
+ .setSerializerModifier(new DruidServiceSerializerModifier())
+ );
+ }
+ }
+
+ /**
+ * Reduced form of MySQLMetadataStorageModule.
+ */
+ private static class TestMySqlModule implements DruidModule
+ {
+ @Override
+ public void configure(Binder binder)
+ {
+ JsonConfigProvider.bind(binder, "druid.metadata.mysql.ssl", MySQLConnectorSslConfig.class);
+ JsonConfigProvider.bind(binder, "druid.metadata.mysql.driver", MySQLConnectorDriverConfig.class);
+ String type = MySQLMetadataStorageModule.TYPE;
+ PolyBind
+ .optionBinder(binder, Key.get(MetadataStorageProvider.class))
+ .addBinding(type)
+ .to(NoopMetadataStorageProvider.class)
+ .in(LazySingleton.class);
+
+ PolyBind
+ .optionBinder(binder, Key.get(MetadataStorageConnector.class))
+ .addBinding(type)
+ .to(MySQLConnector.class)
+ .in(LazySingleton.class);
+
+ PolyBind
+ .optionBinder(binder, Key.get(SQLMetadataConnector.class))
+ .addBinding(type)
+ .to(MySQLConnector.class)
+ .in(LazySingleton.class);
+ }
+
+ @Override
+ public List<? extends com.fasterxml.jackson.databind.Module> getJacksonModules()
+ {
+ return new MySQLMetadataStorageModule().getJacksonModules();
+ }
+ }
+
+ /**
+ * Class used by test to identify test-specific options, load configuration
+ * and "inject themselves" with dependencies.
+ */
+ public static class Builder
+ {
+ private final String clusterName;
+ private String configFile;
+ private Object test;
+ private List<Module> modules = new ArrayList<>();
+ private boolean validateCluster;
+ private List<Class<?>> eagerCreation = new ArrayList<>();
+ private Map<String, String> envVarBindings = new HashMap<>();
+ private Properties testProperties = new Properties();
+
+ public Builder(String clusterName)
+ {
+ this.clusterName = clusterName;
+
+ // Node discovery is lifecycle managed. If we're using it, we have to
+ // create the instance within Guice during setup so it can be lifecycle
+ // managed. Using LazySingleon works in a server, but not in test clients,
+ // because test clients declare their need of node discovery after the
+ // the lifecycle starts.
+ eagerInstance(DruidNodeDiscoveryProvider.class);
+
+ // Set properties from environment variables, or hard-coded values
+ // previously set in Maven.
+ propertyEnvVarBinding("druid.test.config.dockerIp", "DOCKER_IP");
+ propertyEnvVarBinding("druid.zk.service.host", "DOCKER_IP");
+ propertyEnvVarBinding("druid.test.config.hadoopDir", "HADOOP_DIR");
+ property("druid.client.https.trustStorePath", "client_tls/truststore.jks");
+ property("druid.client.https.trustStorePassword", "druid123");
+ property("druid.client.https.keyStorePath", "client_tls/client.jks");
+ property("druid.client.https.certAlias", "druid");
+ property("druid.client.https.keyManagerPassword", "druid123");
+ property("druid.client.https.keyStorePassword", "druid123");
+
+ // More env var bindings for properties formerly passed in via
+ // a generated config file.
+ final String base = IntegrationTestingConfigProvider.PROPERTY_BASE + ".";
+ propertyEnvVarBinding(base + "cloudBucket", "DRUID_CLOUD_BUCKET");
+ propertyEnvVarBinding(base + "cloudPath", "DRUID_CLOUD_PATH");
+ propertyEnvVarBinding(base + "s3AccessKey", "AWS_ACCESS_KEY_ID");
+ propertyEnvVarBinding(base + "s3SecretKey", "AWS_SECRET_ACCESS_KEY");
+ propertyEnvVarBinding(base + "azureContainer", "AZURE_CONTAINER");
+ propertyEnvVarBinding(base + "azureAccount", "AZURE_ACCOUNT");
+ propertyEnvVarBinding(base + "azureKey", "AZURE_KEY");
+ propertyEnvVarBinding(base + "googleBucket", "GOOGLE_BUCKET");
+ propertyEnvVarBinding(base + "googlePrefix", "GOOGLE_PREFIX");
+
+ // Other defaults
+ // druid.global.http.numMaxThreads avoids creating 40+ Netty threads.
+ // We only ever use 1.
+ property("druid.global.http.numMaxThreads", 3);
+ property("druid.broker.http.numMaxThreads", 3);
+ }
+
+ /**
+ * Load a configuration from the named file. Primarily for
+ * debugging to use a one-off, custom configuration file.
+ */
+ public Builder configFile(String configFile)
+ {
+ this.configFile = configFile;
+ return this;
+ }
+
+ /**
+ * The test class with members to be injected.
+ */
+ public Builder test(Object test)
+ {
+ this.test = test;
+ return this;
+ }
+
+ /**
+ * Druid provides the {@code PolyBind} abstraction and the {@code Lifecycle}
+ * abstraction. When used together, we can encounter initialization issues. We won't create
+ * and instance of a polymorphic binding until it is first needed, and only then does
+ * the instance add itself to the lifecycle. However, if it is a test that acks for
+ * the instance, that is too late: the lifecycle has started. A test should call this
+ * method to "register" polymorphic lifecycle classes that will be injected later.
+ * <p>
+ * The builder registers {@code DruidNodeDiscoveryProvider} by default: add any
+ * test-specific instances as needed.
+ */
+ public Builder eagerInstance(Class<?> theClass)
+ {
+ this.eagerCreation.add(theClass);
+ return this;
+ }
+
+ /**
+ * Optional test-specific modules to load.
+ */
+ public Builder modules(List<Module> modules)
+ {
+ this.modules.addAll(modules);
+ return this;
+ }
+
+ public Builder modules(Module...modules)
+ {
+ return modules(Arrays.asList(modules));
+ }
+
+ /**
+ * Validates the cluster before running tests. Ensures that each
+ * Druid service reports itself as healthy. Since Druid services
+ * depend on ZK and the metadata DB, this indirectly checks their
+ * health as well.
+ */
+ public Builder validateCluster()
+ {
+ this.validateCluster = true;
+ return this;
+ }
+
+ /**
+ * Set a property value in code. Such values go into the {@link Properties}
+ * object in Guice, and act as defaults to properties defined in the config
+ * file or via system properties. These properties can also "hard code" items
+ * that would normally be user-settable in a server. The value can be of any
+ * type: it is converted to a String internally.
+ */
+ public Builder property(String key, Object value)
+ {
+ if (value == null) {
+ testProperties.remove(key);
+ } else {
+ testProperties.put(key, value.toString());
+ }
+ return this;
+ }
+
+ /**
+ * Bind a property value to an environment variable. Useful if the property
+ * is set in the environment via the build system, Maven or other means.
+ * Avoids the need to add command-line arguments of the form
+ * {@code -Dproperty.name=$ENV_VAR}. Environment variable bindings take
+ * precedence over values set via {@link #property(String, Object)}, or
+ * the config file, but are lower priority than system properties. The
+ * environment variable is used only if set, else it is ignored.
+ */
+ public Builder propertyEnvVarBinding(String property, String envVar)
+ {
+ this.envVarBindings.put(property, envVar);
+ return this;
+ }
+
+ public synchronized Initializer build()
+ {
+ return new Initializer(this);
+ }
+ }
+
+ private final ResolvedConfig clusterConfig;
+ private final Injector injector;
+ private final Lifecycle lifecycle;
+ private MetastoreClient metastoreClient;
+ private DruidClusterClient clusterClient;
+
+ private Initializer(Builder builder)
+ {
+ if (builder.configFile != null) {
+ this.clusterConfig = loadConfigFile(builder.clusterName, builder.configFile);
+ } else {
+ this.clusterConfig = loadConfig(builder.clusterName, builder.configFile);
+ }
+ this.injector = makeInjector(builder, clusterConfig);
+
+ // Do the injection of test members early, for force lazy singleton
+ // instance creation to avoid problems when lifecycle-managed objects
+ // are combined with PolyBind.
+ if (builder.test != null) {
+ this.injector.injectMembers(builder.test);
+ }
+
+ // Backup: instantiate any additional instances that might be referenced
+ // later outside of injection.
+ for (Class<?> eagerClass : builder.eagerCreation) {
+ this.injector.getInstance(eagerClass);
+ }
+
+ // Now that we've created lifecycle-managed instances, start the lifecycle.
+ log.info("Starting lifecycle");
+ this.lifecycle = GuiceRunnable.initLifecycle(injector, log);
+
+ // Verify the cluster to ensure it is ready.
+ log.info("Creating cluster client");
+ this.clusterClient = this.injector.getInstance(DruidClusterClient.class);
+ if (builder.validateCluster) {
+ clusterClient.validate();
+ }
+
+ // Now that the cluster is ready (which implies that the metastore is ready),
+ // load any "starter data" into the metastore. Warning: there is a time-lag between
+ // when the DB is updated and when Coordinator or Overlord learns about the updates.
+ // At present, there is no API to force a cache flush. Caveat emptor.
+ prepareDB();
+ }
+
+ public static Builder builder(String clusterName)
+ {
+ return new Builder(clusterName);
+ }
+
+ private static ResolvedConfig loadConfig(String category, String configName)
+ {
+ if (configName == null) {
+ configName = System.getProperty(TEST_CONFIG_PROPERTY);
+ }
+ if (configName == null) {
+ configName = System.getenv(TEST_CONFIG_VAR);
+ }
+ if (configName == null) {
+ configName = CLUSTER_CONFIG_DEFAULT;
+ }
+ String loadName = StringUtils.format(CLUSTER_CONFIG_RESOURCE, category, configName);
+ ClusterConfig config = ClusterConfig.loadFromResource(loadName);
+ return config.resolve(category);
+ }
+
+ private static ResolvedConfig loadConfigFile(String category, String path)
+ {
+ ClusterConfig config = ClusterConfig.loadFromFile(path);
+ return config.resolve(category);
+ }
+
+ private static Injector makeInjector(
+ Builder builder,
+ ResolvedConfig clusterConfig
+ )
+ {
+ Injector startupInjector = new StartupInjectorBuilder()
+ .withProperties(properties(builder, clusterConfig))
+ .build();
+ return new CoreInjectorBuilder(startupInjector)
+ .withLifecycle()
+ .add(
+ // Required by clients
+ new EscalatorModule(),
+ HttpClientModule.global(),
+ HttpClientModule.escalatedGlobal(),
+ new HttpClientModule("druid.broker.http", Client.class),
+ new HttpClientModule("druid.broker.http", EscalatedClient.class),
+ // For ZK discovery
+ new CuratorModule(),
+ new AnnouncerModule(),
+ new DiscoveryModule(),
+ // Dependencies from other modules
+ new DruidProcessingConfigModule(),
+ // Dependencies from other modules
+ new StorageNodeModule(),
+
+ // Test-specific items, including bits copy/pasted
+ // from modules that don't play well in a client setting.
+ new TestModule(clusterConfig),
+ new TestMySqlModule()
+ )
+ .addAll(builder.modules)
+ .build();
+ }
+
+ /**
+ * Define test properties similar to how the server does. Property precedence
+ * is:
+ * <ul>
+ * <li>System properties (highest)</li>
+ * <li>Environment variable bindings</li>
+ * <li>Configuration file</li>
+ * <li>Hard-coded values (lowest></li>
+ * </ul>
+ */
+ private static Properties properties(
+ Builder builder,
+ ResolvedConfig clusterConfig
+ )
+ {
+ Properties finalProperties = new Properties();
+ finalProperties.putAll(builder.testProperties);
+ finalProperties.putAll(clusterConfig.toProperties());
+ for (Entry<String, String> entry : builder.envVarBindings.entrySet()) {
+ String value = System.getenv(entry.getValue());
+ if (value != null) {
+ finalProperties.put(entry.getKey(), value);
+ }
+ }
+ finalProperties.putAll(System.getProperties());
+ log.info("Properties:");
+ log.info(finalProperties.toString());
+ return finalProperties;
+ }
+
+ /**
+ * Some tests need a known set of metadata in the metadata DB. To avoid the
+ * complexity of do the actual actions (such as creating segments), the tests
+ * "seed" the database directly. The result is not entirely valid and consistent,
+ * but is good enough for the test at hand.
+ * <p>
+ * <b>WARNING</b>: At present, there is no way to force the Coordinator or
+ * Overlord to flush its cache to learn about these new entries. Instead, we have
+ * to sleep for the cache timeout period. This solution is unsatisfying, and error-prone.
+ */
+ private void prepareDB()
+ {
+ ResolvedMetastore metastoreConfig = clusterConfig.metastore();
+ if (metastoreConfig == null) {
+ return;
+ }
+ List<MetastoreStmt> stmts = metastoreConfig.initStmts();
+ if (stmts == null || stmts.isEmpty()) {
+ return;
+ }
+ log.info("Preparing database");
+ MetastoreClient client = injector.getInstance(MetastoreClient.class);
+ for (MetastoreStmt stmt : stmts) {
+ client.execute(stmt.toSQL());
+ }
+ try {
+ Thread.sleep(metastoreConfig.initDelaySec() * 1000);
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException("Interrupted while waiting for coordinator to notice DB changes");
+ }
+ log.info("Database prepared");
+ }
+
+ public Injector injector()
+ {
+ return injector;
+ }
+
+ public ResolvedConfig clusterConfig()
+ {
+ return clusterConfig;
+ }
+
+ public MetastoreClient metastoreClient()
+ {
+ if (clusterConfig.metastore() == null) {
+ throw new IAE("Please provide a metastore section in docker.yaml");
+ }
+ return injector.getInstance(MetastoreClient.class);
+ }
+
+ public DruidClusterClient clusterClient()
+ {
+ return clusterClient;
+ }
+
+ public void close()
+ {
+ lifecycle.stop();
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/IntegrationTestingConfigEx.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/IntegrationTestingConfigEx.java
new file mode 100644
index 0000000000..c14ea745aa
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/IntegrationTestingConfigEx.java
@@ -0,0 +1,421 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.google.common.collect.ImmutableMap;
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.testing.IntegrationTestingConfig;
+import org.apache.druid.testing.IntegrationTestingConfigProvider;
+
+import javax.inject.Inject;
+
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * Adapter to the "legacy" cluster configuration used by tests.
+ */
+class IntegrationTestingConfigEx implements IntegrationTestingConfig
+{
+ private final ResolvedConfig config;
+ private final Map<String, String> properties;
+
+ @Inject
+ public IntegrationTestingConfigEx(
+ final ResolvedConfig config,
+ final Properties properties)
+ {
+ this.config = config;
+ ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
+ for (Map.Entry<Object, Object> entry : properties.entrySet()) {
+ String key = (String) entry.getKey();
+ if (key.startsWith(IntegrationTestingConfigProvider.PROPERTY_BASE)) {
+ key = key.substring(IntegrationTestingConfigProvider.PROPERTY_BASE.length() + 1);
+ builder.put(key, (String) entry.getValue());
+ }
+ }
+ this.properties = builder.build();
+ }
+
+ @Override
+ public String getZookeeperHosts()
+ {
+ return config.requireZk().clientHosts();
+ }
+
+ @Override
+ public String getKafkaHost()
+ {
+ return config.requireKafka().instance().clientHost();
+ }
+
+ @Override
+ public String getKafkaInternalHost()
+ {
+ return config.requireKafka().instance().host();
+ }
+
+ @Override
+ public String getBrokerHost()
+ {
+ return config.requireBroker().instance().clientHost();
+ }
+
+ @Override
+ public String getBrokerInternalHost()
+ {
+ return config.requireBroker().instance().host();
+ }
+
+ @Override
+ public String getRouterHost()
+ {
+ return config.requireRouter().instance().clientHost();
+ }
+
+ @Override
+ public String getRouterInternalHost()
+ {
+ return config.requireRouter().instance().host();
+ }
+
+ @Override
+ public String getCoordinatorHost()
+ {
+ return config.requireCoordinator().tagOrDefault("one").clientHost();
+ }
+
+ @Override
+ public String getCoordinatorInternalHost()
+ {
+ return config.requireCoordinator().tagOrDefault("one").host();
+ }
+
+ @Override
+ public String getCoordinatorTwoInternalHost()
+ {
+ return config.requireCoordinator().requireInstance("two").host();
+ }
+
+ @Override
+ public String getCoordinatorTwoHost()
+ {
+ return config.requireCoordinator().tagOrDefault("one").clientHost();
+ }
+
+ @Override
+ public String getOverlordHost()
+ {
+ return config.requireOverlord().tagOrDefault("one").clientHost();
+ }
+
+ @Override
+ public String getOverlordTwoHost()
+ {
+ return config.requireOverlord().tagOrDefault("two").clientHost();
+ }
+
+ @Override
+ public String getOverlordInternalHost()
+ {
+ return config.requireOverlord().tagOrDefault("one").host();
+ }
+
+ @Override
+ public String getOverlordTwoInternalHost()
+ {
+ return config.requireOverlord().requireInstance("two").host();
+ }
+
+ @Override
+ public String getMiddleManagerHost()
+ {
+ return config.requireMiddleManager().instance().clientHost();
+ }
+
+ @Override
+ public String getMiddleManagerInternalHost()
+ {
+ return config.requireMiddleManager().instance().host();
+ }
+
+ @Override
+ public String getHistoricalHost()
+ {
+ return config.requireHistorical().instance().clientHost();
+ }
+
+ @Override
+ public String getHistoricalInternalHost()
+ {
+ return config.requireHistorical().instance().host();
+ }
+
+ @Override
+ public String getCoordinatorUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireCoordinator();
+ return serviceConfig.resolveUrl(serviceConfig.tagOrDefault("one"));
+ }
+
+ @Override
+ public String getCoordinatorTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getCoordinatorTwoUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireCoordinator();
+ return serviceConfig.resolveUrl(serviceConfig.requireInstance("two"));
+ }
+
+ @Override
+ public String getCoordinatorTwoTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getOverlordUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireOverlord();
+ return serviceConfig.resolveUrl(serviceConfig.tagOrDefault("one"));
+ }
+
+ @Override
+ public String getOverlordTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getOverlordTwoUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireOverlord();
+ return serviceConfig.resolveUrl(serviceConfig.requireInstance("two"));
+ }
+
+ @Override
+ public String getOverlordTwoTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getIndexerUrl()
+ {
+ ResolvedDruidService indexer = config.druidService(ResolvedConfig.INDEXER);
+ if (indexer == null) {
+ indexer = config.requireMiddleManager();
+ }
+ return indexer.resolveUrl(indexer.instance());
+ }
+
+ @Override
+ public String getIndexerTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getRouterUrl()
+ {
+ return config.routerUrl();
+ }
+
+ @Override
+ public String getRouterTLSUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireRouter();
+ return serviceConfig.resolveUrl(serviceConfig.tagOrDefault("tls"));
+ }
+
+ @Override
+ public String getPermissiveRouterUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getPermissiveRouterTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getNoClientAuthRouterUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getNoClientAuthRouterTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getCustomCertCheckRouterUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getCustomCertCheckRouterTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getBrokerUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireBroker();
+ return serviceConfig.resolveUrl(serviceConfig.instance());
+ }
+
+ @Override
+ public String getBrokerTLSUrl()
+ {
+ ResolvedDruidService serviceConfig = config.requireBroker();
+ return serviceConfig.resolveUrl(serviceConfig.tagOrDefault("tls"));
+ }
+
+ @Override
+ public String getHistoricalUrl()
+ {
+ return config.requireHistorical().resolveUrl();
+ }
+
+ @Override
+ public String getHistoricalTLSUrl()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getProperty(String prop)
+ {
+ return properties.get(prop);
+ }
+
+ @Override
+ public String getUsername()
+ {
+ return getProperty("username");
+ }
+
+ @Override
+ public String getPassword()
+ {
+ return getProperty("password");
+ }
+
+ @Override
+ public Map<String, String> getProperties()
+ {
+ return properties;
+ }
+
+ @Override
+ public boolean manageKafkaTopic()
+ {
+ throw new ISE("Not implemented");
+ }
+
+ @Override
+ public String getExtraDatasourceNameSuffix()
+ {
+ return config.datasourceNameSuffix;
+ }
+
+ @Override
+ public String getCloudBucket()
+ {
+ return getProperty("cloudBucket");
+ }
+
+ @Override
+ public String getCloudPath()
+ {
+ return getProperty("cloudPath");
+ }
+
+ @Override
+ public String getCloudRegion()
+ {
+ return getProperty("cloudRegion");
+ }
+
+ @Override
+ public String getS3AssumeRoleWithExternalId()
+ {
+ return getProperty("s3AssumeRoleWithExternalId");
+ }
+
+ @Override
+ public String getS3AssumeRoleExternalId()
+ {
+ return getProperty("s3AssumeRoleExternalId");
+ }
+
+ @Override
+ public String getS3AssumeRoleWithoutExternalId()
+ {
+ return getProperty("s3AssumeRoleWithoutExternalId");
+ }
+
+ @Override
+ public String getAzureKey()
+ {
+ return getProperty("azureKey");
+ }
+
+ @Override
+ public String getHadoopGcsCredentialsPath()
+ {
+ return getProperty("hadoopGcsCredentialsPath");
+ }
+
+ @Override
+ public String getStreamEndpoint()
+ {
+ return getProperty("streamEndpoint");
+ }
+
+ @Override
+ public String getSchemaRegistryHost()
+ {
+ return getProperty("schemaRegistryHost");
+ }
+
+ @Override
+ public boolean isDocker()
+ {
+ return config.isDocker();
+ }
+
+ @Override
+ public String getDockerHost()
+ {
+ return config.proxyHost();
+ }
+}
diff --git a/integration-tests/src/main/java/org/apache/druid/cli/CustomNodeRoleCommandCreator.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/KafkaConfig.java
similarity index 67%
copy from integration-tests/src/main/java/org/apache/druid/cli/CustomNodeRoleCommandCreator.java
copy to integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/KafkaConfig.java
index f2ac334b91..00e785d940 100644
--- a/integration-tests/src/main/java/org/apache/druid/cli/CustomNodeRoleCommandCreator.java
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/KafkaConfig.java
@@ -17,15 +17,21 @@
* under the License.
*/
-package org.apache.druid.cli;
+package org.apache.druid.testsEx.config;
-import com.github.rvesse.airline.builder.CliBuilder;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
-public class CustomNodeRoleCommandCreator implements CliCommandCreator
+import java.util.List;
+
+public class KafkaConfig extends ServiceConfig
{
- @Override
- public void addCommands(CliBuilder builder)
+ @JsonCreator
+ public KafkaConfig(
+ @JsonProperty("service") String service,
+ @JsonProperty("instances") List<ServiceInstance> instances
+ )
{
- builder.withGroup("server").withCommands(CliCustomNodeRole.class);
+ super(service, instances);
}
}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/MetastoreConfig.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/MetastoreConfig.java
new file mode 100644
index 0000000000..cad2fd5293
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/MetastoreConfig.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.base.Strings;
+
+import java.util.List;
+import java.util.Map;
+
+public class MetastoreConfig extends ServiceConfig
+{
+ /**
+ * Driver. Defaults to the MySQL Driver.
+ * @see {@link org.apache.druid.metadata.storage.mysql.MySQLConnectorDriverConfig}
+ */
+ private final String driver;
+
+ /**
+ * JDBC connection URI. Required.
+ */
+ private final String connectURI;
+
+ /**
+ * User for the metastore DB.
+ */
+ private final String user;
+
+ /**
+ * Password for the metastore DB.
+ */
+ private final String password;
+
+ /**
+ * Optional connection properties.
+ */
+ private final Map<String, Object> properties;
+
+ @JsonCreator
+ public MetastoreConfig(
+ @JsonProperty("service") String service,
+ @JsonProperty("driver") String driver,
+ @JsonProperty("connectURI") String connectURI,
+ @JsonProperty("user") String user,
+ @JsonProperty("password") String password,
+ @JsonProperty("properties") Map<String, Object> properties,
+ @JsonProperty("instances") List<ServiceInstance> instances
+ )
+ {
+ super(service, instances);
+ this.driver = driver;
+ this.connectURI = connectURI;
+ this.user = user;
+ this.password = password;
+ this.properties = properties;
+ }
+
+ @JsonProperty("driver")
+ @JsonInclude(Include.NON_NULL)
+ public String driver()
+ {
+ return driver;
+ }
+
+ @JsonProperty("connectURI")
+ @JsonInclude(Include.NON_NULL)
+ public String connectURI()
+ {
+ return connectURI;
+ }
+
+ @JsonProperty("user")
+ @JsonInclude(Include.NON_NULL)
+ public String user()
+ {
+ return user;
+ }
+
+ @JsonProperty("password")
+ @JsonInclude(Include.NON_NULL)
+ public String password()
+ {
+ return password;
+ }
+
+ @JsonProperty("properties")
+ @JsonInclude(Include.NON_NULL)
+ public Map<String, Object> properties()
+ {
+ return properties;
+ }
+
+ public boolean validate(List<String> errs)
+ {
+ if (Strings.isNullOrEmpty(connectURI)) {
+ errs.add("Metastore connect URI is required");
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/MetastoreStmt.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/MetastoreStmt.java
new file mode 100644
index 0000000000..5213678f56
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/MetastoreStmt.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.commons.lang3.RegExUtils;
+
+/**
+ * Represents a statement (query) to send to the Druid metadata
+ * storage database (metastore) before running tests. At present,
+ * each query is only a SQL statement. The statements are represented
+ * as objects to allow for other options (such as ignoring failures,
+ * etc.)
+ * <p>
+ * Metastore queries often include a JSON payload. The metastore wants
+ * to store the payload in compact form without spaces. However, such
+ * JSON is hard for humans to understand. So, the configuration file
+ * should format the SQL statement and JSON for readability. This class
+ * will "compactify" the statement prior to execution.
+ */
+public class MetastoreStmt
+{
+ private final String sql;
+
+ @JsonCreator
+ public MetastoreStmt(
+ @JsonProperty("sql") String sql
+ )
+ {
+ this.sql = sql;
+ }
+
+ @JsonProperty("sql")
+ public String sql()
+ {
+ return sql;
+ }
+
+ @Override
+ public String toString()
+ {
+ return TestConfigs.toYaml(this);
+ }
+
+ /**
+ * Convert the human-readable form of the statement in YAML
+ * into the compact JSON form preferred in the DB. Also
+ * compacts the SQL, but that's OK.
+ */
+ public String toSQL()
+ {
+ String stmt = RegExUtils.replaceAll(sql, "\n", " ");
+ stmt = RegExUtils.replaceAll(stmt, " +", " ");
+ stmt = RegExUtils.replaceAll(stmt, ": ", ":");
+ stmt = RegExUtils.replaceAll(stmt, ", ", ",");
+ stmt = RegExUtils.replaceAll(stmt, " }", "}");
+ stmt = RegExUtils.replaceAll(stmt, "\\{ ", "{");
+ return stmt;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedConfig.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedConfig.java
new file mode 100644
index 0000000000..6bdfe96b2f
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedConfig.java
@@ -0,0 +1,406 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableMap;
+import org.apache.druid.curator.CuratorConfig;
+import org.apache.druid.curator.ExhibitorConfig;
+import org.apache.druid.java.util.common.IAE;
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.testing.IntegrationTestingConfigProvider;
+import org.apache.druid.testsEx.config.ClusterConfig.ClusterType;
+import org.apache.druid.testsEx.config.ResolvedService.ResolvedKafka;
+import org.apache.druid.testsEx.config.ResolvedService.ResolvedZk;
+import org.apache.druid.testsEx.config.ServiceConfig.DruidConfig;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+public class ResolvedConfig
+{
+ public static final String COORDINATOR = "coordinator";
+ public static final String HISTORICAL = "historical";
+ public static final String OVERLORD = "overlord";
+ public static final String BROKER = "broker";
+ public static final String ROUTER = "router";
+ public static final String MIDDLEMANAGER = "middlemanager";
+ public static final String INDEXER = "indexer";
+
+ public static final int DEFAULT_READY_TIMEOUT_SEC = 120;
+ public static final int DEFAULT_READY_POLL_MS = 2000;
+
+ private final String category;
+ private final ClusterType type;
+ private final String proxyHost;
+ private final int readyTimeoutSec;
+ private final int readyPollMs;
+ final String datasourceNameSuffix;
+ private Map<String, Object> properties;
+ private Map<String, Object> settings;
+
+ private final ResolvedZk zk;
+ private final ResolvedKafka kafka;
+ private final ResolvedMetastore metastore;
+ private final Map<String, ResolvedDruidService> druidServices = new HashMap<>();
+
+ public ResolvedConfig(String category, ClusterConfig config)
+ {
+ this.category = category;
+ type = config.type() == null ? ClusterType.docker : config.type();
+ if (!hasProxy()) {
+ proxyHost = null;
+ } else if (Strings.isNullOrEmpty(config.proxyHost())) {
+ proxyHost = "localhost";
+ } else {
+ proxyHost = config.proxyHost();
+ }
+ readyTimeoutSec = config.readyTimeoutSec() > 0 ?
+ config.readyTimeoutSec() : DEFAULT_READY_TIMEOUT_SEC;
+ readyPollMs = config.readyPollMs() > 0 ? config.readyPollMs() : DEFAULT_READY_POLL_MS;
+ if (config.properties() == null) {
+ this.properties = ImmutableMap.of();
+ } else {
+ this.properties = config.properties();
+ }
+ if (config.settings() == null) {
+ this.settings = ImmutableMap.of();
+ } else {
+ this.settings = config.settings();
+ }
+ if (config.datasourceSuffix() == null) {
+ this.datasourceNameSuffix = "";
+ } else {
+ this.datasourceNameSuffix = config.datasourceSuffix();
+ }
+
+ if (config.zk() == null) {
+ this.zk = null;
+ } else {
+ this.zk = new ResolvedZk(this, config.zk());
+ }
+ if (config.kafka() == null) {
+ this.kafka = null;
+ } else {
+ this.kafka = new ResolvedKafka(this, config.kafka());
+ }
+ if (config.metastore() == null) {
+ this.metastore = null;
+ } else {
+ this.metastore = new ResolvedMetastore(this, config.metastore(), config);
+ }
+
+ if (config.druid() != null) {
+ for (Entry<String, DruidConfig> entry : config.druid().entrySet()) {
+ druidServices.put(entry.getKey(),
+ new ResolvedDruidService(this, entry.getValue(), entry.getKey()));
+ }
+ }
+ }
+
+ public ClusterType type()
+ {
+ return type;
+ }
+
+ public String proxyHost()
+ {
+ return proxyHost;
+ }
+
+ public int readyTimeoutSec()
+ {
+ return readyTimeoutSec;
+ }
+
+ public int readyPollMs()
+ {
+ return readyPollMs;
+ }
+
+ public boolean isDocker()
+ {
+ return type == ClusterType.docker;
+ }
+
+ public boolean hasProxy()
+ {
+ switch (type) {
+ case docker:
+ case k8s:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ public ResolvedZk zk()
+ {
+ return zk;
+ }
+
+ public ResolvedMetastore metastore()
+ {
+ return metastore;
+ }
+
+ public ResolvedKafka kafka()
+ {
+ return kafka;
+ }
+
+ public Map<String, Object> settings()
+ {
+ return settings;
+ }
+
+ public Map<String, Object> properties()
+ {
+ return properties;
+ }
+
+ public Map<String, ResolvedDruidService> requireDruid()
+ {
+ if (druidServices == null) {
+ throw new ISE("Please configure Druid services");
+ }
+ return druidServices;
+ }
+
+ public ResolvedZk requireZk()
+ {
+ if (zk == null) {
+ throw new ISE("Please specify the ZooKeeper configuration");
+ }
+ return zk;
+ }
+
+ public ResolvedMetastore requireMetastore()
+ {
+ if (metastore == null) {
+ throw new ISE("Please specify the Metastore configuration");
+ }
+ return metastore;
+ }
+
+ public ResolvedKafka requireKafka()
+ {
+ if (kafka == null) {
+ throw new ISE("Please specify the Kafka configuration");
+ }
+ return kafka;
+ }
+
+ public ResolvedDruidService druidService(String serviceKey)
+ {
+ return requireDruid().get(serviceKey);
+ }
+
+ public ResolvedDruidService requireService(String serviceKey)
+ {
+ ResolvedDruidService service = druidService(serviceKey);
+ if (service == null) {
+ throw new ISE("Please configure Druid service " + serviceKey);
+ }
+ return service;
+ }
+
+ public ResolvedDruidService requireCoordinator()
+ {
+ return requireService(COORDINATOR);
+ }
+
+ public ResolvedDruidService requireOverlord()
+ {
+ return requireService(OVERLORD);
+ }
+
+ public ResolvedDruidService requireBroker()
+ {
+ return requireService(BROKER);
+ }
+
+ public ResolvedDruidService requireRouter()
+ {
+ return requireService(ROUTER);
+ }
+
+ public ResolvedDruidService requireMiddleManager()
+ {
+ return requireService(MIDDLEMANAGER);
+ }
+
+ public ResolvedDruidService requireHistorical()
+ {
+ return requireService(HISTORICAL);
+ }
+
+ public String routerUrl()
+ {
+ return requireRouter().clientUrl();
+ }
+
+ public CuratorConfig toCuratorConfig()
+ {
+ if (zk == null) {
+ throw new ISE("ZooKeeper not configured");
+ }
+ // TODO: Add a builder for other properties
+ return CuratorConfig.create(zk.clientHosts());
+ }
+
+ public ExhibitorConfig toExhibitorConfig()
+ {
+ // Does not yet support exhibitors
+ return ExhibitorConfig.create(Collections.emptyList());
+ }
+
+ /**
+ * Map from old-style config file (and settings) name to the
+ * corresponding property.
+ */
+ private static final Map<String, String> SETTINGS_MAP =
+ ImmutableMap.<String, String>builder()
+ .put("cloud_bucket", "cloudBucket")
+ .put("cloud_path", "cloudPath")
+ .put("cloud_region", "cloudRegion")
+ .put("s3_assume_role_with_external_id", "s3AssumeRoleWithExternalId")
+ .put("s3_assume_role_external_id", "s3AssumeRoleExternalId")
+ .put("s3_assume_role_without_external_id", "s3AssumeRoleWithoutExternalId")
+ .put("stream_endpoint", "streamEndpoint")
+ .put("s3_accessKey", "s3AccessKey")
+ .put("s3_secretKey", "s3SecretKey")
+ .put("azure_account", "azureAccount")
+ .put("azure_key", "azureKey")
+ .put("azure_container", "azureContainer")
+ .put("google_bucket", "googleBucket")
+ .put("google_prefix", "googlePrefix")
+ .build();
+
+ private static void setDruidProperyVar(Map<String, Object> properties, String key, Object value)
+ {
+ if (value == null) {
+ return;
+ }
+ if (key.startsWith("druid_")) {
+ key = key.substring("druid_".length());
+ }
+ String mapped = SETTINGS_MAP.get(key);
+ key = mapped == null ? key : mapped;
+ TestConfigs.putProperty(properties, IntegrationTestingConfigProvider.PROPERTY_BASE, key, value.toString());
+ }
+
+ private void loadPropertyFile(Map<String, Object> properties, File file)
+ {
+ try (BufferedReader in = new BufferedReader(
+ new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = in.readLine()) != null) {
+ if (Strings.isNullOrEmpty(line) || line.startsWith("#")) {
+ continue;
+ }
+ String[] parts = line.split("=");
+ if (parts.length != 2) {
+ continue;
+ }
+ setDruidProperyVar(properties, parts[0], parts[1]);
+ }
+ }
+ catch (IOException e) {
+ throw new IAE(e, "Cannot read file %s", file.getAbsolutePath());
+ }
+ }
+
+ /**
+ * Convert the config in this structure the the properties
+ * used to configure Guice.
+ */
+ public Map<String, Object> toProperties()
+ {
+ Map<String, Object> properties = new HashMap<>();
+ // druid.test.config.dockerIp is used by some older test code. Remove
+ // it when that code is updated.
+ TestConfigs.putProperty(properties, "druid.test.config.dockerIp", proxyHost);
+
+ // Start with implicit properties from various sections.
+ if (zk != null) {
+ properties.putAll(zk.toProperties());
+ }
+ if (metastore != null) {
+ properties.putAll(metastore.toProperties());
+ }
+
+ // Add settings, converted to properties. Map both old and
+ // "property-style" settings to the full property path.
+ // Settings are converted to properties so they can be overridden
+ // by environment variables and -D command-line settings.
+ for (Map.Entry<String, Object> entry : settings.entrySet()) {
+ setDruidProperyVar(properties, entry.getKey(), entry.getValue());
+ }
+
+ // Add explicit properties
+ if (this.properties != null) {
+ properties.putAll(this.properties);
+ }
+
+ // Override with a user-specific config file.
+ File userEnv = new File(
+ new File(
+ System.getProperty("user.home"),
+ "druid-it"),
+ category + ".env");
+ if (userEnv.exists()) {
+ loadPropertyFile(properties, userEnv);
+ }
+
+ // Override with a user-specific config file.
+ String overrideEnv = System.getenv("OVERRIDE_ENV");
+ if (overrideEnv != null) {
+ loadPropertyFile(properties, new File(overrideEnv));
+ }
+
+ // Override with any environment variables of the form "druid_"
+ for (Map.Entry<String, String> entry : System.getenv().entrySet()) {
+ String key = entry.getKey();
+ if (!key.startsWith("druid_")) {
+ continue;
+ }
+ setDruidProperyVar(properties, key, entry.getValue());
+ }
+
+ // Override with any system properties of the form "druid_"
+ for (Map.Entry<Object, Object> entry : System.getProperties().entrySet()) {
+ String key = (String) entry.getKey();
+ if (!key.startsWith("druid_")) {
+ continue;
+ }
+ setDruidProperyVar(properties, key, entry.getValue());
+ }
+ return properties;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedDruidService.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedDruidService.java
new file mode 100644
index 0000000000..58cbdcdc33
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedDruidService.java
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.java.util.common.StringUtils;
+import org.apache.druid.testsEx.config.ServiceConfig.DruidConfig;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ResolvedDruidService extends ResolvedService
+{
+ public ResolvedDruidService(ResolvedConfig root, DruidConfig config, String serviceKey)
+ {
+ super(root, config, serviceKey);
+ }
+
+ /**
+ * Get the URL (visible to the test) of the service.
+ */
+ public String clientUrl()
+ {
+ return resolveUrl(instance());
+ }
+
+ /**
+ * Find an instance given the instance name (tag).
+ */
+ public ResolvedInstance findInstance(String instanceName)
+ {
+ for (ResolvedInstance instance : requireInstances()) {
+ if (instance.tag() != null && instance.tag().equals(instanceName)) {
+ return instance;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Find an instance given the instance name (tag). Raises
+ * an error (which fails the test) if the tag is not defined.
+ */
+ public ResolvedInstance requireInstance(String instanceName)
+ {
+ ResolvedInstance instance = findInstance(instanceName);
+ if (instance != null) {
+ return instance;
+ }
+ throw new ISE(
+ StringUtils.format(
+ "No Druid instance of service %s with name %s is defined",
+ service,
+ instanceName));
+ }
+
+ public String resolveUrl()
+ {
+ return resolveUrl(instance());
+ }
+
+ /**
+ * Return the URL for the given instance name (tag) of this service
+ * as visible to the test.
+ */
+ public String resolveUrl(String instanceName)
+ {
+ return resolveUrl(requireInstance(instanceName));
+ }
+
+ /**
+ * Return the URL, known to the test, of the given service instance.
+ */
+ public String resolveUrl(ResolvedInstance instance)
+ {
+ return StringUtils.format(
+ "http://%s:%d",
+ instance.clientHost(),
+ instance.clientPort());
+ }
+
+ /**
+ * Return the named service instance. If not found, return the
+ * "default" instance. This is used by the somewhat awkward test
+ * config object so that if a test asks for "Coordinator one" in
+ * a cluster with a single Coordinator, it will get that Coordinator.
+ * Same for Overlord.
+ */
+ public ResolvedInstance tagOrDefault(String tag)
+ {
+ ResolvedInstance taggedInstance = findInstance(tag);
+ return taggedInstance == null ? instance() : taggedInstance;
+ }
+
+ /**
+ * Returns the "default" host for this service as known to the
+ * cluster. The host is that of the only instance and is undefined
+ * if there are multiple instances.
+ */
+ public String resolveHost()
+ {
+ ResolvedInstance instance = instance();
+ if (instances.size() > 1) {
+ throw new ISE(
+ StringUtils.format("Service %s has %d hosts, default is ambiguous",
+ service,
+ instances.size()));
+ }
+ return instance.host();
+ }
+
+ public ResolvedInstance findHost(String host)
+ {
+ Pattern p = Pattern.compile("https?://(.*):(\\d+)");
+ Matcher m = p.matcher(host);
+ if (!m.matches()) {
+ return null;
+ }
+ String hostName = m.group(1);
+ int port = Integer.parseInt(m.group(2));
+ for (ResolvedInstance instance : instances) {
+ if (instance.host().equals(hostName) && instance.port() == port) {
+ return instance;
+ }
+ }
+ return null;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedMetastore.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedMetastore.java
new file mode 100644
index 0000000000..f65790eb1c
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedMetastore.java
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.google.common.collect.ImmutableMap;
+import org.apache.commons.lang3.RegExUtils;
+import org.apache.druid.metadata.MetadataStorageConnectorConfig;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class ResolvedMetastore extends ResolvedService
+{
+ // Set to be 1 sec. longer than the setting in the
+ // docker-compose.yaml file:
+ // druid_manager_segments_pollDuration=PT5S
+ public static final int DEFAULT_METASTORE_INIT_DELAY_SEC = 6;
+
+ private final String driver;
+ private final String connectURI;
+ private final String user;
+ private final String password;
+ private final Map<String, Object> properties;
+ private final int initDelaySec;
+ private List<MetastoreStmt> initStmts;
+
+ public ResolvedMetastore(ResolvedConfig root, MetastoreConfig config, ClusterConfig clusterConfig)
+ {
+ super(root, config, "metastore");
+ this.driver = config.driver();
+ if (config.connectURI() != null) {
+ ResolvedInstance instance = instance();
+ this.connectURI = RegExUtils.replaceAll(
+ RegExUtils.replaceAll(
+ config.connectURI(),
+ "<port>",
+ Integer.toString(instance.clientPort())),
+ "<host>",
+ instance.clientHost());
+ } else {
+ this.connectURI = null;
+ }
+ this.user = config.user();
+ this.password = config.password();
+ if (config.properties() == null) {
+ this.properties = ImmutableMap.of();
+ } else {
+ this.properties = config.properties();
+ }
+
+ this.initDelaySec = clusterConfig.metastoreInitDelaySec() > 0
+ ? clusterConfig.metastoreInitDelaySec()
+ : DEFAULT_METASTORE_INIT_DELAY_SEC;
+ this.initStmts = clusterConfig.metastoreInit();
+ }
+
+ public String driver()
+ {
+ return driver;
+ }
+
+ public String connectURI()
+ {
+ return connectURI;
+ }
+
+ public String user()
+ {
+ return user;
+ }
+
+ public String password()
+ {
+ return password;
+ }
+
+ public Map<String, Object> properties()
+ {
+ return properties;
+ }
+
+ /**
+ * Create the properties Guice needs to create the connector config.
+ *
+ * @see <a href="https://druid.apache.org/docs/0.23.0/development/extensions-core/mysql.html#setting-up-mysql">
+ * Setting up MySQL</a>
+ */
+ public Map<String, Object> toProperties()
+ {
+ final String base = MetadataStorageConnectorConfig.PROPERTY_BASE;
+ Map<String, Object> properties = new HashMap<>();
+ TestConfigs.putProperty(properties, "druid.metadata.mysql.driver.driverClassName", driver);
+ TestConfigs.putProperty(properties, "druid.metadata.storage.type", "mysql");
+ TestConfigs.putProperty(properties, base, "connectURI", connectURI);
+ TestConfigs.putProperty(properties, base, "user", user);
+ TestConfigs.putProperty(properties, base, "password", password);
+ TestConfigs.putProperty(properties, base, "dbcp", this.properties);
+ return properties;
+ }
+
+ public List<MetastoreStmt> initStmts()
+ {
+ return initStmts;
+ }
+
+ public int initDelaySec()
+ {
+ return initDelaySec;
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedService.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedService.java
new file mode 100644
index 0000000000..5bd377f707
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ResolvedService.java
@@ -0,0 +1,219 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.google.common.collect.ImmutableMap;
+import org.apache.druid.curator.CuratorConfig;
+import org.apache.druid.java.util.common.ISE;
+import org.apache.druid.java.util.common.StringUtils;
+import org.apache.druid.testsEx.config.ServiceConfig.ZKConfig;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class ResolvedService
+{
+ protected final String service;
+ protected final List<ResolvedInstance> instances = new ArrayList<>();
+
+ public ResolvedService(ResolvedConfig root, ServiceConfig config, String name)
+ {
+ this.service = config.service() == null ? name : config.service();
+ for (ServiceInstance instanceConfig : config.instances()) {
+ this.instances.add(new ResolvedInstance(root, instanceConfig, this));
+ }
+ }
+
+ public String service()
+ {
+ return service;
+ }
+
+ public List<ResolvedInstance> requireInstances()
+ {
+ if (instances.isEmpty()) {
+ throw new ISE("Please specify a " + service + " instance");
+ }
+ return instances;
+ }
+
+ public ResolvedInstance instance()
+ {
+ return requireInstances().get(0);
+ }
+
+ public class ResolvedInstance
+ {
+ private final String container;
+ private final String host;
+ private final String clientHost;
+ private final String tag;
+ private final int port;
+ private final int clientPort;
+
+ public ResolvedInstance(ResolvedConfig root, ServiceInstance config, ResolvedService service)
+ {
+ this.tag = config.tag();
+
+ // The actual (cluster) host is...
+ if (config.host() != null) {
+ // The specified host, if provided
+ this.host = config.host();
+ } else {
+ String baseHost;
+ if (root.hasProxy()) {
+ // The same as the service, if there is a proxy
+ baseHost = service.service;
+ // with the tag appended
+ if (tag != null) {
+ baseHost += "-" + config.tag();
+ }
+ this.host = baseHost;
+ } else {
+ // The local host otherwise
+ this.host = "localhost";
+ }
+ }
+
+ if (root.hasProxy()) {
+ this.clientHost = root.proxyHost();
+ } else {
+ this.clientHost = this.host;
+ }
+
+ this.container = config.container() != null ? config.container() : service.service;
+ if (config.port() == 0) {
+ throw new ISE("Must provide port");
+ }
+ this.port = config.port();
+ if (config.proxyPort() != 0) {
+ this.clientPort = config.proxyPort();
+ } else {
+ this.clientPort = this.port;
+ }
+ }
+
+ public ResolvedService service()
+ {
+ return ResolvedService.this;
+ }
+
+ public String container()
+ {
+ return container;
+ }
+
+ public String host()
+ {
+ return host;
+ }
+
+ public String clientHost()
+ {
+ return clientHost;
+ }
+
+ public String tag()
+ {
+ return tag;
+ }
+
+ public int port()
+ {
+ return port;
+ }
+
+ public int clientPort()
+ {
+ return clientPort;
+ }
+ }
+
+ public static class ResolvedZk extends ResolvedService
+ {
+ private final int startTimeoutSecs;
+
+ public ResolvedZk(ResolvedConfig root, ZKConfig config)
+ {
+ super(root, config, "zookeeper");
+ this.startTimeoutSecs = config.startTimeoutSecs();
+ }
+
+ public int startTimeoutSecs()
+ {
+ return startTimeoutSecs;
+ }
+
+ public String clientHosts()
+ {
+ List<String> hosts = new ArrayList<>();
+ for (ResolvedInstance instance : instances) {
+ hosts.add(formatHost(instance.clientHost(), instance.clientPort()));
+ }
+ return String.join(",", hosts);
+ }
+
+ public String clusterHosts()
+ {
+ List<String> hosts = new ArrayList<>();
+ for (ResolvedInstance instance : instances) {
+ hosts.add(formatHost(instance.host(), instance.port()));
+ }
+ return String.join(",", hosts);
+ }
+
+ private String formatHost(String host, int port)
+ {
+ return StringUtils.format("%s:%d", host, port);
+ }
+
+ public Map<? extends String, ? extends Object> toProperties()
+ {
+ /*
+ * We will use this instead of druid server's CuratorConfig, because CuratorConfig in
+ * a test cluster environment sees Zookeeper at localhost even if Zookeeper is elsewhere.
+ * We'll take the Zookeeper host from the configuration file instead.
+ */
+ return ImmutableMap.of(
+ CuratorConfig.CONFIG_PREFIX + ".zkHosts",
+ clientHosts());
+ }
+ }
+
+ public static class ResolvedKafka extends ResolvedService
+ {
+ public ResolvedKafka(ResolvedConfig root, KafkaConfig config)
+ {
+ super(root, config, "kafka");
+ }
+
+ public String clientHost()
+ {
+ return instance().clientHost();
+ }
+
+ public String bootstrap()
+ {
+ ResolvedInstance instance = instance();
+ return StringUtils.format("%s:%d", instance.clientHost(), instance.clientPort());
+ }
+ }
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ServiceConfig.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ServiceConfig.java
new file mode 100644
index 0000000000..08b07bc4ed
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ServiceConfig.java
@@ -0,0 +1,116 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+public class ServiceConfig
+{
+ protected final String service;
+ protected List<ServiceInstance> instances;
+
+ public ServiceConfig(
+ String service,
+ List<ServiceInstance> instances
+ )
+ {
+ this.service = service;
+ this.instances = instances;
+ }
+
+ @JsonProperty("service")
+ @JsonInclude(Include.NON_NULL)
+ public String service()
+ {
+ return service;
+ }
+
+ @JsonProperty("instances")
+ @JsonInclude(Include.NON_NULL)
+ public List<ServiceInstance> instances()
+ {
+ return instances;
+ }
+
+ @Override
+ public String toString()
+ {
+ return TestConfigs.toYaml(this);
+ }
+
+ /**
+ * YAML description of a ZK cluster. Converted to
+ * {@link org.apache.druid.curator.CuratorConfig}
+ */
+ public static class ZKConfig extends ServiceConfig
+ {
+ /**
+ * Amount of time to wait for ZK to become ready.
+ * Defaults to 5 seconds.
+ */
+ private final int startTimeoutSecs;
+
+ @JsonCreator
+ public ZKConfig(
+ @JsonProperty("service") String service,
+ @JsonProperty("startTimeoutSecs") int startTimeoutSecs,
+ @JsonProperty("instances") List<ServiceInstance> instances
+ )
+ {
+ super(service, instances);
+ this.startTimeoutSecs = startTimeoutSecs;
+ }
+
+ @JsonProperty("startTimeoutSecs")
+ public int startTimeoutSecs()
+ {
+ return startTimeoutSecs;
+ }
+ }
+
+ /**
+ * Represents a Druid service (of one or more instances) running
+ * in the test cluster. The service name comes from the key used
+ * in the {@code druid} map: <code><pre>
+ * druid:
+ * broker: # <-- key (service name)
+ * instances:
+ * ...
+ * </pre></code>
+ */
+ public static class DruidConfig extends ServiceConfig
+ {
+ @JsonCreator
+ public DruidConfig(
+ // Note: service is not actually used.
+ @JsonProperty("service") String service,
+ @JsonProperty("instances") List<ServiceInstance> instances
+ )
+ {
+ super(service, instances);
+ }
+ }
+
+}
diff --git a/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ServiceInstance.java b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ServiceInstance.java
new file mode 100644
index 0000000000..c9a7e0e3a8
--- /dev/null
+++ b/integration-tests-ex/cases/src/test/java/org/apache/druid/testsEx/config/ServiceInstance.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.druid.testsEx.config;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * One instance of a Druid or third-party service running on
+ * a host or in a container.
+ */
+public class ServiceInstance
+{
+ /**
+ * Name of the Docker container. Used in Docker commands against
+ * the container, such as starting and stopping.
+ */
+ private final String container;
+
+ /**
+ * Name of the host running the service as known to the cluster
+ * (which many not be visible to the host running the test.)
+ * Assumed to be {@code <service>} or @{code <service>-<tag>}
+ * if not explicitly set.
+ */
+ private final String host;
+
+ /**
+ * Tag used to identify a service when there are multiple
+ * instances. The host is assumed to be @{code<service>-<tag>} if
+ * not explicitly set.
+ */
+ private final String tag;
+
+ /**
+ * The port exposed by the service on its host. May not be
+ * visible to the test. Required.
+ */
+
+ private final int port;
+
+ /**
+ * The proxy port visible for the test for this service. Defaults
+ * to the same as the @{code port}. Define only if Docker is configured
+ * for port mapping other than identity.
+ */
+ private final int proxyPort;
+
+ @JsonCreator
+ public ServiceInstance(
+ @JsonProperty("container") String container,
+ @JsonProperty("host") String host,
+ @JsonProperty("tag") String tag,
+ @JsonProperty("port") int port,
+ @JsonProperty("proxyPort") int proxyPort
+ )
+ {
+ this.container = container;
+ this.host = host;
+ this.tag = tag;
+ this.port = port;
+ this.proxyPort = proxyPort;
+ }
+
+ @JsonProperty("container")
+ @JsonInclude(Include.NON_NULL)
+ public String container()
+ {
+ return container;
+ }
+
+ @JsonProperty("host")
+ @JsonInclude(Include.NON_NULL)
+ public String host()
+ {
... 12532 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org