diff --git a/.gitignore b/.gitignore
index 57e5d5b..4718a9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,17 +15,17 @@
 # specific language governing permissions and limitations
 # under the License.
 
-/.ivy/
-/.bin/
-/build/
-/build.properties
-/archive/
-/ide-dependencies/
-/META-INF
+.ivy/
+.bin/
+build/
+build.properties
+archive/
+ide-dependencies/
+META-INF
 
-/out/
-/bin/
-/target/
+out/
+bin/
+target/
 
 .classpath
 .project
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..1edf54c
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+language: java
+jdk:
+  - openjdk8
+  - openjdk9
+  - openjdk10
+  - openjdk11
+  - openjdk12
+  - openjdk13
+script:
+  - mvn clean install
+  - cd ./freemarker-generator-cli
+  - sh ./run-samples.sh
+  - cd ../freemarker-generator-maven-plugin-sample
+  - mvn clean package
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2c19081..f9a227d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,15 +1,27 @@
-# Changelog
+# Change Log
 
-## 1.0.0-SNAPSHOT
+All notable changes to this project will be documented in this file. We try to adhere to https://github.com/olivierlacan/keep-a-changelog.
+
+## 0.1.0-SNAPSHOT
 
 ### Added
+* [FREEMARKER-129] Support document exclude pattern in addition to include pattern
+* [FREEMARKER-129] User-defined parameters are passed as `-Pkey=value` instead of using system properties
+* [FREEMARKER-129] Add `freemarker-generator-maven-plugin-sample`
+* [FREEMARKER-129] Migrate `freemarker-cli` into `freemarker-generator` project (see [https://github.com/sgoeschl/freemarker-cli](https://github.com/sgoeschl/freemarker-cli))
 
 ### Changed
+* [FREEMARKER-129] Use `freemarker.configuration.setting` in `freemarker-cli.properties` to configure FreeMarker
+* [FREEMARKER-129] Provide a `toString()` metheod for all tools
+* [FREEMARKER-129] Use version "0.X.Y" to cater for API changes according to [Semantic Versioning](https://semver.org)
+* [FREEMARKER-129] Change artifact `freemarker-maven-plugin` to `freemarker-generator-maven-plugin`
+* [FREEMARKER-128] Update `freemarker-maven-plugin` to Apache FreeMarker 2.3.29
 
-### Fixed
+### Deleted
 
-[FREEMARKER-127] Site build fails with missing "org/apache/maven/doxia/siterenderer/DocumentContent"
-
-### Removed
+### Fixed 
+* [FREEMARKER-127] Site build fails with missing "org/apache/maven/doxia/siterenderer/DocumentContent"
 
 [FREEMARKER-127]: https://issues.apache.org/jira/browse/FREEMARKER-127
+[FREEMARKER-128]: https://issues.apache.org/jira/browse/FREEMARKER-128
+[FREEMARKER-129]: https://issues.apache.org/jira/browse/FREEMARKER-129
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index de286ad..1121eba 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,223 +1,223 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
-
-=========================================================================
-
-The source code contains the following binaries,
-which were created at the Apache FreeMarker project, and hence are
-covered by the same license as the other source files of it:
-
-  src/main/misc/overloadedNumberRules/prices.ods
-  src/manual/en_US/docgen-originals/figures/overview.odg
-  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
-  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
-  src/manual/en_US/favicon.png
-  src/manual/en_US/figures/model2sketch.png
-  src/manual/en_US/figures/overview.png
-  src/manual/en_US/figures/tree.png
-  src/manual/en_US/logo.png
-  src/manual/zh_CN/favicon.png
-  src/manual/zh_CN/figures/model2sketch.png
-  src/manual/zh_CN/figures/overview.png
-  src/manual/zh_CN/figures/tree.png
-  src/manual/zh_CN/logo.png
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/NOTICE b/NOTICE
index bc6e606..c27f50e 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
-Apache FreeMarker
-Copyright 2015-2018 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
+Apache FreeMarker Site
+Copyright 2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.md b/README.md
index 3a6db0d..efc2fc2 100644
--- a/README.md
+++ b/README.md
@@ -1,184 +1,37 @@
-Apache FreeMarker Generator
-===========================
-
-For documentation or to report bugs visit:
-https://freemarker.apache.org/generator.html
-
-
-Regarding pull requests on Github
----------------------------------
-
-By sending a pull request you grant the Apache Software Foundation
-sufficient rights to use and release the submitted work under the
-Apache license. You grant the same rights (copyright license, patent
-license, etc.) to the Apache Software Foundation as if you have signed
-a [Contributor License Agreement](https://www.apache.org/dev/new-committers-guide.html#cla).
-For contributions that are judged to be non-trivial, you will be asked
-to actually signing a Contributor License Agreement.
-
-
-What is Apache FreeMarker Generator?
-------------------------------------
-
-FreeMarker Generator is a tool that generates files based on FreeMarker
-templates and data that's typically provided in files (such as JSON files) as
-well. It can be used to generated source code, configuration files, etc.
-
-Currently it can be invoked as a Maven plug-in, but in the future it might
-will be callable on other ways (say, from Gradle, or as a standalone command
-line tool).
-
-freemarker-generator-maven-plugin
----------------------------------
-## Table of contents
-
-- [Background](#background)
-- [Install](#install)
-- [Usage](#usage)
-  - [FreeMarker Template Files](#freemarker-template-files)
-  - [JSON Generator Files](#json-generator-files)
-  - [Using POM Properties During Generation](#using-pom-properties-during-generation)
-  - [FreeMarker Configuration](#freemarker-configuration)
-  - [Incremental Builds](#incremental-builds)
-- [Code Coverage](#code-coverage)
-- [Contributing](#contributing)
-- [License](#license)
-
-## Background
-This plugin generates source files from FreeMarker templates with a flexible process that includes the ability to:
-
-- Generate multiple source files from a single template,
-- Generate source files during multiple steps in the build process such as testing, and
-- Specify distinct locations for the templates and data models for different stages of the build. 
-
-## Install
-### pom.xml
-
-Add the following snippet within the `<plugins>` tag of your pom.xml:
-
-```xml
-      <plugin>
-        <groupId>com.oath</groupId>
-        <artifactId>freemarker-maven-plugin</artifactId>
-        <version>${freemarker-maven-plugin.version}</version>
-        <configuration>
-          <!-- Required. Specifies the compatibility version for template processing -->
-          <freeMarkerVersion>2.3.23</freeMarkerVersion>
-        </configuration>
-        <executions>
-          <!-- If you want to generate files during other phases, just add more execution
-               tags and specify appropriate phase, sourceDirectory and outputDirectory values.
-          -->
-          <execution>
-            <id>freemarker</id>
-            <!-- Optional, defaults to generate-sources -->
-            <phase>generate-sources</phase>
-            <goals>
-              <!-- Required, must be generate -->
-              <goal>generate</goal>
-            </goals>
-            <configuration>
-              <!-- Optional, defaults to src/main/freemarker/generator -->
-              <sourceDirectory>src/main/freemarker</sourceDirectory>
-              <!-- Optional, defaults to src/main/freemarker/generator/template -->
-              <templateDirectory>src/main/freemarker/template</templateDirectory>
-              <!-- Optional, defaults to src/main/freemarker/generator -->
-              <generatorDirectory>src/main/freemarker/generator/generator</generatorDirectory>
-              <!-- Optional, defaults to target/generated-sources/freemarker -->
-              <outputDirectory>target/generated-sources/freemarker/generator</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-```
-
-## Usage
-
-### FreeMarker Template Files
-FreeMarker template files must reside in the `templateDirectory`. For the default configuration,
-this is: `src/main/freemarker/generator/template`.
-
-By convention, file names for FreeMarker template files use the .ftl extension. For details on the FreeMarker
-template syntax, see: [Getting Started](https://freemarker.apache.org/docs/dgui_quickstart.html) and
-[Template Language Reference](https://freemarker.apache.org/docs/ref.html).
-
-### JSON Generator Files
-The JSON generator files must reside in the `generatorDirectory`. For the default
-configuration, this is: `src/main/freemarker/generator/generator`.
-
-For each JSON generator file, freemarker-maven-plugin will generate a file under the outputDirectory.
-The name of the generated file will be based on the name of the JSON data file. For example,
-the following JSON file: 
-```
-    <sourceDirectory>/data/my/package/MyClass.java.json
-```
-will result in the following file being generated:
-```
-    <outputDirectory>/my/package/MyClass.java
-```
-
-This plugin parses the JSON generator file's `dataModel` field into a `Map<String, Object>` instance (hereafter, referred
-to as the data model). If the dataModel field is empty, an empty map will be created.
-
-Here are some additional details you need to know.
-
-  - This plugin *requires* one top-level field in the JSON data file: `templateName`. This field is used to locate the template file under `<sourceDirectory>/template` that is used to generate the file. This plugin provides the data model to FreeMarker as the data model to process the template identified by `templateName`.
-  - The parser allows for comments.
-  - This plugin currently assumes that the JSON data file encoded using UTF-8.
-
-Here is an example JSON data file:
-```json
-{
-  // An end-of-line comment.
-  # Another end-of-line comment
-  "templateName": "my-template.ftl", #Required
-  "dataModel": { #Optional
-      /* A multi-line
-         comment */
-      "myString": "a string",
-      "myNumber": 1,
-      "myListOfStrings": ["s1", "s2"],
-      "myListOfNumbers": [1, 2],
-      "myMap": {
-        "key1": "value1",
-        "key2": 2
-      }
-  }
-}
-```
-
-### Using POM Properties During Generation
-After parsing the JSON file, the plugin will add
-a `pomProperties` entry into the data model, which is a map itself, that contains the properties defined in the pom. Thus, your template can reference the pom property `my_property` using `${pomProperties.my_property}`. If you have a period or dash in the property name, use `${pomProperties["my.property"]}`.
-
-
-
-### FreeMarker Configuration
-
-Typically, users of this plugin do not need to mess with the FreeMarker configuration. This plugin explicitly sets two FreeMarker configurations:
-
- 1. the default encoding is set to UTF-8
- 2. the template loader is set to be a FileTemplateLoader that reads from `templateDirectory`.
- 
-If you need to override these configs or set your own, you can put them in a 
-`<sourceDirectory>/freemarker.properties` file. If that file exists, this plugin will read it into a java Properties instance and pass it to freemarker.core.Configurable.setSettings() to establish the FreeMarker configuration. See this [javadoc](https://freemarker.apache.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-) for configuration details.
-
-
-### Incremental Builds
-This plugin supports incremental builds; it only generates sources if the generator file, template file, or pom file have timestamps newer than any existing output file.  To force a rebuild if these conditions are not met (for example, if you pass in a model parameter on the command line), first run `mvn clean`.
-
-## Code Coverage
-
-By default, the code coverage report is not generated. It is generated by screwdriver jobs. You can generate code coverage on your dev machine with the following maven command:
-```bash
-mvn clean initialize -Dclover-phase=initialize 
-``` 
-Bring up the coverage report by pointing your browser to target/site/clover/dashboard.html under the root directory of the local repository.
-
-
-Licensing
----------
-
-Apache FreeMarker Generator is licensed under the Apache License, Version 2.0.
-
-See the LICENSE file for more details!
+Apache FreeMarker Generator
+=============================================================================
+
+For documentation or to report bugs visit: [https://freemarker.apache.org](https://freemarker.apache.org)
+
+
+Regarding pull requests on Github
+-----------------------------------------------------------------------------
+
+By sending a pull request you grant the Apache Software Foundation
+sufficient rights to use and release the submitted work under the
+Apache license. You grant the same rights (copyright license, patent
+license, etc.) to the Apache Software Foundation as if you have signed
+a [Contributor License Agreement](https://www.apache.org/dev/new-committers-guide.html#cla).
+For contributions that are judged to be non-trivial, you will be asked
+to actually signing a Contributor License Agreement.
+
+
+What is Apache FreeMarker Generator?
+-----------------------------------------------------------------------------
+
+FreeMarker Generator is a set of tools that generates files based on FreeMarker
+templates and data that's typically provided in files (such as JSON files) as
+well. It can be used to generated source code, configuration files, etc.
+
+Currently it can be invoked as a 
+
+* Command-line interface `freemarker-generator-cli`
+* Maven plug-in `freemarker-generator-maven-plugin`
+
+
+Licensing
+-----------------------------------------------------------------------------
+
+Apache FreeMarker Generator is licensed under the Apache License, Version 2.0.
+
+See the LICENSE file for more details!
diff --git a/freemarker-generator-base/LICENSE b/freemarker-generator-base/LICENSE
new file mode 100644
index 0000000..1121eba
--- /dev/null
+++ b/freemarker-generator-base/LICENSE
@@ -0,0 +1,223 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/freemarker-generator-base/NOTICE b/freemarker-generator-base/NOTICE
new file mode 100644
index 0000000..c27f50e
--- /dev/null
+++ b/freemarker-generator-base/NOTICE
@@ -0,0 +1,5 @@
+Apache FreeMarker Site
+Copyright 2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/freemarker-generator-base/README.md b/freemarker-generator-base/README.md
new file mode 100644
index 0000000..9dd180d
--- /dev/null
+++ b/freemarker-generator-base/README.md
@@ -0,0 +1,9 @@
+# Overview
+
+This module provides common functionality for `freemarker-generator-cli` and `freemarker-generator-maven-plugin` such as
+
+* Various implementation of `DataSources`
+* Implementation of `Document` and utitity methods
+* Creating `Documents` 
+
+The code actually does not depend on Apache FreeMarker since it useful for other command line tools as well.
\ No newline at end of file
diff --git a/freemarker-generator-base/pom.xml b/freemarker-generator-base/pom.xml
new file mode 100644
index 0000000..6b4cb5b
--- /dev/null
+++ b/freemarker-generator-base/pom.xml
@@ -0,0 +1,65 @@
+<?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>
+
+    <parent>
+        <groupId>org.apache.freemarker.generator</groupId>
+        <artifactId>freemarker-generator</artifactId>
+        <version>0.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>freemarker-generator-base</artifactId>
+    <name>Apache FreeMarker Generator: Base</name>
+    <description>Common functionality</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <!-- Testing -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>*.md</exclude>
+                        <exclude>**/*.csv</exclude>
+                        <exclude>src/test/data/txt/file_01.txt</exclude>
+                      </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+
+</project>
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
new file mode 100644
index 0000000..ab6a11f
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/FreeMarkerConstants.java
@@ -0,0 +1,71 @@
+package org.apache.freemarker.generator.base;
+
+import java.nio.charset.Charset;
+import java.util.Locale;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Locale.US;
+
+/**
+ * Capture the various constants used within the project.
+ */
+public class FreeMarkerConstants {
+
+    private FreeMarkerConstants() {
+    }
+
+    /** Content type for binary data */
+    public static final String APPLICATION_OCTET_STREAM = "application/octet-stream";
+
+    /** Unknown length for a <code>Document </code> */
+    public static final int DOCUMENT_UNKNOWN_LENGTH = -1;
+
+    /** Default locale for rendering templates */
+    public static final Locale DEFAULT_LOCALE = US;
+
+    /* Default encoding for textual content */
+    public static final Charset DEFAULT_CHARSET = UTF_8;
+
+    public static class Configuration {
+
+        private Configuration() {
+        }
+
+        /** Prefix to extract tools from 'freemarker-cli.properties' */
+        public static final String TOOLS_PREFIX = "freemarker.tools.";
+
+        /** Key for reading the configured locale from 'freemarker-cli.properties' */
+        public static final String LOCALE_KEY = "freemarker.configuration.setting.locale";
+
+        /** Prefix to extract FreeMarker configuration settings from 'freemarker-cli.properties' */
+        public static final String SETTING_PREFIX = "freemarker.configuration.setting.";
+    }
+
+    public static class Location {
+
+        private Location() {
+        }
+
+        public static final String BYTES = "bytes";
+        public static final String INTERACTIVE = "interactive";
+        public static final String INPUTSTREAM = "inputstream";
+        public static final String STDIN = "stdin";
+        public static final String STRING = "string";
+        public static final String URL = "url";
+    }
+
+    public static class Model {
+
+        private Model() {
+        }
+
+        public static final String DOCUMENTS = "Documents";
+
+        public static final String FREEMARKER_CLI_ARGS = "freemarker.cli.args";
+        public static final String FREEMARKER_LOCALE = "freemarker.locale";
+        public static final String FREEMARKER_WRITER = "freemarker.writer";
+        public static final String FREEMARKER_TEMPLATE_DIRECTORIES = "freemarker.template.directories";
+        public static final String FREEMARKER_USER_SYSTEM_PROPERTIES = "freemarker.user.system.properties";
+        public static final String FREEMARKER_USER_PARAMETERS = "freemarker.user.parameters";
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java
new file mode 100644
index 0000000..619f667
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/ByteArrayDataSource.java
@@ -0,0 +1,80 @@
+/*
+ * 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.freemarker.generator.base.activation;
+
+import javax.activation.DataSource;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.APPLICATION_OCTET_STREAM;
+
+public class ByteArrayDataSource implements DataSource {
+
+    private final String name;
+    private final byte[] content;
+    private final String contentType;
+
+    public ByteArrayDataSource(String name, byte[] content) {
+        this(name, content, APPLICATION_OCTET_STREAM);
+    }
+
+    public ByteArrayDataSource(String name, byte[] content, String contentType) {
+        this.name = requireNonNull(name);
+        this.content = requireNonNull(content);
+        this.contentType = requireNonNull(contentType);
+    }
+
+    @Override
+    public InputStream getInputStream() {
+        return new ByteArrayInputStream(content);
+    }
+
+    @Override
+    public OutputStream getOutputStream() {
+        return null;
+    }
+
+    @Override
+    public String getContentType() {
+        return contentType;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String toString() {
+        return "ByteArrayDataSource{" +
+                "name='" + name + '\'' +
+                ", contentType=" + contentType +
+                ", length=" + content.length +
+                '}';
+    }
+
+    public byte[] getContent() {
+        return content;
+    }
+
+    public long length() {
+        return content.length;
+    }
+}
\ No newline at end of file
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/InputStreamDataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/InputStreamDataSource.java
new file mode 100644
index 0000000..da5f6bd
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/InputStreamDataSource.java
@@ -0,0 +1,76 @@
+/*
+ * 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.freemarker.generator.base.activation;
+
+import javax.activation.DataSource;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.APPLICATION_OCTET_STREAM;
+
+/**
+ * Wraps an InputStream into a DataSource. Please note that the input stream
+ * is not buffered and can be consumed only once to support streaming of
+ * arbitrary large amount of data.
+ */
+public class InputStreamDataSource implements DataSource {
+
+    private final String name;
+    private final InputStream is;
+    private final String contentType;
+
+    public InputStreamDataSource(String name, InputStream is) {
+        this(name, is, APPLICATION_OCTET_STREAM);
+    }
+
+    public InputStreamDataSource(String name, InputStream is, String contentType) {
+        this.name = requireNonNull(name);
+        this.is = requireNonNull(is);
+        this.contentType = requireNonNull(contentType);
+    }
+
+    @Override
+    public InputStream getInputStream() {
+        return is;
+    }
+
+    @Override
+    public OutputStream getOutputStream() {
+        return null;
+    }
+
+    @Override
+    public String getContentType() {
+        return contentType;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String toString() {
+        return "InputStreamDataSource{" +
+                "name='" + name + '\'' +
+                ", contentType='" + contentType + '\'' +
+                ", inputStream=" + is.getClass().getName() +
+                '}';
+    }
+}
+
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java
new file mode 100644
index 0000000..7e9c29d
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/activation/StringDataSource.java
@@ -0,0 +1,84 @@
+/*
+ * 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.freemarker.generator.base.activation;
+
+import javax.activation.DataSource;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Objects.requireNonNull;
+
+public class StringDataSource implements DataSource {
+
+    private final String name;
+    private final String content;
+    private final Charset charset;
+
+    public StringDataSource(String name, String content) {
+        this(name, content, UTF_8);
+    }
+
+    public StringDataSource(String name, String content, Charset charset) {
+        this.name = requireNonNull(name);
+        this.content = requireNonNull(content);
+        this.charset = requireNonNull(charset);
+    }
+
+    @Override
+    public InputStream getInputStream() {
+        return new ByteArrayInputStream(content.getBytes(charset));
+    }
+
+    @Override
+    public OutputStream getOutputStream() {
+        return null;
+    }
+
+    @Override
+    public String getContentType() {
+        return "plain/text";
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public Charset getCharset() {
+        return charset;
+    }
+
+    public long length() {
+        return content.length();
+    }
+
+    @Override
+    public String toString() {
+        return "StringDataSource{" +
+                "name='" + name + '\'' +
+                ", charset=" + charset +
+                ", length=" + content.length() +
+                '}';
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java
new file mode 100644
index 0000000..6fddd42
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Document.java
@@ -0,0 +1,220 @@
+/*
+ * 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.freemarker.generator.base.document;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.LineIterator;
+import org.apache.freemarker.generator.base.activation.ByteArrayDataSource;
+import org.apache.freemarker.generator.base.activation.StringDataSource;
+import org.apache.freemarker.generator.base.util.CloseableReaper;
+
+import javax.activation.DataSource;
+import javax.activation.FileDataSource;
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.nio.charset.Charset;
+import java.util.List;
+
+import static java.nio.charset.Charset.forName;
+import static java.util.Objects.requireNonNull;
+import static org.apache.commons.io.IOUtils.lineIterator;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.DOCUMENT_UNKNOWN_LENGTH;
+
+/**
+ * Source document which encapsulates a data source. When accessing
+ * content it is loaded on demand on not kept in memory to allow
+ * processing of large volumes of data.
+ */
+public class Document implements Closeable {
+
+    /** Human-readable name of the document */
+    private final String name;
+
+    /** Charset for directly accessing text-based content */
+    private final Charset charset;
+
+    /** The data source */
+    private final DataSource dataSource;
+
+    /** The location of the content, e.g. file name */
+    private final String location;
+
+    /** Collect all closables handed out to the caller to be closed when the document is closed itself */
+    private final CloseableReaper closables;
+
+    public Document(String name, DataSource dataSource, String location, Charset charset) {
+        this.name = requireNonNull(name);
+        this.dataSource = requireNonNull(dataSource);
+        this.location = requireNonNull(location);
+        this.charset = requireNonNull(charset);
+        this.closables = new CloseableReaper();
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getBaseName() {
+        return FilenameUtils.getBaseName(name);
+    }
+
+    public String getExtension() {
+        return FilenameUtils.getExtension(name);
+    }
+
+    public Charset getCharset() {
+        return charset;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    /**
+     * Try to get the length lazily, efficient and without consuming the input stream.
+     *
+     * @return Length of document or UNKNOWN_LENGTH
+     */
+    public long getLength() {
+        if (dataSource instanceof FileDataSource) {
+            return ((FileDataSource) dataSource).getFile().length();
+        } else if (dataSource instanceof StringDataSource) {
+            return ((StringDataSource) dataSource).length();
+        } else if (dataSource instanceof ByteArrayDataSource) {
+            return ((ByteArrayDataSource) dataSource).length();
+        } else {
+            return DOCUMENT_UNKNOWN_LENGTH;
+        }
+    }
+
+    /**
+     * Get an input stream which is closed together with this document.
+     *
+     * @return InputStream
+     * @throws IOException Operation failed
+     */
+    public InputStream getInputStream() throws IOException {
+        return closables.add(getUnsafeInputStream());
+    }
+
+    /**
+     * Get an input stream which needs to be closed by the caller.
+     *
+     * @return InputStream
+     * @throws IOException Operation failed
+     */
+    public InputStream getUnsafeInputStream() throws IOException {
+        return dataSource.getInputStream();
+    }
+
+    public String getText() throws IOException {
+        return getText(getCharset().name());
+    }
+
+    public String getText(String charsetName) throws IOException {
+        final StringWriter writer = new StringWriter();
+        try (InputStream is = getUnsafeInputStream()) {
+            IOUtils.copy(is, writer, forName(charsetName));
+            return writer.toString();
+        }
+    }
+
+    /**
+     * Gets the contents of an <code>InputStream</code> as a list of Strings,
+     * one entry per line, using the specified character encoding.
+     *
+     * @return the list of Strings, never null
+     * @throws IOException if an I/O error occurs
+     */
+    public List<String> getLines() throws IOException {
+        return getLines(getCharset().name());
+    }
+
+    /**
+     * Gets the contents of an <code>InputStream</code> as a list of Strings,
+     * one entry per line, using the specified character encoding.
+     *
+     * @param charsetName The name of the requested charset
+     * @return the list of Strings, never null
+     * @throws IOException if an I/O error occurs
+     */
+    public List<String> getLines(String charsetName) throws IOException {
+        try (InputStream inputStream = getUnsafeInputStream()) {
+            return IOUtils.readLines(inputStream, charsetName);
+        }
+    }
+
+    /**
+     * Returns an Iterator for the lines in an <code>InputStream</code>, using
+     * the default character encoding specified. The caller is responsible to close
+     * the line iterator.
+     *
+     * @return line iterator
+     * @throws IOException if an I/O error occurs
+     */
+    public LineIterator getLineIterator() throws IOException {
+        return getLineIterator(getCharset().name());
+    }
+
+    /**
+     * Returns an Iterator for the lines in an <code>InputStream</code>, using
+     * the character encoding specified.
+     *
+     * @param charsetName The name of the requested charset
+     * @return line iterator
+     * @throws IOException if an I/O error occurs
+     */
+    public LineIterator getLineIterator(String charsetName) throws IOException {
+        return closables.add(lineIterator(getUnsafeInputStream(), forName(charsetName)));
+    }
+
+    public byte[] getBytes() throws IOException {
+        try (InputStream inputStream = getUnsafeInputStream()) {
+            return IOUtils.toByteArray(inputStream);
+        }
+    }
+
+    /**
+     * Some tools create a {@link java.io.Closeable} which can bound to the
+     * lifecycle of the document. When the document is closed all the bound
+     * {@link java.io.Closeable} are closed as well.
+     *
+     * @param closeable Closable
+     * @param <T>       Type of closable
+     * @return Closable
+     */
+    public <T extends Closeable> T addClosable(T closeable) {
+        return closables.add(closeable);
+    }
+
+    @Override
+    public void close() {
+        closables.close();
+    }
+
+    @Override
+    public String toString() {
+        return "Document{" +
+                "name='" + name + '\'' +
+                ", location=" + location +
+                ", charset='" + charset + '\'' +
+                '}';
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java
new file mode 100644
index 0000000..de4ed51
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentFactory.java
@@ -0,0 +1,76 @@
+/*
+ * 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.freemarker.generator.base.document;
+
+import org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
+import org.apache.freemarker.generator.base.activation.ByteArrayDataSource;
+import org.apache.freemarker.generator.base.activation.InputStreamDataSource;
+import org.apache.freemarker.generator.base.activation.StringDataSource;
+
+import javax.activation.DataSource;
+import javax.activation.FileDataSource;
+import javax.activation.URLDataSource;
+import java.io.File;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.charset.Charset;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+/**
+ * Creates a document from various sources.
+ */
+public class DocumentFactory {
+
+    private DocumentFactory() {
+    }
+
+    public static Document create(URL url) {
+        final String location = url.getProtocol() + "://" + url.getHost();
+        final URLDataSource dataSource = new URLDataSource(url);
+        return create(url.getHost(), dataSource, location, UTF_8);
+    }
+
+    public static Document create(String name, String content) {
+        final StringDataSource dataSource = new StringDataSource(name, content, UTF_8);
+        return create(name, dataSource, Location.STRING, UTF_8);
+    }
+
+    public static Document create(File file, Charset charset) {
+        final FileDataSource dataSource = new FileDataSource(file);
+        return create(file.getName(), dataSource, file.getAbsolutePath(), charset);
+    }
+
+    public static Document create(String name, byte[] content) {
+        final ByteArrayDataSource dataSource = new ByteArrayDataSource(name, content);
+        return create(name, dataSource, Location.BYTES, UTF_8);
+    }
+
+    public static Document create(String name, InputStream is, Charset charset) {
+        final InputStreamDataSource dataSource = new InputStreamDataSource(name, is);
+        return create(name, dataSource, Location.INPUTSTREAM, charset);
+    }
+
+    public static Document create(String name, InputStream is, String location, Charset charset) {
+        final InputStreamDataSource dataSource = new InputStreamDataSource(name, is);
+        return create(name, dataSource, location, charset);
+    }
+
+    public static Document create(String name, DataSource dataSource, String location, Charset charset) {
+        return new Document(name, dataSource, location, charset);
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Documents.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Documents.java
new file mode 100644
index 0000000..c1c4680
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/Documents.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.freemarker.generator.base.document;
+
+import org.apache.freemarker.generator.base.util.ClosableUtils;
+
+import java.io.Closeable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import static java.util.stream.Collectors.toList;
+import static org.apache.commons.io.FilenameUtils.wildcardMatch;
+
+/**
+ * Container for documents with a couple of convenience functions to select
+ * a subset of documents.
+ */
+public class Documents implements Closeable {
+
+    private final List<Document> documents;
+
+    public Documents(Collection<Document> documents) {
+        this.documents = new ArrayList<>(documents);
+    }
+
+    /**
+     * Get the names of all documents.
+     *
+     * @return document names
+     */
+    public List<String> getNames() {
+        return documents.stream()
+                .map(Document::getName)
+                .collect(toList());
+    }
+
+    public int size() {
+        return documents.size();
+    }
+
+    public boolean isEmpty() {
+        return documents.isEmpty();
+    }
+
+    public Document getFirst() {
+        return documents.get(0);
+    }
+
+    public List<Document> getList() {
+        return new ArrayList<>(documents);
+    }
+
+    public Document get(int index) {
+        return documents.get(index);
+    }
+
+    public boolean add(Document document) {
+        return documents.add(document);
+    }
+
+    public Document remove(int index) {
+        return documents.remove(index);
+    }
+
+    /**
+     * Get exactly one document. If not exactly one document
+     * is found an exception is thrown.
+     *
+     * @param name name of the document
+     * @return document
+     */
+    public Document get(String name) {
+        final List<Document> list = find(name);
+
+        if (list.isEmpty()) {
+            throw new IllegalArgumentException("Document not found : " + name);
+        }
+
+        if (list.size() > 1) {
+            throw new IllegalArgumentException("More than one document found : " + name);
+        }
+
+        return list.get(0);
+    }
+
+    /**
+     * Find document based on theit name and globbing pattern.
+     *
+     * @param wildcard globbing pattern
+     * @return list of mathching documents
+     */
+    public List<Document> find(String wildcard) {
+        return documents.stream()
+                .filter(d -> wildcardMatch(d.getName(), wildcard))
+                .collect(toList());
+    }
+
+    @Override
+    public void close() {
+        documents.forEach(ClosableUtils::closeQuietly);
+    }
+
+    @Override
+    public String toString() {
+        return "Documents{" +
+                "documents=" + documents +
+                '}';
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentsSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentsSupplier.java
new file mode 100644
index 0000000..e4b85a9
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/document/DocumentsSupplier.java
@@ -0,0 +1,106 @@
+/*
+ * 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.freemarker.generator.base.document;
+
+import org.apache.freemarker.generator.base.file.RecursiveFileSupplier;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Supplier;
+
+import static java.util.Collections.singletonList;
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Collectors.toList;
+
+/**
+ * Create a list of <code>Document</code> based on a list of sources consisting of
+ * URLs, directories and files.
+ */
+public class DocumentsSupplier implements Supplier<List<Document>> {
+
+    /** List of source files and/or directories */
+    private final Collection<String> sources;
+
+    /** Optional include pattern for resolving source files or directory */
+    private final String include;
+
+    /** Optional exclude pattern for resolving source files or directory */
+    private final String exclude;
+
+    /** The charset for loading text files */
+    private final Charset charset;
+
+    /**
+     * Constructor.
+     *
+     * @param sources List of source files and/or directories
+     * @param include Optional include pattern for resolving source files or directory
+     * @param charset The charset for loading text files
+     */
+    public DocumentsSupplier(Collection<String> sources, String include, String exclude, Charset charset) {
+        this.sources = new ArrayList<>(sources);
+        this.include = include;
+        this.exclude = exclude;
+        this.charset = requireNonNull(charset);
+    }
+
+    @Override
+    public List<Document> get() {
+        return sources.stream()
+                .map(this::get)
+                .flatMap(Collection::stream)
+                .collect(toList());
+    }
+
+    private List<Document> get(String source) {
+        if (isHttpUrl(source)) {
+            return singletonList(resolveHttpUrl(source));
+        } else {
+            return resolveFile(source, include, exclude, charset);
+        }
+    }
+
+    private static Document resolveHttpUrl(String url) {
+        return DocumentFactory.create(toUrl(url));
+    }
+
+    private static List<Document> resolveFile(String source, String include, String exclude, Charset charset) {
+        return fileResolver(source, include, exclude).get().stream()
+                .map(file -> DocumentFactory.create(file, charset))
+                .collect(toList());
+    }
+
+    private static RecursiveFileSupplier fileResolver(String source, String include, String exclude) {
+        return new RecursiveFileSupplier(singletonList(source), singletonList(include), singletonList(exclude));
+    }
+
+    private static boolean isHttpUrl(String value) {
+        return value.startsWith("http://") || value.startsWith("https://");
+    }
+
+    private static URL toUrl(String value) {
+        try {
+            return new URL(value);
+        } catch (MalformedURLException e) {
+            throw new IllegalArgumentException(value, e);
+        }
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesClassPathSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesClassPathSupplier.java
new file mode 100644
index 0000000..5a1e8d6
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesClassPathSupplier.java
@@ -0,0 +1,65 @@
+/*
+ * 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.freemarker.generator.base.file;
+
+import org.apache.freemarker.generator.base.util.PropertiesFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+import java.util.function.Supplier;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Resolve a given properties file from the classpath.
+ */
+public class PropertiesClassPathSupplier implements Supplier<Properties> {
+
+    private final String fileName;
+
+    public PropertiesClassPathSupplier(String fileName) {
+        this.fileName = requireNonNull(fileName);
+    }
+
+    @Override
+    public Properties get() {
+        try {
+            return resolve(fileName);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to supply properties file:" + fileName);
+        }
+    }
+
+    private static Properties resolve(String fileName) throws IOException {
+        final InputStream is = PropertiesClassPathSupplier.class.getResourceAsStream(resourceName(fileName));
+
+        if (is == null) {
+            return null;
+        }
+
+        try {
+            return PropertiesFactory.create(is);
+        } finally {
+            is.close();
+        }
+    }
+
+    private static String resourceName(String name) {
+        return name.startsWith("/") ? name : "/" + name;
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesFileSystemSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesFileSystemSupplier.java
new file mode 100644
index 0000000..cac60ec
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesFileSystemSupplier.java
@@ -0,0 +1,57 @@
+/*
+ * 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.freemarker.generator.base.file;
+
+import org.apache.freemarker.generator.base.util.PropertiesFactory;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+import java.util.function.Supplier;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Resolve a given properties file from the file system.
+ */
+public class PropertiesFileSystemSupplier implements Supplier<Properties> {
+
+    private final String fileName;
+
+    public PropertiesFileSystemSupplier(String fileName) {
+        this.fileName = requireNonNull(fileName);
+    }
+
+    @Override
+    public Properties get() {
+        final File file = new File(fileName);
+
+        if (!file.exists()) {
+            return null;
+        }
+
+        try {
+            try (InputStream is = new FileInputStream(file)) {
+                return PropertiesFactory.create(is);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to load properties file:" + fileName);
+        }
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesSupplier.java
new file mode 100644
index 0000000..ac8b2a9
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/PropertiesSupplier.java
@@ -0,0 +1,46 @@
+/*
+ * 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.freemarker.generator.base.file;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.function.Supplier;
+
+import static java.util.Arrays.asList;
+
+/**
+ * Resolve a given properties file using a list of suppliers.
+ */
+public class PropertiesSupplier implements Supplier<Properties> {
+
+    private final List<Supplier<Properties>> suppliers;
+
+    @SafeVarargs
+    public PropertiesSupplier(Supplier<Properties>... suppliers) {
+        this.suppliers = asList(suppliers);
+    }
+
+    @Override
+    public Properties get() {
+        return this.suppliers.stream()
+                .map(Supplier::get)
+                .filter(Objects::nonNull)
+                .findFirst()
+                .orElse(null);
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/RecursiveFileSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/RecursiveFileSupplier.java
new file mode 100644
index 0000000..097e17d
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/file/RecursiveFileSupplier.java
@@ -0,0 +1,133 @@
+/*
+ * 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.freemarker.generator.base.file;
+
+import org.apache.commons.io.filefilter.AndFileFilter;
+import org.apache.commons.io.filefilter.IOFileFilter;
+import org.apache.commons.io.filefilter.NotFileFilter;
+import org.apache.commons.io.filefilter.OrFileFilter;
+import org.apache.commons.io.filefilter.WildcardFileFilter;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.function.Supplier;
+
+import static java.util.Collections.emptyList;
+import static java.util.Collections.singletonList;
+import static java.util.stream.Collectors.toList;
+import static org.apache.commons.io.FileUtils.listFiles;
+import static org.apache.commons.io.filefilter.HiddenFileFilter.HIDDEN;
+import static org.apache.commons.io.filefilter.HiddenFileFilter.VISIBLE;
+import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty;
+
+/**
+ * Resolve a list of files or directories recursively.
+ *
+ * <ul>
+ *     <li>Matching a list of include patterns</li>
+ *     <li>Matching a list of exclude patterns</li>
+ *     <li>Ignoring invisible files and directories</li>
+ * </ul>
+ */
+public class RecursiveFileSupplier implements Supplier<List<File>> {
+
+    /** List of sources containing files and directories */
+    private final Collection<String> sources;
+
+    /** File filter to apply */
+    private final IOFileFilter fileFilter;
+
+    /** Diectory filter to apply */
+    private final IOFileFilter directoryFilter;
+
+    public RecursiveFileSupplier(Collection<String> sources, Collection<String> includes, Collection<String> excludes) {
+        this.sources = sources;
+        this.fileFilter = fileFilter(includes, excludes);
+        this.directoryFilter = directoryFilter();
+    }
+
+    @Override
+    public List<File> get() {
+        if (sources == null || sources.isEmpty()) {
+            return emptyList();
+        }
+
+        return sources.stream()
+                .map(this::resolve)
+                .flatMap(Collection::stream)
+                .collect(toList());
+    }
+
+    private List<File> resolve(String source) {
+        final File file = new File(source);
+
+        if (file.isFile()) {
+            return resolveFile(file);
+        } else if (file.isDirectory()) {
+            return new ArrayList<>(resolveDirectory(file));
+        } else {
+            throw new IllegalArgumentException("Unable to find source: " + source);
+        }
+    }
+
+    private List<File> resolveFile(File file) {
+        return fileFilter.accept(file) ? singletonList(file) : emptyList();
+    }
+
+    private List<File> resolveDirectory(File directory) {
+        return new ArrayList<>(listFiles(directory, fileFilter, directoryFilter));
+    }
+
+    private static IOFileFilter fileFilter(Collection<String> includes, Collection<String> excludes) {
+        final List<IOFileFilter> fileFilters = new ArrayList<>();
+        fileFilters.addAll(includeFilters(includes));
+        fileFilters.addAll(excludeFilters(excludes));
+        return new AndFileFilter(fileFilters);
+    }
+
+    private static List<IOFileFilter> includeFilters(Collection<String> includes) {
+        if (includes == null || includes.isEmpty()) {
+            return emptyList();
+        }
+
+        return includes.stream().map(RecursiveFileSupplier::includeFilter).collect(toList());
+    }
+
+    private static IOFileFilter includeFilter(String include) {
+        return isEmpty(include) ? VISIBLE : new AndFileFilter(new WildcardFileFilter(include), VISIBLE);
+    }
+
+    private static List<IOFileFilter> excludeFilters(Collection<String> excludes) {
+        if (excludes == null || excludes.isEmpty()) {
+            return emptyList();
+        }
+
+        return excludes.stream().map(RecursiveFileSupplier::exludeFilter).collect(toList());
+    }
+
+    private static IOFileFilter exludeFilter(String exclude) {
+        return isEmpty(exclude) ?
+                VISIBLE :
+                new NotFileFilter(new OrFileFilter(new WildcardFileFilter(exclude), HIDDEN));
+    }
+
+    private static IOFileFilter directoryFilter() {
+        return VISIBLE;
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java
new file mode 100644
index 0000000..b8eacc1
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/tools/ToolsFactory.java
@@ -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.
+ */
+package org.apache.freemarker.generator.base.tools;
+
+import java.lang.reflect.Constructor;
+import java.util.Map;
+
+import static java.util.Arrays.stream;
+import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty;
+
+public class ToolsFactory {
+
+    /**
+     * Checks if the given class can be loaded from the class loader.
+     *
+     * @param clazzName Class to instantiate
+     * @return true if loaded
+     */
+    public static boolean exists(String clazzName) {
+        if (isEmpty(clazzName)) {
+            return false;
+        }
+
+        try {
+            return forName(clazzName) != null;
+        } catch (NoClassDefFoundError | ClassNotFoundException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Create a tool instance either using single argument constructor taking a map or
+     * the default constructor.
+     *
+     * @param clazzName Class to instantiate
+     * @param settings  Settings used to configure the tool
+     * @return Tool instance
+     */
+    public static Object create(String clazzName, Map<String, Object> settings) {
+        try {
+            final Class<?> clazz = Class.forName(clazzName);
+            final Constructor<?>[] constructors = clazz.getConstructors();
+            final Constructor<?> constructorWithSettings = findSingleParameterConstructor(constructors, Map.class);
+            final Constructor<?> defaultConstructor = findDefaultConstructor(constructors);
+            return constructorWithSettings != null ? constructorWithSettings.newInstance(settings) : defaultConstructor.newInstance();
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to create tool: " + clazzName, e);
+        }
+    }
+
+    private static Constructor<?> findSingleParameterConstructor(Constructor<?>[] constructors, Class<?> parameterClazz) {
+        return stream(constructors)
+                .filter(c -> c.getParameterCount() == 1 && c.getParameterTypes()[0].equals(parameterClazz))
+                .findFirst()
+                .orElse(null);
+    }
+
+    private static Constructor<?> findDefaultConstructor(Constructor<?>[] constructors) {
+        return stream(constructors)
+                .filter(c -> c.getParameterCount() == 0)
+                .findFirst()
+                .orElse(null);
+    }
+
+    /**
+     * Similar to {@link Class#forName(java.lang.String)}, but attempts to load
+     * through the thread context class loader. Only if thread context class
+     * loader is inaccessible, or it can't find the class will it attempt to
+     * fall back to the class loader that loads the FreeMarker classes.
+     */
+    private static Class<?> forName(String className) throws ClassNotFoundException {
+        try {
+            final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+            if (contextClassLoader != null) {  // not null: we don't want to fall back to the bootstrap class loader
+                return Class.forName(className, true, contextClassLoader);
+            }
+        } catch (ClassNotFoundException | SecurityException e) {
+            ;// Intentionally ignored
+        }
+
+        // Fall back to the defining class loader of the FreeMarker classes
+        return Class.forName(className);
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/CachingSupplier.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/CachingSupplier.java
new file mode 100644
index 0000000..fbada67
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/CachingSupplier.java
@@ -0,0 +1,21 @@
+package org.apache.freemarker.generator.base.util;
+
+import java.util.function.Supplier;
+
+public class CachingSupplier<T> implements Supplier<T> {
+
+    private T cachedValue;
+    private final Supplier<T> supplier;
+
+    public CachingSupplier(Supplier<T> supplier) {
+        this.supplier = supplier;
+    }
+
+    @Override
+    public synchronized T get() {
+        if (cachedValue == null) {
+            cachedValue = supplier.get();
+        }
+        return cachedValue;
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ClosableUtils.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ClosableUtils.java
new file mode 100644
index 0000000..dfefc01
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/ClosableUtils.java
@@ -0,0 +1,33 @@
+/*
+ * 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.freemarker.generator.base.util;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+public class ClosableUtils {
+
+    public static void closeQuietly(final Closeable closeable) {
+        try {
+            if (closeable != null) {
+                closeable.close();
+            }
+        } catch (final IOException e) {
+            // e.printStackTrace();
+        }
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/CloseableReaper.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/CloseableReaper.java
new file mode 100644
index 0000000..fb56abe
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/CloseableReaper.java
@@ -0,0 +1,45 @@
+/*
+ * 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.freemarker.generator.base.util;
+
+import java.io.Closeable;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Keep track of closables created on behalf of the client to close
+ * them all later on.
+ */
+public class CloseableReaper implements Closeable {
+
+    private final List<WeakReference<Closeable>> closeables = new ArrayList<>();
+
+    public synchronized <T extends Closeable> T add(T closeable) {
+        if (closeable != null) {
+            closeables.add(new WeakReference<>(closeable));
+        }
+        return closeable;
+    }
+
+    @Override
+    public synchronized void close() {
+        closeables.forEach(c -> ClosableUtils.closeQuietly(c.get()));
+        closeables.clear();
+    }
+}
+
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/LocaleUtils.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/LocaleUtils.java
new file mode 100644
index 0000000..5edd405
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/LocaleUtils.java
@@ -0,0 +1,33 @@
+/*
+ * 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.freemarker.generator.base.util;
+
+import java.util.Locale;
+
+import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty;
+
+public class LocaleUtils {
+
+    public static Locale parseLocale(String value) {
+        if (isEmpty(value) || value.equalsIgnoreCase("JVM default") || value.equalsIgnoreCase("default")) {
+            return Locale.getDefault();
+        }
+
+        final String[] parts = value.split("_");
+        return parts.length == 1 ? new Locale(parts[0]) : new Locale(parts[0], parts[1]);
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/NonClosableWriterWrapper.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/NonClosableWriterWrapper.java
new file mode 100644
index 0000000..e2637b7
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/NonClosableWriterWrapper.java
@@ -0,0 +1,96 @@
+/*
+ * 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.freemarker.generator.base.util;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Wraps a writer (usually the internal FreeMarker's writer instance
+ * and avoids closing it since this would crash FreeMarker. E.g. the
+ * Commons CSV integration uses the FreeMarker writer directly but
+ * some implementation could call "CSVPrinter#close"
+ */
+public class NonClosableWriterWrapper extends Writer {
+
+    private final Writer delegate;
+
+    public NonClosableWriterWrapper(Writer delegate) {
+        this.delegate = requireNonNull(delegate);
+    }
+
+    @Override
+    public void write(int c) throws IOException {
+        delegate.write(c);
+    }
+
+    @Override
+    public void write(char[] cbuf) throws IOException {
+        delegate.write(cbuf);
+    }
+
+    @Override
+    public void write(char[] cbuf, int off, int len) throws IOException {
+        delegate.write(cbuf, off, len);
+    }
+
+    @Override
+    public void write(String str) throws IOException {
+        delegate.write(str);
+    }
+
+    @Override
+    public void write(String str, int off, int len) throws IOException {
+        delegate.write(str, off, len);
+    }
+
+    @Override
+    public Writer append(CharSequence csq) throws IOException {
+        return delegate.append(csq);
+    }
+
+    @Override
+    public Writer append(CharSequence csq, int start, int end) throws IOException {
+        return delegate.append(csq, start, end);
+    }
+
+    @Override
+    public Writer append(char c) throws IOException {
+        return delegate.append(c);
+    }
+
+    @Override
+    public void flush() throws IOException {
+        delegate.flush();
+    }
+
+    @Override
+    public void close() {
+        // ignore
+    }
+
+    @Override
+    public String toString() {
+        return delegate.toString();
+    }
+
+    public Writer getDelegate() {
+        return delegate;
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesFactory.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesFactory.java
new file mode 100644
index 0000000..e3ad2eb
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesFactory.java
@@ -0,0 +1,29 @@
+package org.apache.freemarker.generator.base.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.Properties;
+
+public class PropertiesFactory {
+
+    public static Properties create(InputStream is) {
+        try {
+            final Properties properties = new Properties();
+            properties.load(is);
+            return properties;
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to load properties file", e);
+        }
+    }
+
+    public static Properties create(String value) {
+        try (StringReader reader = new StringReader(value)) {
+            final Properties properties = new Properties();
+            properties.load(reader);
+            return properties;
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to parse properties: " + value, e);
+        }
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
new file mode 100644
index 0000000..a863b8d
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/PropertiesTransformer.java
@@ -0,0 +1,66 @@
+/*
+ * 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.freemarker.generator.base.util;
+
+import java.util.Properties;
+
+/**
+ * Helper class to transform <code>java.util.Properties</code>
+ */
+public class PropertiesTransformer {
+
+    /**
+     * Create a new <code>java.util.Properties</code> instance having only key with the prefix.
+     *
+     * @param properties the properties
+     * @param prefix     prefix
+     * @return Properties
+     */
+    public static Properties filterKeyPrefix(Properties properties, String prefix) {
+        final Properties result = new Properties();
+        properties.entrySet()
+                .stream()
+                .filter(entry -> entry.getKey().toString().startsWith(prefix))
+                .forEach(entry -> result.put(entry.getKey().toString(), entry.getValue()));
+        return result;
+    }
+
+    /**
+     * Create a new <code>java.util.Properties</code> instance having the key prefix removed.
+     *
+     * @param properties the properties
+     * @param prefix     prefix to be removed from the matching keys
+     * @return Properties
+     */
+    public static Properties removeKeyPrefix(Properties properties, String prefix) {
+        final Properties result = new Properties();
+        properties.forEach((key, value) -> result.put(key.toString().substring(prefix.length()), value));
+        return result;
+    }
+
+    /**
+     * Copy a entries in a new <code>java.util.Properties</code> instance.
+     *
+     * @param properties the properties
+     * @return properties
+     */
+    public static Properties copy(Properties properties) {
+        final Properties result = new Properties();
+        properties.forEach((key, value) -> result.setProperty((String) key, (String) value));
+        return result;
+    }
+}
diff --git a/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
new file mode 100644
index 0000000..769fd06
--- /dev/null
+++ b/freemarker-generator-base/src/main/java/org/apache/freemarker/generator/base/util/StringUtils.java
@@ -0,0 +1,24 @@
+/*
+ * 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.freemarker.generator.base.util;
+
+public class StringUtils {
+
+    public static boolean isEmpty(String value) {
+        return value == null || value.trim().isEmpty();
+    }
+}
diff --git a/freemarker-generator-base/src/test/data/csv/file_01.csv b/freemarker-generator-base/src/test/data/csv/file_01.csv
new file mode 100644
index 0000000..3f4e701
--- /dev/null
+++ b/freemarker-generator-base/src/test/data/csv/file_01.csv
@@ -0,0 +1,3 @@
+Text;Date;Number;Currency;Time;Percentage;Forumula
+Row 1;01.01.17;100,00;€100,00;10:00;50,00%;50
+Row 2;01.01.17;100,00;€100,00;10:00;50,00%;50
\ No newline at end of file
diff --git a/freemarker-generator-base/src/test/data/csv/file_02.csv b/freemarker-generator-base/src/test/data/csv/file_02.csv
new file mode 100644
index 0000000..5b9518d
--- /dev/null
+++ b/freemarker-generator-base/src/test/data/csv/file_02.csv
@@ -0,0 +1 @@
+Text;Date;Number;Currency;Time;Percentage;Forumula
\ No newline at end of file
diff --git a/freemarker-generator-base/src/test/data/properties/test.properties b/freemarker-generator-base/src/test/data/properties/test.properties
new file mode 100644
index 0000000..6431653
--- /dev/null
+++ b/freemarker-generator-base/src/test/data/properties/test.properties
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+foo=bar
\ No newline at end of file
diff --git a/freemarker-generator-base/src/test/data/txt/file_01.txt b/freemarker-generator-base/src/test/data/txt/file_01.txt
new file mode 100644
index 0000000..ed81d07
--- /dev/null
+++ b/freemarker-generator-base/src/test/data/txt/file_01.txt
@@ -0,0 +1,2 @@
+Hello
+World
\ No newline at end of file
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.java
new file mode 100644
index 0000000..172e0c6
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentFactoryTest.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.freemarker.generator.document;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+public class DocumentFactoryTest {
+
+    private static final String ANY_TEXT = "Hello World";
+    private static final String ANY_FILE_NAME = "pom.xml";
+    private static final Charset ANY_CHAR_SET = UTF_8;
+    private static final File ANY_FILE = new File(ANY_FILE_NAME);
+
+    @Test
+    public void shouldCreateFileBasedDocument() throws IOException {
+        final Document document = DocumentFactory.create(ANY_FILE, ANY_CHAR_SET);
+
+        assertEquals(ANY_FILE_NAME, document.getName());
+        assertEquals(UTF_8, document.getCharset());
+        assertEquals(ANY_FILE.getAbsolutePath(), document.getLocation());
+        assertTrue(!document.getLines().isEmpty());
+    }
+
+    @Test
+    public void shouldCreateStringBasedDocument() throws IOException {
+        final Document document = DocumentFactory.create("test.txt", ANY_TEXT);
+
+        assertEquals("test.txt", document.getName());
+        assertEquals(UTF_8, document.getCharset());
+        assertEquals("string", document.getLocation());
+        assertEquals(ANY_TEXT, document.getText());
+        assertEquals(1, document.getLines().size());
+    }
+
+    @Test
+    public void shouldCreateByteArrayBasedDocument() throws IOException {
+        final Document document = DocumentFactory.create("test.txt", ANY_TEXT.getBytes(UTF_8));
+
+        assertEquals("test.txt", document.getName());
+        assertEquals(UTF_8, document.getCharset());
+        assertEquals("bytes", document.getLocation());
+        assertEquals(ANY_TEXT, document.getText());
+        assertEquals(1, document.getLines().size());
+    }
+
+    @Test
+    public void shouldCreateInputStreamBasedDocument() throws IOException {
+        final InputStream is = new ByteArrayInputStream(ANY_TEXT.getBytes(UTF_8));
+        final Document document = DocumentFactory.create("test.txt", is, UTF_8);
+
+        assertEquals("test.txt", document.getName());
+        assertEquals(UTF_8, document.getCharset());
+        assertEquals("inputstream", document.getLocation());
+        assertEquals(ANY_TEXT, document.getText());
+    }
+
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java
new file mode 100644
index 0000000..22d5952
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentTest.java
@@ -0,0 +1,146 @@
+/*
+ * 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.freemarker.generator.document;
+
+import org.apache.commons.io.LineIterator;
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.Iterator;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class DocumentTest {
+
+    private static final String ANY_TEXT = "Hello World";
+    private static final String ANY_FILE_NAME = "pom.xml";
+    private static final Charset ANY_CHAR_SET = UTF_8;
+    private static final File ANY_FILE = new File(ANY_FILE_NAME);
+
+    @Test
+    public void shouldSupportTextDocument() throws IOException {
+        try (Document document = DocumentFactory.create("stdin", ANY_TEXT)) {
+            assertEquals("stdin", document.getName());
+            assertEquals("stdin", document.getBaseName());
+            assertEquals("", document.getExtension());
+            assertEquals("string", document.getLocation());
+            assertEquals(UTF_8, document.getCharset());
+            assertTrue(document.getLength() > 0);
+            assertEquals(ANY_TEXT, document.getText());
+        }
+    }
+
+    @Test
+    public void shouldSupportFileDocument() throws IOException {
+        try (Document document = DocumentFactory.create(ANY_FILE, ANY_CHAR_SET)) {
+            assertEquals(ANY_FILE_NAME, document.getName());
+            assertEquals("pom", document.getBaseName());
+            assertEquals("xml", document.getExtension());
+            assertEquals(ANY_FILE.getAbsolutePath(), document.getLocation());
+            assertEquals(Charset.defaultCharset(), document.getCharset());
+            assertTrue(document.getLength() > 0);
+            assertFalse(document.getText().isEmpty());
+        }
+    }
+
+    @Ignore
+    @Test
+    public void shouldSupportUrlDocument() throws IOException {
+        try (Document document = DocumentFactory.create(new URL("https://google.com?foo=bar"))) {
+            assertEquals("google.com", document.getName());
+            assertEquals("google", document.getBaseName());
+            assertEquals("com", document.getExtension());
+            assertEquals("https://google.com", document.getLocation());
+            assertEquals(UTF_8, document.getCharset());
+            assertEquals(-1, document.getLength());
+            assertFalse(document.getText().isEmpty());
+        }
+    }
+
+    @Test
+    public void shouldSupportLineIterator() throws IOException {
+        try (Document document = textDocument()) {
+            try (LineIterator iterator = document.getLineIterator(ANY_CHAR_SET.name())) {
+                assertEquals(1, count(iterator));
+            }
+        }
+    }
+
+    @Test
+    public void shouldReadLines() throws IOException {
+        try (Document document = textDocument()) {
+            assertEquals(1, document.getLines().size());
+            assertEquals(ANY_TEXT, document.getLines().get(0));
+        }
+    }
+
+    @Test
+    public void shouldGetBytes() throws IOException {
+        try (Document document = textDocument()) {
+            assertEquals(11, document.getBytes().length);
+        }
+    }
+
+    @Test
+    public void shouldCloseDocument() {
+        final Document document = textDocument();
+        final TestClosable closable1 = document.addClosable(new TestClosable());
+        final TestClosable closable2 = document.addClosable(new TestClosable());
+
+        document.close();
+
+        assertTrue(closable1.isClosed());
+        assertTrue(closable2.isClosed());
+    }
+
+    private static int count(Iterator<String> iterator) {
+        int count = 0;
+        while (iterator.hasNext()) {
+            count++;
+            iterator.next();
+        }
+        return count;
+    }
+
+    private static Document textDocument() {
+        return DocumentFactory.create("stdin", ANY_TEXT);
+    }
+
+    private static final class TestClosable implements Closeable {
+
+        private boolean closed = false;
+
+        @Override
+        public void close() throws IOException {
+            closed = true;
+        }
+
+        public boolean isClosed() {
+            return closed;
+        }
+    }
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsSupplierTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsSupplierTest.java
new file mode 100644
index 0000000..2a87db1
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsSupplierTest.java
@@ -0,0 +1,110 @@
+/*
+ * 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.freemarker.generator.document;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentsSupplier;
+import org.junit.Test;
+
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.List;
+
+import static java.util.Collections.singletonList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+public class DocumentsSupplierTest {
+
+    private static final String NO_EXCLUDE = null;
+    private static final String ANY_FILE = "./pom.xml";
+    private static final String ANY_DIRECTORY = "./src/test/data";
+
+    @Test
+    public void shouldResolveSingleFile() {
+        assertEquals(1, supplier(ANY_FILE, "*", NO_EXCLUDE).get().size());
+    }
+
+    @Test
+    public void shouldResolveMultipleFiles() {
+        final List<String> sources = Arrays.asList("pom.xml", "README.md");
+        assertEquals(2, supplier(sources, null, null).get().size());
+        assertEquals(2, supplier(sources, "", null).get().size());
+        assertEquals(2, supplier(sources, "*", null).get().size());
+        assertEquals(2, supplier(sources, "*.*", null).get().size());
+        assertEquals(1, supplier(sources, "*.xml", null).get().size());
+        assertEquals(1, supplier(sources, "*.x**", null).get().size());
+        assertEquals(1, supplier(sources, "*.md", null).get().size());
+        assertEquals(0, supplier(sources, "*.bin", null).get().size());
+    }
+
+    @Test
+    public void shouldResolveDirectory() {
+        assertEquals(4, supplier(ANY_DIRECTORY, null, null).get().size());
+        assertEquals(4, supplier(ANY_DIRECTORY, "", null).get().size());
+        assertEquals(4, supplier(ANY_DIRECTORY, "*", null).get().size());
+        assertEquals(4, supplier(ANY_DIRECTORY, "*.*", null).get().size());
+        assertEquals(2, supplier(ANY_DIRECTORY, "*.csv", null).get().size());
+        assertEquals(1, supplier(ANY_DIRECTORY, "*.t*", null).get().size());
+        assertEquals(0, supplier(ANY_DIRECTORY, "*.bin", null).get().size());
+    }
+
+    @Test
+    public void shouldResolveFilesAndDirectory() {
+        final List<String> sources = Arrays.asList("pom.xml", "README.md", ANY_DIRECTORY);
+
+        assertEquals(6, supplier(sources, null, null).get().size());
+        assertEquals(6, supplier(sources, "", null).get().size());
+        assertEquals(6, supplier(sources, "*", null).get().size());
+        assertEquals(6, supplier(sources, "*.*", null).get().size());
+        assertEquals(2, supplier(sources, "*.csv", null).get().size());
+        assertEquals(1, supplier(sources, "*.t*", null).get().size());
+        assertEquals(1, supplier(sources, "*.xml", null).get().size());
+        assertEquals(0, supplier(sources, "*.bin", null).get().size());
+
+        assertEquals(0, supplier(sources, null, "*").get().size());
+        assertEquals(0, supplier(sources, null, "*.*").get().size());
+        assertEquals(0, supplier(sources, "*", "*").get().size());
+        assertEquals(5, supplier(sources, "*", "*.md").get().size());
+        assertEquals(3, supplier(sources, "*", "file*.*").get().size());
+    }
+
+    @Test
+    public void shouldResolveLargeDirectory() {
+        final List<Document> documents = supplier(".", null, null).get();
+        assertFalse(documents.isEmpty());
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void shouldThrowExceptionForNonexistingSourceDirectory() {
+        assertEquals(0, supplier("/does-not-exist", "*", null).get().size());
+    }
+
+    @Test
+    public void shouldAllowDuplicateFiles() {
+        final List<String> sources = Arrays.asList("pom.xml", "pom.xml");
+        assertEquals(2, supplier(sources, "*.xml", null).get().size());
+    }
+
+    private static DocumentsSupplier supplier(String directory, String include, String exclude) {
+        return new DocumentsSupplier(singletonList(directory), include, exclude, Charset.defaultCharset());
+    }
+
+    private static DocumentsSupplier supplier(List<String> files, String include, String exclude) {
+        return new DocumentsSupplier(files, include, exclude, Charset.defaultCharset());
+    }
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java
new file mode 100644
index 0000000..5c7f90a
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/DocumentsTest.java
@@ -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.
+ */
+package org.apache.freemarker.generator.document;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.apache.freemarker.generator.base.document.Documents;
+import org.junit.Test;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Arrays.asList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+public class DocumentsTest {
+
+    private static final String UNKNOWN = "unknown";
+    private static final String ANY_TEXT = "Hello World";
+    private static final String ANY_FILE_NAME = "pom.xml";
+    private static final String ANY_FILE_EXTENSION = "xml";
+    private static final File ANY_FILE = new File(ANY_FILE_NAME);
+    private static final String ANY_URL = "https://server.invalid?foo=bar";
+
+    @Test
+    public void shouldFindByWildcard() {
+        final Documents documents = documents();
+
+        assertEquals(0, documents.find(null).size());
+        assertEquals(0, documents.find("").size());
+        assertEquals(0, documents.find("*.bar").size());
+        assertEquals(0, documents.find("foo.*").size());
+        assertEquals(0, documents.find("foo.bar").size());
+
+        assertEquals(2, documents.find("*.*").size());
+        assertEquals(1, documents.find("*." + ANY_FILE_EXTENSION).size());
+        assertEquals(1, documents.find("*.???").size());
+        assertEquals(1, documents.find("*om*").size());
+        assertEquals(1, documents.find("*o*.xml").size());
+
+        assertEquals(1, documents.find(ANY_FILE_NAME).size());
+        assertEquals(1, documents.find(ANY_FILE_NAME.charAt(0) + "*").size());
+
+        assertEquals(3, documents.find("*").size());
+    }
+
+    @Test
+    public void shouldGetDocument() {
+        assertNotNull(documents().get(ANY_FILE_NAME));
+    }
+
+    @Test
+    public void shouldGetAllDocuments() {
+        final Documents documents = documents();
+
+        assertEquals("unknown", documents().get(0).getName());
+        assertEquals("pom.xml", documents().get(1).getName());
+        assertEquals("server.invalid", documents().get(2).getName());
+        assertEquals("unknown", documents().getFirst().getName());
+        assertEquals(3, documents.getList().size());
+        assertEquals(3, documents.size());
+        assertFalse(documents.isEmpty());
+    }
+
+    @Test
+    public void shouldGetNames() {
+        assertEquals(asList("unknown", "pom.xml", "server.invalid"), documents().getNames());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void shouldThrowExceptionWhenGetDoesNotFindDocument() {
+        documents().get("file-does-not-exist");
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void shouldThrowExceptionWhenGetFindsMultipleDocuments() {
+        documents().get("*");
+    }
+
+    private static Documents documents() {
+        return new Documents(asList(textDocument(), fileDocument(), urlDocument()));
+    }
+
+    private static Document textDocument() {
+        return DocumentFactory.create(UNKNOWN, ANY_TEXT);
+    }
+
+    private static Document fileDocument() {
+        return DocumentFactory.create(ANY_FILE, UTF_8);
+    }
+
+    private static Document urlDocument() {
+        try {
+            return DocumentFactory.create(new URL(ANY_URL));
+        } catch (MalformedURLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/UriTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/UriTest.java
new file mode 100644
index 0000000..d6b66b1
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/document/UriTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.freemarker.generator.document;
+
+import org.junit.Test;
+
+import java.net.URI;
+
+import static junit.framework.TestCase.assertNull;
+import static org.junit.Assert.assertEquals;
+
+public class UriTest {
+
+    @Test
+    public void shouldParseHttpUri() throws Exception {
+        final URI uri = new URI("http://user:password@example.com:8042/over/there?name=ferret#nose");
+
+        assertEquals("http", uri.getScheme());
+        assertEquals("user:password@example.com:8042", uri.getAuthority());
+        assertEquals("example.com", uri.getHost());
+        assertEquals(8042, uri.getPort());
+        assertEquals("nose", uri.getFragment());
+        assertEquals("user:password", uri.getUserInfo());
+        assertEquals("/over/there", uri.getPath());
+        assertEquals("name=ferret", uri.getQuery());
+        assertEquals("http://user:password@example.com:8042/over/there?name=ferret#nose", uri.toASCIIString());
+        assertEquals("http://user:password@example.com:8042/over/there?name=ferret#nose", uri.toString());
+    }
+
+    @Test
+    public void shouldParseEnvUri() throws Exception {
+        final URI uri = new URI("env:///HOME");
+
+        assertEquals("env", uri.getScheme());
+        assertEquals("/HOME", uri.getPath());
+        assertEquals("env:///HOME", uri.toASCIIString());
+    }
+
+    @Test
+    public void shouldParseFileUri() throws Exception {
+        final URI uri = new URI("file:///tmp/my/file.json");
+
+        assertEquals("file", uri.getScheme());
+        assertEquals("/tmp/my/file.json", uri.getPath());
+        assertEquals("file:///tmp/my/file.json", uri.toASCIIString());
+    }
+
+    @Test
+    public void shouldParseFileNameOnlyUri() throws Exception {
+        final URI uri = new URI("file.json");
+
+        assertEquals("file.json", uri.getPath());
+        assertEquals("file.json", uri.toASCIIString());
+    }
+
+    @Test
+    public void shouldParseFileUriWithContentTypeAndEncoding() throws Exception {
+        final URI uri = new URI("file:///tmp/my/file.json#type=application/json&charset=UTF-16");
+
+        assertEquals("file", uri.getScheme());
+        assertEquals("/tmp/my/file.json", uri.getPath());
+        assertEquals("file:///tmp/my/file.json#type=application/json&charset=UTF-16", uri.toASCIIString());
+        assertEquals("type=application/json&charset=UTF-16", uri.getFragment());
+    }
+
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/PropertiesFileSupplierTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/PropertiesFileSupplierTest.java
new file mode 100644
index 0000000..68926e3
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/PropertiesFileSupplierTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.freemarker.generator.file;
+
+import org.apache.freemarker.generator.base.file.PropertiesClassPathSupplier;
+import org.apache.freemarker.generator.base.file.PropertiesFileSystemSupplier;
+import org.apache.freemarker.generator.base.file.PropertiesSupplier;
+import org.apache.freemarker.generator.base.util.CachingSupplier;
+import org.junit.Test;
+
+import java.util.Properties;
+import java.util.function.Supplier;
+
+import static junit.framework.TestCase.assertNull;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class PropertiesFileSupplierTest {
+
+    private static final String ANY_PROPERTIES_FILE = "./src/test/data/properties/test.properties";
+
+    @Test
+    public void shouldResolveFileBasedPropertyFile() {
+        final Properties properties = supplier(ANY_PROPERTIES_FILE).get();
+
+        assertNotNull(properties);
+        assertEquals("bar", properties.getProperty("foo"));
+    }
+
+    @Test
+    public void shouldReturnNullForNonExistingPropertiesFile() {
+        assertNull(supplier("unknown.properties").get());
+    }
+
+    private static Supplier<Properties> supplier(String fileName) {
+        return new CachingSupplier<>(new PropertiesSupplier(
+                new PropertiesFileSystemSupplier(fileName),
+                new PropertiesClassPathSupplier(fileName))
+        );
+    }
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileResolverTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileResolverTest.java
new file mode 100644
index 0000000..7c20b49
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/file/RecursiveFileResolverTest.java
@@ -0,0 +1,108 @@
+/*
+ * 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.freemarker.generator.file;
+
+import org.apache.freemarker.generator.base.file.RecursiveFileSupplier;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import static java.util.Collections.singletonList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class RecursiveFileResolverTest {
+
+    private static final String ANY_DIRECTORY = "./src/test/data";
+    private static final String ANY_FILE_NAME = "file_01.csv";
+    private static final String UNKNOWN_FILE_NAME = "unknown.file";
+
+    @Test
+    public void shouldResolveAllFilesOfDirectory() {
+        assertEquals(4, fileResolver(ANY_DIRECTORY, null, null).get().size());
+        assertTrue(fileResolver(ANY_DIRECTORY, UNKNOWN_FILE_NAME, null).get().isEmpty());
+    }
+
+    @Test
+    public void shouldResolveSingleMatchingFile() {
+        final List<File> files = fileResolver(ANY_DIRECTORY, ANY_FILE_NAME, null).get();
+
+        assertEquals(1, files.size());
+        assertEquals(ANY_FILE_NAME, files.get(0).getName());
+    }
+
+    @Test
+    public void shouldResolveMultipleFiles() {
+        final List<String> sources = Arrays.asList("pom.xml", "README.md");
+        final List<File> files = fileResolver(sources, "*", null).get();
+
+        assertEquals(2, files.size());
+        assertEquals("pom.xml", files.get(0).getName());
+        assertEquals("README.md", files.get(1).getName());
+    }
+
+    @Test
+    public void shouldResolveMultipleFilesWithIncludeFilter() {
+        final List<String> sources = Arrays.asList("pom.xml", "README.md");
+        final List<File> files = fileResolver(sources, "*.xml", null).get();
+
+        assertEquals(1, files.size());
+        assertEquals("pom.xml", files.get(0).getName());
+    }
+
+    @Test
+    public void shouldExcludeAllFiles() {
+        final List<File> files = fileResolver(ANY_DIRECTORY, null, "*").get();
+
+        assertEquals(0, files.size());
+    }
+
+    @Test
+    public void shouldExcludeFiles() {
+        final List<File> files = fileResolver(ANY_DIRECTORY, null, "*.csv").get();
+
+        assertEquals(2, files.size());
+        assertEquals("file_01.txt", files.get(0).getName());
+        assertEquals("test.properties", files.get(1).getName());
+    }
+
+    @Test
+    public void shouldIncludeAndExcludeFiles() {
+        final List<File> files = fileResolver(ANY_DIRECTORY, "file*.*", "*.csv").get();
+
+        assertEquals(1, files.size());
+        assertEquals("file_01.txt", files.get(0).getName());
+    }
+
+    @Test
+    public void shouldResolveMultipleFilesRecursivelyWithIncludes() {
+        final List<File> files = fileResolver(ANY_DIRECTORY, "*.csv", null).get();
+
+        assertEquals(2, files.size());
+    }
+
+    private static RecursiveFileSupplier fileResolver(String source, String include, String exclude) {
+        return fileResolver(singletonList(source), include, exclude);
+    }
+
+    private static RecursiveFileSupplier fileResolver(List<String> sources, String include, String exclude) {
+        return new RecursiveFileSupplier(sources, singletonList(include), singletonList(exclude));
+    }
+
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/tools/ToolsFactoryTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/tools/ToolsFactoryTest.java
new file mode 100644
index 0000000..d636e17
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/tools/ToolsFactoryTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.freemarker.generator.tools;
+
+import org.apache.freemarker.generator.base.tools.ToolsFactory;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+public class ToolsFactoryTest {
+
+    private final Map<String, Object> settings = new HashMap<>();
+
+    @Test
+    public void shouldCreateToolWithDefaultConstructor() {
+        final Object tool = ToolsFactory.create(ToolWithDefaultConstructor.class.getName(), settings);
+
+        assertNotNull(tool);
+        assertEquals("ToolWithDefaultConstructor", tool.toString());
+    }
+
+    @Test
+    public void shouldCreateToolWithMapConstructor() {
+        final Object tool = ToolsFactory.create(ToolWithMapConstructor.class.getName(), settings);
+
+        assertNotNull(tool);
+        assertEquals("ToolWithMapConstructor", tool.toString());
+        assertNotNull(((ToolWithMapConstructor) tool).getSettings());
+    }
+
+    @Test
+    public void shouldFavourMapOverDefaultConstructorOver() {
+        final Object tool = ToolsFactory.create(ToolWithDefaultAndMapConstructor.class.getName(), settings);
+
+        assertNotNull(tool);
+        assertEquals("ToolWithDefaultAndMapConstructor", tool.toString());
+        assertNotNull(((ToolWithDefaultAndMapConstructor) tool).getSettings());
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void shouldThrowRuntimeExceptionForUnknownClass() {
+        ToolsFactory.create("does-not-exist", settings);
+    }
+
+
+    public static final class ToolWithDefaultConstructor {
+
+        public ToolWithDefaultConstructor() {
+        }
+
+        @Override
+        public String toString() {
+            return "ToolWithDefaultConstructor";
+        }
+    }
+
+    public static final class ToolWithMapConstructor {
+
+        private final Map<String, Object> settings;
+
+        public ToolWithMapConstructor(Map<String, Object> settings) {
+            this.settings = settings;
+        }
+
+        Map<String, Object> getSettings() {
+            return settings;
+        }
+
+        @Override
+        public String toString() {
+            return "ToolWithMapConstructor";
+        }
+    }
+
+    public static final class ToolWithDefaultAndMapConstructor {
+
+        private final Map<String, Object> settings;
+
+        public ToolWithDefaultAndMapConstructor() {
+            this(null);
+        }
+
+        public ToolWithDefaultAndMapConstructor(Map<String, Object> settings) {
+            this.settings = settings;
+        }
+
+        Map<String, Object> getSettings() {
+            return settings;
+        }
+
+        @Override
+        public String toString() {
+            return "ToolWithDefaultAndMapConstructor";
+        }
+    }
+
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/LocalUtilsTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/LocalUtilsTest.java
new file mode 100644
index 0000000..56a6b59
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/LocalUtilsTest.java
@@ -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.
+ */
+package org.apache.freemarker.generator.util;
+
+import org.apache.freemarker.generator.base.util.LocaleUtils;
+import org.junit.Test;
+
+import java.util.Locale;
+
+import static java.util.Locale.getDefault;
+import static org.junit.Assert.assertEquals;
+
+public class LocalUtilsTest {
+
+    @Test
+    public void shouldReturnExpectedLocale() {
+        assertEquals(Locale.JAPAN, LocaleUtils.parseLocale("ja_JP"));
+        assertEquals(Locale.ENGLISH, LocaleUtils.parseLocale("en"));
+    }
+
+    @Test
+    public void shouldReturnDefaultLocale() {
+        assertEquals(getDefault(), LocaleUtils.parseLocale(null));
+        assertEquals(getDefault(), LocaleUtils.parseLocale(""));
+        assertEquals(getDefault(), LocaleUtils.parseLocale("default"));
+        assertEquals(getDefault(), LocaleUtils.parseLocale("JVM default"));
+    }
+}
diff --git a/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java
new file mode 100644
index 0000000..de0c483
--- /dev/null
+++ b/freemarker-generator-base/src/test/java/org/apache/freemarker/generator/util/PropertiesTransformerTest.java
@@ -0,0 +1,59 @@
+/*
+ * 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.freemarker.generator.util;
+
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Configuration.TOOLS_PREFIX;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.filterKeyPrefix;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.removeKeyPrefix;
+import static org.junit.Assert.assertEquals;
+
+public class PropertiesTransformerTest {
+
+    private final Map<String, Object> settings = new HashMap<>();
+
+    @Test
+    public void shouldFilterKeyPrefix() {
+        final Properties properties = filterKeyPrefix(properties(), TOOLS_PREFIX);
+
+        assertEquals(2, properties.size());
+        assertEquals("o.a.f.g.t.commonscsv.CommonsCSVTool", properties.getProperty("freemarker.tools.CSVTool"));
+        assertEquals("o.a.f.g.t.commonscsv.ExecTool", properties.getProperty("freemarker.tools.ExecTool"));
+    }
+
+    @Test
+    public void shouldRemoveKeyPrefix() {
+        final Properties properties = removeKeyPrefix(filterKeyPrefix(properties(), TOOLS_PREFIX), TOOLS_PREFIX);
+
+        assertEquals(2, properties.size());
+        assertEquals("o.a.f.g.t.commonscsv.CommonsCSVTool", properties.getProperty("CSVTool"));
+        assertEquals("o.a.f.g.t.commonscsv.ExecTool", properties.getProperty("ExecTool"));
+    }
+
+    private Properties properties() {
+        final Properties properties = new Properties();
+        properties.put("foo", "bar");
+        properties.put("freemarker.tools.CSVTool", "o.a.f.g.t.commonscsv.CommonsCSVTool");
+        properties.put("freemarker.tools.ExecTool", "o.a.f.g.t.commonscsv.ExecTool");
+        return properties;
+    }
+}
diff --git a/freemarker-generator-cli/LICENSE b/freemarker-generator-cli/LICENSE
new file mode 100644
index 0000000..1121eba
--- /dev/null
+++ b/freemarker-generator-cli/LICENSE
@@ -0,0 +1,223 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/freemarker-generator-cli/NOTICE b/freemarker-generator-cli/NOTICE
new file mode 100644
index 0000000..c27f50e
--- /dev/null
+++ b/freemarker-generator-cli/NOTICE
@@ -0,0 +1,5 @@
+Apache FreeMarker Site
+Copyright 2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/freemarker-generator-cli/README.md b/freemarker-generator-cli/README.md
new file mode 100644
index 0000000..06b7680
--- /dev/null
+++ b/freemarker-generator-cli/README.md
@@ -0,0 +1,1297 @@
+# Apache FreeMarker Generator CLI
+
+# 1. Is This Project For You?
+
+You somehow found this GitHub project and wonder if it solves a problem you might have?!
+
+* You need to transform some structured text document (CSV, HTML, JSON, XML, YAML, Java Property files, access logs) into CSV, HTML, Markdown or Confluence markup?
+* You need to convert an Excel document into CSV, HTML or Markdown?
+* You need to create a nice-looking PDF from some boring-looking CSV or JSON content ?
+
+The goal of `freemarker-cli` is to automate repeated transformation tasks 
+
+* Which are too boring to be done manually 
+* Which happen not often enough to write a dedicated script or program
+
+# 2. Once Upon A Time
+
+In December 2015 I needed a little bit of test data management for a customer project - to make a long story short (after writing a few more Groovy scripts) it boiled down to transforming one or more JSON files to something human readable.
+
+What are the options?
+
+* The cool kids say 'Node.js' - but they always say 'Node.js' 
+* Some fancy Groovy scripts using Groovy's markup builder - but the syntax looks a bit odd
+* Using 'JsonPath' and 'Velocity' to reuse good & old stuff
+
+So I went with 'Apache Groovy', 'JsonPath' and 'Apache Velocity'
+
+* Playing with Groovy over the public holidays
+* Groovy has a built-in package manager which makes distribution a breeze
+* Providing samples to transform JSON to Markdown
+
+Using Velocity actually created some minor issues so I migrated to [Apache FreeMarker](https://freemarker.apache.org) during Christmas 2016
+
+* Velocity 1.7 was released 2010 and only recently there was a new release
+* I was painful to get Velocity Tools working
+* Velocity XML processing support is also painful
+* Spring 4.3 deprecated Velocity support which could affect me in the long run
+* FreeMarker has no additional dependencies and things are just working :-)
+
+While I love Apache Velocity (Apache Turbine anyone?) I decided to give FreeMarker a chance and migrated my [velocity-cli](https://github.com/sgoeschl/velocity-cli) to FreeMarker.
+
+Some years later the not-so-small-any-longer-and-not-having-tests Groovy script was still growing so I decided 
+
+* To ditch Groovy and migrate to plain JDK 8
+* Write unit tests since I had no more excuses
+* To ditch Commons CLI and migrate to [Picocli](https://picocli.info)
+
+# 3. Design Goals
+
+* Create a proper command-line tool which has Unix look & feel
+* Handle arbitrary large input and output data
+* Support multiple source files/directories for a single transformation
+* Support transformation of Property files using plain-vanilla JDK
+* Support transformation of CSV files using [Apache Commons CSV](https://commons.apache.org/proper/commons-csv/)
+* Support transformation of JSON using [Jayway's JSONPath](https://github.com/jayway/JsonPath)
+* Support transformation of Excel using [Apache POI](https://poi.apache.org)
+* Support transformation of YAML using [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/wiki/Home)
+* Support transformation of HTML using [JSoup](https://jsoup.org)
+* Support transformation of structured logfiles using [Grok](https://github.com/thekrakken/java-grok)
+* XML & XPath is supported by FreeMarker [out-of-the-box](http://freemarker.org/docs/xgui.html)
+* Support for reading document content from STDIN to integrate with command line tools
+* Support execution of arbitrary commands using [Apache Commons Exec](https://commons.apache.org/proper/commons-exec/)
+* Add some commonly useful information such as `System Properties`, `Enviroment Variables`
+* Support embedding the code in existing applications
+
+# 4. Installation
+
+Download the latest release from [GitHub](https://github.com/sgoeschl/freemarker-cli/releases), e.g. [freemarker-cli-2.0.0-BETA-5-app.tar.gz](https://github.com/sgoeschl/freemarker-cli/releases/download/v2.0.0-BETA-4/freemarker-cli-2.0.0-BETA-5-app.tar.gz) and unpack it into of a directory of your choice, e.g `/Application/Java/freemarker-cli`
+
+It is recommended 
+
+* To add `bin/freemarker-cli` or `bin/freemarker-cli.bat` to your executable path
+* To create a `~/.freemarker-cli` directory to store your custom FTL templates
+
+You can test the installation by executing
+
+```text
+> ./bin/freemarker-cli -t templates/info.ftl 
+
+FreeMarker CLI Information
+---------------------------------------------------------------------------
+FreeMarker version     : 2.3.29
+Template name          : templates/info.ftl
+Language               : en
+Locale                 : en_US
+Timestamp              : Feb 22, 2020 4:42:01 PM
+Output encoding        : UTF-8
+Output format          : plainText
+
+FreeMarker CLI Template Directories
+---------------------------------------------------------------------------
+[1] /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler
+
+FreeMarker CLI Tools
+---------------------------------------------------------------------------
+- CSVTool              : Process CSV files using Apache Commons CSV (see https://commons.apache.org/proper/commons-csv/)
+- ExcelTool            : Process Excels files (XLS, XLSX) using Apache POI (see https://poi.apache.org)
+- ExecTool             : Execute command line tools using Apache Commons Exec (see https://commons.apache.org/proper/commons-exec/)
+- FreeMarkerTool       : Expose useful Apache FreeMarker classes
+- GrokTool             : Process text files using Grok expressions (see https://github.com/thekrakken/java-grok)
+- JsonPathTool         : Process JSON files using Java JSON Path (see https://github.com/json-path/JsonPath)
+- JsoupTool            : Process  HTML files using Jsoup (see https://jsoup.org)
+- PropertiesTool       : Process JDK properties files
+- SystemTool           : Expose System-related utility methods
+- UUIDTool             : Create UUIDs
+- XmlTool              : Process XML files using Apache FreeMarker (see https://freemarker.apache.org/docs/xgui.html)
+- YamlTool             : Process YAML files using SnakeYAML(see https://bitbucket.org/asomov/snakeyaml/wiki/Home)
+
+FreeMarker CLI Documents
+---------------------------------------------------------------------------
+
+User Supplied Parameters
+---------------------------------------------------------------------------
+
+User Supplied System Properties
+---------------------------------------------------------------------------
+
+SystemTool
+---------------------------------------------------------------------------
+Command line         : -t, templates/info.ftl
+Host Name            : W0GL5179.local
+Java Home            : /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
+User Name            : sgoeschl
+Timestamp            : 1,582,386,121,793
+Writer               : org.apache.freemarker.generator.base.util.NonClosableWriterWrapper
+```
+
+There a many examples (see below) available you can execute - run `./run-samples.sh` and have a look at the generated output
+
+```text
+./run-samples.sh 
+templates/info.ftl
+templates/demo.ftl
+templates/csv/html/transform.ftl
+templates/csv/md/transform.ftl
+templates/csv/shell/curl.ftl
+templates/csv/md/filter.ftl
+templates/csv/fo/transform.ftl
+fop -fo target/out/locker-test-users.fo target/out/locker-test-users.pdf
+templates/csv/fo/transactions.ftl
+fop -fo target/out/transactions.fo target/out/transactions-fo.pdf
+templates/csv/html/transform.ftl
+wkhtmltopdf -O landscape target/out/transactions.html target/out/transactions-html.pdf
+templates/accesslog/combined-access.ftl
+templates/excel/html/transform.ftl
+templates/excel/md/transform.ftl
+templates/excel/csv/transform.ftl
+templates/excel/csv/custom.ftl
+templates/html/csv/dependencies.ftl
+templates/json/csv/swagger-endpoints.ftl
+templates/json/md/github-users.ftl
+templates/properties/csv/locker-test-users.ftl
+templates/yaml/txt/transform.ftl
+templates/xml/txt/recipients.ftl
+Created the following sample files in ./target/out
+total 1344
+-rw-r--r--  1 sgoeschl  staff     646 Feb 22 16:43 combined-access.log.txt
+-rw-r--r--  1 sgoeschl  staff   22548 Feb 22 16:43 contract.html
+-rw-r--r--  1 sgoeschl  staff    7933 Feb 22 16:43 contract.md
+-rw-r--r--  1 sgoeschl  staff     784 Feb 22 16:43 curl.sh
+-rw-r--r--  1 sgoeschl  staff     232 Feb 22 16:43 customer.txt
+-rw-r--r--  1 sgoeschl  staff   15084 Feb 22 16:43 demo.txt
+-rw-r--r--  1 sgoeschl  staff    1310 Feb 22 16:43 dependencies.csv
+-rw-r--r--  1 sgoeschl  staff    2029 Feb 22 16:43 github-users-curl.md
+-rw-r--r--  1 sgoeschl  staff    2668 Feb 22 16:43 info.txt
+-rw-r--r--  1 sgoeschl  staff      66 Feb 22 16:43 interactive-html.txt
+-rw-r--r--  1 sgoeschl  staff      16 Feb 22 16:43 interactive-json.txt
+-rw-r--r--  1 sgoeschl  staff      10 Feb 22 16:43 interactive-xml.txt
+-rw-r--r--  1 sgoeschl  staff     285 Feb 22 16:43 locker-test-users.csv
+-rw-r--r--  1 sgoeschl  staff    6341 Feb 22 16:43 locker-test-users.fo
+-rw-r--r--  1 sgoeschl  staff    5526 Feb 22 16:43 locker-test-users.pdf
+-rw-r--r--  1 sgoeschl  staff     921 Feb 22 16:43 recipients.txt
+-rw-r--r--  1 sgoeschl  staff     910 Feb 22 16:43 sales-records.md
+-rw-r--r--  1 sgoeschl  staff     379 Feb 22 16:43 swagger-spec.csv
+-rw-r--r--  1 sgoeschl  staff     156 Feb 22 16:43 test-multiple-sheets.xlsx.csv
+-rw-r--r--  1 sgoeschl  staff    1917 Feb 22 16:43 test-multiple-sheets.xlsx.html
+-rw-r--r--  1 sgoeschl  staff     389 Feb 22 16:43 test-multiple-sheets.xlsx.md
+-rw-r--r--  1 sgoeschl  staff     150 Feb 22 16:43 test-transform-xls.csv
+-rw-r--r--  1 sgoeschl  staff    1556 Feb 22 16:43 test.xls.html
+-rw-r--r--  1 sgoeschl  staff    1558 Feb 22 16:43 test.xslx.html
+-rw-r--r--  1 sgoeschl  staff   25756 Feb 22 16:43 transactions-fo.pdf
+-rw-r--r--  1 sgoeschl  staff   66016 Feb 22 16:43 transactions-html.pdf
+-rw-r--r--  1 sgoeschl  staff  330128 Feb 22 16:43 transactions.fo
+-rw-r--r--  1 sgoeschl  staff   51008 Feb 22 16:43 transactions.html
+```
+
+Please note that generated PDF files are very likely not found since they require `wkhtmltopdf` and `Apache FOP` installation.
+
+# 5. Usage
+
+```text
+> ./bin/freemarker-cli  -h
+
+Usage: freemarker-cli (-t=<template> | -i=<interactiveTemplate>) [-EhV]
+                      [--stdin] [-b=<baseDir>] [--config=<configFile>]
+                      [-e=<inputEncoding>] [--exclude=<exclude>]
+                      [--include=<include>] [-l=<locale>] [-o=<outputFile>]
+                      [--output-encoding=<outputEncoding>] [--times=<times>]
+                      [-D=<String=String>]... [-P=<String=String>]...
+                      [<sources>...]
+Apache FreeMarker CLI
+      [<sources>...]        List of input files and/or input directories
+  -b, --basedir=<baseDir>   Optional template base directory
+      --config=<configFile> FreeMarker CLI configuration file
+  -D, --system-property=<String=String>
+                            Set system property
+  -e, --input-encoding=<inputEncoding>
+                            Encoding of input documents
+  -E, --expose-env          Expose environment variables and user-supplied
+                              properties globally
+      --exclude=<exclude>   File pattern for document input directory
+  -h, --help                Show this help message and exit.
+  -i, --interactive=<interactiveTemplate>
+                            Interactive FreeMarker template
+      --include=<include>   File pattern for document input directory
+  -l, --locale=<locale>     Locale being used for the output, e.g. 'en_US'
+  -o, --output=<outputFile> Output file
+      --output-encoding=<outputEncoding>
+                            Encoding of output, e.g. UTF-8
+  -P, --param=<String=String>
+                            Set parameter
+      --stdin               Read input document from stdin
+  -t, --template=<template> FreeMarker template to render
+      --times=<times>       Re-run X times for profiling
+  -V, --version             Print version information and exit.
+```
+
+# 6. Examples
+
+The examples were tested with JDK 1.8 on Mac OS X
+
+```text
+> java -version
+java version "1.8.0_192"
+Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
+Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
+```
+It is assumed that you run the examples from the `freemarker-cli` installation directory.
+
+## 6.1 Transforming GitHub JSON To Markdown
+
+A simple example with real JSON data to be transformed into Markdown
+
+### Invocation
+
+You can either use the existing JSON sample
+
+> ./bin/freemarker-cli -t templates/json/md/github-users.ftl site/sample/json/github-users.json
+
+or pipe a cURL response
+
+> curl -s https://api.github.com/users | ./bin/freemarker-cli -t templates/json/md/github-users.ftl --stdin
+
+### FreeMarker Template
+
+```text
+<#ftl output_format="plainText" >
+<#assign json = JsonPathTool.parse(Documents.get(0))>
+<#assign users = json.read("$[*]")>
+<#--------------------------------------------------------------------------->
+# GitHub Users
+
+Report generated at ${.now?iso_utc}
+
+<#compress>
+<#list users as user>
+<#assign userAvatarUrl = user.avatar_url>
+<#assign userHomeUrl = user.html_url>
+# ${user.login}
+
+| User                                                    | Homepage                                      |
+|:--------------------------------------------------------|:----------------------------------------------|
+| <img src="${user.avatar_url}" width="48" height="48"/> | [${userHomeUrl}](${userHomeUrl})               |
+</#list>
+</#compress>
+```
+
+creates the following output
+
+![](./site/image/github.png)
+
+## 6.2 CSV to HTML/Markdown Transformation
+
+Sometimes you have a CSV file which needs to be translated in Markdown or HTML - there are on-line solutions available such as [CSV To Markdown Table Generator](https://donatstudios.com/CsvToMarkdownTable) but having a local solution gives you more flexibility.
+
+```text
+> ./bin/freemarker-cli -t templates/csv/md/transform.ftl site/sample/csv/contract.csv
+> ./bin/freemarker-cli -t templates/csv/html/transform.ftl site/sample/csv/contract.csv
+```
+
+The FreeMarker template is shown below
+
+```text
+<#ftl output_format="plainText">
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withHeader()>
+<#assign csvParser = CSVTool.parse(Documents.get(0), cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+<#compress>
+<@writeHeaders headers=csvHeaders/>
+<@writeColums columns=csvRecords/>
+</#compress>
+<#--------------------------------------------------------------------------->
+<#macro writeHeaders headers>
+| ${csvHeaders?join(" | ", "")} |
+    <#list csvHeaders as csvHeader>| --------</#list>|
+</#macro>
+<#--------------------------------------------------------------------------->
+<#macro writeColums columns>
+    <#list columns as column>
+    | ${column.iterator()?join(" | ", "")} |
+    </#list>
+</#macro>
+```
+
+The resulting file actually looks pleasant when compared to raw CSV
+
+![Contract CSV to HTML](./site/image/contract.png "Contract CSV to HTML")
+
+## 6.3 Transform XML To Plain Text
+
+Of course you can also transform a XML document
+
+```text
+> ./bin/freemarker-cli -t templates/xml/txt/recipients.ftl site/sample/xml/recipients.xml
+```
+
+using the following template
+
+```text
+<#ftl output_format="plainText" >
+<#assign xml = XmlTool.parse(Documents.get(0))>
+<#list xml.recipients.person as recipient>
+To: ${recipient.name}
+${recipient.address}
+
+Dear ${recipient.name},
+
+Thank you for your interest in our products. We will be sending you a catalog shortly.
+To take advantage of our free gift offer, please fill in the survey attached to this
+letter and return it to the address on the reverse. Only one participant is allowed for
+each household.
+
+Sincere salutations,
+
+
+D. H.
+
+---------------------------------------------------------------------------------------
+</#list>
+
+```
+
+which generates the following output
+
+```text
+To: John Smith
+3033 Long Drive, Houston, TX
+
+Dear John Smith,
+
+Thank you for your interest in our products. We will be sending you a catalog shortly.
+To take advantage of our free gift offer, please fill in the survey attached to this
+letter and return it to the address on the reverse. Only one participant is allowed for
+each household.
+
+Sincere salutations,
+
+
+D. H.
+```
+
+## 6.4 Transform JSON To CSV
+
+One day I was asked a to prepare a CSV files containing REST endpoints described by Swagger - technically this is a JSON to CSV transformation. Of course I could create that CSV manually but writing a FTL template doing that was simply more fun and saves time in the future.
+
+```text
+<#ftl output_format="plainText" strip_text="true">
+<#assign json = JsonPathTool.parse(Documents.get(0))>
+<#assign basePath = json.read("$.basePath")>
+<#assign paths = json.read("$.paths")>
+
+<#compress>
+    ENDPOINT;METHOD;CONSUMES;PRODUCES;SUMMARY;DESCRIPTION
+    <#list paths as endpoint,metadata>
+        <#assign relative_url = basePath + endpoint>
+        <#assign methods = metadata?keys>
+        <#list methods as method>
+            <#assign summary = sanitize(paths[endpoint][method]["summary"]!"")>
+            <#assign description = sanitize(paths[endpoint][method]["description"]!"")>
+            <#assign consumes = join(paths[endpoint][method]["consumes"]![])>
+            <#assign produces = join(paths[endpoint][method]["produces"]![])>
+            ${relative_url};${method?upper_case};${consumes};${produces};${summary};${description}
+        </#list>
+    </#list>
+</#compress>
+${'\n'}
+
+<#function sanitize str>
+    <#return (((str?replace(";", ","))?replace("(\\n)+", "",'r')))?truncate(250)>
+</#function>
+
+<#function join list>
+    <#if list?has_content>
+        <#return list?join(", ")>
+    <#else>
+        <#return "">
+    </#if>
+</#function>
+```
+
+Invoking the FTL template
+
+> ./bin/freemarker-cli -t templates/json/csv/swagger-endpoints.ftl site/sample/json/swagger-spec.json 
+
+gives you
+
+```text
+ENDPOINT;METHOD;CONSUMES;PRODUCES;SUMMARY;DESCRIPTION
+/api/pets;GET;;;;Returns all pets from the system that the user has access to
+/api/pets;POST;;;;Creates a new pet in the store. Duplicates are allowed
+/api/pets/{id};GET;;;;Returns a user based on a single ID, if the user does not have access to the pet
+/api/pets/{id};DELETE;;;;Deletes a single pet based on the ID supplied
+```
+
+## 6.5 Transforming Excel Documents
+
+Another day my project management asked me to create a CSV configuration file based on an Excel documents - as usual manual copying was not an option due to required data cleanup and data transformation. So I thought about Apache POI which support XLS and XLSX documents - integration of Apache POI was a breeze but the resulting code was not particularly useful example. So a more generic transformation was provided to show the transformation of Excel documents ...
+
+```text
+> ./bin/freemarker-cli -t templates/excel/html/transform.ftl site/sample/excel/test.xls
+> ./bin/freemarker-cli -t templates/excel/html/transform.ftl site/sample/excel/test.xlsx
+> ./bin/freemarker-cli -t templates/excel/html/transform.ftl site/sample/excel/test-multiple-sheets.xlsx
+> ./bin/freemarker-cli -t templates/excel/md/transform.ftl site/sample/excel/test-multiple-sheets.xlsx
+```
+
+The provided FTL transforms an Excel into a HTML document supporting multiple Excel sheets
+
+```text
+<#ftl output_format="HTML" >
+<#assign document = Documents.get(0)>
+<#assign documentName = document.name>
+<#assign workbook = ExcelTool.parse(document)>
+<#assign date = .now?iso_utc>
+<#--------------------------------------------------------------------------->
+<!DOCTYPE html>
+<html>
+<head>
+    <title>${documentName}</title>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
+</head>
+<body>
+<div class="container-fluid">
+    <h1>Excel Test
+        <small>${documentName}, ${date}</small>
+    </h1>
+    <@writeSheets workbook/>
+</div>
+</body>
+</html>
+
+<#--------------------------------------------------------------------------->
+<#-- writeSheets                                                           -->
+<#--------------------------------------------------------------------------->
+<#macro writeSheets workbook>
+    <#assign sheets = ExcelTool.getSheets(workbook)>
+    <#list sheets as sheet>
+        <@writeSheet sheet/>
+    </#list>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeSheet                                                            -->
+<#--------------------------------------------------------------------------->
+<#macro writeSheet sheet>
+    <#assign rows = ExcelTool.toTable(sheet)>
+    <h2>${sheet.getSheetName()}</h2>
+    <@writeRows rows/>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeRows                                                             -->
+<#--------------------------------------------------------------------------->
+<#macro writeRows rows>
+    <table class="table table-striped">
+        <#list rows as row>
+            <#if row?is_first>
+                <tr>
+                    <th>#</th>
+                    <#list row as column>
+                        <th>${column}</th>
+                    </#list>
+                </tr>
+            <#else>
+                <tr>
+                    <td>${row?index}</td>
+                    <#list row as column>
+                        <td>${column}</td>
+                    </#list>
+                </tr>
+            </#if>
+        </#list>
+    </table>
+</#macro>
+```
+
+but the result looks reasonable
+
+![](./site/image/excel-to-html.png)
+
+## 6.6 Transform Property Files To CSV
+
+In this sample we transform all property files found in a directory (recursive search using include pattern) to a CSV file
+
+```text
+> ./bin/freemarker-cli --include *.properties -t templates/properties/csv/locker-test-users.ftl site/sample/properties
+TENANT,SITE,USER_ID,DISPOSER_ID,PASSWORD,SMS_OTP,NAME,DESCRIPTION
+TENANT_A,fat,user_0004,user_0004,password_0004,,,
+TENANT_B,fat,user_0001,user_0001,password_0001,,,
+TENANT_B,uat,user_0003,user_0003,password_0003,,,
+TENANT_C,fat,user_0002,user_0002,password_0004,000000,,Many products
+```
+
+The FTL uses a couple of interesting features
+
+* We process a list of property files
+* The `strip_text` and `compress` strips any white-spaces and line-breaks from the output so we can create a proper CSV file
+* We use FTL functions to extract the `tenant` and `site`, e.g. `extractTenant`
+* We add a manual line break using ```${'\n'}```
+
+```text
+<#ftl output_format="plainText" strip_text="true">
+<#compress>
+    TENANT,SITE,USER_ID,DISPOSER_ID,PASSWORD,SMS_OTP,NAME,DESCRIPTION
+    <#list Documents.list as document>
+        <#assign properties = PropertiesTool.parse(document)>
+        <#assign environments = properties["ENVIRONMENTS"]!"">
+        <#assign tenant = extractTenant(environments)>
+        <#assign site = extractSite(environments)>
+        <#assign userId = properties["USER_ID"]!"">
+        <#assign disposerId = properties["USER_ID"]!"">
+        <#assign password = properties["PASSWORD"]!"">
+        <#assign smsOtp = properties["SMS_OTP"]!"">
+        <#assign name = properties["NAME"]!"">
+        <#assign description = properties["DESCRIPTION"]!"">
+        ${tenant},${site},${userId},${disposerId},${password},${smsOtp},${name},${description}
+    </#list>
+</#compress>
+${'\n'}
+
+<#function extractSite environments>
+</#function>
+
+<#function extractTenant environments>
+</#function>
+
+```
+
+## 6.7 Transform CSV To XML-FO
+
+For a POC (proof of concept) I created a sample transformation from CSV to XML-FO in order to create a PDF document using [Apache FOP](https://xmlgraphics.apache.org/fop) using the following template file
+
+```text
+<#ftl output_format="XML" >
+<#assign document = Documents.get(0)>
+<#assign name = document.name>
+<#assign cvsFormat = CSVTool.formats.DEFAULT.withDelimiter('\t').withHeader()>
+<#assign csvParser = CSVTool.parse(document, cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+    <fo:layout-master-set>
+        <fo:simple-page-master master-name="first"
+                               page-height="21cm"
+                               page-width="29.7cm"
+                               margin-top="1cm"
+                               margin-bottom="1cm"
+                               margin-left="1cm"
+                               margin-right="1cm">
+            <fo:region-body margin-top="1cm"/>
+            <fo:region-before extent="1cm"/>
+            <fo:region-after extent="-1.2cm"/>
+        </fo:simple-page-master>
+    </fo:layout-master-set>
+    <fo:page-sequence master-reference="first">
+        <fo:static-content flow-name="xsl-region-before">
+            <fo:block line-height="10pt" font-size="8pt" text-align="left">Transaction Export - ${.now}</fo:block>
+        </fo:static-content>
+        <fo:static-content flow-name="xsl-region-after">
+            <fo:block line-height="6pt" font-size="6pt" text-align="end">Page <fo:page-number/></fo:block>
+        </fo:static-content>
+        <fo:flow flow-name="xsl-region-body">
+            <fo:table table-layout="fixed" width="100%" border-collapse="separate">
+                <fo:table-column column-width="8%"/>
+                <fo:table-column column-width="10%"/>
+                <fo:table-column column-width="12%"/>
+                <fo:table-column column-width="8%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="5%"/>
+                <fo:table-column column-width="5%"/>
+                <fo:table-column column-width="5%"/>
+                <fo:table-column column-width="35%"/>
+                <fo:table-column column-width="5%"/>
+                <@writeTableHeader headers=csvHeaders/>
+                <@writeTableBody columns=csvRecords/>
+            </fo:table>
+        </fo:flow>
+    </fo:page-sequence>
+</fo:root>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableHeader headers>
+    <fo:table-header>
+        <fo:table-row>
+            <#list headers as header>
+                <fo:table-cell border-style="solid" border-width="0.1pt" padding-left="1.0px" padding-right="1.0px">
+                    <fo:block font-size="6pt" font-weight="bold">${header}</fo:block>
+                </fo:table-cell>
+            </#list>
+        </fo:table-row>
+    </fo:table-header>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableBody columns>
+    <fo:table-body>
+        <#list columns as column>
+            <fo:table-row>
+                <#list column.iterator() as field>
+                    <fo:table-cell border-style="solid" border-width="0.1pt" padding-left="1.0px" padding-right="1.0px">
+                        <fo:block font-size="6pt">${field}</fo:block>
+                    </fo:table-cell>
+                </#list>
+            </fo:table-row>
+        </#list>
+    </fo:table-body>
+</#macro>
+
+```
+
+In order to create the PDF you need to execute the following commands (assuming that you have Apache FOP installed)
+
+```text
+> ./bin/freemarker-cli -t templates/csv/fo/transform.ftl site/sample/csv/locker-test-users.csv > sample.fo
+> fop -fo sample.fo sample.pdf
+Dec 29, 2018 10:24:30 PM org.apache.fop.events.LoggingEventListener processEvent
+WARNING: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400".
+Dec 29, 2018 10:24:30 PM org.apache.fop.events.LoggingEventListener processEvent
+WARNING: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400".
+Dec 29, 2018 10:24:30 PM org.apache.fop.events.LoggingEventListener processEvent
+INFO: Rendered page #1.
+```
+
+The result does not look very impressive but it is a PDF :-)
+
+![](./site/image/locker-test-users-pdf.png)
+
+Further along the line of the POC we converted a transaction export from CSV to PDF using Apache FOP
+
+```text
+> ./bin/freemarker-cli -t templates/csv/fo/transactions.ftl site/sample/csv/transactions.csv > transactions.fo
+> fop -fo transactions.fo transactions.pdf
+Jan 16, 2019 11:15:21 PM org.apache.fop.events.LoggingEventListener processEvent
+WARNING: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400".
+Jan 16, 2019 11:15:21 PM org.apache.fop.events.LoggingEventListener processEvent
+WARNING: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400".
+Jan 16, 2019 11:15:21 PM org.apache.fop.events.LoggingEventListener processEvent
+WARNING: The contents of fo:block line 1 exceed the available area in the inline-progression direction by 11027 millipoints. (See position 1519:51)
+Jan 16, 2019 11:15:22 PM org.apache.fop.events.LoggingEventListener processEvent
+INFO: Rendered page #1.
+Jan 16, 2019 11:15:22 PM org.apache.fop.events.LoggingEventListener processEvent
+INFO: Rendered page #2.
+```
+
+![](./site/image/transactions.png)
+
+## 6.8 Transforming HTML To CSV
+
+Recently I got the rather unusual question how to determine the list of dependencies of an application - one easy way is the Maven "dependencies.html" but this is unstructured data. Having said that the Jsoup library is perfectly able to parse most real-life HTML and provides a DOM model
+
+```text
+<#ftl output_format="plainText" strip_text="true">
+<#assign document = Documents.get(0)>
+<#assign documentName = document.name>
+<#assign html = JsoupTool.parse(document)>
+
+<#compress>
+    <@writeHeader/>
+    <@writeDependencies "Project_Dependencies_compile"/>
+    <@writeDependencies "Project_Transitive_Dependencies_compile"/>
+    <@writeDependencies "Project_Transitive_Dependencies_runtime"/>
+    <@writeDependencies "Project_Transitive_Dependencies_provided"/>
+</#compress>
+
+<#macro writeHeader>
+    GroupId,ArtifactId,Version,Type,Licenses
+</#macro>
+
+<#macro writeDependencies section>
+    <#assign selection = html.select("a[name=${section}]")>
+    <#if selection?has_content>
+        <#assign table = selection[0].nextElementSibling().child(2).child(0)>
+        <#assign rows = table.children()>
+        <#list rows as row>
+            <#if !row?is_first>
+                <#assign groupId = row.child(0).text()>
+                <#assign artificatId = row.child(1).text()>
+                <#assign version = row.child(2).text()>
+                <#assign type = row.child(3).text()>
+                <#assign licences = row.child(4).text()?replace(",", "")>
+                ${groupId},${artificatId},${version},${type},${licences}
+            </#if>
+        </#list>
+    </#if>
+</#macro>
+
+
+```
+
+Your dependencies as CSV can be generated as shown below
+
+```text
+> ./bin/freemarker-cli -t templates/html/csv/dependencies.ftl site/sample/html/dependencies.html 
+GroupId,ArtifactId,Version,Type,Licenses
+com.jayway.jsonpath,json-path,2.4.0,jar,The Apache Software License Version 2.0
+commons-cli,commons-cli,1.4,jar,Apache License Version 2.0
+org.apache.commons,commons-csv,1.5,jar,Apache License Version 2.0
+org.apache.poi,poi,4.0.1,jar,The Apache Software License Version 2.0
+org.apache.poi,poi-ooxml,3.17,jar,The Apache Software License Version 2.0
+org.apache.poi,poi-ooxml-schemas,3.17,jar,The Apache Software License Version 2.0
+org.freemarker,freemarker,2.3.28,jar,Apache License Version 2.0
+org.jsoup,jsoup,1.11.3,jar,The MIT License
+org.slf4j,slf4j-api,1.7.21,jar,MIT License
+org.slf4j,slf4j-log4j12,1.7.21,jar,MIT License
+com.github.virtuald,curvesapi,1.04,jar,BSD License
+commons-codec,commons-codec,1.11,jar,Apache License Version 2.0
+log4j,log4j,1.2.17,jar,The Apache Software License Version 2.0
+net.minidev,accessors-smart,1.2,jar,The Apache Software License Version 2.0
+net.minidev,json-smart,2.3,jar,The Apache Software License Version 2.0
+org.apache.commons,commons-collections4,4.2,jar,Apache License Version 2.0
+org.apache.commons,commons-math3,3.6.1,jar,Apache License Version 2.0
+org.apache.xmlbeans,xmlbeans,2.6.0,jar,The Apache Software License Version 2.0
+org.ow2.asm,asm,5.0.4,jar,BSD
+stax,stax-api,1.0.1,jar,The Apache Software License Version 2.0
+```
+
+## 6.9 Transform CSV To Shell Script
+
+For a customer project we wanted to record REST request / responses using WireMock - really quick and dirty. So we decided to avoid any sophisticated test tool but generate a ready-to-use shell script executing cURL commands. It turned out that handling of dollar signs is a bit tricky
+
+* Using ```noparse``` directive to disable parsing of dollar signs
+* Using ```${r"${MY_BASE_URL}"``` to generate output with dollar signs
+
+and the final FTL is found below
+
+```text
+<#ftl output_format="plainText">
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withHeader()>
+<#assign csvParser = CSVTool.parse(Documents.get(0), cvsFormat)>
+<#assign records = csvParser.records>
+<#assign csvMap = CSVTool.toMap(records, "disposer")>
+<#--------------------------------------------------------------------------->
+#!/bin/sh
+
+<#noparse>
+MY_BASE_URL=${MY_BASE_URL:=https://postman-echo.com}
+</#noparse>
+ 
+echo "time,user,status,duration,size"
+<#list records as record>
+date "+%FT%H:%M:%S" | tr -d '\n'; curl --write-out ',${record.disposer},%{http_code},%{time_total},%{size_download}\n' --silent --show-error --output /dev/null "${r"${MY_BASE_URL}"}/get"
+</#list>
+```
+
+Rendering the FreeMarker template 
+
+```
+> ./bin/freemarker-cli -t ./templates/csv/shell/curl.ftl site/sample/csv/user.csv
+```
+
+generates the following shell script
+
+```
+#!/bin/sh
+
+MY_BASE_URL=${MY_BASE_URL:=https://postman-echo.com}
+ 
+echo "time,user,status,duration,size"
+date "+%FT%H:%M:%S" | tr -d '\n'; curl --write-out ',AAAAAAA,%{http_code},%{time_total},%{size_download}\n' --silent --show-error --output /dev/null "${MY_BASE_URL}/get"
+date "+%FT%H:%M:%S" | tr -d '\n'; curl --write-out ',BBBBBBB,%{http_code},%{time_total},%{size_download}\n' --silent --show-error --output /dev/null "${MY_BASE_URL}/get"
+date "+%FT%H:%M:%S" | tr -d '\n'; curl --write-out ',CCCCCCC,%{http_code},%{time_total},%{size_download}\n' --silent --show-error --output /dev/null "${MY_BASE_URL}/get"
+date "+%FT%H:%M:%S" | tr -d '\n'; curl --write-out ',DDDDDDD,%{http_code},%{time_total},%{size_download}\n' --silent --show-error --output /dev/null "${MY_BASE_URL}/get"
+```
+
+Looks a bit complicated but lets dissect the things
+
+* `date "+%FT%H:%M:%S" | tr -d '\n'` creates a timestamp and removes the line feed
+* `curl --write-out` allows to print runtime data (see [https://ec.haxx.se/usingcurl-writeout.html](https://ec.haxx.se/usingcurl-writeout.html))
+
+Executing the result shell script creates the following output (which is a nice CSV for further processing)
+
+```
+time,user,status,duration,size
+2019-09-27T21:02:52,AAAAAAA,200,0.522473,206
+2019-09-27T21:02:53,BBBBBBB,200,0.498093,206
+2019-09-27T21:02:54,CCCCCCC,200,0.529013,206
+2019-09-27T21:02:54,DDDDDDD,200,0.528268,206
+```
+
+## 6.10 Unleashing The Power Of Grok
+
+Think of `Grok` as modular regular expressions with a pre-defined functionality to parse access logs or any other data where you can't comprehend the regular expression any longer, one very simple example is `QUOTEDSTRING`
+
+```
+QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
+```
+
+And with `Grok` the `QUOTEDSTRING` is just a building block for an even more complex regular expession such as `COMBINEDAPACHELOG`
+
+> bin/freemarker-cli -t templates/accesslog/combined-access.ftl site/sample/accesslog/combined-access.log 
+
+which gives you the following output
+
+```
+TIMESTAMP;VERB;REQUEST;HTTPVERSION
+19/Jun/2005:06:44:17 +0200;GET;/wximages/wxwidgets02-small.png;1.1
+19/Jun/2005:06:46:05 +0200;GET;/wximages/wxwidgets02-small.png;1.1
+19/Jun/2005:06:47:37 +0200;GET;/wximages/wxwidgets02-small.png;1.1
+19/Jun/2005:06:48:40 +0200;GET;/wiki.pl?WxWidgets_Bounties;1.1
+19/Jun/2005:06:50:49 +0200;GET;/wiki.pl?WxWidgets_Compared_To_Other_Toolkits;1.1
+19/Jun/2005:06:50:49 +0200;GET;/wxwiki.css;1.1
+19/Jun/2005:06:50:49 +0200;GET;/wximages/wxwidgets02-small.png;1.1
+19/Jun/2005:06:50:50 +0200;GET;/favicon.ico;1.1
+19/Jun/2005:06:52:36 +0200;GET;/wximages/wxwidgets02-small.png;1.1
+19/Jun/2005:06:53:14 +0200;GET;/;1.0
+```
+
+using the following FreeMarker template
+
+```text
+<#ftl output_format="plainText" strip_whitespace=true>
+<#assign grok = GrokTool.compile("%{COMBINEDAPACHELOG}")>
+<#assign document = Documents.get(0)>
+<#assign lines = document.getLineIterator()>
+
+<#compress>
+    TIMESTAMP;VERB;REQUEST;HTTPVERSION
+    <#list lines as line>
+        <#assign parts = grok.match(line)>
+        <#assign timestamp = parts["timestamp"]>
+        <#assign verb = parts["verb"]>
+        <#assign request = parts["request"]>
+        <#assign httpversion = parts["httpversion"]>
+        ${timestamp};${verb};${request};${httpversion}
+    </#list>
+</#compress>
+```
+
+While this looks small and tidy there are some nifty features
+
+* `GrokTool.compile("%{COMBINEDAPACHELOG}")` builds the `Grok` instance to parse access logs in `Combined Format`
+* The source document is streamed line by line and not loaded into memory in one piece
+* This also works for using `stdin` so are able to parse GB of access log or other files
+
+## 6.11 CSV Transformation
+
+Sometimes you have a CSV file which is not quite right - you need to change the format. Lets have a look how `freemarker-cli` can help
+
+> bin/freemarker-cli -Pcsv.in.delimiter=COMMA -Pcsv.out.delimiter=PIPE -t templates/csv/transform.ftl ./site/sample/csv/contract.csv 
+
+renders the following template
+
+```text
+<#ftl output_format="plainText" strip_text="true">
+<#assign csvParser = createCsvParser(Documents.get(0))>
+<#assign csvPrinter = createCsvPrinter()>
+<#-- Print each line without materializing the CSV in memory -->
+<#compress>
+    <#list csvParser.iterator() as record>
+        ${csvPrinter.printRecord(record)}
+    </#list>
+</#compress>
+
+<#function createCsvParser document>
+    <#assign initialCvsInFormat = CSVTool.formats[SystemTool.getParameter("csv.in.format", "DEFAULT")]>
+    <#assign csvInDelimiter = CSVTool.toDelimiter(SystemTool.getParameter("csv.in.delimiter", initialCvsInFormat.getDelimiter()))>
+    <#assign cvsInFormat = initialCvsInFormat.withDelimiter(csvInDelimiter)>
+    <#return CSVTool.parse(document, cvsInFormat)>
+</#function>
+
+<#function createCsvPrinter>
+    <#assign initialCvsOutFormat = CSVTool.formats[SystemTool.getParameter("csv.out.format", "DEFAULT")]>
+    <#assign csvOutDelimiter = CSVTool.toDelimiter(SystemTool.getParameter("csv.out.delimiter", initialCvsOutFormat.getDelimiter()))>
+    <#assign cvsOutFormat = initialCvsOutFormat.withDelimiter(csvOutDelimiter)>
+    <#return CSVTool.printer(cvsOutFormat, SystemTool.writer)>
+</#function>
+```
+
+and generates the following output
+
+```text
+contract_id|seller_company_name|customer_company_name|customer_duns_number|contract_affiliate|FERC_tariff_reference|contract_service_agreement_id|contract_execution_date|contract_commencement_date|contract_termination_date|actual_termination_date|extension_provision_description|class_name|term_name|increment_name|increment_peaking_name|product_type_name|product_name|quantity|units_for_contract|rate|rate_minimum|rate_maximum|rate_description|units_for_rate|point_of_receipt_control_area|point_of_receipt_specific_location|point_of_delivery_control_area|point_of_delivery_specific_location|begin_date|end_date|time_zone
+C71|The Electric Company|The Power Company|456543333|N|FERC Electric Tariff Original Volume No. 10|2|2/15/2001|2/15/2001|||Evergreen|N/A|N/A|N/A|N/A|MB|ENERGY|0||" "|" "|" "|Market Based||||||||ES
+C72|The Electric Company|Utility A|38495837|n|FERC Electric Tariff Original Volume No. 10|15|7/25/2001|8/1/2001|||Evergreen|N/A|N/A|N/A|N/A|MB|ENERGY|0||" "|" "|" "|Market Based||||||||ES
+C73|The Electric Company|Utility B|493758794|N|FERC Electric Tariff Original Volume No. 10|7|6/8/2001|7/6/2001|||Evergreen|N/A|N/A|N/A|N/A|MB|ENERGY|0||" "|" "|" "|Market Based||||" "|" "|||ep
+C74|The Electric Company|Utility C|594739573|n|FERC Electric Tariff Original Volume No. 10|25|6/8/2001|7/6/2001|||Evergreen|N/A|N/A|N/A|N/A|MB|ENERGY|0||" "|" "|" "|Market Based||||" "|" "|||ep
+```
+
+Some useful hints
+
+* For available CSV formats please see [Apache Commons CSV User Guide](http://commons.apache.org/proper/commons-csv/user-guide.html)
+* Stripping the Excel BOM (Byte Order Mark) works out-of-box
+
+## 6.12 Executing Arbitrary Commands
+
+Using Apache Commons Exec allows to execute arbitrary commands - nice but dangerous. It was recently quite useful to to invoke AWS CLI to generate a Confluence page about the overall setup of our AWS accounts. 
+
+A few snippets to illustrate the points
+
+```text
+<#ftl output_format="plainText" strip_whitespace="true">
+<#assign profile = SystemTool.getProperty("profile", "default")>
+<#assign ec2Instances = ec2Instances()/>
+
+h3. AWS EC2 Instance
+<@printEc2Instances ec2Instances/>
+
+<#function ec2Instances>
+    <#local json = awsCliToJson("aws ec2 describe-instances --profile ${profile}")>
+    <#local instances = json.read("$.Reservations[*].Instances[*]")>
+    <#return instances?sort_by(['InstanceType'])>
+</#function>
+
+<#function awsCliToJson line>
+    <#local output = ExecTool.execute(line)>
+    <#return JsonPathTool.parse(output)>
+</#function>
+
+<#function getAwsEc2InstanceTag tags name>
+    <#return tags?filter(x -> x["Key"] == name)?first["Value"]!"">
+</#function>
+
+<#macro printEc2Instances ec2Instances>
+    <#compress>
+        || NAME || INSTANCE_TYPE || VCPUS || STATE || PRIVATE_IP_ADDRESS ||
+        <#list ec2Instances as ec2Instance>
+            <#assign instanceType = ec2Instance["InstanceType"]>
+            <#assign arn = ec2Instance["IamInstanceProfile"]["Arn"]>
+            <#assign privateIpAddress = ec2Instance["PrivateIpAddress"]>
+            <#assign state = ec2Instance["State"]["Name"]>
+            <#assign launchTime = ec2Instance["LaunchTime"]>
+
+            <#assign coreCount = ec2Instance["CpuOptions"]["CoreCount"]?number>
+            <#assign threadsPerCore = ec2Instance["CpuOptions"]["ThreadsPerCore"]?number>
+            <#assign nrOfVirtualCpus = coreCount * threadsPerCore>
+
+            <#assign tags = ec2Instance["Tags"]/>
+            <#assign awsCloudFormationStackId = getAwsEc2InstanceTag(tags, "aws:cloudformation:stack-id")>
+            <#assign awsCloudFormationStackName = getAwsEc2InstanceTag(tags, "aws:cloudformation:stack-name")>
+            <#assign name = getAwsEc2InstanceTag(tags, "Name")>
+            <#assign country = getAwsEc2InstanceTag(tags, "Country")>
+            <#assign environment = getAwsEc2InstanceTag(tags, "Environment")>
+
+            | ${name} | ${instanceType} | ${nrOfVirtualCpus} | ${state} | ${privateIpAddress} |
+        </#list>
+    </#compress>
+</#macro>
+```
+
+## 6.13 Interactive Templates
+
+Sometime you need to apply a CSS, JSON or XPath query in ad ad-hoc way without installing `xmllint`, `jq` or `pup` - in this case you can pass a FreeMarker template in an interactive fashion
+
+```text
+> bin/freemarker-cli -i 'Hello ${SystemTool.envs["USER"]}'; echo
+Hello sgoeschl
+
+> bin/freemarker-cli -i '${JsonPathTool.parse(Documents.first).read("$.info.title")}' site/sample/json/swagger-spec.json; echo
+Swagger Petstore
+
+> bin/freemarker-cli -i '${XmlTool.parse(Documents.first)["recipients/person[1]/name"]}' site/sample/xml/recipients.xml; echo
+John Smith
+
+> bin/freemarker-cli -i '${JsoupTool.parse(Documents.first).select("a")[0]}' site/sample/html/dependencies.html; echo
+<a href="${project.url}" title="FreeMarker CLI">FreeMarker CLI</a>
+
+> ./bin/freemarker-cli -i '<#list SystemTool.envs as name,value>${name} ==> ${value}${"\n"}</#list>'
+TERM ==> xterm-256color
+LANG ==> en_US
+DISPLAY ==> :0.0
+SHELL ==> /bin/bash
+EDITOR ==> vi
+```
+
+## 6.14 Filtering & Transforming CSV
+
+During an integration project we imported large transactions CSV files (500.000+ records) and in case of import failures the developers would be happy to get a nice outline of the transactions causing the problem (the CSV records have 60+ columns) - in essence it is filtering (based on some primary key) and and transforming into an output format (Markdown).
+
+So lets start the filtering & transformation using the following command line
+
+```text
+> bin/freemarker-cli -e UTF-8 -l de_AT -Dcolumn="Order ID" \
+  -Dvalues=226939189,957081544 \
+  -Dformat=DEFAULT \
+  -Ddelimiter=COMMA \
+  -t templates/csv/md/filter.ftl site/sample/csv/sales-records.csv
+```
+
+and Apache FreeMarker template
+
+```text
+<#ftl output_format="plainText" strip_text="true">
+<#assign document = Documents.get(0)>
+<#assign parser = parser(document)>
+<#assign headers = parser.getHeaderNames()>
+<#assign column = SystemTool.getProperty("column")>
+<#assign values = SystemTool.getProperty("values")?split(",")>
+
+<#-- Process each line without materializing the whole file in memory -->
+
+<#compress>
+    <@writePageHeader document/>
+    <#list parser.iterator() as record>
+        <#if filter(record)>
+            <@writeCsvRecord headers record/>
+        </#if>
+    </#list>
+</#compress>
+
+<#function parser document>
+    <#assign format = CSVTool.formats[SystemTool.getProperty("format", "DEFAULT")]>
+    <#assign delimiter = CSVTool.toDelimiter(SystemTool.getProperty("delimiter", format.getDelimiter()))>
+    <#return CSVTool.parse(document, format.withFirstRecordAsHeader().withDelimiter(delimiter))>
+</#function>
+
+<#function filter record>
+    <#return values?seq_contains(record.get(column))>
+</#function>
+
+<#macro writePageHeader document>
+    # ${document.name}
+</#macro>
+
+<#macro writeCsvRecord headers record>
+    ## Line ${record.getRecordNumber()}
+    | Column    | Value                       |
+    | --------- | --------------------------- |
+    <#list headers as header>
+    | ${header} | ${record.get(header)}       |
+    </#list>
+</#macro>
+
+
+```
+
+yields
+
+```
+# sales-records.csv
+## Line 1
+| Column | Value |
+| --------- | --------------------------- |
+| Region | Central America and the Caribbean |
+| Country | Antigua and Barbuda |
+| Item Type | Baby Food |
+| Sales Channel | Online |
+| Order Priority | M |
+| Order Date | 12/20/2013 |
+| Order ID | 957081544 |
+| Ship Date | 1/11/2014 |
+| Units Sold | 552 |
+| Unit Price | 255.28 |
+| Unit Cost | 159.42 |
+| Total Revenue | 140914.56 |
+| Total Cost | 87999.84 |
+| Total Profit | 52914.72 |
+## Line 4.998
+| Column | Value |
+| --------- | --------------------------- |
+| Region | Asia |
+| Country | Myanmar |
+| Item Type | Baby Food |
+| Sales Channel | Offline |
+| Order Priority | H |
+| Order Date | 11/23/2016 |
+| Order ID | 226939189 |
+| Ship Date | 12/10/2016 |
+| Units Sold | 5204 |
+| Unit Price | 255.28 |
+| Unit Cost | 159.42 |
+| Total Revenue | 1328477.12 |
+| Total Cost | 829621.68 |
+| Total Profit | 498855.44 |
+```
+
+## 6.15 Using Advanced FreeMarker Features
+
+There is a `demo.ftl` which shows some advanced FreeMarker functionality
+
+* Invoking a Java constructor
+* Invoke a static method of non-instantiable class
+* Work with Java enumerations
+* Access System properties
+* Access Environment variables
+
+Running 
+
+> ./bin/freemarker-cli -t templates/demo.ftl 
+
+gives you
+
+```text
+1) FreeMarker Special Variables
+---------------------------------------------------------------------------
+FreeMarker version     : 2.3.29
+Template name          : templates/demo.ftl
+Language               : en
+Locale                 : en_US
+Timestamp              : Feb 22, 2020 4:54:19 PM
+Output encoding        : UTF-8
+Output format          : plainText
+
+2) Invoke a constructor of a Java class
+---------------------------------------------------------------------------
+new java.utilDate(1000 * 3600 * 24): Jan 2, 1970 1:00:00 AM
+
+3) Invoke a static method of an non-constructor class
+---------------------------------------------------------------------------
+Random UUID              : 1fdb5ead-80a3-418c-bcc7-242e41b4e950
+System.currentTimeMillis : 1,582,386,859,782
+
+4) Access an Enumeration
+---------------------------------------------------------------------------
+java.math.RoundingMode#UP: UP
+
+5) Loop Over The Values Of An Enumeration
+---------------------------------------------------------------------------
+- java.math.RoundingMode.UP
+- java.math.RoundingMode.DOWN
+- java.math.RoundingMode.CEILING
+- java.math.RoundingMode.FLOOR
+- java.math.RoundingMode.HALF_UP
+- java.math.RoundingMode.HALF_DOWN
+- java.math.RoundingMode.HALF_EVEN
+- java.math.RoundingMode.UNNECESSARY
+
+6) Display list of input files
+---------------------------------------------------------------------------
+List all files:
+
+7) SystemTool
+---------------------------------------------------------------------------
+Host name       : W0GL5179.local
+Command line    : -t, templates/demo.ftl
+System property : sgoeschl
+Timestamp       : 1582386860080
+Environment var : sgoeschl
+
+8) Access System Properties
+---------------------------------------------------------------------------
+app.dir      : 
+app.home     : /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler
+app.pid      : 71792
+basedir      : /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler
+java.version : 1.8.0_192
+user.name    : sgoeschl
+user.dir     : /Users/sgoeschl/work/github/apache/freemarker-generator/freemarker-generator-cli/target/appassembler
+user.home    : /Users/sgoeschl
+
+9) List Environment Variables
+---------------------------------------------------------------------------
+- TERM ==> xterm-256color
+- LANG ==> en_US
+- DISPLAY ==> :0.0
+- SHELL ==> /bin/bash
+- EDITOR ==> vi
+
+10) List System Properties
+---------------------------------------------------------------------------
+- java.runtime.name ==> Java(TM) SE Runtime Environment
+- java.vm.version ==> 25.192-b12
+- java.vm.vendor ==> Oracle Corporation
+- java.vendor.url ==> http://java.oracle.com/
+- java.vm.name ==> Java HotSpot(TM) 64-Bit Server VM
+
+11) Access Documents
+---------------------------------------------------------------------------
+Get the number of documents:
+- 0
+List all files containing "README" in the name
+List all files having "md" extension
+Get all documents
+
+12) FreeMarker CLI Tools
+---------------------------------------------------------------------------
+- CSVTool              : Process CSV files using Apache Commons CSV (see https://commons.apache.org/proper/commons-csv/)
+- ExcelTool            : Process Excels files (XLS, XLSX) using Apache POI (see https://poi.apache.org)
+- ExecTool             : Execute command line tools using Apache Commons Exec (see https://commons.apache.org/proper/commons-exec/)
+- FreeMarkerTool       : Expose useful Apache FreeMarker classes
+- GrokTool             : Process text files using Grok expressions (see https://github.com/thekrakken/java-grok)
+- JsonPathTool         : Process JSON files using Java JSON Path (see https://github.com/json-path/JsonPath)
+- JsoupTool            : Process  HTML files using Jsoup (see https://jsoup.org)
+- PropertiesTool       : Process JDK properties files
+- SystemTool           : Expose System-related utility methods
+- UUIDTool             : Create UUIDs
+- XmlTool              : Process XML files using Apache FreeMarker (see https://freemarker.apache.org/docs/xgui.html)
+- YamlTool             : Process YAML files using SnakeYAML(see https://bitbucket.org/asomov/snakeyaml/wiki/Home)
+
+13) Document Data Model
+---------------------------------------------------------------------------
+- CSVTool
+- Documents
+- ExcelTool
+- ExecTool
+- FreeMarkerTool
+- GrokTool
+- JsonPathTool
+- JsoupTool
+- PropertiesTool
+- SystemTool
+- UUIDTool
+- XmlTool
+- YamlTool
+
+14) Create a UUID
+---------------------------------------------------------------------------
+UUIDTool Random UUID  : 936315a5-ee3d-44cd-a32c-2be10d2249a6
+UUIDTool Named UUID   : 298415f9-e888-3d98-90e7-6c0d63ad14dc
+
+15) Printing Special Characters
+---------------------------------------------------------------------------
+German Special Characters: äöüßÄÖÜ
+
+16) Locale-specific output
+---------------------------------------------------------------------------
+Small Number :  1.23
+Large Number :  12,345,678.90
+Date         :  Feb 22, 2020
+Time         :  4:54:20 PM
+
+17) Execute a program
+---------------------------------------------------------------------------
+> date
+Sat Feb 22 16:54:20 CET 2020
+```
+
+# 7. Design Considerations
+
+## 7.1 How It Works
+
+* The user-supplied files are loaded or input is read from `stdin`
+* The FreeMarker data model containing the documents and tools is created and passed to the template
+* The generated output is written to the user-supplied file or to `stdout`
+
+## 7.2 FreeMarker Data Model
+
+Within the script a FreeMarker data model is set up and passed to the template - it contains the documents to be processed and the following tools
+
+| Entry                 | Description                                                                                               |
+|-----------------------|-----------------------------------------------------------------------------------------------------------|
+| CSVTool               | Process CSV files using [Apache Commons CSV](https://commons.apache.org/proper/commons-csv/)              |
+| ExecTool              | Execute command line tools using [Apache Commons Exec](https://commons.apache.org/proper/commons-exec/)   |
+| ExcelTool             | Process Excels files (XLS, XLSX) using [Apache POI](https://poi.apache.org)                               |
+| Documents             | Helper class to find documents, e.g. by name, extension or index                                          |
+| FreeMarkerTool        | Expose useful FreeMarker classes                                                                          |
+| GrokTool              | Process text files using [Grok](https://github.com/thekrakken/java-grok) instead of regular expressions   |
+| JsonPathTool          | Process JSON file using [Java JSON Path](https://github.com/json-path/JsonPath)                           |
+| JsoupTool             | Processing HTML files using [Jsoup](https://jsoup.org)                                                    |
+| PropertiesTool        | Process JDK properties files                                                                              |
+| SystemTool            | System-related utility methods                                                                            |
+| XmlTool               | Process XML files using [Apache FreeMarker](https://freemarker.apache.org/docs/xgui.html)                 |
+| YamlTool              | Process YAML files using [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/wiki/Home)                    |
+| UUIDTool              | Create UUIDs                                                                                              |
+
+
+# 8. Tips & Tricks
+
+## 8.1 Template Base Directory
+
+When doing some ad-hoc scripting it is useful to rely on a base directory to resolve the FTL templates
+
+* As a default the FTL templates are resolved relative to the script directory
+* The caller can provide a `-b` or `--basedir` command line parameter
+
+> ./bin/freemarker-cli -t templates/json/html/customer-user-products.ftl freemarker-cli/site/sample/json/customer-user-products.jso
+
+## 8.2 Using Pipes
+
+When doing ad-hoc scripting it useful to pipe the output of one command directly into "freemarker-cli"
+
+> cat site/sample/json/customer-user-products.json | ./bin/freemarker-cli -t ./templates/json/html/customer-user-products.ftl --stdin
\ No newline at end of file
diff --git a/freemarker-generator-cli/pom.xml b/freemarker-generator-cli/pom.xml
new file mode 100644
index 0000000..70855b7
--- /dev/null
+++ b/freemarker-generator-cli/pom.xml
@@ -0,0 +1,223 @@
+<?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>
+
+    <parent>
+        <groupId>org.apache.freemarker.generator</groupId>
+        <artifactId>freemarker-generator</artifactId>
+        <version>0.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>freemarker-generator-cli</artifactId>
+    <name>Apache FreeMarker Generator: CLI</name>
+    <description>Command-line client for Apache FreeMarker</description>
+
+    <build>
+        <defaultGoal>package</defaultGoal>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>appassembler-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>assemble</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <repositoryLayout>flat</repositoryLayout>
+                    <repositoryName>lib</repositoryName>
+                    <extraJvmArguments>-Xms64m -Xmx512m</extraJvmArguments>
+                    <endorsedDir>endorsed</endorsedDir>
+                    <useWildcardClassPath>true</useWildcardClassPath>
+                    <copyConfigurationDirectory>true</copyConfigurationDirectory>
+                    <configurationDirectory>config</configurationDirectory>
+                    <programs>
+                        <program>
+                            <platforms>
+                                <platform>windows</platform>
+                                <platform>unix</platform>
+                            </platforms>
+                            <mainClass>org.apache.freemarker.generator.cli.Main</mainClass>
+                            <id>freemarker-cli</id>
+                        </program>
+                    </programs>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <configuration>
+                            <target>
+                                <copy file="README.md" todir="./target/appassembler" />
+                                <copy file="./src/main/scripts/run-samples.sh" todir="./target/appassembler" />
+                                <copy todir="./target/appassembler/site">
+                                    <fileset dir="site" />
+                                </copy>
+                                <copy todir="./target/appassembler/templates">
+                                    <fileset dir="templates" />
+                                </copy>
+                                <chmod file="./target/appassembler/run-samples.sh" perm="a+x" />
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <configuration>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <descriptors>
+                                <descriptor>${basedir}/src/main/assembly/dist.xml</descriptor>
+                                <descriptor>${basedir}/src/main/assembly/app.xml</descriptor>
+                            </descriptors>
+                        </configuration>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>pl.project13.maven</groupId>
+                <artifactId>git-commit-id-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>get-the-git-infos</id>
+                        <goals>
+                            <goal>revision</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>validate-the-git-infos</id>
+                        <goals>
+                            <goal>validateRevision</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>*.md</exclude>
+                        <exclude>.travis.yml</exclude>
+                        <exclude>src/main/resources/patterns/*</exclude>
+                        <exclude>site/sample/*/**</exclude>
+                        <exclude>src/test/data/encoding/utf8.txt</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <configuration>
+                    <linkXRef>false</linkXRef>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+
+    <dependencies>
+        <!-- CLI processing -->
+        <dependency>
+            <groupId>info.picocli</groupId>
+            <artifactId>picocli</artifactId>
+            <version>4.1.4</version>
+        </dependency>
+        <!-- Apache FreeMarker Generator Tools -->
+        <dependency>
+            <groupId>org.apache.freemarker.generator</groupId>
+            <artifactId>freemarker-generator-tools</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <!-- Logging -->
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+        </dependency>
+        <!-- Testing -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>attach-sources</id>
+                                <goals>
+                                    <goal>jar-no-fork</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>sign-artifacts</id>
+                                <phase>verify</phase>
+                                <goals>
+                                    <goal>sign</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/freemarker-generator-cli/run-samples.sh b/freemarker-generator-cli/run-samples.sh
new file mode 100755
index 0000000..4e0e867
--- /dev/null
+++ b/freemarker-generator-cli/run-samples.sh
@@ -0,0 +1,168 @@
+#!/bin/sh
+#
+# 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.
+
+# Check that java is on the path
+
+hash java 2>/dev/null || { echo >&2 "I require JDK but it's not installed.  Aborting."; exit 1; }
+hash mvn 2>/dev/null || { echo >&2 "I require Maven but it's not installed.  Aborting."; exit 1; }
+
+# Run all the samples being documented
+
+mkdir target 2>/dev/null
+mkdir target/out 2>/dev/null
+
+FREEMARKER_CMD="target/appassembler/bin/freemarker-cli"
+# FREEMARKER_CMD="java -jar target/freemarker-cli-2.0.0-BETA-4-SNAPSHOT-jar-with-dependencies.jar"
+
+#############################################################################
+# Info
+#############################################################################
+
+echo "templates/info.ftl"
+$FREEMARKER_CMD -t templates/info.ftl README.md > target/out/info.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# Demo
+#############################################################################
+
+echo "templates/demo.ftl"
+$FREEMARKER_CMD -t templates/demo.ftl README.md > target/out/demo.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# Interactive Mode
+#############################################################################
+
+$FREEMARKER_CMD -i '${JsonPathTool.parse(Documents.first).read("$.info.title")}' site/sample/json/swagger-spec.json > target/out/interactive-json.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -i '${XmlTool.parse(Documents.first)["recipients/person[1]/name"]}' site/sample/xml/recipients.xml > target/out/interactive-xml.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -i '${JsoupTool.parse(Documents.first).select("a")[0]}' site/sample/html/dependencies.html > target/out/interactive-html.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# CSV
+#############################################################################
+
+echo "templates/csv/html/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/html/transform.ftl site/sample/csv/contract.csv > target/out/contract.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/csv/md/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/md/transform.ftl site/sample/csv/contract.csv > target/out/contract.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/csv/shell/curl.ftl"
+$FREEMARKER_CMD -t ./templates/csv/shell/curl.ftl site/sample/csv/user.csv > target/out/curl.sh || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/csv/md/filter.ftl"
+$FREEMARKER_CMD -e UTF-8 -l de_AT -Pcolumn="Order ID" -Pvalues=226939189,957081544 -Pformat=DEFAULT -Pdelimiter=COMMA -t templates/csv/md/filter.ftl site/sample/csv/sales-records.csv > target/out/sales-records.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# CSV To XML-FO & PDF
+#############################################################################
+
+echo "templates/csv/fo/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/fo/transform.ftl site/sample/csv/locker-test-users.csv > target/out/locker-test-users.fo || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash fop 2>/dev/null; then
+	echo "fop -fo target/out/locker-test-users.fo target/out/locker-test-users.pdf"
+    fop -fo target/out/locker-test-users.fo target/out/locker-test-users.pdf 2>/dev/null || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+echo "templates/csv/fo/transactions.ftl"
+$FREEMARKER_CMD -t templates/csv/fo/transactions.ftl site/sample/csv/transactions.csv > target/out/transactions.fo || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash fop 2>/dev/null; then
+	echo "fop -fo target/out/transactions.fo target/out/transactions-fo.pdf"
+    fop -fo target/out/transactions.fo target/out/transactions-fo.pdf 2>/dev/null || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+#############################################################################
+# CSV to HTML & PDF
+#############################################################################
+
+echo "templates/csv/html/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/html/transactions.ftl site/sample/csv/transactions.csv > target/out/transactions.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash wkhtmltopdf 2>/dev/null; then
+	echo "wkhtmltopdf -O landscape target/out/transactions.html target/out/transactions-html.pdf"
+    wkhtmltopdf -O landscape target/out/transactions.html target/out/transactions-html.pdf 2>/dev/null || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+#############################################################################
+# Grok
+#############################################################################
+
+echo "templates/accesslog/combined-access.ftl"
+$FREEMARKER_CMD -t templates/accesslog/combined-access.ftl site/sample/accesslog/combined-access.log > target/out/combined-access.log.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# Excel
+#############################################################################
+
+echo "templates/excel/html/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xls > target/out/test.xls.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xlsx > target/out/test.xslx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/excel/md/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/md/transform.ftl site/sample/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/excel/csv/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/csv/transform.ftl site/sample/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/excel/csv/custom.ftl"
+$FREEMARKER_CMD -t templates/excel/csv/custom.ftl -Pcsv.format=MYSQL site/sample/excel/test.xls > target/out/test-transform-xls.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# HTML
+#############################################################################
+
+echo "templates/html/csv/dependencies.ftl"
+$FREEMARKER_CMD -t templates/html/csv/dependencies.ftl site/sample/html/dependencies.html > target/out/dependencies.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# JSON
+#############################################################################
+
+echo "templates/json/csv/swagger-endpoints.ftl"
+$FREEMARKER_CMD -t templates/json/csv/swagger-endpoints.ftl site/sample/json/swagger-spec.json > target/out/swagger-spec.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash curl 2>/dev/null; then
+echo "templates/json/md/github-users.ftl"
+$FREEMARKER_CMD -t templates/json/md/github-users.ftl site/sample/json/github-users.json > target/out/github-users-curl.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+#############################################################################
+# Properties
+#############################################################################
+
+echo "templates/properties/csv/locker-test-users.ftl"
+$FREEMARKER_CMD -t templates/properties/csv/locker-test-users.ftl site/sample/properties > target/out/locker-test-users.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# YAML
+#############################################################################
+
+echo "templates/yaml/txt/transform.ftl"
+$FREEMARKER_CMD -t ./templates/yaml/txt/transform.ftl ./site/sample/yaml/customer.yaml > target/out/customer.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# XML
+#############################################################################
+
+echo "templates/xml/txt/recipients.ftl"
+$FREEMARKER_CMD -t ./templates/xml/txt/recipients.ftl site/sample/xml/recipients.xml > target/out/recipients.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "Created the following sample files in ./target/out"
+ls -l ./target/out
+
diff --git a/freemarker-generator-cli/site/image/contract.png b/freemarker-generator-cli/site/image/contract.png
new file mode 100644
index 0000000..e69f0eb
--- /dev/null
+++ b/freemarker-generator-cli/site/image/contract.png
Binary files differ
diff --git a/freemarker-generator-cli/site/image/excel-to-html.png b/freemarker-generator-cli/site/image/excel-to-html.png
new file mode 100644
index 0000000..ddb561f
--- /dev/null
+++ b/freemarker-generator-cli/site/image/excel-to-html.png
Binary files differ
diff --git a/freemarker-generator-cli/site/image/github.png b/freemarker-generator-cli/site/image/github.png
new file mode 100644
index 0000000..e39415a
--- /dev/null
+++ b/freemarker-generator-cli/site/image/github.png
Binary files differ
diff --git a/freemarker-generator-cli/site/image/locker-test-users-pdf.png b/freemarker-generator-cli/site/image/locker-test-users-pdf.png
new file mode 100644
index 0000000..67a9eb7
--- /dev/null
+++ b/freemarker-generator-cli/site/image/locker-test-users-pdf.png
Binary files differ
diff --git a/freemarker-generator-cli/site/image/transactions.png b/freemarker-generator-cli/site/image/transactions.png
new file mode 100644
index 0000000..d7d0fc1
--- /dev/null
+++ b/freemarker-generator-cli/site/image/transactions.png
Binary files differ
diff --git a/freemarker-generator-cli/site/sample/accesslog/combined-access.log b/freemarker-generator-cli/site/sample/accesslog/combined-access.log
new file mode 100644
index 0000000..d56f485
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/accesslog/combined-access.log
@@ -0,0 +1,10 @@
+222.64.146.118 - - [19/Jun/2005:06:44:17 +0200] "GET /wximages/wxwidgets02-small.png HTTP/1.1" 200 12468 "http://blog.vckbase.com/bastet/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler )"
+218.84.191.50 - - [19/Jun/2005:06:46:05 +0200] "GET /wximages/wxwidgets02-small.png HTTP/1.1" 200 12468 "http://blog.vckbase.com/bastet/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+202.201.245.20 - - [19/Jun/2005:06:47:37 +0200] "GET /wximages/wxwidgets02-small.png HTTP/1.1" 200 12468 "http://blog.vckbase.com/bastet/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+138.243.201.10 - - [19/Jun/2005:06:48:40 +0200] "GET /wiki.pl?WxWidgets_Bounties HTTP/1.1" 200 8873 "http://www.wxwidgets.org/toolbar.htm" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.7.7) Gecko/20050414 Firefox/1.0.3"
+68.251.52.253 - - [19/Jun/2005:06:50:49 +0200] "GET /wiki.pl?WxWidgets_Compared_To_Other_Toolkits HTTP/1.1" 200 19476 "http://www.google.com/search?q=wxWidget+designer" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4"
+68.251.52.253 - - [19/Jun/2005:06:50:49 +0200] "GET /wxwiki.css HTTP/1.1" 200 1540 "http://wiki.wxwidgets.org/wiki.pl?WxWidgets_Compared_To_Other_Toolkits" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4"
+68.251.52.253 - - [19/Jun/2005:06:50:49 +0200] "GET /wximages/wxwidgets02-small.png HTTP/1.1" 200 12468 "http://wiki.wxwidgets.org/wiki.pl?WxWidgets_Compared_To_Other_Toolkits" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4"
+68.251.52.253 - - [19/Jun/2005:06:50:50 +0200] "GET /favicon.ico HTTP/1.1" 200 3262 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4"
+61.177.31.179 - - [19/Jun/2005:06:52:36 +0200] "GET /wximages/wxwidgets02-small.png HTTP/1.1" 200 12468 "http://blog.vckbase.com/bastet/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
+216.148.248.43 - - [19/Jun/2005:06:53:14 +0200] "GET / HTTP/1.0" 200 3369 "-" "Mozilla/4.0 (compatible;)"
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/csv/contract.csv b/freemarker-generator-cli/site/sample/csv/contract.csv
new file mode 100644
index 0000000..6ce0d00
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/csv/contract.csv
@@ -0,0 +1,23 @@
+contract_id,seller_company_name,customer_company_name,customer_duns_number,contract_affiliate,FERC_tariff_reference,contract_service_agreement_id,contract_execution_date,contract_commencement_date,contract_termination_date,actual_termination_date,extension_provision_description,class_name,term_name,increment_name,increment_peaking_name,product_type_name,product_name,quantity,units_for_contract,rate,rate_minimum,rate_maximum,rate_description,units_for_rate,point_of_receipt_control_area,point_of_receipt_specific_location,point_of_delivery_control_area,point_of_delivery_specific_location,begin_date,end_date,time_zone
+C71,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Original Volume No. 10,2,2/15/2001,2/15/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,,,,,,ES
+C72,The Electric Company,Utility A,38495837,n,FERC Electric Tariff Original Volume No. 10,15,7/25/2001,8/1/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,,,,,,ES
+C73,The Electric Company,Utility B,493758794,N,FERC Electric Tariff Original Volume No. 10,7,6/8/2001,7/6/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,, , ,,,ep
+C74,The Electric Company,Utility C,594739573,n,FERC Electric Tariff Original Volume No. 10,25,6/8/2001,7/6/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,, , ,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,ENERGY,2000,KWh,.1475, , ,Max amount of capacity and energy to be transmitted.  Bill based on monthly max delivery to City.,$/KWh,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,point-to-point agreement,2000,KW,0.01, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,network,2000,KW,0.2, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,BLACK START SERVICE,2000,KW,0.22, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,CAPACITY,2000,KW,0.04, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,regulation & frequency response,2000,KW,0.1, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,real power transmission loss,2000,KW,7, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C76,The Electric Company,The Power Company,456534333,N,FERC Electric Tariff Original Volume No. 10,132,12/15/2001,1/1/2002,12/31/2004,12/31/2004,None,F,LT,M,FP,MB,CAPACITY,70,MW,3750, , ,70MW for each and every hour over the term of the agreement (7x24 schedule).,$/MW,,,,,,,ep
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,35, , ,,$/MWH,,,PJM,Bus 4321,20020101,20030101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,37, , ,,$/MWH,,,PJM,Bus 4321,20030101,20040101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,39, , ,,$/MWH,,,PJM,Bus 4321,20040101,20050101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,41, , ,,$/MWH,,,PJM,Bus 4321,20050101,20060101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,43, , ,,$/MWH,,,PJM,Bus 4321,20060101,20070101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,45, , ,,$/MWH,,,PJM,Bus 4321,20070101,20080101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,47, , ,,$/MWH,,,PJM,Bus 4321,20080101,20090101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,49, , ,,$/MWH,,,PJM,Bus 4321,20090101,20100101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,51, , ,,$/MWH,,,PJM,Bus 4321,20100101,20110101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,53, , ,,$/MWH,,,PJM,Bus 4321,20110101,20120101,EP
diff --git a/freemarker-generator-cli/site/sample/csv/excel-export-utf8.csv b/freemarker-generator-cli/site/sample/csv/excel-export-utf8.csv
new file mode 100644
index 0000000..8022365
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/csv/excel-export-utf8.csv
@@ -0,0 +1,3 @@
+﻿Text;Date;Number;Currency;Time;Percentage;Forumula
+Row 1;01.01.17;100,00;€100,00;10:00;50,00%;50
+Row 2;01.01.17;100,00;€100,00;10:00;50,00%;50
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/csv/locker-test-users.csv b/freemarker-generator-cli/site/sample/csv/locker-test-users.csv
new file mode 100644
index 0000000..ed5d129
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/csv/locker-test-users.csv
@@ -0,0 +1,5 @@
+TENANT,SITE,USER_ID,DISPOSER_ID,PASSWORD,SMS_OTP,NAME,DESCRIPTION
+TENANT_A,fat,user_0004,user_0004,password_0004,,,
+TENANT_B,fat,user_0001,user_0001,password_0001,,,
+TENANT_B,uat,user_0003,user_0003,password_0003,,,
+TENANT_C,fat,user_0002,user_0002,password_0004,000000,,Many products
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/csv/sales-records.csv b/freemarker-generator-cli/site/sample/csv/sales-records.csv
new file mode 100755
index 0000000..d589719
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/csv/sales-records.csv
@@ -0,0 +1,5001 @@
+Region,Country,Item Type,Sales Channel,Order Priority,Order Date,Order ID,Ship Date,Units Sold,Unit Price,Unit Cost,Total Revenue,Total Cost,Total Profit
+Central America and the Caribbean,Antigua and Barbuda ,Baby Food,Online,M,12/20/2013,957081544,1/11/2014,552,255.28,159.42,140914.56,87999.84,52914.72
+Central America and the Caribbean,Panama,Snacks,Offline,C,7/5/2010,301644504,7/26/2010,2167,152.58,97.44,330640.86,211152.48,119488.38
+Europe,Czech Republic,Beverages,Offline,C,9/12/2011,478051030,9/29/2011,4778,47.45,31.79,226716.10,151892.62,74823.48
+Asia,North Korea,Cereal,Offline,L,5/13/2010,892599952,6/15/2010,9016,205.70,117.11,1854591.20,1055863.76,798727.44
+Asia,Sri Lanka,Snacks,Offline,C,7/20/2015,571902596,7/27/2015,7542,152.58,97.44,1150758.36,734892.48,415865.88
+Middle East and North Africa,Morocco,Personal Care,Offline,L,11/8/2010,412882792,11/22/2010,48,81.73,56.67,3923.04,2720.16,1202.88
+Australia and Oceania,Federated States of Micronesia,Clothes,Offline,H,3/28/2011,932776868,5/10/2011,8258,109.28,35.84,902434.24,295966.72,606467.52
+Europe,Bosnia and Herzegovina,Clothes,Online,M,10/14/2013,919133651,11/4/2013,927,109.28,35.84,101302.56,33223.68,68078.88
+Middle East and North Africa,Afghanistan,Clothes,Offline,M,8/27/2016,579814469,10/5/2016,8841,109.28,35.84,966144.48,316861.44,649283.04
+Sub-Saharan Africa,Ethiopia,Baby Food,Online,M,4/13/2015,192993152,5/7/2015,9817,255.28,159.42,2506083.76,1565026.14,941057.62
+Middle East and North Africa,Turkey,Office Supplies,Offline,C,9/25/2013,557156026,10/15/2013,3704,651.21,524.96,2412081.84,1944451.84,467630.00
+Middle East and North Africa,Oman,Cosmetics,Online,M,5/12/2013,741101920,5/17/2013,7382,437.20,263.33,3227410.40,1943902.06,1283508.34
+Asia,Malaysia,Cereal,Offline,L,7/31/2016,333942162,8/25/2016,9762,205.70,117.11,2008043.40,1143227.82,864815.58
+Central America and the Caribbean,Saint Lucia,Cosmetics,Offline,H,7/6/2015,795100581,7/16/2015,6786,437.20,263.33,2966839.20,1786957.38,1179881.82
+Central America and the Caribbean,Saint Vincent and the Grenadines,Baby Food,Online,L,11/28/2010,504313504,12/3/2010,6428,255.28,159.42,1640939.84,1024751.76,616188.08
+Middle East and North Africa,Lebanon,Meat,Offline,H,12/17/2015,611629760,1/31/2016,3693,421.89,364.69,1558039.77,1346800.17,211239.60
+Europe,Austria,Cereal,Offline,C,8/13/2014,987410676,9/6/2014,5616,205.70,117.11,1155211.20,657689.76,497521.44
+Europe,Bulgaria,Office Supplies,Online,L,10/31/2010,672330081,11/29/2010,6266,651.21,524.96,4080481.86,3289399.36,791082.50
+North America,Mexico,Beverages,Online,C,3/13/2017,127374303,3/20/2017,1742,47.45,31.79,82657.90,55378.18,27279.72
+Central America and the Caribbean,Trinidad and Tobago,Baby Food,Offline,C,4/16/2013,783842170,6/1/2013,5172,255.28,159.42,1320308.16,824520.24,495787.92
+Middle East and North Africa,Libya,Beverages,Offline,L,1/18/2010,993345010,3/3/2010,1718,47.45,31.79,81519.10,54615.22,26903.88
+Middle East and North Africa,Algeria,Baby Food,Offline,M,9/5/2015,977806651,10/14/2015,3572,255.28,159.42,911860.16,569448.24,342411.92
+Europe,Estonia,Fruits,Online,L,9/28/2016,579463422,11/1/2016,4958,9.33,6.92,46258.14,34309.36,11948.78
+Australia and Oceania,Tuvalu,Beverages,Offline,L,3/22/2012,610864150,4/7/2012,7132,47.45,31.79,338413.40,226726.28,111687.12
+Middle East and North Africa,Saudi Arabia,Snacks,Offline,L,4/25/2017,604870164,6/5/2017,3378,152.58,97.44,515415.24,329152.32,186262.92
+Central America and the Caribbean,Cuba,Cereal,Online,H,3/13/2014,164655292,5/1/2014,4015,205.70,117.11,825885.50,470196.65,355688.85
+Europe,Montenegro,Fruits,Offline,L,5/29/2016,313705861,7/10/2016,1390,9.33,6.92,12968.70,9618.80,3349.90
+Central America and the Caribbean,Guatemala,Office Supplies,Online,M,1/17/2012,345820701,2/1/2012,4885,651.21,524.96,3181160.85,2564429.60,616731.25
+Sub-Saharan Africa,Guinea,Baby Food,Online,M,12/27/2012,975111138,1/21/2013,5910,255.28,159.42,1508704.80,942172.20,566532.60
+Australia and Oceania,Vanuatu,Snacks,Online,C,4/1/2013,286001002,4/15/2013,2907,152.58,97.44,443550.06,283258.08,160291.98
+Middle East and North Africa,United Arab Emirates,Cosmetics,Offline,H,6/26/2015,483226621,8/6/2015,6350,437.20,263.33,2776220.00,1672145.50,1104074.50
+Australia and Oceania,Australia,Clothes,Offline,M,1/17/2012,241836822,1/17/2012,3744,109.28,35.84,409144.32,134184.96,274959.36
+Middle East and North Africa,Oman,Clothes,Online,H,7/3/2011,557192933,7/5/2011,4626,109.28,35.84,505529.28,165795.84,339733.44
+Sub-Saharan Africa,Malawi,Meat,Online,L,2/17/2012,694968783,4/2/2012,5562,421.89,364.69,2346552.18,2028405.78,318146.40
+Middle East and North Africa,Lebanon,Fruits,Online,H,4/5/2013,441150701,5/12/2013,5150,9.33,6.92,48049.50,35638.00,12411.50
+Europe,Czech Republic,Cereal,Online,M,7/8/2011,552037513,8/5/2011,9022,205.70,117.11,1855825.40,1056566.42,799258.98
+Australia and Oceania,Vanuatu,Cosmetics,Offline,C,2/24/2012,504240548,3/27/2012,4838,437.20,263.33,2115173.60,1273990.54,841183.06
+Europe,Luxembourg,Vegetables,Offline,L,2/13/2010,744683635,4/1/2010,7291,154.06,90.93,1123251.46,662970.63,460280.83
+Sub-Saharan Africa,Benin,Personal Care,Online,L,8/7/2016,440603101,9/15/2016,3104,81.73,56.67,253689.92,175903.68,77786.24
+Middle East and North Africa,Somalia,Clothes,Offline,L,4/26/2017,629547774,5/3/2017,6031,109.28,35.84,659067.68,216151.04,442916.64
+Europe,Switzerland,Meat,Online,L,3/21/2014,169378983,4/10/2014,1860,421.89,364.69,784715.40,678323.40,106392.00
+Middle East and North Africa,Saudi Arabia,Personal Care,Offline,L,2/2/2014,688270556,3/4/2014,3407,81.73,56.67,278454.11,193074.69,85379.42
+Asia,Laos,Meat,Online,L,3/21/2017,734708821,3/24/2017,5522,421.89,364.69,2329676.58,2013818.18,315858.40
+Asia,Kyrgyzstan,Snacks,Online,C,8/6/2013,727492606,9/22/2013,84,152.58,97.44,12816.72,8184.96,4631.76
+Middle East and North Africa,Algeria,Baby Food,Offline,M,12/30/2016,705733239,1/25/2017,1003,255.28,159.42,256045.84,159898.26,96147.58
+Sub-Saharan Africa,Angola,Office Supplies,Offline,C,10/3/2015,778854548,10/3/2015,9224,651.21,524.96,6006761.04,4842231.04,1164530.00
+Sub-Saharan Africa,Mauritania,Cosmetics,Offline,M,5/30/2014,676592862,7/9/2014,7718,437.20,263.33,3374309.60,2032380.94,1341928.66
+Middle East and North Africa,Lebanon,Household,Offline,M,10/15/2014,198997008,10/16/2014,6492,668.27,502.54,4338408.84,3262489.68,1075919.16
+Europe,Finland,Beverages,Online,H,3/16/2012,566428315,3/23/2012,7581,47.45,31.79,359718.45,240999.99,118718.46
+Asia,Taiwan,Baby Food,Online,M,5/27/2014,369560611,6/13/2014,52,255.28,159.42,13274.56,8289.84,4984.72
+Europe,Belgium,Snacks,Online,M,1/12/2015,519380223,1/17/2015,5005,152.58,97.44,763662.90,487687.20,275975.70
+Asia,Laos,Office Supplies,Online,H,8/10/2012,197185981,9/11/2012,568,651.21,524.96,369887.28,298177.28,71710.00
+Europe,San Marino,Office Supplies,Online,H,4/13/2014,904589211,5/4/2014,6905,651.21,524.96,4496605.05,3624848.80,871756.25
+Australia and Oceania,Tuvalu,Household,Offline,H,11/23/2016,613513743,12/31/2016,1205,668.27,502.54,805265.35,605560.70,199704.65
+Australia and Oceania,Kiribati,Clothes,Offline,M,10/22/2010,516195905,10/29/2010,2694,109.28,35.84,294400.32,96552.96,197847.36
+Asia,Kyrgyzstan,Vegetables,Offline,H,12/3/2013,975184524,1/17/2014,7626,154.06,90.93,1174861.56,693432.18,481429.38
+Australia and Oceania,Samoa ,Clothes,Online,M,12/8/2014,173340928,1/3/2015,4287,109.28,35.84,468483.36,153646.08,314837.28
+Sub-Saharan Africa,Central African Republic,Personal Care,Offline,H,12/16/2014,863838946,1/5/2015,7995,81.73,56.67,653431.35,453076.65,200354.70
+Asia,Uzbekistan,Cereal,Offline,L,3/2/2016,920164906,3/6/2016,6099,205.70,117.11,1254564.30,714253.89,540310.41
+Central America and the Caribbean,Dominica,Meat,Online,M,6/12/2010,986117637,7/30/2010,2977,421.89,364.69,1255966.53,1085682.13,170284.40
+Middle East and North Africa,Qatar,Cereal,Online,L,6/18/2013,425808465,7/18/2013,5042,205.70,117.11,1037139.40,590468.62,446670.78
+Central America and the Caribbean,Saint Lucia,Beverages,Online,L,6/12/2015,473661220,7/3/2015,5736,47.45,31.79,272173.20,182347.44,89825.76
+Europe,Bosnia and Herzegovina,Baby Food,Online,C,4/4/2015,184412229,4/7/2015,531,255.28,159.42,135553.68,84652.02,50901.66
+Asia,South Korea,Vegetables,Offline,H,8/12/2016,483110320,9/30/2016,1934,154.06,90.93,297952.04,175858.62,122093.42
+Central America and the Caribbean,Trinidad and Tobago,Household,Online,H,9/22/2016,115116822,11/1/2016,4481,668.27,502.54,2994517.87,2251881.74,742636.13
+Middle East and North Africa,Somalia,Baby Food,Online,M,1/29/2010,596105563,3/20/2010,9738,255.28,159.42,2485916.64,1552431.96,933484.68
+Sub-Saharan Africa,Nigeria,Snacks,Online,C,12/10/2014,362062871,12/23/2014,1304,152.58,97.44,198964.32,127061.76,71902.56
+Sub-Saharan Africa,South Africa,Beverages,Online,H,7/28/2016,619287574,8/2/2016,9810,47.45,31.79,465484.50,311859.90,153624.60
+Central America and the Caribbean,Saint Vincent and the Grenadines,Clothes,Offline,H,6/10/2016,394391000,6/23/2016,7916,109.28,35.84,865060.48,283709.44,581351.04
+Sub-Saharan Africa,Sudan,Beverages,Online,M,4/16/2013,584296977,4/28/2013,5315,47.45,31.79,252196.75,168963.85,83232.90
+Middle East and North Africa,Algeria,Clothes,Offline,M,7/5/2014,806241834,8/15/2014,3730,109.28,35.84,407614.40,133683.20,273931.20
+Europe,Netherlands,Meat,Offline,M,3/8/2017,747774398,4/3/2017,1916,421.89,364.69,808341.24,698746.04,109595.20
+Central America and the Caribbean,Panama,Meat,Online,H,11/24/2011,616755998,12/3/2011,660,421.89,364.69,278447.40,240695.40,37752.00
+Australia and Oceania,Solomon Islands,Baby Food,Offline,C,10/20/2016,691360461,11/7/2016,7779,255.28,159.42,1985823.12,1240128.18,745694.94
+Central America and the Caribbean,Saint Vincent and the Grenadines,Beverages,Online,C,4/1/2013,870074117,5/16/2013,3121,47.45,31.79,148091.45,99216.59,48874.86
+Middle East and North Africa,Iran,Office Supplies,Online,H,3/1/2010,221695792,3/20/2010,3566,651.21,524.96,2322214.86,1872007.36,450207.50
+Australia and Oceania,Vanuatu,Fruits,Online,M,7/13/2017,135336816,8/17/2017,8026,9.33,6.92,74882.58,55539.92,19342.66
+Australia and Oceania,Federated States of Micronesia,Office Supplies,Online,L,4/29/2012,270421016,5/23/2012,2443,651.21,524.96,1590906.03,1282477.28,308428.75
+Sub-Saharan Africa,Equatorial Guinea,Household,Online,H,6/16/2010,806684720,7/18/2010,4790,668.27,502.54,3201013.30,2407166.60,793846.70
+Europe,Russia,Household,Online,M,7/10/2017,194176757,8/20/2017,72,668.27,502.54,48115.44,36182.88,11932.56
+Middle East and North Africa,Azerbaijan,Baby Food,Offline,H,6/28/2017,103258454,8/15/2017,5326,255.28,159.42,1359621.28,849070.92,510550.36
+Middle East and North Africa,Iraq,Office Supplies,Online,H,4/21/2014,474603641,5/30/2014,4619,651.21,524.96,3007938.99,2424790.24,583148.75
+Sub-Saharan Africa,Mauritius ,Cereal,Online,H,12/26/2012,869198644,1/5/2013,4049,205.70,117.11,832879.30,474178.39,358700.91
+Sub-Saharan Africa,Eritrea,Household,Online,H,11/1/2015,918342292,12/21/2015,6747,668.27,502.54,4508817.69,3390637.38,1118180.31
+Europe,Ukraine,Cosmetics,Online,H,1/22/2011,773645913,1/28/2011,7873,437.20,263.33,3442075.60,2073197.09,1368878.51
+Asia,Myanmar,Cosmetics,Online,C,6/13/2014,657033336,7/2/2014,9620,437.20,263.33,4205864.00,2533234.60,1672629.40
+Europe,Bosnia and Herzegovina,Meat,Online,H,7/24/2012,410740888,9/1/2012,6211,421.89,364.69,2620358.79,2265089.59,355269.20
+Europe,Latvia,Meat,Offline,M,12/15/2011,847317397,12/18/2011,8902,421.89,364.69,3755664.78,3246470.38,509194.40
+Europe,Serbia,Beverages,Online,L,9/3/2012,599624192,9/21/2012,978,47.45,31.79,46406.10,31090.62,15315.48
+Asia,Mongolia,Beverages,Offline,H,1/19/2012,170835101,2/12/2012,2758,47.45,31.79,130867.10,87676.82,43190.28
+Central America and the Caribbean,Grenada,Cereal,Online,H,1/17/2016,584436452,2/9/2016,6588,205.70,117.11,1355151.60,771520.68,583630.92
+Sub-Saharan Africa,Namibia,Office Supplies,Online,H,10/2/2012,234227073,10/12/2012,1851,651.21,524.96,1205389.71,971700.96,233688.75
+Europe,Portugal,Office Supplies,Online,M,1/21/2014,734318292,3/4/2014,9956,651.21,524.96,6483446.76,5226501.76,1256945.00
+Central America and the Caribbean,Barbados,Snacks,Online,H,12/21/2013,169133937,12/31/2013,9345,152.58,97.44,1425860.10,910576.80,515283.30
+Asia,Sri Lanka,Cereal,Online,C,2/24/2015,743410336,3/20/2015,494,205.70,117.11,101615.80,57852.34,43763.46
+Europe,Poland,Household,Offline,L,7/7/2017,232196319,8/4/2017,905,668.27,502.54,604784.35,454798.70,149985.65
+Sub-Saharan Africa,Senegal,Beverages,Offline,L,6/30/2014,530853211,8/2/2014,117,47.45,31.79,5551.65,3719.43,1832.22
+Australia and Oceania,Kiribati,Fruits,Online,L,12/7/2011,905054843,1/12/2012,4695,9.33,6.92,43804.35,32489.40,11314.95
+Middle East and North Africa,Somalia,Household,Offline,C,9/27/2016,240787541,11/13/2016,3239,668.27,502.54,2164526.53,1627727.06,536799.47
+Sub-Saharan Africa,Burundi,Meat,Online,L,5/22/2010,194350135,6/5/2010,1379,421.89,364.69,581786.31,502907.51,78878.80
+Asia,Malaysia,Household,Online,L,4/12/2013,242353951,4/13/2013,6775,668.27,502.54,4527529.25,3404708.50,1122820.75
+Central America and the Caribbean,Haiti,Vegetables,Offline,C,10/17/2012,831722819,10/26/2012,4120,154.06,90.93,634727.20,374631.60,260095.60
+Europe,Liechtenstein,Cosmetics,Online,L,7/15/2012,229693067,7/15/2012,138,437.20,263.33,60333.60,36339.54,23994.06
+Sub-Saharan Africa,Zambia,Cereal,Offline,H,5/19/2013,373813521,6/15/2013,8583,205.70,117.11,1765523.10,1005155.13,760367.97
+Europe,United Kingdom,Beverages,Online,C,4/8/2017,121945512,4/12/2017,5242,47.45,31.79,248732.90,166643.18,82089.72
+Australia and Oceania,Vanuatu,Fruits,Offline,L,11/6/2015,202262866,12/14/2015,2932,9.33,6.92,27355.56,20289.44,7066.12
+Australia and Oceania,Tuvalu,Personal Care,Offline,M,12/21/2016,963251912,2/1/2017,6501,81.73,56.67,531326.73,368411.67,162915.06
+Central America and the Caribbean,Antigua and Barbuda ,Household,Online,M,8/21/2010,123711478,9/13/2010,7830,668.27,502.54,5232554.10,3934888.20,1297665.90
+Central America and the Caribbean,Haiti,Clothes,Offline,L,8/12/2010,422752892,8/12/2010,830,109.28,35.84,90702.40,29747.20,60955.20
+Europe,Slovenia,Fruits,Online,H,10/22/2012,169799983,11/20/2012,6443,9.33,6.92,60113.19,44585.56,15527.63
+Europe,Malta,Vegetables,Online,M,3/11/2014,894589078,4/10/2014,7643,154.06,90.93,1177480.58,694977.99,482502.59
+Asia,Bhutan,Office Supplies,Offline,M,8/3/2016,597169005,8/14/2016,4434,651.21,524.96,2887465.14,2327672.64,559792.50
+Sub-Saharan Africa,Eritrea,Office Supplies,Offline,H,4/26/2015,497901093,6/11/2015,8853,651.21,524.96,5765162.13,4647470.88,1117691.25
+Europe,Ukraine,Personal Care,Online,M,7/16/2010,987459170,8/27/2010,9967,81.73,56.67,814602.91,564829.89,249773.02
+Asia,Singapore,Personal Care,Offline,M,1/22/2011,276829564,2/13/2011,8875,81.73,56.67,725353.75,502946.25,222407.50
+Sub-Saharan Africa,Cameroon,Household,Offline,H,5/22/2015,247311103,7/11/2015,3706,668.27,502.54,2476608.62,1862413.24,614195.38
+Europe,Cyprus,Fruits,Offline,M,7/12/2015,600515115,8/30/2015,4622,9.33,6.92,43123.26,31984.24,11139.02
+Europe,Poland,Office Supplies,Offline,M,11/27/2015,208365428,12/29/2015,8815,651.21,524.96,5740416.15,4627522.40,1112893.75
+Europe,Monaco,Personal Care,Online,L,6/8/2014,263098371,7/4/2014,5509,81.73,56.67,450250.57,312195.03,138055.54
+Australia and Oceania,Vanuatu,Office Supplies,Online,L,11/21/2013,227262771,1/6/2014,959,651.21,524.96,624510.39,503436.64,121073.75
+Sub-Saharan Africa,Gabon,Office Supplies,Offline,H,7/14/2010,983719956,8/1/2010,3450,651.21,524.96,2246674.50,1811112.00,435562.50
+Sub-Saharan Africa,Djibouti,Baby Food,Offline,H,1/17/2013,785643756,1/26/2013,8301,255.28,159.42,2119079.28,1323345.42,795733.86
+Sub-Saharan Africa,Namibia,Office Supplies,Online,C,1/15/2016,206520497,3/5/2016,2859,651.21,524.96,1861809.39,1500860.64,360948.75
+Europe,Estonia,Cosmetics,Online,C,5/23/2011,790149009,5/29/2011,1505,437.20,263.33,657986.00,396311.65,261674.35
+Europe,Norway,Cereal,Online,M,10/8/2014,100640618,10/18/2014,650,205.70,117.11,133705.00,76121.50,57583.50
+Sub-Saharan Africa,Ethiopia,Personal Care,Online,L,5/27/2016,272419154,6/27/2016,3736,81.73,56.67,305343.28,211719.12,93624.16
+Sub-Saharan Africa,Burundi,Meat,Offline,M,2/27/2015,360220944,2/27/2015,6237,421.89,364.69,2631327.93,2274571.53,356756.40
+Asia,Thailand,Beverages,Offline,C,10/1/2014,389094817,11/11/2014,658,47.45,31.79,31222.10,20917.82,10304.28
+Sub-Saharan Africa,Mauritius ,Meat,Offline,L,5/19/2012,904402101,6/23/2012,1534,421.89,364.69,647179.26,559434.46,87744.80
+Sub-Saharan Africa,Uganda,Vegetables,Online,H,2/13/2010,721816623,2/17/2010,434,154.06,90.93,66862.04,39463.62,27398.42
+Europe,Luxembourg,Snacks,Online,H,2/1/2011,977324712,3/10/2011,955,152.58,97.44,145713.90,93055.20,52658.70
+Sub-Saharan Africa,The Gambia,Beverages,Online,C,9/7/2015,177225196,9/12/2015,3729,47.45,31.79,176941.05,118544.91,58396.14
+Middle East and North Africa,United Arab Emirates,Beverages,Online,M,3/27/2010,948129403,5/14/2010,1415,47.45,31.79,67141.75,44982.85,22158.90
+Central America and the Caribbean,Haiti,Meat,Offline,M,3/15/2016,586961162,4/22/2016,3706,421.89,364.69,1563524.34,1351541.14,211983.20
+Europe,Luxembourg,Snacks,Online,H,9/7/2010,510956799,9/23/2010,2326,152.58,97.44,354901.08,226645.44,128255.64
+Central America and the Caribbean,Saint Lucia,Meat,Online,L,6/26/2013,407665145,7/5/2013,6030,421.89,364.69,2543996.70,2199080.70,344916.00
+Middle East and North Africa,Iraq,Meat,Online,C,3/9/2015,484947526,3/16/2015,5604,421.89,364.69,2364271.56,2043722.76,320548.80
+Europe,Armenia,Fruits,Online,M,3/23/2011,120977771,5/2/2011,8866,9.33,6.92,82719.78,61352.72,21367.06
+Asia,Singapore,Personal Care,Offline,M,3/29/2013,114242208,5/15/2013,5663,81.73,56.67,462836.99,320922.21,141914.78
+Middle East and North Africa,Jordan,Clothes,Online,M,1/5/2015,433539664,1/15/2015,2876,109.28,35.84,314289.28,103075.84,211213.44
+Australia and Oceania,Tonga,Meat,Online,M,5/21/2011,667981469,6/12/2011,9416,421.89,364.69,3972516.24,3433921.04,538595.20
+Europe,Bulgaria,Snacks,Offline,L,3/11/2017,476991450,3/27/2017,1225,152.58,97.44,186910.50,119364.00,67546.50
+Sub-Saharan Africa,Sudan,Office Supplies,Online,C,6/23/2010,940305936,7/29/2010,6277,651.21,524.96,4087645.17,3295173.92,792471.25
+Sub-Saharan Africa,Mali,Baby Food,Online,H,12/28/2011,507973754,1/12/2012,9577,255.28,159.42,2444816.56,1526765.34,918051.22
+Asia,Myanmar,Cosmetics,Online,L,4/6/2013,850356233,5/26/2013,8161,437.20,263.33,3567989.20,2149036.13,1418953.07
+Asia,Sri Lanka,Meat,Offline,L,9/5/2010,108127200,10/1/2010,6096,421.89,364.69,2571841.44,2223150.24,348691.20
+Middle East and North Africa,Azerbaijan,Office Supplies,Online,C,10/27/2016,542272984,12/8/2016,9481,651.21,524.96,6174122.01,4977145.76,1196976.25
+Sub-Saharan Africa,Tanzania,Office Supplies,Offline,C,4/11/2011,884092414,5/13/2011,1447,651.21,524.96,942300.87,759617.12,182683.75
+Sub-Saharan Africa,Swaziland,Household,Offline,C,7/17/2012,385196816,9/3/2012,7153,668.27,502.54,4780135.31,3594668.62,1185466.69
+Asia,Myanmar,Meat,Online,L,9/9/2013,167510020,10/6/2013,8792,421.89,364.69,3709256.88,3206354.48,502902.40
+Europe,Denmark,Beverages,Online,H,6/5/2016,973268353,6/26/2016,589,47.45,31.79,27948.05,18724.31,9223.74
+Sub-Saharan Africa,Seychelles ,Fruits,Offline,M,2/28/2012,915020644,3/18/2012,3797,9.33,6.92,35426.01,26275.24,9150.77
+Sub-Saharan Africa,Madagascar,Cosmetics,Offline,C,1/31/2016,425628221,2/24/2016,1704,437.20,263.33,744988.80,448714.32,296274.48
+Central America and the Caribbean,Saint Lucia,Beverages,Online,L,5/18/2010,908264911,6/14/2010,4626,47.45,31.79,219503.70,147060.54,72443.16
+Sub-Saharan Africa,Mauritius ,Cereal,Online,C,2/25/2016,686417043,3/29/2016,4912,205.70,117.11,1010398.40,575244.32,435154.08
+Asia,Taiwan,Household,Online,H,12/7/2013,853883445,1/10/2014,1941,668.27,502.54,1297112.07,975430.14,321681.93
+Middle East and North Africa,Morocco,Cereal,Online,C,8/8/2015,324775445,9/14/2015,7126,205.70,117.11,1465818.20,834525.86,631292.34
+Middle East and North Africa,Jordan,Cereal,Online,C,3/3/2015,783516871,4/6/2015,8909,205.70,117.11,1832581.30,1043332.99,789248.31
+Asia,China,Cosmetics,Offline,H,4/15/2015,834844052,5/20/2015,7762,437.20,263.33,3393546.40,2043967.46,1349578.94
+Asia,South Korea,Snacks,Offline,H,11/20/2015,953805816,12/25/2015,1191,152.58,97.44,181722.78,116051.04,65671.74
+North America,United States of America,Office Supplies,Online,L,5/22/2010,335763490,7/4/2010,8733,651.21,524.96,5687016.93,4584475.68,1102541.25
+Asia,Uzbekistan,Cosmetics,Online,H,3/18/2012,946390902,3/23/2012,6954,437.20,263.33,3040288.80,1831196.82,1209091.98
+Europe,Finland,Vegetables,Offline,L,2/14/2013,771674382,3/21/2013,4453,154.06,90.93,686029.18,404911.29,281117.89
+Asia,Philippines,Cereal,Online,C,4/23/2017,567912757,5/22/2017,6860,205.70,117.11,1411102.00,803374.60,607727.40
+Middle East and North Africa,Libya,Office Supplies,Offline,L,11/18/2014,711717355,11/18/2014,1836,651.21,524.96,1195621.56,963826.56,231795.00
+Sub-Saharan Africa,South Sudan,Office Supplies,Online,L,12/11/2015,750012004,1/30/2016,4074,651.21,524.96,2653029.54,2138687.04,514342.50
+Middle East and North Africa,Kuwait,Snacks,Online,C,7/9/2016,750033032,8/18/2016,297,152.58,97.44,45316.26,28939.68,16376.58
+Central America and the Caribbean,Saint Lucia,Household,Offline,H,6/28/2017,849329268,7/22/2017,4259,668.27,502.54,2846161.93,2140317.86,705844.07
+Central America and the Caribbean,Grenada,Meat,Online,M,3/22/2013,805762040,4/8/2013,1748,421.89,364.69,737463.72,637478.12,99985.60
+Sub-Saharan Africa,Namibia,Cereal,Online,H,7/4/2010,447505176,7/27/2010,5581,205.70,117.11,1148011.70,653590.91,494420.79
+Australia and Oceania,Solomon Islands,Beverages,Offline,L,3/14/2017,123045003,3/22/2017,606,47.45,31.79,28754.70,19264.74,9489.96
+Asia,Philippines,Household,Offline,H,9/21/2015,251180350,10/20/2015,8702,668.27,502.54,5815285.54,4373103.08,1442182.46
+Asia,Turkmenistan,Household,Online,M,4/10/2012,871022546,4/11/2012,3782,668.27,502.54,2527397.14,1900606.28,626790.86
+Europe,Kosovo,Fruits,Online,L,5/2/2010,291995418,6/6/2010,6788,9.33,6.92,63332.04,46972.96,16359.08
+Asia,Singapore,Clothes,Online,C,6/13/2014,943835294,8/1/2014,692,109.28,35.84,75621.76,24801.28,50820.48
+Sub-Saharan Africa,South Africa,Office Supplies,Offline,L,4/18/2011,826591002,4/18/2011,5501,651.21,524.96,3582306.21,2887804.96,694501.25
+Middle East and North Africa,Lebanon,Cosmetics,Online,M,5/1/2011,260623872,5/12/2011,3250,437.20,263.33,1420900.00,855822.50,565077.50
+Australia and Oceania,Samoa ,Vegetables,Online,L,9/21/2014,536607730,11/3/2014,3007,154.06,90.93,463258.42,273426.51,189831.91
+Australia and Oceania,Samoa ,Personal Care,Offline,L,2/17/2015,765528905,3/6/2015,5870,81.73,56.67,479755.10,332652.90,147102.20
+Europe,Hungary,Baby Food,Online,M,1/25/2011,128686225,3/13/2011,9968,255.28,159.42,2544631.04,1589098.56,955532.48
+Middle East and North Africa,Pakistan,Vegetables,Offline,L,4/1/2017,127691018,4/5/2017,5465,154.06,90.93,841937.90,496932.45,345005.45
+Australia and Oceania,Tonga,Vegetables,Offline,C,5/21/2015,534467113,5/25/2015,9550,154.06,90.93,1471273.00,868381.50,602891.50
+Australia and Oceania,Vanuatu,Personal Care,Online,H,12/18/2010,741250836,1/10/2011,1450,81.73,56.67,118508.50,82171.50,36337.00
+Australia and Oceania,Vanuatu,Snacks,Online,M,5/2/2014,210591018,5/27/2014,7417,152.58,97.44,1131685.86,722712.48,408973.38
+Central America and the Caribbean,Grenada,Vegetables,Online,C,3/6/2014,725348985,4/13/2014,5738,154.06,90.93,883996.28,521756.34,362239.94
+Sub-Saharan Africa,Mozambique,Household,Offline,H,8/11/2011,538698565,9/7/2011,1731,668.27,502.54,1156775.37,869896.74,286878.63
+Central America and the Caribbean,Cuba,Cereal,Offline,H,5/20/2016,224126088,6/12/2016,2745,205.70,117.11,564646.50,321466.95,243179.55
+Middle East and North Africa,Algeria,Beverages,Online,M,10/22/2012,425430381,12/5/2012,3159,47.45,31.79,149894.55,100424.61,49469.94
+Sub-Saharan Africa,Equatorial Guinea,Vegetables,Offline,M,7/20/2016,506722772,8/8/2016,9383,154.06,90.93,1445544.98,853196.19,592348.79
+Sub-Saharan Africa,Uganda,Office Supplies,Offline,C,4/7/2010,802427089,4/26/2010,4862,651.21,524.96,3166183.02,2552355.52,613827.50
+Asia,Thailand,Cosmetics,Offline,H,7/14/2015,367279660,8/9/2015,5068,437.20,263.33,2215729.60,1334556.44,881173.16
+Middle East and North Africa,Turkey,Personal Care,Offline,H,5/10/2013,126329314,5/21/2013,2506,81.73,56.67,204815.38,142015.02,62800.36
+Asia,Kazakhstan,Personal Care,Offline,H,2/1/2016,624937379,2/8/2016,1713,81.73,56.67,140003.49,97075.71,42927.78
+Central America and the Caribbean,Nicaragua,Snacks,Offline,H,8/20/2010,678777682,9/28/2010,4255,152.58,97.44,649227.90,414607.20,234620.70
+Asia,Kazakhstan,Cereal,Online,L,4/12/2015,523836553,5/22/2015,3732,205.70,117.11,767672.40,437054.52,330617.88
+Sub-Saharan Africa,Chad,Cereal,Offline,C,4/8/2015,466412818,5/12/2015,772,205.70,117.11,158800.40,90408.92,68391.48
+Australia and Oceania,East Timor,Fruits,Online,H,1/27/2012,433117806,2/6/2012,8039,9.33,6.92,75003.87,55629.88,19373.99
+Europe,Lithuania,Cosmetics,Offline,L,1/6/2012,420875346,2/18/2012,5223,437.20,263.33,2283495.60,1375372.59,908123.01
+Sub-Saharan Africa,Eritrea,Cosmetics,Online,C,11/26/2014,946921765,12/16/2014,4048,437.20,263.33,1769785.60,1065959.84,703825.76
+Sub-Saharan Africa,Zambia,Household,Offline,H,4/4/2010,798805892,4/25/2010,3270,668.27,502.54,2185242.90,1643305.80,541937.10
+Sub-Saharan Africa,Liberia,Household,Offline,M,5/17/2011,184389054,6/20/2011,3674,668.27,502.54,2455223.98,1846331.96,608892.02
+Central America and the Caribbean,Saint Kitts and Nevis ,Household,Offline,M,9/9/2013,281845080,10/18/2013,3077,668.27,502.54,2056266.79,1546315.58,509951.21
+Central America and the Caribbean,Jamaica,Meat,Online,H,9/14/2013,989660298,10/11/2013,1330,421.89,364.69,561113.70,485037.70,76076.00
+Europe,Albania,Vegetables,Online,C,10/5/2012,476633536,11/3/2012,5310,154.06,90.93,818058.60,482838.30,335220.30
+Asia,Japan,Baby Food,Offline,C,4/13/2013,131876122,5/22/2013,3930,255.28,159.42,1003250.40,626520.60,376729.80
+Sub-Saharan Africa,Equatorial Guinea,Meat,Offline,L,12/15/2014,514811885,1/21/2015,3132,421.89,364.69,1321359.48,1142209.08,179150.40
+Asia,Myanmar,Office Supplies,Online,C,12/20/2010,905177152,1/7/2011,889,651.21,524.96,578925.69,466689.44,112236.25
+Middle East and North Africa,Libya,Personal Care,Offline,H,7/2/2014,653020751,7/19/2014,2207,81.73,56.67,180378.11,125070.69,55307.42
+Asia,Mongolia,Meat,Online,L,1/31/2017,528704011,3/2/2017,4121,421.89,364.69,1738608.69,1502887.49,235721.20
+Asia,Singapore,Snacks,Offline,M,2/5/2015,472900760,3/19/2015,699,152.58,97.44,106653.42,68110.56,38542.86
+Central America and the Caribbean,The Bahamas,Baby Food,Offline,L,7/23/2013,946597325,7/23/2013,8039,255.28,159.42,2052195.92,1281577.38,770618.54
+Asia,Sri Lanka,Office Supplies,Offline,L,10/6/2014,681092536,11/18/2014,9272,651.21,524.96,6038019.12,4867429.12,1170590.00
+Europe,Cyprus,Vegetables,Offline,C,7/2/2014,727997720,7/19/2014,9558,154.06,90.93,1472505.48,869108.94,603396.54
+Middle East and North Africa,Afghanistan,Baby Food,Online,C,5/29/2013,409236705,6/11/2013,1090,255.28,159.42,278255.20,173767.80,104487.40
+Europe,Moldova ,Personal Care,Online,M,3/11/2013,467045819,4/12/2013,8092,81.73,56.67,661359.16,458573.64,202785.52
+Europe,Kosovo,Cosmetics,Offline,C,11/1/2012,813973891,11/13/2012,1818,437.20,263.33,794829.60,478733.94,316095.66
+Middle East and North Africa,Egypt,Household,Online,M,5/22/2012,982882249,5/29/2012,5554,668.27,502.54,3711571.58,2791107.16,920464.42
+Europe,Albania,Cosmetics,Offline,L,9/30/2016,576944720,10/9/2016,9619,437.20,263.33,4205426.80,2532971.27,1672455.53
+Asia,Singapore,Vegetables,Offline,C,9/25/2016,619647634,10/16/2016,6360,154.06,90.93,979821.60,578314.80,401506.80
+Europe,Portugal,Baby Food,Online,L,8/3/2015,404789817,9/8/2015,5157,255.28,159.42,1316478.96,822128.94,494350.02
+Asia,India,Snacks,Offline,M,1/16/2010,646482598,1/25/2010,7422,152.58,97.44,1132448.76,723199.68,409249.08
+Sub-Saharan Africa,Sudan,Meat,Online,C,11/1/2016,329149806,12/8/2016,1597,421.89,364.69,673758.33,582409.93,91348.40
+Australia and Oceania,Vanuatu,Office Supplies,Offline,M,11/25/2015,757527768,12/19/2015,8155,651.21,524.96,5310617.55,4281048.80,1029568.75
+Sub-Saharan Africa,Democratic Republic of the Congo,Cosmetics,Online,C,9/24/2014,606665313,10/13/2014,4602,437.20,263.33,2011994.40,1211844.66,800149.74
+Europe,Bosnia and Herzegovina,Baby Food,Online,C,4/30/2014,871923768,5/30/2014,474,255.28,159.42,121002.72,75565.08,45437.64
+Europe,Kosovo,Vegetables,Offline,C,12/18/2012,818976962,12/21/2012,2337,154.06,90.93,360038.22,212503.41,147534.81
+Europe,Switzerland,Cosmetics,Online,C,7/20/2017,233811223,7/20/2017,8792,437.20,263.33,3843862.40,2315197.36,1528665.04
+Central America and the Caribbean,Cuba,Beverages,Offline,L,2/16/2017,772725379,3/9/2017,5466,47.45,31.79,259361.70,173764.14,85597.56
+Europe,Lithuania,Office Supplies,Offline,C,12/15/2016,112330758,1/11/2017,22,651.21,524.96,14326.62,11549.12,2777.50
+Middle East and North Africa,Lebanon,Clothes,Online,M,12/28/2011,499551188,1/14/2012,7153,109.28,35.84,781679.84,256363.52,525316.32
+Asia,North Korea,Clothes,Online,M,5/28/2013,201622998,6/5/2013,3581,109.28,35.84,391331.68,128343.04,262988.64
+Europe,Montenegro,Office Supplies,Offline,H,7/2/2014,256095016,8/21/2014,3061,651.21,524.96,1993353.81,1606902.56,386451.25
+Sub-Saharan Africa,Eritrea,Fruits,Offline,M,3/21/2017,420828568,3/29/2017,1380,9.33,6.92,12875.40,9549.60,3325.80
+Sub-Saharan Africa,Democratic Republic of the Congo,Cereal,Online,L,3/17/2013,523997485,4/23/2013,1355,205.70,117.11,278723.50,158684.05,120039.45
+Asia,India,Office Supplies,Online,C,4/30/2010,914088094,5/3/2010,7835,651.21,524.96,5102230.35,4113061.60,989168.75
+Sub-Saharan Africa,Republic of the Congo,Snacks,Online,M,9/16/2013,209899222,9/28/2013,2699,152.58,97.44,411813.42,262990.56,148822.86
+Sub-Saharan Africa,Comoros,Clothes,Offline,M,5/30/2014,250542199,7/1/2014,9859,109.28,35.84,1077391.52,353346.56,724044.96
+Europe,France,Meat,Online,L,11/28/2015,245440852,12/17/2015,257,421.89,364.69,108425.73,93725.33,14700.40
+Sub-Saharan Africa,Rwanda,Vegetables,Online,L,3/7/2015,824331510,4/21/2015,6867,154.06,90.93,1057930.02,624416.31,433513.71
+Sub-Saharan Africa,Malawi,Meat,Online,M,1/15/2014,887263000,1/31/2014,9693,421.89,364.69,4089379.77,3534940.17,554439.60
+Sub-Saharan Africa,Cote d'Ivoire,Cereal,Offline,H,5/22/2015,754596650,5/27/2015,772,205.70,117.11,158800.40,90408.92,68391.48
+Europe,Spain,Fruits,Online,H,10/22/2011,817006289,11/14/2011,9172,9.33,6.92,85574.76,63470.24,22104.52
+Sub-Saharan Africa,Uganda,Clothes,Offline,H,2/8/2012,185478246,3/20/2012,5989,109.28,35.84,654477.92,214645.76,439832.16
+Asia,Taiwan,Personal Care,Offline,C,10/16/2014,741311347,11/5/2014,9356,81.73,56.67,764665.88,530204.52,234461.36
+Middle East and North Africa,Israel,Personal Care,Offline,M,11/14/2011,386116921,12/22/2011,9432,81.73,56.67,770877.36,534511.44,236365.92
+Central America and the Caribbean,Costa Rica,Meat,Offline,L,5/3/2015,691818797,5/7/2015,3411,421.89,364.69,1439066.79,1243957.59,195109.20
+Central America and the Caribbean,Honduras,Snacks,Online,C,7/16/2015,150653302,9/2/2015,515,152.58,97.44,78578.70,50181.60,28397.10
+Asia,South Korea,Vegetables,Offline,M,4/1/2015,925169265,5/3/2015,7000,154.06,90.93,1078420.00,636510.00,441910.00
+Europe,Sweden,Vegetables,Online,H,9/20/2010,298228013,10/25/2010,1151,154.06,90.93,177323.06,104660.43,72662.63
+Australia and Oceania,Tonga,Office Supplies,Online,L,8/24/2010,123003375,9/16/2010,8287,651.21,524.96,5396577.27,4350343.52,1046233.75
+Europe,Latvia,Snacks,Online,C,3/15/2017,972981679,4/9/2017,5755,152.58,97.44,878097.90,560767.20,317330.70
+Asia,Indonesia,Beverages,Online,M,9/12/2014,791961753,9/21/2014,7937,47.45,31.79,376610.65,252317.23,124293.42
+Asia,Myanmar,Household,Online,C,3/25/2011,744054925,3/31/2011,1242,668.27,502.54,829991.34,624154.68,205836.66
+Asia,Turkmenistan,Office Supplies,Offline,L,3/3/2012,263685023,4/8/2012,9113,651.21,524.96,5934476.73,4783960.48,1150516.25
+Central America and the Caribbean,Panama,Baby Food,Online,H,5/19/2016,205588376,6/18/2016,7024,255.28,159.42,1793086.72,1119766.08,673320.64
+Europe,Norway,Personal Care,Offline,M,6/8/2012,594813811,6/17/2012,7480,81.73,56.67,611340.40,423891.60,187448.80
+Europe,Estonia,Clothes,Online,H,9/8/2012,176722657,9/16/2012,5016,109.28,35.84,548148.48,179773.44,368375.04
+Europe,Malta,Personal Care,Offline,M,8/16/2011,466988742,8/16/2011,1201,81.73,56.67,98157.73,68060.67,30097.06
+Sub-Saharan Africa,Eritrea,Personal Care,Offline,L,5/14/2012,801598393,6/2/2012,9633,81.73,56.67,787305.09,545902.11,241402.98
+Sub-Saharan Africa,Republic of the Congo,Meat,Offline,M,4/28/2015,586850440,6/8/2015,941,421.89,364.69,396998.49,343173.29,53825.20
+Central America and the Caribbean,Trinidad and Tobago,Snacks,Offline,H,5/21/2014,649356210,5/21/2014,7787,152.58,97.44,1188140.46,758765.28,429375.18
+Middle East and North Africa,Yemen,Cereal,Offline,H,11/15/2015,986039531,12/10/2015,9864,205.70,117.11,2029024.80,1155173.04,873851.76
+Asia,Turkmenistan,Household,Offline,H,1/10/2012,314136731,1/12/2012,8894,668.27,502.54,5943593.38,4469590.76,1474002.62
+Middle East and North Africa,Somalia,Beverages,Offline,H,1/28/2015,121196639,2/7/2015,3634,47.45,31.79,172433.30,115524.86,56908.44
+Europe,Portugal,Cereal,Online,C,8/11/2015,615080583,9/19/2015,4868,205.70,117.11,1001347.60,570091.48,431256.12
+Asia,Kyrgyzstan,Fruits,Offline,L,8/19/2016,273962390,9/5/2016,414,9.33,6.92,3862.62,2864.88,997.74
+Middle East and North Africa,Lebanon,Personal Care,Offline,H,8/22/2014,796328389,9/27/2014,121,81.73,56.67,9889.33,6857.07,3032.26
+Europe,Macedonia,Cosmetics,Online,C,12/26/2010,350977408,1/22/2011,869,437.20,263.33,379926.80,228833.77,151093.03
+Middle East and North Africa,Algeria,Clothes,Offline,M,8/27/2015,327020776,9/29/2015,1570,109.28,35.84,171569.60,56268.80,115300.80
+Middle East and North Africa,Qatar,Vegetables,Online,H,3/11/2013,383882319,4/15/2013,8164,154.06,90.93,1257745.84,742352.52,515393.32
+Europe,Greece,Personal Care,Offline,M,12/8/2011,701298367,1/6/2012,8626,81.73,56.67,705002.98,488835.42,216167.56
+Sub-Saharan Africa,Benin,Fruits,Online,M,6/27/2017,629317748,8/14/2017,7961,9.33,6.92,74276.13,55090.12,19186.01
+Asia,Uzbekistan,Baby Food,Offline,C,10/21/2013,938301789,11/29/2013,3205,255.28,159.42,818172.40,510941.10,307231.30
+Middle East and North Africa,Azerbaijan,Vegetables,Online,L,6/1/2012,668924319,7/7/2012,8426,154.06,90.93,1298109.56,766176.18,531933.38
+Asia,Cambodia,Clothes,Online,C,10/8/2010,282171666,11/15/2010,9721,109.28,35.84,1062310.88,348400.64,713910.24
+Europe,Italy,Personal Care,Online,C,2/25/2011,309342658,3/28/2011,222,81.73,56.67,18144.06,12580.74,5563.32
+Sub-Saharan Africa,Mauritius ,Cosmetics,Online,H,12/5/2016,902048623,12/20/2016,5088,437.20,263.33,2224473.60,1339823.04,884650.56
+Middle East and North Africa,Yemen,Clothes,Online,H,8/6/2013,482213389,9/3/2013,6513,109.28,35.84,711740.64,233425.92,478314.72
+Central America and the Caribbean,Cuba,Vegetables,Offline,C,6/7/2010,692073285,6/28/2010,8719,154.06,90.93,1343249.14,792818.67,550430.47
+Australia and Oceania,Tonga,Fruits,Online,L,12/27/2013,544177138,1/30/2014,2963,9.33,6.92,27644.79,20503.96,7140.83
+Central America and the Caribbean,Guatemala,Vegetables,Online,M,9/28/2016,471386277,10/17/2016,2530,154.06,90.93,389771.80,230052.90,159718.90
+Australia and Oceania,New Zealand,Personal Care,Online,L,1/8/2016,976874530,1/27/2016,7737,81.73,56.67,632345.01,438455.79,193889.22
+Europe,Norway,Household,Offline,M,3/20/2010,384128224,4/26/2010,933,668.27,502.54,623495.91,468869.82,154626.09
+Sub-Saharan Africa,South Africa,Personal Care,Online,H,2/21/2010,686946189,3/8/2010,1498,81.73,56.67,122431.54,84891.66,37539.88
+Sub-Saharan Africa,Zambia,Snacks,Offline,M,7/14/2012,799439752,7/24/2012,843,152.58,97.44,128624.94,82141.92,46483.02
+Central America and the Caribbean,Saint Kitts and Nevis ,Cereal,Online,M,5/29/2011,606032741,6/15/2011,7410,205.70,117.11,1524237.00,867785.10,656451.90
+Asia,Indonesia,Beverages,Offline,H,12/25/2016,511461484,2/5/2017,1674,47.45,31.79,79431.30,53216.46,26214.84
+Europe,Netherlands,Household,Offline,C,1/17/2014,990774810,2/18/2014,1138,668.27,502.54,760491.26,571890.52,188600.74
+Asia,Thailand,Snacks,Offline,M,3/2/2011,339334046,4/16/2011,5340,152.58,97.44,814777.20,520329.60,294447.60
+Sub-Saharan Africa,Republic of the Congo,Personal Care,Offline,C,3/10/2014,522813022,4/8/2014,846,81.73,56.67,69143.58,47942.82,21200.76
+Sub-Saharan Africa,Equatorial Guinea,Fruits,Offline,M,11/17/2014,427198064,1/2/2015,6255,9.33,6.92,58359.15,43284.60,15074.55
+Asia,Tajikistan,Beverages,Offline,C,6/3/2017,808788001,7/15/2017,7197,47.45,31.79,341497.65,228792.63,112705.02
+Sub-Saharan Africa,Botswana,Meat,Offline,L,12/7/2011,244194161,1/7/2012,1334,421.89,364.69,562801.26,486496.46,76304.80
+Central America and the Caribbean,Dominican Republic,Fruits,Offline,L,2/1/2016,980340373,2/15/2016,3357,9.33,6.92,31320.81,23230.44,8090.37
+Australia and Oceania,Samoa ,Beverages,Online,M,10/6/2010,384462964,10/10/2010,9990,47.45,31.79,474025.50,317582.10,156443.40
+Europe,Belgium,Vegetables,Offline,C,12/26/2011,394110763,12/29/2011,4988,154.06,90.93,768451.28,453558.84,314892.44
+Australia and Oceania,Federated States of Micronesia,Cosmetics,Online,L,2/12/2014,767145097,3/11/2014,4137,437.20,263.33,1808696.40,1089396.21,719300.19
+Sub-Saharan Africa,Botswana,Fruits,Online,L,5/21/2016,431739795,6/19/2016,254,9.33,6.92,2369.82,1757.68,612.14
+Asia,Vietnam,Cereal,Online,L,7/2/2011,636381185,7/28/2011,8189,205.70,117.11,1684477.30,959013.79,725463.51
+Europe,Kosovo,Fruits,Online,C,3/2/2012,899868094,3/26/2012,9821,9.33,6.92,91629.93,67961.32,23668.61
+Europe,Germany,Baby Food,Offline,L,1/6/2017,361311852,2/15/2017,9061,255.28,159.42,2313092.08,1444504.62,868587.46
+Europe,Hungary,Beverages,Online,L,5/20/2014,930136287,6/21/2014,6852,47.45,31.79,325127.40,217825.08,107302.32
+Central America and the Caribbean,Saint Lucia,Cereal,Online,L,5/19/2016,536077725,6/7/2016,6167,205.70,117.11,1268551.90,722217.37,546334.53
+Sub-Saharan Africa,Madagascar,Snacks,Online,M,4/6/2017,779184997,4/17/2017,7011,152.58,97.44,1069738.38,683151.84,386586.54
+Europe,Bulgaria,Cosmetics,Online,C,5/5/2012,179819428,6/2/2012,1420,437.20,263.33,620824.00,373928.60,246895.40
+Asia,Myanmar,Vegetables,Online,H,12/7/2016,928654849,1/7/2017,8461,154.06,90.93,1303501.66,769358.73,534142.93
+Sub-Saharan Africa,Togo,Baby Food,Offline,H,2/14/2017,336677587,3/28/2017,9234,255.28,159.42,2357255.52,1472084.28,885171.24
+Australia and Oceania,Australia,Vegetables,Online,C,6/2/2011,285186469,6/25/2011,1869,154.06,90.93,287938.14,169948.17,117989.97
+Middle East and North Africa,Morocco,Baby Food,Offline,M,7/15/2014,475792825,9/3/2014,6525,255.28,159.42,1665702.00,1040215.50,625486.50
+Middle East and North Africa,Qatar,Clothes,Offline,L,10/6/2015,680420482,11/8/2015,396,109.28,35.84,43274.88,14192.64,29082.24
+Europe,Bosnia and Herzegovina,Fruits,Online,H,1/5/2013,291305768,1/6/2013,2705,9.33,6.92,25237.65,18718.60,6519.05
+Middle East and North Africa,Iraq,Baby Food,Offline,L,8/19/2016,570997512,9/6/2016,9707,255.28,159.42,2478002.96,1547489.94,930513.02
+Europe,Russia,Personal Care,Online,L,4/24/2015,602357041,5/5/2015,9689,81.73,56.67,791881.97,549075.63,242806.34
+Middle East and North Africa,Lebanon,Meat,Online,M,2/26/2010,438558185,4/14/2010,7967,421.89,364.69,3361197.63,2905485.23,455712.40
+Europe,Albania,Snacks,Online,H,12/2/2010,653087270,12/7/2010,1891,152.58,97.44,288528.78,184259.04,104269.74
+Australia and Oceania,Samoa ,Cereal,Offline,C,1/23/2017,989743125,1/25/2017,5840,205.70,117.11,1201288.00,683922.40,517365.60
+Europe,Slovenia,Fruits,Offline,M,12/15/2013,812637078,1/5/2014,6225,9.33,6.92,58079.25,43077.00,15002.25
+Europe,Macedonia,Personal Care,Online,L,7/19/2014,456192958,8/18/2014,6489,81.73,56.67,530345.97,367731.63,162614.34
+Middle East and North Africa,Lebanon,Cereal,Online,L,2/17/2010,775147092,2/28/2010,2105,205.70,117.11,432998.50,246516.55,186481.95
+Sub-Saharan Africa,Comoros,Household,Offline,M,12/28/2011,894548308,2/2/2012,5578,668.27,502.54,3727610.06,2803168.12,924441.94
+Sub-Saharan Africa,Cameroon,Cosmetics,Offline,H,5/3/2017,459757936,6/10/2017,1445,437.20,263.33,631754.00,380511.85,251242.15
+Europe,Albania,Meat,Offline,H,1/31/2013,986449801,3/13/2013,1272,421.89,364.69,536644.08,463885.68,72758.40
+Europe,Sweden,Cosmetics,Online,L,7/3/2017,910610234,7/31/2017,8659,437.20,263.33,3785714.80,2280174.47,1505540.33
+Sub-Saharan Africa,Liberia,Cereal,Offline,H,11/8/2015,538538062,12/3/2015,4235,205.70,117.11,871139.50,495960.85,375178.65
+Europe,Norway,Meat,Online,M,3/3/2017,696844613,3/22/2017,661,421.89,364.69,278869.29,241060.09,37809.20
+Middle East and North Africa,Israel,Fruits,Online,H,8/18/2012,482453715,9/22/2012,7630,9.33,6.92,71187.90,52799.60,18388.30
+Central America and the Caribbean,Cuba,Office Supplies,Offline,L,3/11/2017,412601697,3/23/2017,6866,651.21,524.96,4471207.86,3604375.36,866832.50
+Central America and the Caribbean,Nicaragua,Meat,Offline,M,10/17/2012,174837386,11/14/2012,7123,421.89,364.69,3005122.47,2597686.87,407435.60
+Middle East and North Africa,Kuwait,Personal Care,Offline,L,9/29/2012,877022111,10/21/2012,9187,81.73,56.67,750853.51,520627.29,230226.22
+North America,United States of America,Cereal,Offline,M,6/22/2012,997329699,7/15/2012,876,205.70,117.11,180193.20,102588.36,77604.84
+Sub-Saharan Africa,Rwanda,Snacks,Offline,M,1/19/2016,434246480,2/11/2016,2038,152.58,97.44,310958.04,198582.72,112375.32
+Central America and the Caribbean,Jamaica,Cereal,Online,C,4/3/2017,956571280,4/5/2017,9554,205.70,117.11,1965257.80,1118868.94,846388.86
+Europe,Czech Republic,Personal Care,Online,M,12/4/2010,353415429,12/8/2010,2334,81.73,56.67,190757.82,132267.78,58490.04
+Sub-Saharan Africa,Kenya,Vegetables,Online,H,11/27/2011,984202754,12/8/2011,6321,154.06,90.93,973813.26,574768.53,399044.73
+Sub-Saharan Africa,Central African Republic,Beverages,Offline,H,5/16/2013,328669583,6/2/2013,9488,47.45,31.79,450205.60,301623.52,148582.08
+Middle East and North Africa,Jordan,Cosmetics,Offline,C,5/16/2013,436864745,5/22/2013,6841,437.20,263.33,2990885.20,1801440.53,1189444.67
+Middle East and North Africa,Tunisia ,Household,Offline,M,1/1/2011,279149568,1/26/2011,5415,668.27,502.54,3618682.05,2721254.10,897427.95
+Europe,Andorra,Cereal,Online,H,3/19/2010,696197879,3/26/2010,9278,205.70,117.11,1908484.60,1086546.58,821938.02
+North America,United States of America,Household,Offline,M,1/9/2016,348996007,1/12/2016,4529,668.27,502.54,3026594.83,2276003.66,750591.17
+Sub-Saharan Africa,Cote d'Ivoire,Beverages,Offline,L,8/3/2015,668842780,9/20/2015,4297,47.45,31.79,203892.65,136601.63,67291.02
+Europe,Iceland,Cosmetics,Online,C,4/5/2012,907349526,5/16/2012,3743,437.20,263.33,1636439.60,985644.19,650795.41
+Europe,Poland,Personal Care,Offline,C,4/5/2014,386440074,4/25/2014,5060,81.73,56.67,413553.80,286750.20,126803.60
+Sub-Saharan Africa,Madagascar,Vegetables,Offline,C,9/19/2015,748350751,10/27/2015,2472,154.06,90.93,380836.32,224778.96,156057.36
+Central America and the Caribbean,Saint Kitts and Nevis ,Personal Care,Online,L,8/12/2015,105630385,9/15/2015,7233,81.73,56.67,591153.09,409894.11,181258.98
+Asia,Sri Lanka,Cosmetics,Offline,L,12/30/2013,691140305,1/8/2014,2630,437.20,263.33,1149836.00,692557.90,457278.10
+Sub-Saharan Africa,Comoros,Cosmetics,Offline,H,10/8/2015,308054339,10/15/2015,8980,437.20,263.33,3926056.00,2364703.40,1561352.60
+Sub-Saharan Africa,Senegal,Fruits,Offline,H,9/29/2011,879858815,10/30/2011,8631,9.33,6.92,80527.23,59726.52,20800.71
+Europe,Finland,Vegetables,Online,H,9/28/2012,800352561,10/21/2012,963,154.06,90.93,148359.78,87565.59,60794.19
+Sub-Saharan Africa,Sao Tome and Principe,Baby Food,Online,L,7/1/2015,783646905,8/10/2015,7388,255.28,159.42,1886008.64,1177794.96,708213.68
+Europe,Poland,Beverages,Offline,C,1/8/2014,714165675,2/2/2014,6348,47.45,31.79,301212.60,201802.92,99409.68
+Asia,Turkmenistan,Meat,Offline,H,12/20/2010,996645200,1/27/2011,8317,421.89,364.69,3508859.13,3033126.73,475732.40
+Middle East and North Africa,Saudi Arabia,Office Supplies,Offline,M,11/2/2013,306134307,11/24/2013,799,651.21,524.96,520316.79,419443.04,100873.75
+Asia,Brunei,Snacks,Offline,M,1/20/2016,537994325,2/28/2016,3331,152.58,97.44,508243.98,324572.64,183671.34
+Asia,Philippines,Cereal,Online,M,11/20/2015,957899081,12/23/2015,2480,205.70,117.11,510136.00,290432.80,219703.20
+Asia,India,Office Supplies,Online,M,9/4/2012,451834905,9/21/2012,6844,651.21,524.96,4456881.24,3592826.24,864055.00
+Sub-Saharan Africa,Cote d'Ivoire,Baby Food,Online,H,8/13/2010,676100623,9/23/2010,2054,255.28,159.42,524345.12,327448.68,196896.44
+Australia and Oceania,Vanuatu,Snacks,Offline,M,12/15/2014,207307565,12/29/2014,5770,152.58,97.44,880386.60,562228.80,318157.80
+Asia,Japan,Baby Food,Offline,H,1/29/2013,392379558,3/9/2013,2685,255.28,159.42,685426.80,428042.70,257384.10
+Australia and Oceania,Nauru,Cosmetics,Online,M,3/1/2016,398552930,3/29/2016,9524,437.20,263.33,4163892.80,2507954.92,1655937.88
+Middle East and North Africa,Pakistan,Office Supplies,Offline,L,7/6/2017,363376510,8/10/2017,39,651.21,524.96,25397.19,20473.44,4923.75
+Middle East and North Africa,Morocco,Vegetables,Offline,H,6/29/2011,944711625,7/23/2011,18,154.06,90.93,2773.08,1636.74,1136.34
+Sub-Saharan Africa,Cameroon,Household,Online,C,6/18/2012,170732104,8/7/2012,2279,668.27,502.54,1522987.33,1145288.66,377698.67
+Europe,Croatia,Beverages,Offline,L,2/22/2013,189924275,3/21/2013,1668,47.45,31.79,79146.60,53025.72,26120.88
+Asia,Thailand,Clothes,Offline,L,2/6/2011,521086966,2/19/2011,68,109.28,35.84,7431.04,2437.12,4993.92
+Asia,Kyrgyzstan,Meat,Online,M,7/11/2012,303331506,8/6/2012,1388,421.89,364.69,585583.32,506189.72,79393.60
+Europe,Poland,Meat,Online,H,4/30/2013,546081721,5/22/2013,6571,421.89,364.69,2772239.19,2396377.99,375861.20
+Europe,Switzerland,Baby Food,Online,C,6/26/2010,979073941,7/18/2010,8591,255.28,159.42,2193110.48,1369577.22,823533.26
+Sub-Saharan Africa,Sao Tome and Principe,Vegetables,Offline,L,5/21/2013,502356994,6/24/2013,7453,154.06,90.93,1148209.18,677701.29,470507.89
+Australia and Oceania,New Zealand,Meat,Online,H,5/7/2017,336292207,6/5/2017,5192,421.89,364.69,2190452.88,1893470.48,296982.40
+Sub-Saharan Africa,Equatorial Guinea,Personal Care,Online,H,12/19/2014,871553409,1/5/2015,876,81.73,56.67,71595.48,49642.92,21952.56
+Australia and Oceania,New Zealand,Personal Care,Offline,H,1/16/2015,319126927,2/6/2015,5604,81.73,56.67,458014.92,317578.68,140436.24
+Sub-Saharan Africa,Liberia,Vegetables,Online,H,2/2/2016,560311591,2/5/2016,7506,154.06,90.93,1156374.36,682520.58,473853.78
+Europe,Bosnia and Herzegovina,Personal Care,Offline,L,2/7/2010,396718728,3/18/2010,6742,81.73,56.67,551023.66,382069.14,168954.52
+Australia and Oceania,Marshall Islands,Fruits,Online,H,8/30/2016,500272166,10/9/2016,506,9.33,6.92,4720.98,3501.52,1219.46
+Asia,South Korea,Snacks,Online,L,12/18/2010,263208234,1/20/2011,8020,152.58,97.44,1223691.60,781468.80,442222.80
+Europe,Hungary,Beverages,Offline,M,12/3/2010,948075759,1/4/2011,5540,47.45,31.79,262873.00,176116.60,86756.40
+Europe,Sweden,Cereal,Offline,L,10/19/2012,737736070,11/3/2012,1352,205.70,117.11,278106.40,158332.72,119773.68
+Europe,Slovakia,Household,Offline,L,2/20/2010,585362994,4/11/2010,773,668.27,502.54,516572.71,388463.42,128109.29
+Middle East and North Africa,Morocco,Baby Food,Offline,M,9/7/2012,164442861,9/20/2012,1152,255.28,159.42,294082.56,183651.84,110430.72
+Australia and Oceania,Samoa ,Office Supplies,Online,M,4/29/2012,118774497,5/24/2012,6868,651.21,524.96,4472510.28,3605425.28,867085.00
+Australia and Oceania,Papua New Guinea,Baby Food,Online,M,2/26/2017,712469232,3/12/2017,4333,255.28,159.42,1106128.24,690766.86,415361.38
+Sub-Saharan Africa,Ghana,Baby Food,Offline,C,5/26/2017,479950892,5/28/2017,6989,255.28,159.42,1784151.92,1114186.38,669965.54
+Sub-Saharan Africa,Niger,Vegetables,Online,H,12/4/2011,275955808,12/25/2011,311,154.06,90.93,47912.66,28279.23,19633.43
+Asia,India,Baby Food,Offline,M,1/7/2012,125532805,2/17/2012,6802,255.28,159.42,1736414.56,1084374.84,652039.72
+Asia,Philippines,Clothes,Online,C,11/20/2014,574043214,1/5/2015,998,109.28,35.84,109061.44,35768.32,73293.12
+Middle East and North Africa,Jordan,Personal Care,Online,H,1/8/2015,437160861,1/16/2015,4468,81.73,56.67,365169.64,253201.56,111968.08
+Europe,Czech Republic,Baby Food,Offline,H,7/18/2015,850872075,8/1/2015,810,255.28,159.42,206776.80,129130.20,77646.60
+Australia and Oceania,East Timor,Snacks,Offline,H,11/8/2016,321475684,12/16/2016,654,152.58,97.44,99787.32,63725.76,36061.56
+Europe,Bosnia and Herzegovina,Office Supplies,Offline,C,11/8/2012,575583016,11/24/2012,6660,651.21,524.96,4337058.60,3496233.60,840825.00
+Middle East and North Africa,Bahrain,Meat,Offline,M,6/8/2017,710117900,7/2/2017,8522,421.89,364.69,3595346.58,3107888.18,487458.40
+Asia,Nepal,Fruits,Offline,L,4/5/2015,342316663,4/5/2015,7962,9.33,6.92,74285.46,55097.04,19188.42
+Asia,Maldives,Cosmetics,Offline,C,12/27/2010,959728133,1/20/2011,3737,437.20,263.33,1633816.40,984064.21,649752.19
+Australia and Oceania,Tuvalu,Vegetables,Offline,C,5/10/2010,970213639,6/12/2010,6631,154.06,90.93,1021571.86,602956.83,418615.03
+Asia,Philippines,Cereal,Offline,M,5/11/2016,651947009,5/18/2016,4463,205.70,117.11,918039.10,522661.93,395377.17
+North America,United States of America,Vegetables,Offline,H,5/12/2010,803414571,6/19/2010,7080,154.06,90.93,1090744.80,643784.40,446960.40
+Sub-Saharan Africa,Tanzania,Fruits,Offline,M,6/3/2016,493415153,6/9/2016,1363,9.33,6.92,12716.79,9431.96,3284.83
+Central America and the Caribbean,Barbados,Household,Offline,L,3/30/2014,211060082,4/3/2014,6223,668.27,502.54,4158644.21,3127306.42,1031337.79
+Europe,Kosovo,Meat,Offline,H,2/1/2011,515773189,2/17/2011,7603,421.89,364.69,3207629.67,2772738.07,434891.60
+Asia,Nepal,Office Supplies,Offline,H,4/15/2015,687290799,5/19/2015,3475,651.21,524.96,2262954.75,1824236.00,438718.75
+Sub-Saharan Africa,Guinea-Bissau,Fruits,Online,C,4/21/2017,975661742,6/3/2017,8846,9.33,6.92,82533.18,61214.32,21318.86
+Europe,Monaco,Personal Care,Online,H,3/29/2016,351247346,5/8/2016,750,81.73,56.67,61297.50,42502.50,18795.00
+Europe,Portugal,Beverages,Offline,H,1/20/2016,554721438,1/28/2016,3256,47.45,31.79,154497.20,103508.24,50988.96
+Asia,Turkmenistan,Clothes,Online,M,3/7/2014,247070348,4/23/2014,2461,109.28,35.84,268938.08,88202.24,180735.84
+Asia,Thailand,Meat,Online,M,12/2/2012,859592902,1/14/2013,1497,421.89,364.69,631569.33,545940.93,85628.40
+Australia and Oceania,Vanuatu,Vegetables,Online,L,8/22/2015,743900430,10/6/2015,5523,154.06,90.93,850873.38,502206.39,348666.99
+Sub-Saharan Africa,Central African Republic,Household,Online,C,5/25/2015,121916759,7/5/2015,6733,668.27,502.54,4499461.91,3383601.82,1115860.09
+Asia,Maldives,Personal Care,Online,C,11/26/2013,635878217,12/30/2013,9350,81.73,56.67,764175.50,529864.50,234311.00
+Europe,Germany,Cereal,Offline,C,2/19/2010,398333632,3/2/2010,4629,205.70,117.11,952185.30,542102.19,410083.11
+Sub-Saharan Africa,Botswana,Cosmetics,Online,H,9/22/2011,742144334,10/20/2011,5855,437.20,263.33,2559806.00,1541797.15,1018008.85
+Europe,Vatican City,Beverages,Online,C,12/27/2015,370484149,1/19/2016,3348,47.45,31.79,158862.60,106432.92,52429.68
+Europe,Denmark,Baby Food,Offline,H,9/29/2013,306839406,10/1/2013,9454,255.28,159.42,2413417.12,1507156.68,906260.44
+Sub-Saharan Africa,South Sudan,Fruits,Online,L,10/26/2015,745008933,11/3/2015,3554,9.33,6.92,33158.82,24593.68,8565.14
+Sub-Saharan Africa,Senegal,Vegetables,Online,M,5/12/2011,599104058,6/28/2011,7059,154.06,90.93,1087509.54,641874.87,445634.67
+Europe,Estonia,Beverages,Offline,C,2/9/2017,653548610,2/21/2017,8412,47.45,31.79,399149.40,267417.48,131731.92
+Europe,Belarus,Vegetables,Online,L,12/31/2012,413078916,1/11/2013,8086,154.06,90.93,1245729.16,735259.98,510469.18
+Asia,Myanmar,Vegetables,Online,H,2/6/2014,352743804,3/19/2014,3585,154.06,90.93,552305.10,325984.05,226321.05
+Australia and Oceania,New Zealand,Baby Food,Online,L,11/2/2013,567904603,11/12/2013,4447,255.28,159.42,1135230.16,708940.74,426289.42
+North America,United States of America,Snacks,Online,C,6/27/2010,324235141,7/12/2010,7238,152.58,97.44,1104374.04,705270.72,399103.32
+Europe,Italy,Snacks,Online,M,12/14/2010,307721745,1/1/2011,558,152.58,97.44,85139.64,54371.52,30768.12
+Europe,Kosovo,Office Supplies,Online,C,11/9/2011,374663245,11/26/2011,35,651.21,524.96,22792.35,18373.60,4418.75
+Europe,Ireland,Vegetables,Offline,C,11/16/2010,901670968,12/11/2010,3331,154.06,90.93,513173.86,302887.83,210286.03
+Central America and the Caribbean,Antigua and Barbuda ,Snacks,Online,H,7/20/2010,535668742,8/31/2010,5139,152.58,97.44,784108.62,500744.16,283364.46
+Asia,Bangladesh,Household,Offline,C,6/21/2014,243892896,7/22/2014,2183,668.27,502.54,1458833.41,1097044.82,361788.59
+Middle East and North Africa,Lebanon,Clothes,Offline,C,12/11/2015,163892257,1/25/2016,8216,109.28,35.84,897844.48,294461.44,603383.04
+North America,Greenland,Household,Offline,H,11/28/2016,953528153,1/16/2017,9025,668.27,502.54,6031136.75,4535423.50,1495713.25
+Sub-Saharan Africa,Guinea,Fruits,Online,M,8/3/2016,640974414,9/20/2016,7428,9.33,6.92,69303.24,51401.76,17901.48
+North America,United States of America,Baby Food,Offline,C,4/8/2015,474717366,4/14/2015,8273,255.28,159.42,2111931.44,1318881.66,793049.78
+Australia and Oceania,East Timor,Meat,Online,C,7/4/2010,873555839,8/4/2010,3440,421.89,364.69,1451301.60,1254533.60,196768.00
+Sub-Saharan Africa,Niger,Cereal,Online,M,1/30/2016,976601159,3/11/2016,6840,205.70,117.11,1406988.00,801032.40,605955.60
+Central America and the Caribbean,El Salvador,Fruits,Offline,C,10/1/2012,893277156,11/12/2012,9416,9.33,6.92,87851.28,65158.72,22692.56
+Europe,Montenegro,Cosmetics,Offline,L,8/19/2012,353320157,8/22/2012,4141,437.20,263.33,1810445.20,1090449.53,719995.67
+Australia and Oceania,Palau,Baby Food,Offline,H,7/21/2017,956778991,8/25/2017,1020,255.28,159.42,260385.60,162608.40,97777.20
+Sub-Saharan Africa,Botswana,Baby Food,Offline,L,4/3/2015,324014985,4/10/2015,2089,255.28,159.42,533279.92,333028.38,200251.54
+Europe,Norway,Cereal,Offline,L,6/20/2013,645701968,7/21/2013,6416,205.70,117.11,1319771.20,751377.76,568393.44
+Asia,Maldives,Fruits,Offline,L,6/8/2013,132826268,7/7/2013,5099,9.33,6.92,47573.67,35285.08,12288.59
+Sub-Saharan Africa,Cote d'Ivoire,Meat,Offline,L,8/29/2013,666686713,9/10/2013,6269,421.89,364.69,2644828.41,2286241.61,358586.80
+Europe,Poland,Office Supplies,Online,H,9/19/2013,148894631,9/25/2013,85,651.21,524.96,55352.85,44621.60,10731.25
+Sub-Saharan Africa,Democratic Republic of the Congo,Beverages,Online,L,6/18/2010,151373851,7/12/2010,3741,47.45,31.79,177510.45,118926.39,58584.06
+Sub-Saharan Africa,Sierra Leone,Personal Care,Offline,L,12/16/2016,966360700,1/27/2017,6461,81.73,56.67,528057.53,366144.87,161912.66
+Central America and the Caribbean,Honduras,Baby Food,Online,M,4/4/2013,256404006,4/27/2013,4498,255.28,159.42,1148249.44,717071.16,431178.28
+Central America and the Caribbean,Grenada,Household,Online,C,10/6/2010,704365098,11/23/2010,6140,668.27,502.54,4103177.80,3085595.60,1017582.20
+Sub-Saharan Africa,Namibia,Baby Food,Online,C,8/5/2010,563417804,9/3/2010,6703,255.28,159.42,1711141.84,1068592.26,642549.58
+Middle East and North Africa,Morocco,Vegetables,Offline,H,12/4/2014,407048451,1/23/2015,3537,154.06,90.93,544910.22,321619.41,223290.81
+Asia,Japan,Beverages,Offline,M,8/21/2015,879055869,9/14/2015,1021,47.45,31.79,48446.45,32457.59,15988.86
+Europe,Sweden,Baby Food,Online,L,4/3/2013,443551385,5/9/2013,5566,255.28,159.42,1420888.48,887331.72,533556.76
+Middle East and North Africa,Iran,Personal Care,Online,L,2/25/2013,334958827,2/28/2013,615,81.73,56.67,50263.95,34852.05,15411.90
+Europe,Vatican City,Clothes,Offline,H,3/11/2014,508014523,3/20/2014,1642,109.28,35.84,179437.76,58849.28,120588.48
+Europe,Lithuania,Office Supplies,Online,C,7/8/2012,987767302,8/1/2012,1150,651.21,524.96,748891.50,603704.00,145187.50
+Central America and the Caribbean,Costa Rica,Meat,Offline,L,11/28/2012,519578492,12/29/2012,3677,421.89,364.69,1551289.53,1340965.13,210324.40
+Middle East and North Africa,Egypt,Snacks,Offline,M,6/6/2017,619121921,6/10/2017,789,152.58,97.44,120385.62,76880.16,43505.46
+Middle East and North Africa,Libya,Baby Food,Offline,H,1/20/2014,622383916,2/18/2014,6086,255.28,159.42,1553634.08,970230.12,583403.96
+Asia,Thailand,Clothes,Offline,L,10/5/2010,835663306,11/3/2010,197,109.28,35.84,21528.16,7060.48,14467.68
+Middle East and North Africa,Pakistan,Personal Care,Online,C,8/3/2016,285571420,9/13/2016,5784,81.73,56.67,472726.32,327779.28,144947.04
+Middle East and North Africa,Libya,Baby Food,Online,C,2/21/2015,769032084,4/3/2015,2538,255.28,159.42,647900.64,404607.96,243292.68
+Sub-Saharan Africa,Botswana,Vegetables,Offline,L,10/19/2013,103281629,11/5/2013,2184,154.06,90.93,336467.04,198591.12,137875.92
+Central America and the Caribbean,El Salvador,Cereal,Online,L,3/24/2017,675868880,5/11/2017,3476,205.70,117.11,715013.20,407074.36,307938.84
+Sub-Saharan Africa,Sao Tome and Principe,Fruits,Offline,M,1/4/2016,894655168,1/26/2016,7200,9.33,6.92,67176.00,49824.00,17352.00
+Sub-Saharan Africa,Comoros,Fruits,Online,M,2/23/2013,137814319,3/14/2013,1174,9.33,6.92,10953.42,8124.08,2829.34
+Europe,Croatia,Baby Food,Offline,H,9/19/2012,103832662,10/20/2012,5247,255.28,159.42,1339454.16,836476.74,502977.42
+Middle East and North Africa,Pakistan,Personal Care,Offline,H,1/25/2016,761509025,3/3/2016,6298,81.73,56.67,514735.54,356907.66,157827.88
+Sub-Saharan Africa,Sierra Leone,Beverages,Online,M,6/18/2010,799954736,7/21/2010,3238,47.45,31.79,153643.10,102936.02,50707.08
+Asia,Malaysia,Snacks,Offline,L,9/29/2010,778593623,11/17/2010,2010,152.58,97.44,306685.80,195854.40,110831.40
+Central America and the Caribbean,Antigua and Barbuda ,Cosmetics,Offline,M,2/6/2010,877162015,3/7/2010,588,437.20,263.33,257073.60,154838.04,102235.56
+Europe,Malta,Personal Care,Online,H,2/19/2014,445708739,2/27/2014,3975,81.73,56.67,324876.75,225263.25,99613.50
+Sub-Saharan Africa,Botswana,Household,Offline,M,5/20/2014,254595124,6/21/2014,9210,668.27,502.54,6154766.70,4628393.40,1526373.30
+Sub-Saharan Africa,Chad,Baby Food,Online,H,10/16/2014,244494998,11/21/2014,358,255.28,159.42,91390.24,57072.36,34317.88
+Sub-Saharan Africa,Lesotho,Cereal,Online,M,10/22/2012,876394689,11/9/2012,3519,205.70,117.11,723858.30,412110.09,311748.21
+Central America and the Caribbean,Dominican Republic,Fruits,Online,L,9/24/2010,881593024,10/9/2010,1822,9.33,6.92,16999.26,12608.24,4391.02
+Sub-Saharan Africa,Burundi,Clothes,Online,C,12/1/2011,411701333,12/27/2011,428,109.28,35.84,46771.84,15339.52,31432.32
+Asia,Brunei,Baby Food,Online,M,1/2/2017,588643443,2/11/2017,1531,255.28,159.42,390833.68,244072.02,146761.66
+Europe,Macedonia,Beverages,Offline,M,7/24/2012,354655683,7/31/2012,9353,47.45,31.79,443799.85,297331.87,146467.98
+Asia,Uzbekistan,Clothes,Offline,L,9/16/2012,522286880,10/3/2012,5149,109.28,35.84,562682.72,184540.16,378142.56
+Europe,Belarus,Office Supplies,Offline,C,6/30/2017,624398362,7/24/2017,2206,651.21,524.96,1436569.26,1158061.76,278507.50
+Europe,Liechtenstein,Beverages,Online,C,9/5/2016,264163959,9/22/2016,840,47.45,31.79,39858.00,26703.60,13154.40
+Sub-Saharan Africa,Seychelles ,Beverages,Offline,M,3/21/2016,465069997,3/23/2016,3402,47.45,31.79,161424.90,108149.58,53275.32
+Europe,Russia,Office Supplies,Offline,H,10/16/2011,520915305,11/7/2011,9270,651.21,524.96,6036716.70,4866379.20,1170337.50
+Australia and Oceania,Australia,Beverages,Offline,H,4/9/2015,245811212,5/11/2015,9855,47.45,31.79,467619.75,313290.45,154329.30
+Europe,Armenia,Cereal,Online,H,2/5/2013,424181544,3/4/2013,3600,205.70,117.11,740520.00,421596.00,318924.00
+Europe,United Kingdom,Office Supplies,Online,H,7/3/2015,560762631,7/16/2015,979,651.21,524.96,637534.59,513935.84,123598.75
+Australia and Oceania,Vanuatu,Office Supplies,Offline,H,11/2/2014,230603301,12/10/2014,9496,651.21,524.96,6183890.16,4985020.16,1198870.00
+Australia and Oceania,Palau,Vegetables,Online,H,2/6/2012,429064881,2/15/2012,8688,154.06,90.93,1338473.28,789999.84,548473.44
+Asia,South Korea,Household,Offline,C,2/17/2013,421821200,3/15/2013,5122,668.27,502.54,3422878.94,2574009.88,848869.06
+Sub-Saharan Africa,Malawi,Office Supplies,Online,C,4/10/2017,894858586,5/27/2017,7396,651.21,524.96,4816349.16,3882604.16,933745.00
+Asia,Tajikistan,Beverages,Offline,C,7/27/2013,804475867,8/18/2013,1141,47.45,31.79,54140.45,36272.39,17868.06
+Sub-Saharan Africa,Niger,Baby Food,Offline,M,11/5/2014,527284371,11/18/2014,4018,255.28,159.42,1025715.04,640549.56,385165.48
+Asia,Turkmenistan,Beverages,Offline,M,1/24/2016,510207927,2/15/2016,718,47.45,31.79,34069.10,22825.22,11243.88
+Asia,Sri Lanka,Vegetables,Offline,C,3/31/2013,820482861,4/11/2013,7967,154.06,90.93,1227396.02,724439.31,502956.71
+Middle East and North Africa,Tunisia ,Cosmetics,Online,M,11/5/2014,695658004,12/8/2014,9517,437.20,263.33,4160832.40,2506111.61,1654720.79
+Australia and Oceania,Fiji,Cosmetics,Offline,H,3/25/2015,793594682,3/27/2015,1157,437.20,263.33,505840.40,304672.81,201167.59
+Sub-Saharan Africa,Zambia,Baby Food,Online,M,8/12/2013,942466723,9/4/2013,5702,255.28,159.42,1455606.56,909012.84,546593.72
+Sub-Saharan Africa,Sao Tome and Principe,Fruits,Offline,L,4/15/2010,590760457,4/28/2010,8002,9.33,6.92,74658.66,55373.84,19284.82
+Sub-Saharan Africa,Liberia,Office Supplies,Offline,M,5/21/2010,157274711,6/17/2010,9937,651.21,524.96,6471073.77,5216527.52,1254546.25
+Sub-Saharan Africa,Benin,Beverages,Offline,L,7/14/2012,581120812,8/16/2012,5417,47.45,31.79,257036.65,172206.43,84830.22
+Sub-Saharan Africa,Mali,Fruits,Offline,H,8/23/2012,171722590,9/30/2012,5385,9.33,6.92,50242.05,37264.20,12977.85
+Europe,Moldova ,Office Supplies,Offline,L,4/4/2015,458816373,4/16/2015,2815,651.21,524.96,1833156.15,1477762.40,355393.75
+Asia,Vietnam,Beverages,Offline,H,8/16/2014,342450988,8/29/2014,7712,47.45,31.79,365934.40,245164.48,120769.92
+Europe,Netherlands,Household,Offline,L,8/18/2013,142987763,9/1/2013,2112,668.27,502.54,1411386.24,1061364.48,350021.76
+Middle East and North Africa,Pakistan,Clothes,Offline,L,6/12/2012,251100528,7/5/2012,5081,109.28,35.84,555251.68,182103.04,373148.64
+Middle East and North Africa,Turkey,Cosmetics,Online,L,4/20/2012,677775609,5/5/2012,7719,437.20,263.33,3374746.80,2032644.27,1342102.53
+Sub-Saharan Africa,Democratic Republic of the Congo,Snacks,Offline,M,9/15/2011,604311835,11/4/2011,8156,152.58,97.44,1244442.48,794720.64,449721.84
+Sub-Saharan Africa,Botswana,Office Supplies,Online,H,3/26/2010,632320535,3/28/2010,6553,651.21,524.96,4267379.13,3440062.88,827316.25
+Central America and the Caribbean,Barbados,Snacks,Online,L,4/23/2012,533725535,5/30/2012,101,152.58,97.44,15410.58,9841.44,5569.14
+Sub-Saharan Africa,Equatorial Guinea,Personal Care,Online,L,11/9/2015,600763165,12/8/2015,8026,81.73,56.67,655964.98,454833.42,201131.56
+Australia and Oceania,East Timor,Vegetables,Offline,L,1/24/2016,295982253,3/8/2016,6581,154.06,90.93,1013868.86,598410.33,415458.53
+Sub-Saharan Africa,The Gambia,Meat,Offline,M,10/10/2016,502244126,10/17/2016,4053,421.89,364.69,1709920.17,1478088.57,231831.60
+Middle East and North Africa,Somalia,Personal Care,Offline,L,7/11/2011,372722613,8/18/2011,5759,81.73,56.67,470683.07,326362.53,144320.54
+Europe,Andorra,Snacks,Offline,C,1/23/2010,480904042,2/5/2010,9048,152.58,97.44,1380543.84,881637.12,498906.72
+Middle East and North Africa,Egypt,Household,Offline,L,11/6/2011,570587241,11/8/2011,8299,668.27,502.54,5545972.73,4170579.46,1375393.27
+Asia,Singapore,Cereal,Offline,H,5/27/2017,905883538,7/2/2017,9925,205.70,117.11,2041572.50,1162316.75,879255.75
+Central America and the Caribbean,Saint Vincent and the Grenadines,Vegetables,Offline,L,12/13/2016,921216762,1/14/2017,7366,154.06,90.93,1134805.96,669790.38,465015.58
+Europe,Armenia,Vegetables,Online,M,12/7/2016,571323239,1/1/2017,6097,154.06,90.93,939303.82,554400.21,384903.61
+Sub-Saharan Africa,Senegal,Cosmetics,Online,M,6/28/2013,781251800,8/2/2013,8623,437.20,263.33,3769975.60,2270694.59,1499281.01
+Asia,Taiwan,Meat,Offline,C,5/29/2011,296363770,7/13/2011,9480,421.89,364.69,3999517.20,3457261.20,542256.00
+Middle East and North Africa,Libya,Vegetables,Online,H,9/26/2012,632332980,10/25/2012,236,154.06,90.93,36358.16,21459.48,14898.68
+Middle East and North Africa,Azerbaijan,Cosmetics,Offline,H,1/14/2013,225145757,2/5/2013,4487,437.20,263.33,1961716.40,1181561.71,780154.69
+Europe,Italy,Snacks,Online,H,9/16/2012,281100928,11/3/2012,2866,152.58,97.44,437294.28,279263.04,158031.24
+Middle East and North Africa,Libya,Snacks,Online,H,3/22/2013,726809823,5/5/2013,8033,152.58,97.44,1225675.14,782735.52,442939.62
+Europe,Croatia,Household,Online,L,4/26/2013,659196269,6/1/2013,9680,668.27,502.54,6468853.60,4864587.20,1604266.40
+Europe,Bulgaria,Personal Care,Offline,H,10/24/2012,595496594,11/4/2012,9530,81.73,56.67,778886.90,540065.10,238821.80
+Middle East and North Africa,Egypt,Cosmetics,Offline,C,5/14/2016,223259627,7/3/2016,6340,437.20,263.33,2771848.00,1669512.20,1102335.80
+Sub-Saharan Africa,Guinea-Bissau,Vegetables,Online,H,7/25/2014,650346696,9/3/2014,894,154.06,90.93,137729.64,81291.42,56438.22
+Europe,Ireland,Personal Care,Offline,H,5/30/2010,354931628,6/8/2010,1011,81.73,56.67,82629.03,57293.37,25335.66
+Middle East and North Africa,Afghanistan,Snacks,Online,M,7/19/2015,135500752,7/21/2015,6539,152.58,97.44,997720.62,637160.16,360560.46
+Central America and the Caribbean,Honduras,Cereal,Online,H,3/7/2016,860852897,4/25/2016,4357,205.70,117.11,896234.90,510248.27,385986.63
+Middle East and North Africa,Qatar,Vegetables,Offline,H,9/23/2014,320099389,11/2/2014,3377,154.06,90.93,520260.62,307070.61,213190.01
+Sub-Saharan Africa,Mali,Office Supplies,Offline,M,11/16/2010,872664058,11/25/2010,9542,651.21,524.96,6213845.82,5009168.32,1204677.50
+Asia,Malaysia,Cereal,Offline,H,12/16/2012,898283231,12/18/2012,825,205.70,117.11,169702.50,96615.75,73086.75
+Asia,Turkmenistan,Cereal,Online,L,6/11/2011,647005736,6/12/2011,2230,205.70,117.11,458711.00,261155.30,197555.70
+Australia and Oceania,Solomon Islands,Beverages,Online,C,12/30/2012,889192903,1/1/2013,795,47.45,31.79,37722.75,25273.05,12449.70
+Asia,Bhutan,Fruits,Online,L,1/2/2014,665518558,2/14/2014,585,9.33,6.92,5458.05,4048.20,1409.85
+Europe,Spain,Meat,Offline,C,11/29/2011,436969029,12/17/2011,7701,421.89,364.69,3248974.89,2808477.69,440497.20
+Asia,Taiwan,Cosmetics,Online,H,8/1/2016,734843146,8/17/2016,5272,437.20,263.33,2304918.40,1388275.76,916642.64
+Europe,Moldova ,Vegetables,Online,L,3/28/2016,810752236,5/4/2016,8458,154.06,90.93,1303039.48,769085.94,533953.54
+Europe,Italy,Office Supplies,Offline,C,7/8/2011,886620128,7/25/2011,9453,651.21,524.96,6155888.13,4962446.88,1193441.25
+Sub-Saharan Africa,Mozambique,Meat,Online,M,9/11/2011,804683148,9/19/2011,2480,421.89,364.69,1046287.20,904431.20,141856.00
+Australia and Oceania,Solomon Islands,Household,Online,L,10/2/2015,477490127,10/3/2015,8794,668.27,502.54,5876766.38,4419336.76,1457429.62
+Australia and Oceania,Tonga,Snacks,Online,H,3/3/2016,337902390,4/21/2016,1681,152.58,97.44,256486.98,163796.64,92690.34
+Europe,Finland,Cereal,Offline,M,4/10/2010,889093768,5/20/2010,1458,205.70,117.11,299910.60,170746.38,129164.22
+Europe,Poland,Cereal,Online,C,8/6/2011,454550588,9/6/2011,475,205.70,117.11,97707.50,55627.25,42080.25
+Asia,Turkmenistan,Clothes,Offline,H,10/24/2015,128071677,11/7/2015,8110,109.28,35.84,886260.80,290662.40,595598.40
+Asia,North Korea,Personal Care,Online,M,1/30/2012,623768365,3/16/2012,5776,81.73,56.67,472072.48,327325.92,144746.56
+Europe,Austria,Office Supplies,Online,L,2/18/2017,926064479,3/10/2017,1913,651.21,524.96,1245764.73,1004248.48,241516.25
+Sub-Saharan Africa,Mali,Personal Care,Online,H,11/28/2010,539696347,1/11/2011,6997,81.73,56.67,571864.81,396519.99,175344.82
+Australia and Oceania,Samoa ,Household,Offline,L,1/18/2016,839712798,1/31/2016,8532,668.27,502.54,5701679.64,4287671.28,1414008.36
+Asia,Indonesia,Beverages,Offline,C,10/31/2010,121475160,12/8/2010,6054,47.45,31.79,287262.30,192456.66,94805.64
+Central America and the Caribbean,Jamaica,Clothes,Online,H,4/1/2016,350657260,4/15/2016,6130,109.28,35.84,669886.40,219699.20,450187.20
+Europe,Andorra,Fruits,Offline,C,6/29/2016,413245427,7/2/2016,7360,9.33,6.92,68668.80,50931.20,17737.60
+Sub-Saharan Africa,Zimbabwe,Household,Offline,M,10/3/2015,165538489,10/8/2015,5372,668.27,502.54,3589946.44,2699644.88,890301.56
+Europe,Finland,Beverages,Online,H,9/18/2011,884147775,10/19/2011,7829,47.45,31.79,371486.05,248883.91,122602.14
+Sub-Saharan Africa,Guinea,Cosmetics,Online,C,6/24/2014,315997111,7/25/2014,9422,437.20,263.33,4119298.40,2481095.26,1638203.14
+Europe,Andorra,Cosmetics,Online,C,6/30/2012,328322827,7/19/2012,6876,437.20,263.33,3006187.20,1810657.08,1195530.12
+Europe,Germany,Snacks,Online,H,3/22/2014,158673751,5/10/2014,3944,152.58,97.44,601775.52,384303.36,217472.16
+Europe,Italy,Snacks,Offline,L,1/7/2014,464911210,2/10/2014,6413,152.58,97.44,978495.54,624882.72,353612.82
+Asia,Taiwan,Baby Food,Online,L,2/10/2011,175209033,3/10/2011,7101,255.28,159.42,1812743.28,1132041.42,680701.86
+Middle East and North Africa,Morocco,Household,Online,L,5/9/2013,538053548,6/27/2013,856,668.27,502.54,572039.12,430174.24,141864.88
+Sub-Saharan Africa,Republic of the Congo,Personal Care,Online,H,9/26/2010,172243583,9/27/2010,9559,81.73,56.67,781257.07,541708.53,239548.54
+Central America and the Caribbean,The Bahamas,Baby Food,Offline,H,1/13/2017,916890466,1/16/2017,7119,255.28,159.42,1817338.32,1134910.98,682427.34
+Asia,Maldives,Office Supplies,Online,M,1/4/2013,181418025,1/17/2013,4480,651.21,524.96,2917420.80,2351820.80,565600.00
+Europe,Serbia,Beverages,Online,C,10/12/2010,395562589,12/1/2010,4615,47.45,31.79,218981.75,146710.85,72270.90
+Europe,Italy,Baby Food,Offline,H,3/1/2012,459372985,3/22/2012,7529,255.28,159.42,1922003.12,1200273.18,721729.94
+Europe,Armenia,Meat,Online,L,6/25/2012,693210542,8/13/2012,5259,421.89,364.69,2218719.51,1917904.71,300814.80
+Asia,Kyrgyzstan,Personal Care,Offline,L,11/24/2011,587749087,1/7/2012,6871,81.73,56.67,561566.83,389379.57,172187.26
+Europe,Sweden,Fruits,Offline,L,8/22/2011,153974950,9/20/2011,3464,9.33,6.92,32319.12,23970.88,8348.24
+Sub-Saharan Africa,Kenya,Vegetables,Online,L,3/23/2010,373186957,4/7/2010,3169,154.06,90.93,488216.14,288157.17,200058.97
+Australia and Oceania,Federated States of Micronesia,Personal Care,Offline,M,10/17/2014,946996438,11/13/2014,6145,81.73,56.67,502230.85,348237.15,153993.70
+Europe,Romania,Snacks,Online,H,8/18/2014,747327220,9/15/2014,9587,152.58,97.44,1462784.46,934157.28,528627.18
+Sub-Saharan Africa,Botswana,Household,Offline,H,3/23/2015,966415631,5/7/2015,2716,668.27,502.54,1815021.32,1364898.64,450122.68
+Europe,Bosnia and Herzegovina,Clothes,Online,M,10/10/2011,166810500,11/21/2011,1789,109.28,35.84,195501.92,64117.76,131384.16
+Australia and Oceania,Samoa ,Meat,Offline,H,9/8/2015,131373155,10/24/2015,5091,421.89,364.69,2147841.99,1856636.79,291205.20
+Sub-Saharan Africa,Comoros,Vegetables,Online,L,12/4/2012,913277423,12/28/2012,7939,154.06,90.93,1223082.34,721893.27,501189.07
+Europe,Lithuania,Personal Care,Offline,M,3/31/2013,386009633,4/5/2013,7683,81.73,56.67,627931.59,435395.61,192535.98
+Europe,Germany,Personal Care,Offline,H,2/8/2016,993368613,2/16/2016,8702,81.73,56.67,711214.46,493142.34,218072.12
+Sub-Saharan Africa,Ghana,Office Supplies,Offline,H,6/13/2014,299465692,6/26/2014,7408,651.21,524.96,4824163.68,3888903.68,935260.00
+Middle East and North Africa,Israel,Vegetables,Offline,L,8/26/2013,438724696,10/5/2013,7242,154.06,90.93,1115702.52,658515.06,457187.46
+Asia,Philippines,Cosmetics,Offline,H,7/29/2012,465881955,8/17/2012,3678,437.20,263.33,1608021.60,968527.74,639493.86
+Europe,Germany,Baby Food,Online,L,12/9/2014,405986297,1/2/2015,9222,255.28,159.42,2354192.16,1470171.24,884020.92
+Sub-Saharan Africa,Republic of the Congo,Household,Online,M,5/17/2010,804399049,6/23/2010,8409,668.27,502.54,5619482.43,4225858.86,1393623.57
+Europe,Bulgaria,Beverages,Online,H,2/4/2016,476794040,3/7/2016,2807,47.45,31.79,133192.15,89234.53,43957.62
+Middle East and North Africa,Egypt,Personal Care,Offline,L,6/30/2012,559157598,8/12/2012,6014,81.73,56.67,491524.22,340813.38,150710.84
+Sub-Saharan Africa,Comoros,Cosmetics,Online,H,2/18/2015,457788550,4/4/2015,8660,437.20,263.33,3786152.00,2280437.80,1505714.20
+Middle East and North Africa,Tunisia ,Vegetables,Online,L,4/30/2010,999298226,5/25/2010,3407,154.06,90.93,524882.42,309798.51,215083.91
+Europe,Serbia,Meat,Offline,C,12/21/2011,380610454,12/29/2011,9946,421.89,364.69,4196117.94,3627206.74,568911.20
+Asia,Brunei,Baby Food,Online,C,4/19/2012,918961560,5/24/2012,2,255.28,159.42,510.56,318.84,191.72
+Sub-Saharan Africa,Mauritania,Office Supplies,Online,H,12/25/2015,501900374,1/24/2016,2329,651.21,524.96,1516668.09,1222631.84,294036.25
+Sub-Saharan Africa,The Gambia,Household,Online,M,8/5/2013,237288224,9/9/2013,7713,668.27,502.54,5154366.51,3876091.02,1278275.49
+Asia,Taiwan,Cosmetics,Online,C,9/19/2015,403298938,10/17/2015,3973,437.20,263.33,1736995.60,1046210.09,690785.51
+Asia,Japan,Snacks,Offline,H,4/12/2011,898418843,4/14/2011,955,152.58,97.44,145713.90,93055.20,52658.70
+Asia,Malaysia,Snacks,Offline,L,10/8/2016,791446769,11/13/2016,5541,152.58,97.44,845445.78,539915.04,305530.74
+Central America and the Caribbean,Trinidad and Tobago,Beverages,Offline,M,11/22/2011,571494042,12/16/2011,6642,47.45,31.79,315162.90,211149.18,104013.72
+Central America and the Caribbean,Haiti,Cosmetics,Offline,M,6/25/2011,797984492,8/13/2011,199,437.20,263.33,87002.80,52402.67,34600.13
+Central America and the Caribbean,Trinidad and Tobago,Cosmetics,Offline,C,4/16/2016,750654447,4/19/2016,4187,437.20,263.33,1830556.40,1102562.71,727993.69
+Sub-Saharan Africa,Uganda,Clothes,Offline,L,10/17/2016,679552733,11/8/2016,3610,109.28,35.84,394500.80,129382.40,265118.40
+Europe,France,Vegetables,Offline,L,2/1/2012,455040681,2/2/2012,5504,154.06,90.93,847946.24,500478.72,347467.52
+Europe,Iceland,Clothes,Online,M,9/10/2013,917792117,10/7/2013,3938,109.28,35.84,430344.64,141137.92,289206.72
+Europe,Albania,Cosmetics,Offline,L,6/27/2011,728793370,8/12/2011,5009,437.20,263.33,2189934.80,1319019.97,870914.83
+Sub-Saharan Africa,Chad,Fruits,Offline,C,5/4/2015,419343268,6/19/2015,1847,9.33,6.92,17232.51,12781.24,4451.27
+Middle East and North Africa,Somalia,Cereal,Online,M,6/18/2013,141053140,7/13/2013,9613,205.70,117.11,1977394.10,1125778.43,851615.67
+Sub-Saharan Africa,Mauritius ,Cereal,Online,C,1/27/2014,115846812,2/18/2014,501,205.70,117.11,103055.70,58672.11,44383.59
+Europe,Austria,Fruits,Offline,M,4/20/2011,185960614,5/28/2011,8733,9.33,6.92,81478.89,60432.36,21046.53
+Sub-Saharan Africa,Swaziland,Household,Offline,C,9/12/2011,263943374,9/25/2011,5565,668.27,502.54,3718922.55,2796635.10,922287.45
+Sub-Saharan Africa,Djibouti,Office Supplies,Offline,M,4/26/2015,782656419,4/26/2015,4282,651.21,524.96,2788481.22,2247878.72,540602.50
+Europe,Finland,Office Supplies,Offline,H,11/29/2011,445273578,1/9/2012,5201,651.21,524.96,3386943.21,2730316.96,656626.25
+Asia,Taiwan,Office Supplies,Online,C,1/7/2015,275281178,2/14/2015,673,651.21,524.96,438264.33,353298.08,84966.25
+Sub-Saharan Africa,Senegal,Fruits,Online,M,9/24/2012,466478049,10/29/2012,76,9.33,6.92,709.08,525.92,183.16
+Middle East and North Africa,Somalia,Meat,Offline,H,12/8/2016,832975518,1/15/2017,4821,421.89,364.69,2033931.69,1758170.49,275761.20
+Europe,Georgia,Baby Food,Online,L,1/26/2014,359197413,3/8/2014,3352,255.28,159.42,855698.56,534375.84,321322.72
+Middle East and North Africa,Azerbaijan,Baby Food,Online,M,5/11/2014,349880063,5/12/2014,6141,255.28,159.42,1567674.48,978998.22,588676.26
+Asia,Brunei,Cosmetics,Online,M,2/27/2010,380072295,3/15/2010,693,437.20,263.33,302979.60,182487.69,120491.91
+Middle East and North Africa,Egypt,Household,Online,C,1/14/2010,545135438,2/27/2010,6545,668.27,502.54,4373827.15,3289124.30,1084702.85
+Middle East and North Africa,United Arab Emirates,Baby Food,Offline,C,4/8/2012,110743319,5/9/2012,264,255.28,159.42,67393.92,42086.88,25307.04
+Sub-Saharan Africa,Mauritius ,Cosmetics,Offline,C,3/9/2016,662882268,4/17/2016,449,437.20,263.33,196302.80,118235.17,78067.63
+Sub-Saharan Africa,Guinea,Meat,Offline,C,11/4/2010,257851111,11/20/2010,2729,421.89,364.69,1151337.81,995239.01,156098.80
+Sub-Saharan Africa,Zimbabwe,Baby Food,Offline,M,8/18/2016,172261178,9/13/2016,4765,255.28,159.42,1216409.20,759636.30,456772.90
+Europe,Romania,Personal Care,Offline,L,5/14/2013,853036296,6/1/2013,1251,81.73,56.67,102244.23,70894.17,31350.06
+Europe,Switzerland,Fruits,Offline,M,3/21/2012,567412793,3/27/2012,8910,9.33,6.92,83130.30,61657.20,21473.10
+North America,Canada,Clothes,Offline,H,1/26/2014,352939498,3/10/2014,1495,109.28,35.84,163373.60,53580.80,109792.80
+Sub-Saharan Africa,Togo,Clothes,Online,M,4/14/2013,867477738,5/27/2013,4795,109.28,35.84,523997.60,171852.80,352144.80
+Europe,Ireland,Cosmetics,Offline,H,8/27/2016,139201343,9/6/2016,1625,437.20,263.33,710450.00,427911.25,282538.75
+Central America and the Caribbean,Panama,Fruits,Offline,C,11/22/2016,316596639,12/4/2016,6836,9.33,6.92,63779.88,47305.12,16474.76
+Sub-Saharan Africa,Central African Republic,Beverages,Online,H,7/25/2011,918462455,7/28/2011,2305,47.45,31.79,109372.25,73275.95,36096.30
+Europe,Ukraine,Cosmetics,Online,C,6/9/2014,183910119,6/11/2014,1946,437.20,263.33,850791.20,512440.18,338351.02
+Europe,Luxembourg,Clothes,Online,H,11/7/2013,922363460,11/23/2013,6700,109.28,35.84,732176.00,240128.00,492048.00
+Central America and the Caribbean,El Salvador,Household,Online,M,5/8/2014,163558804,5/22/2014,9540,668.27,502.54,6375295.80,4794231.60,1581064.20
+Sub-Saharan Africa,Cameroon,Fruits,Offline,L,3/7/2010,407544982,3/12/2010,472,9.33,6.92,4403.76,3266.24,1137.52
+Middle East and North Africa,Iraq,Meat,Online,H,10/22/2011,174683320,11/3/2011,1531,421.89,364.69,645913.59,558340.39,87573.20
+Australia and Oceania,New Zealand,Household,Offline,H,10/27/2011,755647647,12/9/2011,1786,668.27,502.54,1193530.22,897536.44,295993.78
+Sub-Saharan Africa,Mali,Meat,Online,H,6/15/2011,361424291,7/5/2011,2334,421.89,364.69,984691.26,851186.46,133504.80
+Sub-Saharan Africa,Togo,Baby Food,Online,H,10/14/2016,873312079,10/22/2016,1306,255.28,159.42,333395.68,208202.52,125193.16
+Europe,Austria,Beverages,Offline,C,4/2/2012,192922341,5/1/2012,8863,47.45,31.79,420549.35,281754.77,138794.58
+Europe,Monaco,Cereal,Online,L,6/3/2017,792178905,7/21/2017,2197,205.70,117.11,451922.90,257290.67,194632.23
+Sub-Saharan Africa,Botswana,Baby Food,Online,C,1/24/2015,263318097,3/4/2015,531,255.28,159.42,135553.68,84652.02,50901.66
+Sub-Saharan Africa,Equatorial Guinea,Office Supplies,Online,H,7/12/2015,768888747,7/29/2015,122,651.21,524.96,79447.62,64045.12,15402.50
+Middle East and North Africa,Turkey,Household,Offline,H,1/25/2015,491752183,2/6/2015,9254,668.27,502.54,6184170.58,4650505.16,1533665.42
+Middle East and North Africa,Somalia,Fruits,Offline,H,10/20/2014,385082232,11/28/2014,3245,9.33,6.92,30275.85,22455.40,7820.45
+Central America and the Caribbean,El Salvador,Meat,Offline,C,11/26/2016,122365224,12/22/2016,9444,421.89,364.69,3984329.16,3444132.36,540196.80
+Central America and the Caribbean,Haiti,Household,Online,H,4/6/2013,347399985,5/19/2013,2231,668.27,502.54,1490910.37,1121166.74,369743.63
+Europe,Serbia,Beverages,Online,M,12/20/2011,424297845,1/8/2012,8016,47.45,31.79,380359.20,254828.64,125530.56
+Sub-Saharan Africa,Lesotho,Office Supplies,Offline,M,10/28/2010,687482631,11/21/2010,243,651.21,524.96,158244.03,127565.28,30678.75
+Australia and Oceania,Solomon Islands,Cosmetics,Offline,H,4/6/2016,191690671,5/18/2016,4384,437.20,263.33,1916684.80,1154438.72,762246.08
+Australia and Oceania,Fiji,Cereal,Online,C,11/9/2016,761970794,12/20/2016,2945,205.70,117.11,605786.50,344888.95,260897.55
+Europe,Ireland,Baby Food,Online,H,5/23/2017,243684327,5/30/2017,462,255.28,159.42,117939.36,73652.04,44287.32
+Europe,San Marino,Clothes,Offline,M,5/7/2012,152505099,5/19/2012,8503,109.28,35.84,929207.84,304747.52,624460.32
+Middle East and North Africa,Somalia,Cereal,Online,M,6/4/2012,724419438,7/16/2012,665,205.70,117.11,136790.50,77878.15,58912.35
+Asia,Nepal,Household,Offline,M,6/16/2010,465726172,7/6/2010,7579,668.27,502.54,5064818.33,3808750.66,1256067.67
+Europe,Georgia,Baby Food,Online,L,6/24/2015,203036630,7/28/2015,1905,255.28,159.42,486308.40,303695.10,182613.30
+Sub-Saharan Africa,Republic of the Congo,Meat,Online,M,2/4/2011,833274638,2/13/2011,3337,421.89,364.69,1407846.93,1216970.53,190876.40
+Sub-Saharan Africa,Guinea-Bissau,Household,Offline,H,4/5/2012,173676526,5/10/2012,3598,668.27,502.54,2404435.46,1808138.92,596296.54
+Europe,Ukraine,Snacks,Offline,C,1/25/2016,611791121,3/3/2016,1443,152.58,97.44,220172.94,140605.92,79567.02
+Sub-Saharan Africa,Mali,Cosmetics,Offline,C,2/4/2013,555479753,2/12/2013,7658,437.20,263.33,3348077.60,2016581.14,1331496.46
+Sub-Saharan Africa,Zimbabwe,Beverages,Offline,H,12/4/2013,282916247,12/29/2013,59,47.45,31.79,2799.55,1875.61,923.94
+Australia and Oceania,Vanuatu,Cereal,Online,C,1/20/2015,592586934,2/19/2015,8497,205.70,117.11,1747832.90,995083.67,752749.23
+Central America and the Caribbean,Dominican Republic,Clothes,Online,M,4/5/2010,553290641,4/7/2010,9851,109.28,35.84,1076517.28,353059.84,723457.44
+Asia,Vietnam,Clothes,Online,C,2/6/2017,654138696,3/16/2017,3031,109.28,35.84,331227.68,108631.04,222596.64
+Europe,San Marino,Cereal,Offline,C,7/22/2012,554554927,8/6/2012,3981,205.70,117.11,818891.70,466214.91,352676.79
+Europe,Bosnia and Herzegovina,Office Supplies,Offline,H,7/11/2012,434275662,8/13/2012,674,651.21,524.96,438915.54,353823.04,85092.50
+Sub-Saharan Africa,Equatorial Guinea,Personal Care,Online,L,1/17/2015,543349730,2/7/2015,8115,81.73,56.67,663238.95,459877.05,203361.90
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Offline,C,8/24/2011,752138459,9/22/2011,3339,255.28,159.42,852379.92,532303.38,320076.54
+Sub-Saharan Africa,Mali,Vegetables,Online,L,11/7/2013,101315677,12/17/2013,415,154.06,90.93,63934.90,37735.95,26198.95
+Asia,Sri Lanka,Cereal,Online,C,7/15/2011,851867711,7/17/2011,5441,205.70,117.11,1119213.70,637195.51,482018.19
+Europe,Germany,Personal Care,Offline,H,7/27/2014,835093390,7/29/2014,1547,81.73,56.67,126436.31,87668.49,38767.82
+Asia,Sri Lanka,Cereal,Online,L,2/28/2011,202604043,4/10/2011,3893,205.70,117.11,800790.10,455909.23,344880.87
+Europe,Croatia,Beverages,Online,M,2/6/2017,976323497,2/10/2017,4674,47.45,31.79,221781.30,148586.46,73194.84
+Sub-Saharan Africa,Mauritius ,Cosmetics,Online,C,5/18/2011,298488080,7/3/2011,8111,437.20,263.33,3546129.20,2135869.63,1410259.57
+Sub-Saharan Africa,Senegal,Beverages,Online,M,9/9/2015,781646621,9/12/2015,5460,47.45,31.79,259077.00,173573.40,85503.60
+North America,United States of America,Fruits,Online,M,12/9/2014,158660447,1/9/2015,7,9.33,6.92,65.31,48.44,16.87
+Europe,Lithuania,Beverages,Online,H,1/9/2014,732703387,1/28/2014,2069,47.45,31.79,98174.05,65773.51,32400.54
+Sub-Saharan Africa,Nigeria,Beverages,Offline,H,5/4/2011,827261769,5/26/2011,3996,47.45,31.79,189610.20,127032.84,62577.36
+Central America and the Caribbean,Saint Kitts and Nevis ,Beverages,Online,C,2/15/2010,636134421,3/20/2010,5166,47.45,31.79,245126.70,164227.14,80899.56
+Europe,Slovenia,Household,Online,C,9/10/2014,873432672,9/17/2014,6992,668.27,502.54,4672543.84,3513759.68,1158784.16
+Europe,Serbia,Clothes,Online,C,6/25/2011,523580348,8/4/2011,7915,109.28,35.84,864951.20,283673.60,581277.60
+Central America and the Caribbean,Belize,Personal Care,Online,H,9/17/2010,891313779,10/25/2010,8409,81.73,56.67,687267.57,476538.03,210729.54
+Asia,Taiwan,Clothes,Offline,M,4/25/2012,651681792,6/12/2012,5979,109.28,35.84,653385.12,214287.36,439097.76
+Europe,Greece,Personal Care,Online,M,4/16/2017,800045716,5/14/2017,161,81.73,56.67,13158.53,9123.87,4034.66
+Australia and Oceania,New Zealand,Office Supplies,Online,L,5/1/2016,602079379,5/26/2016,7523,651.21,524.96,4899052.83,3949274.08,949778.75
+Europe,Malta,Vegetables,Online,M,5/10/2016,743769109,5/11/2016,6662,154.06,90.93,1026347.72,605775.66,420572.06
+Sub-Saharan Africa,Cameroon,Household,Online,C,12/22/2013,181413733,12/27/2013,3210,668.27,502.54,2145146.70,1613153.40,531993.30
+Central America and the Caribbean,Antigua and Barbuda ,Fruits,Online,C,6/12/2014,191624581,8/1/2014,4827,9.33,6.92,45035.91,33402.84,11633.07
+Middle East and North Africa,Qatar,Fruits,Offline,L,9/22/2012,321325480,10/25/2012,6205,9.33,6.92,57892.65,42938.60,14954.05
+Sub-Saharan Africa,Mali,Office Supplies,Online,H,6/1/2012,637752759,6/22/2012,4069,651.21,524.96,2649773.49,2136062.24,513711.25
+Sub-Saharan Africa,Ghana,Clothes,Online,L,5/24/2014,378455245,6/8/2014,2172,109.28,35.84,237356.16,77844.48,159511.68
+Europe,San Marino,Snacks,Offline,L,1/9/2013,201294267,2/9/2013,6302,152.58,97.44,961559.16,614066.88,347492.28
+Sub-Saharan Africa,Comoros,Meat,Offline,C,2/6/2015,834443652,2/27/2015,9275,421.89,364.69,3913029.75,3382499.75,530530.00
+Asia,Tajikistan,Cereal,Online,M,5/2/2013,826389729,5/5/2013,5940,205.70,117.11,1221858.00,695633.40,526224.60
+Sub-Saharan Africa,Gabon,Vegetables,Offline,M,11/11/2012,595931327,12/15/2012,8177,154.06,90.93,1259748.62,743534.61,516214.01
+North America,Greenland,Personal Care,Offline,H,4/24/2012,182179772,5/23/2012,9898,81.73,56.67,808963.54,560919.66,248043.88
+Sub-Saharan Africa,Mali,Fruits,Offline,M,3/2/2015,594558894,4/19/2015,2044,9.33,6.92,19070.52,14144.48,4926.04
+Sub-Saharan Africa,Guinea-Bissau,Meat,Online,M,10/26/2010,662805020,11/2/2010,7589,421.89,364.69,3201723.21,2767632.41,434090.80
+Asia,South Korea,Household,Offline,L,3/29/2016,186966979,4/17/2016,6539,668.27,502.54,4369817.53,3286109.06,1083708.47
+Asia,Vietnam,Clothes,Online,C,8/9/2011,387406098,8/11/2011,928,109.28,35.84,101411.84,33259.52,68152.32
+Australia and Oceania,Australia,Beverages,Online,C,3/20/2012,754796206,4/8/2012,9826,47.45,31.79,466243.70,312368.54,153875.16
+Middle East and North Africa,Iraq,Beverages,Offline,C,9/27/2011,400123631,11/7/2011,4329,47.45,31.79,205411.05,137618.91,67792.14
+Asia,Mongolia,Beverages,Online,C,4/2/2016,304687201,5/1/2016,2569,47.45,31.79,121899.05,81668.51,40230.54
+Sub-Saharan Africa,Cape Verde,Meat,Offline,L,3/10/2010,170098245,3/19/2010,4705,421.89,364.69,1984992.45,1715866.45,269126.00
+Europe,Portugal,Meat,Online,L,2/11/2013,668280589,3/28/2013,7932,421.89,364.69,3346431.48,2892721.08,453710.40
+Sub-Saharan Africa,Djibouti,Personal Care,Offline,C,5/20/2015,291470563,5/30/2015,1472,81.73,56.67,120306.56,83418.24,36888.32
+Middle East and North Africa,Somalia,Fruits,Offline,M,3/7/2012,302216994,3/29/2012,1579,9.33,6.92,14732.07,10926.68,3805.39
+Central America and the Caribbean,Grenada,Cereal,Offline,L,12/4/2014,683381211,12/11/2014,6542,205.70,117.11,1345689.40,766133.62,579555.78
+Sub-Saharan Africa,Niger,Office Supplies,Online,L,2/24/2017,588137042,3/28/2017,1675,651.21,524.96,1090776.75,879308.00,211468.75
+Sub-Saharan Africa,Rwanda,Personal Care,Offline,C,6/18/2013,589970815,7/13/2013,4329,81.73,56.67,353809.17,245324.43,108484.74
+Australia and Oceania,Fiji,Baby Food,Offline,M,11/23/2010,432681357,11/28/2010,8884,255.28,159.42,2267907.52,1416287.28,851620.24
+Europe,Albania,Household,Online,C,7/14/2017,380379998,7/16/2017,1749,668.27,502.54,1168804.23,878942.46,289861.77
+Europe,Netherlands,Clothes,Online,H,1/16/2016,767490565,2/23/2016,6368,109.28,35.84,695895.04,228229.12,467665.92
+Australia and Oceania,East Timor,Vegetables,Online,M,11/6/2012,648749387,12/18/2012,8215,154.06,90.93,1265602.90,746989.95,518612.95
+Central America and the Caribbean,Barbados,Fruits,Online,L,9/5/2011,949205291,10/11/2011,9794,9.33,6.92,91378.02,67774.48,23603.54
+Asia,Sri Lanka,Meat,Offline,H,4/22/2017,414219605,4/27/2017,5641,421.89,364.69,2379881.49,2057216.29,322665.20
+Sub-Saharan Africa,Chad,Snacks,Offline,C,8/25/2016,559466159,9/15/2016,7324,152.58,97.44,1117495.92,713650.56,403845.36
+Europe,Iceland,Snacks,Offline,L,10/30/2012,720931279,11/18/2012,8441,152.58,97.44,1287927.78,822491.04,465436.74
+North America,Mexico,Office Supplies,Offline,H,10/29/2013,304913794,11/21/2013,9623,651.21,524.96,6266593.83,5051690.08,1214903.75
+Europe,United Kingdom,Snacks,Online,L,7/13/2013,138025033,8/3/2013,3529,152.58,97.44,538454.82,343865.76,194589.06
+Asia,Brunei,Clothes,Offline,H,9/10/2010,217188823,10/19/2010,9854,109.28,35.84,1076845.12,353167.36,723677.76
+Central America and the Caribbean,Grenada,Meat,Online,M,9/10/2012,159641492,9/24/2012,320,421.89,364.69,135004.80,116700.80,18304.00
+Europe,Andorra,Meat,Offline,H,8/16/2016,552931869,9/9/2016,3682,421.89,364.69,1553398.98,1342788.58,210610.40
+Sub-Saharan Africa,Zimbabwe,Snacks,Offline,L,1/26/2013,704921281,2/5/2013,727,152.58,97.44,110925.66,70838.88,40086.78
+Sub-Saharan Africa,Guinea-Bissau,Snacks,Online,L,8/9/2012,893783557,9/28/2012,9271,152.58,97.44,1414569.18,903366.24,511202.94
+Asia,Brunei,Office Supplies,Online,H,9/25/2011,118005025,10/30/2011,9164,651.21,524.96,5967688.44,4810733.44,1156955.00
+Middle East and North Africa,Iran,Snacks,Offline,M,10/18/2011,146384513,12/4/2011,7285,152.58,97.44,1111545.30,709850.40,401694.90
+Sub-Saharan Africa,Cape Verde,Clothes,Online,C,3/20/2015,568033349,4/17/2015,2546,109.28,35.84,278226.88,91248.64,186978.24
+Europe,Liechtenstein,Fruits,Online,L,2/8/2014,142375361,2/19/2014,888,9.33,6.92,8285.04,6144.96,2140.08
+Asia,Brunei,Beverages,Online,C,10/21/2016,849146878,11/30/2016,286,47.45,31.79,13570.70,9091.94,4478.76
+Central America and the Caribbean,Panama,Personal Care,Online,H,10/9/2013,238396728,11/27/2013,5744,81.73,56.67,469457.12,325512.48,143944.64
+Middle East and North Africa,Yemen,Snacks,Online,H,9/6/2011,880486238,10/10/2011,4299,152.58,97.44,655941.42,418894.56,237046.86
+Europe,Belgium,Cosmetics,Offline,C,6/27/2014,916089236,7/28/2014,17,437.20,263.33,7432.40,4476.61,2955.79
+Asia,Brunei,Cereal,Online,H,1/22/2012,806192052,2/28/2012,8998,205.70,117.11,1850888.60,1053755.78,797132.82
+Asia,Malaysia,Cereal,Online,M,4/9/2014,182093513,5/17/2014,4372,205.70,117.11,899320.40,512004.92,387315.48
+Asia,Japan,Fruits,Offline,H,11/26/2016,995404946,12/31/2016,1299,9.33,6.92,12119.67,8989.08,3130.59
+Sub-Saharan Africa,South Sudan,Beverages,Online,C,1/12/2013,768050181,1/28/2013,1971,47.45,31.79,93523.95,62658.09,30865.86
+Europe,Luxembourg,Fruits,Offline,L,12/6/2011,242265546,1/7/2012,614,9.33,6.92,5728.62,4248.88,1479.74
+Sub-Saharan Africa,Swaziland,Office Supplies,Offline,M,7/31/2012,230599868,8/22/2012,8480,651.21,524.96,5522260.80,4451660.80,1070600.00
+Europe,Malta,Cosmetics,Online,M,1/12/2015,265914475,2/21/2015,8857,437.20,263.33,3872280.40,2332313.81,1539966.59
+North America,Canada,Household,Offline,M,8/10/2016,851383197,9/5/2016,2062,668.27,502.54,1377972.74,1036237.48,341735.26
+Central America and the Caribbean,Jamaica,Personal Care,Offline,L,9/16/2015,310492360,10/21/2015,444,81.73,56.67,36288.12,25161.48,11126.64
+Europe,Slovakia,Snacks,Online,L,7/26/2015,637040793,8/4/2015,3382,152.58,97.44,516025.56,329542.08,186483.48
+Sub-Saharan Africa,Mauritania,Beverages,Online,H,12/3/2012,745139825,12/8/2012,2288,47.45,31.79,108565.60,72735.52,35830.08
+Sub-Saharan Africa,Burkina Faso,Household,Online,M,12/7/2016,519213283,12/24/2016,5603,668.27,502.54,3744316.81,2815731.62,928585.19
+Asia,Kazakhstan,Vegetables,Online,C,2/9/2015,363997495,2/11/2015,3802,154.06,90.93,585736.12,345715.86,240020.26
+Europe,Andorra,Personal Care,Offline,L,12/12/2014,754541289,12/19/2014,4390,81.73,56.67,358794.70,248781.30,110013.40
+Central America and the Caribbean,Jamaica,Household,Online,H,6/11/2017,886205995,7/21/2017,6902,668.27,502.54,4612399.54,3468531.08,1143868.46
+Sub-Saharan Africa,Republic of the Congo,Baby Food,Online,C,4/19/2013,924665439,6/7/2013,7906,255.28,159.42,2018243.68,1260374.52,757869.16
+Asia,Myanmar,Household,Online,H,12/30/2016,655905950,2/11/2017,6001,668.27,502.54,4010288.27,3015742.54,994545.73
+Sub-Saharan Africa,Benin,Beverages,Offline,H,1/3/2010,836226356,1/26/2010,6816,47.45,31.79,323419.20,216680.64,106738.56
+Middle East and North Africa,Turkey,Household,Offline,C,9/25/2012,942237985,9/25/2012,8013,668.27,502.54,5354847.51,4026853.02,1327994.49
+Asia,South Korea,Cereal,Online,H,7/24/2012,520864665,8/20/2012,4284,205.70,117.11,881218.80,501699.24,379519.56
+Middle East and North Africa,Bahrain,Snacks,Offline,H,2/1/2013,539342725,2/15/2013,2353,152.58,97.44,359020.74,229276.32,129744.42
+Asia,Kyrgyzstan,Baby Food,Offline,M,3/11/2015,235220992,3/26/2015,5974,255.28,159.42,1525042.72,952375.08,572667.64
+Asia,Tajikistan,Cereal,Online,C,3/27/2013,266360795,5/13/2013,933,205.70,117.11,191918.10,109263.63,82654.47
+Asia,Singapore,Baby Food,Online,H,1/6/2014,460935962,1/16/2014,49,255.28,159.42,12508.72,7811.58,4697.14
+Sub-Saharan Africa,Botswana,Cereal,Online,M,3/31/2010,267432820,4/24/2010,8169,205.70,117.11,1680363.30,956671.59,723691.71
+Sub-Saharan Africa,Seychelles ,Cereal,Offline,H,8/20/2014,104650199,10/1/2014,7174,205.70,117.11,1475691.80,840147.14,635544.66
+Central America and the Caribbean,Honduras,Cosmetics,Online,L,8/30/2010,911699426,10/3/2010,975,437.20,263.33,426270.00,256746.75,169523.25
+Middle East and North Africa,Yemen,Baby Food,Offline,L,12/14/2016,998004329,12/20/2016,514,255.28,159.42,131213.92,81941.88,49272.04
+Asia,Cambodia,Personal Care,Online,L,5/3/2015,993301236,6/1/2015,8764,81.73,56.67,716281.72,496655.88,219625.84
+Europe,Serbia,Vegetables,Offline,L,3/16/2015,697638976,3/26/2015,5731,154.06,90.93,882917.86,521119.83,361798.03
+Middle East and North Africa,Bahrain,Cosmetics,Online,C,11/16/2011,431378877,12/8/2011,3451,437.20,263.33,1508777.20,908751.83,600025.37
+Australia and Oceania,Federated States of Micronesia,Vegetables,Offline,C,2/1/2013,585194766,2/25/2013,990,154.06,90.93,152519.40,90020.70,62498.70
+Central America and the Caribbean,Haiti,Personal Care,Offline,C,7/1/2012,270072972,8/9/2012,9449,81.73,56.67,772266.77,535474.83,236791.94
+Europe,Czech Republic,Baby Food,Online,C,3/10/2016,467312324,4/8/2016,6956,255.28,159.42,1775727.68,1108925.52,666802.16
+Middle East and North Africa,Azerbaijan,Fruits,Offline,C,3/2/2016,878524148,3/20/2016,3673,9.33,6.92,34269.09,25417.16,8851.93
+Central America and the Caribbean,Antigua and Barbuda ,Cosmetics,Online,C,11/8/2016,375632274,11/28/2016,6792,437.20,263.33,2969462.40,1788537.36,1180925.04
+Sub-Saharan Africa,Senegal,Fruits,Offline,M,3/3/2016,150873029,3/13/2016,5537,9.33,6.92,51660.21,38316.04,13344.17
+Sub-Saharan Africa,Malawi,Vegetables,Offline,C,11/18/2016,566795241,11/22/2016,6162,154.06,90.93,949317.72,560310.66,389007.06
+Asia,Bhutan,Personal Care,Online,M,4/4/2015,706260240,5/4/2015,6954,81.73,56.67,568350.42,394083.18,174267.24
+Europe,Slovenia,Clothes,Online,L,5/26/2012,622441852,5/28/2012,3231,109.28,35.84,353083.68,115799.04,237284.64
+Middle East and North Africa,Azerbaijan,Beverages,Offline,H,6/30/2010,888826406,7/1/2010,2340,47.45,31.79,111033.00,74388.60,36644.40
+Europe,Bulgaria,Meat,Online,C,7/27/2016,349212729,9/11/2016,8662,421.89,364.69,3654411.18,3158944.78,495466.40
+Asia,Tajikistan,Meat,Offline,L,1/1/2016,167712152,1/16/2016,8607,421.89,364.69,3631207.23,3138886.83,492320.40
+Middle East and North Africa,Egypt,Fruits,Offline,M,2/28/2014,678748500,3/29/2014,5619,9.33,6.92,52425.27,38883.48,13541.79
+Australia and Oceania,Fiji,Household,Online,C,6/26/2017,937058103,7/16/2017,5171,668.27,502.54,3455624.17,2598634.34,856989.83
+Middle East and North Africa,Turkey,Clothes,Online,M,7/19/2014,967689788,7/28/2014,9767,109.28,35.84,1067337.76,350049.28,717288.48
+Sub-Saharan Africa,Togo,Cosmetics,Offline,L,2/14/2010,416004884,3/17/2010,3945,437.20,263.33,1724754.00,1038836.85,685917.15
+Australia and Oceania,Tuvalu,Baby Food,Offline,C,11/7/2013,797677218,11/14/2013,9270,255.28,159.42,2366445.60,1477823.40,888622.20
+Central America and the Caribbean,Belize,Snacks,Online,C,9/16/2013,548693120,10/10/2013,9342,152.58,97.44,1425402.36,910284.48,515117.88
+Asia,South Korea,Fruits,Online,H,2/4/2010,875351417,2/8/2010,4791,9.33,6.92,44700.03,33153.72,11546.31
+Sub-Saharan Africa,Gabon,Snacks,Online,H,1/22/2012,804263436,2/28/2012,8278,152.58,97.44,1263057.24,806608.32,456448.92
+Europe,Hungary,Cosmetics,Online,H,10/6/2010,332353007,11/22/2010,9495,437.20,263.33,4151214.00,2500318.35,1650895.65
+Europe,Slovakia,Meat,Offline,H,8/8/2013,876856458,8/29/2013,166,421.89,364.69,70033.74,60538.54,9495.20
+Asia,Singapore,Vegetables,Online,M,2/1/2010,325322616,3/12/2010,9046,154.06,90.93,1393626.76,822552.78,571073.98
+Asia,Myanmar,Household,Online,L,7/8/2013,685612809,8/17/2013,6921,668.27,502.54,4625096.67,3478079.34,1147017.33
+Sub-Saharan Africa,Central African Republic,Beverages,Offline,M,10/5/2011,435900866,10/7/2011,1608,47.45,31.79,76299.60,51118.32,25181.28
+Asia,Nepal,Baby Food,Online,C,6/15/2016,374673116,7/4/2016,2956,255.28,159.42,754607.68,471245.52,283362.16
+Sub-Saharan Africa,Mauritius ,Cereal,Offline,L,10/21/2013,470728385,11/9/2013,7845,205.70,117.11,1613716.50,918727.95,694988.55
+Europe,Bulgaria,Beverages,Offline,C,10/19/2013,313178002,12/6/2013,5185,47.45,31.79,246028.25,164831.15,81197.10
+Europe,Kosovo,Personal Care,Online,L,2/17/2016,461445796,3/22/2016,920,81.73,56.67,75191.60,52136.40,23055.20
+Sub-Saharan Africa,Lesotho,Personal Care,Online,L,12/26/2013,195268094,1/21/2014,3023,81.73,56.67,247069.79,171313.41,75756.38
+Central America and the Caribbean,El Salvador,Snacks,Offline,C,12/20/2012,664693725,12/24/2012,6499,152.58,97.44,991617.42,633262.56,358354.86
+Sub-Saharan Africa,Mozambique,Snacks,Online,C,3/9/2012,840084016,3/26/2012,8384,152.58,97.44,1279230.72,816936.96,462293.76
+Sub-Saharan Africa,Senegal,Cosmetics,Offline,L,8/5/2015,662112796,9/24/2015,2745,437.20,263.33,1200114.00,722840.85,477273.15
+Australia and Oceania,Samoa ,Vegetables,Online,C,1/20/2013,591766393,3/10/2013,5681,154.06,90.93,875214.86,516573.33,358641.53
+Sub-Saharan Africa,Sao Tome and Principe,Clothes,Online,H,6/11/2014,260343635,6/12/2014,322,109.28,35.84,35188.16,11540.48,23647.68
+Asia,Japan,Meat,Offline,C,7/20/2015,719455850,7/27/2015,1829,421.89,364.69,771636.81,667018.01,104618.80
+Europe,Spain,Cosmetics,Offline,C,1/3/2017,391026866,1/8/2017,2394,437.20,263.33,1046656.80,630412.02,416244.78
+Asia,Laos,Personal Care,Offline,L,12/15/2012,917293012,1/30/2013,6241,81.73,56.67,510076.93,353677.47,156399.46
+Australia and Oceania,Solomon Islands,Baby Food,Offline,L,7/8/2017,410803115,7/27/2017,4626,255.28,159.42,1180925.28,737476.92,443448.36
+Europe,Germany,Vegetables,Offline,C,8/7/2015,204418504,9/3/2015,833,154.06,90.93,128331.98,75744.69,52587.29
+Sub-Saharan Africa,Democratic Republic of the Congo,Personal Care,Online,C,2/5/2012,801313006,2/15/2012,5180,81.73,56.67,423361.40,293550.60,129810.80
+Europe,Romania,Meat,Offline,L,12/22/2012,524972951,1/17/2013,17,421.89,364.69,7172.13,6199.73,972.40
+Europe,Latvia,Beverages,Online,C,11/27/2013,469197165,12/11/2013,4723,47.45,31.79,224106.35,150144.17,73962.18
+Middle East and North Africa,Jordan,Office Supplies,Offline,L,8/17/2011,448096978,9/18/2011,708,651.21,524.96,461056.68,371671.68,89385.00
+Australia and Oceania,Fiji,Clothes,Online,H,4/17/2015,346096217,5/10/2015,6417,109.28,35.84,701249.76,229985.28,471264.48
+Central America and the Caribbean,Cuba,Fruits,Online,H,5/28/2012,567931210,7/12/2012,2321,9.33,6.92,21654.93,16061.32,5593.61
+Europe,Sweden,Household,Offline,H,6/23/2010,688650786,8/7/2010,5926,668.27,502.54,3960168.02,2978052.04,982115.98
+Australia and Oceania,Marshall Islands,Baby Food,Online,M,6/30/2010,803616273,7/30/2010,6768,255.28,159.42,1727735.04,1078954.56,648780.48
+North America,Greenland,Snacks,Offline,M,9/26/2010,178501498,11/15/2010,1415,152.58,97.44,215900.70,137877.60,78023.10
+Sub-Saharan Africa,Mauritius ,Cosmetics,Offline,H,7/16/2010,399292790,7/28/2010,8465,437.20,263.33,3700898.00,2229088.45,1471809.55
+Sub-Saharan Africa,Comoros,Office Supplies,Online,L,2/2/2014,422288978,2/21/2014,3548,651.21,524.96,2310493.08,1862558.08,447935.00
+Asia,Cambodia,Vegetables,Offline,C,7/1/2011,624101388,7/31/2011,4324,154.06,90.93,666155.44,393181.32,272974.12
+Australia and Oceania,Marshall Islands,Cereal,Online,C,11/14/2012,551653850,1/1/2013,5488,205.70,117.11,1128881.60,642699.68,486181.92
+Central America and the Caribbean,Dominica,Meat,Online,L,3/26/2014,272182691,4/30/2014,3762,421.89,364.69,1587150.18,1371963.78,215186.40
+Europe,Macedonia,Office Supplies,Online,M,6/17/2016,823236739,8/1/2016,2900,651.21,524.96,1888509.00,1522384.00,366125.00
+Sub-Saharan Africa,Mozambique,Personal Care,Offline,L,12/2/2013,162677323,1/11/2014,8690,81.73,56.67,710233.70,492462.30,217771.40
+Central America and the Caribbean,The Bahamas,Household,Online,M,5/29/2013,818678271,6/25/2013,3948,668.27,502.54,2638329.96,1984027.92,654302.04
+Europe,Armenia,Fruits,Offline,L,3/17/2015,439725911,4/7/2015,3524,9.33,6.92,32878.92,24386.08,8492.84
+Asia,Japan,Beverages,Offline,H,11/17/2016,344619071,12/16/2016,9296,47.45,31.79,441095.20,295519.84,145575.36
+Sub-Saharan Africa,Ghana,Baby Food,Offline,M,1/20/2017,572469079,2/6/2017,5177,255.28,159.42,1321584.56,825317.34,496267.22
+Sub-Saharan Africa,Lesotho,Beverages,Offline,M,8/22/2011,332699763,10/5/2011,2108,47.45,31.79,100024.60,67013.32,33011.28
+Europe,Cyprus,Snacks,Online,H,10/1/2012,255047452,10/30/2012,3064,152.58,97.44,467505.12,298556.16,168948.96
+Australia and Oceania,Samoa ,Cosmetics,Online,H,8/22/2014,139560973,9/21/2014,8048,437.20,263.33,3518585.60,2119279.84,1399305.76
+Middle East and North Africa,Tunisia ,Clothes,Online,M,8/14/2012,306601655,9/2/2012,9098,109.28,35.84,994229.44,326072.32,668157.12
+Asia,Indonesia,Beverages,Offline,M,6/6/2014,246843326,6/12/2014,5280,47.45,31.79,250536.00,167851.20,82684.80
+Asia,Singapore,Office Supplies,Online,M,9/24/2013,871272313,10/9/2013,7694,651.21,524.96,5010409.74,4039042.24,971367.50
+Central America and the Caribbean,Panama,Fruits,Online,M,8/8/2016,461187446,8/14/2016,4469,9.33,6.92,41695.77,30925.48,10770.29
+Sub-Saharan Africa,Burundi,Cosmetics,Offline,M,1/18/2015,518200051,1/22/2015,5766,437.20,263.33,2520895.20,1518360.78,1002534.42
+Sub-Saharan Africa,Chad,Beverages,Offline,M,6/30/2013,814233958,7/23/2013,8777,47.45,31.79,416468.65,279020.83,137447.82
+Asia,Japan,Cosmetics,Offline,H,6/7/2017,741525495,7/16/2017,2727,437.20,263.33,1192244.40,718100.91,474143.49
+Europe,Malta,Meat,Offline,C,6/26/2014,662623488,7/11/2014,3870,421.89,364.69,1632714.30,1411350.30,221364.00
+Europe,San Marino,Vegetables,Offline,M,1/22/2016,560389268,2/22/2016,492,154.06,90.93,75797.52,44737.56,31059.96
+Middle East and North Africa,Morocco,Fruits,Offline,C,9/12/2015,487996661,9/13/2015,7911,9.33,6.92,73809.63,54744.12,19065.51
+North America,Greenland,Vegetables,Online,L,7/29/2015,118931996,8/4/2015,3475,154.06,90.93,535358.50,315981.75,219376.75
+Sub-Saharan Africa,Ethiopia,Cosmetics,Online,L,2/24/2015,996994102,3/10/2015,1565,437.20,263.33,684218.00,412111.45,272106.55
+Asia,India,Personal Care,Online,C,12/10/2014,686294305,12/15/2014,8591,81.73,56.67,702142.43,486851.97,215290.46
+Australia and Oceania,New Zealand,Baby Food,Offline,C,10/2/2012,421256434,11/20/2012,7995,255.28,159.42,2040963.60,1274562.90,766400.70
+Asia,Bangladesh,Fruits,Online,L,1/8/2015,156616818,2/4/2015,5252,9.33,6.92,49001.16,36343.84,12657.32
+Asia,Brunei,Vegetables,Online,C,4/25/2010,817424285,5/6/2010,2866,154.06,90.93,441535.96,260605.38,180930.58
+Sub-Saharan Africa,Ethiopia,Cereal,Offline,M,12/27/2010,249040162,2/1/2011,5373,205.70,117.11,1105226.10,629232.03,475994.07
+Europe,France,Office Supplies,Offline,C,7/12/2011,867138278,8/4/2011,4341,651.21,524.96,2826902.61,2278851.36,548051.25
+Sub-Saharan Africa,Niger,Beverages,Offline,L,1/22/2015,207704961,1/29/2015,3368,47.45,31.79,159811.60,107068.72,52742.88
+Central America and the Caribbean,Nicaragua,Vegetables,Offline,H,5/31/2014,377039039,6/14/2014,3085,154.06,90.93,475275.10,280519.05,194756.05
+Asia,Kazakhstan,Cereal,Offline,H,1/21/2011,401751840,2/21/2011,6152,205.70,117.11,1265466.40,720460.72,545005.68
+Sub-Saharan Africa,Lesotho,Clothes,Offline,L,4/23/2011,278767192,5/25/2011,2262,109.28,35.84,247191.36,81070.08,166121.28
+Europe,Montenegro,Household,Online,H,12/25/2014,525321424,12/31/2014,3138,668.27,502.54,2097031.26,1576970.52,520060.74
+Australia and Oceania,Vanuatu,Vegetables,Online,H,8/5/2011,828963363,9/6/2011,7535,154.06,90.93,1160842.10,685157.55,475684.55
+Europe,Cyprus,Clothes,Online,H,6/10/2014,497554337,7/28/2014,6240,109.28,35.84,681907.20,223641.60,458265.60
+Sub-Saharan Africa,Burundi,Fruits,Offline,M,5/22/2011,709268176,6/25/2011,7070,9.33,6.92,65963.10,48924.40,17038.70
+Middle East and North Africa,Saudi Arabia,Snacks,Offline,L,1/29/2014,462591207,3/1/2014,9873,152.58,97.44,1506422.34,962025.12,544397.22
+Europe,Vatican City,Personal Care,Offline,M,4/15/2016,626322257,5/5/2016,1529,81.73,56.67,124965.17,86648.43,38316.74
+Australia and Oceania,Tonga,Vegetables,Offline,M,11/9/2012,789572656,12/24/2012,950,154.06,90.93,146357.00,86383.50,59973.50
+Europe,Netherlands,Baby Food,Offline,C,1/21/2011,611766231,2/26/2011,4077,255.28,159.42,1040776.56,649955.34,390821.22
+Central America and the Caribbean,Honduras,Office Supplies,Offline,C,8/21/2011,272639310,9/29/2011,8885,651.21,524.96,5786000.85,4664269.60,1121731.25
+Central America and the Caribbean,Honduras,Fruits,Online,H,8/22/2012,922240722,9/29/2012,379,9.33,6.92,3536.07,2622.68,913.39
+Europe,Montenegro,Baby Food,Offline,H,3/3/2013,630931794,4/1/2013,5593,255.28,159.42,1427781.04,891636.06,536144.98
+Europe,San Marino,Office Supplies,Offline,L,3/4/2017,239386355,4/20/2017,8597,651.21,524.96,5598452.37,4513081.12,1085371.25
+Asia,Bangladesh,Clothes,Online,C,7/11/2014,208590734,8/19/2014,5488,109.28,35.84,599728.64,196689.92,403038.72
+Sub-Saharan Africa,Cameroon,Personal Care,Offline,M,2/3/2015,169843757,3/19/2015,9397,81.73,56.67,768016.81,532527.99,235488.82
+Asia,Philippines,Cereal,Online,H,9/1/2014,274756753,9/9/2014,5484,205.70,117.11,1128058.80,642231.24,485827.56
+Middle East and North Africa,Iraq,Personal Care,Online,H,11/19/2013,745253551,12/12/2013,5942,81.73,56.67,485639.66,336733.14,148906.52
+Sub-Saharan Africa,Lesotho,Cereal,Online,C,6/15/2014,523570477,7/23/2014,4994,205.70,117.11,1027265.80,584847.34,442418.46
+Asia,Uzbekistan,Snacks,Online,H,5/10/2015,422256362,6/23/2015,3896,152.58,97.44,594451.68,379626.24,214825.44
+Europe,Germany,Household,Offline,M,8/21/2016,874172532,10/2/2016,5933,668.27,502.54,3964845.91,2981569.82,983276.09
+Australia and Oceania,Papua New Guinea,Household,Offline,C,8/18/2015,582492816,9/11/2015,1423,668.27,502.54,950948.21,715114.42,235833.79
+Europe,Iceland,Personal Care,Offline,C,9/19/2010,570703542,11/3/2010,2715,81.73,56.67,221896.95,153859.05,68037.90
+Europe,Hungary,Cosmetics,Online,M,9/20/2012,132603538,11/6/2012,9188,437.20,263.33,4016993.60,2419476.04,1597517.56
+Central America and the Caribbean,Panama,Cereal,Offline,M,10/20/2010,882304131,11/25/2010,2254,205.70,117.11,463647.80,263965.94,199681.86
+Middle East and North Africa,Tunisia ,Baby Food,Online,M,2/13/2014,904229152,2/19/2014,355,255.28,159.42,90624.40,56594.10,34030.30
+Middle East and North Africa,Iraq,Office Supplies,Offline,L,3/6/2010,603114926,3/22/2010,3964,651.21,524.96,2581396.44,2080941.44,500455.00
+Sub-Saharan Africa,Liberia,Snacks,Online,H,1/20/2014,454010283,1/30/2014,587,152.58,97.44,89564.46,57197.28,32367.18
+Europe,Czech Republic,Meat,Offline,L,8/6/2011,552276551,9/24/2011,9759,421.89,364.69,4117224.51,3559009.71,558214.80
+Europe,Macedonia,Snacks,Offline,M,3/22/2016,163587558,4/19/2016,8048,152.58,97.44,1227963.84,784197.12,443766.72
+Central America and the Caribbean,Haiti,Beverages,Offline,M,2/16/2012,873929631,2/25/2012,4053,47.45,31.79,192314.85,128844.87,63469.98
+Sub-Saharan Africa,Mauritania,Cereal,Online,L,1/26/2011,739601600,3/10/2011,3404,205.70,117.11,700202.80,398642.44,301560.36
+Sub-Saharan Africa,Nigeria,Cosmetics,Online,M,9/25/2010,137214791,11/2/2010,3761,437.20,263.33,1644309.20,990384.13,653925.07
+Sub-Saharan Africa,Tanzania,Fruits,Offline,C,8/26/2013,413693034,10/13/2013,9817,9.33,6.92,91592.61,67933.64,23658.97
+Asia,Laos,Fruits,Offline,H,11/7/2015,736272656,12/12/2015,8296,9.33,6.92,77401.68,57408.32,19993.36
+Sub-Saharan Africa,Nigeria,Baby Food,Offline,L,8/18/2010,342502486,8/18/2010,2952,255.28,159.42,753586.56,470607.84,282978.72
+Central America and the Caribbean,Dominica,Cosmetics,Offline,L,1/29/2015,790243852,2/10/2015,9572,437.20,263.33,4184878.40,2520594.76,1664283.64
+Asia,Malaysia,Personal Care,Online,M,4/9/2013,107670581,5/1/2013,972,81.73,56.67,79441.56,55083.24,24358.32
+Australia and Oceania,Nauru,Household,Online,H,1/24/2013,443269002,3/13/2013,2003,668.27,502.54,1338544.81,1006587.62,331957.19
+Europe,Andorra,Baby Food,Offline,M,1/10/2012,415837943,2/23/2012,4543,255.28,159.42,1159737.04,724245.06,435491.98
+Australia and Oceania,Papua New Guinea,Beverages,Offline,L,5/8/2016,964488732,6/6/2016,2504,47.45,31.79,118814.80,79602.16,39212.64
+Europe,Hungary,Baby Food,Offline,H,5/17/2014,398645198,5/26/2014,6828,255.28,159.42,1743051.84,1088519.76,654532.08
+Sub-Saharan Africa,Burundi,Fruits,Online,C,8/23/2010,248043668,8/29/2010,488,9.33,6.92,4553.04,3376.96,1176.08
+North America,Canada,Cosmetics,Online,C,7/20/2014,312732970,8/17/2014,3490,437.20,263.33,1525828.00,919021.70,606806.30
+Europe,Latvia,Personal Care,Offline,H,11/2/2013,913074433,12/17/2013,7870,81.73,56.67,643215.10,445992.90,197222.20
+Middle East and North Africa,Iraq,Household,Offline,C,3/31/2016,639741885,4/18/2016,2695,668.27,502.54,1800987.65,1354345.30,446642.35
+Sub-Saharan Africa,Angola,Office Supplies,Online,C,6/9/2015,403721654,6/29/2015,9064,651.21,524.96,5902567.44,4758237.44,1144330.00
+Asia,Bhutan,Clothes,Offline,H,6/27/2017,286312568,7/9/2017,5106,109.28,35.84,557983.68,182999.04,374984.64
+Europe,Andorra,Fruits,Offline,H,5/27/2014,889125955,6/15/2014,983,9.33,6.92,9171.39,6802.36,2369.03
+Australia and Oceania,Australia,Beverages,Offline,M,8/10/2010,184085643,8/14/2010,3887,47.45,31.79,184438.15,123567.73,60870.42
+Europe,Austria,Fruits,Offline,H,8/6/2011,263427960,9/20/2011,3042,9.33,6.92,28381.86,21050.64,7331.22
+Asia,Sri Lanka,Beverages,Offline,H,7/23/2012,589701735,7/26/2012,4703,47.45,31.79,223157.35,149508.37,73648.98
+Asia,Bhutan,Vegetables,Offline,C,5/3/2017,245768296,5/12/2017,7155,154.06,90.93,1102299.30,650604.15,451695.15
+Australia and Oceania,Vanuatu,Beverages,Offline,L,11/22/2011,184801471,12/20/2011,5717,47.45,31.79,271271.65,181743.43,89528.22
+Australia and Oceania,Solomon Islands,Baby Food,Online,M,7/21/2013,980287587,8/30/2013,7736,255.28,159.42,1974846.08,1233273.12,741572.96
+Middle East and North Africa,Tunisia ,Baby Food,Online,C,3/14/2014,576025474,3/25/2014,7593,255.28,159.42,1938341.04,1210476.06,727864.98
+Asia,Bangladesh,Snacks,Online,H,5/10/2014,136126458,6/2/2014,1699,152.58,97.44,259233.42,165550.56,93682.86
+Sub-Saharan Africa,Mali,Beverages,Online,L,10/26/2011,895014369,12/11/2011,3496,47.45,31.79,165885.20,111137.84,54747.36
+Asia,Turkmenistan,Beverages,Online,C,1/10/2013,107425534,1/21/2013,8458,47.45,31.79,401332.10,268879.82,132452.28
+Sub-Saharan Africa,Niger,Cosmetics,Offline,M,2/15/2014,498408782,3/28/2014,9089,437.20,263.33,3973710.80,2393406.37,1580304.43
+Sub-Saharan Africa,Benin,Cosmetics,Online,M,4/27/2012,813325440,5/15/2012,9927,437.20,263.33,4340084.40,2614076.91,1726007.49
+Sub-Saharan Africa,The Gambia,Baby Food,Offline,M,4/1/2017,767849338,4/17/2017,2537,255.28,159.42,647645.36,404448.54,243196.82
+Middle East and North Africa,Algeria,Fruits,Offline,L,11/18/2016,597966802,12/7/2016,520,9.33,6.92,4851.60,3598.40,1253.20
+Middle East and North Africa,United Arab Emirates,Personal Care,Online,C,8/18/2011,609976661,8/20/2011,4504,81.73,56.67,368111.92,255241.68,112870.24
+Europe,Liechtenstein,Meat,Online,H,7/12/2010,730490243,7/14/2010,7151,421.89,364.69,3016935.39,2607898.19,409037.20
+Middle East and North Africa,Yemen,Personal Care,Online,H,4/29/2012,956431376,6/14/2012,8153,81.73,56.67,666344.69,462030.51,204314.18
+Europe,Poland,Cereal,Online,L,11/1/2016,905036389,11/20/2016,9234,205.70,117.11,1899433.80,1081393.74,818040.06
+Australia and Oceania,Federated States of Micronesia,Meat,Offline,H,7/28/2013,263854110,7/30/2013,9149,421.89,364.69,3859871.61,3336548.81,523322.80
+Central America and the Caribbean,Honduras,Baby Food,Online,C,11/2/2015,140745866,12/6/2015,8684,255.28,159.42,2216851.52,1384403.28,832448.24
+Sub-Saharan Africa,Djibouti,Clothes,Online,C,6/28/2011,813885486,8/10/2011,5656,109.28,35.84,618087.68,202711.04,415376.64
+Europe,Montenegro,Clothes,Online,C,3/4/2012,381759297,3/25/2012,9914,109.28,35.84,1083401.92,355317.76,728084.16
+Europe,Belarus,Cosmetics,Offline,M,9/2/2011,613166129,10/21/2011,8338,437.20,263.33,3645373.60,2195645.54,1449728.06
+Sub-Saharan Africa,Democratic Republic of the Congo,Snacks,Offline,H,5/22/2012,197217309,6/11/2012,9839,152.58,97.44,1501234.62,958712.16,542522.46
+Central America and the Caribbean,The Bahamas,Clothes,Offline,M,1/9/2014,593336665,1/24/2014,359,109.28,35.84,39231.52,12866.56,26364.96
+Europe,Ukraine,Office Supplies,Offline,M,5/3/2017,181260526,6/3/2017,7872,651.21,524.96,5126325.12,4132485.12,993840.00
+Sub-Saharan Africa,Chad,Snacks,Online,L,10/14/2012,111037719,12/3/2012,7383,152.58,97.44,1126498.14,719399.52,407098.62
+Asia,Tajikistan,Office Supplies,Online,M,8/16/2014,253029572,9/3/2014,5928,651.21,524.96,3860372.88,3111962.88,748410.00
+Middle East and North Africa,Algeria,Clothes,Offline,H,8/27/2011,547909915,9/17/2011,7574,109.28,35.84,827686.72,271452.16,556234.56
+Asia,Myanmar,Vegetables,Online,M,6/19/2016,556665074,6/26/2016,8421,154.06,90.93,1297339.26,765721.53,531617.73
+Central America and the Caribbean,Dominican Republic,Household,Offline,L,3/19/2016,810593879,4/1/2016,1597,668.27,502.54,1067227.19,802556.38,264670.81
+Middle East and North Africa,Oman,Clothes,Offline,L,4/4/2014,561307656,5/12/2014,2264,109.28,35.84,247409.92,81141.76,166268.16
+Australia and Oceania,Fiji,Cosmetics,Offline,L,3/27/2011,930730235,4/15/2011,2614,437.20,263.33,1142840.80,688344.62,454496.18
+Central America and the Caribbean,Barbados,Clothes,Online,L,6/4/2016,861097943,6/12/2016,6872,109.28,35.84,750972.16,246292.48,504679.68
+Europe,Georgia,Snacks,Online,C,9/1/2013,264959609,10/18/2013,6291,152.58,97.44,959880.78,612995.04,346885.74
+Europe,Malta,Fruits,Online,L,7/31/2010,475176560,9/4/2010,4159,9.33,6.92,38803.47,28780.28,10023.19
+Europe,Armenia,Baby Food,Offline,H,1/23/2012,194922626,2/7/2012,791,255.28,159.42,201926.48,126101.22,75825.26
+Europe,France,Snacks,Offline,M,7/3/2016,447684133,8/14/2016,8538,152.58,97.44,1302728.04,831942.72,470785.32
+Europe,Liechtenstein,Personal Care,Online,H,1/4/2012,527259910,1/11/2012,6779,81.73,56.67,554047.67,384165.93,169881.74
+Asia,Uzbekistan,Beverages,Online,M,6/15/2010,247761285,7/3/2010,6925,47.45,31.79,328591.25,220145.75,108445.50
+Central America and the Caribbean,Nicaragua,Meat,Offline,C,6/3/2013,393612086,6/21/2013,7418,421.89,364.69,3129580.02,2705270.42,424309.60
+Sub-Saharan Africa,Rwanda,Clothes,Offline,M,12/30/2015,469548642,1/13/2016,8732,109.28,35.84,954232.96,312954.88,641278.08
+Asia,Vietnam,Fruits,Online,M,7/13/2010,950619781,7/17/2010,8373,9.33,6.92,78120.09,57941.16,20178.93
+Sub-Saharan Africa,Guinea,Cosmetics,Offline,M,3/2/2013,132186830,4/16/2013,5875,437.20,263.33,2568550.00,1547063.75,1021486.25
+Europe,Hungary,Baby Food,Online,M,8/10/2014,879923617,9/15/2014,7807,255.28,159.42,1992970.96,1244591.94,748379.02
+Europe,Portugal,Snacks,Offline,H,3/9/2014,279816472,4/14/2014,2767,152.58,97.44,422188.86,269616.48,152572.38
+Australia and Oceania,Solomon Islands,Beverages,Offline,C,2/4/2016,888164222,3/20/2016,6385,47.45,31.79,302968.25,202979.15,99989.10
+Sub-Saharan Africa,Cote d'Ivoire,Cosmetics,Online,H,6/11/2010,381578195,7/5/2010,6322,437.20,263.33,2763978.40,1664772.26,1099206.14
+Sub-Saharan Africa,Uganda,Household,Online,M,11/27/2014,106982219,12/22/2014,7271,668.27,502.54,4858991.17,3653968.34,1205022.83
+Central America and the Caribbean,Haiti,Fruits,Offline,H,5/14/2010,131612622,5/25/2010,5954,9.33,6.92,55550.82,41201.68,14349.14
+Europe,Cyprus,Snacks,Online,M,11/5/2012,593018233,12/11/2012,6128,152.58,97.44,935010.24,597112.32,337897.92
+Europe,Macedonia,Baby Food,Online,H,9/16/2016,349060380,9/28/2016,3578,255.28,159.42,913391.84,570404.76,342987.08
+Central America and the Caribbean,Trinidad and Tobago,Household,Online,M,8/11/2013,127912890,9/26/2013,1122,668.27,502.54,749798.94,563849.88,185949.06
+Sub-Saharan Africa,Cape Verde,Cosmetics,Offline,C,5/27/2011,278062093,5/28/2011,3607,437.20,263.33,1576980.40,949831.31,627149.09
+Central America and the Caribbean,Costa Rica,Fruits,Offline,H,3/21/2015,318306815,4/26/2015,2915,9.33,6.92,27196.95,20171.80,7025.15
+Middle East and North Africa,Somalia,Cereal,Online,H,2/13/2016,287758386,3/2/2016,2956,205.70,117.11,608049.20,346177.16,261872.04
+Asia,Brunei,Fruits,Offline,L,1/3/2010,295840632,1/6/2010,4672,9.33,6.92,43589.76,32330.24,11259.52
+Asia,Taiwan,Beverages,Online,H,7/30/2016,972289884,8/11/2016,1038,47.45,31.79,49253.10,32998.02,16255.08
+Middle East and North Africa,Afghanistan,Vegetables,Online,C,12/6/2014,317154967,12/9/2014,2058,154.06,90.93,317055.48,187133.94,129921.54
+Central America and the Caribbean,Guatemala,Meat,Offline,H,7/12/2015,450797212,8/30/2015,9767,421.89,364.69,4120599.63,3561927.23,558672.40
+Europe,Latvia,Household,Offline,C,12/18/2010,863890445,12/25/2010,3235,668.27,502.54,2161853.45,1625716.90,536136.55
+Europe,Armenia,Personal Care,Online,C,1/16/2010,667420995,1/18/2010,3559,81.73,56.67,290877.07,201688.53,89188.54
+Europe,Montenegro,Vegetables,Offline,H,4/10/2011,842687690,5/26/2011,8869,154.06,90.93,1366358.14,806458.17,559899.97
+Australia and Oceania,East Timor,Personal Care,Offline,H,3/25/2014,191301858,4/6/2014,9326,81.73,56.67,762213.98,528504.42,233709.56
+Middle East and North Africa,Lebanon,Cereal,Online,L,10/8/2015,285187327,10/22/2015,2123,205.70,117.11,436701.10,248624.53,188076.57
+Central America and the Caribbean,Grenada,Meat,Offline,M,10/20/2013,516580426,11/18/2013,6483,421.89,364.69,2735112.87,2364285.27,370827.60
+Sub-Saharan Africa,Seychelles ,Meat,Offline,L,2/9/2011,348029983,3/2/2011,8661,421.89,364.69,3653989.29,3158580.09,495409.20
+Central America and the Caribbean,Grenada,Office Supplies,Offline,L,7/7/2011,662397325,7/23/2011,6943,651.21,524.96,4521351.03,3644797.28,876553.75
+Sub-Saharan Africa,Nigeria,Snacks,Offline,L,2/19/2016,612856280,3/24/2016,6647,152.58,97.44,1014199.26,647683.68,366515.58
+Europe,San Marino,Beverages,Offline,L,1/2/2012,772893178,1/2/2012,5122,47.45,31.79,243038.90,162828.38,80210.52
+Sub-Saharan Africa,Mauritius ,Baby Food,Online,H,9/21/2013,886306846,10/27/2013,6746,255.28,159.42,1722118.88,1075447.32,646671.56
+Asia,Indonesia,Vegetables,Online,C,3/29/2014,317208611,4/17/2014,7932,154.06,90.93,1222003.92,721256.76,500747.16
+Sub-Saharan Africa,Republic of the Congo,Baby Food,Offline,L,5/11/2011,300022304,6/2/2011,2122,255.28,159.42,541704.16,338289.24,203414.92
+Europe,Czech Republic,Snacks,Online,M,7/5/2011,789484250,7/30/2011,4789,152.58,97.44,730705.62,466640.16,264065.46
+Sub-Saharan Africa,Republic of the Congo,Cereal,Offline,M,11/3/2010,910643279,12/22/2010,8438,205.70,117.11,1735696.60,988174.18,747522.42
+Central America and the Caribbean,Saint Kitts and Nevis ,Meat,Offline,L,2/17/2014,308860719,3/18/2014,7605,421.89,364.69,3208473.45,2773467.45,435006.00
+Middle East and North Africa,Somalia,Snacks,Online,M,11/14/2015,499810397,12/21/2015,3858,152.58,97.44,588653.64,375923.52,212730.12
+North America,Greenland,Clothes,Online,C,8/10/2011,819478642,8/18/2011,796,109.28,35.84,86986.88,28528.64,58458.24
+Australia and Oceania,Palau,Baby Food,Offline,L,11/22/2016,674164283,12/10/2016,9048,255.28,159.42,2309773.44,1442432.16,867341.28
+Sub-Saharan Africa,Mauritius ,Cereal,Offline,L,6/22/2010,890478646,6/24/2010,1275,205.70,117.11,262267.50,149315.25,112952.25
+Sub-Saharan Africa,Mauritania,Meat,Online,M,10/26/2013,565345561,12/2/2013,7170,421.89,364.69,3024951.30,2614827.30,410124.00
+North America,Canada,Household,Online,H,8/4/2011,216001355,8/15/2011,8456,668.27,502.54,5650891.12,4249478.24,1401412.88
+Australia and Oceania,Palau,Beverages,Online,M,1/10/2016,429994857,1/11/2016,3888,47.45,31.79,184485.60,123599.52,60886.08
+Australia and Oceania,Solomon Islands,Office Supplies,Online,C,2/17/2010,515187394,4/6/2010,4253,651.21,524.96,2769596.13,2232654.88,536941.25
+Sub-Saharan Africa,Nigeria,Office Supplies,Online,L,1/24/2012,749752795,2/23/2012,7368,651.21,524.96,4798115.28,3867905.28,930210.00
+Sub-Saharan Africa,Comoros,Beverages,Offline,M,9/29/2010,132177388,11/7/2010,3081,47.45,31.79,146193.45,97944.99,48248.46
+Asia,Thailand,Baby Food,Online,L,2/6/2015,431260001,2/11/2015,8273,255.28,159.42,2111931.44,1318881.66,793049.78
+Europe,Vatican City,Personal Care,Offline,M,5/24/2012,336111962,6/16/2012,1854,81.73,56.67,151527.42,105066.18,46461.24
+Sub-Saharan Africa,Equatorial Guinea,Personal Care,Online,M,6/20/2017,406157100,7/13/2017,9766,81.73,56.67,798175.18,553439.22,244735.96
+Europe,San Marino,Household,Offline,H,12/9/2015,821131742,12/9/2015,9985,668.27,502.54,6672675.95,5017861.90,1654814.05
+Sub-Saharan Africa,Sao Tome and Principe,Personal Care,Online,M,5/28/2013,931084716,7/7/2013,7513,81.73,56.67,614037.49,425761.71,188275.78
+Sub-Saharan Africa,Seychelles ,Baby Food,Offline,H,7/20/2016,606377351,8/25/2016,9388,255.28,159.42,2396568.64,1496634.96,899933.68
+Sub-Saharan Africa,Togo,Vegetables,Online,L,3/7/2014,687683475,4/1/2014,9677,154.06,90.93,1490838.62,879929.61,610909.01
+Middle East and North Africa,Somalia,Cosmetics,Offline,C,4/23/2011,735989415,4/27/2011,4478,437.20,263.33,1957781.60,1179191.74,778589.86
+Central America and the Caribbean,Antigua and Barbuda ,Snacks,Offline,M,3/27/2010,382594001,4/7/2010,6922,152.58,97.44,1056158.76,674479.68,381679.08
+Europe,Liechtenstein,Household,Online,M,4/27/2014,679108560,6/11/2014,2169,668.27,502.54,1449477.63,1090009.26,359468.37
+Sub-Saharan Africa,Equatorial Guinea,Beverages,Online,M,8/18/2016,947456920,9/30/2016,2412,47.45,31.79,114449.40,76677.48,37771.92
+Europe,Lithuania,Personal Care,Offline,L,4/19/2011,129875409,4/26/2011,1875,81.73,56.67,153243.75,106256.25,46987.50
+Central America and the Caribbean,Panama,Baby Food,Offline,H,6/14/2012,838912856,7/11/2012,1811,255.28,159.42,462312.08,288709.62,173602.46
+North America,United States of America,Beverages,Offline,C,7/25/2012,807430589,7/30/2012,5509,47.45,31.79,261402.05,175131.11,86270.94
+Sub-Saharan Africa,Angola,Office Supplies,Online,L,7/16/2016,538602435,8/19/2016,3284,651.21,524.96,2138573.64,1723968.64,414605.00
+Europe,Ireland,Fruits,Offline,H,3/12/2015,155914723,3/29/2015,7486,9.33,6.92,69844.38,51803.12,18041.26
+Europe,Spain,Fruits,Online,H,10/9/2011,753166282,11/25/2011,7495,9.33,6.92,69928.35,51865.40,18062.95
+Sub-Saharan Africa,Chad,Baby Food,Online,C,7/30/2010,344468438,8/27/2010,4721,255.28,159.42,1205176.88,752621.82,452555.06
+Asia,Malaysia,Cosmetics,Offline,L,3/13/2013,614245021,3/20/2013,7606,437.20,263.33,3325343.20,2002887.98,1322455.22
+Central America and the Caribbean,Belize,Fruits,Online,L,9/18/2014,167232358,10/30/2014,6626,9.33,6.92,61820.58,45851.92,15968.66
+Central America and the Caribbean,Antigua and Barbuda ,Snacks,Online,C,1/20/2015,378479278,2/15/2015,9284,152.58,97.44,1416552.72,904632.96,511919.76
+Europe,Andorra,Cereal,Offline,M,3/20/2015,443347108,4/9/2015,5116,205.70,117.11,1052361.20,599134.76,453226.44
+Europe,Iceland,Office Supplies,Online,C,6/19/2013,527509677,7/10/2013,691,651.21,524.96,449986.11,362747.36,87238.75
+Europe,Ireland,Beverages,Offline,H,9/20/2016,416953313,10/29/2016,4606,47.45,31.79,218554.70,146424.74,72129.96
+Middle East and North Africa,Libya,Beverages,Online,M,1/8/2014,867976844,2/1/2014,2491,47.45,31.79,118197.95,79188.89,39009.06
+Sub-Saharan Africa,Burkina Faso,Vegetables,Offline,M,8/16/2010,457191598,9/23/2010,2008,154.06,90.93,309352.48,182587.44,126765.04
+Australia and Oceania,Solomon Islands,Fruits,Offline,H,8/19/2016,531521403,9/19/2016,7850,9.33,6.92,73240.50,54322.00,18918.50
+Middle East and North Africa,Oman,Office Supplies,Online,L,12/6/2012,258202588,12/23/2012,6738,651.21,524.96,4387852.98,3537180.48,850672.50
+Sub-Saharan Africa,Sierra Leone,Snacks,Online,M,7/15/2015,674783980,9/2/2015,2430,152.58,97.44,370769.40,236779.20,133990.20
+Europe,Bosnia and Herzegovina,Cereal,Online,C,3/30/2011,639126908,5/10/2011,710,205.70,117.11,146047.00,83148.10,62898.90
+Europe,Belarus,Beverages,Online,L,6/3/2014,879405200,7/20/2014,4396,47.45,31.79,208590.20,139748.84,68841.36
+Europe,Slovenia,Beverages,Offline,H,3/17/2010,844105184,4/20/2010,8337,47.45,31.79,395590.65,265033.23,130557.42
+Australia and Oceania,Kiribati,Household,Offline,C,4/24/2011,952025687,5/1/2011,4412,668.27,502.54,2948407.24,2217206.48,731200.76
+Central America and the Caribbean,Costa Rica,Office Supplies,Online,C,5/11/2016,342278039,6/16/2016,6533,651.21,524.96,4254354.93,3429563.68,824791.25
+Sub-Saharan Africa,Democratic Republic of the Congo,Clothes,Online,H,9/9/2013,924286067,10/4/2013,5642,109.28,35.84,616557.76,202209.28,414348.48
+Central America and the Caribbean,Grenada,Clothes,Offline,L,6/1/2015,627786099,7/18/2015,4712,109.28,35.84,514927.36,168878.08,346049.28
+Sub-Saharan Africa,Mozambique,Household,Online,M,10/15/2015,152826964,10/22/2015,3750,668.27,502.54,2506012.50,1884525.00,621487.50
+Sub-Saharan Africa,Sudan,Household,Online,M,2/13/2010,719769990,3/15/2010,4790,668.27,502.54,3201013.30,2407166.60,793846.70
+Sub-Saharan Africa,Benin,Snacks,Online,H,9/23/2013,919289004,10/17/2013,6900,152.58,97.44,1052802.00,672336.00,380466.00
+Australia and Oceania,Palau,Baby Food,Online,M,9/10/2012,762370336,9/23/2012,1179,255.28,159.42,300975.12,187956.18,113018.94
+Australia and Oceania,Fiji,Cosmetics,Online,M,2/7/2013,330312812,2/14/2013,5756,437.20,263.33,2516523.20,1515727.48,1000795.72
+Central America and the Caribbean,Saint Lucia,Cereal,Online,L,7/13/2014,224727761,8/15/2014,793,205.70,117.11,163120.10,92868.23,70251.87
+North America,Mexico,Meat,Online,H,10/29/2013,217539012,10/31/2013,3483,421.89,364.69,1469442.87,1270215.27,199227.60
+Australia and Oceania,Samoa ,Baby Food,Online,H,6/26/2016,600982892,8/7/2016,3048,255.28,159.42,778093.44,485912.16,292181.28
+Sub-Saharan Africa,Botswana,Vegetables,Online,M,2/16/2010,837608230,3/3/2010,5744,154.06,90.93,884920.64,522301.92,362618.72
+Middle East and North Africa,Turkey,Clothes,Offline,L,9/26/2013,910276353,9/27/2013,9856,109.28,35.84,1077063.68,353239.04,723824.64
+Sub-Saharan Africa,Ethiopia,Snacks,Offline,L,4/11/2013,872161090,4/28/2013,703,152.58,97.44,107263.74,68500.32,38763.42
+Asia,Kazakhstan,Beverages,Offline,H,12/6/2010,396748769,1/15/2011,5632,47.45,31.79,267238.40,179041.28,88197.12
+Europe,Netherlands,Fruits,Offline,C,9/20/2013,127838218,10/29/2013,9024,9.33,6.92,84193.92,62446.08,21747.84
+Asia,Uzbekistan,Beverages,Online,H,8/8/2014,329540765,9/21/2014,7290,47.45,31.79,345910.50,231749.10,114161.40
+Sub-Saharan Africa,Cameroon,Fruits,Offline,H,5/15/2011,436280238,6/10/2011,3872,9.33,6.92,36125.76,26794.24,9331.52
+Central America and the Caribbean,Cuba,Baby Food,Offline,H,6/19/2010,402792966,7/4/2010,4244,255.28,159.42,1083408.32,676578.48,406829.84
+Sub-Saharan Africa,Angola,Vegetables,Online,M,8/8/2015,254127776,9/12/2015,911,154.06,90.93,140348.66,82837.23,57511.43
+Sub-Saharan Africa,Burkina Faso,Beverages,Online,M,5/31/2016,535645997,6/18/2016,8409,47.45,31.79,399007.05,267322.11,131684.94
+Sub-Saharan Africa,Kenya,Clothes,Offline,M,12/19/2014,963021457,1/25/2015,8304,109.28,35.84,907461.12,297615.36,609845.76
+Australia and Oceania,Tonga,Office Supplies,Online,L,5/18/2014,872240483,6/13/2014,4197,651.21,524.96,2733128.37,2203257.12,529871.25
+Sub-Saharan Africa,Democratic Republic of the Congo,Household,Offline,C,1/21/2015,569601905,2/2/2015,6716,668.27,502.54,4488101.32,3375058.64,1113042.68
+Europe,Belgium,Snacks,Online,M,11/22/2010,881717050,12/23/2010,8524,152.58,97.44,1300591.92,830578.56,470013.36
+Europe,Macedonia,Household,Offline,L,10/13/2015,905509746,10/20/2015,9311,668.27,502.54,6222261.97,4679149.94,1543112.03
+Sub-Saharan Africa,Botswana,Office Supplies,Online,H,5/23/2014,258216321,6/23/2014,802,651.21,524.96,522270.42,421017.92,101252.50
+Asia,Japan,Meat,Offline,H,5/18/2011,427385604,6/15/2011,1752,421.89,364.69,739151.28,638936.88,100214.40
+Europe,Liechtenstein,Baby Food,Online,H,6/22/2012,720878922,8/1/2012,2948,255.28,159.42,752565.44,469970.16,282595.28
+Asia,Brunei,Fruits,Offline,L,2/9/2013,516870105,3/27/2013,2205,9.33,6.92,20572.65,15258.60,5314.05
+Asia,Japan,Fruits,Offline,H,5/12/2017,613845479,6/17/2017,9373,9.33,6.92,87450.09,64861.16,22588.93
+Asia,Cambodia,Cereal,Offline,H,6/6/2011,980603873,7/17/2011,1332,205.70,117.11,273992.40,155990.52,118001.88
+Europe,Italy,Personal Care,Offline,L,11/14/2012,306256616,11/18/2012,6993,81.73,56.67,571537.89,396293.31,175244.58
+Australia and Oceania,Samoa ,Household,Offline,L,10/24/2013,950227534,11/2/2013,2298,668.27,502.54,1535684.46,1154836.92,380847.54
+Europe,Spain,Cereal,Offline,M,1/4/2015,392252957,2/22/2015,5222,205.70,117.11,1074165.40,611548.42,462616.98
+Asia,Kyrgyzstan,Personal Care,Online,M,7/1/2014,682381713,7/8/2014,768,81.73,56.67,62768.64,43522.56,19246.08
+Sub-Saharan Africa,Benin,Clothes,Online,H,5/19/2011,790975129,6/20/2011,5973,109.28,35.84,652729.44,214072.32,438657.12
+Sub-Saharan Africa,Chad,Cosmetics,Offline,L,3/7/2017,658707034,3/13/2017,4904,437.20,263.33,2144028.80,1291370.32,852658.48
+Europe,Norway,Cosmetics,Offline,C,3/14/2014,746563756,4/12/2014,3661,437.20,263.33,1600589.20,964051.13,636538.07
+Central America and the Caribbean,Cuba,Fruits,Offline,M,4/21/2012,685844123,5/28/2012,5372,9.33,6.92,50120.76,37174.24,12946.52
+Central America and the Caribbean,Saint Vincent and the Grenadines,Clothes,Offline,M,11/10/2014,628159463,12/9/2014,5199,109.28,35.84,568146.72,186332.16,381814.56
+Central America and the Caribbean,Haiti,Snacks,Online,L,12/5/2014,795433604,1/19/2015,5335,152.58,97.44,814014.30,519842.40,294171.90
+Europe,Bulgaria,Household,Online,C,3/21/2014,129902875,4/24/2014,2,668.27,502.54,1336.54,1005.08,331.46
+Australia and Oceania,Samoa ,Office Supplies,Offline,M,9/17/2011,344116103,10/23/2011,457,651.21,524.96,297602.97,239906.72,57696.25
+Sub-Saharan Africa,Equatorial Guinea,Snacks,Online,M,1/10/2015,970934617,1/15/2015,9984,152.58,97.44,1523358.72,972840.96,550517.76
+Asia,Philippines,Cereal,Online,L,12/2/2013,713532245,1/3/2014,8902,205.70,117.11,1831141.40,1042513.22,788628.18
+Europe,San Marino,Beverages,Offline,M,5/10/2014,595395314,5/30/2014,9559,47.45,31.79,453574.55,303880.61,149693.94
+Central America and the Caribbean,Trinidad and Tobago,Cereal,Offline,L,1/2/2012,810322654,1/15/2012,1335,205.70,117.11,274609.50,156341.85,118267.65
+Europe,Denmark,Fruits,Online,L,3/4/2011,272425591,3/21/2011,5641,9.33,6.92,52630.53,39035.72,13594.81
+Central America and the Caribbean,Costa Rica,Cereal,Offline,L,6/12/2013,666127955,7/8/2013,920,205.70,117.11,189244.00,107741.20,81502.80
+Europe,Germany,Baby Food,Offline,H,11/27/2013,596166074,1/13/2014,7644,255.28,159.42,1951360.32,1218606.48,732753.84
+Asia,India,Personal Care,Offline,C,6/23/2012,537588775,7/19/2012,3320,81.73,56.67,271343.60,188144.40,83199.20
+Sub-Saharan Africa,Sao Tome and Principe,Cereal,Offline,L,2/28/2010,585757386,3/23/2010,7482,205.70,117.11,1539047.40,876217.02,662830.38
+Europe,Netherlands,Beverages,Offline,C,10/18/2012,906345736,11/21/2012,6699,47.45,31.79,317867.55,212961.21,104906.34
+Europe,Germany,Cosmetics,Offline,M,2/26/2012,385340154,3/18/2012,9569,437.20,263.33,4183566.80,2519804.77,1663762.03
+Europe,Sweden,Cosmetics,Offline,H,6/3/2012,679039466,7/5/2012,1723,437.20,263.33,753295.60,453717.59,299578.01
+Sub-Saharan Africa,Cameroon,Household,Offline,L,4/13/2011,364055001,5/13/2011,820,668.27,502.54,547981.40,412082.80,135898.60
+Asia,Tajikistan,Baby Food,Online,H,4/6/2011,787310588,4/21/2011,1554,255.28,159.42,396705.12,247738.68,148966.44
+Sub-Saharan Africa,Swaziland,Clothes,Online,H,12/20/2015,216042554,12/20/2015,647,109.28,35.84,70704.16,23188.48,47515.68
+Europe,San Marino,Baby Food,Offline,L,2/15/2011,587799727,3/27/2011,1856,255.28,159.42,473799.68,295883.52,177916.16
+Middle East and North Africa,United Arab Emirates,Fruits,Online,L,10/27/2013,760443437,12/13/2013,966,9.33,6.92,9012.78,6684.72,2328.06
+Asia,Bangladesh,Office Supplies,Offline,M,9/15/2015,562147510,10/11/2015,795,651.21,524.96,517711.95,417343.20,100368.75
+Europe,Georgia,Snacks,Offline,L,1/22/2017,341398274,3/7/2017,6191,152.58,97.44,944622.78,603251.04,341371.74
+Europe,Greece,Fruits,Offline,H,6/14/2015,516994559,6/20/2015,9034,9.33,6.92,84287.22,62515.28,21771.94
+Australia and Oceania,Papua New Guinea,Beverages,Offline,C,1/27/2017,228047692,2/27/2017,3235,47.45,31.79,153500.75,102840.65,50660.10
+Europe,Slovenia,Office Supplies,Online,H,4/9/2010,483981502,5/4/2010,9736,651.21,524.96,6340180.56,5111010.56,1229170.00
+Middle East and North Africa,Azerbaijan,Clothes,Offline,M,9/22/2014,114532315,9/30/2014,1512,109.28,35.84,165231.36,54190.08,111041.28
+Central America and the Caribbean,Barbados,Fruits,Offline,H,2/11/2017,719748961,3/23/2017,8567,9.33,6.92,79930.11,59283.64,20646.47
+Middle East and North Africa,Oman,Cereal,Online,H,10/3/2012,819992768,11/13/2012,2937,205.70,117.11,604140.90,343952.07,260188.83
+Asia,Bhutan,Cosmetics,Offline,C,12/18/2016,805937564,1/7/2017,3690,437.20,263.33,1613268.00,971687.70,641580.30
+Sub-Saharan Africa,Chad,Personal Care,Online,C,10/27/2015,688569676,10/29/2015,1924,81.73,56.67,157248.52,109033.08,48215.44
+Europe,Slovakia,Cosmetics,Online,H,5/30/2015,549187934,7/17/2015,5769,437.20,263.33,2522206.80,1519150.77,1003056.03
+Europe,Macedonia,Clothes,Online,M,4/22/2015,989403665,5/25/2015,5386,109.28,35.84,588582.08,193034.24,395547.84
+Australia and Oceania,Federated States of Micronesia,Baby Food,Online,C,5/11/2012,881140697,5/29/2012,7968,255.28,159.42,2034071.04,1270258.56,763812.48
+Europe,Lithuania,Household,Online,H,1/25/2012,516635358,2/26/2012,2738,668.27,502.54,1829723.26,1375954.52,453768.74
+North America,United States of America,Fruits,Online,M,3/12/2017,258436477,4/20/2017,5951,9.33,6.92,55522.83,41180.92,14341.91
+Australia and Oceania,Samoa ,Fruits,Offline,C,6/7/2016,989405381,6/22/2016,5894,9.33,6.92,54991.02,40786.48,14204.54
+Sub-Saharan Africa,Republic of the Congo,Cosmetics,Offline,M,11/23/2010,962715899,12/21/2010,7883,437.20,263.33,3446447.60,2075830.39,1370617.21
+Sub-Saharan Africa,Botswana,Cosmetics,Offline,C,4/30/2010,751854360,5/7/2010,9268,437.20,263.33,4051969.60,2440542.44,1611427.16
+Asia,Uzbekistan,Household,Online,H,3/11/2014,100619590,3/31/2014,4427,668.27,502.54,2958431.29,2224744.58,733686.71
+Europe,Belarus,Clothes,Offline,M,6/8/2015,173122918,7/25/2015,9773,109.28,35.84,1067993.44,350264.32,717729.12
+Sub-Saharan Africa,Cote d'Ivoire,Household,Offline,C,11/9/2011,403788173,11/16/2011,8748,668.27,502.54,5846025.96,4396219.92,1449806.04
+Sub-Saharan Africa,Togo,Fruits,Online,M,6/19/2017,747351682,7/24/2017,6825,9.33,6.92,63677.25,47229.00,16448.25
+Sub-Saharan Africa,Benin,Household,Online,H,4/5/2013,328862273,5/24/2013,6510,668.27,502.54,4350437.70,3271535.40,1078902.30
+Sub-Saharan Africa,Kenya,Personal Care,Online,M,8/7/2011,593681275,9/11/2011,2337,81.73,56.67,191003.01,132437.79,58565.22
+Europe,Ireland,Beverages,Online,C,7/14/2014,357482516,7/28/2014,5875,47.45,31.79,278768.75,186766.25,92002.50
+Europe,Slovenia,Fruits,Online,L,1/18/2010,756252324,2/9/2010,723,9.33,6.92,6745.59,5003.16,1742.43
+North America,United States of America,Office Supplies,Online,M,9/10/2013,296289527,10/14/2013,7510,651.21,524.96,4890587.10,3942449.60,948137.50
+Sub-Saharan Africa,Rwanda,Snacks,Online,M,10/14/2011,704205453,11/20/2011,8897,152.58,97.44,1357504.26,866923.68,490580.58
+Asia,Myanmar,Cereal,Offline,M,8/25/2010,176923930,8/30/2010,4577,205.70,117.11,941488.90,536012.47,405476.43
+Sub-Saharan Africa,South Africa,Vegetables,Online,M,2/2/2010,131681287,3/2/2010,6274,154.06,90.93,966572.44,570494.82,396077.62
+Middle East and North Africa,Iraq,Fruits,Online,C,10/11/2014,256026351,11/13/2014,2742,9.33,6.92,25582.86,18974.64,6608.22
+Sub-Saharan Africa,Sudan,Snacks,Offline,L,4/16/2015,757820451,4/26/2015,4767,152.58,97.44,727348.86,464496.48,262852.38
+Middle East and North Africa,Tunisia ,Vegetables,Offline,H,8/19/2014,115237414,9/27/2014,167,154.06,90.93,25728.02,15185.31,10542.71
+Europe,Monaco,Clothes,Offline,H,11/16/2016,926763570,11/25/2016,8790,109.28,35.84,960571.20,315033.60,645537.60
+Australia and Oceania,Samoa ,Fruits,Online,H,10/21/2015,461197745,10/24/2015,7517,9.33,6.92,70133.61,52017.64,18115.97
+Europe,Croatia,Household,Online,M,10/28/2013,107651269,11/11/2013,5258,668.27,502.54,3513763.66,2642355.32,871408.34
+Europe,Andorra,Beverages,Online,H,8/19/2010,425547969,9/11/2010,7955,47.45,31.79,377464.75,252889.45,124575.30
+Central America and the Caribbean,Cuba,Household,Offline,C,7/22/2014,694624173,8/16/2014,3584,668.27,502.54,2395079.68,1801103.36,593976.32
+Europe,Estonia,Clothes,Offline,L,1/24/2016,264928710,1/27/2016,7147,109.28,35.84,781024.16,256148.48,524875.68
+North America,Greenland,Household,Online,M,4/3/2014,806822907,4/8/2014,5683,668.27,502.54,3797778.41,2855934.82,941843.59
+Central America and the Caribbean,Costa Rica,Cereal,Offline,C,1/29/2013,460980594,2/13/2013,3257,205.70,117.11,669964.90,381427.27,288537.63
+Sub-Saharan Africa,Cote d'Ivoire,Vegetables,Online,H,7/24/2017,588388097,8/25/2017,5968,154.06,90.93,919430.08,542670.24,376759.84
+Sub-Saharan Africa,Benin,Beverages,Offline,L,11/5/2014,820344245,12/16/2014,6947,47.45,31.79,329635.15,220845.13,108790.02
+Australia and Oceania,New Zealand,Baby Food,Online,L,11/14/2015,408460366,12/27/2015,1354,255.28,159.42,345649.12,215854.68,129794.44
+North America,United States of America,Baby Food,Offline,H,9/12/2013,474660289,10/6/2013,1382,255.28,159.42,352796.96,220318.44,132478.52
+Europe,Andorra,Beverages,Offline,L,1/13/2010,861180341,2/20/2010,1255,47.45,31.79,59549.75,39896.45,19653.30
+Europe,Ireland,Beverages,Offline,M,6/10/2011,580569350,7/3/2011,2227,47.45,31.79,105671.15,70796.33,34874.82
+Australia and Oceania,Tonga,Beverages,Offline,M,5/21/2010,965688645,6/23/2010,7585,47.45,31.79,359908.25,241127.15,118781.10
+Central America and the Caribbean,Grenada,Beverages,Offline,C,10/10/2011,719712054,10/17/2011,7645,47.45,31.79,362755.25,243034.55,119720.70
+Central America and the Caribbean,Panama,Household,Online,L,12/28/2013,866125905,12/29/2013,4757,668.27,502.54,3178960.39,2390582.78,788377.61
+Sub-Saharan Africa,South Sudan,Cereal,Offline,M,9/17/2012,698729026,9/25/2012,8301,205.70,117.11,1707515.70,972130.11,735385.59
+Asia,China,Household,Online,L,3/29/2012,931632745,5/2/2012,9687,668.27,502.54,6473531.49,4868104.98,1605426.51
+Asia,Vietnam,Cereal,Offline,H,3/3/2014,549260890,3/25/2014,7358,205.70,117.11,1513540.60,861695.38,651845.22
+Middle East and North Africa,Libya,Beverages,Online,C,7/27/2013,856349790,8/26/2013,1788,47.45,31.79,84840.60,56840.52,28000.08
+Central America and the Caribbean,Belize,Personal Care,Offline,H,5/17/2010,527948272,5/21/2010,481,81.73,56.67,39312.13,27258.27,12053.86
+Europe,Serbia,Vegetables,Offline,M,2/25/2013,559417665,2/28/2013,2973,154.06,90.93,458020.38,270334.89,187685.49
+Central America and the Caribbean,Cuba,Household,Online,C,8/8/2012,216431796,9/3/2012,5833,668.27,502.54,3898018.91,2931315.82,966703.09
+Europe,Liechtenstein,Household,Online,C,8/21/2015,184976994,9/21/2015,7658,668.27,502.54,5117611.66,3848451.32,1269160.34
+Sub-Saharan Africa,Senegal,Personal Care,Offline,M,4/18/2011,321352088,5/6/2011,4079,81.73,56.67,333376.67,231156.93,102219.74
+Sub-Saharan Africa,Ghana,Fruits,Offline,M,5/29/2012,102168405,5/29/2012,2756,9.33,6.92,25713.48,19071.52,6641.96
+Europe,Cyprus,Beverages,Online,M,12/8/2013,874349772,1/4/2014,8383,47.45,31.79,397773.35,266495.57,131277.78
+Central America and the Caribbean,Jamaica,Vegetables,Online,H,11/27/2011,905132520,12/9/2011,7681,154.06,90.93,1183334.86,698433.33,484901.53
+Middle East and North Africa,Afghanistan,Vegetables,Offline,H,10/5/2014,332065474,10/13/2014,4408,154.06,90.93,679096.48,400819.44,278277.04
+Europe,Andorra,Household,Online,H,11/15/2016,713009965,12/16/2016,4348,668.27,502.54,2905637.96,2185043.92,720594.04
+Sub-Saharan Africa,Ghana,Baby Food,Offline,M,6/18/2017,976139819,7/22/2017,319,255.28,159.42,81434.32,50854.98,30579.34
+Europe,Andorra,Baby Food,Online,M,10/24/2016,569941365,11/26/2016,7170,255.28,159.42,1830357.60,1143041.40,687316.20
+Sub-Saharan Africa,Sao Tome and Principe,Cereal,Online,C,6/27/2012,813213431,7/31/2012,6781,205.70,117.11,1394851.70,794122.91,600728.79
+Europe,Malta,Household,Online,H,9/9/2010,845067346,9/13/2010,3062,668.27,502.54,2046242.74,1538777.48,507465.26
+Europe,Czech Republic,Fruits,Offline,M,11/24/2014,774926936,11/27/2014,6956,9.33,6.92,64899.48,48135.52,16763.96
+Sub-Saharan Africa,Guinea,Beverages,Online,L,7/4/2014,332528531,8/22/2014,1437,47.45,31.79,68185.65,45682.23,22503.42
+Europe,Hungary,Baby Food,Online,H,5/6/2011,217920958,6/25/2011,6509,255.28,159.42,1661617.52,1037664.78,623952.74
+Central America and the Caribbean,Honduras,Personal Care,Offline,H,11/14/2015,751465547,12/12/2015,4209,81.73,56.67,344001.57,238524.03,105477.54
+Europe,Lithuania,Clothes,Online,C,2/6/2013,523836123,3/22/2013,3605,109.28,35.84,393954.40,129203.20,264751.20
+Europe,Ukraine,Vegetables,Online,C,11/6/2011,446019017,11/25/2011,5794,154.06,90.93,892623.64,526848.42,365775.22
+Asia,Sri Lanka,Office Supplies,Offline,H,8/13/2010,599313056,8/29/2010,8906,651.21,524.96,5799676.26,4675293.76,1124382.50
+Middle East and North Africa,United Arab Emirates,Personal Care,Online,M,7/20/2016,685329568,7/29/2016,3104,81.73,56.67,253689.92,175903.68,77786.24
+Europe,Luxembourg,Clothes,Online,H,5/14/2011,475992381,5/26/2011,5578,109.28,35.84,609563.84,199915.52,409648.32
+Sub-Saharan Africa,Zambia,Meat,Offline,M,9/12/2015,263537824,9/13/2015,5553,421.89,364.69,2342755.17,2025123.57,317631.60
+Europe,Serbia,Office Supplies,Offline,C,3/1/2017,410514724,4/10/2017,9284,651.21,524.96,6045833.64,4873728.64,1172105.00
+Sub-Saharan Africa,The Gambia,Beverages,Offline,M,1/12/2012,899784409,1/18/2012,5057,47.45,31.79,239954.65,160762.03,79192.62
+Sub-Saharan Africa,Ethiopia,Personal Care,Online,H,7/22/2016,884520709,8/9/2016,8189,81.73,56.67,669286.97,464070.63,205216.34
+Europe,Germany,Personal Care,Offline,C,3/14/2010,938209950,3/16/2010,6028,81.73,56.67,492668.44,341606.76,151061.68
+Sub-Saharan Africa,Swaziland,Fruits,Online,M,2/19/2015,804650962,3/20/2015,2956,9.33,6.92,27579.48,20455.52,7123.96
+Europe,Ukraine,Clothes,Offline,H,9/27/2016,747955071,10/25/2016,5382,109.28,35.84,588144.96,192890.88,395254.08
+Sub-Saharan Africa,Mozambique,Vegetables,Offline,C,10/24/2012,202546107,11/10/2012,6749,154.06,90.93,1039750.94,613686.57,426064.37
+Europe,Andorra,Clothes,Offline,L,5/14/2017,923160398,6/15/2017,2531,109.28,35.84,276587.68,90711.04,185876.64
+Sub-Saharan Africa,Equatorial Guinea,Fruits,Online,C,5/25/2011,234846770,7/6/2011,5233,9.33,6.92,48823.89,36212.36,12611.53
+Australia and Oceania,Federated States of Micronesia,Office Supplies,Offline,L,10/29/2014,482966554,11/28/2014,9391,651.21,524.96,6115513.11,4929899.36,1185613.75
+Asia,Kazakhstan,Fruits,Online,L,7/30/2014,483193576,8/18/2014,6572,9.33,6.92,61316.76,45478.24,15838.52
+Asia,Laos,Vegetables,Online,C,10/7/2013,471514165,11/23/2013,374,154.06,90.93,57618.44,34007.82,23610.62
+Europe,Monaco,Office Supplies,Online,H,10/20/2012,754227149,11/24/2012,1429,651.21,524.96,930579.09,750167.84,180411.25
+Europe,Norway,Baby Food,Offline,L,2/24/2013,357943856,3/17/2013,2396,255.28,159.42,611650.88,381970.32,229680.56
+Sub-Saharan Africa,Mauritius ,Personal Care,Offline,H,7/23/2013,179588115,8/23/2013,2969,81.73,56.67,242656.37,168253.23,74403.14
+Asia,Uzbekistan,Meat,Offline,H,11/2/2013,736396253,11/5/2013,4870,421.89,364.69,2054604.30,1776040.30,278564.00
+Europe,Ireland,Cosmetics,Online,M,1/28/2011,815917098,2/13/2011,6856,437.20,263.33,2997443.20,1805390.48,1192052.72
+Europe,Monaco,Clothes,Offline,L,1/2/2011,626011979,1/11/2011,9711,109.28,35.84,1061218.08,348042.24,713175.84
+North America,United States of America,Personal Care,Offline,L,8/16/2016,444854724,8/26/2016,1253,81.73,56.67,102407.69,71007.51,31400.18
+Sub-Saharan Africa,Swaziland,Meat,Offline,L,11/13/2016,170931661,11/25/2016,1332,421.89,364.69,561957.48,485767.08,76190.40
+Australia and Oceania,Tuvalu,Household,Online,M,1/29/2013,673041617,3/15/2013,6826,668.27,502.54,4561611.02,3430338.04,1131272.98
+Europe,Bosnia and Herzegovina,Baby Food,Online,M,4/1/2015,640295922,4/3/2015,6647,255.28,159.42,1696846.16,1059664.74,637181.42
+Central America and the Caribbean,Saint Kitts and Nevis ,Vegetables,Offline,H,6/30/2015,632118403,7/15/2015,6737,154.06,90.93,1037902.22,612595.41,425306.81
+Sub-Saharan Africa,Cote d'Ivoire,Office Supplies,Online,L,7/29/2014,828245389,8/27/2014,5071,651.21,524.96,3302285.91,2662072.16,640213.75
+Sub-Saharan Africa,Botswana,Cereal,Offline,M,7/12/2010,578725707,8/9/2010,6652,205.70,117.11,1368316.40,779015.72,589300.68
+Europe,Romania,Snacks,Online,C,1/11/2010,653920686,1/18/2010,8517,152.58,97.44,1299523.86,829896.48,469627.38
+Europe,Sweden,Fruits,Online,M,1/10/2017,994504153,1/13/2017,4734,9.33,6.92,44168.22,32759.28,11408.94
+Asia,Laos,Household,Online,C,10/28/2013,261462438,11/10/2013,1400,668.27,502.54,935578.00,703556.00,232022.00
+Sub-Saharan Africa,Mauritius ,Household,Online,M,4/15/2010,786094367,5/8/2010,1647,668.27,502.54,1100640.69,827683.38,272957.31
+Europe,Czech Republic,Meat,Offline,M,5/9/2017,920011270,6/12/2017,634,421.89,364.69,267478.26,231213.46,36264.80
+North America,Mexico,Vegetables,Offline,C,12/9/2012,885136973,1/11/2013,555,154.06,90.93,85503.30,50466.15,35037.15
+Europe,Bosnia and Herzegovina,Vegetables,Online,M,11/25/2013,523707807,12/16/2013,5633,154.06,90.93,867819.98,512208.69,355611.29
+Sub-Saharan Africa,Sao Tome and Principe,Household,Offline,M,8/24/2011,648272597,10/2/2011,7122,668.27,502.54,4759418.94,3579089.88,1180329.06
+Europe,Belgium,Fruits,Online,L,10/17/2013,791692674,11/24/2013,8310,9.33,6.92,77532.30,57505.20,20027.10
+Middle East and North Africa,Bahrain,Baby Food,Offline,M,2/5/2010,557141864,2/16/2010,9513,255.28,159.42,2428478.64,1516562.46,911916.18
+Sub-Saharan Africa,Senegal,Household,Online,M,2/6/2014,968106496,2/17/2014,3080,668.27,502.54,2058271.60,1547823.20,510448.40
+Middle East and North Africa,Bahrain,Fruits,Offline,M,11/22/2013,418385398,12/24/2013,8392,9.33,6.92,78297.36,58072.64,20224.72
+Sub-Saharan Africa,Kenya,Fruits,Online,C,10/14/2013,522089898,11/11/2013,6858,9.33,6.92,63985.14,47457.36,16527.78
+Sub-Saharan Africa,Guinea-Bissau,Vegetables,Online,L,5/14/2015,263643825,6/29/2015,6921,154.06,90.93,1066249.26,629326.53,436922.73
+Asia,Tajikistan,Baby Food,Offline,C,9/16/2013,947783505,10/27/2013,9056,255.28,159.42,2311815.68,1443707.52,868108.16
+Middle East and North Africa,Egypt,Household,Offline,L,4/26/2016,349557769,5/6/2016,767,668.27,502.54,512563.09,385448.18,127114.91
+Middle East and North Africa,Iran,Clothes,Offline,H,8/14/2016,364327943,8/26/2016,1589,109.28,35.84,173645.92,56949.76,116696.16
+Sub-Saharan Africa,Kenya,Personal Care,Online,M,11/18/2012,257767856,1/3/2013,8092,81.73,56.67,661359.16,458573.64,202785.52
+Europe,Sweden,Vegetables,Online,C,1/7/2012,715863835,1/26/2012,8872,154.06,90.93,1366820.32,806730.96,560089.36
+Europe,Albania,Cosmetics,Offline,C,8/23/2010,694914710,9/25/2010,9560,437.20,263.33,4179632.00,2517434.80,1662197.20
+Sub-Saharan Africa,Togo,Baby Food,Offline,M,1/4/2014,571531808,2/22/2014,7818,255.28,159.42,1995779.04,1246345.56,749433.48
+Central America and the Caribbean,Dominica,Cereal,Online,C,1/31/2017,792638957,2/17/2017,8336,205.70,117.11,1714715.20,976228.96,738486.24
+Europe,Macedonia,Baby Food,Online,M,11/21/2015,525472486,11/23/2015,7840,255.28,159.42,2001395.20,1249852.80,751542.40
+Sub-Saharan Africa,Sudan,Snacks,Offline,H,4/19/2011,807581222,4/25/2011,85,152.58,97.44,12969.30,8282.40,4686.90
+Europe,Georgia,Fruits,Online,L,10/28/2012,496826493,12/11/2012,855,9.33,6.92,7977.15,5916.60,2060.55
+Central America and the Caribbean,El Salvador,Snacks,Online,C,2/14/2012,321382129,3/4/2012,2969,152.58,97.44,453010.02,289299.36,163710.66
+Middle East and North Africa,United Arab Emirates,Fruits,Online,M,1/15/2017,629734456,3/6/2017,1274,9.33,6.92,11886.42,8816.08,3070.34
+Europe,Liechtenstein,Cereal,Online,L,1/1/2010,940682303,2/9/2010,7652,205.70,117.11,1574016.40,896125.72,677890.68
+Australia and Oceania,Marshall Islands,Personal Care,Offline,C,5/8/2012,393336999,5/14/2012,6014,81.73,56.67,491524.22,340813.38,150710.84
+Middle East and North Africa,Pakistan,Fruits,Offline,C,6/4/2012,897122371,6/13/2012,7300,9.33,6.92,68109.00,50516.00,17593.00
+Europe,Norway,Fruits,Offline,C,10/6/2014,381774747,10/23/2014,4486,9.33,6.92,41854.38,31043.12,10811.26
+Middle East and North Africa,Saudi Arabia,Baby Food,Online,M,8/14/2013,447342956,9/21/2013,7576,255.28,159.42,1934001.28,1207765.92,726235.36
+Asia,Maldives,Vegetables,Online,M,11/18/2011,514188325,1/2/2012,8607,154.06,90.93,1325994.42,782634.51,543359.91
+Sub-Saharan Africa,Sierra Leone,Meat,Online,H,4/14/2017,972984683,5/30/2017,6644,421.89,364.69,2803037.16,2423000.36,380036.80
+Europe,Ireland,Vegetables,Online,H,12/2/2015,934718358,12/16/2015,2789,154.06,90.93,429673.34,253603.77,176069.57
+Sub-Saharan Africa,Madagascar,Snacks,Offline,M,11/12/2013,480688178,11/24/2013,5169,152.58,97.44,788686.02,503667.36,285018.66
+Middle East and North Africa,Bahrain,Household,Online,C,9/13/2010,212505471,9/28/2010,3946,668.27,502.54,2636993.42,1983022.84,653970.58
+Australia and Oceania,Marshall Islands,Clothes,Online,M,11/5/2010,802094066,12/10/2010,6313,109.28,35.84,689884.64,226257.92,463626.72
+Europe,Romania,Meat,Offline,C,3/23/2012,741690289,5/10/2012,1494,421.89,364.69,630303.66,544846.86,85456.80
+Europe,Serbia,Clothes,Offline,L,1/12/2010,393842971,1/31/2010,5742,109.28,35.84,627485.76,205793.28,421692.48
+Central America and the Caribbean,Grenada,Snacks,Online,M,9/4/2015,641413438,9/30/2015,7345,152.58,97.44,1120700.10,715696.80,405003.30
+Sub-Saharan Africa,Rwanda,Cosmetics,Offline,M,2/13/2015,637575519,3/21/2015,1619,437.20,263.33,707826.80,426331.27,281495.53
+Asia,Taiwan,Cosmetics,Offline,M,7/18/2010,955815541,8/13/2010,5914,437.20,263.33,2585600.80,1557333.62,1028267.18
+Sub-Saharan Africa,Chad,Cereal,Online,H,7/21/2016,439932334,8/6/2016,4609,205.70,117.11,948071.30,539759.99,408311.31
+Sub-Saharan Africa,Malawi,Baby Food,Offline,H,12/12/2010,254037225,1/18/2011,4115,255.28,159.42,1050477.20,656013.30,394463.90
+Australia and Oceania,Tonga,Cosmetics,Online,M,3/31/2014,732554042,4/5/2014,7875,437.20,263.33,3442950.00,2073723.75,1369226.25
+Sub-Saharan Africa,Democratic Republic of the Congo,Office Supplies,Online,M,3/3/2010,930219113,3/10/2010,1362,651.21,524.96,886948.02,714995.52,171952.50
+Sub-Saharan Africa,Sierra Leone,Beverages,Online,H,1/1/2010,872081267,1/12/2010,7081,47.45,31.79,335993.45,225104.99,110888.46
+Middle East and North Africa,Iran,Office Supplies,Offline,H,12/16/2010,203501832,12/18/2010,9569,651.21,524.96,6231428.49,5023342.24,1208086.25
+Sub-Saharan Africa,Guinea-Bissau,Clothes,Online,L,2/3/2015,440154635,2/6/2015,393,109.28,35.84,42947.04,14085.12,28861.92
+Sub-Saharan Africa,Chad,Personal Care,Online,M,5/21/2010,918026006,7/9/2010,3151,81.73,56.67,257531.23,178567.17,78964.06
+Europe,Ireland,Household,Offline,H,5/21/2012,143414771,6/3/2012,8473,668.27,502.54,5662251.71,4258021.42,1404230.29
+Asia,Taiwan,Vegetables,Offline,M,12/28/2014,742932260,1/30/2015,9020,154.06,90.93,1389621.20,820188.60,569432.60
+Central America and the Caribbean,Haiti,Vegetables,Offline,L,12/10/2016,913502299,1/14/2017,4485,154.06,90.93,690959.10,407821.05,283138.05
+Europe,Portugal,Snacks,Offline,C,6/26/2010,272361218,7/3/2010,6592,152.58,97.44,1005807.36,642324.48,363482.88
+Central America and the Caribbean,Saint Lucia,Vegetables,Offline,C,6/4/2015,307057845,7/2/2015,4095,154.06,90.93,630875.70,372358.35,258517.35
+Asia,Japan,Beverages,Online,C,10/7/2014,325453507,11/12/2014,7780,47.45,31.79,369161.00,247326.20,121834.80
+Sub-Saharan Africa,Zambia,Baby Food,Online,L,7/10/2011,605722033,7/20/2011,5465,255.28,159.42,1395105.20,871230.30,523874.90
+Europe,Lithuania,Vegetables,Online,M,5/1/2017,146349751,6/13/2017,6999,154.06,90.93,1078265.94,636419.07,441846.87
+Asia,Malaysia,Fruits,Online,C,10/30/2010,716135489,11/13/2010,9260,9.33,6.92,86395.80,64079.20,22316.60
+Europe,Georgia,Meat,Offline,C,2/22/2017,104190576,3/12/2017,1162,421.89,364.69,490236.18,423769.78,66466.40
+Asia,Laos,Baby Food,Offline,M,4/4/2013,669938838,5/10/2013,8645,255.28,159.42,2206895.60,1378185.90,828709.70
+Australia and Oceania,Kiribati,Office Supplies,Offline,L,1/26/2015,793116605,2/7/2015,9683,651.21,524.96,6305666.43,5083187.68,1222478.75
+Asia,Laos,Household,Offline,M,1/15/2013,723772704,2/15/2013,9282,668.27,502.54,6202882.14,4664576.28,1538305.86
+Europe,Poland,Cereal,Online,C,11/6/2013,332268464,12/14/2013,4477,205.70,117.11,920918.90,524301.47,396617.43
+Europe,Spain,Meat,Online,M,11/15/2013,459277713,12/4/2013,9336,421.89,364.69,3938765.04,3404745.84,534019.20
+Europe,Romania,Fruits,Offline,L,7/24/2010,665786778,8/15/2010,9958,9.33,6.92,92908.14,68909.36,23998.78
+Asia,Indonesia,Household,Online,M,10/10/2013,583094489,11/13/2013,9472,668.27,502.54,6329853.44,4760058.88,1569794.56
+Sub-Saharan Africa,Ghana,Cereal,Offline,M,9/27/2011,362812173,9/30/2011,3039,205.70,117.11,625122.30,355897.29,269225.01
+Central America and the Caribbean,Grenada,Snacks,Online,C,8/28/2012,226863658,9/16/2012,2853,152.58,97.44,435310.74,277996.32,157314.42
+Europe,Latvia,Baby Food,Online,L,9/1/2010,917485272,10/3/2010,3136,255.28,159.42,800558.08,499941.12,300616.96
+Europe,Ireland,Personal Care,Offline,L,4/28/2012,547225844,5/30/2012,5143,81.73,56.67,420337.39,291453.81,128883.58
+Sub-Saharan Africa,Botswana,Household,Offline,M,2/6/2010,448946702,2/28/2010,2161,668.27,502.54,1444131.47,1085988.94,358142.53
+Sub-Saharan Africa,Liberia,Cosmetics,Online,H,6/21/2016,225821673,8/3/2016,4506,437.20,263.33,1970023.20,1186564.98,783458.22
+Asia,Uzbekistan,Beverages,Online,L,9/6/2014,901337087,10/25/2014,4529,47.45,31.79,214901.05,143976.91,70924.14
+Europe,Switzerland,Household,Offline,L,7/19/2015,869291770,8/21/2015,1607,668.27,502.54,1073909.89,807581.78,266328.11
+Central America and the Caribbean,El Salvador,Baby Food,Offline,L,10/20/2015,843797051,10/21/2015,7153,255.28,159.42,1826017.84,1140331.26,685686.58
+Europe,Romania,Clothes,Offline,L,1/12/2017,709276759,3/1/2017,9610,109.28,35.84,1050180.80,344422.40,705758.40
+Asia,Nepal,Fruits,Online,M,4/27/2014,870467221,5/28/2014,9449,9.33,6.92,88159.17,65387.08,22772.09
+Sub-Saharan Africa,Niger,Baby Food,Online,M,3/1/2015,902417266,4/15/2015,4178,255.28,159.42,1066559.84,666056.76,400503.08
+Australia and Oceania,Kiribati,Office Supplies,Offline,M,12/26/2012,900488221,2/14/2013,3330,651.21,524.96,2168529.30,1748116.80,420412.50
+Asia,Indonesia,Clothes,Online,H,8/19/2013,130353915,10/1/2013,3475,109.28,35.84,379748.00,124544.00,255204.00
+Sub-Saharan Africa,Botswana,Cosmetics,Offline,H,6/11/2016,178000676,7/16/2016,3210,437.20,263.33,1403412.00,845289.30,558122.70
+Sub-Saharan Africa,Gabon,Beverages,Online,L,6/18/2010,899727332,7/13/2010,8166,47.45,31.79,387476.70,259597.14,127879.56
+Asia,Philippines,Baby Food,Offline,C,2/1/2016,872145211,2/26/2016,6004,255.28,159.42,1532701.12,957157.68,575543.44
+Sub-Saharan Africa,Zambia,Office Supplies,Online,C,2/18/2013,542178142,3/26/2013,1415,651.21,524.96,921462.15,742818.40,178643.75
+Europe,Albania,Beverages,Online,C,10/9/2012,877062451,10/29/2012,1124,47.45,31.79,53333.80,35731.96,17601.84
+Sub-Saharan Africa,Burkina Faso,Personal Care,Offline,M,11/18/2015,214346969,12/20/2015,8886,81.73,56.67,726252.78,503569.62,222683.16
+Europe,Slovenia,Baby Food,Online,L,10/28/2016,111893022,12/2/2016,486,255.28,159.42,124066.08,77478.12,46587.96
+Europe,Slovakia,Beverages,Online,M,10/29/2014,397874438,12/1/2014,8743,47.45,31.79,414855.35,277939.97,136915.38
+Europe,Bulgaria,Clothes,Offline,C,3/2/2010,520777547,4/15/2010,8504,109.28,35.84,929317.12,304783.36,624533.76
+Asia,Brunei,Fruits,Offline,C,7/24/2015,899401175,8/15/2015,1649,9.33,6.92,15385.17,11411.08,3974.09
+Europe,Vatican City,Household,Online,C,6/27/2014,672856652,8/3/2014,2091,668.27,502.54,1397352.57,1050811.14,346541.43
+Middle East and North Africa,Iraq,Meat,Offline,L,6/4/2010,850567805,7/18/2010,770,421.89,364.69,324855.30,280811.30,44044.00
+Middle East and North Africa,Jordan,Snacks,Online,L,6/29/2015,262270963,7/12/2015,661,152.58,97.44,100855.38,64407.84,36447.54
+Middle East and North Africa,Bahrain,Cereal,Offline,H,5/14/2016,508014953,5/18/2016,1769,205.70,117.11,363883.30,207167.59,156715.71
+Central America and the Caribbean,Grenada,Fruits,Offline,C,12/9/2015,108161103,1/17/2016,6129,9.33,6.92,57183.57,42412.68,14770.89
+Europe,Kosovo,Office Supplies,Online,L,5/15/2014,353383243,6/9/2014,2809,651.21,524.96,1829248.89,1474612.64,354636.25
+Europe,Croatia,Office Supplies,Offline,L,11/21/2012,354667699,12/29/2012,2908,651.21,524.96,1893718.68,1526583.68,367135.00
+North America,Greenland,Vegetables,Offline,C,1/7/2010,193313300,2/13/2010,4556,154.06,90.93,701897.36,414277.08,287620.28
+Asia,Thailand,Beverages,Online,M,11/22/2012,470931375,1/10/2013,7914,47.45,31.79,375519.30,251586.06,123933.24
+North America,Canada,Snacks,Offline,M,10/19/2010,959445750,11/23/2010,173,152.58,97.44,26396.34,16857.12,9539.22
+Asia,Nepal,Clothes,Online,C,10/19/2016,151092755,11/11/2016,559,109.28,35.84,61087.52,20034.56,41052.96
+North America,Mexico,Fruits,Online,L,12/12/2010,208421218,1/8/2011,5325,9.33,6.92,49682.25,36849.00,12833.25
+Europe,Switzerland,Snacks,Online,L,3/20/2012,214292466,4/13/2012,2758,152.58,97.44,420815.64,268739.52,152076.12
+Asia,Bangladesh,Baby Food,Online,L,2/26/2014,221880328,3/30/2014,8175,255.28,159.42,2086914.00,1303258.50,783655.50
+Australia and Oceania,East Timor,Beverages,Online,H,5/13/2011,804671132,6/10/2011,8924,47.45,31.79,423443.80,283693.96,139749.84
+Central America and the Caribbean,Cuba,Cereal,Online,H,11/14/2010,806463706,12/16/2010,9387,205.70,117.11,1930905.90,1099311.57,831594.33
+Middle East and North Africa,Algeria,Vegetables,Offline,M,3/14/2013,491369378,4/6/2013,5973,154.06,90.93,920200.38,543124.89,377075.49
+Middle East and North Africa,Morocco,Cosmetics,Online,C,2/25/2016,193811976,3/18/2016,2126,437.20,263.33,929487.20,559839.58,369647.62
+Middle East and North Africa,Qatar,Vegetables,Offline,L,1/6/2011,768527829,1/17/2011,3318,154.06,90.93,511171.08,301705.74,209465.34
+Asia,Kyrgyzstan,Beverages,Online,M,8/27/2016,440565764,9/6/2016,2055,47.45,31.79,97509.75,65328.45,32181.30
+Europe,Portugal,Household,Offline,H,2/18/2015,655287110,2/22/2015,2873,668.27,502.54,1919939.71,1443797.42,476142.29
+Central America and the Caribbean,Barbados,Meat,Online,H,1/30/2016,228365695,2/14/2016,7339,421.89,364.69,3096250.71,2676459.91,419790.80
+Europe,Liechtenstein,Baby Food,Online,H,1/18/2015,295787847,2/16/2015,9052,255.28,159.42,2310794.56,1443069.84,867724.72
+Europe,Kosovo,Baby Food,Offline,L,6/10/2012,263852393,6/29/2012,8641,255.28,159.42,2205874.48,1377548.22,828326.26
+Sub-Saharan Africa,Rwanda,Beverages,Offline,M,4/20/2017,959170663,5/14/2017,8769,47.45,31.79,416089.05,278766.51,137322.54
+Europe,Russia,Fruits,Offline,H,3/24/2013,578666484,4/11/2013,9127,9.33,6.92,85154.91,63158.84,21996.07
+Sub-Saharan Africa,Sao Tome and Principe,Vegetables,Online,H,3/7/2015,539576184,4/16/2015,1438,154.06,90.93,221538.28,130757.34,90780.94
+Australia and Oceania,Samoa ,Household,Offline,L,9/1/2012,529448592,9/18/2012,4459,668.27,502.54,2979815.93,2240825.86,738990.07
+Sub-Saharan Africa,Republic of the Congo,Vegetables,Online,L,6/6/2011,756145036,7/17/2011,8974,154.06,90.93,1382534.44,816005.82,566528.62
+Europe,Denmark,Personal Care,Offline,C,6/18/2014,597839343,7/26/2014,2802,81.73,56.67,229007.46,158789.34,70218.12
+Australia and Oceania,Tonga,Office Supplies,Offline,M,9/11/2010,853017842,9/12/2010,5790,651.21,524.96,3770505.90,3039518.40,730987.50
+Middle East and North Africa,Oman,Baby Food,Offline,L,8/16/2016,590479362,8/28/2016,4820,255.28,159.42,1230449.60,768404.40,462045.20
+Europe,Romania,Cosmetics,Offline,M,12/12/2011,299335229,12/24/2011,8801,437.20,263.33,3847797.20,2317567.33,1530229.87
+Central America and the Caribbean,The Bahamas,Clothes,Online,C,7/1/2011,539009273,8/4/2011,3677,109.28,35.84,401822.56,131783.68,270038.88
+Middle East and North Africa,Libya,Personal Care,Online,H,1/13/2016,589237821,2/4/2016,7420,81.73,56.67,606436.60,420491.40,185945.20
+Europe,Vatican City,Vegetables,Offline,L,1/10/2016,700069701,1/21/2016,5037,154.06,90.93,776000.22,458014.41,317985.81
+Europe,Ukraine,Household,Online,H,7/28/2010,741866242,9/13/2010,3562,668.27,502.54,2380377.74,1790047.48,590330.26
+Central America and the Caribbean,Antigua and Barbuda ,Cereal,Offline,L,3/12/2011,655301272,3/25/2011,7064,205.70,117.11,1453064.80,827265.04,625799.76
+Australia and Oceania,Fiji,Beverages,Online,C,5/5/2015,901361119,5/14/2015,1640,47.45,31.79,77818.00,52135.60,25682.40
+Europe,Bulgaria,Snacks,Offline,L,3/1/2010,211344611,3/23/2010,422,152.58,97.44,64388.76,41119.68,23269.08
+Middle East and North Africa,Turkey,Beverages,Online,L,3/2/2014,536863076,3/2/2014,8569,47.45,31.79,406599.05,272408.51,134190.54
+Sub-Saharan Africa,Cote d'Ivoire,Personal Care,Online,M,11/5/2012,299840342,12/8/2012,8275,81.73,56.67,676315.75,468944.25,207371.50
+Central America and the Caribbean,Antigua and Barbuda ,Clothes,Offline,H,6/24/2015,242512738,7/15/2015,3763,109.28,35.84,411220.64,134865.92,276354.72
+Australia and Oceania,Samoa ,Clothes,Online,M,6/22/2013,277429091,6/25/2013,6288,109.28,35.84,687152.64,225361.92,461790.72
+Asia,Sri Lanka,Vegetables,Offline,H,6/15/2014,837450730,7/19/2014,9136,154.06,90.93,1407492.16,830736.48,576755.68
+Europe,San Marino,Personal Care,Offline,H,9/29/2015,625751483,10/1/2015,2624,81.73,56.67,214459.52,148702.08,65757.44
+Europe,Serbia,Fruits,Online,C,9/26/2015,665817677,10/10/2015,9102,9.33,6.92,84921.66,62985.84,21935.82
+Australia and Oceania,Australia,Fruits,Online,M,2/6/2010,251448142,2/18/2010,7948,9.33,6.92,74154.84,55000.16,19154.68
+Europe,Russia,Baby Food,Offline,L,9/20/2010,996754205,9/22/2010,574,255.28,159.42,146530.72,91507.08,55023.64
+Middle East and North Africa,Pakistan,Vegetables,Offline,H,8/8/2011,986159694,9/6/2011,5423,154.06,90.93,835467.38,493113.39,342353.99
+Asia,Turkmenistan,Household,Offline,H,5/28/2015,624400937,7/16/2015,2968,668.27,502.54,1983425.36,1491538.72,491886.64
+Central America and the Caribbean,The Bahamas,Personal Care,Offline,M,6/24/2014,386526763,7/1/2014,713,81.73,56.67,58273.49,40405.71,17867.78
+Sub-Saharan Africa,Gabon,Cosmetics,Online,H,5/25/2017,367898499,6/9/2017,8196,437.20,263.33,3583291.20,2158252.68,1425038.52
+Europe,Germany,Cereal,Online,H,11/10/2014,734189975,11/29/2014,1984,205.70,117.11,408108.80,232346.24,175762.56
+Sub-Saharan Africa,Togo,Cosmetics,Offline,L,10/9/2013,371387517,11/8/2013,674,437.20,263.33,294672.80,177484.42,117188.38
+Europe,Belarus,Beverages,Online,L,10/3/2010,935789954,11/18/2010,9898,47.45,31.79,469660.10,314657.42,155002.68
+Europe,Germany,Cereal,Online,M,1/23/2011,104008615,2/22/2011,7315,205.70,117.11,1504695.50,856659.65,648035.85
+Europe,Belarus,Beverages,Online,H,3/24/2017,122967326,4/25/2017,7619,47.45,31.79,361521.55,242208.01,119313.54
+Middle East and North Africa,Kuwait,Baby Food,Online,C,2/17/2010,159902417,3/5/2010,7533,255.28,159.42,1923024.24,1200910.86,722113.38
+North America,Greenland,Meat,Offline,C,5/12/2013,352362716,6/16/2013,813,421.89,364.69,342996.57,296492.97,46503.60
+Sub-Saharan Africa,Central African Republic,Beverages,Online,C,9/21/2013,458209550,9/24/2013,3243,47.45,31.79,153880.35,103094.97,50785.38
+Europe,Montenegro,Cereal,Offline,M,6/6/2010,305616748,7/1/2010,7642,205.70,117.11,1571959.40,894954.62,677004.78
+Europe,Malta,Office Supplies,Offline,M,5/5/2011,243070638,5/22/2011,8858,651.21,524.96,5768418.18,4650095.68,1118322.50
+Sub-Saharan Africa,Cameroon,Personal Care,Offline,M,1/7/2014,689370048,2/10/2014,8771,81.73,56.67,716853.83,497052.57,219801.26
+Middle East and North Africa,Egypt,Beverages,Offline,H,2/3/2017,783626306,3/20/2017,1293,47.45,31.79,61352.85,41104.47,20248.38
+Middle East and North Africa,Lebanon,Beverages,Offline,C,6/21/2016,635263240,6/27/2016,7364,47.45,31.79,349421.80,234101.56,115320.24
+Australia and Oceania,Tuvalu,Personal Care,Offline,L,9/11/2016,874017179,10/19/2016,9961,81.73,56.67,814112.53,564489.87,249622.66
+Middle East and North Africa,Azerbaijan,Office Supplies,Online,H,1/7/2012,399936950,2/26/2012,9086,651.21,524.96,5916894.06,4769786.56,1147107.50
+Middle East and North Africa,Jordan,Vegetables,Online,C,11/23/2012,433383882,12/4/2012,6776,154.06,90.93,1043910.56,616141.68,427768.88
+Australia and Oceania,Solomon Islands,Meat,Offline,M,12/4/2011,465031802,1/6/2012,2099,421.89,364.69,885547.11,765484.31,120062.80
+Europe,Bulgaria,Clothes,Offline,L,5/4/2010,505867040,6/12/2010,6153,109.28,35.84,672399.84,220523.52,451876.32
+Europe,France,Cosmetics,Online,C,3/20/2014,637188422,4/29/2014,7069,437.20,263.33,3090566.80,1861479.77,1229087.03
+Middle East and North Africa,Algeria,Vegetables,Online,M,7/24/2015,560607278,8/3/2015,5006,154.06,90.93,771224.36,455195.58,316028.78
+Middle East and North Africa,Israel,Cosmetics,Offline,M,3/24/2011,948047435,4/6/2011,7159,437.20,263.33,3129914.80,1885179.47,1244735.33
+Sub-Saharan Africa,Guinea-Bissau,Cosmetics,Offline,C,4/11/2014,291745221,5/7/2014,2749,437.20,263.33,1201862.80,723894.17,477968.63
+Sub-Saharan Africa,Benin,Baby Food,Online,H,5/2/2012,754249465,5/14/2012,8033,255.28,159.42,2050664.24,1280620.86,770043.38
+Europe,San Marino,Cereal,Online,H,10/22/2016,518421494,10/22/2016,1296,205.70,117.11,266587.20,151774.56,114812.64
+Middle East and North Africa,Pakistan,Baby Food,Online,L,8/31/2013,537435138,9/5/2013,7855,255.28,159.42,2005224.40,1252244.10,752980.30
+Sub-Saharan Africa,Mali,Beverages,Online,H,8/27/2012,484776723,9/4/2012,5060,47.45,31.79,240097.00,160857.40,79239.60
+Europe,United Kingdom,Fruits,Offline,M,3/27/2013,104245078,4/21/2013,7290,9.33,6.92,68015.70,50446.80,17568.90
+Central America and the Caribbean,The Bahamas,Beverages,Offline,H,12/5/2015,559951531,1/13/2016,956,47.45,31.79,45362.20,30391.24,14970.96
+Europe,Spain,Vegetables,Online,C,12/16/2010,386319911,1/2/2011,9501,154.06,90.93,1463724.06,863925.93,599798.13
+Sub-Saharan Africa,Madagascar,Vegetables,Offline,C,5/3/2012,438086545,6/15/2012,8399,154.06,90.93,1293949.94,763721.07,530228.87
+Europe,Cyprus,Baby Food,Online,M,3/17/2016,740300261,4/23/2016,153,255.28,159.42,39057.84,24391.26,14666.58
+Sub-Saharan Africa,Mauritania,Baby Food,Offline,M,3/17/2012,938322389,4/20/2012,9301,255.28,159.42,2374359.28,1482765.42,891593.86
+Europe,Macedonia,Office Supplies,Offline,C,7/17/2017,747826755,7/22/2017,7410,651.21,524.96,4825466.10,3889953.60,935512.50
+Middle East and North Africa,Azerbaijan,Household,Online,M,8/12/2012,404799687,9/18/2012,8078,668.27,502.54,5398285.06,4059518.12,1338766.94
+Europe,Romania,Personal Care,Offline,M,12/21/2012,215540015,12/24/2012,1935,81.73,56.67,158147.55,109656.45,48491.10
+Central America and the Caribbean,Saint Kitts and Nevis ,Personal Care,Offline,L,7/7/2012,106659066,8/19/2012,1643,81.73,56.67,134282.39,93108.81,41173.58
+Europe,Kosovo,Vegetables,Offline,C,7/23/2017,975080668,8/20/2017,6893,154.06,90.93,1061935.58,626780.49,435155.09
+Europe,Bosnia and Herzegovina,Baby Food,Online,L,10/9/2012,638041150,11/28/2012,9410,255.28,159.42,2402184.80,1500142.20,902042.60
+Europe,Greece,Cosmetics,Online,C,5/22/2010,583089339,6/26/2010,7948,437.20,263.33,3474865.60,2092946.84,1381918.76
+Europe,Norway,Snacks,Online,M,2/19/2016,118086564,3/13/2016,3293,152.58,97.44,502445.94,320869.92,181576.02
+Sub-Saharan Africa,Mauritius ,Office Supplies,Online,L,4/21/2010,421206653,6/4/2010,3264,651.21,524.96,2125549.44,1713469.44,412080.00
+Central America and the Caribbean,Nicaragua,Clothes,Offline,C,2/8/2012,490935933,3/18/2012,7707,109.28,35.84,842220.96,276218.88,566002.08
+Europe,Malta,Baby Food,Offline,C,4/27/2015,296073234,6/4/2015,3504,255.28,159.42,894501.12,558607.68,335893.44
+Central America and the Caribbean,Saint Lucia,Baby Food,Online,M,10/16/2014,325729882,11/19/2014,9565,255.28,159.42,2441753.20,1524852.30,916900.90
+Asia,Sri Lanka,Clothes,Online,L,3/17/2010,239329707,3/27/2010,1834,109.28,35.84,200419.52,65730.56,134688.96
+North America,Mexico,Beverages,Offline,L,6/22/2017,216609036,7/3/2017,8282,47.45,31.79,392980.90,263284.78,129696.12
+Asia,North Korea,Fruits,Offline,H,11/29/2011,507616698,12/18/2011,3916,9.33,6.92,36536.28,27098.72,9437.56
+Central America and the Caribbean,Nicaragua,Vegetables,Online,L,5/4/2015,982714021,6/6/2015,5772,154.06,90.93,889234.32,524847.96,364386.36
+Sub-Saharan Africa,Botswana,Clothes,Offline,H,7/24/2016,682574832,8/28/2016,7916,109.28,35.84,865060.48,283709.44,581351.04
+Europe,Poland,Snacks,Online,M,1/9/2013,968185460,2/3/2013,6448,152.58,97.44,983835.84,628293.12,355542.72
+Central America and the Caribbean,Saint Vincent and the Grenadines,Fruits,Offline,H,8/7/2014,570844733,9/15/2014,4497,9.33,6.92,41957.01,31119.24,10837.77
+Sub-Saharan Africa,Mauritius ,Baby Food,Online,M,1/26/2017,542163980,2/21/2017,7224,255.28,159.42,1844142.72,1151650.08,692492.64
+Sub-Saharan Africa,Zambia,Meat,Online,H,7/5/2013,204067027,7/31/2013,6823,421.89,364.69,2878555.47,2488279.87,390275.60
+Sub-Saharan Africa,Guinea,Clothes,Offline,H,3/11/2013,298790204,4/18/2013,7516,109.28,35.84,821348.48,269373.44,551975.04
+Central America and the Caribbean,Nicaragua,Cereal,Online,M,2/6/2015,738882339,2/9/2015,558,205.70,117.11,114780.60,65347.38,49433.22
+Central America and the Caribbean,Haiti,Cosmetics,Online,M,9/16/2011,157204759,10/9/2011,9236,437.20,263.33,4037979.20,2432115.88,1605863.32
+Middle East and North Africa,Qatar,Fruits,Offline,L,6/28/2015,856931293,8/8/2015,3867,9.33,6.92,36079.11,26759.64,9319.47
+Sub-Saharan Africa,Tanzania,Snacks,Offline,L,4/7/2017,261548268,4/15/2017,6800,152.58,97.44,1037544.00,662592.00,374952.00
+Europe,Kosovo,Baby Food,Offline,M,9/13/2012,364854514,10/3/2012,7413,255.28,159.42,1892390.64,1181780.46,710610.18
+Europe,Luxembourg,Cosmetics,Online,C,9/6/2013,980961358,10/8/2013,7120,437.20,263.33,3112864.00,1874909.60,1237954.40
+Asia,Japan,Cosmetics,Offline,L,3/21/2014,194292628,4/27/2014,4361,437.20,263.33,1906629.20,1148382.13,758247.07
+Middle East and North Africa,Qatar,Vegetables,Offline,H,12/17/2016,209584653,1/30/2017,9611,154.06,90.93,1480670.66,873928.23,606742.43
+Europe,France,Fruits,Offline,C,4/9/2014,601886260,5/27/2014,374,9.33,6.92,3489.42,2588.08,901.34
+Central America and the Caribbean,Saint Kitts and Nevis ,Cosmetics,Online,C,9/17/2014,566558778,9/25/2014,6187,437.20,263.33,2704956.40,1629222.71,1075733.69
+Sub-Saharan Africa,Eritrea,Personal Care,Offline,M,7/22/2016,269276034,8/14/2016,3617,81.73,56.67,295617.41,204975.39,90642.02
+Middle East and North Africa,Jordan,Office Supplies,Offline,L,7/29/2011,396024358,7/30/2011,1263,651.21,524.96,822478.23,663024.48,159453.75
+Sub-Saharan Africa,Togo,Cereal,Offline,C,7/10/2011,803102576,8/24/2011,4754,205.70,117.11,977897.80,556740.94,421156.86
+Sub-Saharan Africa,Burundi,Office Supplies,Online,M,1/31/2014,967122018,2/12/2014,1752,651.21,524.96,1140919.92,919729.92,221190.00
+Sub-Saharan Africa,Ethiopia,Personal Care,Online,L,3/23/2014,435006511,3/29/2014,6948,81.73,56.67,567860.04,393743.16,174116.88
+Middle East and North Africa,Iran,Vegetables,Online,C,7/14/2015,173992383,8/24/2015,7067,154.06,90.93,1088742.02,642602.31,446139.71
+Europe,Poland,Household,Online,L,4/27/2011,321628463,5/14/2011,5864,668.27,502.54,3918735.28,2946894.56,971840.72
+Australia and Oceania,Palau,Cereal,Offline,M,2/4/2011,635776078,2/4/2011,9125,205.70,117.11,1877012.50,1068628.75,808383.75
+Europe,Portugal,Meat,Online,L,1/30/2014,944609057,3/16/2014,9666,421.89,364.69,4077988.74,3525093.54,552895.20
+Central America and the Caribbean,El Salvador,Vegetables,Online,M,12/26/2012,696613729,1/13/2013,2337,154.06,90.93,360038.22,212503.41,147534.81
+Europe,Malta,Cosmetics,Offline,H,12/14/2012,310588920,1/6/2013,9018,437.20,263.33,3942669.60,2374709.94,1567959.66
+Sub-Saharan Africa,South Sudan,Office Supplies,Online,C,8/8/2012,725645959,9/8/2012,3620,651.21,524.96,2357380.20,1900355.20,457025.00
+Europe,Armenia,Meat,Offline,M,6/2/2015,251208674,7/19/2015,7084,421.89,364.69,2988668.76,2583463.96,405204.80
+Sub-Saharan Africa,Senegal,Personal Care,Online,H,10/19/2010,417013394,11/29/2010,2385,81.73,56.67,194926.05,135157.95,59768.10
+Middle East and North Africa,Morocco,Beverages,Online,M,9/17/2015,123108947,10/9/2015,9528,47.45,31.79,452103.60,302895.12,149208.48
+Sub-Saharan Africa,Nigeria,Personal Care,Online,C,4/29/2010,589856660,5/10/2010,548,81.73,56.67,44788.04,31055.16,13732.88
+Central America and the Caribbean,Nicaragua,Clothes,Online,L,7/12/2017,407930362,7/31/2017,4514,109.28,35.84,493289.92,161781.76,331508.16
+Europe,Greece,Fruits,Online,L,10/31/2015,488316380,11/18/2015,2523,9.33,6.92,23539.59,17459.16,6080.43
+Middle East and North Africa,Oman,Cereal,Offline,H,4/25/2011,912313544,5/15/2011,2706,205.70,117.11,556624.20,316899.66,239724.54
+Middle East and North Africa,Syria,Beverages,Online,L,2/16/2011,481533181,4/7/2011,5224,47.45,31.79,247878.80,166070.96,81807.84
+Sub-Saharan Africa,Togo,Personal Care,Online,L,2/16/2012,767899119,3/7/2012,7269,81.73,56.67,594095.37,411934.23,182161.14
+Europe,Vatican City,Clothes,Online,M,3/23/2012,263647687,3/30/2012,8064,109.28,35.84,881233.92,289013.76,592220.16
+Sub-Saharan Africa,Senegal,Beverages,Online,L,3/13/2014,231327712,4/8/2014,3865,47.45,31.79,183394.25,122868.35,60525.90
+Europe,Switzerland,Personal Care,Offline,H,4/19/2014,653800523,4/23/2014,2958,81.73,56.67,241757.34,167629.86,74127.48
+Europe,Sweden,Cosmetics,Online,L,8/24/2013,684239947,8/31/2013,661,437.20,263.33,288989.20,174061.13,114928.07
+Sub-Saharan Africa,Eritrea,Cereal,Offline,M,6/3/2014,896132314,6/19/2014,4321,205.70,117.11,888829.70,506032.31,382797.39
+Europe,Vatican City,Personal Care,Online,H,1/27/2016,133276450,3/15/2016,8318,81.73,56.67,679830.14,471381.06,208449.08
+Asia,Indonesia,Clothes,Offline,H,7/22/2011,459783685,8/23/2011,9065,109.28,35.84,990623.20,324889.60,665733.60
+Sub-Saharan Africa,Rwanda,Clothes,Online,M,10/23/2013,410077846,12/2/2013,2,109.28,35.84,218.56,71.68,146.88
+Europe,Moldova ,Personal Care,Offline,L,2/17/2014,838895261,2/19/2014,6605,81.73,56.67,539826.65,374305.35,165521.30
+Central America and the Caribbean,Saint Kitts and Nevis ,Vegetables,Online,M,3/27/2016,871284759,5/8/2016,1377,154.06,90.93,212140.62,125210.61,86930.01
+Middle East and North Africa,Qatar,Household,Offline,C,5/1/2017,152607667,6/11/2017,8855,668.27,502.54,5917530.85,4449991.70,1467539.15
+Europe,Denmark,Meat,Online,C,11/26/2011,198537814,12/19/2011,606,421.89,364.69,255665.34,221002.14,34663.20
+Australia and Oceania,Tonga,Meat,Offline,C,8/26/2010,345061528,9/19/2010,229,421.89,364.69,96612.81,83514.01,13098.80
+Central America and the Caribbean,Grenada,Vegetables,Offline,M,12/22/2013,898477637,1/7/2014,8354,154.06,90.93,1287017.24,759629.22,527388.02
+Europe,Slovenia,Meat,Online,M,10/10/2015,885397469,11/18/2015,7642,421.89,364.69,3224083.38,2786960.98,437122.40
+Europe,Hungary,Personal Care,Offline,H,10/16/2014,302744853,11/2/2014,7785,81.73,56.67,636268.05,441175.95,195092.10
+Sub-Saharan Africa,Mauritius ,Beverages,Online,L,11/3/2010,567756116,12/12/2010,506,47.45,31.79,24009.70,16085.74,7923.96
+Sub-Saharan Africa,Mauritius ,Beverages,Online,M,2/26/2016,467980086,3/28/2016,4562,47.45,31.79,216466.90,145025.98,71440.92
+Middle East and North Africa,Syria,Personal Care,Online,L,9/29/2013,211278092,11/3/2013,737,81.73,56.67,60235.01,41765.79,18469.22
+Europe,Greece,Office Supplies,Online,L,3/11/2014,975823962,4/8/2014,6850,651.21,524.96,4460788.50,3595976.00,864812.50
+Europe,Denmark,Cosmetics,Offline,M,12/27/2013,860104024,12/30/2013,2749,437.20,263.33,1201862.80,723894.17,477968.63
+Sub-Saharan Africa,Cape Verde,Cosmetics,Online,M,6/28/2014,732917106,8/9/2014,5313,437.20,263.33,2322843.60,1399072.29,923771.31
+Sub-Saharan Africa,Sudan,Cereal,Online,L,7/14/2010,183374536,8/18/2010,3455,205.70,117.11,710693.50,404615.05,306078.45
+Sub-Saharan Africa,Cote d'Ivoire,Baby Food,Offline,C,12/18/2016,670900142,1/2/2017,3116,255.28,159.42,795452.48,496752.72,298699.76
+Australia and Oceania,Kiribati,Meat,Online,L,10/25/2011,575230252,11/22/2011,2269,421.89,364.69,957268.41,827481.61,129786.80
+Central America and the Caribbean,Panama,Office Supplies,Offline,H,11/5/2015,146413695,11/11/2015,5921,651.21,524.96,3855814.41,3108288.16,747526.25
+Sub-Saharan Africa,Mali,Fruits,Offline,L,1/2/2013,154811799,2/19/2013,1106,9.33,6.92,10318.98,7653.52,2665.46
+Sub-Saharan Africa,Sao Tome and Principe,Household,Online,C,10/30/2014,541098392,12/4/2014,1893,668.27,502.54,1265035.11,951308.22,313726.89
+Asia,Kazakhstan,Baby Food,Online,M,3/7/2011,866259801,3/25/2011,4380,255.28,159.42,1118126.40,698259.60,419866.80
+Asia,North Korea,Clothes,Offline,C,12/8/2011,761594855,1/11/2012,1697,109.28,35.84,185448.16,60820.48,124627.68
+Europe,Montenegro,Cosmetics,Offline,M,11/16/2012,378714883,12/16/2012,9005,437.20,263.33,3936986.00,2371286.65,1565699.35
+Middle East and North Africa,Azerbaijan,Personal Care,Online,H,8/24/2014,839543712,10/10/2014,8496,81.73,56.67,694378.08,481468.32,212909.76
+Asia,North Korea,Beverages,Online,M,5/18/2011,186317670,6/21/2011,4394,47.45,31.79,208495.30,139685.26,68810.04
+Europe,France,Personal Care,Offline,C,3/13/2017,131585586,4/13/2017,7954,81.73,56.67,650080.42,450753.18,199327.24
+Middle East and North Africa,Iran,Fruits,Offline,C,1/3/2017,208208787,2/14/2017,2462,9.33,6.92,22970.46,17037.04,5933.42
+Asia,Kazakhstan,Baby Food,Offline,M,9/17/2015,919361102,9/23/2015,8235,255.28,159.42,2102230.80,1312823.70,789407.10
+Europe,Greece,Personal Care,Online,L,9/11/2011,588528859,10/12/2011,7623,81.73,56.67,623027.79,431995.41,191032.38
+Australia and Oceania,East Timor,Beverages,Offline,L,10/11/2015,309510886,10/17/2015,4,47.45,31.79,189.80,127.16,62.64
+Europe,Macedonia,Meat,Online,L,2/12/2017,796418511,3/23/2017,6791,421.89,364.69,2865054.99,2476609.79,388445.20
+Australia and Oceania,Australia,Cosmetics,Offline,L,4/22/2017,133675563,5/16/2017,6424,437.20,263.33,2808572.80,1691631.92,1116940.88
+Europe,Kosovo,Cosmetics,Online,M,6/3/2011,526018369,6/21/2011,9379,437.20,263.33,4100498.80,2469772.07,1630726.73
+Middle East and North Africa,Kuwait,Cosmetics,Online,L,7/14/2014,648495757,7/31/2014,3160,437.20,263.33,1381552.00,832122.80,549429.20
+Central America and the Caribbean,Dominica,Vegetables,Offline,H,6/30/2012,596469056,7/30/2012,7303,154.06,90.93,1125100.18,664061.79,461038.39
+Middle East and North Africa,Jordan,Fruits,Online,H,2/26/2011,535612094,3/3/2011,8376,9.33,6.92,78148.08,57961.92,20186.16
+North America,Mexico,Snacks,Offline,L,6/2/2017,251911199,6/4/2017,4977,152.58,97.44,759390.66,484958.88,274431.78
+Central America and the Caribbean,Belize,Office Supplies,Offline,L,10/5/2012,501665198,10/26/2012,2735,651.21,524.96,1781059.35,1435765.60,345293.75
+Asia,Malaysia,Beverages,Offline,L,1/3/2010,761485421,1/26/2010,9313,47.45,31.79,441901.85,296060.27,145841.58
+Middle East and North Africa,United Arab Emirates,Meat,Offline,L,9/10/2011,578295695,9/19/2011,9402,421.89,364.69,3966609.78,3428815.38,537794.40
+Middle East and North Africa,Pakistan,Snacks,Offline,M,11/2/2013,919332349,12/15/2013,9726,152.58,97.44,1483993.08,947701.44,536291.64
+Europe,Montenegro,Beverages,Offline,C,4/27/2017,122144210,5/24/2017,4041,47.45,31.79,191745.45,128463.39,63282.06
+Europe,Belarus,Office Supplies,Offline,H,7/6/2016,644592607,7/31/2016,8131,651.21,524.96,5294988.51,4268449.76,1026538.75
+North America,Greenland,Cereal,Offline,H,8/19/2010,514851367,10/2/2010,4815,205.70,117.11,990445.50,563884.65,426560.85
+Sub-Saharan Africa,Niger,Vegetables,Offline,C,2/9/2015,981406819,3/28/2015,8942,154.06,90.93,1377604.52,813096.06,564508.46
+Middle East and North Africa,Pakistan,Beverages,Offline,M,5/11/2012,663057792,6/22/2012,2390,47.45,31.79,113405.50,75978.10,37427.40
+Central America and the Caribbean,Saint Vincent and the Grenadines,Cereal,Online,C,2/27/2016,498915612,4/13/2016,9072,205.70,117.11,1866110.40,1062421.92,803688.48
+Europe,Moldova ,Fruits,Online,H,11/3/2014,598404109,11/18/2014,9929,9.33,6.92,92637.57,68708.68,23928.89
+Sub-Saharan Africa,Lesotho,Household,Offline,L,12/12/2012,691259610,1/3/2013,7935,668.27,502.54,5302722.45,3987654.90,1315067.55
+Europe,Czech Republic,Personal Care,Online,C,4/22/2012,577530944,5/15/2012,3095,81.73,56.67,252954.35,175393.65,77560.70
+North America,United States of America,Cereal,Offline,M,10/21/2015,577579438,11/30/2015,7446,205.70,117.11,1531642.20,872001.06,659641.14
+Europe,Finland,Fruits,Offline,H,1/12/2016,182078921,2/14/2016,54,9.33,6.92,503.82,373.68,130.14
+Europe,Serbia,Baby Food,Online,H,3/22/2014,302015721,4/17/2014,2018,255.28,159.42,515155.04,321709.56,193445.48
+Middle East and North Africa,Afghanistan,Fruits,Online,L,6/16/2016,118688666,7/15/2016,1469,9.33,6.92,13705.77,10165.48,3540.29
+Europe,Latvia,Clothes,Offline,M,9/28/2014,233709084,10/16/2014,8566,109.28,35.84,936092.48,307005.44,629087.04
+Sub-Saharan Africa,Burkina Faso,Vegetables,Online,M,7/1/2013,419000804,7/5/2013,504,154.06,90.93,77646.24,45828.72,31817.52
+Europe,Estonia,Meat,Offline,M,8/25/2010,966800153,9/10/2010,6505,421.89,364.69,2744394.45,2372308.45,372086.00
+Asia,Singapore,Baby Food,Online,L,7/12/2016,439655959,7/30/2016,2823,255.28,159.42,720655.44,450042.66,270612.78
+Central America and the Caribbean,Grenada,Cosmetics,Offline,H,4/5/2012,620429551,5/11/2012,7746,437.20,263.33,3386551.20,2039754.18,1346797.02
+Sub-Saharan Africa,Sao Tome and Principe,Personal Care,Online,H,2/7/2014,662294757,3/17/2014,6591,81.73,56.67,538682.43,373511.97,165170.46
+Sub-Saharan Africa,Ethiopia,Office Supplies,Offline,H,8/28/2016,238737905,8/30/2016,6706,651.21,524.96,4367014.26,3520381.76,846632.50
+Central America and the Caribbean,Dominican Republic,Cereal,Offline,H,10/23/2011,893557822,12/9/2011,2471,205.70,117.11,508284.70,289378.81,218905.89
+Central America and the Caribbean,Belize,Household,Offline,M,3/24/2015,190865838,3/27/2015,298,668.27,502.54,199144.46,149756.92,49387.54
+Middle East and North Africa,Turkey,Vegetables,Online,C,2/18/2017,265085780,3/30/2017,3628,154.06,90.93,558929.68,329894.04,229035.64
+Asia,Tajikistan,Baby Food,Offline,L,5/26/2016,170953977,7/5/2016,7936,255.28,159.42,2025902.08,1265157.12,760744.96
+Asia,China,Clothes,Offline,C,9/26/2016,833519256,10/20/2016,5725,109.28,35.84,625628.00,205184.00,420444.00
+Sub-Saharan Africa,Chad,Office Supplies,Offline,L,5/10/2015,998142945,6/6/2015,1533,651.21,524.96,998304.93,804763.68,193541.25
+Europe,Bulgaria,Clothes,Online,H,4/24/2014,380498874,5/13/2014,6927,109.28,35.84,756982.56,248263.68,508718.88
+Sub-Saharan Africa,Sierra Leone,Meat,Offline,C,9/25/2016,116573369,11/3/2016,5505,421.89,364.69,2322504.45,2007618.45,314886.00
+Sub-Saharan Africa,Malawi,Fruits,Offline,C,6/15/2015,512665259,6/22/2015,7898,9.33,6.92,73688.34,54654.16,19034.18
+Europe,Luxembourg,Personal Care,Offline,M,12/7/2011,595385873,12/21/2011,6765,81.73,56.67,552903.45,383372.55,169530.90
+Europe,Luxembourg,Cereal,Online,L,6/30/2012,361659038,8/3/2012,1801,205.70,117.11,370465.70,210915.11,159550.59
+Europe,Kosovo,Baby Food,Online,L,12/14/2016,328721082,12/18/2016,4728,255.28,159.42,1206963.84,753737.76,453226.08
+Europe,Denmark,Clothes,Offline,H,10/27/2014,184120833,10/31/2014,4301,109.28,35.84,470013.28,154147.84,315865.44
+Asia,Singapore,Meat,Online,H,10/29/2011,135719621,11/22/2011,1307,421.89,364.69,551410.23,476649.83,74760.40
+Australia and Oceania,Samoa ,Personal Care,Offline,C,12/23/2010,461691272,2/2/2011,3562,81.73,56.67,291122.26,201858.54,89263.72
+Asia,Philippines,Snacks,Offline,M,5/6/2016,160522115,6/22/2016,916,152.58,97.44,139763.28,89255.04,50508.24
+Asia,China,Meat,Online,H,2/17/2014,101010978,3/12/2014,248,421.89,364.69,104628.72,90443.12,14185.60
+Middle East and North Africa,Iraq,Vegetables,Online,M,4/29/2014,772269189,5/12/2014,469,154.06,90.93,72254.14,42646.17,29607.97
+Europe,Liechtenstein,Vegetables,Offline,H,8/14/2016,933720576,10/1/2016,7523,154.06,90.93,1158993.38,684066.39,474926.99
+Europe,Latvia,Cosmetics,Online,H,3/14/2014,765101468,4/6/2014,9382,437.20,263.33,4101810.40,2470562.06,1631248.34
+Europe,Armenia,Household,Offline,M,9/3/2012,516460692,9/24/2012,1051,668.27,502.54,702351.77,528169.54,174182.23
+Asia,North Korea,Fruits,Online,L,2/23/2011,958159577,4/4/2011,9566,9.33,6.92,89250.78,66196.72,23054.06
+Asia,Nepal,Household,Offline,H,7/26/2013,230871951,8/8/2013,8996,668.27,502.54,6011756.92,4520849.84,1490907.08
+Sub-Saharan Africa,Cape Verde,Fruits,Online,M,5/20/2017,595584142,6/29/2017,5438,9.33,6.92,50736.54,37630.96,13105.58
+Europe,Ukraine,Meat,Offline,H,4/25/2017,783594977,5/1/2017,2022,421.89,364.69,853061.58,737403.18,115658.40
+Asia,Tajikistan,Personal Care,Online,L,9/22/2016,946515786,10/4/2016,3910,81.73,56.67,319564.30,221579.70,97984.60
+Europe,Romania,Snacks,Online,L,4/3/2016,406270396,5/19/2016,3293,152.58,97.44,502445.94,320869.92,181576.02
+Europe,Kosovo,Vegetables,Online,L,1/13/2010,805095136,1/20/2010,4396,154.06,90.93,677247.76,399728.28,277519.48
+Asia,Thailand,Fruits,Offline,M,3/12/2012,255538833,4/18/2012,8474,9.33,6.92,79062.42,58640.08,20422.34
+Sub-Saharan Africa,Madagascar,Office Supplies,Online,C,3/17/2015,990462815,4/24/2015,8812,651.21,524.96,5738462.52,4625947.52,1112515.00
+Australia and Oceania,Australia,Baby Food,Offline,M,5/26/2016,813040912,5/26/2016,5728,255.28,159.42,1462243.84,913157.76,549086.08
+Sub-Saharan Africa,Tanzania,Personal Care,Online,C,3/3/2014,746759450,4/3/2014,1571,81.73,56.67,128397.83,89028.57,39369.26
+Europe,United Kingdom,Cereal,Online,M,10/1/2011,985417258,10/21/2011,5720,205.70,117.11,1176604.00,669869.20,506734.80
+Europe,Serbia,Cereal,Offline,M,6/15/2013,443125665,7/9/2013,9586,205.70,117.11,1971840.20,1122616.46,849223.74
+Sub-Saharan Africa,Seychelles ,Vegetables,Offline,C,4/18/2013,804308497,5/27/2013,1613,154.06,90.93,248498.78,146670.09,101828.69
+Central America and the Caribbean,Honduras,Cosmetics,Online,H,12/4/2013,673702085,12/24/2013,2273,437.20,263.33,993755.60,598549.09,395206.51
+Asia,Sri Lanka,Fruits,Offline,L,4/9/2015,526355254,4/22/2015,9071,9.33,6.92,84632.43,62771.32,21861.11
+Central America and the Caribbean,Dominican Republic,Clothes,Offline,L,10/3/2010,457629334,11/2/2010,1544,109.28,35.84,168728.32,55336.96,113391.36
+Sub-Saharan Africa,Central African Republic,Cereal,Offline,H,10/19/2013,633198153,11/3/2013,6260,205.70,117.11,1287682.00,733108.60,554573.40
+Australia and Oceania,New Zealand,Office Supplies,Offline,H,3/2/2016,839048039,4/2/2016,1815,651.21,524.96,1181946.15,952802.40,229143.75
+Europe,Belgium,Beverages,Online,L,6/23/2014,931477820,7/19/2014,3841,47.45,31.79,182255.45,122105.39,60150.06
+Europe,United Kingdom,Personal Care,Offline,H,12/23/2013,387098824,1/4/2014,9999,81.73,56.67,817218.27,566643.33,250574.94
+Sub-Saharan Africa,Niger,Meat,Online,L,3/16/2017,552834880,4/25/2017,4981,421.89,364.69,2101434.09,1816520.89,284913.20
+Europe,Denmark,Meat,Offline,M,8/12/2012,595922315,9/4/2012,5510,421.89,364.69,2324613.90,2009441.90,315172.00
+Europe,Slovakia,Office Supplies,Online,M,3/23/2016,653909957,4/6/2016,5342,651.21,524.96,3478763.82,2804336.32,674427.50
+Sub-Saharan Africa,Burundi,Beverages,Online,M,10/31/2014,484659135,11/29/2014,263,47.45,31.79,12479.35,8360.77,4118.58
+Sub-Saharan Africa,Burkina Faso,Snacks,Online,H,3/25/2015,816343677,4/13/2015,3090,152.58,97.44,471472.20,301089.60,170382.60
+Asia,Turkmenistan,Personal Care,Online,M,2/16/2010,197449910,2/20/2010,8671,81.73,56.67,708680.83,491385.57,217295.26
+Asia,Myanmar,Snacks,Offline,L,3/27/2012,846776664,5/3/2012,8887,152.58,97.44,1355978.46,865949.28,490029.18
+Europe,Serbia,Beverages,Offline,H,8/11/2012,103435266,9/18/2012,7648,47.45,31.79,362897.60,243129.92,119767.68
+Central America and the Caribbean,Saint Kitts and Nevis ,Fruits,Online,H,9/25/2014,776849544,10/7/2014,5898,9.33,6.92,55028.34,40814.16,14214.18
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Offline,L,7/28/2015,796755826,8/28/2015,6609,255.28,159.42,1687145.52,1053606.78,633538.74
+Europe,Sweden,Meat,Offline,L,12/12/2016,863202941,12/13/2016,9787,421.89,364.69,4129037.43,3569221.03,559816.40
+Europe,Cyprus,Clothes,Offline,M,3/8/2014,396552217,4/24/2014,7468,109.28,35.84,816103.04,267653.12,548449.92
+Asia,Taiwan,Beverages,Offline,C,1/4/2015,687477481,1/30/2015,8719,47.45,31.79,413716.55,277177.01,136539.54
+Sub-Saharan Africa,Benin,Snacks,Online,H,2/1/2013,846965062,2/12/2013,4638,152.58,97.44,707666.04,451926.72,255739.32
+Middle East and North Africa,Afghanistan,Personal Care,Online,M,7/3/2014,956313788,7/19/2014,3356,81.73,56.67,274285.88,190184.52,84101.36
+Central America and the Caribbean,Haiti,Clothes,Offline,H,4/4/2011,717134988,4/17/2011,5034,109.28,35.84,550115.52,180418.56,369696.96
+Europe,United Kingdom,Cosmetics,Offline,M,5/6/2015,801352488,5/23/2015,6864,437.20,263.33,3000940.80,1807497.12,1193443.68
+Middle East and North Africa,Libya,Office Supplies,Offline,M,2/11/2017,601202619,2/15/2017,8070,651.21,524.96,5255264.70,4236427.20,1018837.50
+Europe,Luxembourg,Fruits,Online,H,10/7/2011,479234206,11/14/2011,4906,9.33,6.92,45772.98,33949.52,11823.46
+Sub-Saharan Africa,The Gambia,Baby Food,Offline,L,9/13/2010,418308579,10/30/2010,5659,255.28,159.42,1444629.52,902157.78,542471.74
+Middle East and North Africa,Turkey,Cosmetics,Offline,L,1/12/2015,471599566,2/28/2015,5647,437.20,263.33,2468868.40,1487024.51,981843.89
+Sub-Saharan Africa,Mauritania,Baby Food,Online,H,10/18/2011,312593495,11/3/2011,2217,255.28,159.42,565955.76,353434.14,212521.62
+Sub-Saharan Africa,Democratic Republic of the Congo,Snacks,Offline,M,8/5/2015,585089194,8/30/2015,9749,152.58,97.44,1487502.42,949942.56,537559.86
+Middle East and North Africa,Egypt,Snacks,Online,C,10/20/2011,653197991,10/22/2011,4656,152.58,97.44,710412.48,453680.64,256731.84
+Sub-Saharan Africa,Djibouti,Cereal,Online,C,5/12/2013,851343715,5/31/2013,379,205.70,117.11,77960.30,44384.69,33575.61
+Sub-Saharan Africa,South Sudan,Household,Offline,C,7/27/2011,234262692,8/2/2011,2391,668.27,502.54,1597833.57,1201573.14,396260.43
+Europe,Romania,Meat,Offline,M,2/19/2010,627003753,3/26/2010,3199,421.89,364.69,1349626.11,1166643.31,182982.80
+Middle East and North Africa,Syria,Vegetables,Offline,C,11/6/2013,774928224,12/17/2013,7337,154.06,90.93,1130338.22,667153.41,463184.81
+Europe,France,Fruits,Offline,C,3/12/2017,393709933,4/25/2017,6373,9.33,6.92,59460.09,44101.16,15358.93
+Sub-Saharan Africa,Mauritius ,Household,Online,C,9/20/2015,619335210,10/21/2015,3906,668.27,502.54,2610262.62,1962921.24,647341.38
+Asia,Kyrgyzstan,Office Supplies,Online,M,5/27/2017,858102881,6/23/2017,566,651.21,524.96,368584.86,297127.36,71457.50
+Europe,Latvia,Beverages,Offline,L,2/20/2016,136624276,3/8/2016,9014,47.45,31.79,427714.30,286555.06,141159.24
+Europe,United Kingdom,Clothes,Online,L,9/3/2010,251823222,10/1/2010,8942,109.28,35.84,977181.76,320481.28,656700.48
+Asia,India,Fruits,Online,H,12/20/2015,820936048,2/8/2016,2074,9.33,6.92,19350.42,14352.08,4998.34
+Sub-Saharan Africa,Zambia,Snacks,Online,M,12/17/2013,631511580,12/23/2013,7165,152.58,97.44,1093235.70,698157.60,395078.10
+Asia,India,Household,Online,C,5/20/2010,791411149,6/30/2010,5001,668.27,502.54,3342018.27,2513202.54,828815.73
+Central America and the Caribbean,Saint Vincent and the Grenadines,Beverages,Online,M,10/24/2015,678808581,11/24/2015,3399,47.45,31.79,161282.55,108054.21,53228.34
+Australia and Oceania,Fiji,Household,Online,C,8/8/2011,192190206,8/26/2011,2208,668.27,502.54,1475540.16,1109608.32,365931.84
+Europe,Macedonia,Baby Food,Offline,H,4/1/2014,200354850,5/4/2014,8307,255.28,159.42,2120610.96,1324301.94,796309.02
+North America,United States of America,Clothes,Offline,H,1/7/2011,292413842,1/26/2011,609,109.28,35.84,66551.52,21826.56,44724.96
+Asia,Vietnam,Beverages,Offline,C,10/1/2016,127791011,10/9/2016,5055,47.45,31.79,239859.75,160698.45,79161.30
+Australia and Oceania,Australia,Cereal,Online,L,1/22/2017,786222684,3/9/2017,9619,205.70,117.11,1978628.30,1126481.09,852147.21
+Australia and Oceania,Tuvalu,Cosmetics,Online,C,7/21/2017,717757689,8/4/2017,9305,437.20,263.33,4068146.00,2450285.65,1617860.35
+Europe,Germany,Meat,Offline,H,5/2/2017,692757356,5/12/2017,1151,421.89,364.69,485595.39,419758.19,65837.20
+Europe,Liechtenstein,Baby Food,Offline,L,10/12/2012,651895511,11/1/2012,9223,255.28,159.42,2354447.44,1470330.66,884116.78
+Europe,Lithuania,Clothes,Offline,C,6/26/2016,156158483,8/5/2016,9620,109.28,35.84,1051273.60,344780.80,706492.80
+Asia,Japan,Office Supplies,Offline,L,8/6/2015,636845099,8/13/2015,5472,651.21,524.96,3563421.12,2872581.12,690840.00
+Sub-Saharan Africa,Sierra Leone,Cosmetics,Offline,H,6/23/2013,445566689,7/15/2013,1940,437.20,263.33,848168.00,510860.20,337307.80
+Sub-Saharan Africa,Nigeria,Vegetables,Offline,H,10/7/2010,704247081,10/29/2010,1216,154.06,90.93,187336.96,110570.88,76766.08
+Sub-Saharan Africa,Madagascar,Beverages,Online,L,9/27/2016,355122601,10/5/2016,7524,47.45,31.79,357013.80,239187.96,117825.84
+Australia and Oceania,Papua New Guinea,Cereal,Online,M,3/29/2015,210742080,4/19/2015,2119,205.70,117.11,435878.30,248156.09,187722.21
+Europe,Serbia,Snacks,Offline,C,11/18/2013,703966844,11/30/2013,8288,152.58,97.44,1264583.04,807582.72,457000.32
+Sub-Saharan Africa,Senegal,Cosmetics,Online,C,7/26/2017,537970721,8/18/2017,6346,437.20,263.33,2774471.20,1671092.18,1103379.02
+Europe,Slovenia,Household,Offline,L,2/11/2017,736240041,2/20/2017,8644,668.27,502.54,5776525.88,4343955.76,1432570.12
+Middle East and North Africa,Iraq,Office Supplies,Online,H,10/9/2015,592573630,10/21/2015,4560,651.21,524.96,2969517.60,2393817.60,575700.00
+Central America and the Caribbean,Haiti,Snacks,Online,L,4/7/2010,821082818,5/15/2010,5507,152.58,97.44,840258.06,536602.08,303655.98
+Sub-Saharan Africa,Sierra Leone,Household,Offline,L,5/1/2017,406191432,6/1/2017,9926,668.27,502.54,6633248.02,4988212.04,1645035.98
+Sub-Saharan Africa,Uganda,Office Supplies,Online,H,11/25/2016,652635800,1/14/2017,8291,651.21,524.96,5399182.11,4352443.36,1046738.75
+Asia,Myanmar,Meat,Offline,H,6/24/2016,235464751,8/2/2016,8107,421.89,364.69,3420262.23,2956541.83,463720.40
+Sub-Saharan Africa,Angola,Fruits,Offline,M,1/23/2017,150039613,1/30/2017,8910,9.33,6.92,83130.30,61657.20,21473.10
+Middle East and North Africa,Yemen,Cosmetics,Offline,M,12/1/2016,562034213,12/4/2016,7268,437.20,263.33,3177569.60,1913882.44,1263687.16
+Europe,Montenegro,Cosmetics,Online,C,5/22/2015,357434880,6/29/2015,1779,437.20,263.33,777778.80,468464.07,309314.73
+Asia,Myanmar,Household,Offline,H,8/29/2016,292540442,9/7/2016,8073,668.27,502.54,5394943.71,4057005.42,1337938.29
+Asia,Indonesia,Meat,Online,H,11/5/2010,743962228,12/4/2010,3811,421.89,364.69,1607822.79,1389833.59,217989.20
+Europe,Russia,Clothes,Offline,H,8/15/2015,358624064,10/3/2015,3685,109.28,35.84,402696.80,132070.40,270626.40
+Europe,Spain,Vegetables,Online,M,11/12/2011,103762280,12/14/2011,4419,154.06,90.93,680791.14,401819.67,278971.47
+Central America and the Caribbean,El Salvador,Cereal,Online,H,8/8/2015,116925704,9/8/2015,9769,205.70,117.11,2009483.30,1144047.59,865435.71
+Asia,Uzbekistan,Household,Online,C,8/16/2013,155975663,8/26/2013,5520,668.27,502.54,3688850.40,2774020.80,914829.60
+Sub-Saharan Africa,Sudan,Clothes,Online,M,9/22/2012,949085986,10/16/2012,4489,109.28,35.84,490557.92,160885.76,329672.16
+Europe,Slovenia,Baby Food,Offline,M,3/12/2013,144743001,4/21/2013,1525,255.28,159.42,389302.00,243115.50,146186.50
+Asia,Brunei,Baby Food,Online,M,8/3/2012,861745536,8/14/2012,8509,255.28,159.42,2172177.52,1356504.78,815672.74
+Europe,Iceland,Beverages,Online,L,2/11/2017,439204919,2/19/2017,9350,47.45,31.79,443657.50,297236.50,146421.00
+Sub-Saharan Africa,Zambia,Office Supplies,Offline,L,2/6/2015,786544978,3/15/2015,4993,651.21,524.96,3251491.53,2621125.28,630366.25
+Sub-Saharan Africa,Namibia,Meat,Online,C,2/4/2011,733502042,2/22/2011,8409,421.89,364.69,3547673.01,3066678.21,480994.80
+Sub-Saharan Africa,Ethiopia,Personal Care,Online,C,6/29/2014,980124938,7/7/2014,9605,81.73,56.67,785016.65,544315.35,240701.30
+Middle East and North Africa,Azerbaijan,Personal Care,Online,M,1/12/2013,946774995,2/13/2013,615,81.73,56.67,50263.95,34852.05,15411.90
+Australia and Oceania,Nauru,Clothes,Offline,H,6/17/2014,124126040,8/2/2014,509,109.28,35.84,55623.52,18242.56,37380.96
+Sub-Saharan Africa,Zambia,Beverages,Online,H,6/5/2012,323164403,6/30/2012,383,47.45,31.79,18173.35,12175.57,5997.78
+Middle East and North Africa,Lebanon,Cereal,Online,L,1/8/2013,725188910,2/8/2013,8369,205.70,117.11,1721503.30,980093.59,741409.71
+Sub-Saharan Africa,Swaziland,Beverages,Online,M,10/26/2015,131810891,12/3/2015,4627,47.45,31.79,219551.15,147092.33,72458.82
+Europe,Malta,Fruits,Offline,C,2/3/2010,114954173,2/11/2010,6349,9.33,6.92,59236.17,43935.08,15301.09
+Middle East and North Africa,Afghanistan,Personal Care,Online,C,6/26/2016,966855084,7/16/2016,2760,81.73,56.67,225574.80,156409.20,69165.60
+Sub-Saharan Africa,Liberia,Clothes,Offline,L,1/17/2015,350062453,2/22/2015,114,109.28,35.84,12457.92,4085.76,8372.16
+Australia and Oceania,Solomon Islands,Baby Food,Online,L,3/8/2017,947437608,4/12/2017,6697,255.28,159.42,1709610.16,1067635.74,641974.42
+Sub-Saharan Africa,Cote d'Ivoire,Beverages,Online,C,6/8/2016,112154376,7/11/2016,7827,47.45,31.79,371391.15,248820.33,122570.82
+Australia and Oceania,Kiribati,Household,Offline,M,12/25/2014,217699086,1/2/2015,852,668.27,502.54,569366.04,428164.08,141201.96
+Sub-Saharan Africa,Zambia,Clothes,Offline,C,4/11/2012,107870566,5/12/2012,153,109.28,35.84,16719.84,5483.52,11236.32
+Sub-Saharan Africa,Namibia,Cereal,Online,C,6/2/2016,946780145,7/2/2016,2139,205.70,117.11,439992.30,250498.29,189494.01
+Middle East and North Africa,Yemen,Cereal,Online,H,1/22/2010,368851649,2/17/2010,255,205.70,117.11,52453.50,29863.05,22590.45
+Sub-Saharan Africa,Cape Verde,Office Supplies,Online,L,10/13/2014,128821408,10/13/2014,9972,651.21,524.96,6493866.12,5234901.12,1258965.00
+Australia and Oceania,Samoa ,Vegetables,Offline,L,8/2/2011,251738250,8/26/2011,3797,154.06,90.93,584965.82,345261.21,239704.61
+Sub-Saharan Africa,Rwanda,Meat,Online,M,10/26/2012,382963502,11/27/2012,6265,421.89,364.69,2643140.85,2284782.85,358358.00
+Europe,Norway,Beverages,Offline,L,12/22/2012,238170993,2/7/2013,8944,47.45,31.79,424392.80,284329.76,140063.04
+Sub-Saharan Africa,Mozambique,Baby Food,Offline,M,3/6/2015,953347051,3/8/2015,5433,255.28,159.42,1386936.24,866128.86,520807.38
+Europe,Italy,Clothes,Online,M,4/2/2012,134790503,4/26/2012,6360,109.28,35.84,695020.80,227942.40,467078.40
+Europe,Montenegro,Vegetables,Online,H,3/30/2013,409112679,5/18/2013,4388,154.06,90.93,676015.28,399000.84,277014.44
+Sub-Saharan Africa,Cameroon,Personal Care,Offline,L,11/24/2016,873237407,11/25/2016,9209,81.73,56.67,752651.57,521874.03,230777.54
+Sub-Saharan Africa,Djibouti,Household,Offline,C,6/15/2015,244401013,7/7/2015,2546,668.27,502.54,1701415.42,1279466.84,421948.58
+North America,United States of America,Cereal,Online,C,7/28/2013,910152328,9/3/2013,3154,205.70,117.11,648777.80,369364.94,279412.86
+Asia,Brunei,Beverages,Online,H,12/25/2016,378352677,1/30/2017,1820,47.45,31.79,86359.00,57857.80,28501.20
+Europe,Italy,Meat,Offline,H,7/19/2013,727175891,9/7/2013,6360,421.89,364.69,2683220.40,2319428.40,363792.00
+Sub-Saharan Africa,Mozambique,Household,Offline,M,11/27/2014,955108296,12/14/2014,6624,668.27,502.54,4426620.48,3328824.96,1097795.52
+Sub-Saharan Africa,South Africa,Clothes,Offline,L,11/2/2014,130948722,11/23/2014,9492,109.28,35.84,1037285.76,340193.28,697092.48
+Australia and Oceania,Papua New Guinea,Office Supplies,Online,M,10/3/2015,543808495,10/7/2015,3873,651.21,524.96,2522136.33,2033170.08,488966.25
+Australia and Oceania,Marshall Islands,Household,Offline,H,5/10/2017,953111445,6/27/2017,5712,668.27,502.54,3817158.24,2870508.48,946649.76
+Europe,Sweden,Cosmetics,Online,L,10/26/2012,638593900,12/12/2012,2981,437.20,263.33,1303293.20,784986.73,518306.47
+Sub-Saharan Africa,Ghana,Snacks,Online,C,5/2/2015,750304687,6/7/2015,685,152.58,97.44,104517.30,66746.40,37770.90
+Sub-Saharan Africa,Cote d'Ivoire,Baby Food,Online,H,6/3/2016,258605134,6/12/2016,5861,255.28,159.42,1496196.08,934360.62,561835.46
+Sub-Saharan Africa,Guinea,Office Supplies,Offline,M,6/20/2012,904169070,6/24/2012,2575,651.21,524.96,1676865.75,1351772.00,325093.75
+Middle East and North Africa,Iraq,Office Supplies,Offline,L,1/23/2016,447982823,2/10/2016,6927,651.21,524.96,4510931.67,3636397.92,874533.75
+Central America and the Caribbean,Nicaragua,Meat,Offline,M,5/9/2014,321345221,6/15/2014,2047,421.89,364.69,863608.83,746520.43,117088.40
+Sub-Saharan Africa,Burkina Faso,Beverages,Online,H,9/13/2010,675867593,9/23/2010,3095,47.45,31.79,146857.75,98390.05,48467.70
+Europe,Albania,Beverages,Offline,H,4/28/2013,833473765,5/25/2013,2264,47.45,31.79,107426.80,71972.56,35454.24
+Middle East and North Africa,United Arab Emirates,Household,Online,L,5/6/2016,636400067,6/13/2016,3777,668.27,502.54,2524055.79,1898093.58,625962.21
+Sub-Saharan Africa,South Africa,Cosmetics,Offline,L,3/9/2011,897195327,4/11/2011,8890,437.20,263.33,3886708.00,2341003.70,1545704.30
+Middle East and North Africa,Saudi Arabia,Office Supplies,Online,M,1/10/2013,248720872,1/24/2013,888,651.21,524.96,578274.48,466164.48,112110.00
+Sub-Saharan Africa,Seychelles ,Meat,Online,L,8/20/2011,994150531,9/13/2011,89,421.89,364.69,37548.21,32457.41,5090.80
+Middle East and North Africa,Afghanistan,Baby Food,Offline,L,12/18/2012,556970632,1/2/2013,8842,255.28,159.42,2257185.76,1409591.64,847594.12
+Sub-Saharan Africa,Uganda,Beverages,Offline,M,9/9/2012,930980002,10/11/2012,6526,47.45,31.79,309658.70,207461.54,102197.16
+Sub-Saharan Africa,Mali,Clothes,Online,M,2/14/2015,130289971,3/16/2015,4553,109.28,35.84,497551.84,163179.52,334372.32
+Australia and Oceania,Fiji,Fruits,Online,M,4/8/2014,739324367,4/10/2014,1364,9.33,6.92,12726.12,9438.88,3287.24
+Middle East and North Africa,Turkey,Clothes,Online,M,10/12/2012,462819516,10/20/2012,7435,109.28,35.84,812496.80,266470.40,546026.40
+Asia,Thailand,Baby Food,Online,C,8/4/2010,675824248,9/15/2010,268,255.28,159.42,68415.04,42724.56,25690.48
+Sub-Saharan Africa,Madagascar,Baby Food,Offline,L,4/8/2016,573699891,4/21/2016,9402,255.28,159.42,2400142.56,1498866.84,901275.72
+Sub-Saharan Africa,Uganda,Office Supplies,Offline,C,12/8/2012,322120273,12/28/2012,1402,651.21,524.96,912996.42,735993.92,177002.50
+Australia and Oceania,Solomon Islands,Cosmetics,Online,H,1/31/2015,607071721,2/23/2015,4868,437.20,263.33,2128289.60,1281890.44,846399.16
+Australia and Oceania,Marshall Islands,Personal Care,Online,L,10/1/2011,384853065,10/21/2011,5429,81.73,56.67,443712.17,307661.43,136050.74
+Central America and the Caribbean,Guatemala,Personal Care,Offline,M,10/5/2015,932075631,10/29/2015,747,81.73,56.67,61052.31,42332.49,18719.82
+Middle East and North Africa,Iran,Fruits,Online,H,7/5/2014,895663249,8/10/2014,5514,9.33,6.92,51445.62,38156.88,13288.74
+Sub-Saharan Africa,Djibouti,Vegetables,Offline,C,8/3/2011,342852246,8/22/2011,6453,154.06,90.93,994149.18,586771.29,407377.89
+Sub-Saharan Africa,Guinea,Beverages,Online,M,6/14/2015,311191451,7/9/2015,7321,47.45,31.79,347381.45,232734.59,114646.86
+Central America and the Caribbean,Saint Vincent and the Grenadines,Meat,Online,L,11/20/2012,558542191,12/9/2012,3901,421.89,364.69,1645792.89,1422655.69,223137.20
+Middle East and North Africa,Algeria,Beverages,Offline,C,9/12/2010,913078296,9/18/2010,9013,47.45,31.79,427666.85,286523.27,141143.58
+Australia and Oceania,Australia,Household,Online,L,9/25/2016,823286092,9/27/2016,7505,668.27,502.54,5015366.35,3771562.70,1243803.65
+Asia,Bangladesh,Fruits,Online,L,6/1/2013,707964408,6/14/2013,1256,9.33,6.92,11718.48,8691.52,3026.96
+Europe,Denmark,Cosmetics,Offline,M,7/8/2014,606224572,7/15/2014,4177,437.20,263.33,1826184.40,1099929.41,726254.99
+Middle East and North Africa,Somalia,Clothes,Offline,M,12/10/2015,627490413,1/19/2016,7212,109.28,35.84,788127.36,258478.08,529649.28
+Australia and Oceania,Marshall Islands,Cosmetics,Online,L,8/31/2014,501498258,10/3/2014,3334,437.20,263.33,1457624.80,877942.22,579682.58
+Asia,North Korea,Snacks,Offline,M,7/4/2012,928296935,8/17/2012,2547,152.58,97.44,388621.26,248179.68,140441.58
+Asia,South Korea,Household,Online,C,5/10/2012,428247773,6/24/2012,6888,668.27,502.54,4603043.76,3461495.52,1141548.24
+Sub-Saharan Africa,Sao Tome and Principe,Snacks,Offline,M,5/20/2014,292024600,7/4/2014,5423,152.58,97.44,827441.34,528417.12,299024.22
+Middle East and North Africa,Oman,Fruits,Online,L,3/28/2012,530613744,4/14/2012,9253,9.33,6.92,86330.49,64030.76,22299.73
+Europe,Cyprus,Clothes,Online,H,1/6/2012,325314033,1/30/2012,6506,109.28,35.84,710975.68,233175.04,477800.64
+Middle East and North Africa,Qatar,Fruits,Online,C,4/11/2013,277736794,5/21/2013,7344,9.33,6.92,68519.52,50820.48,17699.04
+Europe,Kosovo,Meat,Offline,M,11/19/2012,159805858,12/17/2012,8959,421.89,364.69,3779712.51,3267257.71,512454.80
+Asia,Vietnam,Beverages,Online,L,4/29/2016,263757550,5/12/2016,575,47.45,31.79,27283.75,18279.25,9004.50
+Middle East and North Africa,Pakistan,Office Supplies,Offline,L,3/24/2011,952140700,4/5/2011,8447,651.21,524.96,5500770.87,4434337.12,1066433.75
+Middle East and North Africa,United Arab Emirates,Cosmetics,Offline,L,7/25/2016,407816636,7/26/2016,860,437.20,263.33,375992.00,226463.80,149528.20
+Middle East and North Africa,Turkey,Snacks,Online,H,9/27/2010,483959186,11/14/2010,3133,152.58,97.44,478033.14,305279.52,172753.62
+Asia,Thailand,Personal Care,Online,C,1/25/2011,854054677,2/23/2011,2613,81.73,56.67,213560.49,148078.71,65481.78
+Middle East and North Africa,Bahrain,Snacks,Online,C,1/3/2017,361901938,1/18/2017,3681,152.58,97.44,561646.98,358676.64,202970.34
+North America,United States of America,Household,Offline,H,12/9/2013,171612298,1/14/2014,2747,668.27,502.54,1835737.69,1380477.38,455260.31
+Sub-Saharan Africa,Sierra Leone,Cosmetics,Offline,L,10/21/2014,617609584,11/1/2014,3255,437.20,263.33,1423086.00,857139.15,565946.85
+Central America and the Caribbean,Costa Rica,Office Supplies,Online,M,11/24/2010,754630124,12/16/2010,678,651.21,524.96,441520.38,355922.88,85597.50
+North America,Mexico,Office Supplies,Offline,C,7/3/2013,607722747,8/14/2013,7521,651.21,524.96,4897750.41,3948224.16,949526.25
+Europe,Switzerland,Snacks,Online,H,4/6/2012,722248780,4/8/2012,8319,152.58,97.44,1269313.02,810603.36,458709.66
+Central America and the Caribbean,Honduras,Clothes,Online,C,10/20/2016,813882052,11/16/2016,4640,109.28,35.84,507059.20,166297.60,340761.60
+Sub-Saharan Africa,Togo,Personal Care,Online,H,2/9/2015,218608891,2/10/2015,84,81.73,56.67,6865.32,4760.28,2105.04
+Sub-Saharan Africa,Guinea,Fruits,Offline,C,2/24/2015,142728126,4/14/2015,5279,9.33,6.92,49253.07,36530.68,12722.39
+North America,Mexico,Baby Food,Online,C,10/28/2010,512851083,11/4/2010,2887,255.28,159.42,736993.36,460245.54,276747.82
+Australia and Oceania,Australia,Household,Offline,H,1/9/2016,425901591,1/11/2016,2600,668.27,502.54,1737502.00,1306604.00,430898.00
+Europe,Spain,Vegetables,Online,H,6/1/2015,399115979,6/24/2015,6142,154.06,90.93,946236.52,558492.06,387744.46
+Middle East and North Africa,Tunisia ,Personal Care,Online,L,8/29/2013,120043075,10/13/2013,2268,81.73,56.67,185363.64,128527.56,56836.08
+Asia,South Korea,Office Supplies,Offline,L,6/26/2016,696544206,7/5/2016,1764,651.21,524.96,1148734.44,926029.44,222705.00
+Middle East and North Africa,Iraq,Cosmetics,Offline,M,10/3/2011,606793200,11/18/2011,2447,437.20,263.33,1069828.40,644368.51,425459.89
+Sub-Saharan Africa,Kenya,Beverages,Online,M,2/9/2011,649276387,3/26/2011,4166,47.45,31.79,197676.70,132437.14,65239.56
+Europe,Kosovo,Household,Offline,M,11/25/2015,792792594,1/2/2016,3801,668.27,502.54,2540094.27,1910154.54,629939.73
+Europe,Portugal,Cosmetics,Offline,C,5/24/2013,626453149,6/10/2013,263,437.20,263.33,114983.60,69255.79,45727.81
+Sub-Saharan Africa,Mali,Personal Care,Offline,M,11/10/2010,709681880,11/25/2010,9494,81.73,56.67,775944.62,538024.98,237919.64
+Middle East and North Africa,Algeria,Meat,Online,C,8/16/2016,322215116,9/11/2016,9468,421.89,364.69,3994454.52,3452884.92,541569.60
+Central America and the Caribbean,Grenada,Household,Offline,C,8/2/2013,614101684,9/6/2013,5190,668.27,502.54,3468321.30,2608182.60,860138.70
+Middle East and North Africa,Algeria,Personal Care,Online,H,12/26/2015,555702912,2/1/2016,3696,81.73,56.67,302074.08,209452.32,92621.76
+Middle East and North Africa,Lebanon,Cereal,Offline,M,8/17/2012,987692630,9/3/2012,9053,205.70,117.11,1862202.10,1060196.83,802005.27
+Asia,Cambodia,Fruits,Online,C,2/10/2016,571057164,3/5/2016,7360,9.33,6.92,68668.80,50931.20,17737.60
+Europe,Armenia,Snacks,Offline,L,7/31/2013,737095344,9/13/2013,1747,152.58,97.44,266557.26,170227.68,96329.58
+North America,United States of America,Beverages,Online,H,12/21/2015,737418496,1/17/2016,7375,47.45,31.79,349943.75,234451.25,115492.50
+Sub-Saharan Africa,Guinea,Clothes,Online,M,5/8/2016,793950450,5/18/2016,6436,109.28,35.84,703326.08,230666.24,472659.84
+Sub-Saharan Africa,Liberia,Personal Care,Online,H,6/4/2016,748927533,7/20/2016,3155,81.73,56.67,257858.15,178793.85,79064.30
+Sub-Saharan Africa,Rwanda,Office Supplies,Online,M,3/5/2015,514898574,3/28/2015,8785,651.21,524.96,5720879.85,4611773.60,1109106.25
+Asia,North Korea,Fruits,Offline,H,8/25/2012,524724900,10/9/2012,6613,9.33,6.92,61699.29,45761.96,15937.33
+Australia and Oceania,Australia,Baby Food,Online,L,9/30/2013,381580340,10/2/2013,6957,255.28,159.42,1775982.96,1109084.94,666898.02
+Sub-Saharan Africa,South Africa,Meat,Online,C,11/10/2016,208951222,11/10/2016,2165,421.89,364.69,913391.85,789553.85,123838.00
+Sub-Saharan Africa,Cameroon,Personal Care,Offline,C,1/31/2010,200636374,3/3/2010,1617,81.73,56.67,132157.41,91635.39,40522.02
+Asia,Kyrgyzstan,Snacks,Online,H,11/16/2012,170747125,1/5/2013,6723,152.58,97.44,1025795.34,655089.12,370706.22
+Asia,Kyrgyzstan,Beverages,Offline,L,9/4/2011,903707301,9/5/2011,5928,47.45,31.79,281283.60,188451.12,92832.48
+Sub-Saharan Africa,Benin,Vegetables,Offline,C,9/14/2016,104253232,10/29/2016,9703,154.06,90.93,1494844.18,882293.79,612550.39
+Middle East and North Africa,Pakistan,Personal Care,Offline,C,9/30/2012,947433745,10/23/2012,5554,81.73,56.67,453928.42,314745.18,139183.24
+Australia and Oceania,Tuvalu,Baby Food,Offline,C,12/13/2015,828610169,1/30/2016,3018,255.28,159.42,770435.04,481129.56,289305.48
+Central America and the Caribbean,Grenada,Snacks,Offline,C,1/1/2017,813456332,1/16/2017,8660,152.58,97.44,1321342.80,843830.40,477512.40
+Central America and the Caribbean,Cuba,Vegetables,Online,L,4/2/2015,687958562,5/8/2015,1081,154.06,90.93,166538.86,98295.33,68243.53
+Sub-Saharan Africa,Seychelles ,Household,Offline,L,11/18/2014,308415687,11/27/2014,5910,668.27,502.54,3949475.70,2970011.40,979464.30
+Middle East and North Africa,Syria,Snacks,Offline,C,7/30/2013,951439034,9/16/2013,808,152.58,97.44,123284.64,78731.52,44553.12
+Australia and Oceania,Kiribati,Snacks,Online,H,11/14/2013,363952434,11/15/2013,468,152.58,97.44,71407.44,45601.92,25805.52
+Asia,India,Personal Care,Online,L,10/14/2011,413192212,11/17/2011,1612,81.73,56.67,131748.76,91352.04,40396.72
+Asia,Bangladesh,Baby Food,Online,L,10/10/2015,336707198,11/27/2015,7997,255.28,159.42,2041474.16,1274881.74,766592.42
+Middle East and North Africa,Qatar,Personal Care,Online,L,8/17/2012,792358720,8/24/2012,5408,81.73,56.67,441995.84,306471.36,135524.48
+Europe,San Marino,Fruits,Offline,L,9/18/2016,708320605,10/5/2016,6662,9.33,6.92,62156.46,46101.04,16055.42
+Europe,Lithuania,Office Supplies,Offline,M,3/5/2013,433079183,4/19/2013,6609,651.21,524.96,4303846.89,3469460.64,834386.25
+Asia,North Korea,Clothes,Offline,C,9/18/2014,385433280,11/1/2014,7128,109.28,35.84,778947.84,255467.52,523480.32
+Europe,Georgia,Personal Care,Offline,L,5/22/2012,604494225,6/25/2012,2129,81.73,56.67,174003.17,120650.43,53352.74
+Central America and the Caribbean,Saint Kitts and Nevis ,Fruits,Online,M,4/3/2017,299685847,4/24/2017,2557,9.33,6.92,23856.81,17694.44,6162.37
+Asia,Tajikistan,Cereal,Online,L,2/18/2011,100744473,3/16/2011,1383,205.70,117.11,284483.10,161963.13,122519.97
+Europe,Macedonia,Fruits,Online,M,12/30/2010,707718932,1/6/2011,8614,9.33,6.92,80368.62,59608.88,20759.74
+Asia,Cambodia,Beverages,Offline,L,2/26/2012,640970551,4/2/2012,6285,47.45,31.79,298223.25,199800.15,98423.10
+Sub-Saharan Africa,Mauritania,Cereal,Online,H,10/12/2014,291173160,11/2/2014,3463,205.70,117.11,712339.10,405551.93,306787.17
+Central America and the Caribbean,Dominica,Household,Offline,M,7/11/2012,569313085,8/18/2012,1248,668.27,502.54,834000.96,627169.92,206831.04
+Europe,Sweden,Household,Offline,C,6/24/2011,656689155,8/9/2011,7769,668.27,502.54,5191789.63,3904233.26,1287556.37
+Central America and the Caribbean,Panama,Snacks,Online,C,3/19/2011,254912698,4/8/2011,3187,152.58,97.44,486272.46,310541.28,175731.18
+Europe,Macedonia,Beverages,Offline,M,2/25/2016,935907542,3/21/2016,4695,47.45,31.79,222777.75,149254.05,73523.70
+Middle East and North Africa,Lebanon,Meat,Offline,C,8/22/2016,291910016,9/27/2016,1515,421.89,364.69,639163.35,552505.35,86658.00
+Sub-Saharan Africa,Cote d'Ivoire,Fruits,Online,C,6/15/2015,485468947,7/1/2015,9905,9.33,6.92,92413.65,68542.60,23871.05
+Central America and the Caribbean,Grenada,Personal Care,Offline,H,6/3/2016,599445664,7/19/2016,8148,81.73,56.67,665936.04,461747.16,204188.88
+Sub-Saharan Africa,Senegal,Baby Food,Offline,C,2/1/2013,687013995,3/13/2013,1563,255.28,159.42,399002.64,249173.46,149829.18
+Europe,Ireland,Household,Offline,C,3/14/2015,421660268,4/11/2015,7498,668.27,502.54,5010688.46,3768044.92,1242643.54
+Europe,San Marino,Cosmetics,Offline,C,8/22/2014,447183310,9/19/2014,334,437.20,263.33,146024.80,87952.22,58072.58
+Europe,Estonia,Vegetables,Offline,L,12/7/2011,127694451,12/27/2011,6481,154.06,90.93,998462.86,589317.33,409145.53
+Europe,Vatican City,Meat,Offline,M,6/13/2012,697617518,7/7/2012,9381,421.89,364.69,3957750.09,3421156.89,536593.20
+Europe,United Kingdom,Personal Care,Offline,L,1/22/2015,311688840,2/14/2015,4509,81.73,56.67,368520.57,255525.03,112995.54
+Middle East and North Africa,Iran,Household,Offline,M,11/24/2015,794957244,12/31/2015,4369,668.27,502.54,2919671.63,2195597.26,724074.37
+Middle East and North Africa,Saudi Arabia,Vegetables,Offline,H,3/6/2012,892784059,3/6/2012,3497,154.06,90.93,538747.82,317982.21,220765.61
+Sub-Saharan Africa,Rwanda,Clothes,Online,L,7/13/2013,320843112,8/18/2013,3462,109.28,35.84,378327.36,124078.08,254249.28
+Asia,Indonesia,Vegetables,Offline,H,7/6/2015,215120732,8/3/2015,7860,154.06,90.93,1210911.60,714709.80,496201.80
+Middle East and North Africa,Oman,Beverages,Offline,M,12/12/2010,881915748,12/14/2010,7323,47.45,31.79,347476.35,232798.17,114678.18
+Sub-Saharan Africa,Comoros,Beverages,Offline,H,6/13/2016,447839486,7/28/2016,4511,47.45,31.79,214046.95,143404.69,70642.26
+Middle East and North Africa,Oman,Beverages,Offline,C,8/15/2015,709815776,9/16/2015,9117,47.45,31.79,432601.65,289829.43,142772.22
+Europe,Cyprus,Cosmetics,Offline,M,11/6/2015,385080945,11/7/2015,2864,437.20,263.33,1252140.80,754177.12,497963.68
+Asia,Cambodia,Cosmetics,Online,L,3/21/2014,961183822,4/21/2014,4507,437.20,263.33,1970460.40,1186828.31,783632.09
+Middle East and North Africa,Egypt,Cereal,Offline,M,6/17/2016,845985734,6/28/2016,4833,205.70,117.11,994148.10,565992.63,428155.47
+Asia,Kazakhstan,Cosmetics,Offline,C,6/8/2010,317660510,6/29/2010,1659,437.20,263.33,725314.80,436864.47,288450.33
+Sub-Saharan Africa,Madagascar,Vegetables,Online,L,5/11/2015,174694478,5/11/2015,4833,154.06,90.93,744571.98,439464.69,305107.29
+Australia and Oceania,Samoa ,Clothes,Offline,M,6/8/2017,385886466,7/10/2017,1235,109.28,35.84,134960.80,44262.40,90698.40
+Asia,Brunei,Cosmetics,Offline,C,7/4/2011,540347802,7/11/2011,9777,437.20,263.33,4274504.40,2574577.41,1699926.99
+Sub-Saharan Africa,Djibouti,Clothes,Online,H,5/29/2012,297502315,6/8/2012,6401,109.28,35.84,699501.28,229411.84,470089.44
+Sub-Saharan Africa,Seychelles ,Beverages,Offline,M,5/1/2013,737086331,6/4/2013,9080,47.45,31.79,430846.00,288653.20,142192.80
+Europe,Spain,Household,Offline,M,4/23/2012,309148681,5/5/2012,2819,668.27,502.54,1883853.13,1416660.26,467192.87
+Central America and the Caribbean,Saint Lucia,Office Supplies,Offline,L,1/7/2016,684050691,2/18/2016,4655,651.21,524.96,3031382.55,2443688.80,587693.75
+Sub-Saharan Africa,Cape Verde,Snacks,Online,C,4/6/2013,902466189,4/13/2013,8655,152.58,97.44,1320579.90,843343.20,477236.70
+Australia and Oceania,Australia,Vegetables,Offline,H,8/19/2016,525381505,8/27/2016,917,154.06,90.93,141273.02,83382.81,57890.21
+Australia and Oceania,Vanuatu,Vegetables,Online,H,4/13/2013,984095466,5/12/2013,4572,154.06,90.93,704362.32,415731.96,288630.36
+Europe,Serbia,Baby Food,Offline,L,2/21/2014,630219399,3/14/2014,4780,255.28,159.42,1220238.40,762027.60,458210.80
+Europe,Denmark,Snacks,Online,H,4/13/2012,585677134,5/4/2012,3734,152.58,97.44,569733.72,363840.96,205892.76
+Europe,Italy,Household,Online,C,12/23/2016,692704999,1/24/2017,5657,668.27,502.54,3780403.39,2842868.78,937534.61
+Sub-Saharan Africa,South Africa,Snacks,Offline,H,1/25/2012,863851821,3/7/2012,1805,152.58,97.44,275406.90,175879.20,99527.70
+Australia and Oceania,East Timor,Cosmetics,Offline,M,9/28/2012,631978929,10/1/2012,5464,437.20,263.33,2388860.80,1438835.12,950025.68
+Asia,North Korea,Clothes,Online,C,5/1/2016,500260150,5/10/2016,6950,109.28,35.84,759496.00,249088.00,510408.00
+Central America and the Caribbean,Trinidad and Tobago,Cosmetics,Online,M,8/27/2013,592181813,9/9/2013,8613,437.20,263.33,3765603.60,2268061.29,1497542.31
+North America,Greenland,Meat,Online,C,7/12/2015,201542747,7/18/2015,9832,421.89,364.69,4148022.48,3585632.08,562390.40
+Europe,Iceland,Cosmetics,Online,M,2/9/2011,942454278,3/29/2011,2019,437.20,263.33,882706.80,531663.27,351043.53
+Middle East and North Africa,Turkey,Beverages,Online,H,2/17/2017,899340236,3/18/2017,3616,47.45,31.79,171579.20,114952.64,56626.56
+Asia,Vietnam,Cereal,Online,C,7/12/2013,476936948,7/20/2013,5096,205.70,117.11,1048247.20,596792.56,451454.64
+Europe,Kosovo,Office Supplies,Offline,H,5/19/2015,150293242,6/21/2015,3965,651.21,524.96,2582047.65,2081466.40,500581.25
+Middle East and North Africa,Tunisia ,Cereal,Online,L,2/6/2016,914770448,2/16/2016,9759,205.70,117.11,2007426.30,1142876.49,864549.81
+Europe,Germany,Office Supplies,Offline,H,12/19/2013,236042392,1/26/2014,9044,651.21,524.96,5889543.24,4747738.24,1141805.00
+Middle East and North Africa,Tunisia ,Household,Offline,H,11/22/2015,600095403,12/19/2015,420,668.27,502.54,280673.40,211066.80,69606.60
+Sub-Saharan Africa,Nigeria,Beverages,Online,C,11/30/2010,963228309,12/27/2010,9516,47.45,31.79,451534.20,302513.64,149020.56
+Australia and Oceania,Marshall Islands,Fruits,Offline,L,11/13/2011,802052438,1/2/2012,3995,9.33,6.92,37273.35,27645.40,9627.95
+Sub-Saharan Africa,Ghana,Household,Offline,L,9/14/2013,563491618,10/29/2013,8547,668.27,502.54,5711703.69,4295209.38,1416494.31
+Europe,Italy,Baby Food,Offline,L,6/15/2012,314782178,7/12/2012,9896,255.28,159.42,2526250.88,1577620.32,948630.56
+Europe,Belgium,Cosmetics,Offline,M,7/27/2016,193472945,9/13/2016,1799,437.20,263.33,786522.80,473730.67,312792.13
+Sub-Saharan Africa,South Africa,Snacks,Online,H,11/2/2012,857425248,11/25/2012,40,152.58,97.44,6103.20,3897.60,2205.60
+Sub-Saharan Africa,South Africa,Clothes,Online,C,8/20/2015,334812915,8/26/2015,7437,109.28,35.84,812715.36,266542.08,546173.28
+Australia and Oceania,Nauru,Office Supplies,Offline,H,2/1/2010,774122273,2/15/2010,8838,651.21,524.96,5755393.98,4639596.48,1115797.50
+Middle East and North Africa,Bahrain,Office Supplies,Offline,L,6/27/2016,794152152,6/29/2016,6124,651.21,524.96,3988010.04,3214855.04,773155.00
+Europe,Monaco,Cosmetics,Offline,H,9/27/2010,434013879,11/5/2010,3206,437.20,263.33,1401663.20,844235.98,557427.22
+Asia,Nepal,Baby Food,Online,L,6/21/2011,703131282,7/22/2011,1026,255.28,159.42,261917.28,163564.92,98352.36
+Europe,Greece,Cereal,Online,L,8/26/2015,431240689,10/13/2015,2558,205.70,117.11,526180.60,299567.38,226613.22
+Sub-Saharan Africa,Rwanda,Beverages,Online,M,7/13/2017,318390929,8/31/2017,7806,47.45,31.79,370394.70,248152.74,122241.96
+Asia,Japan,Vegetables,Online,C,6/4/2012,684943330,6/8/2012,8807,154.06,90.93,1356806.42,800820.51,555985.91
+Sub-Saharan Africa,Nigeria,Meat,Offline,M,8/26/2015,121571719,9/21/2015,4628,421.89,364.69,1952506.92,1687785.32,264721.60
+Asia,Cambodia,Vegetables,Offline,M,4/14/2013,439262425,5/20/2013,6368,154.06,90.93,981054.08,579042.24,402011.84
+Sub-Saharan Africa,Gabon,Clothes,Online,H,6/2/2011,819314277,7/17/2011,2156,109.28,35.84,235607.68,77271.04,158336.64
+Asia,Philippines,Personal Care,Online,C,3/11/2017,963338601,4/9/2017,2154,81.73,56.67,176046.42,122067.18,53979.24
+Europe,Switzerland,Meat,Offline,L,4/26/2012,643259227,4/26/2012,3555,421.89,364.69,1499818.95,1296472.95,203346.00
+Europe,Czech Republic,Cosmetics,Online,H,6/6/2017,151312482,7/12/2017,5581,437.20,263.33,2440013.20,1469644.73,970368.47
+Europe,Austria,Fruits,Online,M,7/31/2012,750047194,9/18/2012,4487,9.33,6.92,41863.71,31050.04,10813.67
+Asia,Bhutan,Cereal,Online,C,10/2/2016,622324693,10/21/2016,8561,205.70,117.11,1760997.70,1002578.71,758418.99
+Europe,Switzerland,Fruits,Offline,L,11/29/2015,721318805,12/9/2015,3118,9.33,6.92,29090.94,21576.56,7514.38
+Sub-Saharan Africa,Cape Verde,Baby Food,Offline,H,3/25/2012,720515859,3/29/2012,5509,255.28,159.42,1406337.52,878244.78,528092.74
+Sub-Saharan Africa,Senegal,Personal Care,Online,M,9/29/2012,363714683,10/17/2012,112,81.73,56.67,9153.76,6347.04,2806.72
+Middle East and North Africa,Israel,Fruits,Offline,M,5/26/2010,815026605,6/27/2010,3339,9.33,6.92,31152.87,23105.88,8046.99
+Middle East and North Africa,Tunisia ,Baby Food,Online,L,7/27/2010,608875453,8/11/2010,8632,255.28,159.42,2203576.96,1376113.44,827463.52
+Europe,Vatican City,Beverages,Offline,H,2/13/2012,599997556,2/14/2012,1465,47.45,31.79,69514.25,46572.35,22941.90
+Sub-Saharan Africa,Sierra Leone,Cereal,Offline,M,3/12/2011,813441741,3/22/2011,4342,205.70,117.11,893149.40,508491.62,384657.78
+Asia,China,Cereal,Online,L,7/26/2012,894569337,8/22/2012,1801,205.70,117.11,370465.70,210915.11,159550.59
+Asia,Uzbekistan,Baby Food,Offline,M,9/25/2010,559054172,10/17/2010,5408,255.28,159.42,1380554.24,862143.36,518410.88
+Middle East and North Africa,Qatar,Fruits,Online,L,5/22/2016,942882573,6/25/2016,8761,9.33,6.92,81740.13,60626.12,21114.01
+Sub-Saharan Africa,Cote d'Ivoire,Clothes,Online,M,10/15/2014,552353370,11/18/2014,2491,109.28,35.84,272216.48,89277.44,182939.04
+Australia and Oceania,Marshall Islands,Beverages,Offline,L,12/22/2014,214077889,1/1/2015,9260,47.45,31.79,439387.00,294375.40,145011.60
+Central America and the Caribbean,Costa Rica,Fruits,Offline,H,9/11/2015,824979960,10/20/2015,8758,9.33,6.92,81712.14,60605.36,21106.78
+Middle East and North Africa,Morocco,Cosmetics,Online,H,10/3/2016,202295911,10/11/2016,2710,437.20,263.33,1184812.00,713624.30,471187.70
+Sub-Saharan Africa,Rwanda,Baby Food,Offline,H,4/2/2015,733574569,5/18/2015,9871,255.28,159.42,2519868.88,1573634.82,946234.06
+Europe,Estonia,Beverages,Online,M,11/28/2016,826677262,1/9/2017,1027,47.45,31.79,48731.15,32648.33,16082.82
+Australia and Oceania,Palau,Fruits,Online,L,2/28/2017,759777820,3/23/2017,3996,9.33,6.92,37282.68,27652.32,9630.36
+Sub-Saharan Africa,South Sudan,Beverages,Online,H,7/5/2012,431362569,8/9/2012,8625,47.45,31.79,409256.25,274188.75,135067.50
+Central America and the Caribbean,Honduras,Baby Food,Offline,L,11/15/2011,710230338,11/19/2011,1795,255.28,159.42,458227.60,286158.90,172068.70
+Central America and the Caribbean,Jamaica,Office Supplies,Offline,C,2/2/2010,285492455,3/1/2010,2417,651.21,524.96,1573974.57,1268828.32,305146.25
+Sub-Saharan Africa,Democratic Republic of the Congo,Baby Food,Online,H,6/8/2014,616572749,7/12/2014,6433,255.28,159.42,1642216.24,1025548.86,616667.38
+Central America and the Caribbean,Panama,Personal Care,Offline,M,7/6/2010,983207547,7/25/2010,1817,81.73,56.67,148503.41,102969.39,45534.02
+Europe,Poland,Beverages,Offline,H,7/5/2011,735445678,7/22/2011,3574,47.45,31.79,169586.30,113617.46,55968.84
+Middle East and North Africa,Lebanon,Office Supplies,Offline,M,7/11/2016,643648469,8/5/2016,8740,651.21,524.96,5691575.40,4588150.40,1103425.00
+Middle East and North Africa,Tunisia ,Beverages,Online,L,5/15/2014,648489749,6/11/2014,1382,47.45,31.79,65575.90,43933.78,21642.12
+Sub-Saharan Africa,Sudan,Personal Care,Online,C,1/21/2010,310955846,2/10/2010,7600,81.73,56.67,621148.00,430692.00,190456.00
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Online,C,6/16/2013,162345588,7/29/2013,522,255.28,159.42,133256.16,83217.24,50038.92
+Europe,San Marino,Vegetables,Offline,L,10/14/2012,354270303,11/27/2012,5310,154.06,90.93,818058.60,482838.30,335220.30
+Australia and Oceania,Nauru,Baby Food,Offline,C,4/4/2016,208653819,4/15/2016,4157,255.28,159.42,1061198.96,662708.94,398490.02
+Asia,Japan,Baby Food,Online,C,6/6/2010,467732465,7/22/2010,1285,255.28,159.42,328034.80,204854.70,123180.10
+Australia and Oceania,Palau,Meat,Offline,M,1/1/2017,144055068,2/8/2017,7951,421.89,364.69,3354447.39,2899650.19,454797.20
+Sub-Saharan Africa,Seychelles ,Vegetables,Online,L,4/23/2013,570482957,6/3/2013,7439,154.06,90.93,1146052.34,676428.27,469624.07
+Middle East and North Africa,Somalia,Household,Online,M,10/27/2011,450189960,12/11/2011,68,668.27,502.54,45442.36,34172.72,11269.64
+Europe,Spain,Cereal,Offline,H,12/4/2010,806662404,12/7/2010,8186,205.70,117.11,1683860.20,958662.46,725197.74
+Europe,Netherlands,Personal Care,Offline,C,11/13/2013,933699119,11/24/2013,1173,81.73,56.67,95869.29,66473.91,29395.38
+Sub-Saharan Africa,Gabon,Personal Care,Offline,C,5/20/2017,645411431,6/12/2017,440,81.73,56.67,35961.20,24934.80,11026.40
+Europe,Switzerland,Baby Food,Offline,C,6/27/2015,726223170,7/31/2015,4429,255.28,159.42,1130635.12,706071.18,424563.94
+Sub-Saharan Africa,Burkina Faso,Cereal,Online,H,10/30/2010,680870664,10/31/2010,3615,205.70,117.11,743605.50,423352.65,320252.85
+Central America and the Caribbean,Haiti,Meat,Offline,L,11/28/2010,984402740,12/18/2010,5501,421.89,364.69,2320816.89,2006159.69,314657.20
+Central America and the Caribbean,Belize,Office Supplies,Online,C,9/22/2016,832180726,9/22/2016,9625,651.21,524.96,6267896.25,5052740.00,1215156.25
+Middle East and North Africa,Iraq,Fruits,Online,L,5/29/2011,389878451,7/7/2011,2553,9.33,6.92,23819.49,17666.76,6152.73
+Australia and Oceania,Solomon Islands,Cosmetics,Online,M,1/2/2017,343482244,2/18/2017,2884,437.20,263.33,1260884.80,759443.72,501441.08
+Sub-Saharan Africa,Sudan,Office Supplies,Offline,M,12/29/2014,549290931,1/20/2015,6248,651.21,524.96,4068760.08,3279950.08,788810.00
+Sub-Saharan Africa,Chad,Beverages,Offline,C,8/18/2010,483915841,9/16/2010,306,47.45,31.79,14519.70,9727.74,4791.96
+Central America and the Caribbean,Saint Vincent and the Grenadines,Household,Offline,M,1/5/2014,594280803,1/21/2014,9751,668.27,502.54,6516300.77,4900267.54,1616033.23
+Sub-Saharan Africa,Mali,Personal Care,Online,H,8/7/2013,947622144,9/24/2013,1305,81.73,56.67,106657.65,73954.35,32703.30
+Central America and the Caribbean,Trinidad and Tobago,Household,Online,M,4/7/2010,781488692,5/3/2010,8725,668.27,502.54,5830655.75,4384661.50,1445994.25
+Central America and the Caribbean,Costa Rica,Vegetables,Offline,C,7/11/2013,753741776,7/28/2013,7796,154.06,90.93,1201051.76,708890.28,492161.48
+Europe,Czech Republic,Meat,Online,M,1/9/2015,692555224,2/1/2015,1336,421.89,364.69,563645.04,487225.84,76419.20
+Central America and the Caribbean,Barbados,Personal Care,Online,M,1/18/2015,946415364,1/30/2015,4193,81.73,56.67,342693.89,237617.31,105076.58
+Europe,Estonia,Vegetables,Online,L,2/28/2011,134121024,4/8/2011,8246,154.06,90.93,1270378.76,749808.78,520569.98
+Central America and the Caribbean,Cuba,Beverages,Online,C,2/18/2017,994783532,3/12/2017,7408,47.45,31.79,351509.60,235500.32,116009.28
+Central America and the Caribbean,Honduras,Beverages,Online,M,9/23/2013,937826716,10/11/2013,2621,47.45,31.79,124366.45,83321.59,41044.86
+Sub-Saharan Africa,Benin,Office Supplies,Online,M,1/24/2013,592986905,3/13/2013,6858,651.21,524.96,4465998.18,3600175.68,865822.50
+Europe,Estonia,Clothes,Offline,C,12/18/2016,660312926,1/5/2017,123,109.28,35.84,13441.44,4408.32,9033.12
+Asia,Thailand,Beverages,Online,H,3/3/2013,560166108,3/5/2013,4454,47.45,31.79,211342.30,141592.66,69749.64
+Australia and Oceania,East Timor,Cereal,Offline,L,12/28/2016,683220279,1/6/2017,8918,205.70,117.11,1834432.60,1044386.98,790045.62
+Europe,Ukraine,Cosmetics,Online,C,7/8/2014,140461766,7/20/2014,4613,437.20,263.33,2016803.60,1214741.29,802062.31
+Asia,Kyrgyzstan,Baby Food,Online,M,10/30/2011,813189399,11/22/2011,9669,255.28,159.42,2468302.32,1541431.98,926870.34
+Central America and the Caribbean,Jamaica,Meat,Online,M,1/27/2016,603014504,2/11/2016,4247,421.89,364.69,1791766.83,1548838.43,242928.40
+Sub-Saharan Africa,Angola,Vegetables,Online,H,7/12/2016,181860911,7/15/2016,5540,154.06,90.93,853492.40,503752.20,349740.20
+Europe,Ukraine,Cereal,Offline,C,2/13/2011,741964948,2/26/2011,2771,205.70,117.11,569994.70,324511.81,245482.89
+Sub-Saharan Africa,Zambia,Meat,Online,H,3/8/2010,845875442,3/17/2010,2195,421.89,364.69,926048.55,800494.55,125554.00
+Europe,San Marino,Snacks,Offline,C,7/22/2017,476453721,8/10/2017,2099,152.58,97.44,320265.42,204526.56,115738.86
+Middle East and North Africa,Qatar,Snacks,Online,H,8/20/2011,586873614,8/29/2011,7799,152.58,97.44,1189971.42,759934.56,430036.86
+Asia,Malaysia,Meat,Online,L,4/23/2017,850621449,5/2/2017,6644,421.89,364.69,2803037.16,2423000.36,380036.80
+Europe,Belgium,Fruits,Online,M,4/28/2011,111496055,6/4/2011,3015,9.33,6.92,28129.95,20863.80,7266.15
+Asia,Nepal,Vegetables,Offline,L,11/29/2016,433608758,12/21/2016,3322,154.06,90.93,511787.32,302069.46,209717.86
+Asia,Japan,Clothes,Online,H,9/25/2016,351383388,10/30/2016,1008,109.28,35.84,110154.24,36126.72,74027.52
+Central America and the Caribbean,El Salvador,Meat,Offline,H,3/24/2017,719556272,4/1/2017,1546,421.89,364.69,652241.94,563810.74,88431.20
+Central America and the Caribbean,Jamaica,Household,Offline,L,7/14/2014,663176238,7/26/2014,7441,668.27,502.54,4972597.07,3739400.14,1233196.93
+Sub-Saharan Africa,South Sudan,Baby Food,Offline,M,6/6/2013,727604615,7/7/2013,3229,255.28,159.42,824299.12,514767.18,309531.94
+Europe,Slovakia,Vegetables,Online,L,12/25/2015,628515231,2/1/2016,479,154.06,90.93,73794.74,43555.47,30239.27
+Europe,Slovakia,Office Supplies,Offline,M,3/2/2010,601894414,3/19/2010,2787,651.21,524.96,1814922.27,1463063.52,351858.75
+Europe,Bosnia and Herzegovina,Snacks,Offline,L,7/14/2011,954040992,8/27/2011,785,152.58,97.44,119775.30,76490.40,43284.90
+Middle East and North Africa,Saudi Arabia,Cosmetics,Offline,M,12/22/2013,711566293,12/26/2013,7133,437.20,263.33,3118547.60,1878332.89,1240214.71
+Australia and Oceania,Tuvalu,Beverages,Offline,M,3/28/2016,771394145,4/22/2016,1524,47.45,31.79,72313.80,48447.96,23865.84
+Middle East and North Africa,Bahrain,Vegetables,Offline,M,7/25/2010,750760877,9/7/2010,5682,154.06,90.93,875368.92,516664.26,358704.66
+Sub-Saharan Africa,Djibouti,Baby Food,Offline,L,10/3/2016,337215316,11/11/2016,8360,255.28,159.42,2134140.80,1332751.20,801389.60
+Central America and the Caribbean,Costa Rica,Baby Food,Offline,L,4/5/2010,638618791,5/25/2010,347,255.28,159.42,88582.16,55318.74,33263.42
+Australia and Oceania,Nauru,Meat,Online,L,10/15/2016,133145129,10/19/2016,9457,421.89,364.69,3989813.73,3448873.33,540940.40
+Asia,Cambodia,Household,Offline,C,2/18/2010,519280660,4/6/2010,5542,668.27,502.54,3703552.34,2785076.68,918475.66
+Europe,Czech Republic,Office Supplies,Online,M,5/9/2014,865824210,5/14/2014,5479,651.21,524.96,3567979.59,2876255.84,691723.75
+Europe,Belgium,Clothes,Offline,M,9/20/2016,761887109,10/14/2016,8181,109.28,35.84,894019.68,293207.04,600812.64
+Sub-Saharan Africa,Guinea-Bissau,Meat,Offline,M,12/6/2016,766893184,1/10/2017,9590,421.89,364.69,4045925.10,3497377.10,548548.00
+Europe,Romania,Office Supplies,Online,L,9/27/2015,160578763,10/30/2015,7679,651.21,524.96,5000641.59,4031167.84,969473.75
+Europe,Serbia,Vegetables,Offline,M,3/8/2011,992992675,3/9/2011,7454,154.06,90.93,1148363.24,677792.22,470571.02
+Sub-Saharan Africa,Mauritius ,Household,Online,M,7/4/2017,434496247,8/10/2017,5950,668.27,502.54,3976206.50,2990113.00,986093.50
+Sub-Saharan Africa,Sierra Leone,Cereal,Online,L,12/13/2015,225763309,1/6/2016,7235,205.70,117.11,1488239.50,847290.85,640948.65
+Sub-Saharan Africa,Zambia,Baby Food,Offline,C,7/11/2011,827780187,7/22/2011,7407,255.28,159.42,1890858.96,1180823.94,710035.02
+Central America and the Caribbean,Haiti,Snacks,Online,C,2/8/2014,971845710,3/15/2014,9597,152.58,97.44,1464310.26,935131.68,529178.58
+North America,Greenland,Beverages,Online,L,11/27/2011,809571206,1/11/2012,8965,47.45,31.79,425389.25,284997.35,140391.90
+Central America and the Caribbean,Saint Kitts and Nevis ,Office Supplies,Online,H,2/18/2013,562880504,3/19/2013,7704,651.21,524.96,5016921.84,4044291.84,972630.00
+Sub-Saharan Africa,Gabon,Meat,Offline,H,12/6/2011,974009931,1/13/2012,38,421.89,364.69,16031.82,13858.22,2173.60
+Asia,Tajikistan,Fruits,Offline,C,11/4/2014,155508315,11/17/2014,7221,9.33,6.92,67371.93,49969.32,17402.61
+Sub-Saharan Africa,Seychelles ,Household,Online,M,5/8/2014,340236985,5/13/2014,2540,668.27,502.54,1697405.80,1276451.60,420954.20
+Europe,Slovakia,Clothes,Online,M,5/9/2015,231369769,5/16/2015,6311,109.28,35.84,689666.08,226186.24,463479.84
+Europe,Lithuania,Cosmetics,Online,M,3/28/2016,852392995,4/19/2016,884,437.20,263.33,386484.80,232783.72,153701.08
+Europe,Macedonia,Snacks,Offline,M,9/6/2012,597105491,10/20/2012,5639,152.58,97.44,860398.62,549464.16,310934.46
+Middle East and North Africa,Kuwait,Fruits,Offline,L,7/23/2016,179618585,8/20/2016,1986,9.33,6.92,18529.38,13743.12,4786.26
+Sub-Saharan Africa,Namibia,Fruits,Offline,H,4/26/2014,384356105,5/14/2014,8368,9.33,6.92,78073.44,57906.56,20166.88
+Europe,Andorra,Fruits,Offline,L,3/4/2016,716054379,3/26/2016,5258,9.33,6.92,49057.14,36385.36,12671.78
+Sub-Saharan Africa,Uganda,Household,Online,L,6/27/2014,749762237,8/2/2014,162,668.27,502.54,108259.74,81411.48,26848.26
+Australia and Oceania,Nauru,Beverages,Offline,H,4/3/2010,580841004,4/22/2010,2616,47.45,31.79,124129.20,83162.64,40966.56
+Asia,Kyrgyzstan,Fruits,Online,M,11/21/2016,374964511,12/9/2016,9186,9.33,6.92,85705.38,63567.12,22138.26
+Sub-Saharan Africa,Guinea,Beverages,Online,L,1/8/2011,818119084,2/21/2011,8472,47.45,31.79,401996.40,269324.88,132671.52
+Australia and Oceania,Tonga,Cereal,Offline,M,12/22/2011,866603553,2/7/2012,6104,205.70,117.11,1255592.80,714839.44,540753.36
+North America,Canada,Household,Online,M,6/9/2017,897029244,7/16/2017,9742,668.27,502.54,6510286.34,4895744.68,1614541.66
+Central America and the Caribbean,Grenada,Beverages,Online,M,10/17/2014,456319987,11/1/2014,4080,47.45,31.79,193596.00,129703.20,63892.80
+Europe,Austria,Office Supplies,Offline,C,3/21/2015,511712110,5/7/2015,5839,651.21,524.96,3802415.19,3065241.44,737173.75
+Asia,Maldives,Fruits,Online,C,1/4/2012,300754439,2/6/2012,8777,9.33,6.92,81889.41,60736.84,21152.57
+Europe,Finland,Baby Food,Offline,C,9/7/2014,481308305,10/16/2014,8678,255.28,159.42,2215319.84,1383446.76,831873.08
+Sub-Saharan Africa,Rwanda,Office Supplies,Online,H,11/21/2014,881547534,12/9/2014,8360,651.21,524.96,5444115.60,4388665.60,1055450.00
+Middle East and North Africa,Somalia,Baby Food,Offline,C,11/27/2012,949958455,1/4/2013,2672,255.28,159.42,682108.16,425970.24,256137.92
+Central America and the Caribbean,Costa Rica,Office Supplies,Online,C,11/17/2013,205339896,11/20/2013,3493,651.21,524.96,2274676.53,1833685.28,440991.25
+Sub-Saharan Africa,Lesotho,Beverages,Online,H,6/5/2016,486803185,7/8/2016,4735,47.45,31.79,224675.75,150525.65,74150.10
+Middle East and North Africa,Lebanon,Baby Food,Online,M,6/18/2016,103772151,7/22/2016,7340,255.28,159.42,1873755.20,1170142.80,703612.40
+Asia,India,Snacks,Online,H,12/15/2010,585983121,1/9/2011,4282,152.58,97.44,653347.56,417238.08,236109.48
+Sub-Saharan Africa,Swaziland,Clothes,Offline,L,11/15/2016,833484923,12/1/2016,5566,109.28,35.84,608252.48,199485.44,408767.04
+Europe,Andorra,Household,Online,C,5/22/2014,266638886,6/19/2014,3227,668.27,502.54,2156507.29,1621696.58,534810.71
+Asia,Maldives,Beverages,Offline,M,3/28/2011,176118838,4/17/2011,6333,47.45,31.79,300500.85,201326.07,99174.78
+Asia,Malaysia,Cosmetics,Online,M,3/22/2016,572911107,4/7/2016,5983,437.20,263.33,2615767.60,1575503.39,1040264.21
+Europe,Moldova ,Meat,Online,H,9/17/2012,638314521,10/15/2012,306,421.89,364.69,129098.34,111595.14,17503.20
+Middle East and North Africa,Morocco,Personal Care,Online,H,6/5/2015,973940408,7/5/2015,9465,81.73,56.67,773574.45,536381.55,237192.90
+Sub-Saharan Africa,South Sudan,Vegetables,Online,H,8/23/2013,451712596,9/28/2013,650,154.06,90.93,100139.00,59104.50,41034.50
+Sub-Saharan Africa,The Gambia,Cosmetics,Online,C,11/8/2012,263867413,11/28/2012,3086,437.20,263.33,1349199.20,812636.38,536562.82
+Central America and the Caribbean,El Salvador,Beverages,Online,M,10/31/2015,772953689,12/19/2015,3028,47.45,31.79,143678.60,96260.12,47418.48
+Asia,Bhutan,Snacks,Offline,M,4/6/2011,161832749,5/25/2011,8762,152.58,97.44,1336905.96,853769.28,483136.68
+Asia,Brunei,Meat,Online,L,5/27/2015,283678424,7/3/2015,5604,421.89,364.69,2364271.56,2043722.76,320548.80
+Europe,Switzerland,Cosmetics,Online,M,4/15/2015,811977040,5/28/2015,905,437.20,263.33,395666.00,238313.65,157352.35
+Sub-Saharan Africa,Malawi,Cosmetics,Offline,M,5/16/2010,590527427,6/19/2010,9043,437.20,263.33,3953599.60,2381293.19,1572306.41
+Asia,Laos,Personal Care,Offline,C,4/29/2016,783440911,6/9/2016,6430,81.73,56.67,525523.90,364388.10,161135.80
+Sub-Saharan Africa,Swaziland,Personal Care,Online,C,10/20/2015,825141322,11/22/2015,6509,81.73,56.67,531980.57,368865.03,163115.54
+Sub-Saharan Africa,Cote d'Ivoire,Fruits,Offline,M,3/27/2015,670364987,5/9/2015,4752,9.33,6.92,44336.16,32883.84,11452.32
+Europe,Netherlands,Meat,Online,M,10/9/2010,344160735,11/20/2010,3664,421.89,364.69,1545804.96,1336224.16,209580.80
+Sub-Saharan Africa,Liberia,Cereal,Online,M,10/7/2014,391889894,10/20/2014,7783,205.70,117.11,1600963.10,911467.13,689495.97
+Sub-Saharan Africa,Uganda,Beverages,Offline,H,2/17/2014,529226291,3/20/2014,8675,47.45,31.79,411628.75,275778.25,135850.50
+Sub-Saharan Africa,Mauritania,Household,Offline,M,12/28/2011,992156255,1/25/2012,9939,668.27,502.54,6641935.53,4994745.06,1647190.47
+Australia and Oceania,Kiribati,Cereal,Online,H,4/27/2016,286978614,5/28/2016,2204,205.70,117.11,453362.80,258110.44,195252.36
+Central America and the Caribbean,Dominican Republic,Personal Care,Offline,L,6/12/2013,140304696,7/8/2013,8132,81.73,56.67,664628.36,460840.44,203787.92
+Europe,Russia,Household,Online,H,4/3/2017,549058330,5/11/2017,7416,668.27,502.54,4955890.32,3726836.64,1229053.68
+Middle East and North Africa,Iran,Clothes,Offline,L,6/1/2012,230475842,6/8/2012,1778,109.28,35.84,194299.84,63723.52,130576.32
+Sub-Saharan Africa,Burundi,Fruits,Offline,L,3/1/2011,672106063,3/10/2011,9975,9.33,6.92,93066.75,69027.00,24039.75
+Sub-Saharan Africa,South Africa,Fruits,Online,M,8/27/2011,281810319,10/1/2011,2791,9.33,6.92,26040.03,19313.72,6726.31
+Asia,Bangladesh,Baby Food,Offline,H,11/21/2016,237762439,12/4/2016,8044,255.28,159.42,2053472.32,1282374.48,771097.84
+Middle East and North Africa,Pakistan,Personal Care,Offline,H,10/20/2015,438448750,11/26/2015,5583,81.73,56.67,456298.59,316388.61,139909.98
+Asia,Nepal,Cereal,Online,M,4/23/2017,852668082,5/27/2017,2289,205.70,117.11,470847.30,268064.79,202782.51
+Asia,Japan,Vegetables,Online,H,4/2/2016,169531762,5/22/2016,7071,154.06,90.93,1089358.26,642966.03,446392.23
+Sub-Saharan Africa,Swaziland,Fruits,Offline,H,4/30/2012,748463618,5/14/2012,5872,9.33,6.92,54785.76,40634.24,14151.52
+Europe,Greece,Meat,Online,H,11/12/2013,969199979,12/7/2013,6666,421.89,364.69,2812318.74,2431023.54,381295.20
+Central America and the Caribbean,Barbados,Beverages,Offline,C,4/30/2011,181789672,5/13/2011,4459,47.45,31.79,211579.55,141751.61,69827.94
+Europe,Spain,Baby Food,Offline,L,5/22/2011,956594026,6/17/2011,6285,255.28,159.42,1604434.80,1001954.70,602480.10
+North America,United States of America,Meat,Online,C,6/6/2010,534286868,7/25/2010,6212,421.89,364.69,2620780.68,2265454.28,355326.40
+Australia and Oceania,Vanuatu,Personal Care,Online,M,6/20/2013,275854527,7/19/2013,340,81.73,56.67,27788.20,19267.80,8520.40
+Europe,Ukraine,Beverages,Online,H,3/24/2015,712595832,3/28/2015,1797,47.45,31.79,85267.65,57126.63,28141.02
+Central America and the Caribbean,Trinidad and Tobago,Personal Care,Online,H,6/30/2011,196122109,7/23/2011,5745,81.73,56.67,469538.85,325569.15,143969.70
+Europe,Italy,Baby Food,Offline,C,6/26/2010,748357188,7/20/2010,4377,255.28,159.42,1117360.56,697781.34,419579.22
+North America,Canada,Cosmetics,Online,C,11/25/2013,411537396,12/3/2013,1916,437.20,263.33,837675.20,504540.28,333134.92
+Europe,Estonia,Fruits,Offline,L,2/25/2013,898211562,3/12/2013,9616,9.33,6.92,89717.28,66542.72,23174.56
+Australia and Oceania,East Timor,Fruits,Offline,M,11/12/2015,841241014,12/31/2015,765,9.33,6.92,7137.45,5293.80,1843.65
+Sub-Saharan Africa,Malawi,Baby Food,Online,L,10/14/2011,743799579,12/2/2011,5679,255.28,159.42,1449735.12,905346.18,544388.94
+Europe,Ireland,Office Supplies,Offline,C,6/15/2014,729373586,7/5/2014,6707,651.21,524.96,4367665.47,3520906.72,846758.75
+Europe,Norway,Fruits,Offline,M,12/20/2011,991761863,12/24/2011,3229,9.33,6.92,30126.57,22344.68,7781.89
+Sub-Saharan Africa,Central African Republic,Cosmetics,Online,L,3/17/2016,445075738,3/27/2016,6656,437.20,263.33,2910003.20,1752724.48,1157278.72
+Middle East and North Africa,Libya,Clothes,Online,L,8/14/2013,773739039,9/13/2013,5431,109.28,35.84,593499.68,194647.04,398852.64
+Australia and Oceania,Marshall Islands,Personal Care,Offline,M,6/2/2014,582488095,6/23/2014,26,81.73,56.67,2124.98,1473.42,651.56
+Middle East and North Africa,Turkey,Cereal,Online,C,12/18/2010,346371734,1/17/2011,7948,205.70,117.11,1634903.60,930790.28,704113.32
+Europe,Latvia,Personal Care,Offline,C,10/29/2011,160751283,11/13/2011,8732,81.73,56.67,713666.36,494842.44,218823.92
+Asia,Brunei,Office Supplies,Offline,L,4/11/2015,191300570,5/6/2015,8945,651.21,524.96,5825073.45,4695767.20,1129306.25
+Central America and the Caribbean,Jamaica,Snacks,Online,M,1/29/2013,224005925,2/18/2013,7186,152.58,97.44,1096439.88,700203.84,396236.04
+Middle East and North Africa,Algeria,Beverages,Online,L,12/31/2016,115166175,2/17/2017,9085,47.45,31.79,431083.25,288812.15,142271.10
+Europe,Macedonia,Household,Online,H,2/22/2017,241392648,3/16/2017,2304,668.27,502.54,1539694.08,1157852.16,381841.92
+Central America and the Caribbean,Haiti,Fruits,Online,C,1/19/2016,149609172,3/2/2016,1533,9.33,6.92,14302.89,10608.36,3694.53
+Sub-Saharan Africa,Niger,Office Supplies,Offline,C,4/22/2017,807052075,5/16/2017,3498,651.21,524.96,2277932.58,1836310.08,441622.50
+Central America and the Caribbean,The Bahamas,Baby Food,Online,M,3/23/2014,551270186,4/9/2014,1953,255.28,159.42,498561.84,311347.26,187214.58
+Middle East and North Africa,Egypt,Clothes,Online,M,4/25/2016,940124833,6/3/2016,2685,109.28,35.84,293416.80,96230.40,197186.40
+Europe,Malta,Meat,Online,H,3/24/2015,901789844,5/5/2015,8509,421.89,364.69,3589862.01,3103147.21,486714.80
+Australia and Oceania,Samoa ,Meat,Online,L,3/30/2011,784751546,5/11/2011,4276,421.89,364.69,1804001.64,1559414.44,244587.20
+Sub-Saharan Africa,South Sudan,Personal Care,Online,M,1/26/2017,107808768,3/14/2017,1865,81.73,56.67,152426.45,105689.55,46736.90
+Asia,South Korea,Baby Food,Offline,L,3/12/2016,710072839,4/3/2016,5187,255.28,159.42,1324137.36,826911.54,497225.82
+Sub-Saharan Africa,Rwanda,Fruits,Online,L,2/5/2012,900967586,3/3/2012,5185,9.33,6.92,48376.05,35880.20,12495.85
+Europe,Portugal,Office Supplies,Online,M,11/21/2016,410229337,12/22/2016,4832,651.21,524.96,3146646.72,2536606.72,610040.00
+Europe,Switzerland,Beverages,Online,L,4/4/2017,837906920,5/16/2017,4133,47.45,31.79,196110.85,131388.07,64722.78
+Europe,Slovakia,Household,Online,C,1/30/2016,704361665,3/1/2016,5124,668.27,502.54,3424215.48,2575014.96,849200.52
+Europe,Austria,Snacks,Offline,M,7/11/2013,400267398,7/20/2013,6873,152.58,97.44,1048682.34,669705.12,378977.22
+Sub-Saharan Africa,Cameroon,Vegetables,Offline,M,10/30/2010,836610448,12/19/2010,478,154.06,90.93,73640.68,43464.54,30176.14
+Sub-Saharan Africa,Seychelles ,Cereal,Online,H,1/26/2014,294689643,2/7/2014,4069,205.70,117.11,836993.30,476520.59,360472.71
+Sub-Saharan Africa,Sierra Leone,Beverages,Online,M,4/3/2015,276116311,4/26/2015,7807,47.45,31.79,370442.15,248184.53,122257.62
+Middle East and North Africa,Azerbaijan,Meat,Offline,M,3/26/2011,552814280,5/10/2011,8885,421.89,364.69,3748492.65,3240270.65,508222.00
+Asia,Malaysia,Office Supplies,Offline,H,1/24/2015,517019879,1/28/2015,6526,651.21,524.96,4249796.46,3425888.96,823907.50
+Europe,France,Meat,Online,C,5/19/2014,531281936,6/3/2014,6986,421.89,364.69,2947323.54,2547724.34,399599.20
+Central America and the Caribbean,Grenada,Beverages,Online,C,1/4/2013,578461778,1/9/2013,8550,47.45,31.79,405697.50,271804.50,133893.00
+Sub-Saharan Africa,Senegal,Vegetables,Offline,L,1/27/2012,711733233,3/9/2012,6535,154.06,90.93,1006782.10,594227.55,412554.55
+Asia,Brunei,Baby Food,Offline,L,9/27/2013,604582631,9/30/2013,8291,255.28,159.42,2116526.48,1321751.22,794775.26
+Europe,Greece,Cosmetics,Online,C,6/20/2017,900808799,6/28/2017,8196,437.20,263.33,3583291.20,2158252.68,1425038.52
+Asia,Singapore,Baby Food,Online,L,3/18/2016,964523065,4/24/2016,2664,255.28,159.42,680065.92,424694.88,255371.04
+Sub-Saharan Africa,Madagascar,Household,Online,H,5/5/2015,230149257,5/13/2015,5134,668.27,502.54,3430898.18,2580040.36,850857.82
+Australia and Oceania,Australia,Cosmetics,Offline,C,9/19/2013,452423703,9/24/2013,1082,437.20,263.33,473050.40,284923.06,188127.34
+Europe,Czech Republic,Meat,Online,H,1/22/2015,756395232,3/13/2015,3013,421.89,364.69,1271154.57,1098810.97,172343.60
+Sub-Saharan Africa,Guinea,Vegetables,Online,L,7/29/2016,787425172,8/22/2016,5462,154.06,90.93,841475.72,496659.66,344816.06
+Europe,Ireland,Clothes,Online,C,10/2/2012,261187350,10/3/2012,9996,109.28,35.84,1092362.88,358256.64,734106.24
+Middle East and North Africa,Kuwait,Cosmetics,Online,L,4/16/2014,313668096,5/4/2014,215,437.20,263.33,93998.00,56615.95,37382.05
+Central America and the Caribbean,Panama,Meat,Offline,C,1/5/2014,351166236,2/21/2014,6748,421.89,364.69,2846913.72,2460928.12,385985.60
+Asia,Bhutan,Cosmetics,Offline,C,5/23/2013,300293099,6/18/2013,2256,437.20,263.33,986323.20,594072.48,392250.72
+Asia,Cambodia,Household,Online,H,3/5/2011,157972514,4/4/2011,6432,668.27,502.54,4298312.64,3232337.28,1065975.36
+Middle East and North Africa,Tunisia ,Vegetables,Offline,M,9/29/2014,441440808,11/17/2014,1000,154.06,90.93,154060.00,90930.00,63130.00
+Sub-Saharan Africa,Central African Republic,Personal Care,Offline,H,8/13/2013,838246810,8/21/2013,4714,81.73,56.67,385275.22,267142.38,118132.84
+Middle East and North Africa,Qatar,Household,Offline,M,7/10/2013,656251847,8/29/2013,8360,668.27,502.54,5586737.20,4201234.40,1385502.80
+Asia,Sri Lanka,Household,Offline,C,6/19/2017,173629748,6/19/2017,9756,668.27,502.54,6519642.12,4902780.24,1616861.88
+Europe,Slovenia,Clothes,Offline,L,5/16/2014,188866841,5/20/2014,8750,109.28,35.84,956200.00,313600.00,642600.00
+Australia and Oceania,East Timor,Beverages,Offline,L,3/1/2013,670761954,4/11/2013,2223,47.45,31.79,105481.35,70669.17,34812.18
+Sub-Saharan Africa,Nigeria,Cereal,Offline,M,4/4/2016,308426415,4/6/2016,9085,205.70,117.11,1868784.50,1063944.35,804840.15
+Asia,Laos,Cereal,Online,C,10/9/2015,561284053,10/31/2015,5279,205.70,117.11,1085890.30,618223.69,467666.61
+Europe,Cyprus,Household,Online,C,6/18/2012,709071195,8/2/2012,8778,668.27,502.54,5866074.06,4411296.12,1454777.94
+Sub-Saharan Africa,Republic of the Congo,Household,Online,M,12/12/2011,101836669,12/14/2011,4588,668.27,502.54,3066022.76,2305653.52,760369.24
+Middle East and North Africa,Somalia,Personal Care,Online,M,4/25/2013,409941804,6/8/2013,9744,81.73,56.67,796377.12,552192.48,244184.64
+Europe,Belarus,Cereal,Online,L,12/15/2012,674060428,12/17/2012,8315,205.70,117.11,1710395.50,973769.65,736625.85
+Middle East and North Africa,Afghanistan,Office Supplies,Offline,C,11/19/2015,455178868,12/15/2015,6397,651.21,524.96,4165790.37,3358169.12,807621.25
+Europe,San Marino,Cosmetics,Offline,C,10/27/2016,284595954,10/29/2016,7122,437.20,263.33,3113738.40,1875436.26,1238302.14
+Sub-Saharan Africa,Nigeria,Meat,Online,C,7/24/2011,313923013,8/23/2011,5650,421.89,364.69,2383678.50,2060498.50,323180.00
+Middle East and North Africa,Kuwait,Clothes,Online,L,11/18/2015,765083873,1/5/2016,4175,109.28,35.84,456244.00,149632.00,306612.00
+Europe,Iceland,Baby Food,Offline,C,5/6/2016,580314862,5/12/2016,6918,255.28,159.42,1766027.04,1102867.56,663159.48
+Central America and the Caribbean,Honduras,Meat,Offline,C,12/9/2011,572164809,1/25/2012,5137,421.89,364.69,2167248.93,1873412.53,293836.40
+Asia,North Korea,Beverages,Online,C,4/11/2010,273495042,5/1/2010,2115,47.45,31.79,100356.75,67235.85,33120.90
+Middle East and North Africa,Iraq,Meat,Offline,H,4/6/2016,187479388,4/24/2016,8172,421.89,364.69,3447685.08,2980246.68,467438.40
+Europe,Luxembourg,Snacks,Online,L,2/21/2013,437604176,4/7/2013,5655,152.58,97.44,862839.90,551023.20,311816.70
+North America,United States of America,Beverages,Offline,M,9/24/2011,317668235,11/7/2011,3945,47.45,31.79,187190.25,125411.55,61778.70
+Middle East and North Africa,Yemen,Cosmetics,Offline,H,5/1/2016,541782891,5/21/2016,4452,437.20,263.33,1946414.40,1172345.16,774069.24
+Central America and the Caribbean,Saint Vincent and the Grenadines,Office Supplies,Online,M,5/24/2013,994371974,6/12/2013,5619,651.21,524.96,3659148.99,2949750.24,709398.75
+Sub-Saharan Africa,Benin,Cereal,Online,L,2/18/2013,280171811,4/7/2013,7920,205.70,117.11,1629144.00,927511.20,701632.80
+Sub-Saharan Africa,Benin,Household,Online,M,6/27/2015,674231231,6/28/2015,8859,668.27,502.54,5920203.93,4452001.86,1468202.07
+Sub-Saharan Africa,Uganda,Office Supplies,Online,C,11/14/2013,471911561,12/24/2013,7973,651.21,524.96,5192097.33,4185506.08,1006591.25
+Asia,Cambodia,Snacks,Online,H,2/18/2014,738886630,2/28/2014,1828,152.58,97.44,278916.24,178120.32,100795.92
+North America,Greenland,Beverages,Online,M,8/13/2015,361142766,9/5/2015,9025,47.45,31.79,428236.25,286904.75,141331.50
+Europe,Italy,Beverages,Offline,H,12/5/2014,994978797,1/2/2015,5192,47.45,31.79,246360.40,165053.68,81306.72
+Europe,Greece,Beverages,Offline,H,4/30/2017,317006051,6/5/2017,7990,47.45,31.79,379125.50,254002.10,125123.40
+Sub-Saharan Africa,Cameroon,Snacks,Online,M,3/16/2010,574148356,5/4/2010,2112,152.58,97.44,322248.96,205793.28,116455.68
+Europe,Montenegro,Personal Care,Online,H,4/19/2012,933642041,5/19/2012,4282,81.73,56.67,349967.86,242660.94,107306.92
+Asia,Singapore,Baby Food,Online,M,11/30/2016,633035933,12/31/2016,8255,255.28,159.42,2107336.40,1316012.10,791324.30
+Asia,Kyrgyzstan,Snacks,Online,C,11/6/2010,330191361,11/23/2010,9816,152.58,97.44,1497725.28,956471.04,541254.24
+Asia,Kyrgyzstan,Clothes,Online,M,1/14/2016,753282153,2/26/2016,1784,109.28,35.84,194955.52,63938.56,131016.96
+Sub-Saharan Africa,Guinea-Bissau,Fruits,Offline,C,1/18/2010,450794637,2/11/2010,9006,9.33,6.92,84025.98,62321.52,21704.46
+Middle East and North Africa,Somalia,Cereal,Offline,M,3/1/2013,741527640,3/18/2013,3362,205.70,117.11,691563.40,393723.82,297839.58
+Europe,Italy,Office Supplies,Offline,M,6/9/2016,764592492,7/19/2016,8764,651.21,524.96,5707204.44,4600749.44,1106455.00
+Central America and the Caribbean,Antigua and Barbuda ,Clothes,Offline,H,10/12/2015,629413020,12/1/2015,6154,109.28,35.84,672509.12,220559.36,451949.76
+Australia and Oceania,Federated States of Micronesia,Fruits,Offline,C,9/23/2015,965725553,10/8/2015,8506,9.33,6.92,79360.98,58861.52,20499.46
+Middle East and North Africa,Israel,Vegetables,Online,H,7/16/2010,673578917,8/31/2010,5825,154.06,90.93,897399.50,529667.25,367732.25
+Sub-Saharan Africa,The Gambia,Snacks,Offline,H,9/2/2010,973334443,9/15/2010,146,152.58,97.44,22276.68,14226.24,8050.44
+Central America and the Caribbean,Barbados,Baby Food,Online,L,4/16/2016,455665957,5/13/2016,538,255.28,159.42,137340.64,85767.96,51572.68
+Europe,Hungary,Clothes,Offline,C,6/25/2013,931559789,7/5/2013,8098,109.28,35.84,884949.44,290232.32,594717.12
+Europe,Germany,Beverages,Offline,L,11/26/2015,682314765,12/20/2015,956,47.45,31.79,45362.20,30391.24,14970.96
+Central America and the Caribbean,Cuba,Office Supplies,Offline,C,7/22/2015,309542214,9/5/2015,9275,651.21,524.96,6039972.75,4869004.00,1170968.75
+Europe,Spain,Snacks,Online,C,11/11/2016,485165965,12/14/2016,245,152.58,97.44,37382.10,23872.80,13509.30
+Europe,Netherlands,Beverages,Online,C,3/4/2010,601422345,3/20/2010,3092,47.45,31.79,146715.40,98294.68,48420.72
+Middle East and North Africa,Azerbaijan,Fruits,Online,L,5/26/2013,120860183,6/5/2013,4069,9.33,6.92,37963.77,28157.48,9806.29
+Middle East and North Africa,United Arab Emirates,Fruits,Offline,C,3/27/2015,826340806,5/7/2015,1462,9.33,6.92,13640.46,10117.04,3523.42
+Sub-Saharan Africa,Ghana,Office Supplies,Online,L,10/14/2016,971038043,11/8/2016,590,651.21,524.96,384213.90,309726.40,74487.50
+Central America and the Caribbean,Cuba,Baby Food,Offline,H,8/30/2012,228438222,10/12/2012,8801,255.28,159.42,2246719.28,1403055.42,843663.86
+Australia and Oceania,Vanuatu,Office Supplies,Offline,L,6/20/2017,142340171,7/1/2017,475,651.21,524.96,309324.75,249356.00,59968.75
+Middle East and North Africa,Lebanon,Household,Offline,C,7/28/2016,976855218,8/8/2016,2022,668.27,502.54,1351241.94,1016135.88,335106.06
+Sub-Saharan Africa,Guinea,Baby Food,Online,M,5/9/2015,366407191,5/21/2015,6885,255.28,159.42,1757602.80,1097606.70,659996.10
+Middle East and North Africa,Iran,Fruits,Offline,L,9/2/2012,965732419,10/19/2012,538,9.33,6.92,5019.54,3722.96,1296.58
+Europe,Albania,Household,Offline,M,3/31/2012,999879729,5/6/2012,5486,668.27,502.54,3666129.22,2756934.44,909194.78
+Sub-Saharan Africa,Mali,Snacks,Online,M,4/15/2011,114210450,4/28/2011,6265,152.58,97.44,955913.70,610461.60,345452.10
+Australia and Oceania,Australia,Household,Online,H,11/6/2011,724398410,11/7/2011,4442,668.27,502.54,2968455.34,2232282.68,736172.66
+Central America and the Caribbean,Saint Lucia,Beverages,Online,M,1/22/2017,366429936,2/27/2017,3616,47.45,31.79,171579.20,114952.64,56626.56
+Europe,Latvia,Cosmetics,Offline,H,3/5/2012,246603858,4/15/2012,4417,437.20,263.33,1931112.40,1163128.61,767983.79
+Europe,Slovakia,Beverages,Online,L,10/23/2013,291531503,10/26/2013,9505,47.45,31.79,451012.25,302163.95,148848.30
+Central America and the Caribbean,Jamaica,Snacks,Offline,L,2/20/2013,498136699,4/11/2013,8574,152.58,97.44,1308220.92,835450.56,472770.36
+Europe,Kosovo,Cereal,Offline,H,7/18/2017,483655774,8/5/2017,3346,205.70,117.11,688272.20,391850.06,296422.14
+Sub-Saharan Africa,Guinea-Bissau,Cosmetics,Offline,L,7/17/2016,835637557,8/21/2016,2578,437.20,263.33,1127101.60,678864.74,448236.86
+Central America and the Caribbean,Saint Vincent and the Grenadines,Fruits,Offline,C,11/12/2015,861943376,12/24/2015,7054,9.33,6.92,65813.82,48813.68,17000.14
+Europe,Armenia,Personal Care,Online,C,12/10/2010,840747058,12/26/2010,4593,81.73,56.67,375385.89,260285.31,115100.58
+Sub-Saharan Africa,Mozambique,Cereal,Online,M,6/1/2013,670534932,6/1/2013,5042,205.70,117.11,1037139.40,590468.62,446670.78
+Sub-Saharan Africa,Mauritius ,Baby Food,Offline,H,1/24/2017,320105826,2/19/2017,5282,255.28,159.42,1348388.96,842056.44,506332.52
+Sub-Saharan Africa,Chad,Baby Food,Online,L,9/26/2016,278571069,10/30/2016,4225,255.28,159.42,1078558.00,673549.50,405008.50
+Europe,Bosnia and Herzegovina,Cosmetics,Offline,H,2/12/2012,205354487,2/20/2012,7811,437.20,263.33,3414969.20,2056870.63,1358098.57
+Europe,Finland,Cereal,Online,H,7/16/2011,280192410,8/28/2011,4016,205.70,117.11,826091.20,470313.76,355777.44
+Australia and Oceania,East Timor,Household,Online,L,1/14/2013,753133666,2/4/2013,7843,668.27,502.54,5241241.61,3941421.22,1299820.39
+Asia,Kazakhstan,Vegetables,Offline,M,9/19/2015,594539582,10/29/2015,6329,154.06,90.93,975045.74,575495.97,399549.77
+Asia,Philippines,Snacks,Online,L,12/16/2015,645083987,1/19/2016,3542,152.58,97.44,540438.36,345132.48,195305.88
+Europe,Germany,Vegetables,Offline,C,3/14/2011,465753209,3/14/2011,5579,154.06,90.93,859500.74,507298.47,352202.27
+Europe,Sweden,Personal Care,Online,C,4/26/2011,587846076,5/24/2011,5572,81.73,56.67,455399.56,315765.24,139634.32
+Asia,Myanmar,Personal Care,Online,C,2/5/2012,262973916,2/20/2012,8680,81.73,56.67,709416.40,491895.60,217520.80
+Asia,Laos,Clothes,Online,C,3/6/2014,613060557,4/25/2014,7097,109.28,35.84,775560.16,254356.48,521203.68
+Europe,Armenia,Cereal,Offline,H,9/10/2011,580342328,10/14/2011,5046,205.70,117.11,1037962.20,590937.06,447025.14
+Australia and Oceania,Palau,Snacks,Offline,M,3/13/2011,977368056,3/18/2011,3782,152.58,97.44,577057.56,368518.08,208539.48
+Middle East and North Africa,Saudi Arabia,Snacks,Offline,M,9/26/2012,436999070,10/15/2012,6591,152.58,97.44,1005654.78,642227.04,363427.74
+Central America and the Caribbean,Honduras,Cosmetics,Offline,H,8/23/2013,362409198,9/7/2013,3790,437.20,263.33,1656988.00,998020.70,658967.30
+Europe,Switzerland,Meat,Online,C,4/21/2012,877084767,6/9/2012,7728,421.89,364.69,3260365.92,2818324.32,442041.60
+Sub-Saharan Africa,Chad,Clothes,Online,C,12/18/2011,374824607,12/28/2011,7785,109.28,35.84,850744.80,279014.40,571730.40
+Sub-Saharan Africa,Togo,Office Supplies,Online,C,12/5/2016,469740045,12/14/2016,5373,651.21,524.96,3498951.33,2820610.08,678341.25
+Middle East and North Africa,Azerbaijan,Vegetables,Offline,M,8/23/2013,146254909,9/29/2013,8932,154.06,90.93,1376063.92,812186.76,563877.16
+Europe,Norway,Clothes,Online,C,4/29/2012,709105527,5/1/2012,8938,109.28,35.84,976744.64,320337.92,656406.72
+Asia,Vietnam,Office Supplies,Offline,M,11/28/2012,833340728,11/29/2012,2895,651.21,524.96,1885252.95,1519759.20,365493.75
+Europe,San Marino,Meat,Online,H,5/23/2016,614321839,7/5/2016,339,421.89,364.69,143020.71,123629.91,19390.80
+Asia,Myanmar,Vegetables,Offline,C,6/19/2013,217722690,7/13/2013,7837,154.06,90.93,1207368.22,712618.41,494749.81
+Europe,Ukraine,Cosmetics,Online,L,1/18/2011,329529607,1/23/2011,3988,437.20,263.33,1743553.60,1050160.04,693393.56
+Sub-Saharan Africa,Burkina Faso,Cosmetics,Online,C,4/30/2013,806041419,6/5/2013,4423,437.20,263.33,1933735.60,1164708.59,769027.01
+Europe,Ireland,Fruits,Online,L,5/30/2010,223869454,6/27/2010,6801,9.33,6.92,63453.33,47062.92,16390.41
+Sub-Saharan Africa,Mozambique,Personal Care,Offline,M,5/28/2012,829937541,6/30/2012,5816,81.73,56.67,475341.68,329592.72,145748.96
+Asia,Sri Lanka,Beverages,Online,L,5/3/2015,891482007,5/16/2015,8191,47.45,31.79,388662.95,260391.89,128271.06
+Sub-Saharan Africa,Republic of the Congo,Cosmetics,Online,L,7/3/2012,546051681,7/25/2012,7682,437.20,263.33,3358570.40,2022901.06,1335669.34
+Asia,Brunei,Baby Food,Offline,C,6/5/2013,451507890,6/28/2013,73,255.28,159.42,18635.44,11637.66,6997.78
+Sub-Saharan Africa,Guinea,Cosmetics,Offline,H,4/27/2017,436024463,5/19/2017,8183,437.20,263.33,3577607.60,2154829.39,1422778.21
+Central America and the Caribbean,Panama,Cosmetics,Online,M,11/25/2016,848087728,12/30/2016,6860,437.20,263.33,2999192.00,1806443.80,1192748.20
+Sub-Saharan Africa,Angola,Household,Online,L,4/20/2017,306496512,5/6/2017,7984,668.27,502.54,5335467.68,4012279.36,1323188.32
+Sub-Saharan Africa,Kenya,Beverages,Online,M,2/25/2017,650362145,4/2/2017,5466,47.45,31.79,259361.70,173764.14,85597.56
+Europe,Czech Republic,Office Supplies,Offline,H,5/11/2012,189108455,6/30/2012,249,651.21,524.96,162151.29,130715.04,31436.25
+Europe,Sweden,Fruits,Offline,L,1/14/2015,452471768,2/10/2015,5306,9.33,6.92,49504.98,36717.52,12787.46
+Australia and Oceania,East Timor,Snacks,Online,C,11/13/2011,340500915,12/11/2011,642,152.58,97.44,97956.36,62556.48,35399.88
+Asia,Philippines,Cosmetics,Online,C,4/23/2013,173557221,5/16/2013,8293,437.20,263.33,3625699.60,2183795.69,1441903.91
+Sub-Saharan Africa,Togo,Office Supplies,Offline,H,12/15/2011,342314517,1/6/2012,7327,651.21,524.96,4771415.67,3846381.92,925033.75
+Asia,Taiwan,Vegetables,Offline,M,8/10/2016,857759130,9/28/2016,8843,154.06,90.93,1362352.58,804093.99,558258.59
+Sub-Saharan Africa,Zimbabwe,Baby Food,Offline,H,8/20/2010,901189887,9/3/2010,969,255.28,159.42,247366.32,154477.98,92888.34
+Europe,Germany,Cereal,Offline,M,4/30/2016,174218118,6/13/2016,3867,205.70,117.11,795441.90,452864.37,342577.53
+Sub-Saharan Africa,Togo,Office Supplies,Offline,L,5/25/2015,248767650,7/13/2015,4731,651.21,524.96,3080874.51,2483585.76,597288.75
+Sub-Saharan Africa,Sudan,Personal Care,Online,C,4/30/2013,517074811,5/7/2013,2782,81.73,56.67,227372.86,157655.94,69716.92
+Asia,Indonesia,Fruits,Online,C,11/23/2012,441688430,12/26/2012,4277,9.33,6.92,39904.41,29596.84,10307.57
+Australia and Oceania,Solomon Islands,Clothes,Offline,M,5/11/2010,905469834,5/15/2010,7500,109.28,35.84,819600.00,268800.00,550800.00
+Sub-Saharan Africa,Equatorial Guinea,Household,Offline,M,5/27/2014,161592853,7/3/2014,7771,668.27,502.54,5193126.17,3905238.34,1287887.83
+Middle East and North Africa,Libya,Fruits,Online,C,1/23/2012,583543813,2/2/2012,2437,9.33,6.92,22737.21,16864.04,5873.17
+Sub-Saharan Africa,Burundi,Snacks,Online,L,5/13/2010,115121543,6/25/2010,5878,152.58,97.44,896865.24,572752.32,324112.92
+Europe,Germany,Meat,Online,H,5/28/2017,820437371,6/11/2017,4505,421.89,364.69,1900614.45,1642928.45,257686.00
+Sub-Saharan Africa,Mali,Office Supplies,Offline,H,11/2/2015,333915126,12/17/2015,1761,651.21,524.96,1146780.81,924454.56,222326.25
+Europe,Slovenia,Personal Care,Offline,L,2/6/2012,410291135,2/22/2012,3119,81.73,56.67,254915.87,176753.73,78162.14
+Europe,Andorra,Baby Food,Offline,C,6/24/2017,174614226,8/13/2017,1085,255.28,159.42,276978.80,172970.70,104008.10
+Sub-Saharan Africa,Zambia,Office Supplies,Online,M,1/15/2014,172245728,2/14/2014,194,651.21,524.96,126334.74,101842.24,24492.50
+Europe,Vatican City,Snacks,Offline,L,6/2/2011,118859469,7/1/2011,2013,152.58,97.44,307143.54,196146.72,110996.82
+Middle East and North Africa,Algeria,Clothes,Online,H,9/23/2012,250441777,10/25/2012,142,109.28,35.84,15517.76,5089.28,10428.48
+Middle East and North Africa,Pakistan,Baby Food,Online,L,10/24/2010,873291480,11/6/2010,5210,255.28,159.42,1330008.80,830578.20,499430.60
+Asia,Indonesia,Beverages,Online,L,9/14/2014,114019906,9/24/2014,9879,47.45,31.79,468758.55,314053.41,154705.14
+Europe,Belarus,Cosmetics,Offline,H,7/30/2015,669550883,9/16/2015,3840,437.20,263.33,1678848.00,1011187.20,667660.80
+Central America and the Caribbean,Dominican Republic,Baby Food,Offline,L,3/30/2013,357120740,4/14/2013,8818,255.28,159.42,2251059.04,1405765.56,845293.48
+Sub-Saharan Africa,Zimbabwe,Beverages,Offline,L,5/15/2012,664278304,6/24/2012,3567,47.45,31.79,169254.15,113394.93,55859.22
+Asia,Uzbekistan,Cereal,Offline,M,2/8/2011,898884904,2/20/2011,8873,205.70,117.11,1825176.10,1039117.03,786059.07
+Europe,United Kingdom,Personal Care,Online,M,6/17/2012,439114367,6/26/2012,2554,81.73,56.67,208738.42,144735.18,64003.24
+Middle East and North Africa,Oman,Personal Care,Offline,L,12/6/2012,983453023,12/31/2012,4459,81.73,56.67,364434.07,252691.53,111742.54
+Sub-Saharan Africa,Guinea-Bissau,Cosmetics,Online,H,11/14/2013,700699698,12/23/2013,1467,437.20,263.33,641372.40,386305.11,255067.29
+Central America and the Caribbean,Nicaragua,Cereal,Offline,M,2/11/2010,979965722,3/27/2010,2489,205.70,117.11,511987.30,291486.79,220500.51
+Central America and the Caribbean,Guatemala,Office Supplies,Online,C,7/4/2016,580674922,7/26/2016,3468,651.21,524.96,2258396.28,1820561.28,437835.00
+Europe,Moldova ,Household,Online,M,1/31/2011,582563626,2/19/2011,2378,668.27,502.54,1589146.06,1195040.12,394105.94
+Middle East and North Africa,Kuwait,Snacks,Offline,C,8/8/2014,335680663,8/25/2014,4223,152.58,97.44,644345.34,411489.12,232856.22
+Sub-Saharan Africa,Zimbabwe,Vegetables,Online,L,1/7/2011,610387361,1/20/2011,6039,154.06,90.93,930368.34,549126.27,381242.07
+Australia and Oceania,Palau,Clothes,Online,C,11/9/2011,447357547,12/22/2011,1894,109.28,35.84,206976.32,67880.96,139095.36
+Central America and the Caribbean,Panama,Personal Care,Online,H,7/24/2014,307577550,7/27/2014,7887,81.73,56.67,644604.51,446956.29,197648.22
+Central America and the Caribbean,Dominican Republic,Cosmetics,Online,H,11/9/2013,722346198,12/11/2013,7147,437.20,263.33,3124668.40,1882019.51,1242648.89
+Europe,Latvia,Snacks,Online,M,2/8/2013,943274819,3/8/2013,4836,152.58,97.44,737876.88,471219.84,266657.04
+Asia,Bangladesh,Beverages,Offline,M,12/12/2012,292287242,1/11/2013,3145,47.45,31.79,149230.25,99979.55,49250.70
+Middle East and North Africa,Syria,Vegetables,Offline,C,1/31/2015,411619794,3/10/2015,6299,154.06,90.93,970423.94,572768.07,397655.87
+Europe,Hungary,Office Supplies,Online,H,12/5/2010,313821303,1/17/2011,5552,651.21,524.96,3615517.92,2914577.92,700940.00
+Europe,Slovakia,Beverages,Online,M,9/2/2015,431753098,10/19/2015,4191,47.45,31.79,198862.95,133231.89,65631.06
+Asia,Tajikistan,Baby Food,Online,M,6/30/2011,368589007,8/10/2011,2533,255.28,159.42,646624.24,403810.86,242813.38
+Sub-Saharan Africa,Benin,Vegetables,Offline,M,12/9/2011,247815358,1/8/2012,2926,154.06,90.93,450779.56,266061.18,184718.38
+Australia and Oceania,East Timor,Clothes,Online,L,9/2/2012,263230979,9/8/2012,4751,109.28,35.84,519189.28,170275.84,348913.44
+Central America and the Caribbean,Dominican Republic,Snacks,Offline,C,6/5/2010,228947198,7/1/2010,9418,152.58,97.44,1436998.44,917689.92,519308.52
+Sub-Saharan Africa,Cote d'Ivoire,Vegetables,Offline,C,5/13/2014,929387843,6/15/2014,5371,154.06,90.93,827456.26,488385.03,339071.23
+Europe,Bosnia and Herzegovina,Household,Online,C,12/28/2011,969289243,2/2/2012,3082,668.27,502.54,2059608.14,1548828.28,510779.86
+Sub-Saharan Africa,Burundi,Office Supplies,Offline,M,10/22/2010,823700225,11/21/2010,56,651.21,524.96,36467.76,29397.76,7070.00
+Asia,Sri Lanka,Clothes,Online,C,10/24/2011,587982118,11/17/2011,5830,109.28,35.84,637102.40,208947.20,428155.20
+Middle East and North Africa,Pakistan,Cereal,Online,C,4/9/2013,427808749,4/24/2013,6971,205.70,117.11,1433934.70,816373.81,617560.89
+Central America and the Caribbean,The Bahamas,Household,Offline,H,7/13/2014,129166448,7/28/2014,2077,668.27,502.54,1387996.79,1043775.58,344221.21
+Asia,India,Personal Care,Offline,H,3/14/2012,448354041,4/5/2012,6779,81.73,56.67,554047.67,384165.93,169881.74
+Europe,Norway,Snacks,Offline,M,7/17/2011,861982858,9/4/2011,8738,152.58,97.44,1333244.04,851430.72,481813.32
+Asia,China,Meat,Online,C,1/30/2015,916976726,3/16/2015,2645,421.89,364.69,1115899.05,964605.05,151294.00
+Sub-Saharan Africa,Rwanda,Office Supplies,Online,L,4/10/2011,680571973,5/5/2011,5225,651.21,524.96,3402572.25,2742916.00,659656.25
+Europe,Italy,Meat,Online,M,2/21/2016,290317428,4/2/2016,233,421.89,364.69,98300.37,84972.77,13327.60
+Asia,India,Office Supplies,Online,H,6/23/2016,404074418,6/30/2016,3455,651.21,524.96,2249930.55,1813736.80,436193.75
+North America,Greenland,Snacks,Offline,H,7/4/2011,850016772,8/3/2011,7707,152.58,97.44,1175934.06,750970.08,424963.98
+Central America and the Caribbean,The Bahamas,Vegetables,Offline,H,8/27/2016,176630818,9/19/2016,7839,154.06,90.93,1207676.34,712800.27,494876.07
+Middle East and North Africa,Afghanistan,Meat,Offline,H,5/5/2014,602715384,6/18/2014,5731,421.89,364.69,2417851.59,2090038.39,327813.20
+Middle East and North Africa,Somalia,Personal Care,Online,L,10/8/2010,367381799,10/17/2010,5293,81.73,56.67,432596.89,299954.31,132642.58
+Middle East and North Africa,Azerbaijan,Fruits,Online,M,12/26/2016,480053889,1/22/2017,7469,9.33,6.92,69685.77,51685.48,18000.29
+Asia,Tajikistan,Office Supplies,Offline,L,10/27/2014,670467984,11/13/2014,5231,651.21,524.96,3406479.51,2746065.76,660413.75
+Sub-Saharan Africa,Djibouti,Personal Care,Online,C,9/2/2013,738672912,10/10/2013,8584,81.73,56.67,701570.32,486455.28,215115.04
+Europe,Slovenia,Clothes,Offline,C,6/2/2016,105030000,6/13/2016,9566,109.28,35.84,1045372.48,342845.44,702527.04
+Europe,Belgium,Beverages,Online,H,8/31/2015,960213077,10/16/2015,7242,47.45,31.79,343632.90,230223.18,113409.72
+Australia and Oceania,Australia,Cereal,Online,M,8/19/2012,615208470,9/4/2012,2713,205.70,117.11,558064.10,317719.43,240344.67
+North America,Greenland,Cosmetics,Offline,H,5/31/2013,951315009,7/3/2013,4106,437.20,263.33,1795143.20,1081232.98,713910.22
+Middle East and North Africa,Lebanon,Beverages,Offline,L,1/1/2010,770144021,1/21/2010,1585,47.45,31.79,75208.25,50387.15,24821.10
+Europe,Hungary,Cosmetics,Offline,L,5/27/2014,743619334,7/9/2014,2341,437.20,263.33,1023485.20,616455.53,407029.67
+Europe,Ireland,Office Supplies,Offline,H,12/15/2016,263977277,1/10/2017,5597,651.21,524.96,3644822.37,2938201.12,706621.25
+Australia and Oceania,Papua New Guinea,Vegetables,Offline,H,11/11/2012,593766677,12/16/2012,7609,154.06,90.93,1172242.54,691886.37,480356.17
+Sub-Saharan Africa,The Gambia,Office Supplies,Offline,C,7/12/2013,815848863,8/27/2013,6663,651.21,524.96,4339012.23,3497808.48,841203.75
+Sub-Saharan Africa,Guinea,Cereal,Online,H,6/29/2012,983397662,7/25/2012,8076,205.70,117.11,1661233.20,945780.36,715452.84
+Sub-Saharan Africa,Tanzania,Household,Offline,H,12/8/2011,769899404,12/13/2011,9197,668.27,502.54,6146079.19,4621860.38,1524218.81
+Europe,Montenegro,Office Supplies,Offline,H,4/23/2011,819152915,4/24/2011,4406,651.21,524.96,2869231.26,2312973.76,556257.50
+Central America and the Caribbean,Cuba,Meat,Offline,C,2/20/2011,495269525,4/6/2011,113,421.89,364.69,47673.57,41209.97,6463.60
+Sub-Saharan Africa,Uganda,Cereal,Offline,M,10/18/2016,132673060,10/22/2016,9762,205.70,117.11,2008043.40,1143227.82,864815.58
+Sub-Saharan Africa,South Sudan,Cereal,Online,H,1/1/2012,586099851,1/14/2012,8825,205.70,117.11,1815302.50,1033495.75,781806.75
+Europe,France,Personal Care,Offline,C,8/13/2015,980598723,9/24/2015,9808,81.73,56.67,801607.84,555819.36,245788.48
+Asia,Malaysia,Fruits,Offline,L,4/9/2017,961531007,5/4/2017,7247,9.33,6.92,67614.51,50149.24,17465.27
+Middle East and North Africa,Jordan,Cosmetics,Offline,M,6/17/2011,244570529,7/21/2011,2709,437.20,263.33,1184374.80,713360.97,471013.83
+Sub-Saharan Africa,Cote d'Ivoire,Snacks,Online,M,6/12/2016,865703618,6/17/2016,9793,152.58,97.44,1494215.94,954229.92,539986.02
+Asia,Singapore,Baby Food,Online,M,6/30/2017,431229102,7/13/2017,9129,255.28,159.42,2330451.12,1455345.18,875105.94
+Central America and the Caribbean,Saint Kitts and Nevis ,Cereal,Offline,H,1/26/2016,667758309,3/11/2016,3378,205.70,117.11,694854.60,395597.58,299257.02
+Asia,China,Household,Online,H,11/30/2010,672215068,12/24/2010,2232,668.27,502.54,1491578.64,1121669.28,369909.36
+Sub-Saharan Africa,Senegal,Cosmetics,Online,H,12/28/2016,961835706,2/8/2017,7414,437.20,263.33,3241400.80,1952328.62,1289072.18
+Asia,Tajikistan,Beverages,Offline,C,3/29/2016,324169051,4/21/2016,7681,47.45,31.79,364463.45,244178.99,120284.46
+Sub-Saharan Africa,Burundi,Baby Food,Offline,M,5/24/2014,767076432,6/3/2014,3817,255.28,159.42,974403.76,608506.14,365897.62
+Sub-Saharan Africa,Mauritius ,Snacks,Online,C,6/16/2014,768731677,7/18/2014,3641,152.58,97.44,555543.78,354779.04,200764.74
+Sub-Saharan Africa,Botswana,Vegetables,Offline,C,12/3/2012,227621114,12/31/2012,7001,154.06,90.93,1078574.06,636600.93,441973.13
+Sub-Saharan Africa,Liberia,Personal Care,Offline,H,2/23/2011,912543570,3/25/2011,776,81.73,56.67,63422.48,43975.92,19446.56
+Central America and the Caribbean,Honduras,Office Supplies,Offline,M,7/17/2011,612610375,8/18/2011,3878,651.21,524.96,2525392.38,2035794.88,489597.50
+Australia and Oceania,Papua New Guinea,Snacks,Offline,L,10/18/2013,787245357,11/1/2013,2250,152.58,97.44,343305.00,219240.00,124065.00
+Central America and the Caribbean,Costa Rica,Meat,Offline,H,2/7/2011,716184842,3/2/2011,3865,421.89,364.69,1630604.85,1409526.85,221078.00
+North America,Canada,Cosmetics,Offline,L,8/22/2016,649477660,10/3/2016,3727,437.20,263.33,1629444.40,981430.91,648013.49
+Sub-Saharan Africa,Rwanda,Office Supplies,Offline,M,5/14/2014,457485139,5/29/2014,8874,651.21,524.96,5778837.54,4658495.04,1120342.50
+Sub-Saharan Africa,Togo,Beverages,Offline,M,10/21/2015,980881106,11/21/2015,3372,47.45,31.79,160001.40,107195.88,52805.52
+Australia and Oceania,Samoa ,Beverages,Offline,C,10/28/2010,880651891,12/2/2010,3319,47.45,31.79,157486.55,105511.01,51975.54
+Sub-Saharan Africa,Eritrea,Baby Food,Offline,C,11/15/2016,688096320,11/29/2016,1847,255.28,159.42,471502.16,294448.74,177053.42
+Sub-Saharan Africa,Guinea,Vegetables,Offline,H,8/4/2014,554825723,8/24/2014,4116,154.06,90.93,634110.96,374267.88,259843.08
+Australia and Oceania,Vanuatu,Fruits,Offline,H,3/10/2012,702763926,4/17/2012,2318,9.33,6.92,21626.94,16040.56,5586.38
+Europe,Andorra,Clothes,Offline,L,5/18/2011,974147260,6/8/2011,677,109.28,35.84,73982.56,24263.68,49718.88
+Sub-Saharan Africa,Niger,Cosmetics,Offline,H,2/17/2011,381524550,2/25/2011,448,437.20,263.33,195865.60,117971.84,77893.76
+Sub-Saharan Africa,Malawi,Fruits,Online,L,7/4/2011,257757127,7/6/2011,4917,9.33,6.92,45875.61,34025.64,11849.97
+Sub-Saharan Africa,Burundi,Baby Food,Online,C,5/24/2017,206018817,7/8/2017,4401,255.28,159.42,1123487.28,701607.42,421879.86
+Sub-Saharan Africa,Swaziland,Vegetables,Offline,H,1/18/2012,349795949,2/26/2012,1249,154.06,90.93,192420.94,113571.57,78849.37
+Middle East and North Africa,Morocco,Beverages,Offline,L,11/7/2013,882887351,12/6/2013,4842,47.45,31.79,229752.90,153927.18,75825.72
+Europe,Finland,Office Supplies,Online,H,12/21/2011,719404351,1/10/2012,6589,651.21,524.96,4290822.69,3458961.44,831861.25
+Europe,Georgia,Personal Care,Offline,L,7/24/2015,643770778,7/31/2015,4934,81.73,56.67,403255.82,279609.78,123646.04
+Middle East and North Africa,Morocco,Clothes,Online,C,2/17/2012,160722959,4/5/2012,350,109.28,35.84,38248.00,12544.00,25704.00
+Europe,Armenia,Meat,Offline,C,10/1/2016,645309722,11/6/2016,342,421.89,364.69,144286.38,124723.98,19562.40
+Sub-Saharan Africa,Malawi,Cosmetics,Offline,C,4/11/2015,392892396,5/14/2015,4446,437.20,263.33,1943791.20,1170765.18,773026.02
+Europe,Malta,Cereal,Offline,M,7/20/2013,469144809,8/24/2013,9229,205.70,117.11,1898405.30,1080808.19,817597.11
+Sub-Saharan Africa,Angola,Vegetables,Offline,H,11/29/2010,660053288,12/2/2010,3291,154.06,90.93,507011.46,299250.63,207760.83
+Europe,Norway,Cosmetics,Online,L,7/20/2011,821916663,8/26/2011,2260,437.20,263.33,988072.00,595125.80,392946.20
+Central America and the Caribbean,Dominican Republic,Personal Care,Online,M,2/21/2013,431346261,4/9/2013,3799,81.73,56.67,310492.27,215289.33,95202.94
+Europe,Austria,Household,Offline,M,8/27/2010,835265910,10/1/2010,2599,668.27,502.54,1736833.73,1306101.46,430732.27
+Central America and the Caribbean,Saint Kitts and Nevis ,Cosmetics,Online,C,4/4/2015,300911939,4/19/2015,5384,437.20,263.33,2353884.80,1417768.72,936116.08
+Asia,Tajikistan,Cereal,Offline,H,9/4/2012,765833175,10/12/2012,5910,205.70,117.11,1215687.00,692120.10,523566.90
+Asia,Singapore,Baby Food,Offline,C,6/6/2012,187890946,6/26/2012,9961,255.28,159.42,2542844.08,1587982.62,954861.46
+Europe,Greece,Household,Online,L,9/26/2013,195259082,10/11/2013,356,668.27,502.54,237904.12,178904.24,58999.88
+North America,United States of America,Personal Care,Offline,H,11/18/2016,236423909,12/28/2016,1943,81.73,56.67,158801.39,110109.81,48691.58
+Sub-Saharan Africa,Central African Republic,Meat,Offline,H,11/9/2011,730184257,12/28/2011,6603,421.89,364.69,2785739.67,2408048.07,377691.60
+Sub-Saharan Africa,The Gambia,Meat,Online,M,6/6/2012,815651452,6/17/2012,8245,421.89,364.69,3478483.05,3006869.05,471614.00
+Asia,North Korea,Fruits,Online,C,7/7/2014,602249324,8/10/2014,7813,9.33,6.92,72895.29,54065.96,18829.33
+Sub-Saharan Africa,Madagascar,Snacks,Offline,H,1/29/2015,719714200,3/6/2015,8280,152.58,97.44,1263362.40,806803.20,456559.20
+Central America and the Caribbean,El Salvador,Personal Care,Online,H,12/12/2015,968094909,1/7/2016,9652,81.73,56.67,788857.96,546978.84,241879.12
+Australia and Oceania,New Zealand,Office Supplies,Offline,H,6/6/2012,767752778,7/3/2012,3963,651.21,524.96,2580745.23,2080416.48,500328.75
+Sub-Saharan Africa,The Gambia,Household,Online,M,4/10/2012,509361636,5/28/2012,282,668.27,502.54,188452.14,141716.28,46735.86
+Sub-Saharan Africa,Liberia,Baby Food,Offline,L,9/15/2016,203907811,9/26/2016,9707,255.28,159.42,2478002.96,1547489.94,930513.02
+Middle East and North Africa,Oman,Personal Care,Offline,M,8/31/2016,832690131,9/29/2016,369,81.73,56.67,30158.37,20911.23,9247.14
+Asia,Singapore,Baby Food,Offline,C,9/22/2011,297319924,10/18/2011,2428,255.28,159.42,619819.84,387071.76,232748.08
+Sub-Saharan Africa,Tanzania,Cereal,Offline,H,11/18/2013,169721019,12/3/2013,3076,205.70,117.11,632733.20,360230.36,272502.84
+Australia and Oceania,Marshall Islands,Office Supplies,Offline,L,6/26/2013,742129743,7/19/2013,1537,651.21,524.96,1000909.77,806863.52,194046.25
+Australia and Oceania,Papua New Guinea,Clothes,Offline,C,4/21/2013,577094924,5/4/2013,4067,109.28,35.84,444441.76,145761.28,298680.48
+Central America and the Caribbean,Grenada,Vegetables,Online,C,3/4/2017,557477891,3/19/2017,8951,154.06,90.93,1378991.06,813914.43,565076.63
+Sub-Saharan Africa,Seychelles ,Clothes,Online,M,1/21/2011,736452472,3/7/2011,1507,109.28,35.84,164684.96,54010.88,110674.08
+Central America and the Caribbean,Saint Lucia,Fruits,Offline,M,4/12/2012,787504994,5/12/2012,9083,9.33,6.92,84744.39,62854.36,21890.03
+Middle East and North Africa,Turkey,Fruits,Online,C,9/22/2012,454434287,10/31/2012,6059,9.33,6.92,56530.47,41928.28,14602.19
+Sub-Saharan Africa,Sierra Leone,Household,Online,C,12/1/2012,901351678,12/4/2012,8846,668.27,502.54,5911516.42,4445468.84,1466047.58
+Asia,Laos,Beverages,Online,L,8/28/2010,662680995,10/10/2010,888,47.45,31.79,42135.60,28229.52,13906.08
+Europe,Cyprus,Clothes,Online,C,5/17/2012,593158566,6/25/2012,7656,109.28,35.84,836647.68,274391.04,562256.64
+Europe,Serbia,Vegetables,Offline,C,3/22/2014,717833220,4/3/2014,1657,154.06,90.93,255277.42,150671.01,104606.41
+Europe,Belgium,Vegetables,Online,H,5/26/2013,682066285,7/13/2013,7426,154.06,90.93,1144049.56,675246.18,468803.38
+Sub-Saharan Africa,Zimbabwe,Clothes,Online,M,12/22/2011,201531589,1/9/2012,6530,109.28,35.84,713598.40,234035.20,479563.20
+Europe,Greece,Cereal,Online,H,1/24/2013,412215459,1/31/2013,2569,205.70,117.11,528443.30,300855.59,227587.71
+Asia,South Korea,Cosmetics,Offline,L,1/29/2017,720416724,3/12/2017,6173,437.20,263.33,2698835.60,1625536.09,1073299.51
+Europe,Bosnia and Herzegovina,Office Supplies,Offline,C,5/2/2010,152746713,5/8/2010,2,651.21,524.96,1302.42,1049.92,252.50
+Sub-Saharan Africa,Mauritius ,Office Supplies,Offline,M,4/20/2014,506129252,5/18/2014,3748,651.21,524.96,2440735.08,1967550.08,473185.00
+Middle East and North Africa,Israel,Meat,Online,H,8/21/2013,497800672,10/6/2013,9136,421.89,364.69,3854387.04,3331807.84,522579.20
+Europe,Italy,Cereal,Online,M,1/6/2013,715309798,2/10/2013,4920,205.70,117.11,1012044.00,576181.20,435862.80
+Europe,Belarus,Fruits,Online,L,8/1/2010,466517961,9/7/2010,1886,9.33,6.92,17596.38,13051.12,4545.26
+Middle East and North Africa,Iran,Fruits,Online,C,12/3/2016,929598987,1/3/2017,7853,9.33,6.92,73268.49,54342.76,18925.73
+Middle East and North Africa,Jordan,Fruits,Online,L,5/21/2013,203039205,5/29/2013,2667,9.33,6.92,24883.11,18455.64,6427.47
+Sub-Saharan Africa,South Africa,Cosmetics,Online,C,6/20/2016,955637443,8/9/2016,3210,437.20,263.33,1403412.00,845289.30,558122.70
+Sub-Saharan Africa,Benin,Beverages,Online,L,6/9/2013,976505029,7/27/2013,8393,47.45,31.79,398247.85,266813.47,131434.38
+Europe,Latvia,Meat,Offline,C,7/24/2011,825065791,8/28/2011,4157,421.89,364.69,1753796.73,1516016.33,237780.40
+Sub-Saharan Africa,Lesotho,Meat,Offline,M,8/6/2011,681056058,8/11/2011,8477,421.89,364.69,3576361.53,3091477.13,484884.40
+Australia and Oceania,Fiji,Clothes,Online,L,7/31/2011,794524657,9/13/2011,6357,109.28,35.84,694692.96,227834.88,466858.08
+Sub-Saharan Africa,Niger,Clothes,Offline,H,8/12/2010,135832917,9/27/2010,4834,109.28,35.84,528259.52,173250.56,355008.96
+Sub-Saharan Africa,Swaziland,Fruits,Offline,M,8/25/2012,445654666,10/11/2012,7974,9.33,6.92,74397.42,55180.08,19217.34
+Europe,Iceland,Office Supplies,Online,L,2/18/2015,384976232,4/3/2015,1877,651.21,524.96,1222321.17,985349.92,236971.25
+Australia and Oceania,New Zealand,Baby Food,Offline,C,10/15/2012,485096442,11/9/2012,9672,255.28,159.42,2469068.16,1541910.24,927157.92
+Middle East and North Africa,Lebanon,Beverages,Offline,H,7/19/2016,897626626,8/27/2016,6521,47.45,31.79,309421.45,207302.59,102118.86
+Asia,South Korea,Clothes,Online,H,11/28/2011,944490611,12/22/2011,4615,109.28,35.84,504327.20,165401.60,338925.60
+Europe,Hungary,Office Supplies,Offline,C,9/18/2015,467924726,10/20/2015,8179,651.21,524.96,5326246.59,4293647.84,1032598.75
+Europe,Greece,Cereal,Offline,L,10/23/2011,280477797,10/24/2011,8468,205.70,117.11,1741867.60,991687.48,750180.12
+Middle East and North Africa,Iran,Household,Online,M,5/21/2015,815011155,6/26/2015,8767,668.27,502.54,5858723.09,4405768.18,1452954.91
+Europe,Bulgaria,Fruits,Online,L,3/12/2016,774698626,4/7/2016,9394,9.33,6.92,87646.02,65006.48,22639.54
+Middle East and North Africa,Egypt,Meat,Online,H,8/17/2012,283026540,9/13/2012,2697,421.89,364.69,1137837.33,983568.93,154268.40
+Central America and the Caribbean,The Bahamas,Vegetables,Online,C,7/4/2015,433793723,8/4/2015,8057,154.06,90.93,1241261.42,732623.01,508638.41
+Middle East and North Africa,Azerbaijan,Fruits,Offline,C,12/26/2013,141111505,2/8/2014,6885,9.33,6.92,64237.05,47644.20,16592.85
+Asia,Kazakhstan,Baby Food,Offline,L,3/25/2017,189403712,4/3/2017,7622,255.28,159.42,1945744.16,1215099.24,730644.92
+Middle East and North Africa,Jordan,Baby Food,Online,M,9/27/2012,983406674,11/3/2012,743,255.28,159.42,189673.04,118449.06,71223.98
+Australia and Oceania,Marshall Islands,Snacks,Online,C,8/6/2015,298169219,8/26/2015,3753,152.58,97.44,572632.74,365692.32,206940.42
+Central America and the Caribbean,Barbados,Clothes,Online,H,8/23/2011,929052674,9/12/2011,6187,109.28,35.84,676115.36,221742.08,454373.28
+Sub-Saharan Africa,Burkina Faso,Cosmetics,Online,H,4/21/2014,341730868,5/24/2014,4613,437.20,263.33,2016803.60,1214741.29,802062.31
+Sub-Saharan Africa,Namibia,Cosmetics,Online,M,5/4/2015,122190129,5/23/2015,7629,437.20,263.33,3335398.80,2008944.57,1326454.23
+Australia and Oceania,East Timor,Beverages,Offline,M,5/15/2011,126729285,6/13/2011,867,47.45,31.79,41139.15,27561.93,13577.22
+Sub-Saharan Africa,Liberia,Meat,Offline,L,3/21/2015,731959664,4/13/2015,1985,421.89,364.69,837451.65,723909.65,113542.00
+Central America and the Caribbean,Haiti,Baby Food,Offline,M,4/11/2014,584805095,4/14/2014,5678,255.28,159.42,1449479.84,905186.76,544293.08
+Europe,Slovenia,Cereal,Online,M,2/21/2012,652501904,3/25/2012,8668,205.70,117.11,1783007.60,1015109.48,767898.12
+Sub-Saharan Africa,Zimbabwe,Snacks,Online,M,4/5/2017,172598922,4/18/2017,4711,152.58,97.44,718804.38,459039.84,259764.54
+Middle East and North Africa,Syria,Clothes,Online,L,6/5/2016,702957475,6/16/2016,9593,109.28,35.84,1048323.04,343813.12,704509.92
+Middle East and North Africa,Turkey,Household,Online,H,6/10/2016,271751391,7/9/2016,6130,668.27,502.54,4096495.10,3080570.20,1015924.90
+Central America and the Caribbean,El Salvador,Cereal,Online,L,1/3/2010,127467000,2/7/2010,9173,205.70,117.11,1886886.10,1074250.03,812636.07
+Europe,Bulgaria,Household,Online,M,5/31/2017,688903129,7/2/2017,600,668.27,502.54,400962.00,301524.00,99438.00
+Europe,Finland,Personal Care,Online,M,7/25/2014,195171105,9/4/2014,4322,81.73,56.67,353237.06,244927.74,108309.32
+Asia,Brunei,Meat,Online,L,7/6/2012,555694758,7/24/2012,1283,421.89,364.69,541284.87,467897.27,73387.60
+North America,Greenland,Office Supplies,Online,C,10/22/2015,600210416,11/23/2015,4455,651.21,524.96,2901140.55,2338696.80,562443.75
+Europe,Vatican City,Household,Offline,C,2/13/2011,128766906,3/28/2011,3844,668.27,502.54,2568829.88,1931763.76,637066.12
+Europe,San Marino,Vegetables,Offline,L,6/27/2016,361725556,7/18/2016,1485,154.06,90.93,228779.10,135031.05,93748.05
+Europe,Armenia,Personal Care,Online,C,12/6/2016,789760196,1/2/2017,6447,81.73,56.67,526913.31,365351.49,161561.82
+Sub-Saharan Africa,Democratic Republic of the Congo,Cosmetics,Online,H,9/5/2013,523857152,10/9/2013,9827,437.20,263.33,4296364.40,2587743.91,1708620.49
+Australia and Oceania,Palau,Cosmetics,Offline,H,10/25/2012,545315253,10/28/2012,9756,437.20,263.33,4265323.20,2569047.48,1696275.72
+Asia,Laos,Cosmetics,Offline,L,12/1/2013,555745828,12/10/2013,6395,437.20,263.33,2795894.00,1683995.35,1111898.65
+Europe,Slovakia,Cosmetics,Online,C,11/1/2013,327072703,11/16/2013,6936,437.20,263.33,3032419.20,1826456.88,1205962.32
+Central America and the Caribbean,Barbados,Household,Offline,L,6/28/2010,151532208,8/15/2010,603,668.27,502.54,402966.81,303031.62,99935.19
+Asia,India,Fruits,Offline,H,3/21/2014,391673171,4/11/2014,3650,9.33,6.92,34054.50,25258.00,8796.50
+Europe,Switzerland,Vegetables,Online,H,9/18/2013,130356919,10/1/2013,4364,154.06,90.93,672317.84,396818.52,275499.32
+Asia,Cambodia,Personal Care,Offline,L,2/3/2010,320757281,3/15/2010,8062,81.73,56.67,658907.26,456873.54,202033.72
+Europe,Portugal,Cereal,Offline,H,2/5/2013,636360585,3/8/2013,2093,205.70,117.11,430530.10,245111.23,185418.87
+Asia,Turkmenistan,Cosmetics,Online,C,8/14/2014,820965659,8/18/2014,837,437.20,263.33,365936.40,220407.21,145529.19
+Middle East and North Africa,Oman,Cereal,Online,H,3/4/2015,238683831,4/14/2015,705,205.70,117.11,145018.50,82562.55,62455.95
+Europe,Belarus,Beverages,Online,M,7/24/2012,123938930,8/2/2012,5138,47.45,31.79,243798.10,163337.02,80461.08
+Sub-Saharan Africa,Mozambique,Personal Care,Online,C,3/23/2013,431467282,5/4/2013,9612,81.73,56.67,785588.76,544712.04,240876.72
+Sub-Saharan Africa,Botswana,Fruits,Offline,M,4/20/2013,286317718,4/30/2013,6630,9.33,6.92,61857.90,45879.60,15978.30
+Central America and the Caribbean,Dominican Republic,Meat,Offline,H,1/2/2010,233851563,2/21/2010,729,421.89,364.69,307557.81,265859.01,41698.80
+Sub-Saharan Africa,Comoros,Office Supplies,Offline,L,12/17/2012,889742648,1/16/2013,3476,651.21,524.96,2263605.96,1824760.96,438845.00
+Asia,Kyrgyzstan,Meat,Online,C,2/26/2010,689977300,4/5/2010,8471,421.89,364.69,3573830.19,3089288.99,484541.20
+Asia,Laos,Meat,Online,C,2/18/2017,840854346,4/8/2017,6342,421.89,364.69,2675626.38,2312863.98,362762.40
+Asia,Japan,Beverages,Online,C,8/24/2012,368985116,10/11/2012,9750,47.45,31.79,462637.50,309952.50,152685.00
+Sub-Saharan Africa,Burkina Faso,Vegetables,Online,H,8/2/2010,171293437,8/12/2010,8389,154.06,90.93,1292409.34,762811.77,529597.57
+Central America and the Caribbean,Costa Rica,Baby Food,Offline,H,10/5/2010,765015637,11/1/2010,3982,255.28,159.42,1016524.96,634810.44,381714.52
+Sub-Saharan Africa,Comoros,Vegetables,Online,M,4/6/2010,937700545,4/30/2010,5284,154.06,90.93,814053.04,480474.12,333578.92
+Australia and Oceania,Palau,Personal Care,Offline,H,10/26/2014,897209489,12/7/2014,3081,81.73,56.67,251810.13,174600.27,77209.86
+Central America and the Caribbean,Grenada,Beverages,Online,H,4/16/2012,921716296,4/25/2012,5189,47.45,31.79,246218.05,164958.31,81259.74
+Sub-Saharan Africa,Guinea,Vegetables,Offline,C,4/28/2014,909707295,5/15/2014,1459,154.06,90.93,224773.54,132666.87,92106.67
+Asia,Cambodia,Beverages,Offline,L,9/9/2014,829981315,10/26/2014,8770,47.45,31.79,416136.50,278798.30,137338.20
+Sub-Saharan Africa,Kenya,Personal Care,Online,M,10/23/2015,271649682,12/4/2015,6032,81.73,56.67,492995.36,341833.44,151161.92
+Sub-Saharan Africa,Swaziland,Fruits,Online,M,5/16/2017,694136226,6/18/2017,9189,9.33,6.92,85733.37,63587.88,22145.49
+Asia,South Korea,Personal Care,Online,L,7/24/2012,477177274,8/9/2012,6214,81.73,56.67,507870.22,352147.38,155722.84
+Europe,Kosovo,Office Supplies,Offline,C,7/26/2014,770821654,8/19/2014,2112,651.21,524.96,1375355.52,1108715.52,266640.00
+Sub-Saharan Africa,Swaziland,Fruits,Online,M,11/28/2014,545430696,12/2/2014,3918,9.33,6.92,36554.94,27112.56,9442.38
+Australia and Oceania,Federated States of Micronesia,Clothes,Online,M,7/17/2017,641678225,8/27/2017,5701,109.28,35.84,623005.28,204323.84,418681.44
+Sub-Saharan Africa,Nigeria,Cosmetics,Online,C,5/5/2012,620550572,6/5/2012,3559,437.20,263.33,1555994.80,937191.47,618803.33
+Middle East and North Africa,Saudi Arabia,Cosmetics,Online,H,10/1/2016,113346564,10/14/2016,622,437.20,263.33,271938.40,163791.26,108147.14
+Sub-Saharan Africa,Central African Republic,Clothes,Online,M,5/29/2011,171677529,7/5/2011,2051,109.28,35.84,224133.28,73507.84,150625.44
+Middle East and North Africa,Iraq,Office Supplies,Online,L,2/5/2012,117467296,3/15/2012,38,651.21,524.96,24745.98,19948.48,4797.50
+Europe,United Kingdom,Cosmetics,Online,M,12/14/2012,692952191,1/4/2013,8807,437.20,263.33,3850420.40,2319147.31,1531273.09
+Australia and Oceania,New Zealand,Cosmetics,Offline,M,12/16/2012,910681045,1/8/2013,9613,437.20,263.33,4202803.60,2531391.29,1671412.31
+Central America and the Caribbean,Haiti,Vegetables,Online,H,3/1/2012,303515183,4/18/2012,5742,154.06,90.93,884612.52,522120.06,362492.46
+Australia and Oceania,Vanuatu,Household,Online,L,6/20/2015,274628436,7/26/2015,7512,668.27,502.54,5020044.24,3775080.48,1244963.76
+Europe,Ukraine,Beverages,Offline,L,9/7/2013,947507131,10/20/2013,7271,47.45,31.79,345008.95,231145.09,113863.86
+Australia and Oceania,Papua New Guinea,Beverages,Offline,L,1/22/2010,715950095,2/1/2010,4398,47.45,31.79,208685.10,139812.42,68872.68
+Asia,Japan,Fruits,Offline,C,6/22/2016,294068658,8/6/2016,306,9.33,6.92,2854.98,2117.52,737.46
+Sub-Saharan Africa,Malawi,Personal Care,Offline,C,10/19/2011,466286647,11/28/2011,3436,81.73,56.67,280824.28,194718.12,86106.16
+Middle East and North Africa,Qatar,Meat,Offline,C,10/28/2013,737340390,11/1/2013,4262,421.89,364.69,1798095.18,1554308.78,243786.40
+Sub-Saharan Africa,Botswana,Office Supplies,Offline,C,11/29/2014,682278716,1/1/2015,289,651.21,524.96,188199.69,151713.44,36486.25
+Europe,Ireland,Personal Care,Offline,L,1/21/2016,396462953,2/26/2016,1053,81.73,56.67,86061.69,59673.51,26388.18
+Asia,Bangladesh,Meat,Online,H,7/12/2015,945566928,7/20/2015,3121,421.89,364.69,1316718.69,1138197.49,178521.20
+Asia,South Korea,Cosmetics,Online,C,8/31/2012,315576970,9/14/2012,5093,437.20,263.33,2226659.60,1341139.69,885519.91
+Europe,Russia,Beverages,Offline,M,8/30/2011,162791907,10/19/2011,2598,47.45,31.79,123275.10,82590.42,40684.68
+Asia,North Korea,Household,Online,M,3/12/2010,863823068,4/9/2010,3297,668.27,502.54,2203286.19,1656874.38,546411.81
+Asia,Bangladesh,Meat,Online,L,10/19/2010,165594279,12/8/2010,1882,421.89,364.69,793996.98,686346.58,107650.40
+Europe,Luxembourg,Cosmetics,Online,M,1/26/2017,835341870,2/24/2017,5077,437.20,263.33,2219664.40,1336926.41,882737.99
+Sub-Saharan Africa,Guinea-Bissau,Clothes,Offline,C,9/28/2014,310614669,10/15/2014,6638,109.28,35.84,725400.64,237905.92,487494.72
+Europe,Norway,Household,Offline,C,4/29/2013,149274003,5/29/2013,2350,668.27,502.54,1570434.50,1180969.00,389465.50
+Middle East and North Africa,Libya,Beverages,Offline,H,1/17/2012,179493701,2/7/2012,5030,47.45,31.79,238673.50,159903.70,78769.80
+Sub-Saharan Africa,Chad,Clothes,Online,M,3/8/2011,749760091,3/15/2011,9527,109.28,35.84,1041110.56,341447.68,699662.88
+Australia and Oceania,Tonga,Baby Food,Offline,C,11/15/2015,478872001,12/29/2015,7721,255.28,159.42,1971016.88,1230881.82,740135.06
+Australia and Oceania,Tonga,Beverages,Online,L,3/4/2017,305940759,4/23/2017,3524,47.45,31.79,167213.80,112027.96,55185.84
+Asia,India,Beverages,Online,C,12/27/2010,340390193,1/26/2011,7877,47.45,31.79,373763.65,250409.83,123353.82
+Europe,Estonia,Cosmetics,Offline,C,1/4/2017,311956632,1/10/2017,3755,437.20,263.33,1641686.00,988804.15,652881.85
+Europe,Ukraine,Baby Food,Offline,L,5/5/2014,920688903,6/12/2014,1161,255.28,159.42,296380.08,185086.62,111293.46
+Asia,Laos,Meat,Online,L,6/12/2013,686948335,7/26/2013,2133,421.89,364.69,899891.37,777883.77,122007.60
+Sub-Saharan Africa,South Africa,Household,Offline,C,6/27/2014,901408755,8/1/2014,5737,668.27,502.54,3833864.99,2883071.98,950793.01
+Sub-Saharan Africa,Republic of the Congo,Meat,Online,C,2/15/2011,675056493,3/23/2011,3072,421.89,364.69,1296046.08,1120327.68,175718.40
+Sub-Saharan Africa,Guinea,Beverages,Offline,C,1/5/2017,989190375,1/10/2017,2269,47.45,31.79,107664.05,72131.51,35532.54
+Asia,Nepal,Household,Offline,L,8/1/2016,645421731,8/22/2016,3488,668.27,502.54,2330925.76,1752859.52,578066.24
+Asia,Vietnam,Meat,Online,H,4/6/2014,315674388,5/20/2014,3921,421.89,364.69,1654230.69,1429949.49,224281.20
+Middle East and North Africa,Tunisia ,Cereal,Offline,C,7/16/2015,292184674,7/16/2015,2793,205.70,117.11,574520.10,327088.23,247431.87
+Middle East and North Africa,Algeria,Baby Food,Offline,M,8/10/2015,937501418,8/16/2015,6358,255.28,159.42,1623070.24,1013592.36,609477.88
+Europe,San Marino,Personal Care,Online,L,9/25/2010,434485948,11/3/2010,2902,81.73,56.67,237180.46,164456.34,72724.12
+Middle East and North Africa,Somalia,Personal Care,Offline,L,3/4/2017,636312091,3/18/2017,7743,81.73,56.67,632835.39,438795.81,194039.58
+Europe,Estonia,Baby Food,Offline,H,5/22/2014,316466176,6/2/2014,8229,255.28,159.42,2100699.12,1311867.18,788831.94
+Asia,Malaysia,Vegetables,Offline,H,12/24/2016,118747031,2/10/2017,8740,154.06,90.93,1346484.40,794728.20,551756.20
+Central America and the Caribbean,Nicaragua,Household,Online,C,4/29/2010,307265985,5/4/2010,5688,668.27,502.54,3801119.76,2858447.52,942672.24
+Central America and the Caribbean,Cuba,Cereal,Offline,M,12/10/2014,316446864,12/13/2014,2514,205.70,117.11,517129.80,294414.54,222715.26
+Europe,Kosovo,Household,Online,M,7/18/2014,101025998,8/11/2014,4693,668.27,502.54,3136191.11,2358420.22,777770.89
+Australia and Oceania,Fiji,Vegetables,Offline,H,11/8/2012,586052215,12/16/2012,4729,154.06,90.93,728549.74,430007.97,298541.77
+Australia and Oceania,Marshall Islands,Beverages,Offline,M,8/27/2014,516886842,9/25/2014,7158,47.45,31.79,339647.10,227552.82,112094.28
+Central America and the Caribbean,The Bahamas,Vegetables,Online,M,6/4/2014,509203708,6/24/2014,3548,154.06,90.93,546604.88,322619.64,223985.24
+Sub-Saharan Africa,Mauritius ,Cosmetics,Online,H,4/18/2015,798989140,6/4/2015,7497,437.20,263.33,3277688.40,1974185.01,1303503.39
+Asia,Uzbekistan,Cereal,Offline,L,2/3/2010,792541968,3/8/2010,9635,205.70,117.11,1981919.50,1128354.85,853564.65
+Sub-Saharan Africa,Namibia,Household,Online,H,6/7/2015,416473519,6/23/2015,2624,668.27,502.54,1753540.48,1318664.96,434875.52
+Central America and the Caribbean,El Salvador,Office Supplies,Offline,C,12/1/2014,567707622,12/22/2014,6156,651.21,524.96,4008848.76,3231653.76,777195.00
+Asia,China,Household,Offline,C,12/5/2015,863480603,1/12/2016,1954,668.27,502.54,1305799.58,981963.16,323836.42
+Asia,Philippines,Beverages,Offline,L,7/22/2015,991341292,9/2/2015,8773,47.45,31.79,416278.85,278893.67,137385.18
+Sub-Saharan Africa,Central African Republic,Cereal,Online,H,12/15/2011,259151017,1/9/2012,7400,205.70,117.11,1522180.00,866614.00,655566.00
+Asia,Mongolia,Household,Offline,C,9/15/2015,745083606,9/30/2015,5651,668.27,502.54,3776393.77,2839853.54,936540.23
+Europe,Luxembourg,Personal Care,Offline,H,9/25/2015,547625386,9/29/2015,3376,81.73,56.67,275920.48,191317.92,84602.56
+Middle East and North Africa,Pakistan,Beverages,Offline,C,5/21/2013,535575187,6/13/2013,7454,47.45,31.79,353692.30,236962.66,116729.64
+Australia and Oceania,New Zealand,Meat,Online,M,1/30/2011,298044335,2/13/2011,6797,421.89,364.69,2867586.33,2478797.93,388788.40
+Europe,Montenegro,Fruits,Online,H,1/31/2016,394456660,2/9/2016,7346,9.33,6.92,68538.18,50834.32,17703.86
+Europe,Kosovo,Baby Food,Online,M,1/1/2014,104548490,1/5/2014,7076,255.28,159.42,1806361.28,1128055.92,678305.36
+Sub-Saharan Africa,Zambia,Vegetables,Online,M,6/14/2010,578368651,7/17/2010,991,154.06,90.93,152673.46,90111.63,62561.83
+Asia,Bhutan,Beverages,Offline,H,2/7/2012,786278474,3/19/2012,6128,47.45,31.79,290773.60,194809.12,95964.48
+Asia,Laos,Office Supplies,Online,H,5/3/2015,668951785,5/15/2015,6554,651.21,524.96,4268030.34,3440587.84,827442.50
+Europe,Greece,Cereal,Online,M,1/10/2010,687374913,2/26/2010,8367,205.70,117.11,1721091.90,979859.37,741232.53
+Central America and the Caribbean,Costa Rica,Meat,Online,L,8/11/2013,472846686,9/10/2013,4697,421.89,364.69,1981617.33,1712948.93,268668.40
+Middle East and North Africa,Turkey,Clothes,Online,C,4/23/2014,176978433,5/5/2014,706,109.28,35.84,77151.68,25303.04,51848.64
+Europe,Greece,Vegetables,Online,M,10/4/2012,921693980,11/4/2012,8586,154.06,90.93,1322759.16,780724.98,542034.18
+Sub-Saharan Africa,Eritrea,Cosmetics,Online,M,8/31/2010,749229657,10/8/2010,2560,437.20,263.33,1119232.00,674124.80,445107.20
+Central America and the Caribbean,Haiti,Meat,Offline,M,8/2/2014,472134292,8/25/2014,3884,421.89,364.69,1638620.76,1416455.96,222164.80
+Asia,Sri Lanka,Cosmetics,Online,M,12/28/2016,523269212,2/4/2017,5843,437.20,263.33,2554559.60,1538637.19,1015922.41
+Sub-Saharan Africa,Ethiopia,Fruits,Online,H,3/19/2015,505808246,4/12/2015,8755,9.33,6.92,81684.15,60584.60,21099.55
+Australia and Oceania,East Timor,Office Supplies,Online,H,3/19/2015,543237721,4/25/2015,4969,651.21,524.96,3235862.49,2608526.24,627336.25
+Europe,Montenegro,Household,Online,L,8/29/2012,829356467,9/16/2012,3864,668.27,502.54,2582195.28,1941814.56,640380.72
+Australia and Oceania,Solomon Islands,Office Supplies,Online,H,11/13/2011,278275811,12/7/2011,6851,651.21,524.96,4461439.71,3596500.96,864938.75
+Central America and the Caribbean,Honduras,Office Supplies,Online,L,5/31/2014,574419581,7/19/2014,2374,651.21,524.96,1545972.54,1246255.04,299717.50
+Europe,Czech Republic,Cereal,Offline,C,5/20/2015,322524106,5/20/2015,905,205.70,117.11,186158.50,105984.55,80173.95
+Europe,Portugal,Cereal,Offline,M,9/14/2014,897638213,10/8/2014,9950,205.70,117.11,2046715.00,1165244.50,881470.50
+Middle East and North Africa,Yemen,Personal Care,Offline,M,5/15/2013,595123231,6/13/2013,9044,81.73,56.67,739166.12,512523.48,226642.64
+Europe,Italy,Baby Food,Offline,L,3/23/2017,480652987,4/5/2017,4755,255.28,159.42,1213856.40,758042.10,455814.30
+Europe,France,Office Supplies,Online,C,6/20/2010,340213811,7/26/2010,5682,651.21,524.96,3700175.22,2982822.72,717352.50
+Asia,Malaysia,Cereal,Online,C,6/5/2012,930104529,7/24/2012,7454,205.70,117.11,1533287.80,872937.94,660349.86
+Europe,Iceland,Baby Food,Online,H,3/20/2013,826936471,3/30/2013,7733,255.28,159.42,1974080.24,1232794.86,741285.38
+Europe,Norway,Cosmetics,Online,H,5/14/2015,477633464,6/7/2015,1211,437.20,263.33,529449.20,318892.63,210556.57
+Europe,Latvia,Meat,Online,L,11/25/2014,849431836,11/28/2014,4611,421.89,364.69,1945334.79,1681585.59,263749.20
+Sub-Saharan Africa,Cape Verde,Snacks,Online,C,9/12/2012,279880416,10/31/2012,1689,152.58,97.44,257707.62,164576.16,93131.46
+Sub-Saharan Africa,Republic of the Congo,Snacks,Online,L,9/13/2010,326840531,10/10/2010,8231,152.58,97.44,1255885.98,802028.64,453857.34
+Middle East and North Africa,Qatar,Fruits,Online,M,9/12/2015,818486011,10/23/2015,7054,9.33,6.92,65813.82,48813.68,17000.14
+Sub-Saharan Africa,Sudan,Household,Offline,M,10/29/2012,303303182,11/6/2012,3006,668.27,502.54,2008819.62,1510635.24,498184.38
+Sub-Saharan Africa,Cote d'Ivoire,Personal Care,Online,L,10/21/2014,100090873,11/24/2014,7968,81.73,56.67,651224.64,451546.56,199678.08
+Sub-Saharan Africa,Cape Verde,Vegetables,Offline,M,9/5/2012,247960412,10/11/2012,5851,154.06,90.93,901405.06,532031.43,369373.63
+Asia,Taiwan,Meat,Online,M,7/5/2017,856335628,7/26/2017,7597,421.89,364.69,3205098.33,2770549.93,434548.40
+Middle East and North Africa,Libya,Cereal,Offline,H,2/11/2011,754952847,2/20/2011,6179,205.70,117.11,1271020.30,723622.69,547397.61
+Central America and the Caribbean,Belize,Meat,Online,C,6/19/2010,643860900,6/29/2010,1603,421.89,364.69,676289.67,584598.07,91691.60
+Sub-Saharan Africa,Republic of the Congo,Clothes,Offline,C,11/17/2010,843421113,12/31/2010,5905,109.28,35.84,645298.40,211635.20,433663.20
+Europe,United Kingdom,Baby Food,Online,H,7/8/2012,844307315,7/29/2012,8152,255.28,159.42,2081042.56,1299591.84,781450.72
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Offline,H,8/13/2016,657505834,8/28/2016,9442,255.28,159.42,2410353.76,1505243.64,905110.12
+Central America and the Caribbean,Saint Kitts and Nevis ,Snacks,Offline,H,2/11/2014,364315497,3/20/2014,7906,152.58,97.44,1206297.48,770360.64,435936.84
+Middle East and North Africa,Israel,Fruits,Offline,C,2/25/2012,566347634,3/6/2012,3705,9.33,6.92,34567.65,25638.60,8929.05
+Sub-Saharan Africa,Senegal,Baby Food,Offline,M,2/28/2015,135526072,2/28/2015,4031,255.28,159.42,1029033.68,642622.02,386411.66
+Australia and Oceania,Vanuatu,Household,Offline,M,6/26/2013,264087140,7/28/2013,8108,668.27,502.54,5418333.16,4074594.32,1343738.84
+Europe,Finland,Snacks,Online,H,6/20/2017,414579665,7/10/2017,2191,152.58,97.44,334302.78,213491.04,120811.74
+Europe,Switzerland,Cereal,Offline,M,10/18/2015,569864976,11/30/2015,4565,205.70,117.11,939020.50,534607.15,404413.35
+Europe,United Kingdom,Clothes,Online,L,2/26/2017,783116900,3/14/2017,548,109.28,35.84,59885.44,19640.32,40245.12
+Europe,Andorra,Cosmetics,Online,L,2/26/2016,727821767,3/16/2016,7489,437.20,263.33,3274190.80,1972078.37,1302112.43
+Asia,Maldives,Clothes,Offline,C,3/30/2012,147778403,4/19/2012,9768,109.28,35.84,1067447.04,350085.12,717361.92
+Asia,Philippines,Office Supplies,Online,C,7/11/2013,207098138,8/29/2013,3796,651.21,524.96,2471993.16,1992748.16,479245.00
+Australia and Oceania,East Timor,Meat,Online,L,3/21/2010,340204799,4/16/2010,3015,421.89,364.69,1271998.35,1099540.35,172458.00
+Asia,China,Beverages,Offline,C,5/4/2016,501834714,6/7/2016,2899,47.45,31.79,137557.55,92159.21,45398.34
+Middle East and North Africa,Tunisia ,Household,Offline,M,11/18/2012,717036712,12/30/2012,5952,668.27,502.54,3977543.04,2991118.08,986424.96
+Europe,Georgia,Meat,Offline,C,3/15/2012,631172120,4/20/2012,6711,421.89,364.69,2831303.79,2447434.59,383869.20
+Europe,San Marino,Office Supplies,Offline,M,5/11/2016,859914767,6/18/2016,6744,651.21,524.96,4391760.24,3540330.24,851430.00
+Central America and the Caribbean,Saint Kitts and Nevis ,Beverages,Offline,L,5/1/2013,739250981,6/3/2013,9648,47.45,31.79,457797.60,306709.92,151087.68
+Europe,Andorra,Snacks,Online,L,2/4/2011,575479590,3/22/2011,6054,152.58,97.44,923719.32,589901.76,333817.56
+Sub-Saharan Africa,Cameroon,Personal Care,Online,L,2/13/2011,295211923,2/25/2011,8623,81.73,56.67,704757.79,488665.41,216092.38
+Central America and the Caribbean,Costa Rica,Clothes,Offline,H,2/24/2012,795371806,3/4/2012,7047,109.28,35.84,770096.16,252564.48,517531.68
+North America,Greenland,Personal Care,Offline,L,12/29/2013,793195569,1/24/2014,3050,81.73,56.67,249276.50,172843.50,76433.00
+Central America and the Caribbean,Antigua and Barbuda ,Personal Care,Offline,H,9/30/2013,876232039,11/7/2013,5387,81.73,56.67,440279.51,305281.29,134998.22
+Europe,Spain,Snacks,Offline,M,2/19/2017,352342545,3/27/2017,4844,152.58,97.44,739097.52,471999.36,267098.16
+Central America and the Caribbean,Panama,Household,Offline,C,1/8/2012,399700915,2/27/2012,9238,668.27,502.54,6173478.26,4642464.52,1531013.74
+Asia,Taiwan,Baby Food,Online,C,1/16/2010,916793477,2/4/2010,8418,255.28,159.42,2148947.04,1341997.56,806949.48
+Europe,Slovenia,Cereal,Online,H,7/22/2012,972419059,8/17/2012,9264,205.70,117.11,1905604.80,1084907.04,820697.76
+Middle East and North Africa,Kuwait,Meat,Online,L,5/26/2014,155688989,6/9/2014,686,421.89,364.69,289416.54,250177.34,39239.20
+Asia,South Korea,Meat,Offline,M,4/8/2015,826027095,4/22/2015,8628,421.89,364.69,3640066.92,3146545.32,493521.60
+Sub-Saharan Africa,Lesotho,Meat,Offline,M,12/1/2015,463169705,12/22/2015,1063,421.89,364.69,448469.07,387665.47,60803.60
+Europe,Spain,Meat,Offline,M,5/20/2014,217165648,6/8/2014,2996,421.89,364.69,1263982.44,1092611.24,171371.20
+Middle East and North Africa,Israel,Snacks,Online,C,5/5/2017,858376252,5/9/2017,1463,152.58,97.44,223224.54,142554.72,80669.82
+Middle East and North Africa,Syria,Vegetables,Online,C,8/8/2013,527475345,8/20/2013,531,154.06,90.93,81805.86,48283.83,33522.03
+Australia and Oceania,Nauru,Cosmetics,Offline,M,10/3/2015,585449254,11/13/2015,6299,437.20,263.33,2753922.80,1658715.67,1095207.13
+Australia and Oceania,Samoa ,Baby Food,Offline,L,12/12/2010,663596808,1/6/2011,1897,255.28,159.42,484266.16,302419.74,181846.42
+Sub-Saharan Africa,South Sudan,Baby Food,Offline,C,2/11/2010,913529336,2/27/2010,2486,255.28,159.42,634626.08,396318.12,238307.96
+Central America and the Caribbean,Haiti,Office Supplies,Online,M,11/23/2013,657170665,11/24/2013,258,651.21,524.96,168012.18,135439.68,32572.50
+Asia,Cambodia,Vegetables,Offline,L,6/4/2016,636757123,7/8/2016,9438,154.06,90.93,1454018.28,858197.34,595820.94
+Europe,Denmark,Baby Food,Online,L,9/6/2016,764837539,9/6/2016,1279,255.28,159.42,326503.12,203898.18,122604.94
+Sub-Saharan Africa,Burkina Faso,Fruits,Online,C,9/20/2014,574273240,9/25/2014,9068,9.33,6.92,84604.44,62750.56,21853.88
+Central America and the Caribbean,Barbados,Cereal,Offline,C,6/7/2015,568238055,7/17/2015,3123,205.70,117.11,642401.10,365734.53,276666.57
+Europe,Latvia,Fruits,Offline,H,3/19/2017,870218312,3/27/2017,5792,9.33,6.92,54039.36,40080.64,13958.72
+Australia and Oceania,Samoa ,Personal Care,Online,C,9/26/2015,774012839,9/29/2015,6454,81.73,56.67,527485.42,365748.18,161737.24
+Australia and Oceania,Tonga,Clothes,Online,C,4/21/2015,993732964,5/22/2015,6522,109.28,35.84,712724.16,233748.48,478975.68
+Europe,Spain,Office Supplies,Online,L,7/2/2017,513802516,8/7/2017,4437,651.21,524.96,2889418.77,2329247.52,560171.25
+Europe,Slovakia,Beverages,Online,M,5/31/2017,638957822,6/24/2017,673,47.45,31.79,31933.85,21394.67,10539.18
+Europe,Bulgaria,Baby Food,Online,H,12/19/2014,944247710,1/31/2015,2736,255.28,159.42,698446.08,436173.12,262272.96
+Middle East and North Africa,Morocco,Clothes,Online,L,2/26/2011,625033509,2/26/2011,160,109.28,35.84,17484.80,5734.40,11750.40
+Sub-Saharan Africa,Niger,Household,Offline,H,10/29/2011,746989047,12/13/2011,9514,668.27,502.54,6357920.78,4781165.56,1576755.22
+Sub-Saharan Africa,Central African Republic,Snacks,Online,C,4/24/2016,196100652,5/31/2016,9395,152.58,97.44,1433489.10,915448.80,518040.30
+Sub-Saharan Africa,Eritrea,Office Supplies,Online,M,9/1/2013,628667151,9/26/2013,5435,651.21,524.96,3539326.35,2853157.60,686168.75
+Sub-Saharan Africa,Ghana,Meat,Offline,L,9/17/2016,621299874,10/8/2016,5294,421.89,364.69,2233485.66,1930668.86,302816.80
+Australia and Oceania,Palau,Cereal,Online,H,10/31/2012,620922648,11/27/2012,3665,205.70,117.11,753890.50,429208.15,324682.35
+Europe,Netherlands,Baby Food,Offline,H,3/16/2013,694771802,3/21/2013,7270,255.28,159.42,1855885.60,1158983.40,696902.20
+Sub-Saharan Africa,Burkina Faso,Cosmetics,Online,H,2/16/2011,980396163,2/24/2011,9866,437.20,263.33,4313415.20,2598013.78,1715401.42
+Asia,Kazakhstan,Cosmetics,Online,M,2/13/2016,335657060,2/15/2016,7238,437.20,263.33,3164453.60,1905982.54,1258471.06
+Europe,Bosnia and Herzegovina,Snacks,Offline,C,3/31/2012,388728320,5/10/2012,2203,152.58,97.44,336133.74,214660.32,121473.42
+Asia,Taiwan,Clothes,Online,L,12/13/2014,588096272,1/20/2015,9611,109.28,35.84,1050290.08,344458.24,705831.84
+Europe,Vatican City,Vegetables,Offline,L,3/18/2014,452559745,3/19/2014,1340,154.06,90.93,206440.40,121846.20,84594.20
+Europe,Portugal,Baby Food,Offline,M,3/27/2016,921230065,5/16/2016,1303,255.28,159.42,332629.84,207724.26,124905.58
+Middle East and North Africa,United Arab Emirates,Fruits,Offline,H,12/5/2016,303531062,1/14/2017,441,9.33,6.92,4114.53,3051.72,1062.81
+Asia,Turkmenistan,Fruits,Offline,C,4/6/2013,129199063,5/17/2013,1729,9.33,6.92,16131.57,11964.68,4166.89
+Sub-Saharan Africa,Cameroon,Cosmetics,Online,L,8/19/2014,198282897,8/30/2014,5170,437.20,263.33,2260324.00,1361416.10,898907.90
+Europe,Malta,Fruits,Online,M,5/9/2016,831143891,6/1/2016,2802,9.33,6.92,26142.66,19389.84,6752.82
+Middle East and North Africa,Saudi Arabia,Office Supplies,Offline,L,1/8/2011,618455874,2/13/2011,3692,651.21,524.96,2404267.32,1938152.32,466115.00
+Sub-Saharan Africa,Tanzania,Household,Online,L,1/4/2015,471205174,1/27/2015,8937,668.27,502.54,5972328.99,4491199.98,1481129.01
+Central America and the Caribbean,Costa Rica,Baby Food,Online,L,9/8/2011,470690619,10/24/2011,6669,255.28,159.42,1702462.32,1063171.98,639290.34
+Europe,Estonia,Cereal,Online,M,10/7/2015,318523538,11/5/2015,7048,205.70,117.11,1449773.60,825391.28,624382.32
+Central America and the Caribbean,Panama,Household,Offline,H,7/14/2016,686627757,8/18/2016,7267,668.27,502.54,4856318.09,3651958.18,1204359.91
+Sub-Saharan Africa,Mali,Office Supplies,Online,H,11/28/2011,967239606,1/9/2012,6548,651.21,524.96,4264123.08,3437438.08,826685.00
+Central America and the Caribbean,Dominican Republic,Beverages,Offline,H,3/24/2012,622907912,4/5/2012,1148,47.45,31.79,54472.60,36494.92,17977.68
+Central America and the Caribbean,Guatemala,Household,Offline,L,10/4/2013,536494004,10/29/2013,9353,668.27,502.54,6250329.31,4700256.62,1550072.69
+Sub-Saharan Africa,Sierra Leone,Cosmetics,Online,H,1/15/2010,761171710,3/3/2010,6479,437.20,263.33,2832618.80,1706115.07,1126503.73
+Europe,Armenia,Meat,Offline,H,10/26/2010,970427358,10/31/2010,9875,421.89,364.69,4166163.75,3601313.75,564850.00
+Asia,Vietnam,Fruits,Offline,L,7/23/2015,908059775,8/11/2015,3921,9.33,6.92,36582.93,27133.32,9449.61
+Central America and the Caribbean,Panama,Vegetables,Online,H,3/13/2017,838180291,4/2/2017,5029,154.06,90.93,774767.74,457286.97,317480.77
+Europe,Estonia,Cereal,Offline,H,7/18/2013,195212733,8/14/2013,6641,205.70,117.11,1366053.70,777727.51,588326.19
+Sub-Saharan Africa,Republic of the Congo,Vegetables,Online,C,1/13/2011,733893430,2/3/2011,4229,154.06,90.93,651519.74,384542.97,266976.77
+Central America and the Caribbean,Panama,Cosmetics,Online,L,5/20/2013,679271209,6/14/2013,300,437.20,263.33,131160.00,78999.00,52161.00
+Sub-Saharan Africa,Niger,Fruits,Online,L,3/23/2010,576707398,4/14/2010,9390,9.33,6.92,87608.70,64978.80,22629.90
+Europe,Poland,Household,Online,C,3/13/2011,141875827,4/16/2011,3065,668.27,502.54,2048247.55,1540285.10,507962.45
+Europe,Vatican City,Beverages,Offline,L,11/4/2011,510762822,12/22/2011,4924,47.45,31.79,233643.80,156533.96,77109.84
+Europe,Russia,Snacks,Offline,H,7/28/2012,189667212,9/3/2012,5598,152.58,97.44,854142.84,545469.12,308673.72
+Central America and the Caribbean,Grenada,Household,Offline,L,11/7/2014,905200326,12/15/2014,7747,668.27,502.54,5177087.69,3893177.38,1283910.31
+Central America and the Caribbean,Honduras,Fruits,Online,L,6/4/2017,854285991,6/30/2017,1064,9.33,6.92,9927.12,7362.88,2564.24
+Asia,Taiwan,Household,Offline,C,7/14/2012,554160535,8/25/2012,7272,668.27,502.54,4859659.44,3654470.88,1205188.56
+Asia,Laos,Meat,Offline,C,5/31/2012,592372786,6/11/2012,5126,421.89,364.69,2162608.14,1869400.94,293207.20
+Europe,Germany,Clothes,Online,C,3/21/2015,276784074,4/15/2015,5413,109.28,35.84,591532.64,194001.92,397530.72
+Middle East and North Africa,Syria,Snacks,Online,H,5/19/2016,785568225,5/30/2016,5950,152.58,97.44,907851.00,579768.00,328083.00
+Sub-Saharan Africa,Sudan,Household,Offline,C,5/26/2012,217211568,6/7/2012,6585,668.27,502.54,4400557.95,3309225.90,1091332.05
+Sub-Saharan Africa,Mozambique,Office Supplies,Online,C,3/13/2012,340512931,3/21/2012,4198,651.21,524.96,2733779.58,2203782.08,529997.50
+Europe,Spain,Clothes,Online,H,8/14/2010,744583642,9/26/2010,7701,109.28,35.84,841565.28,276003.84,565561.44
+Sub-Saharan Africa,Djibouti,Snacks,Offline,C,12/3/2014,188847529,1/19/2015,3035,152.58,97.44,463080.30,295730.40,167349.90
+Middle East and North Africa,Syria,Fruits,Offline,L,9/23/2010,653040921,10/9/2010,8175,9.33,6.92,76272.75,56571.00,19701.75
+Asia,Vietnam,Clothes,Offline,L,3/20/2011,587212646,4/24/2011,8126,109.28,35.84,888009.28,291235.84,596773.44
+Europe,Moldova ,Beverages,Online,H,6/26/2015,761724030,8/13/2015,9923,47.45,31.79,470846.35,315452.17,155394.18
+Europe,Slovakia,Office Supplies,Online,C,5/5/2012,217248904,6/15/2012,7633,651.21,524.96,4970685.93,4007019.68,963666.25
+Central America and the Caribbean,Grenada,Meat,Online,M,5/20/2014,314773595,6/1/2014,7357,421.89,364.69,3103844.73,2683024.33,420820.40
+Europe,Montenegro,Clothes,Online,L,4/29/2016,685596930,6/16/2016,2222,109.28,35.84,242820.16,79636.48,163183.68
+Central America and the Caribbean,Barbados,Office Supplies,Online,H,12/18/2013,581330239,2/5/2014,7391,651.21,524.96,4813093.11,3879979.36,933113.75
+Australia and Oceania,Australia,Household,Online,L,7/4/2015,223897349,7/4/2015,5056,668.27,502.54,3378773.12,2540842.24,837930.88
+Europe,Greece,Clothes,Online,H,1/31/2015,355534589,2/6/2015,9440,109.28,35.84,1031603.20,338329.60,693273.60
+Asia,Taiwan,Household,Offline,M,9/6/2011,888790786,9/12/2011,1799,668.27,502.54,1202217.73,904069.46,298148.27
+Europe,Belgium,Office Supplies,Offline,L,12/1/2012,456527268,12/2/2012,5419,651.21,524.96,3528906.99,2844758.24,684148.75
+Europe,Montenegro,Baby Food,Offline,C,2/15/2016,461917865,3/21/2016,616,255.28,159.42,157252.48,98202.72,59049.76
+Australia and Oceania,Fiji,Cosmetics,Online,L,2/12/2012,128448903,2/21/2012,9740,437.20,263.33,4258328.00,2564834.20,1693493.80
+Central America and the Caribbean,Belize,Clothes,Offline,M,9/16/2011,549919211,10/3/2011,2170,109.28,35.84,237137.60,77772.80,159364.80
+Asia,North Korea,Fruits,Online,L,8/22/2011,640440118,9/7/2011,9318,9.33,6.92,86936.94,64480.56,22456.38
+Europe,Montenegro,Personal Care,Offline,C,6/29/2013,284435451,6/29/2013,9625,81.73,56.67,786651.25,545448.75,241202.50
+Sub-Saharan Africa,Republic of the Congo,Baby Food,Online,C,5/6/2012,786641538,6/1/2012,3567,255.28,159.42,910583.76,568651.14,341932.62
+Middle East and North Africa,Pakistan,Cereal,Offline,H,9/14/2015,822107207,10/24/2015,8647,205.70,117.11,1778687.90,1012650.17,766037.73
+Middle East and North Africa,Oman,Cereal,Offline,H,12/26/2016,486193788,12/26/2016,4401,205.70,117.11,905285.70,515401.11,389884.59
+Europe,Finland,Meat,Online,H,6/21/2014,844575107,6/26/2014,7397,421.89,364.69,3120720.33,2697611.93,423108.40
+Asia,Taiwan,Office Supplies,Online,M,1/23/2015,783237493,2/7/2015,6234,651.21,524.96,4059643.14,3272600.64,787042.50
+Europe,Russia,Baby Food,Offline,L,5/19/2015,158479773,6/18/2015,6542,255.28,159.42,1670041.76,1042925.64,627116.12
+Middle East and North Africa,Morocco,Cosmetics,Online,H,2/8/2013,246913278,2/18/2013,5981,437.20,263.33,2614893.20,1574976.73,1039916.47
+North America,Mexico,Cosmetics,Online,H,10/10/2010,595461833,10/17/2010,9244,437.20,263.33,4041476.80,2434222.52,1607254.28
+North America,United States of America,Household,Offline,C,12/25/2011,371361768,1/30/2012,3054,668.27,502.54,2040896.58,1534757.16,506139.42
+Sub-Saharan Africa,Cote d'Ivoire,Personal Care,Offline,M,1/11/2010,612161910,2/27/2010,1168,81.73,56.67,95460.64,66190.56,29270.08
+Europe,Monaco,Household,Online,L,6/9/2014,175723588,6/14/2014,9370,668.27,502.54,6261689.90,4708799.80,1552890.10
+Europe,Netherlands,Household,Online,C,11/4/2016,690220630,11/19/2016,477,668.27,502.54,318764.79,239711.58,79053.21
+Europe,Macedonia,Beverages,Offline,M,7/17/2017,704139363,8/31/2017,9340,47.45,31.79,443183.00,296918.60,146264.40
+Europe,Italy,Fruits,Online,H,2/2/2014,636278617,3/22/2014,7837,9.33,6.92,73119.21,54232.04,18887.17
+Europe,Belarus,Snacks,Online,L,9/9/2012,525749719,10/22/2012,9880,152.58,97.44,1507490.40,962707.20,544783.20
+Europe,Romania,Fruits,Online,H,10/27/2016,481976497,12/3/2016,6411,9.33,6.92,59814.63,44364.12,15450.51
+Asia,Tajikistan,Meat,Offline,C,11/20/2015,234695279,1/9/2016,403,421.89,364.69,170021.67,146970.07,23051.60
+Sub-Saharan Africa,Sierra Leone,Cereal,Online,M,9/14/2011,483954894,10/24/2011,1863,205.70,117.11,383219.10,218175.93,165043.17
+Middle East and North Africa,Lebanon,Beverages,Online,H,9/25/2014,650116670,10/25/2014,2824,47.45,31.79,133998.80,89774.96,44223.84
+Asia,Bhutan,Cereal,Offline,M,7/28/2017,223854434,8/25/2017,2356,205.70,117.11,484629.20,275911.16,208718.04
+Asia,Maldives,Personal Care,Offline,M,11/16/2013,116154515,11/24/2013,1557,81.73,56.67,127253.61,88235.19,39018.42
+Central America and the Caribbean,Belize,Vegetables,Online,L,4/21/2017,408315742,5/23/2017,8556,154.06,90.93,1318137.36,777997.08,540140.28
+Central America and the Caribbean,Antigua and Barbuda ,Baby Food,Online,M,4/12/2012,801949441,5/7/2012,3516,255.28,159.42,897564.48,560520.72,337043.76
+Europe,San Marino,Meat,Online,H,10/22/2010,168979442,12/10/2010,3627,421.89,364.69,1530195.03,1322730.63,207464.40
+Sub-Saharan Africa,Burundi,Vegetables,Offline,H,10/21/2010,601642072,11/19/2010,8114,154.06,90.93,1250042.84,737806.02,512236.82
+Sub-Saharan Africa,Togo,Fruits,Offline,M,1/14/2015,662486159,2/15/2015,3231,9.33,6.92,30145.23,22358.52,7786.71
+Sub-Saharan Africa,Ghana,Meat,Online,H,3/13/2012,334373033,4/18/2012,7266,421.89,364.69,3065452.74,2649837.54,415615.20
+Europe,Albania,Household,Online,L,12/20/2010,570476520,12/24/2010,5534,668.27,502.54,3698206.18,2781056.36,917149.82
+Europe,Finland,Cereal,Online,H,7/13/2013,144282948,8/1/2013,5386,205.70,117.11,1107900.20,630754.46,477145.74
+Middle East and North Africa,Yemen,Baby Food,Offline,C,10/8/2011,599591147,11/25/2011,1200,255.28,159.42,306336.00,191304.00,115032.00
+Middle East and North Africa,Saudi Arabia,Meat,Offline,L,10/9/2013,400512444,10/29/2013,9387,421.89,364.69,3960281.43,3423345.03,536936.40
+Sub-Saharan Africa,Mauritania,Snacks,Online,H,5/5/2017,781470668,5/10/2017,3391,152.58,97.44,517398.78,330419.04,186979.74
+Europe,Russia,Beverages,Online,M,10/10/2013,797202146,11/17/2013,8685,47.45,31.79,412103.25,276096.15,136007.10
+Asia,Maldives,Snacks,Online,M,5/10/2014,472755706,6/15/2014,7774,152.58,97.44,1186156.92,757498.56,428658.36
+Europe,Hungary,Fruits,Offline,C,4/17/2016,353492677,5/23/2016,5193,9.33,6.92,48450.69,35935.56,12515.13
+Europe,Slovenia,Cosmetics,Offline,M,1/28/2014,155086886,2/5/2014,2511,437.20,263.33,1097809.20,661221.63,436587.57
+Europe,Russia,Cosmetics,Online,L,10/29/2010,113524663,12/9/2010,3325,437.20,263.33,1453690.00,875572.25,578117.75
+Sub-Saharan Africa,Equatorial Guinea,Beverages,Online,C,7/10/2014,535104835,7/15/2014,8267,47.45,31.79,392269.15,262807.93,129461.22
+Central America and the Caribbean,Dominica,Baby Food,Online,C,6/26/2011,446438729,8/6/2011,9996,255.28,159.42,2551778.88,1593562.32,958216.56
+Sub-Saharan Africa,Cote d'Ivoire,Beverages,Online,L,8/9/2015,744450175,8/30/2015,8205,47.45,31.79,389327.25,260836.95,128490.30
+Sub-Saharan Africa,Gabon,Beverages,Offline,H,7/20/2011,146375501,8/26/2011,4618,47.45,31.79,219124.10,146806.22,72317.88
+Central America and the Caribbean,Saint Lucia,Personal Care,Offline,C,7/21/2011,139763534,8/3/2011,7990,81.73,56.67,653022.70,452793.30,200229.40
+Europe,Andorra,Beverages,Offline,L,10/9/2013,932475602,11/21/2013,9107,47.45,31.79,432127.15,289511.53,142615.62
+Sub-Saharan Africa,Zimbabwe,Fruits,Online,L,8/22/2013,102685534,8/23/2013,5786,9.33,6.92,53983.38,40039.12,13944.26
+Sub-Saharan Africa,Republic of the Congo,Meat,Offline,H,3/25/2015,248879659,4/28/2015,7877,421.89,364.69,3323227.53,2872663.13,450564.40
+Middle East and North Africa,Oman,Beverages,Offline,H,4/24/2012,439856803,5/12/2012,2257,47.45,31.79,107094.65,71750.03,35344.62
+Sub-Saharan Africa,Seychelles ,Fruits,Online,H,11/18/2014,264728295,1/7/2015,7840,9.33,6.92,73147.20,54252.80,18894.40
+Europe,Russia,Office Supplies,Offline,L,1/20/2015,282917964,1/27/2015,567,651.21,524.96,369236.07,297652.32,71583.75
+Sub-Saharan Africa,Ghana,Cosmetics,Offline,M,8/3/2013,674162137,9/12/2013,8413,437.20,263.33,3678163.60,2215395.29,1462768.31
+Sub-Saharan Africa,Senegal,Fruits,Online,H,2/4/2016,788509643,3/3/2016,6381,9.33,6.92,59534.73,44156.52,15378.21
+Sub-Saharan Africa,Equatorial Guinea,Cosmetics,Online,L,2/5/2014,496321809,2/23/2014,1507,437.20,263.33,658860.40,396838.31,262022.09
+Sub-Saharan Africa,Madagascar,Household,Online,M,7/23/2011,638272464,9/9/2011,7861,668.27,502.54,5253270.47,3950466.94,1302803.53
+Europe,Croatia,Baby Food,Offline,C,6/27/2013,775347936,7/8/2013,1539,255.28,159.42,392875.92,245347.38,147528.54
+Australia and Oceania,Palau,Household,Offline,H,8/11/2014,538847053,9/29/2014,5672,668.27,502.54,3790427.44,2850406.88,940020.56
+Europe,Bulgaria,Baby Food,Offline,C,9/18/2010,980381143,9/26/2010,5421,255.28,159.42,1383872.88,864215.82,519657.06
+Europe,Belarus,Cosmetics,Offline,M,1/6/2010,521874034,2/3/2010,2979,437.20,263.33,1302418.80,784460.07,517958.73
+Sub-Saharan Africa,Ghana,Vegetables,Offline,C,3/20/2014,805562055,3/28/2014,2568,154.06,90.93,395626.08,233508.24,162117.84
+Australia and Oceania,Nauru,Personal Care,Online,M,9/22/2014,843994033,11/2/2014,5445,81.73,56.67,445019.85,308568.15,136451.70
+Australia and Oceania,Tonga,Snacks,Online,C,8/5/2011,170031297,8/31/2011,4894,152.58,97.44,746726.52,476871.36,269855.16
+Europe,Iceland,Cosmetics,Online,M,4/16/2017,186847674,4/23/2017,1234,437.20,263.33,539504.80,324949.22,214555.58
+Europe,Vatican City,Fruits,Offline,H,1/24/2015,117929494,3/2/2015,6813,9.33,6.92,63565.29,47145.96,16419.33
+Middle East and North Africa,Qatar,Baby Food,Offline,M,9/24/2015,157075583,10/3/2015,1011,255.28,159.42,258088.08,161173.62,96914.46
+Middle East and North Africa,Iraq,Baby Food,Online,C,1/9/2016,118397271,2/8/2016,5238,255.28,159.42,1337156.64,835041.96,502114.68
+Europe,Netherlands,Beverages,Offline,M,7/11/2017,786318385,8/23/2017,7939,47.45,31.79,376705.55,252380.81,124324.74
+Asia,Bangladesh,Cosmetics,Offline,C,4/29/2015,765575253,5/4/2015,9585,437.20,263.33,4190562.00,2524018.05,1666543.95
+Middle East and North Africa,Kuwait,Vegetables,Offline,L,11/29/2016,531216704,12/13/2016,7682,154.06,90.93,1183488.92,698524.26,484964.66
+Europe,Austria,Household,Online,C,9/20/2015,178604066,10/18/2015,1767,668.27,502.54,1180833.09,887988.18,292844.91
+Sub-Saharan Africa,Zambia,Personal Care,Offline,M,1/6/2010,773411166,2/19/2010,8406,81.73,56.67,687022.38,476368.02,210654.36
+Central America and the Caribbean,El Salvador,Cosmetics,Online,H,4/13/2014,301624333,5/5/2014,6198,437.20,263.33,2709765.60,1632119.34,1077646.26
+Middle East and North Africa,United Arab Emirates,Household,Online,C,7/26/2017,419542396,8/8/2017,773,668.27,502.54,516572.71,388463.42,128109.29
+Sub-Saharan Africa,Cote d'Ivoire,Cereal,Offline,C,7/20/2017,603776681,8/17/2017,9792,205.70,117.11,2014214.40,1146741.12,867473.28
+Middle East and North Africa,Iraq,Office Supplies,Online,L,10/5/2016,401251018,10/22/2016,7948,651.21,524.96,5175817.08,4172382.08,1003435.00
+Sub-Saharan Africa,Democratic Republic of the Congo,Meat,Online,C,3/26/2011,779201734,5/10/2011,1963,421.89,364.69,828170.07,715886.47,112283.60
+Sub-Saharan Africa,Niger,Fruits,Offline,M,12/24/2016,975177657,1/5/2017,5594,9.33,6.92,52192.02,38710.48,13481.54
+Sub-Saharan Africa,Swaziland,Office Supplies,Online,H,3/24/2013,747040116,4/30/2013,4626,651.21,524.96,3012497.46,2428464.96,584032.50
+Central America and the Caribbean,Saint Vincent and the Grenadines,Personal Care,Online,H,5/5/2014,822962939,5/25/2014,1877,81.73,56.67,153407.21,106369.59,47037.62
+Sub-Saharan Africa,Kenya,Office Supplies,Online,M,1/13/2013,651432454,2/12/2013,2194,651.21,524.96,1428754.74,1151762.24,276992.50
+Europe,Bulgaria,Vegetables,Offline,C,6/11/2014,651247489,7/2/2014,7459,154.06,90.93,1149133.54,678246.87,470886.67
+Middle East and North Africa,Jordan,Beverages,Online,H,3/11/2017,861519372,3/24/2017,1582,47.45,31.79,75065.90,50291.78,24774.12
+Sub-Saharan Africa,Equatorial Guinea,Office Supplies,Offline,L,3/10/2017,491671931,3/21/2017,5505,651.21,524.96,3584911.05,2889904.80,695006.25
+Middle East and North Africa,Iran,Baby Food,Online,H,5/30/2011,171441495,7/6/2011,2203,255.28,159.42,562381.84,351202.26,211179.58
+Asia,Sri Lanka,Cosmetics,Online,L,10/25/2016,600876891,12/11/2016,1680,437.20,263.33,734496.00,442394.40,292101.60
+Asia,Indonesia,Clothes,Online,M,8/1/2013,300339448,8/15/2013,5972,109.28,35.84,652620.16,214036.48,438583.68
+Sub-Saharan Africa,Rwanda,Baby Food,Offline,M,1/8/2017,560502994,2/26/2017,4146,255.28,159.42,1058390.88,660955.32,397435.56
+Europe,Cyprus,Household,Online,L,3/20/2013,492353856,4/11/2013,7302,668.27,502.54,4879707.54,3669547.08,1210160.46
+Central America and the Caribbean,Nicaragua,Snacks,Offline,L,10/27/2015,177190864,12/14/2015,3569,152.58,97.44,544558.02,347763.36,196794.66
+Sub-Saharan Africa,Namibia,Fruits,Offline,L,11/3/2016,216625344,12/22/2016,3108,9.33,6.92,28997.64,21507.36,7490.28
+Europe,Ireland,Personal Care,Offline,M,2/16/2013,382581126,3/27/2013,3112,81.73,56.67,254343.76,176357.04,77986.72
+Central America and the Caribbean,Honduras,Meat,Online,L,3/4/2010,967294538,4/18/2010,2804,421.89,364.69,1182979.56,1022590.76,160388.80
+Europe,Andorra,Household,Online,C,9/29/2010,533314406,10/29/2010,8439,668.27,502.54,5639530.53,4240935.06,1398595.47
+Australia and Oceania,Solomon Islands,Meat,Online,C,2/9/2011,863502061,3/5/2011,8304,421.89,364.69,3503374.56,3028385.76,474988.80
+Sub-Saharan Africa,Eritrea,Office Supplies,Online,C,5/15/2012,211031329,6/25/2012,7715,651.21,524.96,5024085.15,4050066.40,974018.75
+Europe,Russia,Snacks,Online,M,9/18/2016,949388539,9/30/2016,4021,152.58,97.44,613524.18,391806.24,221717.94
+Europe,Portugal,Beverages,Offline,L,1/10/2016,122372519,1/13/2016,1603,47.45,31.79,76062.35,50959.37,25102.98
+Sub-Saharan Africa,Tanzania,Snacks,Offline,L,10/26/2010,694094598,12/13/2010,6871,152.58,97.44,1048377.18,669510.24,378866.94
+Europe,France,Clothes,Offline,M,1/16/2014,298978602,1/28/2014,3267,109.28,35.84,357017.76,117089.28,239928.48
+Europe,Belarus,Clothes,Offline,C,12/27/2016,691760861,1/28/2017,6266,109.28,35.84,684748.48,224573.44,460175.04
+Central America and the Caribbean,Dominica,Household,Online,M,10/21/2015,997490203,11/15/2015,8372,668.27,502.54,5594756.44,4207264.88,1387491.56
+Australia and Oceania,Samoa ,Office Supplies,Online,M,4/7/2015,861527955,5/4/2015,4122,651.21,524.96,2684287.62,2163885.12,520402.50
+Central America and the Caribbean,El Salvador,Snacks,Offline,M,6/6/2017,899547946,6/17/2017,5082,152.58,97.44,775411.56,495190.08,280221.48
+Europe,Serbia,Meat,Offline,H,4/14/2010,447536504,4/25/2010,4852,421.89,364.69,2047010.28,1769475.88,277534.40
+Asia,South Korea,Fruits,Online,C,12/11/2016,711792457,12/13/2016,4060,9.33,6.92,37879.80,28095.20,9784.60
+Central America and the Caribbean,Nicaragua,Office Supplies,Offline,M,2/29/2016,718927133,3/22/2016,5370,651.21,524.96,3496997.70,2819035.20,677962.50
+Sub-Saharan Africa,Tanzania,Clothes,Offline,L,4/3/2014,465864360,5/18/2014,8471,109.28,35.84,925710.88,303600.64,622110.24
+Europe,Poland,Vegetables,Offline,H,1/13/2011,469840466,1/22/2011,5090,154.06,90.93,784165.40,462833.70,321331.70
+Europe,Armenia,Snacks,Offline,M,3/2/2011,418404281,4/15/2011,3979,152.58,97.44,607115.82,387713.76,219402.06
+Middle East and North Africa,United Arab Emirates,Cosmetics,Offline,C,10/20/2012,519417130,11/27/2012,5926,437.20,263.33,2590847.20,1560493.58,1030353.62
+Central America and the Caribbean,Saint Vincent and the Grenadines,Clothes,Online,M,5/18/2011,151052844,6/7/2011,8748,109.28,35.84,955981.44,313528.32,642453.12
+Central America and the Caribbean,Guatemala,Meat,Offline,L,12/17/2010,111797749,1/19/2011,2293,421.89,364.69,967393.77,836234.17,131159.60
+Sub-Saharan Africa,Botswana,Personal Care,Online,M,11/25/2012,370450675,12/1/2012,3442,81.73,56.67,281314.66,195058.14,86256.52
+Europe,Austria,Snacks,Online,M,1/18/2012,516122949,2/21/2012,1105,152.58,97.44,168600.90,107671.20,60929.70
+Europe,Albania,Cosmetics,Offline,L,8/29/2015,208238399,10/15/2015,1224,437.20,263.33,535132.80,322315.92,212816.88
+Europe,Georgia,Fruits,Online,M,12/2/2016,526533353,1/12/2017,1775,9.33,6.92,16560.75,12283.00,4277.75
+Central America and the Caribbean,Nicaragua,Beverages,Online,H,11/15/2013,821056640,1/3/2014,7760,47.45,31.79,368212.00,246690.40,121521.60
+Asia,Singapore,Personal Care,Offline,M,3/9/2013,962169587,3/26/2013,6217,81.73,56.67,508115.41,352317.39,155798.02
+Middle East and North Africa,Bahrain,Cereal,Online,H,3/31/2011,890546023,5/2/2011,1213,205.70,117.11,249514.10,142054.43,107459.67
+Asia,Myanmar,Household,Offline,L,1/23/2013,167172276,3/4/2013,8846,668.27,502.54,5911516.42,4445468.84,1466047.58
+Central America and the Caribbean,Antigua and Barbuda ,Snacks,Online,H,5/13/2013,223347175,6/10/2013,2247,152.58,97.44,342847.26,218947.68,123899.58
+Asia,Taiwan,Clothes,Online,L,7/7/2015,310682046,8/23/2015,6576,109.28,35.84,718625.28,235683.84,482941.44
+Sub-Saharan Africa,Djibouti,Snacks,Offline,M,7/28/2012,651100718,8/30/2012,4026,152.58,97.44,614287.08,392293.44,221993.64
+Middle East and North Africa,Saudi Arabia,Baby Food,Online,C,10/27/2013,186839520,12/4/2013,8821,255.28,159.42,2251824.88,1406243.82,845581.06
+Sub-Saharan Africa,Seychelles ,Household,Online,L,9/2/2010,630447280,9/4/2010,2215,668.27,502.54,1480218.05,1113126.10,367091.95
+Sub-Saharan Africa,Equatorial Guinea,Office Supplies,Offline,M,9/27/2010,614785325,10/26/2010,7494,651.21,524.96,4880167.74,3934050.24,946117.50
+Europe,Iceland,Meat,Online,H,5/11/2011,643027484,5/18/2011,4977,421.89,364.69,2099746.53,1815062.13,284684.40
+Middle East and North Africa,Israel,Personal Care,Offline,H,11/30/2010,838660085,1/13/2011,7011,81.73,56.67,573009.03,397313.37,175695.66
+Australia and Oceania,Nauru,Personal Care,Online,L,8/25/2012,495481956,9/24/2012,2976,81.73,56.67,243228.48,168649.92,74578.56
+Europe,Hungary,Beverages,Online,L,4/21/2013,327604424,5/13/2013,4284,47.45,31.79,203275.80,136188.36,67087.44
+Europe,Ukraine,Meat,Offline,M,6/18/2014,219451320,7/2/2014,9377,421.89,364.69,3956062.53,3419698.13,536364.40
+Europe,France,Personal Care,Online,H,3/15/2011,575758969,3/29/2011,8729,81.73,56.67,713421.17,494672.43,218748.74
+Middle East and North Africa,Saudi Arabia,Snacks,Online,H,1/9/2011,971576201,1/26/2011,9843,152.58,97.44,1501844.94,959101.92,542743.02
+Europe,Malta,Office Supplies,Offline,H,12/4/2014,602264344,1/7/2015,2258,651.21,524.96,1470432.18,1185359.68,285072.50
+North America,United States of America,Snacks,Online,H,8/9/2013,533497226,8/19/2013,2539,152.58,97.44,387400.62,247400.16,140000.46
+Asia,Uzbekistan,Cosmetics,Online,M,12/23/2013,551261174,12/30/2013,9287,437.20,263.33,4060276.40,2445545.71,1614730.69
+Asia,Tajikistan,Personal Care,Offline,M,8/27/2012,511855018,9/20/2012,8129,81.73,56.67,664383.17,460670.43,203712.74
+Europe,Belgium,Cereal,Offline,H,11/22/2014,791890084,12/15/2014,6728,205.70,117.11,1383949.60,787916.08,596033.52
+Sub-Saharan Africa,South Sudan,Snacks,Offline,L,8/26/2015,938290202,8/29/2015,9777,152.58,97.44,1491774.66,952670.88,539103.78
+Australia and Oceania,Nauru,Meat,Offline,M,12/15/2010,118291699,1/15/2011,3997,421.89,364.69,1686294.33,1457665.93,228628.40
+Asia,Bangladesh,Cosmetics,Online,M,10/30/2016,269443404,11/5/2016,3146,437.20,263.33,1375431.20,828436.18,546995.02
+Europe,Liechtenstein,Fruits,Offline,C,6/29/2012,249606645,8/14/2012,3008,9.33,6.92,28064.64,20815.36,7249.28
+Australia and Oceania,Australia,Clothes,Offline,L,4/24/2012,786955249,4/26/2012,6401,109.28,35.84,699501.28,229411.84,470089.44
+Middle East and North Africa,Lebanon,Baby Food,Online,L,7/29/2016,429975545,9/11/2016,8174,255.28,159.42,2086658.72,1303099.08,783559.64
+Europe,Belgium,Household,Offline,C,4/8/2015,497466361,5/1/2015,206,668.27,502.54,137663.62,103523.24,34140.38
+Middle East and North Africa,Afghanistan,Cereal,Online,C,8/5/2014,128539025,8/16/2014,6409,205.70,117.11,1318331.30,750557.99,567773.31
+Asia,Malaysia,Clothes,Online,M,6/16/2010,332617366,6/30/2010,7725,109.28,35.84,844188.00,276864.00,567324.00
+Europe,Belarus,Clothes,Offline,L,12/23/2014,839437711,12/24/2014,7128,109.28,35.84,778947.84,255467.52,523480.32
+Europe,Luxembourg,Office Supplies,Online,H,10/31/2014,549048888,12/2/2014,4622,651.21,524.96,3009892.62,2426365.12,583527.50
+Australia and Oceania,Fiji,Clothes,Online,L,11/27/2012,681812226,12/24/2012,2244,109.28,35.84,245224.32,80424.96,164799.36
+Sub-Saharan Africa,Ethiopia,Baby Food,Offline,C,12/11/2016,728401553,1/27/2017,9061,255.28,159.42,2313092.08,1444504.62,868587.46
+Central America and the Caribbean,Nicaragua,Beverages,Offline,H,1/10/2013,699803197,1/24/2013,6172,47.45,31.79,292861.40,196207.88,96653.52
+Sub-Saharan Africa,Ethiopia,Personal Care,Online,H,10/24/2014,677315986,12/4/2014,1706,81.73,56.67,139431.38,96679.02,42752.36
+Middle East and North Africa,Egypt,Personal Care,Offline,H,4/20/2014,362551248,4/20/2014,5826,81.73,56.67,476158.98,330159.42,145999.56
+Europe,Finland,Snacks,Online,H,12/3/2015,427432811,12/11/2015,5722,152.58,97.44,873062.76,557551.68,315511.08
+Central America and the Caribbean,Haiti,Snacks,Online,M,1/6/2010,264197003,2/14/2010,619,152.58,97.44,94447.02,60315.36,34131.66
+Sub-Saharan Africa,Comoros,Vegetables,Online,C,7/2/2014,235392653,7/8/2014,6772,154.06,90.93,1043294.32,615777.96,427516.36
+Middle East and North Africa,United Arab Emirates,Household,Offline,H,6/28/2010,323881089,8/8/2010,2467,668.27,502.54,1648622.09,1239766.18,408855.91
+Europe,Andorra,Office Supplies,Online,H,3/31/2014,582836139,4/5/2014,3020,651.21,524.96,1966654.20,1585379.20,381275.00
+Sub-Saharan Africa,Angola,Household,Online,H,10/19/2012,685744130,11/20/2012,5782,668.27,502.54,3863937.14,2905686.28,958250.86
+Sub-Saharan Africa,Comoros,Baby Food,Offline,M,3/7/2013,376403892,4/14/2013,5131,255.28,159.42,1309841.68,817984.02,491857.66
+Central America and the Caribbean,Haiti,Vegetables,Online,C,11/29/2015,818926751,12/2/2015,7479,154.06,90.93,1152214.74,680065.47,472149.27
+Australia and Oceania,Federated States of Micronesia,Beverages,Online,C,3/20/2011,547736537,5/7/2011,6268,47.45,31.79,297416.60,199259.72,98156.88
+Middle East and North Africa,Iran,Household,Offline,C,2/7/2013,417569577,2/10/2013,6972,668.27,502.54,4659178.44,3503708.88,1155469.56
+Middle East and North Africa,Algeria,Clothes,Online,C,2/24/2010,453474700,4/8/2010,2096,109.28,35.84,229050.88,75120.64,153930.24
+Central America and the Caribbean,Saint Kitts and Nevis ,Clothes,Offline,H,9/15/2014,300813233,11/2/2014,6175,109.28,35.84,674804.00,221312.00,453492.00
+Sub-Saharan Africa,Ghana,Household,Online,L,9/8/2013,575259006,10/20/2013,778,668.27,502.54,519914.06,390976.12,128937.94
+Central America and the Caribbean,The Bahamas,Cereal,Online,C,3/20/2010,612798345,3/30/2010,9503,205.70,117.11,1954767.10,1112896.33,841870.77
+Europe,Netherlands,Clothes,Offline,H,4/8/2012,719730079,5/6/2012,2979,109.28,35.84,325545.12,106767.36,218777.76
+Sub-Saharan Africa,Djibouti,Cereal,Offline,M,9/28/2013,822665536,10/29/2013,3868,205.70,117.11,795647.60,452981.48,342666.12
+Asia,Thailand,Clothes,Offline,H,5/19/2013,918528544,7/4/2013,1863,109.28,35.84,203588.64,66769.92,136818.72
+Middle East and North Africa,Oman,Baby Food,Offline,H,12/30/2010,624555432,1/9/2011,8686,255.28,159.42,2217362.08,1384722.12,832639.96
+Australia and Oceania,Tonga,Fruits,Online,H,4/3/2011,528295028,4/4/2011,3093,9.33,6.92,28857.69,21403.56,7454.13
+Europe,Bulgaria,Household,Online,H,4/21/2012,837608659,5/2/2012,5871,668.27,502.54,3923413.17,2950412.34,973000.83
+Europe,Norway,Meat,Online,L,2/26/2017,930670154,3/15/2017,4835,421.89,364.69,2039838.15,1763276.15,276562.00
+Central America and the Caribbean,Barbados,Clothes,Online,L,9/26/2014,705965840,10/6/2014,9835,109.28,35.84,1074768.80,352486.40,722282.40
+Middle East and North Africa,Jordan,Meat,Offline,H,12/18/2013,132294547,1/10/2014,7751,421.89,364.69,3270069.39,2826712.19,443357.20
+Sub-Saharan Africa,Guinea-Bissau,Household,Offline,C,4/4/2017,598767602,5/21/2017,7494,668.27,502.54,5008015.38,3766034.76,1241980.62
+Asia,Uzbekistan,Cereal,Offline,C,9/25/2016,864808833,10/9/2016,5007,205.70,117.11,1029939.90,586369.77,443570.13
+Australia and Oceania,Vanuatu,Meat,Offline,L,2/25/2013,210154569,3/17/2013,8262,421.89,364.69,3485655.18,3013068.78,472586.40
+Europe,Portugal,Clothes,Offline,H,2/15/2012,684853637,4/3/2012,2265,109.28,35.84,247519.20,81177.60,166341.60
+North America,Canada,Fruits,Offline,M,9/30/2012,359267365,11/14/2012,4052,9.33,6.92,37805.16,28039.84,9765.32
+Central America and the Caribbean,Dominican Republic,Clothes,Online,M,5/28/2011,974069583,7/12/2011,7690,109.28,35.84,840363.20,275609.60,564753.60
+Australia and Oceania,East Timor,Meat,Offline,C,2/10/2013,290246617,3/28/2013,9279,421.89,364.69,3914717.31,3383958.51,530758.80
+Middle East and North Africa,Libya,Cereal,Online,H,8/4/2012,639097297,9/8/2012,1947,205.70,117.11,400497.90,228013.17,172484.73
+Australia and Oceania,Tuvalu,Household,Online,C,3/18/2013,372232949,3/30/2013,856,668.27,502.54,572039.12,430174.24,141864.88
+Middle East and North Africa,Qatar,Household,Online,L,8/8/2015,611577403,8/23/2015,8199,668.27,502.54,5479145.73,4120325.46,1358820.27
+Sub-Saharan Africa,Ghana,Baby Food,Offline,M,11/25/2013,299366986,1/10/2014,8199,255.28,159.42,2093040.72,1307084.58,785956.14
+Sub-Saharan Africa,Namibia,Snacks,Online,H,8/30/2014,248150527,10/12/2014,2110,152.58,97.44,321943.80,205598.40,116345.40
+Central America and the Caribbean,Antigua and Barbuda ,Fruits,Online,H,5/12/2010,890789353,5/21/2010,3220,9.33,6.92,30042.60,22282.40,7760.20
+Europe,Montenegro,Cereal,Offline,H,6/20/2013,930457293,7/26/2013,1845,205.70,117.11,379516.50,216067.95,163448.55
+Sub-Saharan Africa,Uganda,Cereal,Online,M,10/22/2014,490640676,11/19/2014,334,205.70,117.11,68703.80,39114.74,29589.06
+Sub-Saharan Africa,Equatorial Guinea,Fruits,Online,H,1/17/2010,665138328,2/14/2010,8067,9.33,6.92,75265.11,55823.64,19441.47
+Central America and the Caribbean,Jamaica,Baby Food,Online,M,1/23/2011,368061578,3/6/2011,6455,255.28,159.42,1647832.40,1029056.10,618776.30
+Central America and the Caribbean,Saint Lucia,Cosmetics,Offline,M,11/15/2011,383834254,11/28/2011,3940,437.20,263.33,1722568.00,1037520.20,685047.80
+Sub-Saharan Africa,Ghana,Cosmetics,Offline,C,2/15/2015,217192685,2/15/2015,997,437.20,263.33,435888.40,262540.01,173348.39
+Europe,Estonia,Office Supplies,Offline,H,3/7/2013,343185698,4/25/2013,5129,651.21,524.96,3340056.09,2692519.84,647536.25
+Central America and the Caribbean,Honduras,Vegetables,Online,L,8/9/2014,857174623,8/27/2014,5874,154.06,90.93,904948.44,534122.82,370825.62
+Middle East and North Africa,Syria,Fruits,Offline,C,2/5/2010,124833285,2/10/2010,9798,9.33,6.92,91415.34,67802.16,23613.18
+Sub-Saharan Africa,Eritrea,Fruits,Offline,L,2/22/2014,632148015,3/14/2014,5500,9.33,6.92,51315.00,38060.00,13255.00
+Asia,Indonesia,Household,Online,M,10/15/2015,435417640,10/28/2015,8610,668.27,502.54,5753804.70,4326869.40,1426935.30
+Australia and Oceania,Kiribati,Office Supplies,Offline,L,9/15/2012,811253488,10/31/2012,6790,651.21,524.96,4421715.90,3564478.40,857237.50
+Central America and the Caribbean,Saint Kitts and Nevis ,Meat,Online,L,1/5/2015,406579387,1/24/2015,4730,421.89,364.69,1995539.70,1724983.70,270556.00
+Middle East and North Africa,Tunisia ,Clothes,Online,H,2/26/2011,188631665,4/13/2011,9156,109.28,35.84,1000567.68,328151.04,672416.64
+Middle East and North Africa,Somalia,Cosmetics,Online,C,2/25/2017,294959151,3/26/2017,3822,437.20,263.33,1670978.40,1006447.26,664531.14
+Australia and Oceania,Solomon Islands,Vegetables,Online,C,3/26/2012,483423173,4/29/2012,4514,154.06,90.93,695426.84,410458.02,284968.82
+Middle East and North Africa,Tunisia ,Cereal,Offline,M,10/4/2010,582197558,10/17/2010,4050,205.70,117.11,833085.00,474295.50,358789.50
+Sub-Saharan Africa,Cameroon,Snacks,Online,H,1/6/2013,939768636,2/10/2013,7278,152.58,97.44,1110477.24,709168.32,401308.92
+Europe,France,Cosmetics,Online,M,7/26/2016,174935233,7/29/2016,6078,437.20,263.33,2657301.60,1600519.74,1056781.86
+Middle East and North Africa,Egypt,Meat,Online,H,6/20/2012,126808679,7/29/2012,4361,421.89,364.69,1839862.29,1590413.09,249449.20
+Europe,Romania,Fruits,Offline,M,10/9/2011,904812800,11/24/2011,3069,9.33,6.92,28633.77,21237.48,7396.29
+Europe,Romania,Personal Care,Online,L,6/13/2011,438683927,7/29/2011,5177,81.73,56.67,423116.21,293380.59,129735.62
+Sub-Saharan Africa,Kenya,Snacks,Online,H,4/27/2013,328470885,6/12/2013,689,152.58,97.44,105127.62,67136.16,37991.46
+Sub-Saharan Africa,Tanzania,Baby Food,Offline,M,9/15/2012,894535005,10/3/2012,1641,255.28,159.42,418914.48,261608.22,157306.26
+Sub-Saharan Africa,Comoros,Fruits,Online,L,5/5/2017,727550113,5/29/2017,7101,9.33,6.92,66252.33,49138.92,17113.41
+Australia and Oceania,Vanuatu,Office Supplies,Online,C,4/25/2013,738502538,5/29/2013,8167,651.21,524.96,5318432.07,4287348.32,1031083.75
+Australia and Oceania,Fiji,Office Supplies,Offline,C,4/12/2014,108691108,4/24/2014,2969,651.21,524.96,1933442.49,1558606.24,374836.25
+Central America and the Caribbean,Costa Rica,Cosmetics,Online,C,3/27/2012,339727151,4/27/2012,1668,437.20,263.33,729249.60,439234.44,290015.16
+Europe,Iceland,Fruits,Offline,H,8/13/2011,303534495,8/18/2011,1457,9.33,6.92,13593.81,10082.44,3511.37
+Sub-Saharan Africa,Burkina Faso,Office Supplies,Online,L,5/1/2010,292349469,5/11/2010,1559,651.21,524.96,1015236.39,818412.64,196823.75
+Middle East and North Africa,Morocco,Cosmetics,Offline,H,2/26/2011,668720901,3/9/2011,8230,437.20,263.33,3598156.00,2167205.90,1430950.10
+Central America and the Caribbean,Guatemala,Cereal,Offline,L,5/7/2010,515510118,6/11/2010,9754,205.70,117.11,2006397.80,1142290.94,864106.86
+Sub-Saharan Africa,South Africa,Meat,Offline,C,8/6/2016,785890948,9/24/2016,1451,421.89,364.69,612162.39,529165.19,82997.20
+Sub-Saharan Africa,Zimbabwe,Snacks,Online,C,12/6/2016,253349721,1/6/2017,667,152.58,97.44,101770.86,64992.48,36778.38
+Asia,India,Fruits,Offline,L,10/24/2010,461685264,10/24/2010,1784,9.33,6.92,16644.72,12345.28,4299.44
+Europe,Liechtenstein,Baby Food,Online,M,11/26/2013,775008904,1/2/2014,1212,255.28,159.42,309399.36,193217.04,116182.32
+Central America and the Caribbean,Guatemala,Fruits,Online,C,6/7/2016,627744472,6/18/2016,2394,9.33,6.92,22336.02,16566.48,5769.54
+Asia,Taiwan,Beverages,Online,H,4/7/2017,874628293,4/11/2017,803,47.45,31.79,38102.35,25527.37,12574.98
+Sub-Saharan Africa,Lesotho,Baby Food,Online,M,7/17/2012,640709197,8/24/2012,8944,255.28,159.42,2283224.32,1425852.48,857371.84
+Europe,Greece,Fruits,Online,M,8/16/2014,471348512,10/1/2014,1354,9.33,6.92,12632.82,9369.68,3263.14
+Australia and Oceania,Tuvalu,Household,Offline,H,6/1/2010,982220065,6/1/2010,9599,668.27,502.54,6414723.73,4823881.46,1590842.27
+Sub-Saharan Africa,Cape Verde,Snacks,Offline,C,8/14/2010,609310185,9/21/2010,7279,152.58,97.44,1110629.82,709265.76,401364.06
+Sub-Saharan Africa,Tanzania,Office Supplies,Offline,L,8/21/2015,558917701,9/21/2015,5023,651.21,524.96,3271027.83,2636874.08,634153.75
+Sub-Saharan Africa,Togo,Beverages,Online,M,10/17/2011,757653939,11/4/2011,5492,47.45,31.79,260595.40,174590.68,86004.72
+Europe,Malta,Baby Food,Offline,C,12/23/2012,302442729,1/17/2013,8379,255.28,159.42,2138991.12,1335780.18,803210.94
+Asia,Kazakhstan,Snacks,Online,L,6/6/2011,610520398,7/15/2011,5408,152.58,97.44,825152.64,526955.52,298197.12
+Sub-Saharan Africa,Gabon,Beverages,Online,H,10/24/2011,469435775,12/2/2011,5333,47.45,31.79,253050.85,169536.07,83514.78
+Europe,Macedonia,Vegetables,Online,C,4/12/2012,987050187,4/25/2012,8940,154.06,90.93,1377296.40,812914.20,564382.20
+Europe,Bulgaria,Office Supplies,Online,H,11/2/2015,641537463,12/14/2015,4047,651.21,524.96,2635446.87,2124513.12,510933.75
+Central America and the Caribbean,Cuba,Cosmetics,Offline,C,5/31/2011,231383931,6/16/2011,502,437.20,263.33,219474.40,132191.66,87282.74
+Sub-Saharan Africa,Guinea-Bissau,Personal Care,Online,H,7/2/2015,625388419,7/19/2015,5186,81.73,56.67,423851.78,293890.62,129961.16
+Europe,Czech Republic,Household,Offline,L,5/15/2015,512662255,6/22/2015,7009,668.27,502.54,4683904.43,3522302.86,1161601.57
+Asia,Laos,Fruits,Online,L,9/17/2010,452629268,9/26/2010,1914,9.33,6.92,17857.62,13244.88,4612.74
+Sub-Saharan Africa,Chad,Baby Food,Online,H,6/7/2017,625025784,7/4/2017,7874,255.28,159.42,2010074.72,1255273.08,754801.64
+Europe,Germany,Clothes,Offline,L,11/7/2010,379900634,12/2/2010,9895,109.28,35.84,1081325.60,354636.80,726688.80
+Asia,China,Cereal,Online,C,10/12/2012,487615144,12/1/2012,5012,205.70,117.11,1030968.40,586955.32,444013.08
+Asia,Myanmar,Personal Care,Offline,L,1/15/2012,888843142,2/19/2012,7293,81.73,56.67,596056.89,413294.31,182762.58
+Sub-Saharan Africa,Namibia,Personal Care,Offline,H,8/20/2013,244570958,9/19/2013,2836,81.73,56.67,231786.28,160716.12,71070.16
+Australia and Oceania,Australia,Personal Care,Offline,L,4/17/2012,886097419,5/8/2012,4772,81.73,56.67,390015.56,270429.24,119586.32
+Australia and Oceania,Australia,Snacks,Offline,M,5/19/2011,265033853,5/26/2011,8261,152.58,97.44,1260463.38,804951.84,455511.54
+Sub-Saharan Africa,Lesotho,Household,Online,M,7/13/2011,403304088,8/9/2011,5497,668.27,502.54,3673480.19,2762462.38,911017.81
+Europe,Georgia,Cereal,Online,H,6/14/2014,243144452,7/16/2014,701,205.70,117.11,144195.70,82094.11,62101.59
+Sub-Saharan Africa,Seychelles ,Vegetables,Online,H,7/21/2011,597103774,8/1/2011,5131,154.06,90.93,790481.86,466561.83,323920.03
+Europe,Malta,Cosmetics,Online,H,6/15/2010,998043382,7/3/2010,2070,437.20,263.33,905004.00,545093.10,359910.90
+Central America and the Caribbean,Belize,Clothes,Offline,M,1/21/2016,149137103,3/4/2016,1838,109.28,35.84,200856.64,65873.92,134982.72
+Sub-Saharan Africa,Cameroon,Snacks,Offline,C,8/9/2011,873871266,9/19/2011,6782,152.58,97.44,1034797.56,660838.08,373959.48
+Central America and the Caribbean,Dominica,Cosmetics,Offline,C,6/27/2015,666044700,7/1/2015,6282,437.20,263.33,2746490.40,1654239.06,1092251.34
+Australia and Oceania,Marshall Islands,Vegetables,Online,L,11/12/2016,239768731,12/22/2016,1751,154.06,90.93,269759.06,159218.43,110540.63
+Sub-Saharan Africa,Niger,Cereal,Offline,C,4/29/2017,379467189,6/9/2017,1629,205.70,117.11,335085.30,190772.19,144313.11
+Middle East and North Africa,Somalia,Beverages,Online,L,12/14/2011,589876401,12/29/2011,6390,47.45,31.79,303205.50,203138.10,100067.40
+Europe,Spain,Fruits,Offline,L,10/24/2015,446045196,11/1/2015,3540,9.33,6.92,33028.20,24496.80,8531.40
+Sub-Saharan Africa,South Sudan,Meat,Offline,M,10/4/2014,943334901,11/3/2014,2615,421.89,364.69,1103242.35,953664.35,149578.00
+Asia,Bangladesh,Beverages,Offline,H,8/21/2014,447419345,9/18/2014,182,47.45,31.79,8635.90,5785.78,2850.12
+Europe,Lithuania,Household,Offline,M,10/14/2014,544284856,10/25/2014,4839,668.27,502.54,3233758.53,2431791.06,801967.47
+Asia,Brunei,Baby Food,Online,L,10/27/2011,190230262,11/27/2011,2217,255.28,159.42,565955.76,353434.14,212521.62
+Central America and the Caribbean,Panama,Snacks,Online,L,12/30/2010,661866891,2/16/2011,9976,152.58,97.44,1522138.08,972061.44,550076.64
+Europe,Romania,Vegetables,Offline,H,11/6/2014,606118571,11/18/2014,2809,154.06,90.93,432754.54,255422.37,177332.17
+Central America and the Caribbean,Guatemala,Cosmetics,Offline,H,10/28/2011,990221631,12/6/2011,7440,437.20,263.33,3252768.00,1959175.20,1293592.80
+North America,Canada,Office Supplies,Online,L,5/17/2010,151724898,6/16/2010,7624,651.21,524.96,4964825.04,4002295.04,962530.00
+Central America and the Caribbean,Jamaica,Personal Care,Offline,M,6/11/2012,548489701,7/31/2012,9146,81.73,56.67,747502.58,518303.82,229198.76
+Central America and the Caribbean,Saint Kitts and Nevis ,Personal Care,Online,L,4/1/2017,208689868,4/3/2017,4824,81.73,56.67,394265.52,273376.08,120889.44
+Middle East and North Africa,Somalia,Clothes,Online,H,7/2/2017,380811727,7/6/2017,9507,109.28,35.84,1038924.96,340730.88,698194.08
+Europe,Portugal,Snacks,Online,C,10/7/2010,583654105,10/19/2010,5075,152.58,97.44,774343.50,494508.00,279835.50
+Middle East and North Africa,Tunisia ,Cereal,Online,L,10/25/2010,856328332,12/8/2010,5438,205.70,117.11,1118596.60,636844.18,481752.42
+Australia and Oceania,East Timor,Baby Food,Offline,C,7/23/2013,408258235,7/27/2013,1539,255.28,159.42,392875.92,245347.38,147528.54
+Sub-Saharan Africa,Comoros,Household,Online,C,12/19/2015,769180142,1/4/2016,6352,668.27,502.54,4244851.04,3192134.08,1052716.96
+Middle East and North Africa,Libya,Meat,Online,H,4/13/2012,839142882,5/20/2012,9881,421.89,364.69,4168695.09,3603501.89,565193.20
+Australia and Oceania,Australia,Office Supplies,Online,L,12/23/2012,938507783,1/30/2013,4164,651.21,524.96,2711638.44,2185933.44,525705.00
+Sub-Saharan Africa,Djibouti,Household,Offline,L,8/22/2010,557948672,9/19/2010,8266,668.27,502.54,5523919.82,4153995.64,1369924.18
+Europe,Moldova ,Baby Food,Online,C,1/27/2014,608451879,3/1/2014,3287,255.28,159.42,839105.36,524013.54,315091.82
+Middle East and North Africa,Iran,Meat,Offline,H,3/20/2014,271316230,3/31/2014,7356,421.89,364.69,3103422.84,2682659.64,420763.20
+Asia,Japan,Snacks,Offline,H,8/23/2010,148153054,10/2/2010,636,152.58,97.44,97040.88,61971.84,35069.04
+Europe,Romania,Beverages,Online,M,5/10/2015,910886180,6/10/2015,317,47.45,31.79,15041.65,10077.43,4964.22
+Sub-Saharan Africa,Madagascar,Cereal,Online,C,2/13/2011,151751935,2/23/2011,5625,205.70,117.11,1157062.50,658743.75,498318.75
+Sub-Saharan Africa,Guinea-Bissau,Fruits,Offline,L,11/9/2015,933299148,12/23/2015,2813,9.33,6.92,26245.29,19465.96,6779.33
+Asia,Brunei,Personal Care,Offline,M,9/5/2010,538389146,9/12/2010,167,81.73,56.67,13648.91,9463.89,4185.02
+Europe,Vatican City,Snacks,Offline,L,11/5/2011,820195758,11/24/2011,3006,152.58,97.44,458655.48,292904.64,165750.84
+Middle East and North Africa,Qatar,Cereal,Online,H,12/18/2013,552205312,12/25/2013,8678,205.70,117.11,1785064.60,1016280.58,768784.02
+Europe,Lithuania,Clothes,Online,H,6/28/2016,378216636,8/8/2016,1562,109.28,35.84,170695.36,55982.08,114713.28
+Middle East and North Africa,Tunisia ,Beverages,Online,H,5/15/2012,562341058,7/4/2012,8070,47.45,31.79,382921.50,256545.30,126376.20
+Europe,Denmark,Clothes,Online,C,7/21/2014,539002406,7/23/2014,1645,109.28,35.84,179765.60,58956.80,120808.80
+Asia,Tajikistan,Fruits,Online,L,4/30/2014,262937009,6/2/2014,7759,9.33,6.92,72391.47,53692.28,18699.19
+Europe,Serbia,Office Supplies,Online,M,5/31/2015,659193694,6/11/2015,8918,651.21,524.96,5807490.78,4681593.28,1125897.50
+Middle East and North Africa,Algeria,Baby Food,Online,L,1/5/2015,473133790,1/27/2015,9657,255.28,159.42,2465238.96,1539518.94,925720.02
+Europe,Andorra,Beverages,Online,H,3/11/2015,320431125,4/17/2015,1545,47.45,31.79,73310.25,49115.55,24194.70
+Sub-Saharan Africa,Swaziland,Clothes,Online,M,7/1/2011,437072026,8/13/2011,8180,109.28,35.84,893910.40,293171.20,600739.20
+Europe,Liechtenstein,Vegetables,Offline,L,11/28/2011,229355323,12/10/2011,192,154.06,90.93,29579.52,17458.56,12120.96
+Asia,Turkmenistan,Baby Food,Offline,C,4/27/2010,523892343,5/31/2010,241,255.28,159.42,61522.48,38420.22,23102.26
+Sub-Saharan Africa,Kenya,Office Supplies,Offline,H,1/18/2013,417606914,2/19/2013,8021,651.21,524.96,5223355.41,4210704.16,1012651.25
+Australia and Oceania,Fiji,Snacks,Online,H,5/3/2012,427735364,6/18/2012,5254,152.58,97.44,801655.32,511949.76,289705.56
+Central America and the Caribbean,Cuba,Clothes,Offline,L,11/4/2012,241826522,11/6/2012,697,109.28,35.84,76168.16,24980.48,51187.68
+Central America and the Caribbean,Dominican Republic,Cosmetics,Offline,H,9/22/2012,967741715,11/4/2012,5134,437.20,263.33,2244584.80,1351936.22,892648.58
+Middle East and North Africa,Saudi Arabia,Personal Care,Offline,C,12/29/2014,183654773,2/12/2015,6383,81.73,56.67,521682.59,361724.61,159957.98
+Sub-Saharan Africa,Angola,Clothes,Online,M,2/19/2016,488052022,2/19/2016,4294,109.28,35.84,469248.32,153896.96,315351.36
+Europe,Macedonia,Beverages,Offline,L,7/5/2017,949732291,8/14/2017,5745,47.45,31.79,272600.25,182633.55,89966.70
+Australia and Oceania,Kiribati,Snacks,Online,C,12/15/2013,257806909,12/21/2013,9648,152.58,97.44,1472091.84,940101.12,531990.72
+Asia,South Korea,Meat,Online,L,9/26/2012,771699702,10/29/2012,1946,421.89,364.69,820997.94,709686.74,111311.20
+Europe,San Marino,Household,Online,C,8/12/2014,871147000,8/25/2014,611,668.27,502.54,408312.97,307051.94,101261.03
+Europe,Cyprus,Baby Food,Online,M,1/18/2010,806197631,2/18/2010,649,255.28,159.42,165676.72,103463.58,62213.14
+Central America and the Caribbean,Cuba,Cereal,Online,L,4/16/2013,447212922,5/19/2013,9097,205.70,117.11,1871252.90,1065349.67,805903.23
+Central America and the Caribbean,Saint Lucia,Personal Care,Offline,M,2/22/2013,634866702,2/25/2013,20,81.73,56.67,1634.60,1133.40,501.20
+Sub-Saharan Africa,Liberia,Clothes,Online,C,8/18/2014,930145299,9/30/2014,9519,109.28,35.84,1040236.32,341160.96,699075.36
+Sub-Saharan Africa,Central African Republic,Fruits,Offline,M,6/20/2012,964347541,7/24/2012,722,9.33,6.92,6736.26,4996.24,1740.02
+Australia and Oceania,Australia,Cosmetics,Offline,H,1/9/2010,889084756,2/8/2010,8792,437.20,263.33,3843862.40,2315197.36,1528665.04
+Europe,Lithuania,Beverages,Offline,H,7/5/2015,926280772,7/21/2015,5919,47.45,31.79,280856.55,188165.01,92691.54
+Asia,Bhutan,Office Supplies,Online,H,6/24/2015,918171918,8/9/2015,6329,651.21,524.96,4121508.09,3322471.84,799036.25
+Australia and Oceania,Nauru,Beverages,Online,H,6/28/2016,777307021,7/5/2016,1276,47.45,31.79,60546.20,40564.04,19982.16
+Europe,Greece,Vegetables,Offline,L,1/8/2011,936547410,1/12/2011,4046,154.06,90.93,623326.76,367902.78,255423.98
+Sub-Saharan Africa,Gabon,Household,Offline,C,7/17/2011,999066913,8/14/2011,4956,668.27,502.54,3311946.12,2490588.24,821357.88
+North America,Canada,Household,Online,C,6/11/2016,188351857,7/13/2016,6355,668.27,502.54,4246855.85,3193641.70,1053214.15
+Europe,Slovenia,Cosmetics,Online,H,10/29/2013,498201072,11/7/2013,7623,437.20,263.33,3332775.60,2007364.59,1325411.01
+Europe,Cyprus,Snacks,Offline,H,7/27/2015,842725884,8/11/2015,171,152.58,97.44,26091.18,16662.24,9428.94
+Asia,Nepal,Fruits,Offline,C,9/7/2015,206350123,10/23/2015,2442,9.33,6.92,22783.86,16898.64,5885.22
+Sub-Saharan Africa,Guinea-Bissau,Snacks,Online,C,10/27/2016,793810117,11/3/2016,4909,152.58,97.44,749015.22,478332.96,270682.26
+Sub-Saharan Africa,Cote d'Ivoire,Vegetables,Offline,H,5/5/2011,380154693,6/20/2011,5076,154.06,90.93,782008.56,461560.68,320447.88
+Middle East and North Africa,Kuwait,Clothes,Offline,M,5/21/2015,860745179,6/10/2015,2481,109.28,35.84,271123.68,88919.04,182204.64
+Sub-Saharan Africa,Mozambique,Household,Online,L,1/28/2012,601255404,2/26/2012,3690,668.27,502.54,2465916.30,1854372.60,611543.70
+Asia,Uzbekistan,Cosmetics,Offline,L,11/25/2015,287671697,12/26/2015,7303,437.20,263.33,3192871.60,1923098.99,1269772.61
+Asia,South Korea,Office Supplies,Online,M,11/25/2015,676292884,12/21/2015,8948,651.21,524.96,5827027.08,4697342.08,1129685.00
+Europe,Latvia,Office Supplies,Online,L,5/1/2017,343730294,5/28/2017,6287,651.21,524.96,4094157.27,3300423.52,793733.75
+Europe,Georgia,Vegetables,Online,C,2/26/2015,636907756,4/1/2015,4013,154.06,90.93,618242.78,364902.09,253340.69
+Asia,China,Clothes,Online,L,12/19/2012,723061597,12/29/2012,8849,109.28,35.84,967018.72,317148.16,649870.56
+Sub-Saharan Africa,Tanzania,Snacks,Online,L,8/24/2011,739740645,9/1/2011,4551,152.58,97.44,694391.58,443449.44,250942.14
+Europe,Czech Republic,Cereal,Online,H,2/16/2013,444806230,4/1/2013,6903,205.70,117.11,1419947.10,808410.33,611536.77
+Asia,Nepal,Vegetables,Online,H,8/21/2016,566432178,9/9/2016,8724,154.06,90.93,1344019.44,793273.32,550746.12
+Sub-Saharan Africa,Sao Tome and Principe,Baby Food,Online,H,11/21/2014,553104817,11/23/2014,4862,255.28,159.42,1241171.36,775100.04,466071.32
+Central America and the Caribbean,Saint Kitts and Nevis ,Clothes,Offline,C,1/4/2013,823622977,2/22/2013,7197,109.28,35.84,786488.16,257940.48,528547.68
+Europe,Latvia,Snacks,Online,M,3/18/2017,517097985,4/14/2017,9640,152.58,97.44,1470871.20,939321.60,531549.60
+Europe,Netherlands,Beverages,Offline,M,10/27/2015,642953670,12/9/2015,3134,47.45,31.79,148708.30,99629.86,49078.44
+Asia,Brunei,Beverages,Online,M,5/19/2013,930926358,6/4/2013,651,47.45,31.79,30889.95,20695.29,10194.66
+Sub-Saharan Africa,Central African Republic,Vegetables,Offline,L,9/20/2011,281064879,9/26/2011,2199,154.06,90.93,338777.94,199955.07,138822.87
+Asia,Bhutan,Baby Food,Offline,C,9/21/2013,813730561,10/26/2013,9811,255.28,159.42,2504552.08,1564069.62,940482.46
+Sub-Saharan Africa,Mauritius ,Fruits,Offline,H,12/25/2011,219597232,1/5/2012,2556,9.33,6.92,23847.48,17687.52,6159.96
+Australia and Oceania,Australia,Snacks,Offline,H,4/22/2015,309651219,5/1/2015,1532,152.58,97.44,233752.56,149278.08,84474.48
+Europe,Serbia,Snacks,Offline,M,8/18/2014,265191352,9/26/2014,4869,152.58,97.44,742912.02,474435.36,268476.66
+Central America and the Caribbean,Barbados,Snacks,Offline,L,2/4/2017,687828958,3/2/2017,2728,152.58,97.44,416238.24,265816.32,150421.92
+Central America and the Caribbean,Honduras,Household,Offline,C,12/29/2011,449487864,2/1/2012,2303,668.27,502.54,1539025.81,1157349.62,381676.19
+Australia and Oceania,Tonga,Baby Food,Online,L,5/19/2012,742404401,6/27/2012,2815,255.28,159.42,718613.20,448767.30,269845.90
+Europe,Latvia,Office Supplies,Online,L,6/16/2013,129127395,6/20/2013,520,651.21,524.96,338629.20,272979.20,65650.00
+Europe,Serbia,Vegetables,Offline,M,6/25/2011,392518174,7/3/2011,3705,154.06,90.93,570792.30,336895.65,233896.65
+Middle East and North Africa,Tunisia ,Vegetables,Online,H,2/21/2015,685750567,3/11/2015,7687,154.06,90.93,1184259.22,698978.91,485280.31
+Central America and the Caribbean,Guatemala,Personal Care,Offline,L,6/21/2011,682310903,7/3/2011,9813,81.73,56.67,802016.49,556102.71,245913.78
+Sub-Saharan Africa,Rwanda,Office Supplies,Online,C,1/25/2015,125998008,2/3/2015,4465,651.21,524.96,2907652.65,2343946.40,563706.25
+Middle East and North Africa,Azerbaijan,Baby Food,Online,M,4/24/2011,180923211,6/2/2011,8054,255.28,159.42,2056025.12,1283968.68,772056.44
+Asia,Taiwan,Meat,Online,M,2/22/2013,281510341,3/16/2013,4020,421.89,364.69,1695997.80,1466053.80,229944.00
+Middle East and North Africa,Jordan,Clothes,Offline,L,11/11/2011,382495725,12/21/2011,7840,109.28,35.84,856755.20,280985.60,575769.60
+Middle East and North Africa,Somalia,Baby Food,Online,L,3/7/2011,508928191,3/19/2011,2016,255.28,159.42,514644.48,321390.72,193253.76
+Asia,Bhutan,Snacks,Online,M,11/16/2015,306169068,12/12/2015,1086,152.58,97.44,165701.88,105819.84,59882.04
+Central America and the Caribbean,Panama,Fruits,Online,M,11/12/2012,389892184,11/14/2012,6616,9.33,6.92,61727.28,45782.72,15944.56
+Middle East and North Africa,Afghanistan,Snacks,Offline,H,11/5/2012,996083867,12/1/2012,2206,152.58,97.44,336591.48,214952.64,121638.84
+Australia and Oceania,Samoa ,Vegetables,Offline,C,3/23/2016,631042945,4/14/2016,8485,154.06,90.93,1307199.10,771541.05,535658.05
+Europe,Malta,Fruits,Online,C,11/21/2016,121380746,12/18/2016,8115,9.33,6.92,75712.95,56155.80,19557.15
+Middle East and North Africa,Kuwait,Baby Food,Offline,M,8/5/2013,364021098,8/22/2013,787,255.28,159.42,200905.36,125463.54,75441.82
+Sub-Saharan Africa,Sudan,Baby Food,Online,M,9/19/2013,976200330,10/20/2013,8226,255.28,159.42,2099933.28,1311388.92,788544.36
+Europe,Russia,Clothes,Offline,M,5/8/2014,745467269,6/23/2014,9186,109.28,35.84,1003846.08,329226.24,674619.84
+Sub-Saharan Africa,Namibia,Fruits,Offline,M,8/25/2013,779683244,8/25/2013,4453,9.33,6.92,41546.49,30814.76,10731.73
+Middle East and North Africa,Oman,Snacks,Online,C,8/15/2014,457022082,9/10/2014,1845,152.58,97.44,281510.10,179776.80,101733.30
+Sub-Saharan Africa,Malawi,Meat,Offline,M,10/4/2013,575970113,10/16/2013,1211,421.89,364.69,510908.79,441639.59,69269.20
+Asia,Tajikistan,Vegetables,Online,H,6/2/2012,205326163,7/12/2012,9429,154.06,90.93,1452631.74,857378.97,595252.77
+Central America and the Caribbean,Haiti,Cosmetics,Offline,M,1/5/2013,734201562,1/8/2013,5413,437.20,263.33,2366563.60,1425405.29,941158.31
+Asia,Singapore,Baby Food,Offline,C,3/27/2015,922020137,4/30/2015,5103,255.28,159.42,1302693.84,813520.26,489173.58
+Europe,Bulgaria,Meat,Offline,H,4/7/2012,948518216,5/4/2012,6473,421.89,364.69,2730893.97,2360638.37,370255.60
+Europe,Finland,Office Supplies,Offline,L,4/17/2017,163744628,5/1/2017,4529,651.21,524.96,2949330.09,2377543.84,571786.25
+Middle East and North Africa,Kuwait,Fruits,Offline,L,4/9/2014,238060700,5/24/2014,6306,9.33,6.92,58834.98,43637.52,15197.46
+Middle East and North Africa,United Arab Emirates,Clothes,Offline,M,9/22/2014,212140262,9/22/2014,5872,109.28,35.84,641692.16,210452.48,431239.68
+Sub-Saharan Africa,Mauritius ,Fruits,Offline,C,2/6/2016,546969640,3/10/2016,9326,9.33,6.92,87011.58,64535.92,22475.66
+North America,Greenland,Cosmetics,Online,M,2/12/2013,873847663,3/10/2013,9797,437.20,263.33,4283248.40,2579844.01,1703404.39
+Australia and Oceania,Samoa ,Household,Online,M,9/18/2016,444385659,10/18/2016,2447,668.27,502.54,1635256.69,1229715.38,405541.31
+Asia,Nepal,Fruits,Online,M,5/20/2012,380507457,6/23/2012,9467,9.33,6.92,88327.11,65511.64,22815.47
+Sub-Saharan Africa,Cote d'Ivoire,Beverages,Offline,M,12/22/2016,524449384,1/29/2017,5082,47.45,31.79,241140.90,161556.78,79584.12
+Asia,Sri Lanka,Clothes,Offline,L,4/30/2014,788760268,6/1/2014,546,109.28,35.84,59666.88,19568.64,40098.24
+Europe,Greece,Household,Offline,M,1/23/2012,706301438,2/11/2012,9146,668.27,502.54,6111997.42,4596230.84,1515766.58
+Asia,Bhutan,Snacks,Online,C,1/27/2015,780246722,3/9/2015,1199,152.58,97.44,182943.42,116830.56,66112.86
+Europe,Montenegro,Clothes,Online,C,3/9/2014,234082448,3/9/2014,9053,109.28,35.84,989311.84,324459.52,664852.32
+Europe,Romania,Meat,Offline,L,8/22/2012,161607444,10/3/2012,2089,421.89,364.69,881328.21,761837.41,119490.80
+Sub-Saharan Africa,Ghana,Meat,Offline,C,9/29/2014,376933038,10/19/2014,1717,421.89,364.69,724385.13,626172.73,98212.40
+Europe,Lithuania,Meat,Offline,C,7/6/2014,764483058,8/5/2014,6380,421.89,364.69,2691658.20,2326722.20,364936.00
+Europe,Iceland,Baby Food,Offline,M,8/5/2014,828993833,9/2/2014,6552,255.28,159.42,1672594.56,1044519.84,628074.72
+Asia,Brunei,Meat,Online,H,12/2/2014,145514190,12/13/2014,9737,421.89,364.69,4107942.93,3550986.53,556956.40
+Central America and the Caribbean,Cuba,Fruits,Online,L,6/25/2016,609405457,8/3/2016,5472,9.33,6.92,51053.76,37866.24,13187.52
+Sub-Saharan Africa,Chad,Household,Online,L,7/24/2017,586341464,7/31/2017,324,668.27,502.54,216519.48,162822.96,53696.52
+Australia and Oceania,East Timor,Beverages,Offline,C,6/27/2017,762308537,7/25/2017,2891,47.45,31.79,137177.95,91904.89,45273.06
+Middle East and North Africa,Bahrain,Cereal,Online,H,11/17/2012,993605506,11/17/2012,8804,205.70,117.11,1810982.80,1031036.44,779946.36
+Middle East and North Africa,Oman,Fruits,Online,H,7/26/2016,756843698,8/30/2016,5724,9.33,6.92,53404.92,39610.08,13794.84
+Europe,Bosnia and Herzegovina,Meat,Offline,C,12/9/2015,498946940,1/11/2016,8342,421.89,364.69,3519406.38,3042243.98,477162.40
+Europe,Switzerland,Personal Care,Offline,M,8/2/2014,287151563,8/11/2014,3383,81.73,56.67,276492.59,191714.61,84777.98
+Europe,Croatia,Office Supplies,Online,C,5/22/2013,259006392,6/6/2013,4602,651.21,524.96,2996868.42,2415865.92,581002.50
+Asia,Nepal,Clothes,Online,H,4/15/2014,172372758,4/30/2014,7784,109.28,35.84,850635.52,278978.56,571656.96
+Central America and the Caribbean,Haiti,Cosmetics,Online,C,7/3/2016,755424487,7/17/2016,5748,437.20,263.33,2513025.60,1513620.84,999404.76
+Europe,United Kingdom,Vegetables,Online,C,9/30/2012,556647908,10/29/2012,3341,154.06,90.93,514714.46,303797.13,210917.33
+Sub-Saharan Africa,South Africa,Clothes,Online,M,9/25/2015,894841849,10/8/2015,2443,109.28,35.84,266971.04,87557.12,179413.92
+Central America and the Caribbean,Grenada,Snacks,Online,L,7/3/2016,909117639,8/10/2016,6967,152.58,97.44,1063024.86,678864.48,384160.38
+Asia,India,Baby Food,Offline,M,12/24/2010,708899104,1/1/2011,7853,255.28,159.42,2004713.84,1251925.26,752788.58
+Europe,Ireland,Vegetables,Offline,M,4/9/2011,923922574,5/23/2011,8076,154.06,90.93,1244188.56,734350.68,509837.88
+Middle East and North Africa,Tunisia ,Vegetables,Offline,M,8/18/2011,454236876,8/22/2011,7641,154.06,90.93,1177172.46,694796.13,482376.33
+Middle East and North Africa,Algeria,Snacks,Online,L,12/9/2014,520203340,12/19/2014,8583,152.58,97.44,1309594.14,836327.52,473266.62
+Australia and Oceania,Papua New Guinea,Cereal,Online,L,10/19/2013,612495791,11/10/2013,9971,205.70,117.11,2051034.70,1167703.81,883330.89
+Europe,San Marino,Snacks,Offline,C,1/4/2017,742100560,1/17/2017,2902,152.58,97.44,442787.16,282770.88,160016.28
+Sub-Saharan Africa,Senegal,Fruits,Online,H,7/7/2015,990316474,8/21/2015,5507,9.33,6.92,51380.31,38108.44,13271.87
+Middle East and North Africa,Algeria,Beverages,Offline,M,6/13/2016,158754861,7/24/2016,7946,47.45,31.79,377037.70,252603.34,124434.36
+Sub-Saharan Africa,Niger,Household,Offline,C,9/5/2016,719339549,9/21/2016,7413,668.27,502.54,4953885.51,3725329.02,1228556.49
+Middle East and North Africa,Saudi Arabia,Cereal,Online,L,2/12/2014,264306867,3/29/2014,3130,205.70,117.11,643841.00,366554.30,277286.70
+Asia,Mongolia,Snacks,Offline,C,7/13/2011,956205642,8/25/2011,1353,152.58,97.44,206440.74,131836.32,74604.42
+Asia,Brunei,Vegetables,Offline,L,10/4/2012,977897202,11/11/2012,368,154.06,90.93,56694.08,33462.24,23231.84
+Asia,India,Baby Food,Online,L,5/4/2011,382555377,6/19/2011,5492,255.28,159.42,1401997.76,875534.64,526463.12
+Asia,Kazakhstan,Fruits,Offline,L,1/8/2017,643666493,2/23/2017,4074,9.33,6.92,38010.42,28192.08,9818.34
+Europe,France,Fruits,Offline,H,2/12/2014,605029380,2/18/2014,493,9.33,6.92,4599.69,3411.56,1188.13
+Asia,Turkmenistan,Fruits,Online,L,9/22/2010,530755364,9/29/2010,1162,9.33,6.92,10841.46,8041.04,2800.42
+Australia and Oceania,Palau,Vegetables,Offline,M,3/18/2012,755268275,4/6/2012,9521,154.06,90.93,1466805.26,865744.53,601060.73
+Europe,Cyprus,Meat,Online,L,6/11/2017,333304440,7/5/2017,1046,421.89,364.69,441296.94,381465.74,59831.20
+Asia,South Korea,Snacks,Offline,M,12/28/2014,189912688,2/9/2015,8240,152.58,97.44,1257259.20,802905.60,454353.60
+Australia and Oceania,Australia,Beverages,Online,M,3/18/2017,870454347,3/26/2017,5639,47.45,31.79,267570.55,179263.81,88306.74
+Asia,Kazakhstan,Beverages,Online,C,1/6/2011,290603244,2/21/2011,4813,47.45,31.79,228376.85,153005.27,75371.58
+Europe,Russia,Cosmetics,Offline,H,9/3/2014,486345708,10/11/2014,9357,437.20,263.33,4090880.40,2463978.81,1626901.59
+Central America and the Caribbean,Haiti,Personal Care,Offline,M,6/10/2013,863980567,6/20/2013,9904,81.73,56.67,809453.92,561259.68,248194.24
+Sub-Saharan Africa,Kenya,Personal Care,Offline,C,5/12/2016,450119149,7/1/2016,9114,81.73,56.67,744887.22,516490.38,228396.84
+Sub-Saharan Africa,Burkina Faso,Snacks,Online,H,8/12/2014,141685283,9/12/2014,6679,152.58,97.44,1019081.82,650801.76,368280.06
+Sub-Saharan Africa,Togo,Office Supplies,Online,L,7/28/2015,455915296,9/11/2015,4322,651.21,524.96,2814529.62,2268877.12,545652.50
+Europe,Malta,Beverages,Online,M,4/30/2016,180358016,5/16/2016,800,47.45,31.79,37960.00,25432.00,12528.00
+Asia,Thailand,Meat,Offline,H,1/17/2015,422874772,2/23/2015,6897,421.89,364.69,2909775.33,2515266.93,394508.40
+Middle East and North Africa,Yemen,Vegetables,Offline,M,9/20/2014,561639392,10/25/2014,432,154.06,90.93,66553.92,39281.76,27272.16
+Asia,Bhutan,Meat,Offline,L,11/9/2011,495138204,11/11/2011,1252,421.89,364.69,528206.28,456591.88,71614.40
+Sub-Saharan Africa,Tanzania,Baby Food,Online,H,5/17/2015,192170035,6/5/2015,6239,255.28,159.42,1592691.92,994621.38,598070.54
+Europe,Georgia,Clothes,Online,H,7/18/2012,141846215,8/16/2012,4302,109.28,35.84,470122.56,154183.68,315938.88
+Middle East and North Africa,Oman,Clothes,Offline,L,8/19/2010,903590571,9/1/2010,1385,109.28,35.84,151352.80,49638.40,101714.40
+Middle East and North Africa,Libya,Meat,Online,L,5/24/2010,857139432,6/11/2010,5460,421.89,364.69,2303519.40,1991207.40,312312.00
+Europe,Moldova ,Baby Food,Offline,C,6/9/2017,252541625,7/5/2017,1534,255.28,159.42,391599.52,244550.28,147049.24
+Sub-Saharan Africa,South Sudan,Household,Offline,H,9/22/2015,760158479,10/26/2015,6641,668.27,502.54,4437981.07,3337368.14,1100612.93
+Australia and Oceania,Marshall Islands,Cosmetics,Offline,C,10/11/2016,520663821,11/6/2016,4850,437.20,263.33,2120420.00,1277150.50,843269.50
+Sub-Saharan Africa,Uganda,Snacks,Offline,H,6/20/2010,895043981,6/21/2010,2259,152.58,97.44,344678.22,220116.96,124561.26
+Europe,Montenegro,Cosmetics,Offline,C,3/29/2014,614597785,5/14/2014,1997,437.20,263.33,873088.40,525870.01,347218.39
+Asia,Philippines,Office Supplies,Online,L,4/21/2016,730936563,4/30/2016,9227,651.21,524.96,6008714.67,4843805.92,1164908.75
+Sub-Saharan Africa,Nigeria,Snacks,Online,C,4/22/2017,565984141,5/22/2017,6140,152.58,97.44,936841.20,598281.60,338559.60
+Europe,Sweden,Personal Care,Offline,H,5/17/2011,861976850,5/25/2011,6960,81.73,56.67,568840.80,394423.20,174417.60
+Europe,Czech Republic,Clothes,Offline,L,8/21/2012,631463515,9/25/2012,2942,109.28,35.84,321501.76,105441.28,216060.48
+Europe,Moldova ,Fruits,Online,M,7/29/2013,307305467,8/10/2013,7371,9.33,6.92,68771.43,51007.32,17764.11
+Europe,Cyprus,Cereal,Offline,H,7/5/2011,392676532,8/6/2011,567,205.70,117.11,116631.90,66401.37,50230.53
+Europe,Luxembourg,Baby Food,Online,L,5/26/2012,111063039,7/13/2012,4876,255.28,159.42,1244745.28,777331.92,467413.36
+Europe,Spain,Beverages,Online,M,12/5/2011,556263816,12/7/2011,9679,47.45,31.79,459268.55,307695.41,151573.14
+Middle East and North Africa,Yemen,Vegetables,Online,C,5/24/2014,642390191,5/26/2014,6388,154.06,90.93,984135.28,580860.84,403274.44
+Sub-Saharan Africa,Liberia,Baby Food,Online,M,10/24/2013,253865993,12/4/2013,3444,255.28,159.42,879184.32,549042.48,330141.84
+Asia,Indonesia,Vegetables,Offline,M,11/2/2012,695427548,11/29/2012,1320,154.06,90.93,203359.20,120027.60,83331.60
+Europe,Greece,Beverages,Online,M,5/25/2011,642123687,5/30/2011,7523,47.45,31.79,356966.35,239156.17,117810.18
+Asia,China,Beverages,Online,M,6/26/2010,189315736,8/1/2010,1588,47.45,31.79,75350.60,50482.52,24868.08
+Central America and the Caribbean,Trinidad and Tobago,Snacks,Offline,C,12/12/2015,402677524,12/27/2015,82,152.58,97.44,12511.56,7990.08,4521.48
+Sub-Saharan Africa,Kenya,Clothes,Offline,L,12/23/2011,168195378,12/27/2011,1605,109.28,35.84,175394.40,57523.20,117871.20
+Europe,Czech Republic,Beverages,Online,M,5/2/2010,242168128,5/3/2010,1785,47.45,31.79,84698.25,56745.15,27953.10
+Asia,Singapore,Fruits,Offline,C,4/11/2016,101207101,5/2/2016,8285,9.33,6.92,77299.05,57332.20,19966.85
+Europe,Croatia,Beverages,Offline,H,3/11/2017,192236125,3/22/2017,5796,47.45,31.79,275020.20,184254.84,90765.36
+Asia,South Korea,Personal Care,Offline,M,9/3/2016,582491528,10/10/2016,1042,81.73,56.67,85162.66,59050.14,26112.52
+Sub-Saharan Africa,Madagascar,Fruits,Offline,L,8/9/2015,509522140,9/28/2015,7779,9.33,6.92,72578.07,53830.68,18747.39
+Australia and Oceania,Australia,Personal Care,Offline,M,12/2/2015,631189286,12/17/2015,1791,81.73,56.67,146378.43,101495.97,44882.46
+Middle East and North Africa,Jordan,Fruits,Online,C,11/3/2016,775666797,12/11/2016,5897,9.33,6.92,55019.01,40807.24,14211.77
+Middle East and North Africa,United Arab Emirates,Beverages,Offline,L,1/31/2011,391440999,3/5/2011,4945,47.45,31.79,234640.25,157201.55,77438.70
+Middle East and North Africa,Iran,Baby Food,Offline,C,5/8/2011,797310721,5/14/2011,815,255.28,159.42,208053.20,129927.30,78125.90
+Sub-Saharan Africa,South Africa,Baby Food,Offline,H,4/10/2016,232387292,5/7/2016,7419,255.28,159.42,1893922.32,1182736.98,711185.34
+Sub-Saharan Africa,Burkina Faso,Fruits,Offline,L,3/9/2014,606094539,3/10/2014,5698,9.33,6.92,53162.34,39430.16,13732.18
+Sub-Saharan Africa,Mali,Baby Food,Offline,M,3/16/2017,748168790,5/5/2017,8626,255.28,159.42,2202045.28,1375156.92,826888.36
+Sub-Saharan Africa,Sierra Leone,Meat,Offline,M,1/4/2012,458658874,2/3/2012,6208,421.89,364.69,2619093.12,2263995.52,355097.60
+Europe,Greece,Snacks,Online,L,8/18/2016,957926118,9/1/2016,480,152.58,97.44,73238.40,46771.20,26467.20
+Middle East and North Africa,Iraq,Baby Food,Offline,L,2/2/2016,836644351,2/13/2016,510,255.28,159.42,130192.80,81304.20,48888.60
+Asia,Philippines,Cereal,Online,C,8/14/2011,105799901,9/29/2011,7397,205.70,117.11,1521562.90,866262.67,655300.23
+Europe,Austria,Beverages,Online,H,11/14/2016,646691596,12/13/2016,9269,47.45,31.79,439814.05,294661.51,145152.54
+Sub-Saharan Africa,Mali,Cosmetics,Offline,M,4/11/2016,360930764,5/15/2016,6289,437.20,263.33,2749550.80,1656082.37,1093468.43
+Asia,Sri Lanka,Snacks,Online,C,4/7/2014,820441234,5/2/2014,5648,152.58,97.44,861771.84,550341.12,311430.72
+North America,Mexico,Vegetables,Online,C,4/28/2016,517459332,5/27/2016,6570,154.06,90.93,1012174.20,597410.10,414764.10
+Sub-Saharan Africa,Niger,Office Supplies,Online,H,1/29/2010,714533889,2/7/2010,5311,651.21,524.96,3458576.31,2788062.56,670513.75
+Central America and the Caribbean,Guatemala,Office Supplies,Online,M,7/5/2014,494526231,8/19/2014,156,651.21,524.96,101588.76,81893.76,19695.00
+Sub-Saharan Africa,South Sudan,Beverages,Offline,L,7/31/2015,810610187,7/31/2015,6423,47.45,31.79,304771.35,204187.17,100584.18
+North America,United States of America,Cereal,Online,L,6/22/2015,436272084,6/28/2015,1460,205.70,117.11,300322.00,170980.60,129341.40
+Sub-Saharan Africa,Zimbabwe,Vegetables,Online,L,8/23/2013,915310752,9/23/2013,9647,154.06,90.93,1486216.82,877201.71,609015.11
+Middle East and North Africa,Egypt,Household,Offline,M,8/11/2010,711837518,8/14/2010,7395,668.27,502.54,4941856.65,3716283.30,1225573.35
+Sub-Saharan Africa,South Sudan,Office Supplies,Online,M,10/1/2011,160276210,11/15/2011,8147,651.21,524.96,5305407.87,4276849.12,1028558.75
+Europe,Ukraine,Office Supplies,Offline,H,12/4/2015,115363156,1/10/2016,7376,651.21,524.96,4803324.96,3872104.96,931220.00
+Australia and Oceania,Kiribati,Snacks,Offline,H,9/15/2011,602147185,9/15/2011,7588,152.58,97.44,1157777.04,739374.72,418402.32
+Sub-Saharan Africa,Tanzania,Fruits,Online,C,6/13/2011,365989625,7/2/2011,3318,9.33,6.92,30956.94,22960.56,7996.38
+Europe,Vatican City,Household,Offline,L,3/17/2017,922564303,4/2/2017,6134,668.27,502.54,4099168.18,3082580.36,1016587.82
+Sub-Saharan Africa,Senegal,Household,Online,M,12/20/2016,707857549,1/16/2017,9634,668.27,502.54,6438113.18,4841470.36,1596642.82
+Europe,Bulgaria,Cereal,Offline,H,2/17/2011,928168189,3/15/2011,4448,205.70,117.11,914953.60,520905.28,394048.32
+Middle East and North Africa,Kuwait,Fruits,Online,M,4/23/2016,610107553,6/12/2016,3238,9.33,6.92,30210.54,22406.96,7803.58
+Middle East and North Africa,Pakistan,Clothes,Offline,H,2/7/2016,650599467,3/1/2016,5695,109.28,35.84,622349.60,204108.80,418240.80
+Australia and Oceania,Samoa ,Baby Food,Online,M,4/29/2010,666880261,6/4/2010,3544,255.28,159.42,904712.32,564984.48,339727.84
+Europe,Monaco,Vegetables,Online,L,3/18/2011,346498763,4/2/2011,5539,154.06,90.93,853338.34,503661.27,349677.07
+Europe,Serbia,Beverages,Offline,H,11/29/2016,797316300,11/29/2016,2466,47.45,31.79,117011.70,78394.14,38617.56
+Europe,Ireland,Baby Food,Online,H,4/18/2015,497506701,5/10/2015,2144,255.28,159.42,547320.32,341796.48,205523.84
+Europe,Andorra,Personal Care,Online,C,6/5/2010,245556294,6/25/2010,4419,81.73,56.67,361164.87,250424.73,110740.14
+Sub-Saharan Africa,Democratic Republic of the Congo,Snacks,Offline,M,3/26/2011,910263907,4/21/2011,6173,152.58,97.44,941876.34,601497.12,340379.22
+Middle East and North Africa,Algeria,Meat,Online,H,7/19/2012,280740869,8/20/2012,6317,421.89,364.69,2665079.13,2303746.73,361332.40
+Europe,Latvia,Personal Care,Online,L,1/27/2014,716411006,2/17/2014,792,81.73,56.67,64730.16,44882.64,19847.52
+Middle East and North Africa,Egypt,Clothes,Offline,L,7/25/2016,597010648,9/2/2016,7572,109.28,35.84,827468.16,271380.48,556087.68
+Central America and the Caribbean,Costa Rica,Clothes,Offline,L,6/26/2010,172588622,7/12/2010,1663,109.28,35.84,181732.64,59601.92,122130.72
+Central America and the Caribbean,Honduras,Fruits,Offline,L,1/30/2010,213506257,1/31/2010,101,9.33,6.92,942.33,698.92,243.41
+Sub-Saharan Africa,Burundi,Clothes,Offline,M,9/25/2011,660437381,10/24/2011,6952,109.28,35.84,759714.56,249159.68,510554.88
+Asia,South Korea,Personal Care,Online,C,11/19/2012,174368321,1/6/2013,8316,81.73,56.67,679666.68,471267.72,208398.96
+Europe,Liechtenstein,Office Supplies,Online,M,11/1/2015,186597907,12/15/2015,7322,651.21,524.96,4768159.62,3843757.12,924402.50
+Europe,Armenia,Vegetables,Online,L,5/15/2016,848737466,5/31/2016,9132,154.06,90.93,1406875.92,830372.76,576503.16
+Central America and the Caribbean,Saint Vincent and the Grenadines,Household,Online,C,2/17/2015,582710826,2/20/2015,5937,668.27,502.54,3967518.99,2983579.98,983939.01
+Europe,France,Office Supplies,Online,H,10/27/2013,130754315,11/2/2013,1962,651.21,524.96,1277674.02,1029971.52,247702.50
+Central America and the Caribbean,Guatemala,Beverages,Online,L,6/4/2011,305416762,6/20/2011,8462,47.45,31.79,401521.90,269006.98,132514.92
+Central America and the Caribbean,Antigua and Barbuda ,Beverages,Offline,L,7/24/2015,639559495,8/27/2015,8722,47.45,31.79,413858.90,277272.38,136586.52
+Sub-Saharan Africa,Central African Republic,Personal Care,Online,L,12/27/2015,736356341,12/28/2015,3060,81.73,56.67,250093.80,173410.20,76683.60
+Europe,Netherlands,Office Supplies,Offline,M,2/2/2011,719293630,2/25/2011,3824,651.21,524.96,2490227.04,2007447.04,482780.00
+Central America and the Caribbean,El Salvador,Personal Care,Online,L,9/9/2011,782170188,10/21/2011,395,81.73,56.67,32283.35,22384.65,9898.70
+Sub-Saharan Africa,Niger,Vegetables,Offline,M,7/8/2014,739097344,7/20/2014,4183,154.06,90.93,644432.98,380360.19,264072.79
+Middle East and North Africa,Saudi Arabia,Household,Online,H,8/3/2013,474498927,9/3/2013,3632,668.27,502.54,2427156.64,1825225.28,601931.36
+Sub-Saharan Africa,The Gambia,Snacks,Online,M,7/23/2011,393111264,7/26/2011,9214,152.58,97.44,1405872.12,897812.16,508059.96
+Sub-Saharan Africa,Kenya,Meat,Online,C,12/2/2015,969983184,12/29/2015,8434,421.89,364.69,3558220.26,3075795.46,482424.80
+North America,Canada,Snacks,Offline,M,7/12/2012,500476014,7/22/2012,829,152.58,97.44,126488.82,80777.76,45711.06
+Sub-Saharan Africa,Angola,Fruits,Offline,H,10/21/2014,950263583,10/21/2014,2966,9.33,6.92,27672.78,20524.72,7148.06
+Sub-Saharan Africa,Central African Republic,Snacks,Offline,L,7/5/2014,305332219,7/12/2014,3444,152.58,97.44,525485.52,335583.36,189902.16
+Central America and the Caribbean,The Bahamas,Baby Food,Online,C,11/1/2015,221980750,12/3/2015,7892,255.28,159.42,2014669.76,1258142.64,756527.12
+Asia,South Korea,Meat,Online,H,6/17/2016,176820504,7/22/2016,3971,421.89,364.69,1675325.19,1448183.99,227141.20
+Europe,Kosovo,Office Supplies,Offline,C,5/7/2011,616775310,5/24/2011,6375,651.21,524.96,4151463.75,3346620.00,804843.75
+Sub-Saharan Africa,Angola,Clothes,Online,L,9/1/2011,709081494,10/13/2011,1826,109.28,35.84,199545.28,65443.84,134101.44
+Europe,Finland,Fruits,Offline,L,9/20/2010,591287887,10/2/2010,4080,9.33,6.92,38066.40,28233.60,9832.80
+Sub-Saharan Africa,Mauritania,Personal Care,Offline,H,6/14/2010,921255815,7/28/2010,8923,81.73,56.67,729276.79,505666.41,223610.38
+Sub-Saharan Africa,Niger,Meat,Online,M,1/29/2010,627159106,3/9/2010,9171,421.89,364.69,3869153.19,3344571.99,524581.20
+Asia,South Korea,Household,Online,L,6/18/2017,957484090,7/3/2017,9674,668.27,502.54,6464843.98,4861571.96,1603272.02
+North America,Greenland,Office Supplies,Online,C,1/6/2015,531029593,2/2/2015,2312,651.21,524.96,1505597.52,1213707.52,291890.00
+Middle East and North Africa,Lebanon,Vegetables,Offline,C,7/7/2016,286906945,8/21/2016,996,154.06,90.93,153443.76,90566.28,62877.48
+Europe,Italy,Clothes,Online,M,4/18/2010,334539973,5/11/2010,6667,109.28,35.84,728569.76,238945.28,489624.48
+Europe,Belarus,Snacks,Offline,C,1/16/2016,403665006,2/19/2016,2300,152.58,97.44,350934.00,224112.00,126822.00
+North America,United States of America,Beverages,Offline,C,11/12/2012,294330871,12/16/2012,7900,47.45,31.79,374855.00,251141.00,123714.00
+Central America and the Caribbean,Saint Kitts and Nevis ,Baby Food,Offline,H,3/22/2011,326898896,5/7/2011,5503,255.28,159.42,1404805.84,877288.26,527517.58
+Europe,Poland,Cosmetics,Offline,H,4/13/2011,892042911,5/12/2011,4175,437.20,263.33,1825310.00,1099402.75,725907.25
+Sub-Saharan Africa,Kenya,Office Supplies,Offline,H,4/9/2014,200749242,4/15/2014,5017,651.21,524.96,3267120.57,2633724.32,633396.25
+Sub-Saharan Africa,Kenya,Clothes,Offline,L,2/17/2011,134316718,3/30/2011,6157,109.28,35.84,672836.96,220666.88,452170.08
+Europe,United Kingdom,Household,Online,C,7/30/2016,394356667,8/4/2016,7756,668.27,502.54,5183102.12,3897700.24,1285401.88
+Europe,Norway,Fruits,Offline,M,4/29/2012,752792918,5/12/2012,7008,9.33,6.92,65384.64,48495.36,16889.28
+Sub-Saharan Africa,Zimbabwe,Snacks,Offline,L,6/8/2011,601861798,7/20/2011,3136,152.58,97.44,478490.88,305571.84,172919.04
+Central America and the Caribbean,Saint Lucia,Fruits,Offline,H,9/3/2016,304112136,9/7/2016,2394,9.33,6.92,22336.02,16566.48,5769.54
+Middle East and North Africa,United Arab Emirates,Clothes,Online,M,9/24/2016,742405259,10/24/2016,3069,109.28,35.84,335380.32,109992.96,225387.36
+Sub-Saharan Africa,Lesotho,Baby Food,Online,L,9/21/2012,169914996,10/25/2012,478,255.28,159.42,122023.84,76202.76,45821.08
+Asia,Sri Lanka,Cereal,Offline,H,5/26/2014,960127675,7/11/2014,1970,205.70,117.11,405229.00,230706.70,174522.30
+North America,Mexico,Personal Care,Offline,M,8/22/2013,156842124,9/25/2013,1925,81.73,56.67,157330.25,109089.75,48240.50
+Middle East and North Africa,Yemen,Vegetables,Offline,L,12/21/2010,724169671,1/18/2011,6753,154.06,90.93,1040367.18,614050.29,426316.89
+Sub-Saharan Africa,Sao Tome and Principe,Clothes,Offline,C,10/6/2011,296534144,11/24/2011,9898,109.28,35.84,1081653.44,354744.32,726909.12
+Sub-Saharan Africa,Guinea,Personal Care,Online,C,11/17/2014,628671872,12/15/2014,6832,81.73,56.67,558379.36,387169.44,171209.92
+Sub-Saharan Africa,Sudan,Baby Food,Online,M,6/19/2016,845631682,7/26/2016,61,255.28,159.42,15572.08,9724.62,5847.46
+Australia and Oceania,Kiribati,Household,Offline,M,9/24/2013,592774903,10/2/2013,4122,668.27,502.54,2754608.94,2071469.88,683139.06
+Asia,Laos,Personal Care,Offline,L,4/21/2016,485775363,5/7/2016,580,81.73,56.67,47403.40,32868.60,14534.80
+Europe,Bosnia and Herzegovina,Vegetables,Online,C,3/2/2012,760619390,4/16/2012,3035,154.06,90.93,467572.10,275972.55,191599.55
+Asia,Malaysia,Household,Offline,M,11/13/2016,823605811,12/3/2016,2117,668.27,502.54,1414727.59,1063877.18,350850.41
+Sub-Saharan Africa,Burkina Faso,Baby Food,Offline,H,9/23/2016,601345956,10/20/2016,486,255.28,159.42,124066.08,77478.12,46587.96
+Sub-Saharan Africa,Namibia,Beverages,Offline,L,6/30/2010,990763652,8/12/2010,7836,47.45,31.79,371818.20,249106.44,122711.76
+Asia,Taiwan,Clothes,Online,M,2/15/2013,709095227,2/20/2013,5890,109.28,35.84,643659.20,211097.60,432561.60
+Europe,Ukraine,Beverages,Online,M,2/19/2014,343889510,4/2/2014,3403,47.45,31.79,161472.35,108181.37,53290.98
+Sub-Saharan Africa,Uganda,Meat,Offline,M,9/7/2011,103007829,10/20/2011,1160,421.89,364.69,489392.40,423040.40,66352.00
+Central America and the Caribbean,Antigua and Barbuda ,Snacks,Offline,H,5/5/2016,264624011,6/12/2016,6980,152.58,97.44,1065008.40,680131.20,384877.20
+Central America and the Caribbean,Guatemala,Beverages,Online,C,1/16/2017,727224385,2/1/2017,711,47.45,31.79,33736.95,22602.69,11134.26
+Central America and the Caribbean,Honduras,Snacks,Offline,H,2/18/2015,559607779,3/1/2015,9233,152.58,97.44,1408771.14,899663.52,509107.62
+Asia,Cambodia,Office Supplies,Online,L,1/10/2013,250885522,1/24/2013,1456,651.21,524.96,948161.76,764341.76,183820.00
+Central America and the Caribbean,Panama,Household,Offline,C,6/2/2010,360481441,6/9/2010,3324,668.27,502.54,2221329.48,1670442.96,550886.52
+Middle East and North Africa,Jordan,Cosmetics,Online,L,8/22/2015,168131864,9/28/2015,2810,437.20,263.33,1228532.00,739957.30,488574.70
+Sub-Saharan Africa,Lesotho,Clothes,Offline,C,7/30/2011,823885619,9/2/2011,4918,109.28,35.84,537439.04,176261.12,361177.92
+Europe,Malta,Baby Food,Offline,L,6/25/2012,398104035,8/12/2012,6686,255.28,159.42,1706802.08,1065882.12,640919.96
+Europe,Slovenia,Meat,Offline,M,9/25/2014,631460940,10/5/2014,2180,421.89,364.69,919720.20,795024.20,124696.00
+Middle East and North Africa,Yemen,Personal Care,Online,C,10/10/2015,184942662,11/2/2015,7498,81.73,56.67,612811.54,424911.66,187899.88
+Europe,Moldova ,Snacks,Offline,M,5/1/2010,489848029,5/20/2010,5772,152.58,97.44,880691.76,562423.68,318268.08
+Europe,Vatican City,Office Supplies,Online,L,11/27/2016,797788369,11/28/2016,2162,651.21,524.96,1407916.02,1134963.52,272952.50
+Europe,United Kingdom,Personal Care,Online,C,6/5/2013,430687510,6/10/2013,8860,81.73,56.67,724127.80,502096.20,222031.60
+Middle East and North Africa,Tunisia ,Meat,Offline,M,9/27/2016,130781781,10/31/2016,90,421.89,364.69,37970.10,32822.10,5148.00
+Australia and Oceania,Federated States of Micronesia,Vegetables,Offline,H,9/6/2010,710620009,10/1/2010,7107,154.06,90.93,1094904.42,646239.51,448664.91
+Sub-Saharan Africa,Equatorial Guinea,Snacks,Online,M,6/13/2010,803063523,7/16/2010,3197,152.58,97.44,487798.26,311515.68,176282.58
+Asia,Uzbekistan,Fruits,Online,L,5/13/2013,911286151,7/1/2013,8678,9.33,6.92,80965.74,60051.76,20913.98
+North America,Mexico,Cereal,Offline,M,4/2/2010,258774220,4/28/2010,5897,205.70,117.11,1213012.90,690597.67,522415.23
+Sub-Saharan Africa,The Gambia,Vegetables,Offline,C,12/4/2011,839326560,12/12/2011,4236,154.06,90.93,652598.16,385179.48,267418.68
+Europe,Portugal,Personal Care,Online,H,2/11/2015,667054498,2/12/2015,5104,81.73,56.67,417149.92,289243.68,127906.24
+Sub-Saharan Africa,Equatorial Guinea,Meat,Offline,M,11/2/2013,526381862,12/21/2013,6945,421.89,364.69,2930026.05,2532772.05,397254.00
+North America,United States of America,Personal Care,Online,C,9/30/2010,822044980,10/9/2010,232,81.73,56.67,18961.36,13147.44,5813.92
+Middle East and North Africa,Turkey,Fruits,Offline,C,5/5/2013,229092681,6/1/2013,2470,9.33,6.92,23045.10,17092.40,5952.70
+Asia,Singapore,Snacks,Online,C,1/18/2015,642886292,1/31/2015,3195,152.58,97.44,487493.10,311320.80,176172.30
+Sub-Saharan Africa,Djibouti,Snacks,Offline,H,2/19/2014,429099643,3/4/2014,8975,152.58,97.44,1369405.50,874524.00,494881.50
+Sub-Saharan Africa,Burkina Faso,Cosmetics,Offline,C,7/8/2017,273719060,8/17/2017,8407,437.20,263.33,3675540.40,2213815.31,1461725.09
+Sub-Saharan Africa,Sao Tome and Principe,Cosmetics,Offline,L,3/27/2014,933043372,5/6/2014,7123,437.20,263.33,3114175.60,1875699.59,1238476.01
+Asia,Laos,Snacks,Online,M,2/11/2017,983683907,3/10/2017,2783,152.58,97.44,424630.14,271175.52,153454.62
+North America,Canada,Fruits,Offline,C,7/19/2013,872564494,7/19/2013,79,9.33,6.92,737.07,546.68,190.39
+Europe,Denmark,Cereal,Online,H,9/14/2014,666921460,10/10/2014,5735,205.70,117.11,1179689.50,671625.85,508063.65
+Australia and Oceania,Nauru,Office Supplies,Online,C,11/19/2013,504303634,11/22/2013,3507,651.21,524.96,2283793.47,1841034.72,442758.75
+Sub-Saharan Africa,Ghana,Clothes,Offline,H,1/11/2013,142572343,3/2/2013,9179,109.28,35.84,1003081.12,328975.36,674105.76
+North America,Greenland,Baby Food,Offline,C,5/14/2011,309901416,6/1/2011,5570,255.28,159.42,1421909.60,887969.40,533940.20
+Australia and Oceania,Australia,Personal Care,Offline,H,9/28/2016,454777181,10/23/2016,7529,81.73,56.67,615345.17,426668.43,188676.74
+Australia and Oceania,Palau,Cereal,Online,H,8/1/2011,995998466,8/27/2011,6934,205.70,117.11,1426323.80,812040.74,614283.06
+Central America and the Caribbean,El Salvador,Snacks,Offline,C,3/25/2017,172676599,5/4/2017,7698,152.58,97.44,1174560.84,750093.12,424467.72
+Middle East and North Africa,Algeria,Vegetables,Online,H,6/13/2014,794235408,7/6/2014,762,154.06,90.93,117393.72,69288.66,48105.06
+Sub-Saharan Africa,Sao Tome and Principe,Snacks,Online,L,5/9/2015,790411221,6/24/2015,9100,152.58,97.44,1388478.00,886704.00,501774.00
+Europe,Austria,Office Supplies,Online,L,3/12/2014,861252868,3/28/2014,2717,651.21,524.96,1769337.57,1426316.32,343021.25
+Australia and Oceania,Samoa ,Vegetables,Offline,L,11/10/2013,427121675,11/15/2013,3650,154.06,90.93,562319.00,331894.50,230424.50
+Sub-Saharan Africa,Liberia,Personal Care,Offline,L,7/8/2014,778691470,8/1/2014,965,81.73,56.67,78869.45,54686.55,24182.90
+Europe,Vatican City,Baby Food,Online,C,5/24/2017,126948583,7/9/2017,5762,255.28,159.42,1470923.36,918578.04,552345.32
+Europe,Estonia,Clothes,Offline,H,6/8/2013,353191840,7/9/2013,6169,109.28,35.84,674148.32,221096.96,453051.36
+Europe,Belgium,Vegetables,Online,L,5/9/2017,259032571,5/13/2017,2349,154.06,90.93,361886.94,213594.57,148292.37
+Sub-Saharan Africa,Senegal,Clothes,Online,M,11/10/2010,516394603,12/9/2010,1493,109.28,35.84,163155.04,53509.12,109645.92
+Europe,Georgia,Meat,Offline,L,8/3/2014,517514264,9/4/2014,2826,421.89,364.69,1192261.14,1030613.94,161647.20
+Europe,United Kingdom,Cosmetics,Offline,H,3/2/2016,624940383,3/30/2016,2602,437.20,263.33,1137594.40,685184.66,452409.74
+Australia and Oceania,Solomon Islands,Fruits,Offline,L,11/9/2011,821534287,12/23/2011,9107,9.33,6.92,84968.31,63020.44,21947.87
+Sub-Saharan Africa,Gabon,Fruits,Online,M,5/4/2010,260469806,6/19/2010,7659,9.33,6.92,71458.47,53000.28,18458.19
+Sub-Saharan Africa,Equatorial Guinea,Vegetables,Online,H,10/18/2013,415233266,10/31/2013,5606,154.06,90.93,863660.36,509753.58,353906.78
+Middle East and North Africa,Saudi Arabia,Baby Food,Online,M,2/10/2014,129623496,2/25/2014,7328,255.28,159.42,1870691.84,1168229.76,702462.08
+Europe,Malta,Cosmetics,Online,C,10/21/2011,567751824,11/21/2011,9236,437.20,263.33,4037979.20,2432115.88,1605863.32
+Sub-Saharan Africa,Swaziland,Cosmetics,Online,L,3/31/2012,264042079,5/1/2012,4774,437.20,263.33,2087192.80,1257137.42,830055.38
+Asia,Myanmar,Snacks,Online,H,4/22/2014,973230588,6/8/2014,9413,152.58,97.44,1436235.54,917202.72,519032.82
+Sub-Saharan Africa,Swaziland,Vegetables,Online,C,2/15/2014,920366179,2/15/2014,5660,154.06,90.93,871979.60,514663.80,357315.80
+Asia,Indonesia,Vegetables,Offline,M,6/26/2016,650810182,7/21/2016,8050,154.06,90.93,1240183.00,731986.50,508196.50
+Sub-Saharan Africa,Benin,Clothes,Offline,H,11/15/2015,780236423,12/29/2015,8151,109.28,35.84,890741.28,292131.84,598609.44
+Sub-Saharan Africa,Mauritania,Fruits,Offline,C,5/31/2015,644631230,7/11/2015,9561,9.33,6.92,89204.13,66162.12,23042.01
+Sub-Saharan Africa,Tanzania,Meat,Online,C,7/4/2015,550293433,8/15/2015,2910,421.89,364.69,1227699.90,1061247.90,166452.00
+Middle East and North Africa,Pakistan,Baby Food,Offline,H,1/18/2010,423834359,2/20/2010,860,255.28,159.42,219540.80,137101.20,82439.60
+Europe,Spain,Fruits,Offline,H,12/6/2012,262177836,1/16/2013,3103,9.33,6.92,28950.99,21472.76,7478.23
+Europe,Croatia,Household,Online,L,5/25/2016,582560193,5/28/2016,1362,668.27,502.54,910183.74,684459.48,225724.26
+Central America and the Caribbean,Trinidad and Tobago,Household,Online,H,7/14/2017,172530257,8/31/2017,4392,668.27,502.54,2935041.84,2207155.68,727886.16
+Europe,Kosovo,Vegetables,Online,H,7/1/2014,139949357,7/14/2014,2980,154.06,90.93,459098.80,270971.40,188127.40
+Sub-Saharan Africa,Lesotho,Beverages,Offline,L,4/16/2010,762991321,5/17/2010,4942,47.45,31.79,234497.90,157106.18,77391.72
+Australia and Oceania,Vanuatu,Meat,Offline,C,7/23/2016,140142476,9/2/2016,128,421.89,364.69,54001.92,46680.32,7321.60
+Central America and the Caribbean,Costa Rica,Cereal,Offline,C,12/8/2011,940201652,1/1/2012,5417,205.70,117.11,1114276.90,634384.87,479892.03
+Australia and Oceania,Marshall Islands,Personal Care,Offline,M,12/23/2013,952280175,1/15/2014,9720,81.73,56.67,794415.60,550832.40,243583.20
+Australia and Oceania,Kiribati,Beverages,Online,M,10/23/2014,735801875,11/13/2014,8981,47.45,31.79,426148.45,285505.99,140642.46
+Europe,Albania,Clothes,Offline,H,3/9/2015,470503079,3/21/2015,1172,109.28,35.84,128076.16,42004.48,86071.68
+Asia,South Korea,Beverages,Online,H,2/21/2013,406432616,3/23/2013,1298,47.45,31.79,61590.10,41263.42,20326.68
+Europe,Austria,Beverages,Offline,C,5/10/2015,413951814,5/31/2015,6395,47.45,31.79,303442.75,203297.05,100145.70
+Europe,Germany,Office Supplies,Offline,L,8/19/2010,433734500,9/8/2010,532,651.21,524.96,346443.72,279278.72,67165.00
+North America,Mexico,Clothes,Offline,H,7/25/2011,926767003,8/20/2011,9806,109.28,35.84,1071599.68,351447.04,720152.64
+Europe,Ukraine,Office Supplies,Online,C,11/14/2012,624348151,12/8/2012,7347,651.21,524.96,4784439.87,3856881.12,927558.75
+Sub-Saharan Africa,Nigeria,Household,Online,C,5/6/2010,578089272,5/20/2010,8317,668.27,502.54,5558001.59,4179625.18,1378376.41
+Europe,Poland,Clothes,Offline,M,3/12/2012,109914195,4/16/2012,4908,109.28,35.84,536346.24,175902.72,360443.52
+Middle East and North Africa,Oman,Clothes,Online,H,7/23/2012,862059247,8/30/2012,1343,109.28,35.84,146763.04,48133.12,98629.92
+Europe,Georgia,Snacks,Online,C,5/31/2010,947073256,6/12/2010,8878,152.58,97.44,1354605.24,865072.32,489532.92
+Australia and Oceania,Tuvalu,Beverages,Offline,M,5/19/2013,797817552,5/29/2013,798,47.45,31.79,37865.10,25368.42,12496.68
+Central America and the Caribbean,Panama,Cereal,Offline,C,3/21/2011,917465960,4/14/2011,7421,205.70,117.11,1526499.70,869073.31,657426.39
+Sub-Saharan Africa,Central African Republic,Beverages,Offline,C,6/17/2017,529504811,6/24/2017,1095,47.45,31.79,51957.75,34810.05,17147.70
+Australia and Oceania,Solomon Islands,Vegetables,Offline,L,8/18/2012,727732932,8/21/2012,1201,154.06,90.93,185026.06,109206.93,75819.13
+Middle East and North Africa,Algeria,Baby Food,Offline,H,3/8/2016,426261651,3/26/2016,9150,255.28,159.42,2335812.00,1458693.00,877119.00
+Europe,Bosnia and Herzegovina,Personal Care,Online,L,7/24/2014,409514796,9/7/2014,3383,81.73,56.67,276492.59,191714.61,84777.98
+Europe,Latvia,Office Supplies,Online,L,5/31/2010,182228696,7/12/2010,4375,651.21,524.96,2849043.75,2296700.00,552343.75
+Sub-Saharan Africa,Liberia,Fruits,Offline,C,3/29/2011,219452178,4/3/2011,9631,9.33,6.92,89857.23,66646.52,23210.71
+Sub-Saharan Africa,Equatorial Guinea,Cereal,Offline,M,6/20/2010,616546571,8/3/2010,8686,205.70,117.11,1786710.20,1017217.46,769492.74
+Sub-Saharan Africa,Sierra Leone,Personal Care,Offline,H,12/10/2013,639185702,12/15/2013,8108,81.73,56.67,662666.84,459480.36,203186.48
+Sub-Saharan Africa,Republic of the Congo,Personal Care,Online,M,6/4/2013,973355901,7/24/2013,6496,81.73,56.67,530918.08,368128.32,162789.76
+Middle East and North Africa,Libya,Personal Care,Online,C,2/8/2013,575355994,3/6/2013,9479,81.73,56.67,774718.67,537174.93,237543.74
+Asia,Vietnam,Office Supplies,Online,H,9/2/2010,721797311,10/19/2010,4719,651.21,524.96,3073059.99,2477286.24,595773.75
+Sub-Saharan Africa,Djibouti,Cosmetics,Offline,H,3/22/2016,959603679,4/4/2016,6908,437.20,263.33,3020177.60,1819083.64,1201093.96
+Asia,Kyrgyzstan,Personal Care,Online,H,8/22/2010,456011426,9/29/2010,2769,81.73,56.67,226310.37,156919.23,69391.14
+Central America and the Caribbean,Jamaica,Clothes,Online,M,7/9/2017,248569381,8/1/2017,6058,109.28,35.84,662018.24,217118.72,444899.52
+Sub-Saharan Africa,Kenya,Cosmetics,Offline,M,1/31/2016,995138871,3/5/2016,2561,437.20,263.33,1119669.20,674388.13,445281.07
+Europe,Bosnia and Herzegovina,Household,Online,C,2/13/2013,723893725,3/11/2013,5095,668.27,502.54,3404835.65,2560441.30,844394.35
+Sub-Saharan Africa,Rwanda,Household,Online,C,6/30/2016,683320271,7/13/2016,8508,668.27,502.54,5685641.16,4275610.32,1410030.84
+Europe,Norway,Snacks,Offline,L,3/12/2016,392217338,3/15/2016,4681,152.58,97.44,714226.98,456116.64,258110.34
+Asia,South Korea,Personal Care,Offline,H,11/5/2010,789696252,11/19/2010,7525,81.73,56.67,615018.25,426441.75,188576.50
+Australia and Oceania,Tonga,Fruits,Offline,M,7/3/2011,185180842,7/4/2011,7981,9.33,6.92,74462.73,55228.52,19234.21
+Europe,Romania,Baby Food,Offline,C,2/19/2015,108407437,3/27/2015,9025,255.28,159.42,2303902.00,1438765.50,865136.50
+Asia,Nepal,Cosmetics,Offline,L,12/30/2015,359424865,1/25/2016,660,437.20,263.33,288552.00,173797.80,114754.20
+Europe,Iceland,Snacks,Offline,L,12/20/2016,358594453,2/2/2017,4922,152.58,97.44,750998.76,479599.68,271399.08
+Middle East and North Africa,Jordan,Cereal,Online,L,8/27/2010,496590030,10/14/2010,880,205.70,117.11,181016.00,103056.80,77959.20
+Europe,Denmark,Snacks,Offline,C,6/3/2013,784397923,6/15/2013,9631,152.58,97.44,1469497.98,938444.64,531053.34
+Australia and Oceania,New Zealand,Beverages,Online,H,3/18/2016,403316962,5/6/2016,9307,47.45,31.79,441617.15,295869.53,145747.62
+Asia,Vietnam,Fruits,Online,L,1/10/2011,854958474,2/10/2011,66,9.33,6.92,615.78,456.72,159.06
+Europe,Cyprus,Meat,Offline,M,6/9/2017,111246287,7/2/2017,9103,421.89,364.69,3840464.67,3319773.07,520691.60
+Sub-Saharan Africa,Sao Tome and Principe,Vegetables,Online,C,8/24/2010,264416730,8/24/2010,5641,154.06,90.93,869052.46,512936.13,356116.33
+Europe,Poland,Vegetables,Online,L,2/19/2016,777018630,3/19/2016,5935,154.06,90.93,914346.10,539669.55,374676.55
+Sub-Saharan Africa,Ghana,Beverages,Offline,M,1/10/2015,731913316,2/14/2015,8270,47.45,31.79,392411.50,262903.30,129508.20
+Sub-Saharan Africa,Lesotho,Household,Online,H,1/1/2016,182274615,2/5/2016,7964,668.27,502.54,5322102.28,4002228.56,1319873.72
+Europe,Moldova ,Clothes,Offline,H,9/1/2013,601588857,9/10/2013,2366,109.28,35.84,258556.48,84797.44,173759.04
+Australia and Oceania,Tonga,Personal Care,Offline,C,1/20/2015,833654868,2/13/2015,5856,81.73,56.67,478610.88,331859.52,146751.36
+Central America and the Caribbean,Saint Lucia,Cosmetics,Online,L,2/9/2013,242583978,2/20/2013,4845,437.20,263.33,2118234.00,1275833.85,842400.15
+Australia and Oceania,Tonga,Snacks,Online,L,3/16/2013,962800014,4/26/2013,2774,152.58,97.44,423256.92,270298.56,152958.36
+Europe,Russia,Vegetables,Offline,L,3/17/2014,249039304,5/1/2014,5119,154.06,90.93,788633.14,465470.67,323162.47
+Australia and Oceania,New Zealand,Beverages,Online,C,4/5/2012,826350677,5/18/2012,4383,47.45,31.79,207973.35,139335.57,68637.78
+Middle East and North Africa,Lebanon,Cosmetics,Online,L,2/22/2012,540095460,3/13/2012,5104,437.20,263.33,2231468.80,1344036.32,887432.48
+Europe,Denmark,Cereal,Online,C,11/30/2015,905947482,1/18/2016,8847,205.70,117.11,1819827.90,1036072.17,783755.73
+Europe,Italy,Vegetables,Online,H,7/22/2011,359893071,8/6/2011,9212,154.06,90.93,1419200.72,837647.16,581553.56
+Sub-Saharan Africa,Kenya,Meat,Online,L,8/13/2014,108231055,9/24/2014,6829,421.89,364.69,2881086.81,2490468.01,390618.80
+Sub-Saharan Africa,Namibia,Cosmetics,Online,M,5/31/2011,977572762,6/17/2011,4359,437.20,263.33,1905754.80,1147855.47,757899.33
+Middle East and North Africa,Qatar,Snacks,Online,H,11/5/2015,264842021,11/22/2015,1494,152.58,97.44,227954.52,145575.36,82379.16
+Central America and the Caribbean,Cuba,Snacks,Offline,H,7/28/2012,287275159,8/26/2012,9958,152.58,97.44,1519391.64,970307.52,549084.12
+Sub-Saharan Africa,Senegal,Personal Care,Online,M,11/1/2013,732421004,12/1/2013,8506,81.73,56.67,695195.38,482035.02,213160.36
+Australia and Oceania,Kiribati,Vegetables,Online,H,3/19/2010,908140885,3/31/2010,7924,154.06,90.93,1220771.44,720529.32,500242.12
+Asia,Mongolia,Cosmetics,Offline,H,4/14/2012,192608630,4/16/2012,6029,437.20,263.33,2635878.80,1587616.57,1048262.23
+Europe,Poland,Cosmetics,Offline,M,7/20/2016,284310567,9/2/2016,2670,437.20,263.33,1167324.00,703091.10,464232.90
+Central America and the Caribbean,Dominican Republic,Meat,Offline,H,10/13/2016,252045524,10/28/2016,4726,421.89,364.69,1993852.14,1723524.94,270327.20
+Australia and Oceania,Fiji,Snacks,Offline,M,5/28/2015,584924829,6/8/2015,1110,152.58,97.44,169363.80,108158.40,61205.40
+Europe,Bosnia and Herzegovina,Vegetables,Offline,M,2/6/2012,942372310,2/19/2012,7763,154.06,90.93,1195967.78,705889.59,490078.19
+Europe,Macedonia,Meat,Online,C,3/16/2015,604124295,4/2/2015,2659,421.89,364.69,1121805.51,969710.71,152094.80
+Europe,Kosovo,Fruits,Online,C,3/7/2015,720229613,3/11/2015,803,9.33,6.92,7491.99,5556.76,1935.23
+Middle East and North Africa,Oman,Cereal,Online,L,2/17/2011,261049592,3/12/2011,9230,205.70,117.11,1898611.00,1080925.30,817685.70
+Europe,Austria,Personal Care,Online,M,7/31/2014,967258059,8/8/2014,2009,81.73,56.67,164195.57,113850.03,50345.54
+Sub-Saharan Africa,Sudan,Cosmetics,Offline,L,5/26/2015,599841344,6/1/2015,5238,437.20,263.33,2290053.60,1379322.54,910731.06
+Sub-Saharan Africa,Benin,Fruits,Offline,M,11/20/2015,590098273,11/26/2015,2047,9.33,6.92,19098.51,14165.24,4933.27
+Middle East and North Africa,Libya,Cereal,Offline,L,10/30/2011,189640176,11/4/2011,7597,205.70,117.11,1562702.90,889684.67,673018.23
+Europe,Poland,Cereal,Offline,M,6/10/2011,520390880,7/24/2011,4080,205.70,117.11,839256.00,477808.80,361447.20
+Middle East and North Africa,Tunisia ,Cosmetics,Offline,C,6/3/2016,524586713,6/24/2016,5721,437.20,263.33,2501221.20,1506510.93,994710.27
+Sub-Saharan Africa,Mozambique,Personal Care,Offline,H,8/14/2010,114776504,9/10/2010,3773,81.73,56.67,308367.29,213815.91,94551.38
+Europe,Bosnia and Herzegovina,Fruits,Offline,L,10/15/2016,623821580,10/31/2016,1523,9.33,6.92,14209.59,10539.16,3670.43
+Middle East and North Africa,Lebanon,Cereal,Online,M,2/12/2017,754895770,3/12/2017,9289,205.70,117.11,1910747.30,1087834.79,822912.51
+Australia and Oceania,Australia,Beverages,Online,L,7/26/2017,631485402,8/12/2017,9418,47.45,31.79,446884.10,299398.22,147485.88
+Middle East and North Africa,United Arab Emirates,Personal Care,Online,L,10/23/2013,447389304,11/19/2013,1292,81.73,56.67,105595.16,73217.64,32377.52
+Sub-Saharan Africa,Zambia,Household,Online,M,2/25/2010,916718804,3/9/2010,6321,668.27,502.54,4224134.67,3176555.34,1047579.33
+Australia and Oceania,Kiribati,Snacks,Offline,M,10/4/2015,123897731,10/23/2015,2947,152.58,97.44,449653.26,287155.68,162497.58
+Europe,Bulgaria,Meat,Online,C,7/20/2010,273662412,7/23/2010,1644,421.89,364.69,693587.16,599550.36,94036.80
+Europe,Kosovo,Vegetables,Offline,M,3/8/2017,941061675,3/20/2017,9917,154.06,90.93,1527813.02,901752.81,626060.21
+Europe,Moldova ,Meat,Online,M,12/7/2013,421456849,12/10/2013,7302,421.89,364.69,3080640.78,2662966.38,417674.40
+Asia,Kyrgyzstan,Meat,Offline,L,3/21/2014,680521762,4/15/2014,367,421.89,364.69,154833.63,133841.23,20992.40
+Sub-Saharan Africa,Mozambique,Fruits,Online,M,5/18/2017,604242742,6/25/2017,7710,9.33,6.92,71934.30,53353.20,18581.10
+Central America and the Caribbean,Jamaica,Cosmetics,Offline,M,6/14/2012,948918616,7/25/2012,4960,437.20,263.33,2168512.00,1306116.80,862395.20
+Europe,Andorra,Cosmetics,Online,H,4/10/2012,291160714,5/26/2012,9780,437.20,263.33,4275816.00,2575367.40,1700448.60
+Australia and Oceania,Vanuatu,Fruits,Online,C,10/19/2011,877892863,10/21/2011,6862,9.33,6.92,64022.46,47485.04,16537.42
+Sub-Saharan Africa,Seychelles ,Vegetables,Online,M,8/16/2014,976351392,9/12/2014,2928,154.06,90.93,451087.68,266243.04,184844.64
+Europe,Georgia,Fruits,Offline,M,1/21/2014,724085128,2/10/2014,1735,9.33,6.92,16187.55,12006.20,4181.35
+Sub-Saharan Africa,Seychelles ,Clothes,Offline,H,1/13/2012,778955399,2/29/2012,9068,109.28,35.84,990951.04,324997.12,665953.92
+Asia,Turkmenistan,Meat,Online,M,5/9/2015,969136035,5/20/2015,7744,421.89,364.69,3267116.16,2824159.36,442956.80
+Sub-Saharan Africa,Namibia,Baby Food,Online,H,9/21/2016,743113362,10/21/2016,2612,255.28,159.42,666791.36,416405.04,250386.32
+Asia,Bangladesh,Snacks,Offline,L,9/15/2013,519686210,9/24/2013,5553,152.58,97.44,847276.74,541084.32,306192.42
+Central America and the Caribbean,Costa Rica,Meat,Online,C,7/4/2012,337965905,7/20/2012,477,421.89,364.69,201241.53,173957.13,27284.40
+Sub-Saharan Africa,Sudan,Fruits,Offline,C,8/8/2016,307376277,8/15/2016,8326,9.33,6.92,77681.58,57615.92,20065.66
+Asia,Vietnam,Vegetables,Offline,H,5/23/2015,157653653,5/27/2015,2074,154.06,90.93,319520.44,188588.82,130931.62
+Australia and Oceania,New Zealand,Cosmetics,Offline,C,9/12/2010,588846862,9/26/2010,1727,437.20,263.33,755044.40,454770.91,300273.49
+Sub-Saharan Africa,Niger,Personal Care,Offline,C,12/24/2012,121317231,1/2/2013,9319,81.73,56.67,761641.87,528107.73,233534.14
+Central America and the Caribbean,Trinidad and Tobago,Snacks,Online,C,11/2/2014,945738589,12/22/2014,3920,152.58,97.44,598113.60,381964.80,216148.80
+Middle East and North Africa,Lebanon,Clothes,Offline,H,6/29/2017,373097264,7/6/2017,6626,109.28,35.84,724089.28,237475.84,486613.44
+Central America and the Caribbean,Saint Lucia,Vegetables,Offline,M,11/22/2011,284692084,1/7/2012,5569,154.06,90.93,857960.14,506389.17,351570.97
+Asia,Kazakhstan,Fruits,Online,C,9/30/2012,382134377,11/6/2012,909,9.33,6.92,8480.97,6290.28,2190.69
+Sub-Saharan Africa,Sao Tome and Principe,Office Supplies,Online,C,12/1/2016,437347972,1/16/2017,9839,651.21,524.96,6407255.19,5165081.44,1242173.75
+Europe,Luxembourg,Vegetables,Online,M,9/30/2014,742569196,11/17/2014,1581,154.06,90.93,243568.86,143760.33,99808.53
+Europe,Poland,Household,Online,M,7/29/2016,760346877,8/6/2016,2392,668.27,502.54,1598501.84,1202075.68,396426.16
+Central America and the Caribbean,Guatemala,Snacks,Online,H,2/5/2011,473542344,2/9/2011,558,152.58,97.44,85139.64,54371.52,30768.12
+Sub-Saharan Africa,Sudan,Vegetables,Online,M,7/25/2014,835329425,7/27/2014,1395,154.06,90.93,214913.70,126847.35,88066.35
+Middle East and North Africa,Iraq,Vegetables,Online,L,1/5/2014,619194447,2/7/2014,2252,154.06,90.93,346943.12,204774.36,142168.76
+Sub-Saharan Africa,Malawi,Vegetables,Online,M,6/21/2016,468936240,7/2/2016,7509,154.06,90.93,1156836.54,682793.37,474043.17
+Australia and Oceania,Fiji,Office Supplies,Offline,L,11/21/2014,648666131,12/12/2014,3578,651.21,524.96,2330029.38,1878306.88,451722.50
+Middle East and North Africa,Afghanistan,Household,Offline,C,8/21/2014,592807948,9/19/2014,3900,668.27,502.54,2606253.00,1959906.00,646347.00
+Sub-Saharan Africa,Zimbabwe,Baby Food,Offline,M,8/1/2014,256098020,8/21/2014,3950,255.28,159.42,1008356.00,629709.00,378647.00
+Asia,Nepal,Household,Online,C,11/13/2010,563585174,11/26/2010,6232,668.27,502.54,4164658.64,3131829.28,1032829.36
+Europe,Moldova ,Cosmetics,Online,M,11/5/2015,260630738,12/19/2015,5282,437.20,263.33,2309290.40,1390909.06,918381.34
+Asia,Kyrgyzstan,Household,Offline,H,6/6/2016,862908542,7/9/2016,2668,668.27,502.54,1782944.36,1340776.72,442167.64
+Asia,China,Personal Care,Offline,C,9/30/2015,806404912,10/17/2015,1988,81.73,56.67,162479.24,112659.96,49819.28
+Sub-Saharan Africa,Djibouti,Household,Offline,C,3/13/2014,397418677,4/2/2014,3873,668.27,502.54,2588209.71,1946337.42,641872.29
+Europe,Spain,Meat,Online,H,4/2/2013,462561166,5/2/2013,983,421.89,364.69,414717.87,358490.27,56227.60
+Asia,China,Personal Care,Online,M,8/28/2011,998756206,9/18/2011,3011,81.73,56.67,246089.03,170633.37,75455.66
+Sub-Saharan Africa,Uganda,Cosmetics,Offline,H,10/16/2016,723240125,11/18/2016,1680,437.20,263.33,734496.00,442394.40,292101.60
+Asia,Tajikistan,Clothes,Offline,H,8/10/2010,223561751,9/21/2010,5745,109.28,35.84,627813.60,205900.80,421912.80
+North America,United States of America,Meat,Offline,M,12/22/2013,607582414,1/30/2014,5993,421.89,364.69,2528386.77,2185587.17,342799.60
+Europe,Netherlands,Personal Care,Offline,H,10/2/2014,353475940,10/4/2014,240,81.73,56.67,19615.20,13600.80,6014.40
+Australia and Oceania,Papua New Guinea,Cereal,Offline,H,1/5/2017,259728658,1/29/2017,8336,205.70,117.11,1714715.20,976228.96,738486.24
+Sub-Saharan Africa,Botswana,Cereal,Offline,L,7/14/2014,295139396,8/18/2014,7161,205.70,117.11,1473017.70,838624.71,634392.99
+Australia and Oceania,Solomon Islands,Vegetables,Online,L,4/20/2017,948819482,5/17/2017,5624,154.06,90.93,866433.44,511390.32,355043.12
+Sub-Saharan Africa,Djibouti,Baby Food,Offline,M,6/8/2017,980192744,7/12/2017,9670,255.28,159.42,2468557.60,1541591.40,926966.20
+Central America and the Caribbean,Nicaragua,Meat,Online,C,9/12/2015,568995511,11/1/2015,7271,421.89,364.69,3067562.19,2651660.99,415901.20
+Sub-Saharan Africa,Liberia,Snacks,Online,C,2/13/2010,865276610,2/19/2010,3432,152.58,97.44,523654.56,334414.08,189240.48
+Middle East and North Africa,Morocco,Office Supplies,Online,L,12/14/2014,839397370,12/17/2014,5190,651.21,524.96,3379779.90,2724542.40,655237.50
+Europe,Armenia,Beverages,Online,H,6/5/2011,432031619,6/29/2011,6612,47.45,31.79,313739.40,210195.48,103543.92
+Europe,Armenia,Household,Online,L,2/19/2012,104165685,3/6/2012,3796,668.27,502.54,2536752.92,1907641.84,629111.08
+Sub-Saharan Africa,Sudan,Fruits,Offline,M,10/20/2011,387098395,11/5/2011,9872,9.33,6.92,92105.76,68314.24,23791.52
+Central America and the Caribbean,Saint Kitts and Nevis ,Clothes,Offline,L,10/14/2013,532441079,11/8/2013,2,109.28,35.84,218.56,71.68,146.88
+Europe,Ukraine,Personal Care,Online,M,2/26/2011,762117564,3/28/2011,6378,81.73,56.67,521273.94,361441.26,159832.68
+Europe,Finland,Snacks,Offline,H,3/10/2013,918364179,4/11/2013,3223,152.58,97.44,491765.34,314049.12,177716.22
+Europe,Georgia,Meat,Online,M,4/18/2011,913729751,5/9/2011,1793,421.89,364.69,756448.77,653889.17,102559.60
+Sub-Saharan Africa,Burkina Faso,Household,Offline,H,2/4/2013,281075608,3/26/2013,5373,668.27,502.54,3590614.71,2700147.42,890467.29
+Sub-Saharan Africa,Namibia,Vegetables,Offline,H,12/1/2015,423575580,12/10/2015,4282,154.06,90.93,659684.92,389362.26,270322.66
+Middle East and North Africa,Libya,Cereal,Offline,L,7/30/2010,564715993,8/3/2010,866,205.70,117.11,178136.20,101417.26,76718.94
+Central America and the Caribbean,Guatemala,Beverages,Offline,H,6/19/2015,898295676,7/17/2015,4508,47.45,31.79,213904.60,143309.32,70595.28
+Sub-Saharan Africa,Cote d'Ivoire,Office Supplies,Offline,H,3/3/2012,338425958,4/8/2012,6616,651.21,524.96,4308405.36,3473135.36,835270.00
+Central America and the Caribbean,Nicaragua,Fruits,Online,M,6/4/2017,569530665,6/25/2017,5635,9.33,6.92,52574.55,38994.20,13580.35
+Europe,Armenia,Snacks,Online,H,2/28/2011,196346127,4/12/2011,2037,152.58,97.44,310805.46,198485.28,112320.18
+Asia,South Korea,Household,Online,M,1/11/2016,593921172,2/27/2016,3328,668.27,502.54,2224002.56,1672453.12,551549.44
+Middle East and North Africa,Jordan,Cosmetics,Online,L,4/20/2010,957617127,5/31/2010,9043,437.20,263.33,3953599.60,2381293.19,1572306.41
+Europe,Cyprus,Personal Care,Online,M,12/21/2014,553107821,1/13/2015,5751,81.73,56.67,470029.23,325909.17,144120.06
+Australia and Oceania,Tonga,Cereal,Offline,L,3/26/2014,966379582,3/29/2014,2048,205.70,117.11,421273.60,239841.28,181432.32
+Asia,Singapore,Baby Food,Online,H,4/10/2012,253731238,5/13/2012,3567,255.28,159.42,910583.76,568651.14,341932.62
+Europe,San Marino,Cereal,Online,M,5/8/2014,591774117,5/30/2014,7967,205.70,117.11,1638811.90,933015.37,705796.53
+Europe,Cyprus,Personal Care,Online,C,6/2/2015,627432048,6/23/2015,9941,81.73,56.67,812477.93,563356.47,249121.46
+Sub-Saharan Africa,Republic of the Congo,Fruits,Online,C,7/5/2011,427941358,8/20/2011,6212,9.33,6.92,57957.96,42987.04,14970.92
+Middle East and North Africa,Algeria,Baby Food,Online,L,1/24/2011,130850875,3/11/2011,537,255.28,159.42,137085.36,85608.54,51476.82
+Asia,Bangladesh,Meat,Offline,C,1/13/2016,394021928,2/20/2016,8699,421.89,364.69,3670021.11,3172438.31,497582.80
+Asia,China,Meat,Online,C,6/26/2010,145628345,7/21/2010,3518,421.89,364.69,1484209.02,1282979.42,201229.60
+Sub-Saharan Africa,South Sudan,Meat,Offline,M,6/3/2017,634156453,6/28/2017,9842,421.89,364.69,4152241.38,3589278.98,562962.40
+Central America and the Caribbean,Haiti,Cereal,Online,L,9/11/2011,478405082,10/24/2011,9550,205.70,117.11,1964435.00,1118400.50,846034.50
+Middle East and North Africa,Azerbaijan,Personal Care,Offline,C,8/23/2014,617485558,10/8/2014,6554,81.73,56.67,535658.42,371415.18,164243.24
+Sub-Saharan Africa,Nigeria,Meat,Offline,C,8/8/2014,260821712,9/19/2014,1795,421.89,364.69,757292.55,654618.55,102674.00
+Sub-Saharan Africa,Sudan,Beverages,Offline,C,2/14/2016,938149869,2/14/2016,8249,47.45,31.79,391415.05,262235.71,129179.34
+Sub-Saharan Africa,Swaziland,Fruits,Online,L,6/12/2013,649518859,7/13/2013,5919,9.33,6.92,55224.27,40959.48,14264.79
+Europe,Germany,Meat,Offline,M,1/14/2017,615290009,1/18/2017,6842,421.89,364.69,2886571.38,2495208.98,391362.40
+Middle East and North Africa,Iraq,Clothes,Online,M,12/3/2011,326137149,1/2/2012,85,109.28,35.84,9288.80,3046.40,6242.40
+Asia,Turkmenistan,Beverages,Online,L,6/20/2014,693046605,7/21/2014,6746,47.45,31.79,320097.70,214455.34,105642.36
+Europe,Italy,Beverages,Online,H,8/13/2015,897317206,9/1/2015,4957,47.45,31.79,235209.65,157583.03,77626.62
+Asia,Bhutan,Meat,Offline,L,12/10/2014,640560281,12/30/2014,4877,421.89,364.69,2057557.53,1778593.13,278964.40
+Europe,Montenegro,Personal Care,Offline,L,11/14/2016,594699656,12/30/2016,3699,81.73,56.67,302319.27,209622.33,92696.94
+Asia,Indonesia,Personal Care,Offline,M,10/1/2011,151971662,10/24/2011,647,81.73,56.67,52879.31,36665.49,16213.82
+Europe,Ukraine,Cosmetics,Offline,M,6/28/2017,574925124,7/13/2017,1975,437.20,263.33,863470.00,520076.75,343393.25
+Europe,Ukraine,Beverages,Offline,M,3/19/2015,946421372,3/21/2015,5971,47.45,31.79,283323.95,189818.09,93505.86
+Asia,Japan,Cereal,Offline,L,8/7/2013,419634234,9/25/2013,7950,205.70,117.11,1635315.00,931024.50,704290.50
+Australia and Oceania,Vanuatu,Cosmetics,Offline,H,10/31/2014,468050038,12/4/2014,5262,437.20,263.33,2300546.40,1385642.46,914903.94
+Sub-Saharan Africa,Burundi,Vegetables,Online,L,10/16/2010,835467612,11/12/2010,2287,154.06,90.93,352335.22,207956.91,144378.31
+Europe,Armenia,Clothes,Offline,C,2/21/2017,885998284,2/28/2017,5436,109.28,35.84,594046.08,194826.24,399219.84
+Europe,Hungary,Household,Offline,L,7/17/2016,954065883,9/1/2016,8151,668.27,502.54,5447068.77,4096203.54,1350865.23
+Europe,Malta,Beverages,Online,M,6/7/2015,994406735,6/30/2015,5906,47.45,31.79,280239.70,187751.74,92487.96
+Europe,Austria,Personal Care,Online,M,7/9/2017,132069671,7/20/2017,1205,81.73,56.67,98484.65,68287.35,30197.30
+Sub-Saharan Africa,Republic of the Congo,Office Supplies,Offline,H,6/12/2012,712416017,7/27/2012,8586,651.21,524.96,5591289.06,4507306.56,1083982.50
+Sub-Saharan Africa,Sao Tome and Principe,Vegetables,Offline,M,6/2/2017,651119601,7/17/2017,9614,154.06,90.93,1481132.84,874201.02,606931.82
+Sub-Saharan Africa,Democratic Republic of the Congo,Baby Food,Online,L,11/2/2012,184166753,12/20/2012,7890,255.28,159.42,2014159.20,1257823.80,756335.40
+Sub-Saharan Africa,Eritrea,Cereal,Online,H,4/3/2014,517856299,4/30/2014,4042,205.70,117.11,831439.40,473358.62,358080.78
+Middle East and North Africa,Qatar,Baby Food,Offline,H,7/26/2015,678799569,8/15/2015,732,255.28,159.42,186864.96,116695.44,70169.52
+Sub-Saharan Africa,Sudan,Meat,Online,C,7/7/2015,663920390,7/10/2015,7652,421.89,364.69,3228302.28,2790607.88,437694.40
+Europe,Belarus,Household,Online,M,11/30/2013,990455090,12/14/2013,6526,668.27,502.54,4361130.02,3279576.04,1081553.98
+Europe,Norway,Cereal,Offline,C,6/6/2015,445952498,7/7/2015,6109,205.70,117.11,1256621.30,715424.99,541196.31
+Middle East and North Africa,Oman,Snacks,Offline,C,8/21/2010,138273942,10/4/2010,7187,152.58,97.44,1096592.46,700301.28,396291.18
+Sub-Saharan Africa,Sierra Leone,Cosmetics,Offline,L,2/13/2010,345593249,3/15/2010,7577,437.20,263.33,3312664.40,1995251.41,1317412.99
+Central America and the Caribbean,Antigua and Barbuda ,Cosmetics,Offline,H,5/18/2010,966396749,6/20/2010,7128,437.20,263.33,3116361.60,1877016.24,1239345.36
+Sub-Saharan Africa,Mauritius ,Snacks,Online,L,10/3/2012,169483268,11/4/2012,2720,152.58,97.44,415017.60,265036.80,149980.80
+Asia,Nepal,Cereal,Online,M,2/6/2012,243964135,2/27/2012,3264,205.70,117.11,671404.80,382247.04,289157.76
+Middle East and North Africa,Oman,Clothes,Online,C,9/4/2015,849263179,10/6/2015,4702,109.28,35.84,513834.56,168519.68,345314.88
+Sub-Saharan Africa,Togo,Household,Offline,M,8/30/2016,365116727,9/8/2016,5008,668.27,502.54,3346696.16,2516720.32,829975.84
+Middle East and North Africa,Tunisia ,Meat,Online,H,2/7/2013,841573607,3/17/2013,9187,421.89,364.69,3875903.43,3350407.03,525496.40
+Middle East and North Africa,Yemen,Beverages,Offline,C,9/3/2011,348995149,9/14/2011,4275,47.45,31.79,202848.75,135902.25,66946.50
+Europe,Estonia,Office Supplies,Offline,M,4/26/2016,628055179,5/13/2016,4339,651.21,524.96,2825600.19,2277801.44,547798.75
+Sub-Saharan Africa,Ethiopia,Office Supplies,Offline,C,12/1/2016,339740025,12/4/2016,5478,651.21,524.96,3567328.38,2875730.88,691597.50
+Middle East and North Africa,Azerbaijan,Office Supplies,Online,L,10/6/2015,915348517,10/10/2015,822,651.21,524.96,535294.62,431517.12,103777.50
+Asia,Uzbekistan,Personal Care,Online,C,3/20/2016,706491982,4/11/2016,5532,81.73,56.67,452130.36,313498.44,138631.92
+Central America and the Caribbean,Panama,Vegetables,Offline,C,5/7/2011,835094249,6/20/2011,1801,154.06,90.93,277462.06,163764.93,113697.13
+Europe,Slovenia,Personal Care,Online,C,6/6/2010,243391644,6/27/2010,3851,81.73,56.67,314742.23,218236.17,96506.06
+Australia and Oceania,Federated States of Micronesia,Household,Offline,H,6/12/2012,643932998,7/25/2012,2938,668.27,502.54,1963377.26,1476462.52,486914.74
+Asia,Taiwan,Vegetables,Offline,H,6/13/2017,669579637,6/24/2017,2349,154.06,90.93,361886.94,213594.57,148292.37
+Europe,Ukraine,Clothes,Online,H,3/11/2015,823505389,3/30/2015,2400,109.28,35.84,262272.00,86016.00,176256.00
+Central America and the Caribbean,Antigua and Barbuda ,Meat,Offline,H,8/19/2011,329196584,9/9/2011,5439,421.89,364.69,2294659.71,1983548.91,311110.80
+Asia,Cambodia,Meat,Online,L,1/7/2010,280452048,1/14/2010,848,421.89,364.69,357762.72,309257.12,48505.60
+Central America and the Caribbean,Grenada,Office Supplies,Offline,H,8/29/2014,491383111,10/5/2014,37,651.21,524.96,24094.77,19423.52,4671.25
+Europe,Ireland,Snacks,Online,L,12/30/2011,846413600,12/31/2011,1448,152.58,97.44,220935.84,141093.12,79842.72
+Europe,Cyprus,Fruits,Offline,C,3/31/2012,850279843,4/10/2012,5556,9.33,6.92,51837.48,38447.52,13389.96
+Sub-Saharan Africa,Kenya,Fruits,Offline,M,5/6/2015,978030669,5/14/2015,9864,9.33,6.92,92031.12,68258.88,23772.24
+Asia,Bhutan,Beverages,Offline,H,9/18/2014,425027406,9/23/2014,3909,47.45,31.79,185482.05,124267.11,61214.94
+Central America and the Caribbean,Saint Lucia,Beverages,Online,M,3/12/2016,256943881,4/30/2016,4259,47.45,31.79,202089.55,135393.61,66695.94
+Middle East and North Africa,Oman,Cosmetics,Offline,H,7/24/2011,259766423,9/11/2011,9512,437.20,263.33,4158646.40,2504794.96,1653851.44
+Central America and the Caribbean,Saint Lucia,Beverages,Online,H,7/26/2012,289793860,7/29/2012,5298,47.45,31.79,251390.10,168423.42,82966.68
+Sub-Saharan Africa,Eritrea,Fruits,Offline,H,11/24/2016,723637521,12/20/2016,9278,9.33,6.92,86563.74,64203.76,22359.98
+Sub-Saharan Africa,Comoros,Cereal,Offline,H,12/10/2011,208221232,12/28/2011,6145,205.70,117.11,1264026.50,719640.95,544385.55
+Central America and the Caribbean,Panama,Vegetables,Online,C,6/9/2016,610781323,7/21/2016,2621,154.06,90.93,403791.26,238327.53,165463.73
+Asia,Brunei,Beverages,Offline,H,2/14/2016,268866622,4/4/2016,2463,47.45,31.79,116869.35,78298.77,38570.58
+Middle East and North Africa,Lebanon,Office Supplies,Offline,H,12/6/2012,740338456,12/12/2012,1456,651.21,524.96,948161.76,764341.76,183820.00
+Australia and Oceania,Solomon Islands,Household,Offline,C,8/30/2013,953370654,9/16/2013,2417,668.27,502.54,1615208.59,1214639.18,400569.41
+Australia and Oceania,Tuvalu,Cosmetics,Offline,H,1/9/2011,356449544,2/26/2011,196,437.20,263.33,85691.20,51612.68,34078.52
+Europe,Austria,Office Supplies,Online,H,2/25/2010,268373954,2/28/2010,6672,651.21,524.96,4344873.12,3502533.12,842340.00
+Sub-Saharan Africa,Malawi,Snacks,Offline,H,4/1/2017,728255212,4/4/2017,5755,152.58,97.44,878097.90,560767.20,317330.70
+Sub-Saharan Africa,Seychelles ,Snacks,Offline,C,1/28/2013,945517146,2/1/2013,8390,152.58,97.44,1280146.20,817521.60,462624.60
+Sub-Saharan Africa,Burundi,Household,Offline,H,4/28/2017,649896085,5/24/2017,7548,668.27,502.54,5044101.96,3793171.92,1250930.04
+Sub-Saharan Africa,South Sudan,Personal Care,Online,M,9/1/2016,541440856,9/27/2016,3236,81.73,56.67,264478.28,183384.12,81094.16
+Australia and Oceania,Marshall Islands,Personal Care,Offline,M,12/30/2013,940512788,1/25/2014,7489,81.73,56.67,612075.97,424401.63,187674.34
+Sub-Saharan Africa,Ghana,Snacks,Offline,H,1/18/2017,437785708,2/25/2017,9375,152.58,97.44,1430437.50,913500.00,516937.50
+Asia,Thailand,Fruits,Online,M,11/30/2011,844245946,1/1/2012,9991,9.33,6.92,93216.03,69137.72,24078.31
+Middle East and North Africa,Kuwait,Household,Offline,C,3/29/2012,441192328,4/20/2012,7469,668.27,502.54,4991308.63,3753471.26,1237837.37
+Asia,Indonesia,Beverages,Online,L,1/13/2010,730236184,2/14/2010,1969,47.45,31.79,93429.05,62594.51,30834.54
+Asia,Nepal,Snacks,Offline,L,4/19/2017,583301341,5/13/2017,684,152.58,97.44,104364.72,66648.96,37715.76
+Sub-Saharan Africa,Democratic Republic of the Congo,Beverages,Online,L,10/18/2016,292624127,11/13/2016,2837,47.45,31.79,134615.65,90188.23,44427.42
+Central America and the Caribbean,Saint Kitts and Nevis ,Beverages,Online,C,4/22/2011,220753371,4/23/2011,4683,47.45,31.79,222208.35,148872.57,73335.78
+Europe,Serbia,Cosmetics,Online,H,3/25/2012,350550401,4/22/2012,4508,437.20,263.33,1970897.60,1187091.64,783805.96
+Middle East and North Africa,Turkey,Cereal,Offline,L,2/9/2013,735189044,3/3/2013,7631,205.70,117.11,1569696.70,893666.41,676030.29
+Sub-Saharan Africa,South Africa,Cereal,Offline,M,2/15/2016,148155629,2/29/2016,1398,205.70,117.11,287568.60,163719.78,123848.82
+Central America and the Caribbean,Jamaica,Meat,Offline,C,2/25/2013,133248984,3/17/2013,190,421.89,364.69,80159.10,69291.10,10868.00
+Sub-Saharan Africa,Cape Verde,Vegetables,Offline,L,4/18/2012,954580438,5/11/2012,419,154.06,90.93,64551.14,38099.67,26451.47
+Central America and the Caribbean,Trinidad and Tobago,Snacks,Offline,L,5/8/2011,246573817,6/17/2011,5527,152.58,97.44,843309.66,538550.88,304758.78
+Australia and Oceania,Tuvalu,Beverages,Offline,L,10/1/2016,663965451,10/5/2016,987,47.45,31.79,46833.15,31376.73,15456.42
+North America,Mexico,Household,Offline,H,1/27/2017,431804168,3/6/2017,9304,668.27,502.54,6217584.08,4675632.16,1541951.92
+Asia,Laos,Snacks,Online,M,2/4/2017,995451295,2/28/2017,5014,152.58,97.44,765036.12,488564.16,276471.96
+Sub-Saharan Africa,Chad,Fruits,Offline,H,4/23/2011,270580661,5/28/2011,9685,9.33,6.92,90361.05,67020.20,23340.85
+Europe,San Marino,Personal Care,Online,C,5/27/2010,293178594,6/1/2010,6916,81.73,56.67,565244.68,391929.72,173314.96
+Sub-Saharan Africa,Mauritania,Household,Offline,C,10/14/2014,469543921,10/25/2014,7336,668.27,502.54,4902428.72,3686633.44,1215795.28
+Asia,Cambodia,Clothes,Online,M,10/11/2010,726287972,11/19/2010,3606,109.28,35.84,394063.68,129239.04,264824.64
+Sub-Saharan Africa,Malawi,Personal Care,Offline,C,4/9/2012,160334575,4/23/2012,5418,81.73,56.67,442813.14,307038.06,135775.08
+Sub-Saharan Africa,Eritrea,Vegetables,Online,C,7/5/2011,188920056,7/30/2011,4498,154.06,90.93,692961.88,409003.14,283958.74
+Sub-Saharan Africa,Nigeria,Personal Care,Online,H,2/23/2013,499593245,4/13/2013,9598,81.73,56.67,784444.54,543918.66,240525.88
+Australia and Oceania,Nauru,Office Supplies,Offline,C,5/6/2015,400215470,6/1/2015,1506,651.21,524.96,980722.26,790589.76,190132.50
+Europe,Georgia,Baby Food,Online,H,7/14/2013,168960559,8/19/2013,8039,255.28,159.42,2052195.92,1281577.38,770618.54
+Middle East and North Africa,Kuwait,Office Supplies,Offline,M,10/15/2011,604314839,11/4/2011,9045,651.21,524.96,5890194.45,4748263.20,1141931.25
+Asia,China,Snacks,Offline,L,6/15/2011,775077140,6/22/2011,1404,152.58,97.44,214222.32,136805.76,77416.56
+Europe,Albania,Beverages,Offline,M,12/11/2014,270358788,1/24/2015,4028,47.45,31.79,191128.60,128050.12,63078.48
+Sub-Saharan Africa,Guinea,Clothes,Online,C,5/21/2014,549583613,5/29/2014,2859,109.28,35.84,312431.52,102466.56,209964.96
+Middle East and North Africa,Saudi Arabia,Baby Food,Offline,H,7/13/2010,892487943,8/31/2010,5870,255.28,159.42,1498493.60,935795.40,562698.20
+Sub-Saharan Africa,Guinea-Bissau,Office Supplies,Online,L,7/24/2016,649120604,9/8/2016,8067,651.21,524.96,5253311.07,4234852.32,1018458.75
+Europe,Italy,Personal Care,Offline,M,6/9/2016,589842927,7/28/2016,6485,81.73,56.67,530019.05,367504.95,162514.10
+Europe,Poland,Cereal,Offline,C,2/10/2014,655328738,3/22/2014,5191,205.70,117.11,1067788.70,607918.01,459870.69
+Europe,Albania,Vegetables,Online,M,8/7/2014,406564366,8/25/2014,286,154.06,90.93,44061.16,26005.98,18055.18
+Europe,Spain,Clothes,Online,H,8/16/2012,374848639,9/6/2012,4897,109.28,35.84,535144.16,175508.48,359635.68
+Sub-Saharan Africa,Central African Republic,Personal Care,Online,L,7/19/2011,711792886,9/6/2011,4187,81.73,56.67,342203.51,237277.29,104926.22
+Sub-Saharan Africa,Mauritius ,Fruits,Online,L,1/4/2012,739320933,2/10/2012,348,9.33,6.92,3246.84,2408.16,838.68
+Sub-Saharan Africa,Comoros,Personal Care,Online,L,9/18/2015,299669110,10/26/2015,7604,81.73,56.67,621474.92,430918.68,190556.24
+Central America and the Caribbean,Grenada,Baby Food,Offline,H,1/26/2014,205386245,3/9/2014,7209,255.28,159.42,1840313.52,1149258.78,691054.74
+Central America and the Caribbean,Haiti,Cosmetics,Offline,M,9/14/2014,889333665,9/15/2014,2449,437.20,263.33,1070702.80,644895.17,425807.63
+Middle East and North Africa,Yemen,Vegetables,Offline,L,12/8/2014,154685199,12/15/2014,3643,154.06,90.93,561240.58,331257.99,229982.59
+Australia and Oceania,New Zealand,Cereal,Offline,C,2/27/2013,824927175,3/13/2013,3138,205.70,117.11,645486.60,367491.18,277995.42
+Europe,Slovakia,Fruits,Offline,L,8/14/2012,393858420,8/29/2012,314,9.33,6.92,2929.62,2172.88,756.74
+North America,Mexico,Personal Care,Online,M,1/19/2010,475590264,2/4/2010,6583,81.73,56.67,538028.59,373058.61,164969.98
+Middle East and North Africa,Lebanon,Household,Online,M,8/11/2014,954546535,8/21/2014,387,668.27,502.54,258620.49,194482.98,64137.51
+Europe,Malta,Beverages,Online,C,10/21/2013,435463559,10/27/2013,2199,47.45,31.79,104342.55,69906.21,34436.34
+Central America and the Caribbean,Belize,Beverages,Offline,C,2/19/2015,293390166,4/10/2015,9525,47.45,31.79,451961.25,302799.75,149161.50
+Sub-Saharan Africa,Tanzania,Beverages,Offline,H,1/10/2012,623687684,2/29/2012,1900,47.45,31.79,90155.00,60401.00,29754.00
+Asia,India,Office Supplies,Offline,L,4/28/2010,692029941,4/30/2010,5893,651.21,524.96,3837580.53,3093589.28,743991.25
+Europe,Sweden,Vegetables,Offline,C,12/7/2016,284403264,12/27/2016,101,154.06,90.93,15560.06,9183.93,6376.13
+Middle East and North Africa,Tunisia ,Cereal,Offline,L,5/2/2013,157106482,5/3/2013,154,205.70,117.11,31677.80,18034.94,13642.86
+Asia,Laos,Personal Care,Offline,H,5/7/2012,686750924,5/16/2012,3714,81.73,56.67,303545.22,210472.38,93072.84
+Middle East and North Africa,Azerbaijan,Snacks,Offline,L,7/4/2016,520260417,8/16/2016,5474,152.58,97.44,835222.92,533386.56,301836.36
+Central America and the Caribbean,Honduras,Household,Online,H,4/8/2014,624871289,4/23/2014,2155,668.27,502.54,1440121.85,1082973.70,357148.15
+Australia and Oceania,Fiji,Cereal,Online,C,1/29/2014,238132369,3/1/2014,7515,205.70,117.11,1545835.50,880081.65,665753.85
+Europe,Romania,Personal Care,Online,L,4/21/2010,917904984,4/24/2010,7338,81.73,56.67,599734.74,415844.46,183890.28
+Australia and Oceania,Vanuatu,Cereal,Offline,H,4/24/2017,692362964,5/31/2017,4442,205.70,117.11,913719.40,520202.62,393516.78
+Middle East and North Africa,Bahrain,Baby Food,Online,H,9/1/2012,809992635,10/20/2012,3675,255.28,159.42,938154.00,585868.50,352285.50
+Asia,China,Baby Food,Offline,C,8/28/2016,789592826,10/11/2016,6919,255.28,159.42,1766282.32,1103026.98,663255.34
+Europe,Switzerland,Vegetables,Online,C,10/4/2012,670274865,11/13/2012,8082,154.06,90.93,1245112.92,734896.26,510216.66
+Australia and Oceania,Federated States of Micronesia,Meat,Offline,M,1/10/2012,561462581,2/24/2012,8109,421.89,364.69,3421106.01,2957271.21,463834.80
+Central America and the Caribbean,Antigua and Barbuda ,Personal Care,Offline,M,6/6/2011,192892301,7/4/2011,9973,81.73,56.67,815093.29,565169.91,249923.38
+Australia and Oceania,Fiji,Cereal,Offline,L,10/15/2012,264612853,12/3/2012,3678,205.70,117.11,756564.60,430730.58,325834.02
+Central America and the Caribbean,Dominican Republic,Beverages,Offline,L,6/6/2011,196985566,7/3/2011,1261,47.45,31.79,59834.45,40087.19,19747.26
+Europe,Luxembourg,Cosmetics,Offline,M,1/30/2015,380684268,2/23/2015,1789,437.20,263.33,782150.80,471097.37,311053.43
+Middle East and North Africa,Israel,Clothes,Offline,L,5/28/2017,826695287,6/9/2017,6361,109.28,35.84,695130.08,227978.24,467151.84
+Asia,Laos,Household,Offline,H,11/29/2016,716317451,12/1/2016,3107,668.27,502.54,2076314.89,1561391.78,514923.11
+Asia,Thailand,Personal Care,Online,C,3/5/2013,651162087,3/26/2013,2187,81.73,56.67,178743.51,123937.29,54806.22
+Sub-Saharan Africa,Mauritania,Vegetables,Online,H,8/16/2010,403153026,9/16/2010,794,154.06,90.93,122323.64,72198.42,50125.22
+Europe,Romania,Personal Care,Offline,H,9/30/2014,264526593,10/7/2014,8152,81.73,56.67,666262.96,461973.84,204289.12
+Sub-Saharan Africa,Namibia,Snacks,Offline,M,3/2/2013,597831618,3/17/2013,516,152.58,97.44,78731.28,50279.04,28452.24
+Europe,Ukraine,Personal Care,Offline,C,4/17/2017,485929429,5/19/2017,6171,81.73,56.67,504355.83,349710.57,154645.26
+North America,Mexico,Vegetables,Online,L,2/3/2013,881993854,2/28/2013,436,154.06,90.93,67170.16,39645.48,27524.68
+Sub-Saharan Africa,Mauritania,Fruits,Online,L,4/25/2010,559511220,5/17/2010,658,9.33,6.92,6139.14,4553.36,1585.78
+Central America and the Caribbean,Jamaica,Snacks,Offline,M,12/29/2015,162280356,2/10/2016,1219,152.58,97.44,185995.02,118779.36,67215.66
+Middle East and North Africa,Bahrain,Cereal,Online,L,7/1/2015,854412591,7/17/2015,8527,205.70,117.11,1754003.90,998596.97,755406.93
+Asia,Bhutan,Fruits,Offline,C,3/15/2014,270331752,3/27/2014,6028,9.33,6.92,56241.24,41713.76,14527.48
+Central America and the Caribbean,Honduras,Cosmetics,Online,M,12/22/2010,164774167,1/5/2011,9193,437.20,263.33,4019179.60,2420792.69,1598386.91
+Sub-Saharan Africa,Seychelles ,Baby Food,Online,M,2/6/2017,562788665,3/21/2017,527,255.28,159.42,134532.56,84014.34,50518.22
+Europe,Serbia,Office Supplies,Offline,C,8/24/2014,209736573,9/24/2014,4568,651.21,524.96,2974727.28,2398017.28,576710.00
+Central America and the Caribbean,Honduras,Vegetables,Offline,H,3/29/2013,621291720,3/31/2013,2881,154.06,90.93,443846.86,261969.33,181877.53
+Europe,Belgium,Office Supplies,Offline,M,1/5/2016,233440434,2/17/2016,9067,651.21,524.96,5904521.07,4759812.32,1144708.75
+Australia and Oceania,Federated States of Micronesia,Office Supplies,Online,H,10/15/2015,252481544,11/8/2015,3754,651.21,524.96,2444642.34,1970699.84,473942.50
+Sub-Saharan Africa,South Sudan,Household,Offline,H,1/13/2014,605026376,2/18/2014,9604,668.27,502.54,6418065.08,4826394.16,1591670.92
+Sub-Saharan Africa,Kenya,Snacks,Online,H,1/28/2017,387998759,1/30/2017,6310,152.58,97.44,962779.80,614846.40,347933.40
+Middle East and North Africa,United Arab Emirates,Fruits,Online,L,2/23/2017,118635022,3/8/2017,5594,9.33,6.92,52192.02,38710.48,13481.54
+Europe,Austria,Vegetables,Offline,L,5/5/2011,384483993,6/19/2011,6212,154.06,90.93,957020.72,564857.16,392163.56
+Sub-Saharan Africa,Ethiopia,Cereal,Offline,C,12/14/2012,493406999,1/21/2013,8950,205.70,117.11,1841015.00,1048134.50,792880.50
+Sub-Saharan Africa,Togo,Baby Food,Online,H,6/3/2017,723577868,6/23/2017,1626,255.28,159.42,415085.28,259216.92,155868.36
+Sub-Saharan Africa,Togo,Beverages,Online,H,9/2/2013,973482930,10/7/2013,4087,47.45,31.79,193928.15,129925.73,64002.42
+Europe,Belarus,Beverages,Online,H,8/15/2010,311921012,8/26/2010,3214,47.45,31.79,152504.30,102173.06,50331.24
+Europe,Switzerland,Baby Food,Online,L,9/9/2010,128003442,10/23/2010,7918,255.28,159.42,2021307.04,1262287.56,759019.48
+Europe,Italy,Beverages,Offline,C,7/27/2013,981154048,8/9/2013,4141,47.45,31.79,196490.45,131642.39,64848.06
+Central America and the Caribbean,Panama,Meat,Online,H,6/11/2012,351109158,6/26/2012,9857,421.89,364.69,4158569.73,3594749.33,563820.40
+Europe,Germany,Personal Care,Online,L,12/3/2012,287917602,1/5/2013,71,81.73,56.67,5802.83,4023.57,1779.26
+Central America and the Caribbean,Barbados,Meat,Offline,H,2/9/2014,661940705,2/21/2014,1819,421.89,364.69,767417.91,663371.11,104046.80
+Central America and the Caribbean,Saint Kitts and Nevis ,Baby Food,Offline,L,5/18/2012,513852298,6/27/2012,9169,255.28,159.42,2340662.32,1461721.98,878940.34
+Sub-Saharan Africa,Seychelles ,Office Supplies,Offline,H,10/3/2012,304638707,10/15/2012,8218,651.21,524.96,5351643.78,4314121.28,1037522.50
+Sub-Saharan Africa,Togo,Vegetables,Online,H,7/13/2017,565598762,7/29/2017,2097,154.06,90.93,323063.82,190680.21,132383.61
+Europe,Cyprus,Snacks,Offline,L,12/4/2014,548343789,12/6/2014,5967,152.58,97.44,910444.86,581424.48,329020.38
+Asia,Laos,Vegetables,Offline,L,2/22/2013,474797618,3/1/2013,2021,154.06,90.93,311355.26,183769.53,127585.73
+Australia and Oceania,Tuvalu,Clothes,Offline,C,11/24/2013,187196576,12/27/2013,4482,109.28,35.84,489792.96,160634.88,329158.08
+Europe,Cyprus,Meat,Online,L,3/2/2016,498089492,3/22/2016,4604,421.89,364.69,1942381.56,1679032.76,263348.80
+Middle East and North Africa,Iraq,Fruits,Offline,C,6/6/2012,940337693,6/25/2012,5675,9.33,6.92,52947.75,39271.00,13676.75
+Asia,Maldives,Cereal,Online,M,2/26/2015,217115008,3/22/2015,8011,205.70,117.11,1647862.70,938168.21,709694.49
+Europe,Moldova ,Snacks,Offline,C,3/1/2015,251907765,4/7/2015,3961,152.58,97.44,604369.38,385959.84,218409.54
+Asia,China,Fruits,Offline,H,9/11/2015,338514792,9/12/2015,2904,9.33,6.92,27094.32,20095.68,6998.64
+North America,United States of America,Beverages,Online,H,6/27/2013,291047418,7/20/2013,6253,47.45,31.79,296704.85,198782.87,97921.98
+Asia,Maldives,Household,Online,M,2/15/2010,893929469,4/3/2010,2450,668.27,502.54,1637261.50,1231223.00,406038.50
+Central America and the Caribbean,Dominica,Clothes,Online,H,11/1/2015,751897275,12/1/2015,1967,109.28,35.84,214953.76,70497.28,144456.48
+Europe,Malta,Snacks,Online,L,5/26/2015,339999663,6/13/2015,2311,152.58,97.44,352612.38,225183.84,127428.54
+Sub-Saharan Africa,Nigeria,Cosmetics,Online,H,5/21/2017,653597962,6/11/2017,3016,437.20,263.33,1318595.20,794203.28,524391.92
+Europe,Russia,Cereal,Offline,M,6/29/2012,958366000,8/3/2012,651,205.70,117.11,133910.70,76238.61,57672.09
+Sub-Saharan Africa,Seychelles ,Clothes,Offline,H,3/18/2015,140290105,4/8/2015,3814,109.28,35.84,416793.92,136693.76,280100.16
+Sub-Saharan Africa,Zimbabwe,Office Supplies,Offline,M,7/29/2014,755669105,8/27/2014,8136,651.21,524.96,5298244.56,4271074.56,1027170.00
+Europe,Norway,Cereal,Online,M,11/4/2015,481114327,11/24/2015,1276,205.70,117.11,262473.20,149432.36,113040.84
+Sub-Saharan Africa,Botswana,Household,Online,M,12/23/2013,663549602,2/6/2014,7927,668.27,502.54,5297376.29,3983634.58,1313741.71
+Sub-Saharan Africa,Angola,Cosmetics,Offline,L,7/28/2012,470211255,8/15/2012,4814,437.20,263.33,2104680.80,1267670.62,837010.18
+Sub-Saharan Africa,Zimbabwe,Vegetables,Online,H,7/4/2012,938648116,8/14/2012,5691,154.06,90.93,876755.46,517482.63,359272.83
+Sub-Saharan Africa,Madagascar,Beverages,Online,L,9/21/2015,926721513,10/20/2015,6344,47.45,31.79,301022.80,201675.76,99347.04
+Asia,Malaysia,Household,Offline,L,11/11/2013,262605273,12/16/2013,9591,668.27,502.54,6409377.57,4819861.14,1589516.43
+Europe,Liechtenstein,Cereal,Offline,L,10/16/2014,194785726,11/13/2014,280,205.70,117.11,57596.00,32790.80,24805.20
+Sub-Saharan Africa,Mozambique,Clothes,Online,H,1/24/2016,242061698,2/4/2016,290,109.28,35.84,31691.20,10393.60,21297.60
+Europe,Andorra,Beverages,Online,C,4/24/2016,443544518,4/28/2016,3534,47.45,31.79,167688.30,112345.86,55342.44
+Asia,Myanmar,Fruits,Online,H,6/12/2011,908658015,6/25/2011,954,9.33,6.92,8900.82,6601.68,2299.14
+Europe,San Marino,Clothes,Online,H,7/30/2013,467138516,8/8/2013,5523,109.28,35.84,603553.44,197944.32,405609.12
+Asia,North Korea,Clothes,Offline,M,12/16/2016,719034850,2/4/2017,7246,109.28,35.84,791842.88,259696.64,532146.24
+Europe,Bosnia and Herzegovina,Vegetables,Online,H,11/27/2016,184708344,12/2/2016,8159,154.06,90.93,1256975.54,741897.87,515077.67
+Asia,Thailand,Household,Offline,C,8/1/2013,154832828,9/8/2013,7329,668.27,502.54,4897750.83,3683115.66,1214635.17
+Europe,Bosnia and Herzegovina,Office Supplies,Offline,H,10/19/2015,640394628,11/7/2015,5856,651.21,524.96,3813485.76,3074165.76,739320.00
+Australia and Oceania,Vanuatu,Clothes,Online,L,6/26/2014,822692573,7/7/2014,1869,109.28,35.84,204244.32,66984.96,137259.36
+Europe,Andorra,Vegetables,Offline,L,10/15/2016,403337991,11/24/2016,5529,154.06,90.93,851797.74,502751.97,349045.77
+Central America and the Caribbean,Dominican Republic,Baby Food,Online,C,12/31/2011,954254710,1/15/2012,4029,255.28,159.42,1028523.12,642303.18,386219.94
+Europe,Andorra,Vegetables,Online,C,3/3/2013,967679059,3/19/2013,6592,154.06,90.93,1015563.52,599410.56,416152.96
+Asia,Maldives,Beverages,Online,M,7/3/2015,806159865,7/9/2015,9474,47.45,31.79,449541.30,301178.46,148362.84
+Central America and the Caribbean,Guatemala,Cosmetics,Offline,H,4/4/2015,452558457,4/18/2015,959,437.20,263.33,419274.80,252533.47,166741.33
+Sub-Saharan Africa,Sudan,Household,Offline,H,7/19/2013,860048663,7/23/2013,6366,668.27,502.54,4254206.82,3199169.64,1055037.18
+Sub-Saharan Africa,Mauritania,Household,Online,M,7/21/2012,802116811,7/29/2012,3044,668.27,502.54,2034213.88,1529731.76,504482.12
+Sub-Saharan Africa,Cameroon,Office Supplies,Offline,M,9/24/2011,922561728,11/5/2011,5372,651.21,524.96,3498300.12,2820085.12,678215.00
+Sub-Saharan Africa,Central African Republic,Cereal,Offline,C,8/6/2011,585494744,9/13/2011,9761,205.70,117.11,2007837.70,1143110.71,864726.99
+Europe,Macedonia,Snacks,Online,L,7/11/2017,125339686,7/24/2017,9653,152.58,97.44,1472854.74,940588.32,532266.42
+Europe,Croatia,Personal Care,Offline,M,3/29/2013,396832883,3/31/2013,523,81.73,56.67,42744.79,29638.41,13106.38
+Middle East and North Africa,Syria,Meat,Offline,L,1/11/2010,525023162,2/6/2010,4876,421.89,364.69,2057135.64,1778228.44,278907.20
+Australia and Oceania,New Zealand,Cosmetics,Online,C,9/1/2012,155271852,9/18/2012,7246,437.20,263.33,3167951.20,1908089.18,1259862.02
+Central America and the Caribbean,El Salvador,Personal Care,Offline,M,8/26/2015,803252780,10/14/2015,9202,81.73,56.67,752079.46,521477.34,230602.12
+Middle East and North Africa,Israel,Office Supplies,Offline,H,7/10/2014,904952275,7/17/2014,4343,651.21,524.96,2828205.03,2279901.28,548303.75
+Middle East and North Africa,Afghanistan,Vegetables,Offline,M,4/6/2017,766669166,4/21/2017,3298,154.06,90.93,508089.88,299887.14,208202.74
+Sub-Saharan Africa,Madagascar,Clothes,Online,H,3/12/2010,315014779,3/23/2010,8728,109.28,35.84,953795.84,312811.52,640984.32
+Sub-Saharan Africa,Mozambique,Vegetables,Offline,L,10/13/2014,446912944,11/1/2014,326,154.06,90.93,50223.56,29643.18,20580.38
+Sub-Saharan Africa,Niger,Vegetables,Online,C,9/9/2015,779599988,10/9/2015,9816,154.06,90.93,1512252.96,892568.88,619684.08
+Sub-Saharan Africa,Mali,Cosmetics,Online,M,1/2/2010,100624740,1/20/2010,5951,437.20,263.33,2601777.20,1567076.83,1034700.37
+Central America and the Caribbean,Guatemala,Baby Food,Offline,M,1/13/2011,417848527,2/9/2011,9519,255.28,159.42,2430010.32,1517518.98,912491.34
+Europe,Switzerland,Cosmetics,Offline,M,3/18/2014,209445178,4/20/2014,8337,437.20,263.33,3644936.40,2195382.21,1449554.19
+Sub-Saharan Africa,Benin,Meat,Online,H,1/11/2016,273901021,2/8/2016,2254,421.89,364.69,950940.06,822011.26,128928.80
+Central America and the Caribbean,Jamaica,Fruits,Online,C,4/7/2010,580014884,5/21/2010,8148,9.33,6.92,76020.84,56384.16,19636.68
+Sub-Saharan Africa,Mauritania,Fruits,Offline,H,6/25/2014,716898095,7/17/2014,4932,9.33,6.92,46015.56,34129.44,11886.12
+Asia,Kyrgyzstan,Vegetables,Offline,M,3/24/2013,343974483,5/9/2013,8548,154.06,90.93,1316904.88,777269.64,539635.24
+Asia,Nepal,Fruits,Offline,M,10/30/2014,540980374,11/9/2014,6969,9.33,6.92,65020.77,48225.48,16795.29
+Asia,Bhutan,Snacks,Online,C,4/30/2017,657964599,6/17/2017,5201,152.58,97.44,793568.58,506785.44,286783.14
+Sub-Saharan Africa,Mali,Personal Care,Offline,M,4/1/2012,565288484,4/6/2012,279,81.73,56.67,22802.67,15810.93,6991.74
+Sub-Saharan Africa,Sudan,Cereal,Offline,C,2/13/2011,203625857,3/3/2011,6271,205.70,117.11,1289944.70,734396.81,555547.89
+Europe,Switzerland,Clothes,Offline,M,5/21/2011,933963048,6/24/2011,9275,109.28,35.84,1013572.00,332416.00,681156.00
+Europe,Greece,Cereal,Online,H,5/5/2015,587598884,6/13/2015,2422,205.70,117.11,498205.40,283640.42,214564.98
+Asia,Bangladesh,Fruits,Online,C,3/15/2011,216144692,4/18/2011,873,9.33,6.92,8145.09,6041.16,2103.93
+Europe,Ireland,Personal Care,Online,C,10/3/2014,941524302,10/9/2014,6819,81.73,56.67,557316.87,386432.73,170884.14
+Europe,Denmark,Cosmetics,Offline,M,7/22/2012,805974042,7/28/2012,4484,437.20,263.33,1960404.80,1180771.72,779633.08
+Asia,Philippines,Cosmetics,Online,H,3/2/2011,622042739,3/28/2011,5124,437.20,263.33,2240212.80,1349302.92,890909.88
+Sub-Saharan Africa,Malawi,Office Supplies,Online,L,8/18/2010,822591722,9/3/2010,2025,651.21,524.96,1318700.25,1063044.00,255656.25
+Australia and Oceania,Nauru,Cereal,Online,M,11/6/2015,110794818,11/24/2015,5504,205.70,117.11,1132172.80,644573.44,487599.36
+Australia and Oceania,Palau,Clothes,Offline,H,1/24/2010,410138356,3/2/2010,7909,109.28,35.84,864295.52,283458.56,580836.96
+Central America and the Caribbean,Jamaica,Vegetables,Offline,L,9/2/2011,114421164,9/17/2011,8620,154.06,90.93,1327997.20,783816.60,544180.60
+Central America and the Caribbean,Honduras,Meat,Online,C,5/25/2017,837754571,6/2/2017,9049,421.89,364.69,3817682.61,3300079.81,517602.80
+Asia,China,Snacks,Offline,L,9/8/2013,664562404,9/19/2013,7638,152.58,97.44,1165406.04,744246.72,421159.32
+Sub-Saharan Africa,Mali,Clothes,Online,C,10/7/2010,899580991,11/8/2010,4861,109.28,35.84,531210.08,174218.24,356991.84
+Europe,Estonia,Beverages,Offline,L,2/19/2016,217859160,3/5/2016,8222,47.45,31.79,390133.90,261377.38,128756.52
+Sub-Saharan Africa,Rwanda,Meat,Online,L,8/24/2015,514758241,9/13/2015,7257,421.89,364.69,3061655.73,2646555.33,415100.40
+Australia and Oceania,Tonga,Beverages,Online,M,2/20/2015,155952060,4/6/2015,8535,47.45,31.79,404985.75,271327.65,133658.10
+Europe,Andorra,Vegetables,Offline,L,12/15/2013,727426946,2/3/2014,653,154.06,90.93,100601.18,59377.29,41223.89
+Central America and the Caribbean,Saint Lucia,Baby Food,Online,M,4/14/2016,285481727,5/18/2016,9242,255.28,159.42,2359297.76,1473359.64,885938.12
+Sub-Saharan Africa,Togo,Clothes,Online,C,3/28/2012,106727731,4/5/2012,1962,109.28,35.84,214407.36,70318.08,144089.28
+Middle East and North Africa,Syria,Clothes,Offline,L,12/2/2011,638088786,12/28/2011,3506,109.28,35.84,383135.68,125655.04,257480.64
+Sub-Saharan Africa,Guinea,Snacks,Offline,M,5/8/2011,146801221,6/26/2011,598,152.58,97.44,91242.84,58269.12,32973.72
+Australia and Oceania,New Zealand,Snacks,Offline,L,5/30/2011,570413863,6/28/2011,6993,152.58,97.44,1066991.94,681397.92,385594.02
+Middle East and North Africa,Israel,Office Supplies,Offline,L,1/15/2014,766788041,2/16/2014,8476,651.21,524.96,5519655.96,4449560.96,1070095.00
+Middle East and North Africa,Oman,Office Supplies,Online,L,11/21/2010,564097583,12/2/2010,7865,651.21,524.96,5121766.65,4128810.40,992956.25
+Sub-Saharan Africa,Central African Republic,Vegetables,Online,H,5/20/2017,310828816,6/24/2017,9,154.06,90.93,1386.54,818.37,568.17
+Sub-Saharan Africa,Cameroon,Household,Online,L,12/11/2015,425780570,12/18/2015,6787,668.27,502.54,4535548.49,3410738.98,1124809.51
+Asia,Sri Lanka,Snacks,Offline,H,10/7/2012,948064172,11/23/2012,2111,152.58,97.44,322096.38,205695.84,116400.54
+Europe,Belgium,Fruits,Offline,M,5/4/2011,187103450,5/14/2011,6924,9.33,6.92,64600.92,47914.08,16686.84
+Europe,Romania,Cereal,Online,H,3/14/2016,572634732,4/1/2016,4197,205.70,117.11,863322.90,491510.67,371812.23
+Middle East and North Africa,Qatar,Household,Online,H,1/10/2014,104706847,2/7/2014,3938,668.27,502.54,2631647.26,1979002.52,652644.74
+Asia,Maldives,Baby Food,Online,C,4/14/2015,903681123,4/26/2015,8181,255.28,159.42,2088445.68,1304215.02,784230.66
+Sub-Saharan Africa,Uganda,Vegetables,Online,L,7/24/2012,660231387,8/23/2012,5994,154.06,90.93,923435.64,545034.42,378401.22
+Europe,Serbia,Vegetables,Online,C,8/31/2014,285343968,9/5/2014,8476,154.06,90.93,1305812.56,770722.68,535089.88
+Australia and Oceania,Vanuatu,Cereal,Online,L,7/12/2012,760317695,8/30/2012,3757,205.70,117.11,772814.90,439982.27,332832.63
+Europe,Slovenia,Vegetables,Offline,M,4/21/2013,886763894,5/27/2013,1997,154.06,90.93,307657.82,181587.21,126070.61
+Europe,Moldova ,Beverages,Offline,C,11/4/2013,436606395,12/3/2013,389,47.45,31.79,18458.05,12366.31,6091.74
+Middle East and North Africa,Algeria,Fruits,Online,H,1/24/2012,602081525,1/28/2012,8158,9.33,6.92,76114.14,56453.36,19660.78
+Europe,Kosovo,Cosmetics,Online,L,9/26/2010,845738112,10/23/2010,1557,437.20,263.33,680720.40,410004.81,270715.59
+Sub-Saharan Africa,Ghana,Baby Food,Online,L,9/11/2013,250437486,10/5/2013,8872,255.28,159.42,2264844.16,1414374.24,850469.92
+Europe,Belarus,Fruits,Online,C,6/24/2014,669353473,7/7/2014,5422,9.33,6.92,50587.26,37520.24,13067.02
+Sub-Saharan Africa,South Sudan,Cosmetics,Offline,M,4/7/2015,875972402,4/29/2015,8555,437.20,263.33,3740246.00,2252788.15,1487457.85
+Sub-Saharan Africa,Mauritius ,Cosmetics,Offline,L,7/7/2015,614093101,7/27/2015,2650,437.20,263.33,1158580.00,697824.50,460755.50
+Europe,Belgium,Cosmetics,Online,M,9/29/2015,147826898,11/5/2015,4119,437.20,263.33,1800826.80,1084656.27,716170.53
+Sub-Saharan Africa,Tanzania,Personal Care,Offline,M,10/2/2013,711597621,11/14/2013,6404,81.73,56.67,523398.92,362914.68,160484.24
+Asia,Malaysia,Cosmetics,Online,L,12/25/2015,460141599,1/12/2016,4979,437.20,263.33,2176818.80,1311120.07,865698.73
+Sub-Saharan Africa,Cameroon,Cosmetics,Online,M,1/1/2011,318507659,2/7/2011,2349,437.20,263.33,1026982.80,618562.17,408420.63
+Europe,Spain,Cosmetics,Online,C,3/2/2011,832057130,4/2/2011,3050,437.20,263.33,1333460.00,803156.50,530303.50
+Central America and the Caribbean,Panama,Cereal,Online,H,12/17/2010,816463840,1/9/2011,8649,205.70,117.11,1779099.30,1012884.39,766214.91
+Asia,Turkmenistan,Personal Care,Online,M,7/4/2013,507714116,8/23/2013,2744,81.73,56.67,224267.12,155502.48,68764.64
+Europe,Lithuania,Office Supplies,Online,H,8/23/2011,212106788,9/26/2011,5967,651.21,524.96,3885770.07,3132436.32,753333.75
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Online,H,5/26/2014,756253182,6/9/2014,977,255.28,159.42,249408.56,155753.34,93655.22
+Australia and Oceania,Fiji,Baby Food,Offline,M,12/16/2012,337077128,12/30/2012,7468,255.28,159.42,1906431.04,1190548.56,715882.48
+Europe,Russia,Personal Care,Online,M,9/14/2014,371814954,10/8/2014,7162,81.73,56.67,585350.26,405870.54,179479.72
+Europe,Ireland,Fruits,Online,L,9/19/2016,548015487,10/9/2016,8815,9.33,6.92,82243.95,60999.80,21244.15
+North America,Canada,Cosmetics,Offline,M,3/1/2017,173540055,4/14/2017,3214,437.20,263.33,1405160.80,846342.62,558818.18
+Middle East and North Africa,Israel,Meat,Offline,C,6/21/2011,426562488,7/14/2011,8174,421.89,364.69,3448528.86,2980976.06,467552.80
+Europe,Spain,Vegetables,Offline,M,4/14/2011,305569112,6/3/2011,3545,154.06,90.93,546142.70,322346.85,223795.85
+Asia,Cambodia,Snacks,Online,C,5/19/2010,679358756,5/22/2010,6208,152.58,97.44,947216.64,604907.52,342309.12
+Middle East and North Africa,Iran,Household,Online,H,3/5/2011,237042748,4/3/2011,5072,668.27,502.54,3389465.44,2548882.88,840582.56
+Sub-Saharan Africa,Malawi,Beverages,Offline,H,5/10/2013,438044917,5/17/2013,6080,47.45,31.79,288496.00,193283.20,95212.80
+Central America and the Caribbean,Haiti,Cosmetics,Online,C,2/12/2010,562101590,3/17/2010,7207,437.20,263.33,3150900.40,1897819.31,1253081.09
+Sub-Saharan Africa,Republic of the Congo,Vegetables,Offline,M,8/19/2014,859261596,9/29/2014,3456,154.06,90.93,532431.36,314254.08,218177.28
+Asia,Sri Lanka,Snacks,Offline,C,11/12/2010,299886262,12/8/2010,1864,152.58,97.44,284409.12,181628.16,102780.96
+Middle East and North Africa,Israel,Vegetables,Offline,M,5/2/2010,624649417,5/26/2010,6498,154.06,90.93,1001081.88,590863.14,410218.74
+Middle East and North Africa,Pakistan,Fruits,Online,C,6/27/2010,494537389,7/31/2010,3458,9.33,6.92,32263.14,23929.36,8333.78
+Sub-Saharan Africa,Swaziland,Baby Food,Online,L,8/15/2013,440849006,9/24/2013,5872,255.28,159.42,1499004.16,936114.24,562889.92
+Sub-Saharan Africa,Ethiopia,Snacks,Offline,M,7/11/2015,615195596,8/24/2015,8903,152.58,97.44,1358419.74,867508.32,490911.42
+Sub-Saharan Africa,Ethiopia,Baby Food,Offline,L,11/2/2016,339500987,12/5/2016,4741,255.28,159.42,1210282.48,755810.22,454472.26
+Sub-Saharan Africa,Equatorial Guinea,Clothes,Online,H,9/9/2011,356001508,9/17/2011,7612,109.28,35.84,831839.36,272814.08,559025.28
+Australia and Oceania,Marshall Islands,Baby Food,Online,H,3/18/2014,577245986,3/27/2014,8770,255.28,159.42,2238805.60,1398113.40,840692.20
+Europe,Slovakia,Snacks,Offline,C,11/16/2016,536095750,12/26/2016,1500,152.58,97.44,228870.00,146160.00,82710.00
+Sub-Saharan Africa,Tanzania,Fruits,Offline,C,1/5/2017,735724627,2/15/2017,6122,9.33,6.92,57118.26,42364.24,14754.02
+Central America and the Caribbean,The Bahamas,Beverages,Online,L,1/4/2013,399618947,1/19/2013,4982,47.45,31.79,236395.90,158377.78,78018.12
+Europe,Armenia,Household,Offline,L,9/9/2015,621577537,9/16/2015,7461,668.27,502.54,4985962.47,3749450.94,1236511.53
+Sub-Saharan Africa,Eritrea,Cosmetics,Online,H,3/17/2014,315711724,4/8/2014,4970,437.20,263.33,2172884.00,1308750.10,864133.90
+Asia,India,Cosmetics,Online,H,2/24/2010,266445338,2/28/2010,5951,437.20,263.33,2601777.20,1567076.83,1034700.37
+Asia,Philippines,Beverages,Offline,C,9/29/2013,878514707,10/11/2013,879,47.45,31.79,41708.55,27943.41,13765.14
+Europe,Bulgaria,Cosmetics,Offline,H,5/6/2017,826968657,6/15/2017,7258,437.20,263.33,3173197.60,1911249.14,1261948.46
+Sub-Saharan Africa,Zimbabwe,Cereal,Offline,L,5/18/2014,207168519,7/6/2014,4623,205.70,117.11,950951.10,541399.53,409551.57
+Central America and the Caribbean,Antigua and Barbuda ,Baby Food,Online,L,9/7/2010,984788119,10/11/2010,9544,255.28,159.42,2436392.32,1521504.48,914887.84
+Sub-Saharan Africa,Gabon,Cosmetics,Offline,M,3/6/2013,245813786,3/12/2013,617,437.20,263.33,269752.40,162474.61,107277.79
+Europe,Montenegro,Household,Offline,L,11/25/2010,546544349,12/12/2010,3473,668.27,502.54,2320901.71,1745321.42,575580.29
+Europe,Luxembourg,Household,Offline,C,9/5/2016,463591134,10/1/2016,5773,668.27,502.54,3857922.71,2901163.42,956759.29
+Sub-Saharan Africa,Sudan,Baby Food,Offline,H,5/2/2010,443877971,6/6/2010,2210,255.28,159.42,564168.80,352318.20,211850.60
+Australia and Oceania,Marshall Islands,Household,Online,M,8/7/2010,554641187,8/13/2010,9507,668.27,502.54,6353242.89,4777647.78,1575595.11
+Asia,Malaysia,Meat,Offline,M,10/14/2010,933429610,11/28/2010,1419,421.89,364.69,598661.91,517495.11,81166.80
+Central America and the Caribbean,Saint Kitts and Nevis ,Cosmetics,Offline,H,10/31/2012,438104569,11/13/2012,3733,437.20,263.33,1632067.60,983010.89,649056.71
+Europe,Macedonia,Office Supplies,Offline,C,12/17/2015,696839892,1/2/2016,9264,651.21,524.96,6032809.44,4863229.44,1169580.00
+Asia,Kyrgyzstan,Clothes,Offline,H,11/16/2012,258121907,12/6/2012,2863,109.28,35.84,312868.64,102609.92,210258.72
+Central America and the Caribbean,Haiti,Clothes,Online,M,4/17/2016,440749442,5/19/2016,6409,109.28,35.84,700375.52,229698.56,470676.96
+Asia,Bhutan,Snacks,Offline,L,4/8/2017,383833825,4/25/2017,3813,152.58,97.44,581787.54,371538.72,210248.82
+Central America and the Caribbean,Belize,Vegetables,Online,L,9/15/2011,196798884,10/21/2011,6018,154.06,90.93,927133.08,547216.74,379916.34
+Europe,United Kingdom,Personal Care,Offline,M,9/22/2011,509380948,9/27/2011,5997,81.73,56.67,490134.81,339849.99,150284.82
+Europe,Russia,Clothes,Offline,M,7/28/2011,221628844,9/1/2011,3755,109.28,35.84,410346.40,134579.20,275767.20
+Sub-Saharan Africa,Zimbabwe,Beverages,Offline,H,2/18/2014,553903901,4/6/2014,1328,47.45,31.79,63013.60,42217.12,20796.48
+Sub-Saharan Africa,Equatorial Guinea,Cosmetics,Offline,C,1/5/2012,996879947,1/5/2012,7784,437.20,263.33,3403164.80,2049760.72,1353404.08
+Sub-Saharan Africa,Cote d'Ivoire,Office Supplies,Offline,H,1/1/2014,661543309,1/20/2014,4221,651.21,524.96,2748757.41,2215856.16,532901.25
+Asia,North Korea,Household,Offline,L,1/18/2011,529192817,2/1/2011,8769,668.27,502.54,5860059.63,4406773.26,1453286.37
+Sub-Saharan Africa,Guinea,Meat,Online,L,4/17/2010,301439797,4/26/2010,1590,421.89,364.69,670805.10,579857.10,90948.00
+Europe,Estonia,Beverages,Online,H,2/29/2016,650208079,3/19/2016,9875,47.45,31.79,468568.75,313926.25,154642.50
+Asia,Myanmar,Office Supplies,Offline,M,6/8/2011,967733991,6/28/2011,2848,651.21,524.96,1854646.08,1495086.08,359560.00
+Sub-Saharan Africa,Ghana,Household,Online,M,1/7/2014,716566359,2/1/2014,6764,668.27,502.54,4520178.28,3399180.56,1120997.72
+Australia and Oceania,Solomon Islands,Baby Food,Online,M,8/9/2012,779566514,8/22/2012,9910,255.28,159.42,2529824.80,1579852.20,949972.60
+Sub-Saharan Africa,Ghana,Baby Food,Offline,C,11/18/2015,309908282,1/7/2016,7602,255.28,159.42,1940638.56,1211910.84,728727.72
+Asia,Bhutan,Beverages,Online,L,11/17/2010,781077992,12/2/2010,7190,47.45,31.79,341165.50,228570.10,112595.40
+Asia,Bhutan,Cereal,Offline,H,3/13/2012,136874473,4/8/2012,3053,205.70,117.11,628002.10,357536.83,270465.27
+Australia and Oceania,New Zealand,Meat,Online,M,10/15/2012,441409051,10/29/2012,1602,421.89,364.69,675867.78,584233.38,91634.40
+Europe,Moldova ,Meat,Offline,L,6/14/2010,229105556,8/3/2010,6280,421.89,364.69,2649469.20,2290253.20,359216.00
+Sub-Saharan Africa,Swaziland,Baby Food,Offline,M,8/17/2011,354700314,8/29/2011,2560,255.28,159.42,653516.80,408115.20,245401.60
+Middle East and North Africa,Kuwait,Baby Food,Offline,M,6/13/2012,843242156,7/9/2012,2948,255.28,159.42,752565.44,469970.16,282595.28
+Asia,Philippines,Fruits,Offline,M,2/19/2010,440092408,3/14/2010,1978,9.33,6.92,18454.74,13687.76,4766.98
+Sub-Saharan Africa,Equatorial Guinea,Clothes,Online,C,4/25/2014,660924899,5/21/2014,1220,109.28,35.84,133321.60,43724.80,89596.80
+Asia,Vietnam,Baby Food,Online,C,12/18/2012,841725957,1/8/2013,4271,255.28,159.42,1090300.88,680882.82,409418.06
+Sub-Saharan Africa,Djibouti,Clothes,Online,H,1/24/2014,388794410,2/24/2014,1761,109.28,35.84,192442.08,63114.24,129327.84
+Sub-Saharan Africa,Mauritius ,Meat,Offline,C,7/4/2011,128741586,8/18/2011,6351,421.89,364.69,2679423.39,2316146.19,363277.20
+Asia,Philippines,Snacks,Offline,L,8/12/2011,958491313,9/18/2011,7734,152.58,97.44,1180053.72,753600.96,426452.76
+Middle East and North Africa,Iran,Baby Food,Online,H,3/10/2014,695279920,4/26/2014,7634,255.28,159.42,1948807.52,1217012.28,731795.24
+Asia,China,Meat,Online,H,5/1/2016,826656234,5/1/2016,4805,421.89,364.69,2027181.45,1752335.45,274846.00
+Europe,Ukraine,Office Supplies,Offline,M,3/11/2016,660481584,4/20/2016,33,651.21,524.96,21489.93,17323.68,4166.25
+Australia and Oceania,Australia,Cereal,Offline,L,10/11/2016,474929797,11/22/2016,1136,205.70,117.11,233675.20,133036.96,100638.24
+Europe,Kosovo,Office Supplies,Offline,H,8/3/2014,168487203,9/21/2014,7962,651.21,524.96,5184934.02,4179731.52,1005202.50
+Europe,Russia,Meat,Online,M,12/20/2010,609952628,1/31/2011,7392,421.89,364.69,3118610.88,2695788.48,422822.40
+Central America and the Caribbean,Grenada,Fruits,Online,M,11/29/2015,488437402,12/12/2015,8336,9.33,6.92,77774.88,57685.12,20089.76
+Central America and the Caribbean,Grenada,Household,Offline,H,12/17/2013,363365352,2/1/2014,6737,668.27,502.54,4502134.99,3385611.98,1116523.01
+Middle East and North Africa,Kuwait,Fruits,Offline,C,6/13/2013,414472806,7/17/2013,569,9.33,6.92,5308.77,3937.48,1371.29
+Europe,Slovakia,Baby Food,Offline,H,5/30/2012,891808593,6/11/2012,4835,255.28,159.42,1234278.80,770795.70,463483.10
+Europe,San Marino,Fruits,Online,L,7/10/2017,765734040,8/4/2017,6574,9.33,6.92,61335.42,45492.08,15843.34
+Central America and the Caribbean,The Bahamas,Clothes,Online,H,1/8/2010,876922976,1/17/2010,9851,109.28,35.84,1076517.28,353059.84,723457.44
+Australia and Oceania,Vanuatu,Beverages,Online,L,1/23/2010,786361730,2/3/2010,765,47.45,31.79,36299.25,24319.35,11979.90
+Europe,San Marino,Cereal,Offline,L,5/18/2012,125349128,6/6/2012,2447,205.70,117.11,503347.90,286568.17,216779.73
+Central America and the Caribbean,The Bahamas,Personal Care,Online,M,10/1/2012,845496499,11/2/2012,58,81.73,56.67,4740.34,3286.86,1453.48
+Middle East and North Africa,Israel,Household,Offline,L,10/27/2011,468727672,12/4/2011,5789,668.27,502.54,3868615.03,2909204.06,959410.97
+Middle East and North Africa,Lebanon,Office Supplies,Offline,H,4/18/2011,637278974,5/26/2011,3865,651.21,524.96,2516926.65,2028970.40,487956.25
+Sub-Saharan Africa,Sao Tome and Principe,Cereal,Online,M,2/26/2010,363699233,3/20/2010,5540,205.70,117.11,1139578.00,648789.40,490788.60
+Middle East and North Africa,Somalia,Office Supplies,Online,M,1/9/2016,980849778,2/21/2016,4101,651.21,524.96,2670612.21,2152860.96,517751.25
+Sub-Saharan Africa,Tanzania,Personal Care,Offline,L,1/29/2011,291904437,3/11/2011,9865,81.73,56.67,806266.45,559049.55,247216.90
+Middle East and North Africa,Oman,Cosmetics,Online,L,6/7/2016,220349538,6/29/2016,5180,437.20,263.33,2264696.00,1364049.40,900646.60
+Asia,Bangladesh,Cosmetics,Offline,C,8/11/2012,959983909,9/7/2012,9426,437.20,263.33,4121047.20,2482148.58,1638898.62
+Australia and Oceania,Kiribati,Cereal,Online,C,6/28/2011,524918878,7/12/2011,4016,205.70,117.11,826091.20,470313.76,355777.44
+Asia,Nepal,Household,Offline,H,8/29/2014,599578273,9/24/2014,7390,668.27,502.54,4938515.30,3713770.60,1224744.70
+Europe,Netherlands,Vegetables,Offline,H,3/12/2017,688698422,4/1/2017,22,154.06,90.93,3389.32,2000.46,1388.86
+Europe,France,Household,Online,L,6/16/2011,367328155,7/30/2011,9419,668.27,502.54,6294435.13,4733424.26,1561010.87
+Asia,North Korea,Snacks,Online,L,8/1/2013,630828797,8/5/2013,5114,152.58,97.44,780294.12,498308.16,281985.96
+Middle East and North Africa,Jordan,Fruits,Online,H,4/11/2014,744874179,4/11/2014,3677,9.33,6.92,34306.41,25444.84,8861.57
+Europe,Belgium,Cereal,Offline,L,11/14/2012,495450627,12/26/2012,3705,205.70,117.11,762118.50,433892.55,328225.95
+Europe,Belarus,Personal Care,Online,M,7/24/2013,638856971,8/21/2013,829,81.73,56.67,67754.17,46979.43,20774.74
+Australia and Oceania,Tonga,Household,Online,H,1/9/2014,651704537,1/30/2014,2710,668.27,502.54,1811011.70,1361883.40,449128.30
+Central America and the Caribbean,Dominica,Meat,Offline,C,10/17/2016,980917155,11/8/2016,4039,421.89,364.69,1704013.71,1472982.91,231030.80
+Middle East and North Africa,Iran,Household,Offline,C,4/29/2010,793731153,6/12/2010,1541,668.27,502.54,1029804.07,774414.14,255389.93
+Middle East and North Africa,Somalia,Vegetables,Online,M,8/20/2010,227695357,9/28/2010,8971,154.06,90.93,1382072.26,815733.03,566339.23
+Middle East and North Africa,Azerbaijan,Baby Food,Offline,C,2/5/2012,840671098,2/27/2012,2114,255.28,159.42,539661.92,337013.88,202648.04
+Sub-Saharan Africa,Cameroon,Personal Care,Online,M,12/6/2013,660832202,1/24/2014,3789,81.73,56.67,309674.97,214722.63,94952.34
+Europe,Slovakia,Vegetables,Offline,M,6/1/2016,936664998,7/5/2016,8843,154.06,90.93,1362352.58,804093.99,558258.59
+Central America and the Caribbean,El Salvador,Cereal,Online,M,2/13/2017,286968314,3/19/2017,9156,205.70,117.11,1883389.20,1072259.16,811130.04
+Australia and Oceania,Palau,Baby Food,Online,M,9/2/2014,550853478,9/18/2014,8640,255.28,159.42,2205619.20,1377388.80,828230.40
+Sub-Saharan Africa,Uganda,Clothes,Offline,M,7/18/2012,937744319,8/26/2012,8238,109.28,35.84,900248.64,295249.92,604998.72
+Central America and the Caribbean,Saint Kitts and Nevis ,Fruits,Offline,C,4/17/2015,277377164,5/7/2015,922,9.33,6.92,8602.26,6380.24,2222.02
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Online,C,2/27/2017,169800841,3/19/2017,6697,255.28,159.42,1709610.16,1067635.74,641974.42
+Sub-Saharan Africa,Mauritania,Beverages,Online,L,6/17/2013,935376679,6/27/2013,7600,47.45,31.79,360620.00,241604.00,119016.00
+Central America and the Caribbean,Saint Kitts and Nevis ,Cosmetics,Offline,H,12/8/2011,264778506,1/27/2012,2699,437.20,263.33,1180002.80,710727.67,469275.13
+Asia,Indonesia,Household,Offline,L,10/25/2013,868992650,11/5/2013,3091,668.27,502.54,2065622.57,1553351.14,512271.43
+Middle East and North Africa,Egypt,Vegetables,Offline,H,1/15/2010,129317939,1/22/2010,6907,154.06,90.93,1064092.42,628053.51,436038.91
+Asia,Sri Lanka,Beverages,Online,H,4/30/2015,447365701,5/12/2015,4307,47.45,31.79,204367.15,136919.53,67447.62
+Europe,Belgium,Cosmetics,Offline,C,5/21/2011,695059764,6/29/2011,2485,437.20,263.33,1086442.00,654375.05,432066.95
+Asia,Myanmar,Clothes,Offline,H,4/11/2011,264636456,4/24/2011,663,109.28,35.84,72452.64,23761.92,48690.72
+Middle East and North Africa,Lebanon,Vegetables,Online,M,3/14/2010,418644607,3/15/2010,5097,154.06,90.93,785243.82,463470.21,321773.61
+Middle East and North Africa,Yemen,Cosmetics,Offline,L,12/27/2011,239945542,1/25/2012,4073,437.20,263.33,1780715.60,1072543.09,708172.51
+Europe,Belarus,Beverages,Online,H,3/8/2010,681713092,3/22/2010,2908,47.45,31.79,137984.60,92445.32,45539.28
+Middle East and North Africa,Kuwait,Snacks,Offline,H,7/15/2014,517433583,8/20/2014,8951,152.58,97.44,1365743.58,872185.44,493558.14
+Middle East and North Africa,United Arab Emirates,Cosmetics,Offline,H,12/5/2016,390905845,12/15/2016,6581,437.20,263.33,2877213.20,1732974.73,1144238.47
+Sub-Saharan Africa,Burkina Faso,Baby Food,Offline,L,4/23/2010,566241204,5/13/2010,2210,255.28,159.42,564168.80,352318.20,211850.60
+Asia,India,Household,Online,M,3/14/2015,477863490,4/17/2015,9281,668.27,502.54,6202213.87,4664073.74,1538140.13
+Sub-Saharan Africa,Guinea,Baby Food,Offline,M,4/24/2015,980509030,5/29/2015,3266,255.28,159.42,833744.48,520665.72,313078.76
+Sub-Saharan Africa,Ghana,Cereal,Offline,C,5/15/2014,299226653,6/27/2014,6671,205.70,117.11,1372224.70,781240.81,590983.89
+Sub-Saharan Africa,Ghana,Personal Care,Offline,H,2/24/2017,779377686,4/8/2017,4032,81.73,56.67,329535.36,228493.44,101041.92
+Sub-Saharan Africa,Uganda,Personal Care,Offline,H,7/27/2010,336635959,8/2/2010,6916,81.73,56.67,565244.68,391929.72,173314.96
+Middle East and North Africa,Oman,Meat,Online,L,11/23/2012,106987798,12/13/2012,8922,421.89,364.69,3764102.58,3253764.18,510338.40
+Asia,Tajikistan,Fruits,Offline,M,12/17/2016,396732032,12/23/2016,679,9.33,6.92,6335.07,4698.68,1636.39
+Australia and Oceania,Australia,Cosmetics,Offline,L,8/28/2016,232479989,9/1/2016,4850,437.20,263.33,2120420.00,1277150.50,843269.50
+Europe,Denmark,Beverages,Offline,H,9/26/2010,511155498,11/4/2010,1126,47.45,31.79,53428.70,35795.54,17633.16
+Australia and Oceania,Kiribati,Household,Online,H,2/24/2014,849994885,4/13/2014,1230,668.27,502.54,821972.10,618124.20,203847.90
+Sub-Saharan Africa,Cote d'Ivoire,Baby Food,Offline,C,6/1/2016,936546981,6/10/2016,3919,255.28,159.42,1000442.32,624766.98,375675.34
+Central America and the Caribbean,Barbados,Beverages,Online,C,9/11/2015,978673112,9/24/2015,9977,47.45,31.79,473408.65,317168.83,156239.82
+Sub-Saharan Africa,Democratic Republic of the Congo,Snacks,Offline,C,12/26/2014,354547107,2/2/2015,7223,152.58,97.44,1102085.34,703809.12,398276.22
+Europe,France,Personal Care,Online,H,10/16/2010,762655293,11/11/2010,5504,81.73,56.67,449841.92,311911.68,137930.24
+Australia and Oceania,Tuvalu,Office Supplies,Offline,H,1/12/2012,371796500,1/19/2012,1701,651.21,524.96,1107708.21,892956.96,214751.25
+Asia,Myanmar,Cereal,Offline,C,7/20/2013,571082055,8/15/2013,4726,205.70,117.11,972138.20,553461.86,418676.34
+Europe,Romania,Personal Care,Offline,L,1/14/2015,119935786,1/27/2015,519,81.73,56.67,42417.87,29411.73,13006.14
+Sub-Saharan Africa,Rwanda,Personal Care,Offline,H,4/3/2017,998094022,4/16/2017,7056,81.73,56.67,576686.88,399863.52,176823.36
+Europe,Czech Republic,Snacks,Online,M,8/31/2010,755605590,9/11/2010,9340,152.58,97.44,1425097.20,910089.60,515007.60
+Sub-Saharan Africa,Zambia,Beverages,Offline,C,1/31/2017,162831819,2/2/2017,4408,47.45,31.79,209159.60,140130.32,69029.28
+Australia and Oceania,Tonga,Office Supplies,Offline,H,3/7/2010,960446536,3/28/2010,6328,651.21,524.96,4120856.88,3321946.88,798910.00
+Sub-Saharan Africa,Nigeria,Clothes,Offline,L,2/10/2010,909436070,2/27/2010,1198,109.28,35.84,130917.44,42936.32,87981.12
+Asia,Turkmenistan,Office Supplies,Online,L,8/10/2011,541099250,9/6/2011,2147,651.21,524.96,1398147.87,1127089.12,271058.75
+Europe,Moldova ,Meat,Online,M,6/13/2010,907047402,8/1/2010,4338,421.89,364.69,1830158.82,1582025.22,248133.60
+Sub-Saharan Africa,Burundi,Meat,Online,C,11/7/2014,429204356,11/28/2014,9962,421.89,364.69,4202868.18,3633041.78,569826.40
+Sub-Saharan Africa,Djibouti,Office Supplies,Offline,L,5/17/2011,749806439,7/2/2011,3243,651.21,524.96,2111874.03,1702445.28,409428.75
+Sub-Saharan Africa,Mauritius ,Vegetables,Online,C,2/23/2014,881402480,3/7/2014,5435,154.06,90.93,837316.10,494204.55,343111.55
+Asia,South Korea,Fruits,Offline,H,8/24/2015,356853806,9/16/2015,9826,9.33,6.92,91676.58,67995.92,23680.66
+Australia and Oceania,New Zealand,Cereal,Online,L,3/11/2013,579334247,3/30/2013,6733,205.70,117.11,1384978.10,788501.63,596476.47
+Australia and Oceania,Kiribati,Clothes,Offline,C,10/3/2012,772330129,10/9/2012,8503,109.28,35.84,929207.84,304747.52,624460.32
+Sub-Saharan Africa,Lesotho,Beverages,Offline,M,1/2/2010,229640281,1/28/2010,4517,47.45,31.79,214331.65,143595.43,70736.22
+Middle East and North Africa,Jordan,Fruits,Offline,L,10/26/2016,565376031,11/29/2016,6186,9.33,6.92,57715.38,42807.12,14908.26
+Middle East and North Africa,Pakistan,Office Supplies,Offline,M,1/25/2012,763961207,2/19/2012,1953,651.21,524.96,1271813.13,1025246.88,246566.25
+Sub-Saharan Africa,Seychelles ,Beverages,Offline,L,7/19/2013,330132138,7/25/2013,2291,47.45,31.79,108707.95,72830.89,35877.06
+Europe,Norway,Fruits,Offline,L,8/12/2013,638937652,9/6/2013,4705,9.33,6.92,43897.65,32558.60,11339.05
+Middle East and North Africa,Syria,Clothes,Online,H,4/6/2013,885739076,5/14/2013,8730,109.28,35.84,954014.40,312883.20,641131.20
+Sub-Saharan Africa,Sudan,Household,Offline,H,10/8/2010,336210238,11/22/2010,936,668.27,502.54,625500.72,470377.44,155123.28
+Sub-Saharan Africa,Togo,Fruits,Online,C,1/14/2013,576337468,1/18/2013,9919,9.33,6.92,92544.27,68639.48,23904.79
+Middle East and North Africa,Libya,Household,Offline,H,9/10/2016,562419593,9/27/2016,1311,668.27,502.54,876101.97,658829.94,217272.03
+Central America and the Caribbean,Jamaica,Beverages,Offline,L,11/3/2011,671067941,12/18/2011,2771,47.45,31.79,131483.95,88090.09,43393.86
+Europe,France,Cereal,Offline,H,2/26/2016,449206340,4/3/2016,8993,205.70,117.11,1849860.10,1053170.23,796689.87
+Europe,Romania,Beverages,Online,L,7/10/2010,864071118,7/18/2010,6700,47.45,31.79,317915.00,212993.00,104922.00
+Europe,Russia,Office Supplies,Online,C,12/16/2010,253211104,12/27/2010,9648,651.21,524.96,6282874.08,5064814.08,1218060.00
+Sub-Saharan Africa,Equatorial Guinea,Cereal,Offline,H,11/2/2011,174487626,11/12/2011,3621,205.70,117.11,744839.70,424055.31,320784.39
+Asia,Cambodia,Beverages,Online,H,5/16/2012,456074512,5/25/2012,1438,47.45,31.79,68233.10,45714.02,22519.08
+Australia and Oceania,Samoa ,Cosmetics,Online,C,11/9/2012,546458089,12/4/2012,7947,437.20,263.33,3474428.40,2092683.51,1381744.89
+Central America and the Caribbean,Saint Vincent and the Grenadines,Personal Care,Offline,L,11/5/2010,864437186,11/19/2010,5028,81.73,56.67,410938.44,284936.76,126001.68
+Australia and Oceania,Solomon Islands,Office Supplies,Offline,L,7/18/2012,549123132,8/30/2012,6592,651.21,524.96,4292776.32,3460536.32,832240.00
+Europe,Belgium,Fruits,Online,M,11/10/2013,609939754,11/30/2013,3582,9.33,6.92,33420.06,24787.44,8632.62
+Sub-Saharan Africa,Mauritania,Cosmetics,Online,C,10/6/2011,776623380,10/20/2011,8971,437.20,263.33,3922121.20,2362333.43,1559787.77
+Asia,Vietnam,Office Supplies,Offline,L,8/25/2015,849222838,9/28/2015,2764,651.21,524.96,1799944.44,1450989.44,348955.00
+Sub-Saharan Africa,Guinea-Bissau,Cosmetics,Offline,M,4/4/2013,248099458,4/5/2013,6998,437.20,263.33,3059525.60,1842783.34,1216742.26
+Central America and the Caribbean,Grenada,Office Supplies,Offline,C,5/1/2012,263927066,5/27/2012,739,651.21,524.96,481244.19,387945.44,93298.75
+Europe,Lithuania,Cereal,Offline,M,2/6/2014,907691991,3/9/2014,5086,205.70,117.11,1046190.20,595621.46,450568.74
+Europe,Georgia,Fruits,Offline,C,1/28/2017,460693061,2/25/2017,8169,9.33,6.92,76216.77,56529.48,19687.29
+Europe,Switzerland,Office Supplies,Offline,H,4/5/2013,424541604,5/17/2013,150,651.21,524.96,97681.50,78744.00,18937.50
+Europe,Czech Republic,Household,Online,L,8/25/2014,571161448,9/30/2014,8220,668.27,502.54,5493179.40,4130878.80,1362300.60
+Middle East and North Africa,Afghanistan,Vegetables,Online,M,8/4/2011,292788922,9/8/2011,1603,154.06,90.93,246958.18,145760.79,101197.39
+Sub-Saharan Africa,Central African Republic,Cosmetics,Online,L,6/5/2014,851972854,6/10/2014,6555,437.20,263.33,2865846.00,1726128.15,1139717.85
+Central America and the Caribbean,Guatemala,Personal Care,Offline,C,11/5/2011,431574571,11/29/2011,1361,81.73,56.67,111234.53,77127.87,34106.66
+Sub-Saharan Africa,Swaziland,Cereal,Offline,C,7/13/2012,884767901,7/20/2012,1338,205.70,117.11,275226.60,156693.18,118533.42
+Europe,Netherlands,Beverages,Online,H,2/4/2011,985039174,3/10/2011,3836,47.45,31.79,182018.20,121946.44,60071.76
+Central America and the Caribbean,Costa Rica,Office Supplies,Offline,M,7/23/2014,476187217,8/15/2014,3234,651.21,524.96,2106013.14,1697720.64,408292.50
+Europe,Romania,Clothes,Online,H,11/16/2015,522323358,11/20/2015,5944,109.28,35.84,649560.32,213032.96,436527.36
+Sub-Saharan Africa,Cameroon,Baby Food,Online,H,11/4/2012,557871425,12/22/2012,5407,255.28,159.42,1380298.96,861983.94,518315.02
+Sub-Saharan Africa,Republic of the Congo,Cosmetics,Online,M,11/25/2011,537567746,12/30/2011,7097,437.20,263.33,3102808.40,1868853.01,1233955.39
+Europe,Latvia,Vegetables,Offline,M,10/5/2016,486461150,11/13/2016,3519,154.06,90.93,542137.14,319982.67,222154.47
+Europe,Slovenia,Cosmetics,Online,M,1/24/2017,949912965,3/6/2017,9210,437.20,263.33,4026612.00,2425269.30,1601342.70
+Asia,Turkmenistan,Personal Care,Offline,C,11/14/2014,743597018,11/29/2014,5737,81.73,56.67,468885.01,325115.79,143769.22
+Europe,France,Fruits,Online,L,4/20/2013,103499639,6/6/2013,6698,9.33,6.92,62492.34,46350.16,16142.18
+Central America and the Caribbean,Barbados,Beverages,Offline,C,10/3/2012,235919654,10/13/2012,2723,47.45,31.79,129206.35,86564.17,42642.18
+Asia,Nepal,Baby Food,Online,C,9/17/2014,167468392,10/29/2014,6474,255.28,159.42,1652682.72,1032085.08,620597.64
+Central America and the Caribbean,Nicaragua,Cereal,Online,C,5/2/2010,795069682,5/19/2010,7642,205.70,117.11,1571959.40,894954.62,677004.78
+Sub-Saharan Africa,Ghana,Meat,Offline,L,8/1/2014,835959851,8/27/2014,7952,421.89,364.69,3354869.28,2900014.88,454854.40
+Europe,Slovakia,Personal Care,Offline,C,12/23/2016,877687728,2/7/2017,6158,81.73,56.67,503293.34,348973.86,154319.48
+Sub-Saharan Africa,Botswana,Personal Care,Online,L,9/2/2015,228114640,9/16/2015,3046,81.73,56.67,248949.58,172616.82,76332.76
+Central America and the Caribbean,Cuba,Clothes,Offline,M,9/1/2013,965414416,9/13/2013,6434,109.28,35.84,703107.52,230594.56,472512.96
+Europe,Greece,Baby Food,Offline,H,1/15/2015,288073384,2/16/2015,6171,255.28,159.42,1575332.88,983780.82,591552.06
+Central America and the Caribbean,Costa Rica,Meat,Online,H,7/26/2013,864890372,7/28/2013,9136,421.89,364.69,3854387.04,3331807.84,522579.20
+Central America and the Caribbean,Saint Kitts and Nevis ,Cereal,Offline,L,8/30/2011,484976708,9/16/2011,4240,205.70,117.11,872168.00,496546.40,375621.60
+Europe,Latvia,Household,Online,H,8/3/2016,607756221,8/11/2016,7426,668.27,502.54,4962573.02,3731862.04,1230710.98
+Central America and the Caribbean,Antigua and Barbuda ,Baby Food,Online,C,12/17/2013,512965238,1/7/2014,6668,255.28,159.42,1702207.04,1063012.56,639194.48
+Middle East and North Africa,Pakistan,Snacks,Online,C,12/17/2016,450652587,1/25/2017,6970,152.58,97.44,1063482.60,679156.80,384325.80
+Europe,Liechtenstein,Household,Online,H,2/13/2017,291179597,2/20/2017,5368,668.27,502.54,3587273.36,2697634.72,889638.64
+Europe,San Marino,Fruits,Online,L,10/25/2010,875220096,11/6/2010,5930,9.33,6.92,55326.90,41035.60,14291.30
+Sub-Saharan Africa,Equatorial Guinea,Clothes,Offline,H,8/20/2010,863760411,8/21/2010,4755,109.28,35.84,519626.40,170419.20,349207.20
+Sub-Saharan Africa,Rwanda,Snacks,Offline,H,4/23/2011,788099372,5/5/2011,4972,152.58,97.44,758627.76,484471.68,274156.08
+Europe,Greece,Household,Offline,C,3/11/2016,799848306,4/23/2016,1743,668.27,502.54,1164794.61,875927.22,288867.39
+Middle East and North Africa,Somalia,Meat,Online,M,10/12/2010,220931041,11/13/2010,7259,421.89,364.69,3062499.51,2647284.71,415214.80
+Europe,Czech Republic,Meat,Offline,M,12/5/2011,693583905,1/6/2012,5745,421.89,364.69,2423758.05,2095144.05,328614.00
+Sub-Saharan Africa,Rwanda,Clothes,Online,C,1/14/2011,330355727,2/14/2011,8456,109.28,35.84,924071.68,303063.04,621008.64
+Australia and Oceania,East Timor,Cosmetics,Offline,H,9/27/2015,464107835,10/29/2015,8677,437.20,263.33,3793584.40,2284914.41,1508669.99
+Asia,Mongolia,Snacks,Offline,C,10/12/2015,698014056,11/7/2015,6726,152.58,97.44,1026253.08,655381.44,370871.64
+Sub-Saharan Africa,Democratic Republic of the Congo,Office Supplies,Offline,L,2/14/2017,255560719,3/5/2017,4951,651.21,524.96,3224140.71,2599076.96,625063.75
+Central America and the Caribbean,Panama,Clothes,Online,H,6/12/2015,230546653,6/14/2015,2733,109.28,35.84,298662.24,97950.72,200711.52
+Europe,Sweden,Meat,Online,C,1/18/2015,437083184,2/19/2015,1482,421.89,364.69,625240.98,540470.58,84770.40
+Europe,Macedonia,Vegetables,Offline,C,7/10/2017,759594142,7/12/2017,9641,154.06,90.93,1485292.46,876656.13,608636.33
+Europe,Denmark,Household,Online,L,5/16/2010,702815854,6/6/2010,7684,668.27,502.54,5134986.68,3861517.36,1273469.32
+Central America and the Caribbean,Haiti,Cereal,Offline,H,3/30/2016,741797149,5/3/2016,3116,205.70,117.11,640961.20,364914.76,276046.44
+Europe,Sweden,Snacks,Online,C,6/1/2013,971899354,6/1/2013,5471,152.58,97.44,834765.18,533094.24,301670.94
+Central America and the Caribbean,Saint Lucia,Vegetables,Online,M,4/22/2015,658796298,5/9/2015,1319,154.06,90.93,203205.14,119936.67,83268.47
+Central America and the Caribbean,Barbados,Personal Care,Online,L,9/5/2013,488474309,10/21/2013,9258,81.73,56.67,756656.34,524650.86,232005.48
+Middle East and North Africa,Jordan,Baby Food,Offline,L,9/22/2012,317232215,10/27/2012,4917,255.28,159.42,1255211.76,783868.14,471343.62
+Europe,Czech Republic,Office Supplies,Online,M,2/16/2010,521681344,4/3/2010,5957,651.21,524.96,3879257.97,3127186.72,752071.25
+Middle East and North Africa,Iran,Beverages,Online,L,12/28/2015,648745524,1/27/2016,7072,47.45,31.79,335566.40,224818.88,110747.52
+Sub-Saharan Africa,Namibia,Vegetables,Offline,C,3/11/2011,765661084,3/12/2011,4984,154.06,90.93,767835.04,453195.12,314639.92
+Sub-Saharan Africa,Guinea,Household,Online,L,10/3/2011,109976851,10/14/2011,3449,668.27,502.54,2304863.23,1733260.46,571602.77
+Europe,Iceland,Office Supplies,Offline,L,1/18/2012,239554154,2/13/2012,8253,651.21,524.96,5374436.13,4332494.88,1041941.25
+Europe,Lithuania,Office Supplies,Online,M,4/17/2011,982566821,6/5/2011,2212,651.21,524.96,1440476.52,1161211.52,279265.00
+Europe,United Kingdom,Cosmetics,Online,C,5/5/2017,887501180,6/20/2017,176,437.20,263.33,76947.20,46346.08,30601.12
+Sub-Saharan Africa,Ghana,Fruits,Online,M,8/14/2012,373156058,9/5/2012,4025,9.33,6.92,37553.25,27853.00,9700.25
+Asia,Laos,Baby Food,Online,H,11/23/2010,378642785,1/10/2011,7669,255.28,159.42,1957742.32,1222591.98,735150.34
+Sub-Saharan Africa,The Gambia,Baby Food,Online,C,8/25/2015,113385188,9/23/2015,2052,255.28,159.42,523834.56,327129.84,196704.72
+Asia,South Korea,Cosmetics,Offline,H,4/11/2016,207119596,5/16/2016,146,437.20,263.33,63831.20,38446.18,25385.02
+Central America and the Caribbean,Belize,Cereal,Offline,C,8/11/2014,459894835,9/5/2014,1957,205.70,117.11,402554.90,229184.27,173370.63
+Sub-Saharan Africa,Madagascar,Personal Care,Online,M,7/12/2013,292072236,8/1/2013,9520,81.73,56.67,778069.60,539498.40,238571.20
+Central America and the Caribbean,Jamaica,Snacks,Offline,H,3/15/2013,994325625,4/15/2013,1904,152.58,97.44,290512.32,185525.76,104986.56
+Sub-Saharan Africa,Niger,Clothes,Offline,M,11/11/2014,777641332,12/10/2014,206,109.28,35.84,22511.68,7383.04,15128.64
+Central America and the Caribbean,Grenada,Vegetables,Offline,H,1/6/2017,623318183,2/3/2017,2557,154.06,90.93,393931.42,232508.01,161423.41
+Australia and Oceania,Samoa ,Cosmetics,Online,H,9/1/2011,232967507,9/1/2011,9117,437.20,263.33,3985952.40,2400779.61,1585172.79
+Europe,Macedonia,Fruits,Online,H,10/25/2010,278513133,11/5/2010,7080,9.33,6.92,66056.40,48993.60,17062.80
+Europe,Albania,Baby Food,Offline,L,5/18/2012,152191388,6/22/2012,5669,255.28,159.42,1447182.32,903751.98,543430.34
+Middle East and North Africa,United Arab Emirates,Cosmetics,Online,H,7/22/2011,216551101,8/29/2011,1138,437.20,263.33,497533.60,299669.54,197864.06
+Asia,Brunei,Cosmetics,Offline,L,3/5/2012,454453599,4/21/2012,1774,437.20,263.33,775592.80,467147.42,308445.38
+North America,United States of America,Office Supplies,Offline,C,5/10/2015,919072711,6/7/2015,2894,651.21,524.96,1884601.74,1519234.24,365367.50
+Sub-Saharan Africa,Ghana,Cosmetics,Online,M,9/13/2015,383894765,9/23/2015,1847,437.20,263.33,807508.40,486370.51,321137.89
+Australia and Oceania,Nauru,Beverages,Online,C,8/30/2012,392718589,9/12/2012,3012,47.45,31.79,142919.40,95751.48,47167.92
+Europe,Croatia,Personal Care,Offline,C,5/5/2014,309655511,5/21/2014,2802,81.73,56.67,229007.46,158789.34,70218.12
+Europe,Luxembourg,Meat,Offline,M,12/18/2010,469129359,1/26/2011,4657,421.89,364.69,1964741.73,1698361.33,266380.40
+Sub-Saharan Africa,Democratic Republic of the Congo,Meat,Offline,H,7/14/2016,825876462,7/28/2016,4053,421.89,364.69,1709920.17,1478088.57,231831.60
+Asia,Nepal,Clothes,Offline,M,1/22/2012,504945647,2/3/2012,3493,109.28,35.84,381715.04,125189.12,256525.92
+Europe,Armenia,Snacks,Online,L,6/16/2017,951698243,7/3/2017,7514,152.58,97.44,1146486.12,732164.16,414321.96
+Europe,Malta,Snacks,Online,L,1/27/2012,981808078,1/28/2012,7683,152.58,97.44,1172272.14,748631.52,423640.62
+North America,United States of America,Fruits,Online,H,3/6/2014,831261479,3/8/2014,7599,9.33,6.92,70898.67,52585.08,18313.59
+Asia,Maldives,Snacks,Offline,C,8/7/2016,806357276,9/18/2016,7892,152.58,97.44,1204161.36,768996.48,435164.88
+Europe,Cyprus,Cereal,Online,M,3/27/2013,833706796,4/3/2013,1223,205.70,117.11,251571.10,143225.53,108345.57
+Australia and Oceania,Tonga,Meat,Offline,C,5/28/2010,910233867,6/22/2010,7283,421.89,364.69,3072624.87,2656037.27,416587.60
+Central America and the Caribbean,Trinidad and Tobago,Meat,Offline,M,6/29/2015,653174817,8/2/2015,7798,421.89,364.69,3289898.22,2843852.62,446045.60
+Europe,Croatia,Office Supplies,Online,H,6/9/2010,650078475,6/18/2010,1522,651.21,524.96,991141.62,798989.12,192152.50
+Sub-Saharan Africa,Rwanda,Office Supplies,Online,L,2/13/2016,208806169,3/29/2016,9240,651.21,524.96,6017180.40,4850630.40,1166550.00
+Europe,Sweden,Snacks,Offline,H,10/27/2012,507531726,11/11/2012,8771,152.58,97.44,1338279.18,854646.24,483632.94
+Europe,Netherlands,Personal Care,Online,C,3/10/2012,544741475,3/25/2012,9963,81.73,56.67,814275.99,564603.21,249672.78
+Middle East and North Africa,Oman,Clothes,Online,M,7/30/2015,289234244,8/24/2015,9695,109.28,35.84,1059469.60,347468.80,712000.80
+Middle East and North Africa,Turkey,Fruits,Online,C,3/31/2010,230121362,5/6/2010,6880,9.33,6.92,64190.40,47609.60,16580.80
+Europe,Italy,Baby Food,Online,H,1/15/2011,926826655,2/16/2011,7458,255.28,159.42,1903878.24,1188954.36,714923.88
+Europe,Czech Republic,Household,Online,L,2/21/2011,759086453,2/27/2011,9405,668.27,502.54,6285079.35,4726388.70,1558690.65
+Middle East and North Africa,Iraq,Cereal,Online,L,2/29/2016,876949584,4/13/2016,7725,205.70,117.11,1589032.50,904674.75,684357.75
+Australia and Oceania,New Zealand,Clothes,Offline,C,1/20/2010,250777375,3/2/2010,9453,109.28,35.84,1033023.84,338795.52,694228.32
+Asia,Indonesia,Fruits,Offline,M,12/3/2011,621243655,1/3/2012,8658,9.33,6.92,80779.14,59913.36,20865.78
+Sub-Saharan Africa,Central African Republic,Baby Food,Offline,C,8/19/2011,649334752,9/2/2011,1438,255.28,159.42,367092.64,229245.96,137846.68
+Central America and the Caribbean,Jamaica,Meat,Online,C,6/26/2011,866349494,7/22/2011,922,421.89,364.69,388982.58,336244.18,52738.40
+Europe,Germany,Baby Food,Offline,C,11/1/2014,523899209,11/16/2014,2273,255.28,159.42,580251.44,362361.66,217889.78
+Sub-Saharan Africa,Seychelles ,Clothes,Online,M,10/4/2014,743907725,10/26/2014,7682,109.28,35.84,839488.96,275322.88,564166.08
+Australia and Oceania,Solomon Islands,Snacks,Offline,M,12/13/2012,468611371,1/28/2013,1373,152.58,97.44,209492.34,133785.12,75707.22
+Australia and Oceania,Kiribati,Office Supplies,Online,H,12/23/2015,510558974,1/19/2016,4601,651.21,524.96,2996217.21,2415340.96,580876.25
+Sub-Saharan Africa,Sierra Leone,Vegetables,Online,L,4/21/2016,402611863,5/9/2016,652,154.06,90.93,100447.12,59286.36,41160.76
+Europe,Albania,Clothes,Online,M,4/7/2011,647943866,4/18/2011,9843,109.28,35.84,1075643.04,352773.12,722869.92
+Central America and the Caribbean,Belize,Fruits,Online,M,5/23/2014,470041310,6/1/2014,4524,9.33,6.92,42208.92,31306.08,10902.84
+North America,Mexico,Snacks,Offline,M,10/14/2013,962703025,10/20/2013,4073,152.58,97.44,621458.34,396873.12,224585.22
+Sub-Saharan Africa,Swaziland,Baby Food,Offline,M,10/2/2013,140040338,10/9/2013,9903,255.28,159.42,2528037.84,1578736.26,949301.58
+Sub-Saharan Africa,Botswana,Meat,Online,L,11/17/2015,586477077,11/24/2015,455,421.89,364.69,191959.95,165933.95,26026.00
+Sub-Saharan Africa,South Africa,Household,Offline,C,3/30/2015,906749570,4/12/2015,6203,668.27,502.54,4145278.81,3117255.62,1028023.19
+Sub-Saharan Africa,Nigeria,Cosmetics,Offline,L,10/10/2011,675906646,11/1/2011,4651,437.20,263.33,2033417.20,1224747.83,808669.37
+Sub-Saharan Africa,Mozambique,Cosmetics,Online,C,1/16/2014,889309632,2/26/2014,5337,437.20,263.33,2333336.40,1405392.21,927944.19
+Europe,Romania,Cereal,Offline,C,9/29/2012,812632358,10/17/2012,4828,205.70,117.11,993119.60,565407.08,427712.52
+Europe,Belarus,Cosmetics,Online,L,10/17/2014,231861150,11/1/2014,1722,437.20,263.33,752858.40,453454.26,299404.14
+Middle East and North Africa,Qatar,Office Supplies,Online,H,10/21/2016,803294837,11/20/2016,1648,651.21,524.96,1073194.08,865134.08,208060.00
+Asia,Myanmar,Baby Food,Online,L,6/18/2016,203544747,7/13/2016,2269,255.28,159.42,579230.32,361723.98,217506.34
+Asia,Kyrgyzstan,Beverages,Online,M,4/19/2016,679534709,4/20/2016,8276,47.45,31.79,392696.20,263094.04,129602.16
+Middle East and North Africa,Syria,Beverages,Online,H,5/2/2012,498501050,5/24/2012,6393,47.45,31.79,303347.85,203233.47,100114.38
+Asia,Thailand,Cereal,Online,L,1/9/2013,697992599,2/18/2013,376,205.70,117.11,77343.20,44033.36,33309.84
+Asia,Maldives,Snacks,Online,H,9/25/2012,135870683,10/15/2012,6009,152.58,97.44,916853.22,585516.96,331336.26
+Sub-Saharan Africa,Seychelles ,Cereal,Online,C,9/7/2010,440309131,9/22/2010,6111,205.70,117.11,1257032.70,715659.21,541373.49
+Asia,Turkmenistan,Vegetables,Offline,H,9/24/2014,159794270,11/6/2014,5530,154.06,90.93,851951.80,502842.90,349108.90
+Australia and Oceania,Kiribati,Cereal,Offline,M,11/12/2014,613124930,11/21/2014,6147,205.70,117.11,1264437.90,719875.17,544562.73
+Middle East and North Africa,Libya,Snacks,Offline,C,4/15/2017,939412438,5/16/2017,1871,152.58,97.44,285477.18,182310.24,103166.94
+Europe,Andorra,Snacks,Online,M,5/3/2010,348080623,5/19/2010,3646,152.58,97.44,556306.68,355266.24,201040.44
+Europe,Germany,Office Supplies,Online,L,9/11/2013,368865811,10/16/2013,4445,651.21,524.96,2894628.45,2333447.20,561181.25
+Asia,Kyrgyzstan,Beverages,Online,M,1/17/2014,801816833,3/3/2014,4274,47.45,31.79,202801.30,135870.46,66930.84
+Sub-Saharan Africa,Sudan,Cosmetics,Offline,C,4/10/2014,167295014,4/28/2014,5167,437.20,263.33,2259012.40,1360626.11,898386.29
+Sub-Saharan Africa,Comoros,Office Supplies,Offline,M,7/18/2014,655974185,7/31/2014,6193,651.21,524.96,4032943.53,3251077.28,781866.25
+Europe,Denmark,Personal Care,Online,L,2/4/2016,478840672,2/9/2016,8451,81.73,56.67,690700.23,478918.17,211782.06
+Sub-Saharan Africa,Zambia,Personal Care,Offline,M,6/5/2017,617193305,6/10/2017,69,81.73,56.67,5639.37,3910.23,1729.14
+Europe,Sweden,Cereal,Online,L,7/19/2010,772643411,8/25/2010,1210,205.70,117.11,248897.00,141703.10,107193.90
+Central America and the Caribbean,Costa Rica,Cereal,Offline,L,1/11/2015,717114818,1/25/2015,9065,205.70,117.11,1864670.50,1061602.15,803068.35
+Europe,Poland,Beverages,Online,M,8/22/2013,742843854,9/4/2013,2859,47.45,31.79,135659.55,90887.61,44771.94
+Sub-Saharan Africa,Sudan,Office Supplies,Offline,C,9/23/2016,312379348,11/11/2016,8846,651.21,524.96,5760603.66,4643796.16,1116807.50
+Europe,Serbia,Beverages,Offline,C,12/23/2012,308582627,2/9/2013,5312,47.45,31.79,252054.40,168868.48,83185.92
+Middle East and North Africa,Yemen,Beverages,Online,H,1/29/2011,784627521,2/25/2011,7574,47.45,31.79,359386.30,240777.46,118608.84
+Asia,Uzbekistan,Household,Offline,C,3/15/2013,514000356,3/30/2013,2982,668.27,502.54,1992781.14,1498574.28,494206.86
+Europe,Latvia,Personal Care,Online,L,3/29/2011,140499961,4/30/2011,5915,81.73,56.67,483432.95,335203.05,148229.90
+Middle East and North Africa,Pakistan,Household,Offline,H,4/13/2013,828237664,4/19/2013,2785,668.27,502.54,1861131.95,1399573.90,461558.05
+Middle East and North Africa,Kuwait,Fruits,Offline,C,2/15/2017,211637294,2/23/2017,7033,9.33,6.92,65617.89,48668.36,16949.53
+Sub-Saharan Africa,Lesotho,Cereal,Online,C,1/26/2014,945435178,2/15/2014,4134,205.70,117.11,850363.80,484132.74,366231.06
+Sub-Saharan Africa,Sao Tome and Principe,Vegetables,Offline,L,5/26/2015,354680144,6/8/2015,6591,154.06,90.93,1015409.46,599319.63,416089.83
+Asia,Turkmenistan,Clothes,Online,M,9/30/2010,784733521,10/21/2010,8942,109.28,35.84,977181.76,320481.28,656700.48
+Sub-Saharan Africa,Guinea-Bissau,Fruits,Offline,C,4/27/2017,151269137,5/14/2017,2754,9.33,6.92,25694.82,19057.68,6637.14
+Sub-Saharan Africa,Mali,Vegetables,Offline,L,7/13/2015,490273320,8/18/2015,1625,154.06,90.93,250347.50,147761.25,102586.25
+Central America and the Caribbean,Saint Vincent and the Grenadines,Beverages,Offline,H,5/6/2013,308044898,5/7/2013,6186,47.45,31.79,293525.70,196652.94,96872.76
+Central America and the Caribbean,Haiti,Fruits,Online,H,3/27/2012,431195199,3/27/2012,9096,9.33,6.92,84865.68,62944.32,21921.36
+Europe,Liechtenstein,Cereal,Online,M,12/13/2010,856648051,12/23/2010,50,205.70,117.11,10285.00,5855.50,4429.50
+Central America and the Caribbean,Guatemala,Household,Offline,M,11/14/2016,301639783,12/2/2016,770,668.27,502.54,514567.90,386955.80,127612.10
+Middle East and North Africa,Libya,Office Supplies,Online,C,12/11/2011,253719222,12/13/2011,11,651.21,524.96,7163.31,5774.56,1388.75
+Asia,Maldives,Meat,Online,H,1/15/2017,920747697,1/17/2017,8559,421.89,364.69,3610956.51,3121381.71,489574.80
+Europe,Slovakia,Cosmetics,Offline,H,6/13/2012,780899035,7/30/2012,4233,437.20,263.33,1850667.60,1114675.89,735991.71
+Central America and the Caribbean,Dominica,Vegetables,Offline,L,5/21/2017,632659566,6/18/2017,6880,154.06,90.93,1059932.80,625598.40,434334.40
+Australia and Oceania,Australia,Fruits,Offline,H,6/26/2010,444828116,7/21/2010,3380,9.33,6.92,31535.40,23389.60,8145.80
+Australia and Oceania,Fiji,Household,Online,M,11/16/2016,706516015,12/19/2016,2644,668.27,502.54,1766905.88,1328715.76,438190.12
+Europe,Monaco,Meat,Offline,L,7/15/2013,177147090,8/17/2013,615,421.89,364.69,259462.35,224284.35,35178.00
+Middle East and North Africa,Azerbaijan,Meat,Offline,C,5/14/2016,836457669,6/3/2016,5267,421.89,364.69,2222094.63,1920822.23,301272.40
+Middle East and North Africa,Libya,Meat,Online,C,11/1/2015,234496581,11/29/2015,1604,421.89,364.69,676711.56,584962.76,91748.80
+Central America and the Caribbean,Costa Rica,Beverages,Online,C,1/14/2011,941625154,1/15/2011,6663,47.45,31.79,316159.35,211816.77,104342.58
+Central America and the Caribbean,Trinidad and Tobago,Office Supplies,Online,M,7/2/2013,198517215,7/30/2013,4510,651.21,524.96,2936957.10,2367569.60,569387.50
+Sub-Saharan Africa,Cote d'Ivoire,Office Supplies,Offline,C,2/6/2013,266159093,2/10/2013,1245,651.21,524.96,810756.45,653575.20,157181.25
+Europe,Portugal,Office Supplies,Offline,C,2/17/2012,775849616,3/5/2012,9997,651.21,524.96,6510146.37,5248025.12,1262121.25
+Europe,Macedonia,Meat,Online,C,12/14/2013,979200112,12/30/2013,5928,421.89,364.69,2500963.92,2161882.32,339081.60
+North America,United States of America,Cosmetics,Online,L,8/20/2011,198134410,9/29/2011,1230,437.20,263.33,537756.00,323895.90,213860.10
+Sub-Saharan Africa,Central African Republic,Vegetables,Online,C,6/14/2014,974888837,7/22/2014,126,154.06,90.93,19411.56,11457.18,7954.38
+Asia,Nepal,Cosmetics,Offline,L,10/24/2013,522012221,10/25/2013,3871,437.20,263.33,1692401.20,1019350.43,673050.77
+Sub-Saharan Africa,Sierra Leone,Household,Online,M,5/6/2017,172365891,6/9/2017,5752,668.27,502.54,3843889.04,2890610.08,953278.96
+Europe,Vatican City,Snacks,Offline,M,10/18/2014,429123675,11/11/2014,6086,152.58,97.44,928601.88,593019.84,335582.04
+Europe,San Marino,Vegetables,Offline,L,2/19/2012,515771901,3/19/2012,7222,154.06,90.93,1112621.32,656696.46,455924.86
+Europe,Ukraine,Cereal,Online,C,8/7/2012,626109397,9/15/2012,8539,205.70,117.11,1756472.30,1000002.29,756470.01
+Europe,Czech Republic,Household,Offline,H,12/5/2012,574247491,12/17/2012,1448,668.27,502.54,967654.96,727677.92,239977.04
+Australia and Oceania,Tuvalu,Clothes,Online,C,9/16/2014,244610011,10/27/2014,4393,109.28,35.84,480067.04,157445.12,322621.92
+Europe,Russia,Snacks,Online,M,1/5/2013,941933286,2/8/2013,7846,152.58,97.44,1197142.68,764514.24,432628.44
+Asia,Thailand,Vegetables,Online,L,5/9/2015,441266143,6/16/2015,9312,154.06,90.93,1434606.72,846740.16,587866.56
+Middle East and North Africa,Libya,Household,Offline,M,2/21/2015,637969911,3/2/2015,8329,668.27,502.54,5566020.83,4185655.66,1380365.17
+Europe,France,Cereal,Offline,L,8/28/2010,797718417,10/15/2010,1462,205.70,117.11,300733.40,171214.82,129518.58
+Asia,Myanmar,Snacks,Online,H,5/19/2016,706497991,5/31/2016,7310,152.58,97.44,1115359.80,712286.40,403073.40
+Europe,Estonia,Cereal,Online,C,10/14/2013,220607459,10/17/2013,1504,205.70,117.11,309372.80,176133.44,133239.36
+Sub-Saharan Africa,Zambia,Snacks,Offline,H,9/13/2015,616658151,10/16/2015,1705,152.58,97.44,260148.90,166135.20,94013.70
+Asia,Brunei,Cereal,Offline,M,1/29/2017,541573894,1/30/2017,2605,205.70,117.11,535848.50,305071.55,230776.95
+Sub-Saharan Africa,Djibouti,Clothes,Offline,C,12/14/2013,962591016,1/5/2014,927,109.28,35.84,101302.56,33223.68,68078.88
+North America,United States of America,Household,Online,H,10/7/2014,217258346,11/23/2014,427,668.27,502.54,285351.29,214584.58,70766.71
+Sub-Saharan Africa,Rwanda,Meat,Online,M,11/22/2013,763437211,1/3/2014,6891,421.89,364.69,2907243.99,2513078.79,394165.20
+Europe,Ireland,Baby Food,Offline,L,7/19/2010,629301440,7/29/2010,3135,255.28,159.42,800302.80,499781.70,300521.10
+Sub-Saharan Africa,Mali,Household,Offline,L,8/3/2012,163337361,8/22/2012,4010,668.27,502.54,2679762.70,2015185.40,664577.30
+Middle East and North Africa,Iran,Cosmetics,Offline,L,1/4/2010,684343802,1/28/2010,1394,437.20,263.33,609456.80,367082.02,242374.78
+Europe,Macedonia,Clothes,Offline,H,8/1/2016,431432092,9/13/2016,9198,109.28,35.84,1005157.44,329656.32,675501.12
+Sub-Saharan Africa,Seychelles ,Baby Food,Online,M,1/25/2013,414026057,2/26/2013,8366,255.28,159.42,2135672.48,1333707.72,801964.76
+Sub-Saharan Africa,Cote d'Ivoire,Beverages,Offline,M,8/2/2011,361862027,8/14/2011,1870,47.45,31.79,88731.50,59447.30,29284.20
+Central America and the Caribbean,Haiti,Beverages,Online,H,12/14/2013,974988830,1/26/2014,9716,47.45,31.79,461024.20,308871.64,152152.56
+Asia,India,Beverages,Online,M,6/29/2015,773767793,8/12/2015,3940,47.45,31.79,186953.00,125252.60,61700.40
+Sub-Saharan Africa,Seychelles ,Fruits,Online,H,5/12/2016,148872745,6/6/2016,3608,9.33,6.92,33662.64,24967.36,8695.28
+Sub-Saharan Africa,Swaziland,Personal Care,Online,M,3/24/2010,911290013,4/3/2010,9821,81.73,56.67,802670.33,556556.07,246114.26
+Europe,Andorra,Baby Food,Online,H,9/27/2010,442318427,10/8/2010,707,255.28,159.42,180482.96,112709.94,67773.02
+Asia,Nepal,Fruits,Online,M,6/23/2017,243569314,6/25/2017,6428,9.33,6.92,59973.24,44481.76,15491.48
+Sub-Saharan Africa,Liberia,Baby Food,Offline,M,2/22/2012,986966502,4/9/2012,4175,255.28,159.42,1065794.00,665578.50,400215.50
+Sub-Saharan Africa,Chad,Baby Food,Offline,M,5/18/2015,264746320,6/6/2015,3174,255.28,159.42,810258.72,505999.08,304259.64
+Central America and the Caribbean,Belize,Snacks,Online,H,10/21/2014,239457595,11/27/2014,9678,152.58,97.44,1476669.24,943024.32,533644.92
+Asia,Brunei,Snacks,Offline,H,4/4/2014,893961656,5/1/2014,1975,152.58,97.44,301345.50,192444.00,108901.50
+Asia,North Korea,Personal Care,Online,L,11/6/2014,481432330,11/9/2014,5380,81.73,56.67,439707.40,304884.60,134822.80
+Central America and the Caribbean,Cuba,Vegetables,Offline,L,3/8/2011,475355947,4/26/2011,7243,154.06,90.93,1115856.58,658605.99,457250.59
+Sub-Saharan Africa,Togo,Office Supplies,Offline,C,4/17/2010,619531333,5/16/2010,1944,651.21,524.96,1265952.24,1020522.24,245430.00
+Middle East and North Africa,Kuwait,Beverages,Offline,M,9/10/2012,278069818,10/5/2012,5893,47.45,31.79,279622.85,187338.47,92284.38
+Asia,Kazakhstan,Cereal,Offline,L,3/11/2016,685395228,3/17/2016,2534,205.70,117.11,521243.80,296756.74,224487.06
+Australia and Oceania,Australia,Snacks,Online,H,1/29/2012,896243894,2/3/2012,7340,152.58,97.44,1119937.20,715209.60,404727.60
+Sub-Saharan Africa,Benin,Cosmetics,Online,M,8/21/2011,935664641,10/4/2011,2815,437.20,263.33,1230718.00,741273.95,489444.05
+Asia,Kazakhstan,Snacks,Online,M,1/31/2012,449018800,2/4/2012,3496,152.58,97.44,533419.68,340650.24,192769.44
+Middle East and North Africa,Jordan,Snacks,Offline,M,6/21/2015,951980197,7/1/2015,950,152.58,97.44,144951.00,92568.00,52383.00
+Asia,Turkmenistan,Household,Offline,C,5/9/2017,880535161,6/25/2017,8776,668.27,502.54,5864737.52,4410291.04,1454446.48
+Europe,Austria,Cosmetics,Offline,L,7/24/2010,540982520,9/1/2010,7604,437.20,263.33,3324468.80,2002361.32,1322107.48
+Australia and Oceania,Papua New Guinea,Household,Online,M,9/16/2011,759933602,10/9/2011,95,668.27,502.54,63485.65,47741.30,15744.35
+Sub-Saharan Africa,Sudan,Beverages,Offline,H,12/20/2011,634312236,1/13/2012,5941,47.45,31.79,281900.45,188864.39,93036.06
+Central America and the Caribbean,Honduras,Cereal,Offline,L,2/25/2011,681354749,3/29/2011,6866,205.70,117.11,1412336.20,804077.26,608258.94
+Middle East and North Africa,Azerbaijan,Household,Offline,C,12/3/2013,588609969,12/26/2013,1625,668.27,502.54,1085938.75,816627.50,269311.25
+Europe,Iceland,Clothes,Offline,C,11/11/2010,563939225,12/19/2010,1004,109.28,35.84,109717.12,35983.36,73733.76
+North America,Greenland,Household,Online,L,7/20/2012,885516345,7/25/2012,2819,668.27,502.54,1883853.13,1416660.26,467192.87
+Sub-Saharan Africa,Liberia,Vegetables,Offline,C,6/26/2015,551827657,7/13/2015,6921,154.06,90.93,1066249.26,629326.53,436922.73
+Sub-Saharan Africa,Cameroon,Beverages,Offline,H,6/10/2013,431671988,6/14/2013,189,47.45,31.79,8968.05,6008.31,2959.74
+Sub-Saharan Africa,Benin,Cosmetics,Online,H,5/29/2016,114160668,6/6/2016,1534,437.20,263.33,670664.80,403948.22,266716.58
+North America,United States of America,Cosmetics,Offline,H,7/4/2016,158717525,7/17/2016,6897,437.20,263.33,3015368.40,1816187.01,1199181.39
+Asia,South Korea,Personal Care,Offline,M,6/29/2014,745078885,7/11/2014,4254,81.73,56.67,347679.42,241074.18,106605.24
+Europe,Austria,Cereal,Online,H,12/24/2015,323293578,2/2/2016,8609,205.70,117.11,1770871.30,1008199.99,762671.31
+Middle East and North Africa,Turkey,Fruits,Online,M,6/28/2012,563722932,8/9/2012,6998,9.33,6.92,65291.34,48426.16,16865.18
+Europe,Estonia,Snacks,Online,L,7/22/2015,507040774,7/25/2015,3488,152.58,97.44,532199.04,339870.72,192328.32
+Sub-Saharan Africa,Mauritania,Cereal,Offline,H,1/16/2015,614233434,2/8/2015,4178,205.70,117.11,859414.60,489285.58,370129.02
+Europe,Greece,Office Supplies,Offline,M,4/2/2013,516599738,5/9/2013,2197,651.21,524.96,1430708.37,1153337.12,277371.25
+North America,Greenland,Fruits,Online,M,7/17/2013,365751016,8/31/2013,2708,9.33,6.92,25265.64,18739.36,6526.28
+Europe,Belarus,Clothes,Online,H,7/22/2016,383611094,8/26/2016,7902,109.28,35.84,863530.56,283207.68,580322.88
+Europe,San Marino,Baby Food,Offline,M,6/3/2016,412416303,6/11/2016,2004,255.28,159.42,511581.12,319477.68,192103.44
+Europe,Croatia,Cosmetics,Offline,M,2/15/2012,364715468,2/19/2012,6267,437.20,263.33,2739932.40,1650289.11,1089643.29
+Australia and Oceania,East Timor,Fruits,Offline,M,4/15/2011,673369920,5/12/2011,3978,9.33,6.92,37114.74,27527.76,9586.98
+Sub-Saharan Africa,Nigeria,Cosmetics,Offline,L,3/25/2011,941553485,4/9/2011,5454,437.20,263.33,2384488.80,1436201.82,948286.98
+Europe,Netherlands,Personal Care,Offline,H,5/8/2010,392752492,6/3/2010,3045,81.73,56.67,248867.85,172560.15,76307.70
+North America,United States of America,Personal Care,Offline,L,11/21/2011,120765769,1/10/2012,6130,81.73,56.67,501004.90,347387.10,153617.80
+Sub-Saharan Africa,Namibia,Meat,Offline,H,7/30/2012,839704644,9/13/2012,6119,421.89,364.69,2581544.91,2231538.11,350006.80
+Europe,Hungary,Fruits,Offline,H,1/4/2014,633992946,1/6/2014,1456,9.33,6.92,13584.48,10075.52,3508.96
+Asia,Turkmenistan,Cosmetics,Online,H,4/5/2011,808367002,5/8/2011,2614,437.20,263.33,1142840.80,688344.62,454496.18
+Europe,San Marino,Clothes,Online,C,10/30/2011,937875640,11/30/2011,7098,109.28,35.84,775669.44,254392.32,521277.12
+Central America and the Caribbean,Saint Vincent and the Grenadines,Vegetables,Offline,C,9/18/2016,217880189,9/23/2016,4445,154.06,90.93,684796.70,404183.85,280612.85
+Europe,Belarus,Vegetables,Online,C,8/12/2016,614054477,8/16/2016,1220,154.06,90.93,187953.20,110934.60,77018.60
+Australia and Oceania,Marshall Islands,Clothes,Offline,L,11/14/2010,112384831,12/23/2010,6024,109.28,35.84,658302.72,215900.16,442402.56
+Europe,Sweden,Baby Food,Offline,H,3/29/2011,369170081,4/3/2011,4486,255.28,159.42,1145186.08,715158.12,430027.96
+Sub-Saharan Africa,Madagascar,Snacks,Offline,C,5/30/2015,861021554,6/18/2015,4266,152.58,97.44,650906.28,415679.04,235227.24
+Asia,China,Meat,Online,L,10/5/2010,234863078,11/3/2010,59,421.89,364.69,24891.51,21516.71,3374.80
+Europe,Albania,Clothes,Offline,C,1/16/2016,357930982,3/5/2016,8586,109.28,35.84,938278.08,307722.24,630555.84
+Asia,Indonesia,Office Supplies,Offline,L,12/25/2016,467774093,1/26/2017,3604,651.21,524.96,2346960.84,1891955.84,455005.00
+Sub-Saharan Africa,Botswana,Vegetables,Offline,L,7/11/2015,322253739,8/22/2015,898,154.06,90.93,138345.88,81655.14,56690.74
+Australia and Oceania,New Zealand,Cereal,Online,L,11/19/2010,649543750,12/22/2010,3285,205.70,117.11,675724.50,384706.35,291018.15
+North America,Mexico,Fruits,Online,M,12/4/2010,898130452,12/27/2010,5614,9.33,6.92,52378.62,38848.88,13529.74
+Europe,Russia,Office Supplies,Offline,M,3/15/2013,586812674,3/31/2013,9766,651.21,524.96,6359716.86,5126759.36,1232957.50
+Sub-Saharan Africa,Cameroon,Beverages,Online,L,5/8/2016,654701745,6/9/2016,9650,47.45,31.79,457892.50,306773.50,151119.00
+Europe,Sweden,Fruits,Online,L,4/11/2016,311221492,5/7/2016,6210,9.33,6.92,57939.30,42973.20,14966.10
+Middle East and North Africa,Algeria,Meat,Offline,L,7/9/2017,186108243,7/27/2017,2420,421.89,364.69,1020973.80,882549.80,138424.00
+Middle East and North Africa,Qatar,Cereal,Offline,H,5/3/2014,979410827,5/21/2014,8283,205.70,117.11,1703813.10,970022.13,733790.97
+Middle East and North Africa,Somalia,Beverages,Online,L,3/7/2017,311490571,4/23/2017,5837,47.45,31.79,276965.65,185558.23,91407.42
+Asia,Malaysia,Fruits,Online,H,1/29/2011,373021304,2/12/2011,4148,9.33,6.92,38700.84,28704.16,9996.68
+Europe,Sweden,Snacks,Online,M,5/28/2012,274989354,7/10/2012,4316,152.58,97.44,658535.28,420551.04,237984.24
+Sub-Saharan Africa,Comoros,Household,Offline,M,2/5/2012,998693549,3/21/2012,4469,668.27,502.54,2986498.63,2245851.26,740647.37
+Sub-Saharan Africa,Ethiopia,Meat,Online,L,4/20/2017,445745217,6/4/2017,4770,421.89,364.69,2012415.30,1739571.30,272844.00
+Asia,Laos,Fruits,Online,L,4/20/2017,188068187,4/25/2017,2411,9.33,6.92,22494.63,16684.12,5810.51
+Asia,Brunei,Fruits,Online,C,1/5/2010,517898786,1/9/2010,6614,9.33,6.92,61708.62,45768.88,15939.74
+Europe,Cyprus,Office Supplies,Offline,L,5/8/2013,897785842,5/12/2013,3636,651.21,524.96,2367799.56,1908754.56,459045.00
+Central America and the Caribbean,Guatemala,Beverages,Online,C,1/3/2016,410590684,2/6/2016,1762,47.45,31.79,83606.90,56013.98,27592.92
+Sub-Saharan Africa,Tanzania,Meat,Online,L,7/8/2011,909487140,7/17/2011,6310,421.89,364.69,2662125.90,2301193.90,360932.00
+Asia,Mongolia,Cosmetics,Online,C,3/17/2017,267961537,3/26/2017,4628,437.20,263.33,2023361.60,1218691.24,804670.36
+Europe,Romania,Meat,Online,H,5/22/2017,929812705,5/25/2017,1097,421.89,364.69,462813.33,400064.93,62748.40
+Middle East and North Africa,Saudi Arabia,Office Supplies,Online,H,7/31/2012,459151971,8/21/2012,2126,651.21,524.96,1384472.46,1116064.96,268407.50
+Australia and Oceania,New Zealand,Cosmetics,Offline,L,9/25/2015,990403163,10/27/2015,1160,437.20,263.33,507152.00,305462.80,201689.20
+Asia,Sri Lanka,Clothes,Online,L,7/23/2010,678302609,8/10/2010,3670,109.28,35.84,401057.60,131532.80,269524.80
+Central America and the Caribbean,Antigua and Barbuda ,Cosmetics,Online,H,12/4/2015,447899138,12/5/2015,2163,437.20,263.33,945663.60,569582.79,376080.81
+Asia,China,Cereal,Online,C,11/22/2013,844554078,12/6/2013,1174,205.70,117.11,241491.80,137487.14,104004.66
+Sub-Saharan Africa,Benin,Personal Care,Offline,H,2/3/2014,683941256,3/6/2014,2271,81.73,56.67,185608.83,128697.57,56911.26
+Europe,Ukraine,Cosmetics,Online,H,1/29/2012,202047002,3/6/2012,9053,437.20,263.33,3957971.60,2383926.49,1574045.11
+Australia and Oceania,Tonga,Personal Care,Offline,L,10/28/2015,605170142,11/1/2015,2148,81.73,56.67,175556.04,121727.16,53828.88
+Europe,Kosovo,Fruits,Online,L,8/27/2011,919922006,9/18/2011,4219,9.33,6.92,39363.27,29195.48,10167.79
+Europe,Moldova ,Beverages,Offline,H,6/17/2013,243226420,7/3/2013,4958,47.45,31.79,235257.10,157614.82,77642.28
+Sub-Saharan Africa,Cape Verde,Household,Offline,M,6/24/2013,892319715,7/17/2013,6088,668.27,502.54,4068427.76,3059463.52,1008964.24
+Middle East and North Africa,Iran,Baby Food,Online,H,5/17/2016,754750716,6/8/2016,6364,255.28,159.42,1624601.92,1014548.88,610053.04
+Sub-Saharan Africa,Equatorial Guinea,Cosmetics,Online,C,9/24/2012,938380753,9/26/2012,6573,437.20,263.33,2873715.60,1730868.09,1142847.51
+Central America and the Caribbean,Saint Lucia,Vegetables,Online,M,2/14/2013,821383655,3/29/2013,4531,154.06,90.93,698045.86,412003.83,286042.03
+Asia,Kyrgyzstan,Office Supplies,Online,M,1/20/2014,302245748,2/25/2014,88,651.21,524.96,57306.48,46196.48,11110.00
+Europe,United Kingdom,Clothes,Online,M,11/13/2016,249765861,11/24/2016,123,109.28,35.84,13441.44,4408.32,9033.12
+Europe,Romania,Beverages,Online,H,5/31/2016,253055322,6/12/2016,3548,47.45,31.79,168352.60,112790.92,55561.68
+Sub-Saharan Africa,Cote d'Ivoire,Cereal,Online,H,5/18/2012,871537959,6/8/2012,6304,205.70,117.11,1296732.80,738261.44,558471.36
+Asia,Brunei,Clothes,Online,H,2/3/2013,484950101,3/7/2013,6366,109.28,35.84,695676.48,228157.44,467519.04
+Europe,Montenegro,Beverages,Offline,C,8/6/2016,243340575,9/4/2016,8739,47.45,31.79,414665.55,277812.81,136852.74
+Australia and Oceania,Vanuatu,Snacks,Online,H,6/2/2014,917070710,6/11/2014,457,152.58,97.44,69729.06,44530.08,25198.98
+Asia,Maldives,Office Supplies,Online,M,7/5/2010,646814334,7/11/2010,5590,651.21,524.96,3640263.90,2934526.40,705737.50
+Australia and Oceania,Palau,Snacks,Online,C,6/16/2017,793557775,7/6/2017,235,152.58,97.44,35856.30,22898.40,12957.90
+Europe,Czech Republic,Household,Offline,H,11/6/2014,988599860,12/11/2014,7522,668.27,502.54,5026726.94,3780105.88,1246621.06
+Sub-Saharan Africa,Democratic Republic of the Congo,Cereal,Online,H,8/10/2013,483551919,8/11/2013,2613,205.70,117.11,537494.10,306008.43,231485.67
+Asia,Singapore,Meat,Online,H,5/19/2014,400337779,5/27/2014,7700,421.89,364.69,3248553.00,2808113.00,440440.00
+Europe,Cyprus,Snacks,Online,M,4/18/2011,581193768,4/24/2011,7006,152.58,97.44,1068975.48,682664.64,386310.84
+Central America and the Caribbean,Dominican Republic,Office Supplies,Online,L,11/28/2010,938668715,1/3/2011,1787,651.21,524.96,1163712.27,938103.52,225608.75
+Asia,South Korea,Beverages,Online,L,4/9/2013,105623948,5/27/2013,5328,47.45,31.79,252813.60,169377.12,83436.48
+Middle East and North Africa,Morocco,Personal Care,Online,H,9/16/2015,385233294,10/21/2015,7947,81.73,56.67,649508.31,450356.49,199151.82
+Europe,Serbia,Cereal,Offline,C,8/11/2016,100983083,8/11/2016,1993,205.70,117.11,409960.10,233400.23,176559.87
+Central America and the Caribbean,Saint Lucia,Cosmetics,Offline,L,8/25/2011,346672141,10/3/2011,6845,437.20,263.33,2992634.00,1802493.85,1190140.15
+Europe,Latvia,Personal Care,Offline,L,9/13/2012,936411798,9/17/2012,3915,81.73,56.67,319972.95,221863.05,98109.90
+Sub-Saharan Africa,Mauritania,Beverages,Offline,H,10/14/2013,854625880,11/26/2013,1644,47.45,31.79,78007.80,52262.76,25745.04
+Sub-Saharan Africa,Senegal,Household,Online,M,7/20/2017,506050717,7/30/2017,508,668.27,502.54,339481.16,255290.32,84190.84
+Sub-Saharan Africa,Swaziland,Vegetables,Online,M,5/8/2016,365735137,5/11/2016,8009,154.06,90.93,1233866.54,728258.37,505608.17
+Middle East and North Africa,Azerbaijan,Cosmetics,Offline,H,3/10/2011,529040467,4/10/2011,3686,437.20,263.33,1611519.20,970634.38,640884.82
+Europe,Bosnia and Herzegovina,Household,Offline,M,6/22/2015,261640536,8/1/2015,4104,668.27,502.54,2742580.08,2062424.16,680155.92
+Sub-Saharan Africa,Senegal,Snacks,Online,L,5/27/2013,249521672,7/8/2013,7863,152.58,97.44,1199736.54,766170.72,433565.82
+Sub-Saharan Africa,Djibouti,Baby Food,Offline,L,9/27/2016,348982703,11/2/2016,592,255.28,159.42,151125.76,94376.64,56749.12
+Sub-Saharan Africa,Ethiopia,Baby Food,Online,C,8/4/2015,936634957,9/6/2015,9953,255.28,159.42,2540801.84,1586707.26,954094.58
+Asia,Philippines,Cereal,Offline,M,6/27/2012,659402263,8/1/2012,638,205.70,117.11,131236.60,74716.18,56520.42
+Sub-Saharan Africa,Sudan,Beverages,Online,H,1/13/2011,484520947,1/17/2011,9370,47.45,31.79,444606.50,297872.30,146734.20
+Central America and the Caribbean,Cuba,Office Supplies,Offline,L,2/6/2012,549539840,3/22/2012,9905,651.21,524.96,6450235.05,5199728.80,1250506.25
+Central America and the Caribbean,Barbados,Vegetables,Offline,M,1/21/2010,612320268,2/10/2010,8029,154.06,90.93,1236947.74,730076.97,506870.77
+Central America and the Caribbean,Grenada,Vegetables,Online,H,9/12/2011,501036059,10/17/2011,6559,154.06,90.93,1010479.54,596409.87,414069.67
+Europe,Finland,Baby Food,Offline,L,4/21/2017,564173543,4/26/2017,343,255.28,159.42,87561.04,54681.06,32879.98
+Sub-Saharan Africa,Niger,Snacks,Offline,M,11/13/2016,320531547,12/21/2016,1262,152.58,97.44,192555.96,122969.28,69586.68
+Asia,Cambodia,Fruits,Online,M,8/4/2016,709221398,9/23/2016,3227,9.33,6.92,30107.91,22330.84,7777.07
+Middle East and North Africa,Morocco,Clothes,Offline,M,5/20/2012,939666926,7/7/2012,7180,109.28,35.84,784630.40,257331.20,527299.20
+Central America and the Caribbean,Saint Kitts and Nevis ,Vegetables,Online,H,5/10/2016,741604459,5/12/2016,6094,154.06,90.93,938841.64,554127.42,384714.22
+Sub-Saharan Africa,Zambia,Meat,Offline,L,3/11/2015,815082824,4/2/2015,9975,421.89,364.69,4208352.75,3637782.75,570570.00
+Europe,Ukraine,Cereal,Offline,C,10/10/2011,580463349,11/8/2011,859,205.70,117.11,176696.30,100597.49,76098.81
+Europe,France,Office Supplies,Offline,M,11/4/2013,428419864,12/5/2013,7813,651.21,524.96,5087903.73,4101512.48,986391.25
+Middle East and North Africa,Jordan,Cosmetics,Online,L,1/21/2015,369938695,1/24/2015,1936,437.20,263.33,846419.20,509806.88,336612.32
+Middle East and North Africa,Libya,Meat,Offline,L,12/5/2013,486318671,12/11/2013,1357,421.89,364.69,572504.73,494884.33,77620.40
+Europe,Portugal,Baby Food,Offline,C,1/11/2010,479171121,1/27/2010,6238,255.28,159.42,1592436.64,994461.96,597974.68
+Europe,Lithuania,Personal Care,Online,H,5/13/2015,120419871,6/26/2015,3771,81.73,56.67,308203.83,213702.57,94501.26
+Europe,Italy,Clothes,Offline,M,9/11/2012,602301251,9/27/2012,3180,109.28,35.84,347510.40,113971.20,233539.20
+Asia,Turkmenistan,Cosmetics,Online,M,5/16/2012,487364089,7/4/2012,719,437.20,263.33,314346.80,189334.27,125012.53
+Middle East and North Africa,Yemen,Fruits,Online,C,8/28/2010,658469712,9/16/2010,4675,9.33,6.92,43617.75,32351.00,11266.75
+Sub-Saharan Africa,Malawi,Meat,Online,C,3/26/2016,268791949,5/8/2016,366,421.89,364.69,154411.74,133476.54,20935.20
+Central America and the Caribbean,Saint Lucia,Fruits,Online,M,2/18/2016,791817128,4/8/2016,5139,9.33,6.92,47946.87,35561.88,12384.99
+Asia,Nepal,Household,Offline,H,5/21/2017,171344077,5/27/2017,3375,668.27,502.54,2255411.25,1696072.50,559338.75
+Europe,Denmark,Baby Food,Online,M,12/9/2012,471484124,1/24/2013,1485,255.28,159.42,379090.80,236738.70,142352.10
+Australia and Oceania,Fiji,Office Supplies,Offline,H,9/29/2015,226661098,11/4/2015,2911,651.21,524.96,1895672.31,1528158.56,367513.75
+Europe,Hungary,Snacks,Offline,M,2/1/2017,291611325,2/10/2017,3126,152.58,97.44,476965.08,304597.44,172367.64
+Europe,Slovenia,Vegetables,Offline,M,2/10/2013,691383635,3/19/2013,4637,154.06,90.93,714376.22,421642.41,292733.81
+Asia,Kyrgyzstan,Personal Care,Offline,M,3/4/2016,171339356,3/7/2016,1978,81.73,56.67,161661.94,112093.26,49568.68
+Middle East and North Africa,Libya,Personal Care,Offline,M,3/9/2013,247152316,4/9/2013,6717,81.73,56.67,548980.41,380652.39,168328.02
+Australia and Oceania,Palau,Snacks,Online,L,11/6/2014,254808843,11/10/2014,2454,152.58,97.44,374431.32,239117.76,135313.56
+Sub-Saharan Africa,Ethiopia,Cosmetics,Offline,L,12/27/2013,500607764,2/14/2014,9817,437.20,263.33,4291992.40,2585110.61,1706881.79
+Sub-Saharan Africa,South Africa,Cereal,Online,M,1/27/2012,911160409,1/27/2012,1468,205.70,117.11,301967.60,171917.48,130050.12
+Asia,Indonesia,Cereal,Online,M,6/4/2015,583390605,7/10/2015,7099,205.70,117.11,1460264.30,831363.89,628900.41
+Sub-Saharan Africa,Niger,Office Supplies,Offline,M,4/12/2016,934534680,5/25/2016,8434,651.21,524.96,5492305.14,4427512.64,1064792.50
+Middle East and North Africa,Tunisia ,Personal Care,Offline,C,9/24/2011,752141463,11/12/2011,4228,81.73,56.67,345554.44,239600.76,105953.68
+Middle East and North Africa,Azerbaijan,Clothes,Online,H,1/27/2015,244072282,3/13/2015,5267,109.28,35.84,575577.76,188769.28,386808.48
+Sub-Saharan Africa,Mauritius ,Cosmetics,Online,M,3/4/2014,588500964,3/12/2014,9368,437.20,263.33,4095689.60,2466875.44,1628814.16
+Europe,Kosovo,Snacks,Online,H,2/5/2013,783913838,3/9/2013,6380,152.58,97.44,973460.40,621667.20,351793.20
+Europe,Macedonia,Clothes,Online,C,3/14/2013,799109733,4/29/2013,3183,109.28,35.84,347838.24,114078.72,233759.52
+Europe,Denmark,Beverages,Online,L,11/21/2016,223199975,1/4/2017,8687,47.45,31.79,412198.15,276159.73,136038.42
+Australia and Oceania,Papua New Guinea,Cosmetics,Offline,M,4/17/2016,515608394,4/23/2016,8836,437.20,263.33,3863099.20,2326783.88,1536315.32
+Asia,Indonesia,Cosmetics,Offline,M,3/1/2012,956071317,3/31/2012,1603,437.20,263.33,700831.60,422117.99,278713.61
+Central America and the Caribbean,Saint Lucia,Snacks,Offline,C,2/12/2010,894637572,4/1/2010,1993,152.58,97.44,304091.94,194197.92,109894.02
+Sub-Saharan Africa,Malawi,Personal Care,Online,C,10/26/2016,201668488,10/31/2016,7042,81.73,56.67,575542.66,399070.14,176472.52
+Sub-Saharan Africa,Sudan,Cosmetics,Online,M,7/5/2013,617837893,8/12/2013,817,437.20,263.33,357192.40,215140.61,142051.79
+Middle East and North Africa,Iraq,Snacks,Online,C,10/10/2012,804132115,11/24/2012,9417,152.58,97.44,1436845.86,917592.48,519253.38
+Europe,Georgia,Cereal,Offline,H,11/30/2016,391849982,12/11/2016,5972,205.70,117.11,1228440.40,699380.92,529059.48
+Australia and Oceania,Papua New Guinea,Cosmetics,Online,H,2/22/2014,432602822,3/31/2014,5643,437.20,263.33,2467119.60,1485971.19,981148.41
+Australia and Oceania,Solomon Islands,Meat,Online,H,9/4/2012,248314464,9/14/2012,623,421.89,364.69,262837.47,227201.87,35635.60
+Middle East and North Africa,Pakistan,Beverages,Online,L,3/19/2014,581221234,4/21/2014,5134,47.45,31.79,243608.30,163209.86,80398.44
+Australia and Oceania,Kiribati,Clothes,Online,H,3/2/2010,443871963,4/16/2010,432,109.28,35.84,47208.96,15482.88,31726.08
+Middle East and North Africa,Somalia,Snacks,Offline,M,9/25/2015,269127976,11/11/2015,9804,152.58,97.44,1495894.32,955301.76,540592.56
+Central America and the Caribbean,Trinidad and Tobago,Fruits,Online,H,2/1/2013,560163104,3/5/2013,3565,9.33,6.92,33261.45,24669.80,8591.65
+Central America and the Caribbean,Costa Rica,Household,Offline,H,10/10/2015,540463674,10/14/2015,4066,668.27,502.54,2717185.82,2043327.64,673858.18
+Sub-Saharan Africa,Mali,Baby Food,Online,H,11/19/2011,403828513,11/25/2011,686,255.28,159.42,175122.08,109362.12,65759.96
+Asia,India,Snacks,Online,M,4/19/2013,864368951,6/2/2013,4836,152.58,97.44,737876.88,471219.84,266657.04
+Europe,Croatia,Clothes,Online,H,1/13/2014,906508815,1/23/2014,4958,109.28,35.84,541810.24,177694.72,364115.52
+Central America and the Caribbean,Saint Lucia,Vegetables,Online,C,9/28/2016,934984433,10/13/2016,1526,154.06,90.93,235095.56,138759.18,96336.38
+Europe,Greece,Cereal,Offline,M,10/10/2013,524844634,10/13/2013,2045,205.70,117.11,420656.50,239489.95,181166.55
+Sub-Saharan Africa,Djibouti,Fruits,Offline,M,9/15/2013,671450746,10/18/2013,6052,9.33,6.92,56465.16,41879.84,14585.32
+Europe,Iceland,Fruits,Online,H,10/21/2014,640476596,10/24/2014,112,9.33,6.92,1044.96,775.04,269.92
+Sub-Saharan Africa,Niger,Cosmetics,Online,H,5/30/2016,217908513,6/23/2016,2826,437.20,263.33,1235527.20,744170.58,491356.62
+Asia,China,Fruits,Online,L,2/20/2015,160045325,4/5/2015,9823,9.33,6.92,91648.59,67975.16,23673.43
+Sub-Saharan Africa,The Gambia,Office Supplies,Offline,M,3/31/2016,843498361,4/25/2016,8764,651.21,524.96,5707204.44,4600749.44,1106455.00
+Middle East and North Africa,Saudi Arabia,Snacks,Online,M,9/9/2014,915191447,9/27/2014,4342,152.58,97.44,662502.36,423084.48,239417.88
+Central America and the Caribbean,Antigua and Barbuda ,Fruits,Online,C,1/26/2014,442360913,3/5/2014,3279,9.33,6.92,30593.07,22690.68,7902.39
+Middle East and North Africa,Israel,Personal Care,Online,C,4/6/2015,462555587,5/12/2015,9332,81.73,56.67,762704.36,528844.44,233859.92
+Europe,Ukraine,Meat,Online,M,8/20/2012,733636796,9/15/2012,8286,421.89,364.69,3495780.54,3021821.34,473959.20
+Europe,Bosnia and Herzegovina,Snacks,Online,L,12/24/2012,183778369,1/7/2013,2958,152.58,97.44,451331.64,288227.52,163104.12
+Middle East and North Africa,Lebanon,Beverages,Online,H,8/1/2016,961466634,8/17/2016,8198,47.45,31.79,388995.10,260614.42,128380.68
+Middle East and North Africa,United Arab Emirates,Meat,Offline,M,6/8/2013,785500419,7/15/2013,5884,421.89,364.69,2482400.76,2145835.96,336564.80
+Europe,Luxembourg,Snacks,Offline,M,4/22/2017,594991052,6/6/2017,9929,152.58,97.44,1514966.82,967481.76,547485.06
+Australia and Oceania,Tonga,Vegetables,Offline,M,7/15/2016,499362361,9/1/2016,1274,154.06,90.93,196272.44,115844.82,80427.62
+Middle East and North Africa,Kuwait,Vegetables,Online,C,9/1/2015,228350675,9/15/2015,2894,154.06,90.93,445849.64,263151.42,182698.22
+Central America and the Caribbean,Saint Vincent and the Grenadines,Baby Food,Offline,M,7/8/2016,482004821,7/12/2016,4793,255.28,159.42,1223557.04,764100.06,459456.98
+Sub-Saharan Africa,Sao Tome and Principe,Office Supplies,Offline,M,5/30/2014,680686128,7/8/2014,9006,651.21,524.96,5864797.26,4727789.76,1137007.50
+Sub-Saharan Africa,Burundi,Clothes,Offline,H,1/29/2017,315068423,2/25/2017,4603,109.28,35.84,503015.84,164971.52,338044.32
+Australia and Oceania,Fiji,Clothes,Online,M,8/11/2010,296138036,9/23/2010,2680,109.28,35.84,292870.40,96051.20,196819.20
+Sub-Saharan Africa,Ghana,Meat,Offline,M,3/26/2016,705193793,5/12/2016,1369,421.89,364.69,577567.41,499260.61,78306.80
+Middle East and North Africa,Somalia,Household,Offline,L,10/21/2010,343847024,11/5/2010,830,668.27,502.54,554664.10,417108.20,137555.90
+Sub-Saharan Africa,Mauritania,Cosmetics,Offline,H,11/23/2013,784021556,12/2/2013,8256,437.20,263.33,3609523.20,2174052.48,1435470.72
+Sub-Saharan Africa,Mozambique,Office Supplies,Offline,M,11/7/2015,517953717,11/14/2015,2870,651.21,524.96,1868972.70,1506635.20,362337.50
+Asia,Bhutan,Cosmetics,Online,L,11/13/2011,808192336,12/5/2011,927,437.20,263.33,405284.40,244106.91,161177.49
+Australia and Oceania,Tonga,Clothes,Offline,H,5/9/2013,737598741,6/10/2013,713,109.28,35.84,77916.64,25553.92,52362.72
+Sub-Saharan Africa,Guinea,Clothes,Online,M,11/6/2013,359346759,11/9/2013,7546,109.28,35.84,824626.88,270448.64,554178.24
+Europe,Albania,Office Supplies,Online,H,7/13/2015,246922719,7/29/2015,8775,651.21,524.96,5714367.75,4606524.00,1107843.75
+Sub-Saharan Africa,Lesotho,Cereal,Online,H,4/14/2010,144125449,5/22/2010,8778,205.70,117.11,1805634.60,1027991.58,777643.02
+Europe,Slovakia,Snacks,Offline,L,10/10/2013,315066277,11/28/2013,3968,152.58,97.44,605437.44,386641.92,218795.52
+Australia and Oceania,Papua New Guinea,Beverages,Online,C,3/25/2016,194169032,4/11/2016,7786,47.45,31.79,369445.70,247516.94,121928.76
+Sub-Saharan Africa,Cameroon,Cosmetics,Offline,L,7/7/2016,636170041,8/4/2016,5707,437.20,263.33,2495100.40,1502824.31,992276.09
+Europe,Sweden,Household,Offline,C,10/9/2010,766118133,10/10/2010,235,668.27,502.54,157043.45,118096.90,38946.55
+Middle East and North Africa,Bahrain,Fruits,Offline,M,5/11/2011,229374635,5/31/2011,5906,9.33,6.92,55102.98,40869.52,14233.46
+Sub-Saharan Africa,Mauritania,Household,Online,C,10/3/2012,541613376,10/11/2012,4289,668.27,502.54,2866210.03,2155394.06,710815.97
+Europe,Russia,Clothes,Offline,L,7/9/2010,138820683,7/9/2010,8980,109.28,35.84,981334.40,321843.20,659491.20
+Central America and the Caribbean,Belize,Baby Food,Online,H,8/16/2012,227295386,9/6/2012,611,255.28,159.42,155976.08,97405.62,58570.46
+Europe,Luxembourg,Cereal,Online,M,12/18/2012,733648812,12/24/2012,1842,205.70,117.11,378899.40,215716.62,163182.78
+Sub-Saharan Africa,Chad,Office Supplies,Online,H,4/16/2010,754804790,5/20/2010,2366,651.21,524.96,1540762.86,1242055.36,298707.50
+Asia,Indonesia,Vegetables,Offline,L,12/24/2011,807999646,2/3/2012,3906,154.06,90.93,601758.36,355172.58,246585.78
+Europe,Kosovo,Office Supplies,Online,C,2/16/2015,580782210,2/20/2015,5217,651.21,524.96,3397362.57,2738716.32,658646.25
+Central America and the Caribbean,Saint Kitts and Nevis ,Personal Care,Offline,C,4/25/2010,281013810,5/10/2010,7086,81.73,56.67,579138.78,401563.62,177575.16
+Asia,South Korea,Fruits,Online,C,9/11/2015,186868274,9/12/2015,7330,9.33,6.92,68388.90,50723.60,17665.30
+Sub-Saharan Africa,Kenya,Vegetables,Offline,M,8/12/2012,196831929,8/18/2012,5797,154.06,90.93,893085.82,527121.21,365964.61
+Europe,Hungary,Baby Food,Offline,C,1/1/2010,279703605,1/10/2010,9367,255.28,159.42,2391207.76,1493287.14,897920.62
+Middle East and North Africa,Turkey,Baby Food,Offline,M,4/9/2010,924594628,4/12/2010,6952,255.28,159.42,1774706.56,1108287.84,666418.72
+Middle East and North Africa,Yemen,Office Supplies,Online,C,2/10/2013,890928828,3/2/2013,4494,651.21,524.96,2926537.74,2359170.24,567367.50
+Asia,Tajikistan,Clothes,Online,C,9/18/2011,358442533,9/24/2011,9966,109.28,35.84,1089084.48,357181.44,731903.04
+Australia and Oceania,Australia,Baby Food,Online,M,9/6/2011,477184569,10/20/2011,8373,255.28,159.42,2137459.44,1334823.66,802635.78
+Sub-Saharan Africa,Benin,Personal Care,Online,M,2/14/2012,217516267,3/14/2012,6752,81.73,56.67,551840.96,382635.84,169205.12
+Sub-Saharan Africa,Gabon,Cereal,Online,L,12/24/2016,420111453,2/10/2017,9170,205.70,117.11,1886269.00,1073898.70,812370.30
+Europe,Poland,Baby Food,Offline,H,2/20/2016,645956456,4/8/2016,1725,255.28,159.42,440358.00,274999.50,165358.50
+Europe,Montenegro,Clothes,Offline,M,11/19/2011,526350104,12/4/2011,7547,109.28,35.84,824736.16,270484.48,554251.68
+Europe,Andorra,Meat,Online,L,2/26/2015,212903726,2/26/2015,1798,421.89,364.69,758558.22,655712.62,102845.60
+Sub-Saharan Africa,Zambia,Personal Care,Offline,L,6/12/2011,827541148,7/23/2011,6670,81.73,56.67,545139.10,377988.90,167150.20
+Middle East and North Africa,Jordan,Cosmetics,Online,M,1/12/2010,412498700,2/19/2010,6387,437.20,263.33,2792396.40,1681888.71,1110507.69
+Europe,Finland,Vegetables,Online,C,6/21/2017,680325210,7/23/2017,2203,154.06,90.93,339394.18,200318.79,139075.39
+Europe,Slovenia,Beverages,Online,M,2/3/2011,263882005,2/27/2011,7404,47.45,31.79,351319.80,235373.16,115946.64
+Middle East and North Africa,Algeria,Cereal,Offline,M,12/10/2010,566342914,12/17/2010,2308,205.70,117.11,474755.60,270289.88,204465.72
+Sub-Saharan Africa,Equatorial Guinea,Meat,Online,M,5/29/2015,811194264,7/4/2015,9264,421.89,364.69,3908388.96,3378488.16,529900.80
+Asia,India,Baby Food,Online,C,8/3/2012,292234885,8/4/2012,7651,255.28,159.42,1953147.28,1219722.42,733424.86
+Sub-Saharan Africa,Democratic Republic of the Congo,Fruits,Offline,M,5/15/2014,623576104,5/25/2014,8881,9.33,6.92,82859.73,61456.52,21403.21
+Sub-Saharan Africa,Sudan,Snacks,Online,M,10/4/2014,789641749,10/10/2014,1396,152.58,97.44,213001.68,136026.24,76975.44
+Europe,Slovenia,Fruits,Offline,L,5/28/2016,295168149,7/16/2016,5669,9.33,6.92,52891.77,39229.48,13662.29
+Sub-Saharan Africa,Uganda,Cereal,Offline,M,9/3/2011,515204131,10/4/2011,9206,205.70,117.11,1893674.20,1078114.66,815559.54
+Europe,Greece,Meat,Offline,C,9/12/2016,645111024,9/26/2016,1543,421.89,364.69,650976.27,562716.67,88259.60
+Europe,Switzerland,Baby Food,Offline,M,8/11/2014,850562655,9/25/2014,9246,255.28,159.42,2360318.88,1473997.32,886321.56
+Sub-Saharan Africa,South Sudan,Personal Care,Offline,L,4/26/2012,917545354,5/30/2012,915,81.73,56.67,74782.95,51853.05,22929.90
+Europe,Ireland,Personal Care,Offline,L,1/5/2014,702357947,2/4/2014,2179,81.73,56.67,178089.67,123483.93,54605.74
+Sub-Saharan Africa,Niger,Baby Food,Online,H,5/17/2017,581611764,7/2/2017,701,255.28,159.42,178951.28,111753.42,67197.86
+Europe,Montenegro,Clothes,Online,L,5/13/2017,102230632,6/13/2017,1171,109.28,35.84,127966.88,41968.64,85998.24
+Europe,Armenia,Clothes,Online,L,1/3/2010,231450879,2/22/2010,313,109.28,35.84,34204.64,11217.92,22986.72
+Sub-Saharan Africa,Seychelles ,Beverages,Online,L,4/29/2011,206821334,5/3/2011,1884,47.45,31.79,89395.80,59892.36,29503.44
+North America,Canada,Beverages,Offline,L,9/8/2015,686203324,9/18/2015,1667,47.45,31.79,79099.15,52993.93,26105.22
+Asia,Malaysia,Office Supplies,Online,L,9/27/2014,597770678,10/19/2014,2482,651.21,524.96,1616303.22,1302950.72,313352.50
+Asia,Thailand,Baby Food,Offline,C,5/3/2016,290009725,5/7/2016,9177,255.28,159.42,2342704.56,1462997.34,879707.22
+Sub-Saharan Africa,Ethiopia,Fruits,Online,H,6/22/2010,181719291,7/5/2010,3631,9.33,6.92,33877.23,25126.52,8750.71
+Sub-Saharan Africa,South Africa,Meat,Online,L,12/3/2010,312010705,12/21/2010,9756,421.89,364.69,4115958.84,3557915.64,558043.20
+Sub-Saharan Africa,Mauritius ,Fruits,Online,M,8/4/2013,790307796,8/30/2013,8494,9.33,6.92,79249.02,58778.48,20470.54
+Sub-Saharan Africa,Mauritania,Meat,Offline,C,6/14/2015,446346890,6/18/2015,2819,421.89,364.69,1189307.91,1028061.11,161246.80
+Europe,Poland,Clothes,Online,M,10/1/2010,880176818,10/15/2010,2735,109.28,35.84,298880.80,98022.40,200858.40
+Middle East and North Africa,Tunisia ,Baby Food,Offline,M,7/9/2017,612158906,8/4/2017,279,255.28,159.42,71223.12,44478.18,26744.94
+Asia,Mongolia,Fruits,Online,C,3/20/2013,932966983,3/20/2013,4518,9.33,6.92,42152.94,31264.56,10888.38
+Sub-Saharan Africa,Equatorial Guinea,Meat,Online,H,3/18/2014,953587377,3/27/2014,6550,421.89,364.69,2763379.50,2388719.50,374660.00
+Europe,Italy,Clothes,Online,H,6/10/2011,755318915,6/25/2011,4507,109.28,35.84,492524.96,161530.88,330994.08
+Asia,Maldives,Personal Care,Online,C,1/20/2012,939772927,3/3/2012,8548,81.73,56.67,698628.04,484415.16,214212.88
+Europe,Andorra,Beverages,Online,H,11/25/2012,378873240,11/28/2012,5866,47.45,31.79,278341.70,186480.14,91861.56
+Europe,Cyprus,Fruits,Online,L,11/27/2011,264856183,12/23/2011,5685,9.33,6.92,53041.05,39340.20,13700.85
+Australia and Oceania,Marshall Islands,Vegetables,Offline,C,11/1/2011,960270583,11/24/2011,4260,154.06,90.93,656295.60,387361.80,268933.80
+Sub-Saharan Africa,Ghana,Office Supplies,Offline,L,7/10/2016,647977769,8/3/2016,9876,651.21,524.96,6431349.96,5184504.96,1246845.00
+Sub-Saharan Africa,Malawi,Fruits,Offline,H,12/9/2011,281151568,1/22/2012,7852,9.33,6.92,73259.16,54335.84,18923.32
+Australia and Oceania,Palau,Snacks,Online,H,5/27/2015,433278310,6/8/2015,5535,152.58,97.44,844530.30,539330.40,305199.90
+North America,Greenland,Clothes,Offline,M,3/25/2011,848156821,5/11/2011,7306,109.28,35.84,798399.68,261847.04,536552.64
+Sub-Saharan Africa,Republic of the Congo,Snacks,Offline,M,1/30/2015,889898431,2/28/2015,9576,152.58,97.44,1461106.08,933085.44,528020.64
+Asia,Laos,Personal Care,Online,C,3/10/2017,892926967,4/7/2017,5787,81.73,56.67,472971.51,327949.29,145022.22
+Asia,Laos,Household,Online,C,6/1/2016,811978757,6/26/2016,1413,668.27,502.54,944265.51,710089.02,234176.49
+Central America and the Caribbean,Belize,Fruits,Offline,C,6/24/2016,672102630,8/7/2016,8959,9.33,6.92,83587.47,61996.28,21591.19
+Europe,Czech Republic,Cereal,Online,C,8/2/2014,118659913,8/17/2014,2960,205.70,117.11,608872.00,346645.60,262226.40
+Europe,San Marino,Baby Food,Online,L,10/18/2012,667324435,10/31/2012,4985,255.28,159.42,1272570.80,794708.70,477862.10
+Asia,Kazakhstan,Clothes,Online,C,3/28/2014,754082524,4/21/2014,8631,109.28,35.84,943195.68,309335.04,633860.64
+Europe,Poland,Baby Food,Online,C,9/26/2011,685233008,10/17/2011,4529,255.28,159.42,1156163.12,722013.18,434149.94
+Asia,Cambodia,Cosmetics,Offline,C,5/1/2014,387387216,6/11/2014,5341,437.20,263.33,2335085.20,1406445.53,928639.67
+Europe,Monaco,Beverages,Online,H,3/14/2013,757468974,3/23/2013,757,47.45,31.79,35919.65,24065.03,11854.62
+Europe,Belgium,Meat,Online,H,9/23/2015,512714612,10/9/2015,2502,421.89,364.69,1055568.78,912454.38,143114.40
+Central America and the Caribbean,Dominican Republic,Vegetables,Online,H,6/6/2011,240672957,7/14/2011,9331,154.06,90.93,1437533.86,848467.83,589066.03
+Middle East and North Africa,Jordan,Personal Care,Online,L,8/8/2013,149205338,8/21/2013,2030,81.73,56.67,165911.90,115040.10,50871.80
+Europe,Georgia,Meat,Offline,M,2/11/2010,516485583,3/6/2010,8416,421.89,364.69,3550626.24,3069231.04,481395.20
+Middle East and North Africa,Somalia,Baby Food,Offline,L,8/9/2012,341000020,8/18/2012,8339,255.28,159.42,2128779.92,1329403.38,799376.54
+Europe,Kosovo,Vegetables,Online,H,11/7/2014,491547477,11/7/2014,8676,154.06,90.93,1336624.56,788908.68,547715.88
+Middle East and North Africa,Syria,Vegetables,Offline,M,9/11/2011,557239282,10/22/2011,8341,154.06,90.93,1285014.46,758447.13,526567.33
+Central America and the Caribbean,Panama,Snacks,Offline,C,5/27/2010,197499263,6/8/2010,3276,152.58,97.44,499852.08,319213.44,180638.64
+Middle East and North Africa,Yemen,Personal Care,Offline,L,9/25/2011,492063748,10/5/2011,1453,81.73,56.67,118753.69,82341.51,36412.18
+Middle East and North Africa,Turkey,Vegetables,Online,H,9/20/2013,790981566,10/8/2013,7878,154.06,90.93,1213684.68,716346.54,497338.14
+Central America and the Caribbean,El Salvador,Household,Offline,C,6/20/2015,964614045,7/21/2015,9587,668.27,502.54,6406704.49,4817850.98,1588853.51
+Sub-Saharan Africa,Burundi,Fruits,Offline,H,5/10/2013,953635013,6/14/2013,647,9.33,6.92,6036.51,4477.24,1559.27
+Sub-Saharan Africa,Liberia,Vegetables,Offline,L,5/26/2012,319030797,6/23/2012,7157,154.06,90.93,1102607.42,650786.01,451821.41
+Central America and the Caribbean,Dominican Republic,Meat,Online,C,11/24/2014,492100226,1/11/2015,2247,421.89,364.69,947986.83,819458.43,128528.40
+Central America and the Caribbean,Saint Vincent and the Grenadines,Beverages,Offline,M,8/21/2016,724454629,10/2/2016,1079,47.45,31.79,51198.55,34301.41,16897.14
+Sub-Saharan Africa,Zambia,Beverages,Offline,M,9/9/2010,338017833,10/28/2010,5843,47.45,31.79,277250.35,185748.97,91501.38
+Middle East and North Africa,Oman,Personal Care,Online,M,11/24/2013,975026166,12/15/2013,765,81.73,56.67,62523.45,43352.55,19170.90
+Sub-Saharan Africa,Mali,Cereal,Online,C,2/7/2010,748028457,3/26/2010,7098,205.70,117.11,1460058.60,831246.78,628811.82
+Sub-Saharan Africa,Malawi,Fruits,Online,L,7/2/2014,989886033,8/1/2014,8129,9.33,6.92,75843.57,56252.68,19590.89
+Sub-Saharan Africa,Democratic Republic of the Congo,Cosmetics,Offline,C,11/2/2016,403772723,11/13/2016,4176,437.20,263.33,1825747.20,1099666.08,726081.12
+Australia and Oceania,Nauru,Meat,Online,H,7/8/2015,913174855,8/23/2015,7587,421.89,364.69,3200879.43,2766903.03,433976.40
+Europe,Bulgaria,Fruits,Offline,C,10/8/2013,911891257,11/1/2013,7742,9.33,6.92,72232.86,53574.64,18658.22
+Europe,Russia,Snacks,Offline,L,11/29/2015,214033257,12/3/2015,6052,152.58,97.44,923414.16,589706.88,333707.28
+Europe,Ukraine,Cereal,Online,H,12/14/2015,504024684,1/14/2016,959,205.70,117.11,197266.30,112308.49,84957.81
+Europe,Lithuania,Vegetables,Online,L,7/17/2016,386601865,7/26/2016,2938,154.06,90.93,452628.28,267152.34,185475.94
+Europe,Sweden,Cosmetics,Offline,C,1/16/2010,336813628,2/23/2010,9492,437.20,263.33,4149902.40,2499528.36,1650374.04
+Asia,Kyrgyzstan,Beverages,Offline,C,8/4/2012,450021302,8/27/2012,159,47.45,31.79,7544.55,5054.61,2489.94
+Sub-Saharan Africa,Chad,Beverages,Online,L,11/21/2014,891898715,12/5/2014,1505,47.45,31.79,71412.25,47843.95,23568.30
+Australia and Oceania,Solomon Islands,Fruits,Offline,L,4/9/2016,548432195,5/1/2016,2129,9.33,6.92,19863.57,14732.68,5130.89
+Sub-Saharan Africa,Madagascar,Fruits,Offline,H,5/11/2013,175920569,6/24/2013,7661,9.33,6.92,71477.13,53014.12,18463.01
+Australia and Oceania,Papua New Guinea,Clothes,Offline,H,5/28/2011,150975167,7/11/2011,5762,109.28,35.84,629671.36,206510.08,423161.28
+Sub-Saharan Africa,Central African Republic,Beverages,Offline,M,12/9/2012,920519816,12/30/2012,1125,47.45,31.79,53381.25,35763.75,17617.50
+Asia,Maldives,Meat,Online,C,12/28/2013,751790845,2/6/2014,472,421.89,364.69,199132.08,172133.68,26998.40
+Central America and the Caribbean,Dominican Republic,Meat,Online,M,6/8/2015,682337081,6/10/2015,7560,421.89,364.69,3189488.40,2757056.40,432432.00
+Central America and the Caribbean,Haiti,Meat,Online,H,8/22/2011,470019853,9/14/2011,8174,421.89,364.69,3448528.86,2980976.06,467552.80
+Sub-Saharan Africa,Togo,Fruits,Offline,H,12/19/2016,843012988,12/26/2016,5132,9.33,6.92,47881.56,35513.44,12368.12
+Asia,Taiwan,Vegetables,Offline,C,7/25/2016,349802815,8/15/2016,3281,154.06,90.93,505470.86,298341.33,207129.53
+Europe,Belgium,Fruits,Online,C,7/24/2015,309188163,8/12/2015,4503,9.33,6.92,42012.99,31160.76,10852.23
+Europe,Kosovo,Office Supplies,Offline,M,8/1/2012,760280358,8/21/2012,2708,651.21,524.96,1763476.68,1421591.68,341885.00
+Sub-Saharan Africa,Republic of the Congo,Fruits,Online,H,2/13/2011,912503230,3/17/2011,8838,9.33,6.92,82458.54,61158.96,21299.58
+Europe,Slovakia,Beverages,Offline,M,9/15/2015,495593106,10/8/2015,5868,47.45,31.79,278436.60,186543.72,91892.88
+Europe,Cyprus,Clothes,Offline,L,1/9/2013,209598815,1/11/2013,3802,109.28,35.84,415482.56,136263.68,279218.88
+Sub-Saharan Africa,Comoros,Clothes,Offline,L,7/13/2013,374881684,8/25/2013,4676,109.28,35.84,510993.28,167587.84,343405.44
+North America,United States of America,Baby Food,Offline,H,5/26/2017,482115542,5/28/2017,7558,255.28,159.42,1929406.24,1204896.36,724509.88
+Central America and the Caribbean,Guatemala,Meat,Online,M,9/16/2010,542286717,9/20/2010,3545,421.89,364.69,1495600.05,1292826.05,202774.00
+Asia,Laos,Cereal,Online,L,9/9/2014,636694037,9/20/2014,769,205.70,117.11,158183.30,90057.59,68125.71
+Australia and Oceania,Solomon Islands,Personal Care,Offline,H,10/9/2013,466948831,11/26/2013,9390,81.73,56.67,767444.70,532131.30,235313.40
+Sub-Saharan Africa,Mali,Snacks,Offline,L,5/19/2012,704974925,6/14/2012,6601,152.58,97.44,1007180.58,643201.44,363979.14
+Sub-Saharan Africa,Sudan,Fruits,Online,H,1/4/2016,743008649,1/27/2016,1625,9.33,6.92,15161.25,11245.00,3916.25
+Australia and Oceania,Marshall Islands,Household,Offline,L,4/11/2012,943598830,4/13/2012,718,668.27,502.54,479817.86,360823.72,118994.14
+Central America and the Caribbean,Guatemala,Vegetables,Online,L,8/5/2012,389606797,9/18/2012,2164,154.06,90.93,333385.84,196772.52,136613.32
+Sub-Saharan Africa,Togo,Snacks,Online,M,7/2/2010,934206378,7/13/2010,1282,152.58,97.44,195607.56,124918.08,70689.48
+Sub-Saharan Africa,Republic of the Congo,Meat,Online,L,9/30/2015,450883901,11/5/2015,5421,421.89,364.69,2287065.69,1976984.49,310081.20
+Europe,Georgia,Meat,Online,H,8/23/2012,483438193,9/26/2012,8959,421.89,364.69,3779712.51,3267257.71,512454.80
+Australia and Oceania,Vanuatu,Cereal,Online,M,11/10/2016,395980584,12/18/2016,8309,205.70,117.11,1709161.30,973066.99,736094.31
+Middle East and North Africa,Qatar,Vegetables,Offline,M,1/18/2011,522934901,2/3/2011,6913,154.06,90.93,1065016.78,628599.09,436417.69
+Europe,Switzerland,Vegetables,Online,L,10/15/2016,819037473,10/15/2016,244,154.06,90.93,37590.64,22186.92,15403.72
+Sub-Saharan Africa,Chad,Baby Food,Offline,C,2/1/2015,409337127,2/14/2015,807,255.28,159.42,206010.96,128651.94,77359.02
+Central America and the Caribbean,Antigua and Barbuda ,Cereal,Online,M,9/19/2010,739195191,10/28/2010,3139,205.70,117.11,645692.30,367608.29,278084.01
+Middle East and North Africa,Lebanon,Personal Care,Offline,L,4/24/2013,624285495,6/11/2013,8806,81.73,56.67,719714.38,499036.02,220678.36
+Sub-Saharan Africa,Burkina Faso,Baby Food,Offline,L,11/8/2010,300594365,12/4/2010,1407,255.28,159.42,359178.96,224303.94,134875.02
+Europe,Liechtenstein,Fruits,Offline,H,4/26/2011,974420630,6/15/2011,1573,9.33,6.92,14676.09,10885.16,3790.93
+Sub-Saharan Africa,Cameroon,Personal Care,Online,L,3/3/2016,772375619,3/6/2016,1964,81.73,56.67,160517.72,111299.88,49217.84
+Middle East and North Africa,Qatar,Household,Online,M,8/1/2016,591383159,8/15/2016,2273,668.27,502.54,1518977.71,1142273.42,376704.29
+Central America and the Caribbean,Jamaica,Snacks,Online,H,5/16/2012,948679578,6/5/2012,4224,152.58,97.44,644497.92,411586.56,232911.36
+Sub-Saharan Africa,Senegal,Meat,Online,L,10/10/2015,631813704,11/28/2015,6570,421.89,364.69,2771817.30,2396013.30,375804.00
+Sub-Saharan Africa,Madagascar,Clothes,Online,C,5/13/2017,748646867,6/22/2017,99,109.28,35.84,10818.72,3548.16,7270.56
+Sub-Saharan Africa,Republic of the Congo,Beverages,Online,M,7/31/2012,677352893,8/23/2012,2628,47.45,31.79,124698.60,83544.12,41154.48
+Sub-Saharan Africa,Gabon,Beverages,Offline,M,1/25/2013,316418111,3/6/2013,4005,47.45,31.79,190037.25,127318.95,62718.30
+Europe,Russia,Beverages,Offline,L,8/7/2012,534641349,8/27/2012,1111,47.45,31.79,52716.95,35318.69,17398.26
+Europe,Belgium,Snacks,Online,L,8/5/2013,921133935,8/11/2013,2856,152.58,97.44,435768.48,278288.64,157479.84
+Asia,Kyrgyzstan,Office Supplies,Offline,H,9/28/2015,235319697,10/31/2015,5183,651.21,524.96,3375221.43,2720867.68,654353.75
+Europe,San Marino,Meat,Offline,L,3/23/2012,456934964,5/5/2012,6065,421.89,364.69,2558762.85,2211844.85,346918.00
+Central America and the Caribbean,Saint Vincent and the Grenadines,Beverages,Offline,H,3/25/2016,936028563,4/14/2016,507,47.45,31.79,24057.15,16117.53,7939.62
+Central America and the Caribbean,Dominican Republic,Baby Food,Offline,C,9/19/2011,642961823,9/30/2011,5546,255.28,159.42,1415782.88,884143.32,531639.56
+Sub-Saharan Africa,Burkina Faso,Personal Care,Offline,H,3/15/2010,418408572,3/15/2010,5249,81.73,56.67,429000.77,297460.83,131539.94
+Middle East and North Africa,Jordan,Beverages,Offline,L,9/16/2016,723355138,10/24/2016,5715,47.45,31.79,271176.75,181679.85,89496.90
+Sub-Saharan Africa,Mali,Meat,Online,C,10/24/2010,289100348,10/31/2010,72,421.89,364.69,30376.08,26257.68,4118.40
+Asia,Mongolia,Personal Care,Offline,M,1/9/2011,167255532,1/20/2011,3484,81.73,56.67,284747.32,197438.28,87309.04
+Australia and Oceania,Papua New Guinea,Meat,Online,L,5/28/2010,579744517,7/2/2010,8141,421.89,364.69,3434606.49,2968941.29,465665.20
+Europe,Bulgaria,Fruits,Online,L,8/31/2010,468803632,10/2/2010,8267,9.33,6.92,77131.11,57207.64,19923.47
+Europe,Finland,Baby Food,Online,M,10/13/2010,646981704,11/23/2010,5118,255.28,159.42,1306523.04,815911.56,490611.48
+Middle East and North Africa,Iraq,Household,Online,H,10/22/2010,647140061,11/5/2010,1980,668.27,502.54,1323174.60,995029.20,328145.40
+Europe,Finland,Vegetables,Online,L,8/22/2015,972452533,10/4/2015,9169,154.06,90.93,1412576.14,833737.17,578838.97
+Middle East and North Africa,Somalia,Household,Offline,M,2/5/2016,846405446,3/9/2016,9035,668.27,502.54,6037819.45,4540448.90,1497370.55
+Central America and the Caribbean,Trinidad and Tobago,Personal Care,Online,H,6/4/2015,462797629,6/30/2015,958,81.73,56.67,78297.34,54289.86,24007.48
+Europe,Austria,Personal Care,Offline,M,5/10/2010,535740411,6/7/2010,6348,81.73,56.67,518822.04,359741.16,159080.88
+Middle East and North Africa,Libya,Meat,Online,H,1/18/2010,949657618,2/20/2010,3648,421.89,364.69,1539054.72,1330389.12,208665.60
+Europe,Ireland,Personal Care,Offline,H,2/26/2017,309285581,4/17/2017,3331,81.73,56.67,272242.63,188767.77,83474.86
+Middle East and North Africa,Egypt,Meat,Online,C,6/17/2016,889673125,7/9/2016,2903,421.89,364.69,1224746.67,1058695.07,166051.60
+Sub-Saharan Africa,Mauritius ,Meat,Offline,H,7/13/2016,986181581,7/23/2016,1900,421.89,364.69,801591.00,692911.00,108680.00
+Australia and Oceania,Palau,Baby Food,Offline,M,8/22/2015,764484775,9/3/2015,6888,255.28,159.42,1758368.64,1098084.96,660283.68
+Middle East and North Africa,Afghanistan,Cereal,Online,C,2/15/2013,910569036,3/25/2013,6467,205.70,117.11,1330261.90,757350.37,572911.53
+Europe,Andorra,Baby Food,Offline,C,3/7/2013,380733191,4/13/2013,6267,255.28,159.42,1599839.76,999085.14,600754.62
+Middle East and North Africa,Egypt,Household,Online,M,6/24/2013,451588571,7/14/2013,3948,668.27,502.54,2638329.96,1984027.92,654302.04
+Asia,China,Fruits,Online,H,7/24/2016,670059001,9/1/2016,4203,9.33,6.92,39213.99,29084.76,10129.23
+Australia and Oceania,Kiribati,Office Supplies,Online,L,11/16/2010,203380811,11/23/2010,3756,651.21,524.96,2445944.76,1971749.76,474195.00
+Europe,Kosovo,Fruits,Online,L,6/11/2012,989102828,7/8/2012,6362,9.33,6.92,59357.46,44025.04,15332.42
+Sub-Saharan Africa,Gabon,Fruits,Offline,H,8/21/2015,985086381,9/4/2015,7806,9.33,6.92,72829.98,54017.52,18812.46
+Sub-Saharan Africa,Liberia,Vegetables,Online,L,2/6/2012,919505298,2/27/2012,906,154.06,90.93,139578.36,82382.58,57195.78
+Middle East and North Africa,Bahrain,Snacks,Online,M,4/6/2017,240845906,4/21/2017,511,152.58,97.44,77968.38,49791.84,28176.54
+Sub-Saharan Africa,Zambia,Office Supplies,Offline,H,7/18/2013,267907035,7/20/2013,8500,651.21,524.96,5535285.00,4462160.00,1073125.00
+Australia and Oceania,Papua New Guinea,Meat,Online,M,9/20/2014,139800012,9/20/2014,8785,421.89,364.69,3706303.65,3203801.65,502502.00
+Sub-Saharan Africa,Botswana,Meat,Online,C,9/10/2016,865948665,9/26/2016,2308,421.89,364.69,973722.12,841704.52,132017.60
+Middle East and North Africa,Qatar,Meat,Offline,H,6/8/2016,376089322,6/27/2016,2043,421.89,364.69,861921.27,745061.67,116859.60
+Middle East and North Africa,Tunisia ,Snacks,Online,H,10/9/2015,270270812,10/28/2015,7994,152.58,97.44,1219724.52,778935.36,440789.16
+Middle East and North Africa,Saudi Arabia,Personal Care,Offline,M,1/6/2010,868854463,2/12/2010,2198,81.73,56.67,179642.54,124560.66,55081.88
+Asia,Malaysia,Beverages,Online,L,6/26/2014,762514102,7/28/2014,3722,47.45,31.79,176608.90,118322.38,58286.52
+North America,Mexico,Personal Care,Offline,H,4/3/2015,862236058,5/1/2015,3665,81.73,56.67,299540.45,207695.55,91844.90
+Sub-Saharan Africa,Mauritania,Household,Online,H,11/4/2010,349319159,12/10/2010,157,668.27,502.54,104918.39,78898.78,26019.61
+Australia and Oceania,Federated States of Micronesia,Snacks,Online,C,12/19/2015,725374734,1/19/2016,3358,152.58,97.44,512363.64,327203.52,185160.12
+Europe,Latvia,Beverages,Online,M,5/2/2012,862326610,5/28/2012,461,47.45,31.79,21874.45,14655.19,7219.26
+Europe,Sweden,Meat,Online,H,1/4/2013,152411115,2/21/2013,691,421.89,364.69,291525.99,252000.79,39525.20
+Asia,Bangladesh,Cosmetics,Online,L,3/11/2013,758177077,3/21/2013,300,437.20,263.33,131160.00,78999.00,52161.00
+Europe,Ukraine,Office Supplies,Offline,C,9/16/2016,862485826,10/27/2016,7577,651.21,524.96,4934218.17,3977621.92,956596.25
+Asia,South Korea,Household,Offline,C,2/9/2017,518511188,2/16/2017,7838,668.27,502.54,5237900.26,3938908.52,1298991.74
+Europe,Vatican City,Fruits,Offline,M,7/25/2016,299739491,9/1/2016,8431,9.33,6.92,78661.23,58342.52,20318.71
+Middle East and North Africa,Qatar,Meat,Online,H,7/15/2014,849969565,9/3/2014,3737,421.89,364.69,1576602.93,1362846.53,213756.40
+Europe,France,Meat,Offline,L,7/17/2011,633312737,8/11/2011,167,421.89,364.69,70455.63,60903.23,9552.40
+Europe,Norway,Office Supplies,Offline,C,12/14/2012,884192836,1/15/2013,1164,651.21,524.96,758008.44,611053.44,146955.00
+Asia,Cambodia,Cosmetics,Offline,C,1/24/2010,657346189,1/28/2010,2200,437.20,263.33,961840.00,579326.00,382514.00
+Sub-Saharan Africa,Togo,Beverages,Offline,M,3/2/2014,877821624,3/14/2014,5780,47.45,31.79,274261.00,183746.20,90514.80
+Sub-Saharan Africa,Rwanda,Fruits,Online,M,11/22/2014,290980470,1/1/2015,6442,9.33,6.92,60103.86,44578.64,15525.22
+Australia and Oceania,Vanuatu,Fruits,Online,H,4/20/2014,412496554,4/29/2014,5752,9.33,6.92,53666.16,39803.84,13862.32
+Europe,Iceland,Meat,Online,M,7/9/2015,578356206,7/15/2015,7309,421.89,364.69,3083594.01,2665519.21,418074.80
+Europe,Luxembourg,Personal Care,Online,L,5/17/2011,194858253,5/22/2011,1742,81.73,56.67,142373.66,98719.14,43654.52
+Europe,Macedonia,Cereal,Offline,L,11/28/2010,988614022,1/11/2011,1713,205.70,117.11,352364.10,200609.43,151754.67
+Asia,Myanmar,Personal Care,Online,C,11/13/2012,256547343,12/30/2012,6915,81.73,56.67,565162.95,391873.05,173289.90
+Asia,Brunei,Vegetables,Offline,M,1/25/2017,315894544,1/27/2017,9070,154.06,90.93,1397324.20,824735.10,572589.10
+Middle East and North Africa,Israel,Snacks,Online,L,1/7/2013,854204452,2/14/2013,6934,152.58,97.44,1057989.72,675648.96,382340.76
+Europe,Russia,Cereal,Online,L,1/10/2014,279338395,2/24/2014,1293,205.70,117.11,265970.10,151423.23,114546.87
+Asia,Uzbekistan,Meat,Online,C,7/10/2015,669470202,7/11/2015,9965,421.89,364.69,4204133.85,3634135.85,569998.00
+Europe,Estonia,Baby Food,Offline,M,1/2/2014,123086202,2/20/2014,2797,255.28,159.42,714018.16,445897.74,268120.42
+Central America and the Caribbean,Honduras,Clothes,Online,M,10/28/2010,408985221,11/14/2010,6670,109.28,35.84,728897.60,239052.80,489844.80
+Europe,Luxembourg,Meat,Online,M,12/19/2015,216278588,12/19/2015,495,421.89,364.69,208835.55,180521.55,28314.00
+North America,United States of America,Fruits,Online,L,12/23/2013,104390132,1/23/2014,215,9.33,6.92,2005.95,1487.80,518.15
+Sub-Saharan Africa,Ethiopia,Household,Online,C,3/11/2013,253056180,3/14/2013,3802,668.27,502.54,2540762.54,1910657.08,630105.46
+Asia,Taiwan,Personal Care,Online,M,8/24/2011,912325561,8/24/2011,6262,81.73,56.67,511793.26,354867.54,156925.72
+Central America and the Caribbean,Saint Lucia,Meat,Online,H,1/4/2016,152559602,1/23/2016,4631,421.89,364.69,1953772.59,1688879.39,264893.20
+Sub-Saharan Africa,Djibouti,Cereal,Online,M,2/4/2015,614432132,3/21/2015,2977,205.70,117.11,612368.90,348636.47,263732.43
+Central America and the Caribbean,Trinidad and Tobago,Household,Offline,C,12/1/2013,958929479,12/26/2013,7397,668.27,502.54,4943193.19,3717288.38,1225904.81
+Asia,Mongolia,Household,Offline,H,10/10/2014,817350471,11/26/2014,1022,668.27,502.54,682971.94,513595.88,169376.06
+Central America and the Caribbean,Cuba,Office Supplies,Online,L,6/15/2013,341306436,6/23/2013,9014,651.21,524.96,5870006.94,4731989.44,1138017.50
+Asia,Nepal,Cosmetics,Offline,C,8/6/2010,652721202,9/25/2010,3563,437.20,263.33,1557743.60,938244.79,619498.81
+Europe,Romania,Baby Food,Offline,H,6/23/2015,693831098,7/14/2015,8895,255.28,159.42,2270715.60,1418040.90,852674.70
+Australia and Oceania,Fiji,Cereal,Offline,H,12/7/2011,377184951,12/19/2011,6264,205.70,117.11,1288504.80,733577.04,554927.76
+Central America and the Caribbean,Honduras,Vegetables,Online,H,2/28/2015,135644090,3/26/2015,8955,154.06,90.93,1379607.30,814278.15,565329.15
+Asia,Indonesia,Clothes,Offline,L,11/29/2014,472382342,12/2/2014,7287,109.28,35.84,796323.36,261166.08,535157.28
+Central America and the Caribbean,Dominica,Cereal,Online,L,2/25/2017,610886037,4/15/2017,3608,205.70,117.11,742165.60,422532.88,319632.72
+Asia,Laos,Cosmetics,Offline,C,7/20/2017,744954001,7/25/2017,7298,437.20,263.33,3190685.60,1921782.34,1268903.26
+Middle East and North Africa,Egypt,Personal Care,Offline,M,11/4/2012,688697564,12/3/2012,9768,81.73,56.67,798338.64,553552.56,244786.08
+Australia and Oceania,Palau,Cereal,Online,L,3/10/2012,326540553,3/23/2012,9461,205.70,117.11,1946127.70,1107977.71,838149.99
+Europe,Macedonia,Cereal,Online,C,9/1/2010,963219296,9/18/2010,6850,205.70,117.11,1409045.00,802203.50,606841.50
+Sub-Saharan Africa,Tanzania,Cereal,Offline,C,10/11/2015,373782622,11/15/2015,9439,205.70,117.11,1941602.30,1105401.29,836201.01
+Central America and the Caribbean,Saint Kitts and Nevis ,Vegetables,Online,L,5/15/2013,453591859,6/10/2013,6766,154.06,90.93,1042369.96,615232.38,427137.58
+Europe,Austria,Vegetables,Offline,M,11/12/2016,468320834,12/21/2016,5397,154.06,90.93,831461.82,490749.21,340712.61
+Europe,Iceland,Cereal,Online,M,6/15/2010,203955876,7/18/2010,3931,205.70,117.11,808606.70,460359.41,348247.29
+Sub-Saharan Africa,Mauritius ,Baby Food,Offline,C,6/22/2013,416795814,6/29/2013,7998,255.28,159.42,2041729.44,1275041.16,766688.28
+Europe,Moldova ,Snacks,Offline,H,1/11/2016,583451974,2/5/2016,5260,152.58,97.44,802570.80,512534.40,290036.40
+Europe,Luxembourg,Clothes,Online,M,1/30/2013,250848186,3/7/2013,407,109.28,35.84,44476.96,14586.88,29890.08
+Sub-Saharan Africa,Senegal,Meat,Online,M,10/22/2015,386220777,10/25/2015,165,421.89,364.69,69611.85,60173.85,9438.00
+Middle East and North Africa,Syria,Cosmetics,Online,H,7/2/2017,227118575,8/2/2017,8288,437.20,263.33,3623513.60,2182479.04,1441034.56
+Australia and Oceania,Nauru,Fruits,Offline,M,7/14/2012,431402909,8/16/2012,562,9.33,6.92,5243.46,3889.04,1354.42
+Sub-Saharan Africa,Ethiopia,Meat,Offline,L,4/12/2015,827247607,4/25/2015,9805,421.89,364.69,4136631.45,3575785.45,560846.00
+Europe,Albania,Meat,Online,C,11/12/2010,863138997,12/21/2010,865,421.89,364.69,364934.85,315456.85,49478.00
+Central America and the Caribbean,Dominica,Snacks,Offline,L,1/2/2012,957875907,1/16/2012,5622,152.58,97.44,857804.76,547807.68,309997.08
+Central America and the Caribbean,Honduras,Clothes,Offline,L,4/30/2017,250569665,5/8/2017,7987,109.28,35.84,872819.36,286254.08,586565.28
+Sub-Saharan Africa,Cape Verde,Snacks,Online,H,3/2/2015,650644099,3/31/2015,8903,152.58,97.44,1358419.74,867508.32,490911.42
+Asia,Indonesia,Fruits,Offline,H,1/24/2010,987835538,3/10/2010,1342,9.33,6.92,12520.86,9286.64,3234.22
+Middle East and North Africa,Somalia,Cosmetics,Online,H,6/3/2011,162192809,6/17/2011,5311,437.20,263.33,2321969.20,1398545.63,923423.57
+Sub-Saharan Africa,Mozambique,Clothes,Offline,H,7/19/2014,294077241,7/28/2014,2845,109.28,35.84,310901.60,101964.80,208936.80
+Sub-Saharan Africa,Angola,Baby Food,Offline,L,1/15/2012,874162662,2/24/2012,3012,255.28,159.42,768903.36,480173.04,288730.32
+North America,Greenland,Beverages,Offline,C,9/13/2012,113435399,10/12/2012,6910,47.45,31.79,327879.50,219668.90,108210.60
+Central America and the Caribbean,Honduras,Meat,Offline,H,1/15/2015,793194282,2/23/2015,2669,421.89,364.69,1126024.41,973357.61,152666.80
+Australia and Oceania,Samoa ,Fruits,Offline,C,1/23/2011,815050637,3/7/2011,451,9.33,6.92,4207.83,3120.92,1086.91
+Asia,North Korea,Fruits,Online,M,10/5/2012,850928294,10/9/2012,7447,9.33,6.92,69480.51,51533.24,17947.27
+Middle East and North Africa,Jordan,Snacks,Online,M,6/27/2010,293063580,6/27/2010,2881,152.58,97.44,439582.98,280724.64,158858.34
+Asia,Thailand,Beverages,Online,H,7/31/2014,404005324,9/15/2014,3008,47.45,31.79,142729.60,95624.32,47105.28
+Europe,Serbia,Household,Online,M,9/23/2013,266614854,10/10/2013,6115,668.27,502.54,4086471.05,3073032.10,1013438.95
+Europe,Andorra,Household,Offline,L,8/14/2016,834065997,9/14/2016,7518,668.27,502.54,5024053.86,3778095.72,1245958.14
+Europe,Lithuania,Fruits,Offline,M,4/14/2010,879845082,5/1/2010,4567,9.33,6.92,42610.11,31603.64,11006.47
+Middle East and North Africa,Egypt,Household,Offline,M,11/24/2016,147750937,1/6/2017,1641,668.27,502.54,1096631.07,824668.14,271962.93
+Sub-Saharan Africa,The Gambia,Baby Food,Online,M,4/8/2014,701894891,5/18/2014,5151,255.28,159.42,1314947.28,821172.42,493774.86
+Sub-Saharan Africa,Equatorial Guinea,Personal Care,Online,C,5/2/2015,176700770,5/29/2015,8539,81.73,56.67,697892.47,483905.13,213987.34
+Central America and the Caribbean,Dominica,Fruits,Offline,H,5/22/2011,326904904,6/27/2011,7281,9.33,6.92,67931.73,50384.52,17547.21
+Middle East and North Africa,Algeria,Baby Food,Online,H,9/20/2013,277556121,10/29/2013,3879,255.28,159.42,990231.12,618390.18,371840.94
+Middle East and North Africa,Kuwait,Household,Online,M,12/20/2011,574015748,1/8/2012,2871,668.27,502.54,1918603.17,1442792.34,475810.83
+Sub-Saharan Africa,Rwanda,Cosmetics,Offline,L,10/6/2015,931957614,11/25/2015,5823,437.20,263.33,2545815.60,1533370.59,1012445.01
+Asia,Uzbekistan,Cereal,Online,L,1/30/2013,687368047,2/14/2013,6335,205.70,117.11,1303109.50,741891.85,561217.65
+Europe,Slovakia,Cosmetics,Offline,M,11/27/2011,146545875,1/7/2012,5036,437.20,263.33,2201739.20,1326129.88,875609.32
+Middle East and North Africa,Morocco,Snacks,Offline,C,9/11/2013,136102426,9/23/2013,4587,152.58,97.44,699884.46,446957.28,252927.18
+Asia,Bhutan,Household,Online,C,3/14/2017,652961528,3/20/2017,4681,668.27,502.54,3128171.87,2352389.74,775782.13
+Europe,Romania,Baby Food,Offline,C,8/30/2014,414359509,9/11/2014,7042,255.28,159.42,1797681.76,1122635.64,675046.12
+Central America and the Caribbean,Costa Rica,Vegetables,Online,L,9/27/2010,907845199,10/2/2010,423,154.06,90.93,65167.38,38463.39,26703.99
+Middle East and North Africa,Libya,Household,Offline,M,3/1/2011,541279923,3/29/2011,5613,668.27,502.54,3750999.51,2820757.02,930242.49
+Central America and the Caribbean,Jamaica,Vegetables,Offline,M,5/13/2011,492837512,5/20/2011,427,154.06,90.93,65783.62,38827.11,26956.51
+Australia and Oceania,Solomon Islands,Fruits,Offline,C,6/1/2015,661004292,7/7/2015,4714,9.33,6.92,43981.62,32620.88,11360.74
+Sub-Saharan Africa,Mozambique,Household,Online,L,2/2/2017,114579093,3/17/2017,5355,668.27,502.54,3578585.85,2691101.70,887484.15
+Central America and the Caribbean,Dominica,Vegetables,Offline,M,3/28/2011,242673242,4/20/2011,1260,154.06,90.93,194115.60,114571.80,79543.80
+Asia,Philippines,Fruits,Online,M,9/8/2012,704710566,9/15/2012,8372,9.33,6.92,78110.76,57934.24,20176.52
+Asia,Mongolia,Cereal,Online,L,8/19/2014,780427396,9/30/2014,4664,205.70,117.11,959384.80,546201.04,413183.76
+Central America and the Caribbean,Panama,Meat,Offline,C,2/7/2015,719872558,2/16/2015,5142,421.89,364.69,2169358.38,1875235.98,294122.40
+Sub-Saharan Africa,Ghana,Fruits,Online,L,3/16/2013,393407380,3/21/2013,6841,9.33,6.92,63826.53,47339.72,16486.81
+Sub-Saharan Africa,Sao Tome and Principe,Clothes,Online,C,11/20/2012,641705691,12/7/2012,3829,109.28,35.84,418433.12,137231.36,281201.76
+Middle East and North Africa,Iraq,Personal Care,Offline,M,8/8/2011,125753819,9/18/2011,2205,81.73,56.67,180214.65,124957.35,55257.30
+Europe,Malta,Baby Food,Offline,L,8/21/2011,276850593,9/3/2011,5097,255.28,159.42,1301162.16,812563.74,488598.42
+Asia,Uzbekistan,Office Supplies,Online,H,5/10/2016,346607339,6/13/2016,7669,651.21,524.96,4994129.49,4025918.24,968211.25
+Europe,Andorra,Cereal,Online,L,4/5/2011,556947886,5/17/2011,2111,205.70,117.11,434232.70,247219.21,187013.49
+Sub-Saharan Africa,Burundi,Baby Food,Offline,C,3/9/2013,750108563,4/16/2013,2648,255.28,159.42,675981.44,422144.16,253837.28
+Central America and the Caribbean,Dominica,Office Supplies,Offline,H,7/22/2013,838638198,8/2/2013,534,651.21,524.96,347746.14,280328.64,67417.50
+Asia,Taiwan,Cosmetics,Online,H,5/31/2012,355398118,6/15/2012,9056,437.20,263.33,3959283.20,2384716.48,1574566.72
+Sub-Saharan Africa,Lesotho,Vegetables,Offline,H,8/29/2014,703562152,10/9/2014,8530,154.06,90.93,1314131.80,775632.90,538498.90
+Australia and Oceania,Tuvalu,Household,Offline,M,2/9/2011,206616628,3/24/2011,1306,668.27,502.54,872760.62,656317.24,216443.38
+North America,Greenland,Beverages,Online,C,7/30/2012,858360373,8/12/2012,6764,47.45,31.79,320951.80,215027.56,105924.24
+Asia,Sri Lanka,Clothes,Online,L,10/22/2015,672904717,10/30/2015,6314,109.28,35.84,689993.92,226293.76,463700.16
+Sub-Saharan Africa,Kenya,Beverages,Offline,H,10/21/2014,434673488,11/12/2014,8399,47.45,31.79,398532.55,267004.21,131528.34
+Europe,United Kingdom,Household,Online,C,3/23/2012,548403012,4/4/2012,3493,668.27,502.54,2334267.11,1755372.22,578894.89
+Sub-Saharan Africa,Burundi,Clothes,Offline,M,7/27/2015,589142119,8/21/2015,9100,109.28,35.84,994448.00,326144.00,668304.00
+Europe,United Kingdom,Vegetables,Online,L,9/7/2010,652252137,9/26/2010,4757,154.06,90.93,732863.42,432554.01,300309.41
+Sub-Saharan Africa,Botswana,Snacks,Online,C,12/28/2010,903406894,2/9/2011,7030,152.58,97.44,1072637.40,685003.20,387634.20
+Sub-Saharan Africa,Benin,Vegetables,Offline,H,10/30/2015,228592717,11/3/2015,4520,154.06,90.93,696351.20,411003.60,285347.60
+Europe,Malta,Cosmetics,Online,M,3/29/2014,284108436,4/3/2014,2854,437.20,263.33,1247768.80,751543.82,496224.98
+Sub-Saharan Africa,Gabon,Cereal,Offline,C,6/24/2011,546565377,7/1/2011,9696,205.70,117.11,1994467.20,1135498.56,858968.64
+Sub-Saharan Africa,Seychelles ,Office Supplies,Online,H,1/29/2010,562887370,2/8/2010,9736,651.21,524.96,6340180.56,5111010.56,1229170.00
+Sub-Saharan Africa,Nigeria,Snacks,Online,L,8/20/2013,400310742,9/17/2013,9699,152.58,97.44,1479873.42,945070.56,534802.86
+Middle East and North Africa,Egypt,Fruits,Online,H,6/16/2015,196384322,6/28/2015,3340,9.33,6.92,31162.20,23112.80,8049.40
+Middle East and North Africa,Pakistan,Vegetables,Offline,C,6/25/2017,608969438,7/25/2017,6444,154.06,90.93,992762.64,585952.92,406809.72
+Sub-Saharan Africa,Ghana,Beverages,Offline,C,5/10/2011,566239917,6/12/2011,1829,47.45,31.79,86786.05,58143.91,28642.14
+Europe,Norway,Vegetables,Offline,H,7/5/2012,416682088,8/14/2012,4344,154.06,90.93,669236.64,394999.92,274236.72
+Europe,Cyprus,Vegetables,Offline,M,12/8/2010,579094779,12/11/2010,5869,154.06,90.93,904178.14,533668.17,370509.97
+Europe,Czech Republic,Fruits,Online,M,11/1/2012,192589318,12/16/2012,314,9.33,6.92,2929.62,2172.88,756.74
+Sub-Saharan Africa,Guinea-Bissau,Office Supplies,Online,M,2/11/2014,266589534,3/2/2014,8622,651.21,524.96,5614732.62,4526205.12,1088527.50
+Sub-Saharan Africa,Togo,Cosmetics,Offline,L,9/28/2011,530831754,11/14/2011,3767,437.20,263.33,1646932.40,991964.11,654968.29
+Europe,Belarus,Household,Offline,M,2/12/2015,785364806,3/21/2015,5754,668.27,502.54,3845225.58,2891615.16,953610.42
+Europe,Russia,Baby Food,Offline,M,12/24/2011,450550019,1/2/2012,6618,255.28,159.42,1689443.04,1055041.56,634401.48
+Europe,Bulgaria,Vegetables,Offline,C,1/26/2010,817061221,2/21/2010,5427,154.06,90.93,836083.62,493477.11,342606.51
+Central America and the Caribbean,Dominican Republic,Office Supplies,Online,H,8/15/2010,995884740,8/23/2010,3280,651.21,524.96,2135968.80,1721868.80,414100.00
+Europe,Slovakia,Office Supplies,Online,H,2/20/2012,168319404,3/10/2012,8307,651.21,524.96,5409601.47,4360842.72,1048758.75
+Asia,Laos,Beverages,Offline,H,3/15/2014,735976541,4/17/2014,668,47.45,31.79,31696.60,21235.72,10460.88
+Sub-Saharan Africa,Guinea,Clothes,Offline,C,8/29/2013,670779979,9/9/2013,7557,109.28,35.84,825828.96,270842.88,554986.08
+Australia and Oceania,Kiribati,Office Supplies,Online,C,1/4/2016,264966046,2/5/2016,8196,651.21,524.96,5337317.16,4302572.16,1034745.00
+Europe,Croatia,Clothes,Online,C,6/9/2016,781083571,6/18/2016,8841,109.28,35.84,966144.48,316861.44,649283.04
+Europe,Ukraine,Cereal,Offline,M,3/21/2011,401993882,4/11/2011,7778,205.70,117.11,1599934.60,910881.58,689053.02
+Central America and the Caribbean,The Bahamas,Snacks,Offline,L,8/7/2016,980870807,9/9/2016,324,152.58,97.44,49435.92,31570.56,17865.36
+Europe,France,Office Supplies,Online,L,1/19/2012,391200673,2/13/2012,3827,651.21,524.96,2492180.67,2009021.92,483158.75
+Middle East and North Africa,Iran,Baby Food,Offline,H,3/1/2012,176782310,3/16/2012,2669,255.28,159.42,681342.32,425491.98,255850.34
+Middle East and North Africa,Qatar,Snacks,Offline,M,6/19/2017,601727044,7/22/2017,3259,152.58,97.44,497258.22,317556.96,179701.26
+Asia,Myanmar,Baby Food,Online,M,8/11/2010,200458705,9/30/2010,9040,255.28,159.42,2307731.20,1441156.80,866574.40
+Middle East and North Africa,Oman,Office Supplies,Offline,C,3/7/2013,727713620,4/22/2013,5486,651.21,524.96,3572538.06,2879930.56,692607.50
+Europe,San Marino,Vegetables,Offline,M,9/30/2013,408540618,11/13/2013,5102,154.06,90.93,786014.12,463924.86,322089.26
+Central America and the Caribbean,Haiti,Fruits,Online,H,2/2/2017,688301026,3/1/2017,2424,9.33,6.92,22615.92,16774.08,5841.84
+Sub-Saharan Africa,Ghana,Fruits,Online,L,2/15/2010,382668673,3/4/2010,9019,9.33,6.92,84147.27,62411.48,21735.79
+Australia and Oceania,New Zealand,Beverages,Offline,H,2/13/2011,627629888,2/14/2011,8486,47.45,31.79,402660.70,269769.94,132890.76
+Central America and the Caribbean,Jamaica,Beverages,Online,M,11/27/2012,829483497,11/30/2012,1454,47.45,31.79,68992.30,46222.66,22769.64
+Asia,Laos,Clothes,Offline,M,12/14/2016,914840829,12/23/2016,586,109.28,35.84,64038.08,21002.24,43035.84
+Australia and Oceania,Tonga,Baby Food,Online,H,6/7/2014,880625712,7/23/2014,5573,255.28,159.42,1422675.44,888447.66,534227.78
+Australia and Oceania,Solomon Islands,Beverages,Offline,L,9/23/2012,344074475,9/23/2012,8138,47.45,31.79,386148.10,258707.02,127441.08
+Asia,India,Baby Food,Online,H,7/3/2016,792735946,7/4/2016,7038,255.28,159.42,1796660.64,1121997.96,674662.68
+Asia,Bangladesh,Vegetables,Online,L,5/5/2016,634471452,6/13/2016,3057,154.06,90.93,470961.42,277973.01,192988.41
+Middle East and North Africa,Egypt,Fruits,Offline,M,4/2/2015,147454822,5/14/2015,4013,9.33,6.92,37441.29,27769.96,9671.33
+Sub-Saharan Africa,Burundi,Clothes,Online,L,4/19/2017,130172383,4/19/2017,9756,109.28,35.84,1066135.68,349655.04,716480.64
+Asia,Myanmar,Snacks,Offline,H,4/5/2016,551422965,5/22/2016,7164,152.58,97.44,1093083.12,698060.16,395022.96
+Sub-Saharan Africa,Mozambique,Office Supplies,Offline,L,7/22/2014,100317895,8/14/2014,5149,651.21,524.96,3353080.29,2703019.04,650061.25
+Sub-Saharan Africa,Republic of the Congo,Office Supplies,Offline,M,11/15/2011,236281001,11/27/2011,9654,651.21,524.96,6286781.34,5067963.84,1218817.50
+Europe,San Marino,Personal Care,Online,L,7/17/2016,239048612,7/26/2016,8651,81.73,56.67,707046.23,490252.17,216794.06
+Middle East and North Africa,Pakistan,Household,Online,C,6/18/2011,358669555,8/3/2011,7147,668.27,502.54,4776125.69,3591653.38,1184472.31
+Australia and Oceania,Marshall Islands,Cereal,Online,M,11/15/2010,465505158,12/5/2010,2176,205.70,117.11,447603.20,254831.36,192771.84
+Asia,Indonesia,Household,Online,L,2/26/2011,500229251,3/15/2011,7806,668.27,502.54,5216515.62,3922827.24,1293688.38
+Sub-Saharan Africa,Guinea,Household,Offline,H,4/30/2017,923828160,6/3/2017,137,668.27,502.54,91552.99,68847.98,22705.01
+Sub-Saharan Africa,Mozambique,Personal Care,Online,L,7/18/2016,467600715,7/25/2016,2297,81.73,56.67,187733.81,130170.99,57562.82
+Sub-Saharan Africa,The Gambia,Household,Offline,H,2/29/2012,183158242,4/7/2012,9449,668.27,502.54,6314483.23,4748500.46,1565982.77
+Europe,Vatican City,Cosmetics,Offline,C,5/24/2012,292424571,6/5/2012,3784,437.20,263.33,1654364.80,996440.72,657924.08
+Australia and Oceania,Palau,Cosmetics,Online,H,5/17/2011,637636029,6/19/2011,9526,437.20,263.33,4164767.20,2508481.58,1656285.62
+Europe,Bosnia and Herzegovina,Beverages,Online,M,8/28/2015,231341445,10/7/2015,7929,47.45,31.79,376231.05,252062.91,124168.14
+Sub-Saharan Africa,Burkina Faso,Fruits,Online,C,2/21/2010,406402146,3/27/2010,2281,9.33,6.92,21281.73,15784.52,5497.21
+Central America and the Caribbean,El Salvador,Cosmetics,Offline,C,11/17/2014,765991961,11/24/2014,2898,437.20,263.33,1267005.60,763130.34,503875.26
+Europe,Portugal,Office Supplies,Online,M,2/9/2013,533597218,2/24/2013,2130,651.21,524.96,1387077.30,1118164.80,268912.50
+Asia,Malaysia,Beverages,Offline,H,8/27/2015,803016746,10/15/2015,9355,47.45,31.79,443894.75,297395.45,146499.30
+Asia,Taiwan,Cereal,Offline,M,9/3/2011,488361871,9/18/2011,5985,205.70,117.11,1231114.50,700903.35,530211.15
+Sub-Saharan Africa,Angola,Snacks,Offline,H,4/28/2010,374056422,5/6/2010,463,152.58,97.44,70644.54,45114.72,25529.82
+Sub-Saharan Africa,Burundi,Meat,Offline,H,4/4/2014,864836728,5/10/2014,3261,421.89,364.69,1375783.29,1189254.09,186529.20
+North America,Canada,Household,Offline,H,10/31/2015,635751616,12/14/2015,1886,668.27,502.54,1260357.22,947790.44,312566.78
+Europe,Romania,Meat,Offline,C,1/16/2016,682162415,2/26/2016,5873,421.89,364.69,2477759.97,2141824.37,335935.60
+Asia,Taiwan,Meat,Online,M,3/1/2013,269742953,3/26/2013,1789,421.89,364.69,754761.21,652430.41,102330.80
+Asia,Cambodia,Clothes,Online,M,2/7/2014,984479558,2/12/2014,8233,109.28,35.84,899702.24,295070.72,604631.52
+Asia,Myanmar,Meat,Online,H,6/25/2015,882671058,7/28/2015,836,421.89,364.69,352700.04,304880.84,47819.20
+Asia,Vietnam,Household,Online,H,12/22/2014,340928781,1/9/2015,7257,668.27,502.54,4849635.39,3646932.78,1202702.61
+Europe,Iceland,Vegetables,Offline,C,2/13/2015,706176555,2/26/2015,2190,154.06,90.93,337391.40,199136.70,138254.70
+Sub-Saharan Africa,Sudan,Vegetables,Offline,H,12/10/2011,245650708,1/9/2012,2358,154.06,90.93,363273.48,214412.94,148860.54
+Middle East and North Africa,Algeria,Personal Care,Online,H,11/20/2013,896900069,12/12/2013,1516,81.73,56.67,123902.68,85911.72,37990.96
+North America,United States of America,Household,Online,L,4/30/2015,617785966,5/5/2015,5451,668.27,502.54,3642739.77,2739345.54,903394.23
+Sub-Saharan Africa,Nigeria,Meat,Offline,L,6/25/2015,136482226,7/26/2015,6979,421.89,364.69,2944370.31,2545171.51,399198.80
+Sub-Saharan Africa,Burundi,Office Supplies,Online,M,8/18/2014,701475179,9/5/2014,949,651.21,524.96,617998.29,498187.04,119811.25
+Asia,Tajikistan,Cereal,Offline,L,5/5/2010,931563651,5/26/2010,9241,205.70,117.11,1900873.70,1082213.51,818660.19
+Asia,Nepal,Beverages,Online,M,5/22/2016,865858972,5/31/2016,5766,47.45,31.79,273596.70,183301.14,90295.56
+Australia and Oceania,Australia,Fruits,Offline,M,7/14/2013,613784968,8/21/2013,1467,9.33,6.92,13687.11,10151.64,3535.47
+Sub-Saharan Africa,Mozambique,Fruits,Online,H,11/21/2013,805077970,12/19/2013,9317,9.33,6.92,86927.61,64473.64,22453.97
+Europe,Luxembourg,Office Supplies,Offline,H,9/17/2011,339786803,10/25/2011,9321,651.21,524.96,6069928.41,4893152.16,1176776.25
+Middle East and North Africa,Iraq,Meat,Online,C,6/16/2017,438272798,7/24/2017,3515,421.89,364.69,1482943.35,1281885.35,201058.00
+Asia,Cambodia,Snacks,Online,M,2/23/2016,591209781,4/3/2016,967,152.58,97.44,147544.86,94224.48,53320.38
+Sub-Saharan Africa,Comoros,Cosmetics,Online,L,8/2/2016,809584081,8/18/2016,2775,437.20,263.33,1213230.00,730740.75,482489.25
+Europe,Malta,Personal Care,Offline,C,4/13/2017,274694526,5/11/2017,7069,81.73,56.67,577749.37,400600.23,177149.14
+Middle East and North Africa,Oman,Household,Online,L,3/30/2010,488152444,3/30/2010,4011,668.27,502.54,2680430.97,2015687.94,664743.03
+North America,United States of America,Office Supplies,Offline,L,1/13/2015,321881663,2/28/2015,792,651.21,524.96,515758.32,415768.32,99990.00
+Sub-Saharan Africa,Ethiopia,Fruits,Offline,L,6/6/2014,968118512,7/18/2014,6636,9.33,6.92,61913.88,45921.12,15992.76
+Central America and the Caribbean,Barbados,Snacks,Offline,C,3/15/2011,989411818,3/16/2011,7799,152.58,97.44,1189971.42,759934.56,430036.86
+Central America and the Caribbean,Guatemala,Household,Offline,L,10/2/2016,368622910,10/5/2016,2566,668.27,502.54,1714780.82,1289517.64,425263.18
+Sub-Saharan Africa,Uganda,Fruits,Offline,H,1/21/2017,958925616,2/3/2017,6254,9.33,6.92,58349.82,43277.68,15072.14
+Europe,France,Clothes,Online,M,4/15/2014,633806264,4/26/2014,6213,109.28,35.84,678956.64,222673.92,456282.72
+Middle East and North Africa,Somalia,Personal Care,Offline,H,6/23/2015,937063682,7/8/2015,6822,81.73,56.67,557562.06,386602.74,170959.32
+Sub-Saharan Africa,Ghana,Clothes,Online,L,7/26/2013,332809197,7/30/2013,4492,109.28,35.84,490885.76,160993.28,329892.48
+Europe,Spain,Personal Care,Online,C,12/8/2013,955466639,1/27/2014,2666,81.73,56.67,217892.18,151082.22,66809.96
+Sub-Saharan Africa,Zambia,Beverages,Offline,C,6/14/2015,959772336,7/18/2015,6817,47.45,31.79,323466.65,216712.43,106754.22
+Sub-Saharan Africa,Senegal,Snacks,Online,L,4/1/2014,370775115,4/27/2014,9451,152.58,97.44,1442033.58,920905.44,521128.14
+Asia,Myanmar,Cereal,Online,C,2/11/2015,633836305,2/23/2015,5103,205.70,117.11,1049687.10,597612.33,452074.77
+Sub-Saharan Africa,Equatorial Guinea,Personal Care,Online,H,7/13/2012,564629733,7/26/2012,5340,81.73,56.67,436438.20,302617.80,133820.40
+Sub-Saharan Africa,Rwanda,Beverages,Offline,C,3/15/2017,399141728,3/31/2017,3762,47.45,31.79,178506.90,119593.98,58912.92
+Sub-Saharan Africa,Mozambique,Snacks,Online,L,5/20/2014,443671119,7/3/2014,998,152.58,97.44,152274.84,97245.12,55029.72
+Australia and Oceania,Tonga,Snacks,Offline,M,2/10/2013,624829232,3/16/2013,9710,152.58,97.44,1481551.80,946142.40,535409.40
+Asia,India,Office Supplies,Offline,L,2/20/2012,939539897,3/3/2012,9589,651.21,524.96,6244452.69,5033841.44,1210611.25
+Central America and the Caribbean,The Bahamas,Baby Food,Offline,C,4/9/2011,105039441,4/26/2011,2360,255.28,159.42,602460.80,376231.20,226229.60
+North America,Mexico,Beverages,Offline,H,3/4/2015,508876693,3/29/2015,6777,47.45,31.79,321568.65,215440.83,106127.82
+Sub-Saharan Africa,Seychelles ,Fruits,Offline,H,6/5/2014,558912980,7/3/2014,3626,9.33,6.92,33830.58,25091.92,8738.66
+Sub-Saharan Africa,Kenya,Meat,Online,L,1/15/2012,533322131,1/18/2012,725,421.89,364.69,305870.25,264400.25,41470.00
+Europe,Norway,Office Supplies,Online,L,1/30/2012,330590474,3/14/2012,7923,651.21,524.96,5159536.83,4159258.08,1000278.75
+Europe,Malta,Cosmetics,Offline,C,11/26/2015,819516837,12/25/2015,2098,437.20,263.33,917245.60,552466.34,364779.26
+Asia,Thailand,Household,Offline,H,10/9/2010,689212548,10/10/2010,2164,668.27,502.54,1446136.28,1087496.56,358639.72
+Europe,Kosovo,Snacks,Offline,C,7/13/2011,499101436,8/28/2011,4061,152.58,97.44,619627.38,395703.84,223923.54
+Australia and Oceania,Kiribati,Vegetables,Online,H,5/11/2011,428919827,5/14/2011,5763,154.06,90.93,887847.78,524029.59,363818.19
+Sub-Saharan Africa,Sierra Leone,Beverages,Online,H,11/13/2015,728716552,11/24/2015,2276,47.45,31.79,107996.20,72354.04,35642.16
+Middle East and North Africa,Israel,Cosmetics,Online,L,8/2/2016,368852937,8/15/2016,636,437.20,263.33,278059.20,167477.88,110581.32
+Europe,Andorra,Clothes,Online,C,6/20/2017,190002810,8/5/2017,4909,109.28,35.84,536455.52,175938.56,360516.96
+Europe,Macedonia,Beverages,Offline,M,12/17/2015,653152501,12/22/2015,1194,47.45,31.79,56655.30,37957.26,18698.04
+Europe,Austria,Vegetables,Offline,C,5/9/2014,489600837,6/9/2014,2622,154.06,90.93,403945.32,238418.46,165526.86
+Europe,Montenegro,Baby Food,Online,M,1/5/2016,750959146,1/25/2016,4354,255.28,159.42,1111489.12,694114.68,417374.44
+Sub-Saharan Africa,Niger,Office Supplies,Offline,H,1/2/2014,759151256,1/13/2014,8581,651.21,524.96,5588033.01,4504681.76,1083351.25
+Europe,Bosnia and Herzegovina,Personal Care,Offline,L,1/12/2010,356413495,1/18/2010,9528,81.73,56.67,778723.44,539951.76,238771.68
+Asia,Myanmar,Personal Care,Online,H,8/27/2010,355294692,10/12/2010,8450,81.73,56.67,690618.50,478861.50,211757.00
+Europe,Bosnia and Herzegovina,Office Supplies,Offline,L,11/30/2015,288656175,12/30/2015,8632,651.21,524.96,5621244.72,4531454.72,1089790.00
+Europe,Russia,Cosmetics,Offline,C,7/28/2015,659671771,7/29/2015,391,437.20,263.33,170945.20,102962.03,67983.17
+Australia and Oceania,Vanuatu,Vegetables,Online,L,8/2/2015,691827809,8/17/2015,6078,154.06,90.93,936376.68,552672.54,383704.14
+Sub-Saharan Africa,Botswana,Baby Food,Online,C,8/18/2011,578923118,8/30/2011,5070,255.28,159.42,1294269.60,808259.40,486010.20
+Middle East and North Africa,Iraq,Household,Online,H,8/1/2015,135069024,8/1/2015,8781,668.27,502.54,5868078.87,4412803.74,1455275.13
+Central America and the Caribbean,Grenada,Baby Food,Online,M,11/19/2013,144689357,12/12/2013,5651,255.28,159.42,1442587.28,900882.42,541704.86
+Sub-Saharan Africa,Uganda,Meat,Offline,C,10/5/2016,112520444,11/12/2016,6155,421.89,364.69,2596732.95,2244666.95,352066.00
+Europe,Netherlands,Clothes,Offline,H,7/26/2016,513611114,9/5/2016,7797,109.28,35.84,852056.16,279444.48,572611.68
+Europe,Russia,Beverages,Offline,M,4/21/2014,543322694,6/1/2014,114,47.45,31.79,5409.30,3624.06,1785.24
+Central America and the Caribbean,Nicaragua,Office Supplies,Online,M,10/23/2015,367329013,11/27/2015,9673,651.21,524.96,6299154.33,5077938.08,1221216.25
+Europe,Monaco,Vegetables,Offline,C,11/6/2012,671616399,12/10/2012,5072,154.06,90.93,781392.32,461196.96,320195.36
+Sub-Saharan Africa,Mauritius ,Baby Food,Online,H,3/11/2017,412483680,4/18/2017,1942,255.28,159.42,495753.76,309593.64,186160.12
+Central America and the Caribbean,Dominican Republic,Vegetables,Online,C,5/15/2011,866542184,5/22/2011,7944,154.06,90.93,1223852.64,722347.92,501504.72
+Australia and Oceania,Nauru,Office Supplies,Online,H,1/22/2013,680715739,3/7/2013,7769,651.21,524.96,5059250.49,4078414.24,980836.25
+Australia and Oceania,Tuvalu,Baby Food,Offline,C,9/19/2010,822240674,9/29/2010,8142,255.28,159.42,2078489.76,1297997.64,780492.12
+Middle East and North Africa,Kuwait,Baby Food,Offline,L,10/15/2012,528665816,10/25/2012,2818,255.28,159.42,719379.04,449245.56,270133.48
+Australia and Oceania,Marshall Islands,Cosmetics,Offline,C,8/24/2013,457852494,9/1/2013,7582,437.20,263.33,3314850.40,1996568.06,1318282.34
+Australia and Oceania,Tonga,Fruits,Online,M,7/3/2012,437974536,7/10/2012,5253,9.33,6.92,49010.49,36350.76,12659.73
+Australia and Oceania,Tonga,Household,Offline,C,3/23/2017,817518270,4/18/2017,678,668.27,502.54,453087.06,340722.12,112364.94
+Australia and Oceania,Tonga,Cereal,Offline,C,3/22/2010,215282523,4/8/2010,5738,205.70,117.11,1180306.60,671977.18,508329.42
+Australia and Oceania,East Timor,Clothes,Offline,L,11/5/2012,470378625,11/6/2012,4343,109.28,35.84,474603.04,155653.12,318949.92
+Asia,Turkmenistan,Cosmetics,Online,M,6/5/2013,792230403,7/10/2013,7436,437.20,263.33,3251019.20,1958121.88,1292897.32
+Sub-Saharan Africa,Mauritania,Personal Care,Online,H,7/6/2016,910574185,8/12/2016,7991,81.73,56.67,653104.43,452849.97,200254.46
+Central America and the Caribbean,Dominican Republic,Fruits,Offline,C,5/9/2016,625458800,5/25/2016,6013,9.33,6.92,56101.29,41609.96,14491.33
+Australia and Oceania,Nauru,Cosmetics,Online,L,11/1/2015,257245576,12/16/2015,3537,437.20,263.33,1546376.40,931398.21,614978.19
+Sub-Saharan Africa,Madagascar,Meat,Online,H,2/15/2015,196608340,3/20/2015,9632,421.89,364.69,4063644.48,3512694.08,550950.40
+Sub-Saharan Africa,Tanzania,Cereal,Online,M,6/14/2015,454533421,6/15/2015,5395,205.70,117.11,1109751.50,631808.45,477943.05
+Europe,Macedonia,Beverages,Offline,L,4/30/2015,212319648,5/15/2015,8957,47.45,31.79,425009.65,284743.03,140266.62
+Europe,Monaco,Household,Online,L,4/30/2014,971578347,6/16/2014,478,668.27,502.54,319433.06,240214.12,79218.94
+Europe,Italy,Fruits,Offline,L,11/17/2016,704233348,11/26/2016,7152,9.33,6.92,66728.16,49491.84,17236.32
+Central America and the Caribbean,Jamaica,Cosmetics,Online,C,4/29/2013,602520978,5/28/2013,8202,437.20,263.33,3585914.40,2159832.66,1426081.74
+Sub-Saharan Africa,South Sudan,Cosmetics,Online,H,1/3/2014,128990066,1/24/2014,9882,437.20,263.33,4320410.40,2602227.06,1718183.34
+Sub-Saharan Africa,Ghana,Meat,Online,H,3/12/2015,166501939,3/25/2015,479,421.89,364.69,202085.31,174686.51,27398.80
+Europe,Bulgaria,Snacks,Online,C,5/31/2010,768230426,6/22/2010,5310,152.58,97.44,810199.80,517406.40,292793.40
+Europe,Luxembourg,Fruits,Offline,M,12/31/2016,707661855,1/26/2017,1723,9.33,6.92,16075.59,11923.16,4152.43
+Europe,Hungary,Fruits,Offline,M,9/8/2011,628595054,10/21/2011,4100,9.33,6.92,38253.00,28372.00,9881.00
+Europe,Greece,Beverages,Offline,H,2/20/2010,795141351,2/24/2010,8850,47.45,31.79,419932.50,281341.50,138591.00
+Australia and Oceania,Samoa ,Vegetables,Offline,C,3/1/2010,641724574,3/30/2010,9417,154.06,90.93,1450783.02,856287.81,594495.21
+Sub-Saharan Africa,Benin,Meat,Offline,H,8/14/2010,123081052,10/3/2010,1273,421.89,364.69,537065.97,464250.37,72815.60
+Europe,Belgium,Meat,Offline,M,3/22/2015,164259612,4/29/2015,6924,421.89,364.69,2921166.36,2525113.56,396052.80
+Central America and the Caribbean,Jamaica,Baby Food,Online,H,8/11/2013,410621583,9/6/2013,906,255.28,159.42,231283.68,144434.52,86849.16
+Sub-Saharan Africa,Kenya,Baby Food,Online,L,6/1/2015,577840793,7/9/2015,4786,255.28,159.42,1221770.08,762984.12,458785.96
+Sub-Saharan Africa,Liberia,Cereal,Online,H,3/10/2016,901903569,3/19/2016,2163,205.70,117.11,444929.10,253308.93,191620.17
+Asia,Mongolia,Baby Food,Online,M,5/1/2016,789108741,5/14/2016,3667,255.28,159.42,936111.76,584593.14,351518.62
+Australia and Oceania,Palau,Cereal,Offline,L,4/26/2017,166067636,6/2/2017,1959,205.70,117.11,402966.30,229418.49,173547.81
+Asia,Uzbekistan,Cereal,Offline,M,4/25/2010,829704082,5/2/2010,6730,205.70,117.11,1384361.00,788150.30,596210.70
+Middle East and North Africa,Kuwait,Fruits,Offline,M,4/14/2010,597254407,4/25/2010,9706,9.33,6.92,90556.98,67165.52,23391.46
+Asia,Tajikistan,Baby Food,Online,H,4/24/2014,956267440,5/21/2014,9641,255.28,159.42,2461154.48,1536968.22,924186.26
+Sub-Saharan Africa,Lesotho,Office Supplies,Online,C,12/24/2012,314604508,2/8/2013,7320,651.21,524.96,4766857.20,3842707.20,924150.00
+Europe,Norway,Snacks,Online,H,11/15/2016,750439441,12/29/2016,562,152.58,97.44,85749.96,54761.28,30988.68
+Europe,Armenia,Fruits,Offline,C,11/29/2014,362258565,12/14/2014,9214,9.33,6.92,85966.62,63760.88,22205.74
+Sub-Saharan Africa,Mauritius ,Household,Online,C,1/8/2016,918860709,2/16/2016,158,668.27,502.54,105586.66,79401.32,26185.34
+Europe,Slovakia,Cereal,Online,H,1/14/2015,209357202,1/22/2015,2303,205.70,117.11,473727.10,269704.33,204022.77
+Asia,Turkmenistan,Office Supplies,Online,L,8/29/2011,593171870,9/4/2011,1593,651.21,524.96,1037377.53,836261.28,201116.25
+Europe,Portugal,Cosmetics,Offline,L,3/20/2014,450041043,4/16/2014,6000,437.20,263.33,2623200.00,1579980.00,1043220.00
+Central America and the Caribbean,Cuba,Office Supplies,Offline,L,3/4/2013,930013549,3/7/2013,531,651.21,524.96,345792.51,278753.76,67038.75
+Europe,Slovakia,Office Supplies,Online,H,3/15/2015,103450715,4/18/2015,2220,651.21,524.96,1445686.20,1165411.20,280275.00
+Central America and the Caribbean,Cuba,Baby Food,Online,H,9/6/2016,611026370,9/7/2016,5136,255.28,159.42,1311118.08,818781.12,492336.96
+Asia,Turkmenistan,Office Supplies,Online,C,1/23/2015,213726842,1/28/2015,5377,651.21,524.96,3501556.17,2822709.92,678846.25
+Sub-Saharan Africa,Mauritania,Fruits,Offline,M,8/20/2012,342850959,9/21/2012,6072,9.33,6.92,56651.76,42018.24,14633.52
+Middle East and North Africa,Israel,Personal Care,Offline,H,10/6/2012,250010049,11/5/2012,2384,81.73,56.67,194844.32,135101.28,59743.04
+Middle East and North Africa,Libya,Beverages,Offline,C,2/1/2016,157127940,3/11/2016,6504,47.45,31.79,308614.80,206762.16,101852.64
+Sub-Saharan Africa,Comoros,Cereal,Online,M,9/26/2016,806440961,10/4/2016,2656,205.70,117.11,546339.20,311044.16,235295.04
+Australia and Oceania,Fiji,Meat,Offline,C,9/12/2013,310497939,10/11/2013,2095,421.89,364.69,883859.55,764025.55,119834.00
+Australia and Oceania,Tuvalu,Snacks,Online,C,8/3/2014,902160203,8/7/2014,8107,152.58,97.44,1236966.06,789946.08,447019.98
+Europe,Luxembourg,Fruits,Online,M,9/25/2016,384601581,10/19/2016,1009,9.33,6.92,9413.97,6982.28,2431.69
+Central America and the Caribbean,Dominican Republic,Meat,Online,M,12/17/2010,681308400,1/30/2011,3151,421.89,364.69,1329375.39,1149138.19,180237.20
+Europe,Denmark,Vegetables,Online,L,8/25/2015,186079490,8/29/2015,3911,154.06,90.93,602528.66,355627.23,246901.43
+Europe,Bulgaria,Office Supplies,Online,M,5/22/2012,513026177,6/5/2012,4701,651.21,524.96,3061338.21,2467836.96,593501.25
+Central America and the Caribbean,Guatemala,Office Supplies,Online,H,5/7/2010,646572291,5/23/2010,3964,651.21,524.96,2581396.44,2080941.44,500455.00
+Middle East and North Africa,Jordan,Clothes,Offline,L,3/1/2012,991454160,3/19/2012,2173,109.28,35.84,237465.44,77880.32,159585.12
+Europe,Malta,Baby Food,Offline,L,3/16/2010,222720611,4/1/2010,6833,255.28,159.42,1744328.24,1089316.86,655011.38
+North America,Mexico,Office Supplies,Offline,H,1/13/2013,235732972,1/31/2013,7480,651.21,524.96,4871050.80,3926700.80,944350.00
+Middle East and North Africa,Kuwait,Office Supplies,Online,L,5/10/2011,296165072,6/2/2011,681,651.21,524.96,443474.01,357497.76,85976.25
+Sub-Saharan Africa,Zimbabwe,Cereal,Online,L,1/27/2012,190003240,3/8/2012,5036,205.70,117.11,1035905.20,589765.96,446139.24
+Central America and the Caribbean,Haiti,Clothes,Online,M,10/22/2011,673546302,11/11/2011,6173,109.28,35.84,674585.44,221240.32,453345.12
+Asia,Singapore,Cosmetics,Online,L,10/24/2015,323405587,11/17/2015,1755,437.20,263.33,767286.00,462144.15,305141.85
+Central America and the Caribbean,Dominican Republic,Household,Offline,L,6/23/2011,486504924,6/25/2011,6473,668.27,502.54,4325711.71,3252941.42,1072770.29
+Middle East and North Africa,Bahrain,Snacks,Online,H,7/16/2017,330080640,8/4/2017,7051,152.58,97.44,1075841.58,687049.44,388792.14
+Europe,Bosnia and Herzegovina,Household,Offline,M,3/1/2012,891681563,3/27/2012,7245,668.27,502.54,4841616.15,3640902.30,1200713.85
+Europe,Kosovo,Beverages,Offline,M,6/8/2012,129169023,7/18/2012,2839,47.45,31.79,134710.55,90251.81,44458.74
+Middle East and North Africa,Israel,Cosmetics,Offline,L,1/1/2010,570716845,1/13/2010,6652,437.20,263.33,2908254.40,1751671.16,1156583.24
+Europe,France,Cereal,Online,C,9/19/2012,764811360,9/30/2012,3532,205.70,117.11,726532.40,413632.52,312899.88
+Sub-Saharan Africa,Zambia,Cosmetics,Online,L,7/29/2010,230251395,9/9/2010,5359,437.20,263.33,2342954.80,1411185.47,931769.33
+Sub-Saharan Africa,Mauritius ,Clothes,Online,H,5/7/2017,806148278,5/29/2017,6045,109.28,35.84,660597.60,216652.80,443944.80
+Europe,Liechtenstein,Vegetables,Offline,C,10/17/2013,801925837,10/26/2013,6531,154.06,90.93,1006165.86,593863.83,412302.03
+Sub-Saharan Africa,Sierra Leone,Cereal,Offline,M,1/14/2012,847320401,2/7/2012,9791,205.70,117.11,2014008.70,1146624.01,867384.69
+Sub-Saharan Africa,Niger,Vegetables,Offline,H,11/23/2013,742380797,12/16/2013,5830,154.06,90.93,898169.80,530121.90,368047.90
+Sub-Saharan Africa,Liberia,Baby Food,Offline,C,9/8/2014,807468354,10/8/2014,6685,255.28,159.42,1706546.80,1065722.70,640824.10
+Central America and the Caribbean,Panama,Vegetables,Offline,H,7/29/2014,533256900,7/31/2014,1422,154.06,90.93,219073.32,129302.46,89770.86
+Asia,Uzbekistan,Cereal,Online,L,10/16/2014,830732762,11/1/2014,1140,205.70,117.11,234498.00,133505.40,100992.60
+Europe,San Marino,Office Supplies,Offline,C,11/5/2013,881194770,12/5/2013,3969,651.21,524.96,2584652.49,2083566.24,501086.25
+Sub-Saharan Africa,Comoros,Snacks,Offline,C,4/26/2011,386254251,5/16/2011,71,152.58,97.44,10833.18,6918.24,3914.94
+Europe,Austria,Vegetables,Offline,C,8/17/2011,917835032,10/6/2011,6637,154.06,90.93,1022496.22,603502.41,418993.81
+Central America and the Caribbean,The Bahamas,Vegetables,Offline,M,9/10/2012,968173444,10/25/2012,2892,154.06,90.93,445541.52,262969.56,182571.96
+Middle East and North Africa,Tunisia ,Personal Care,Offline,L,4/16/2017,899818313,5/5/2017,5090,81.73,56.67,416005.70,288450.30,127555.40
+Australia and Oceania,Tonga,Meat,Online,C,2/7/2014,695630967,2/8/2014,1516,421.89,364.69,639585.24,552870.04,86715.20
+Sub-Saharan Africa,Kenya,Personal Care,Offline,C,10/26/2011,408785235,11/3/2011,7490,81.73,56.67,612157.70,424458.30,187699.40
+North America,Greenland,Baby Food,Online,L,8/11/2012,612767446,8/29/2012,359,255.28,159.42,91645.52,57231.78,34413.74
+Central America and the Caribbean,The Bahamas,Cosmetics,Offline,C,12/11/2015,151376426,1/29/2016,4503,437.20,263.33,1968711.60,1185774.99,782936.61
+Asia,China,Cosmetics,Offline,H,10/5/2014,188723504,11/6/2014,6334,437.20,263.33,2769224.80,1667932.22,1101292.58
+Europe,Switzerland,Fruits,Online,H,6/8/2014,159232509,7/14/2014,9293,9.33,6.92,86703.69,64307.56,22396.13
+Europe,Serbia,Vegetables,Online,L,10/31/2013,917639768,12/14/2013,8854,154.06,90.93,1364047.24,805094.22,558953.02
+Sub-Saharan Africa,Mali,Vegetables,Online,M,9/1/2016,688994109,9/27/2016,7523,154.06,90.93,1158993.38,684066.39,474926.99
+Middle East and North Africa,Qatar,Cosmetics,Offline,M,7/30/2012,918656861,8/17/2012,9835,437.20,263.33,4299862.00,2589850.55,1710011.45
+Sub-Saharan Africa,Sudan,Household,Online,L,3/13/2011,422301852,4/23/2011,7357,668.27,502.54,4916462.39,3697186.78,1219275.61
+Sub-Saharan Africa,Malawi,Office Supplies,Online,L,8/24/2015,335915410,9/23/2015,3689,651.21,524.96,2402313.69,1936577.44,465736.25
+Europe,Lithuania,Fruits,Online,M,3/9/2011,965796363,3/19/2011,9461,9.33,6.92,88271.13,65470.12,22801.01
+Asia,Bhutan,Personal Care,Online,H,6/4/2014,438556039,6/22/2014,7332,81.73,56.67,599244.36,415504.44,183739.92
+Europe,Bosnia and Herzegovina,Baby Food,Online,L,7/16/2016,551118266,8/15/2016,6997,255.28,159.42,1786194.16,1115461.74,670732.42
+Sub-Saharan Africa,Tanzania,Household,Offline,H,5/5/2017,920719373,6/8/2017,178,668.27,502.54,118952.06,89452.12,29499.94
+Sub-Saharan Africa,The Gambia,Fruits,Offline,L,12/4/2013,334908187,12/11/2013,5630,9.33,6.92,52527.90,38959.60,13568.30
+Sub-Saharan Africa,Guinea,Household,Online,H,1/5/2012,801546037,2/15/2012,4139,668.27,502.54,2765969.53,2080013.06,685956.47
+Middle East and North Africa,Jordan,Office Supplies,Offline,C,8/10/2014,798806750,8/22/2014,3524,651.21,524.96,2294864.04,1849959.04,444905.00
+Middle East and North Africa,Iran,Fruits,Offline,M,8/23/2010,225176656,9/6/2010,3631,9.33,6.92,33877.23,25126.52,8750.71
+Europe,Albania,Office Supplies,Online,M,8/10/2016,849454581,9/6/2016,1342,651.21,524.96,873923.82,704496.32,169427.50
+Sub-Saharan Africa,Zimbabwe,Clothes,Offline,M,3/15/2012,460751855,4/27/2012,5568,109.28,35.84,608471.04,199557.12,408913.92
+Australia and Oceania,Fiji,Cosmetics,Offline,L,4/6/2012,518492305,5/21/2012,2250,437.20,263.33,983700.00,592492.50,391207.50
+Asia,Kazakhstan,Vegetables,Online,L,7/20/2017,302412259,8/17/2017,9363,154.06,90.93,1442463.78,851377.59,591086.19
+Europe,Georgia,Cereal,Offline,M,12/14/2010,962560546,1/8/2011,1911,205.70,117.11,393092.70,223797.21,169295.49
+Sub-Saharan Africa,Senegal,Beverages,Online,C,4/16/2014,569298493,5/19/2014,6930,47.45,31.79,328828.50,220304.70,108523.80
+Australia and Oceania,Federated States of Micronesia,Office Supplies,Offline,H,5/15/2016,863299930,6/20/2016,8488,651.21,524.96,5527470.48,4455860.48,1071610.00
+Sub-Saharan Africa,Zambia,Cereal,Online,L,8/21/2014,505551183,9/23/2014,2684,205.70,117.11,552098.80,314323.24,237775.56
+Europe,Liechtenstein,Vegetables,Offline,H,5/23/2011,927351081,6/2/2011,2647,154.06,90.93,407796.82,240691.71,167105.11
+Australia and Oceania,Vanuatu,Office Supplies,Online,C,7/24/2017,480310952,8/11/2017,3539,651.21,524.96,2304632.19,1857833.44,446798.75
+Central America and the Caribbean,Saint Kitts and Nevis ,Personal Care,Offline,C,1/26/2011,286354625,3/11/2011,7552,81.73,56.67,617224.96,427971.84,189253.12
+Middle East and North Africa,Iran,Snacks,Offline,M,5/5/2016,187718427,6/12/2016,8909,152.58,97.44,1359335.22,868092.96,491242.26
+Sub-Saharan Africa,Niger,Personal Care,Online,H,3/19/2017,996951186,4/30/2017,8865,81.73,56.67,724536.45,502379.55,222156.90
+Sub-Saharan Africa,Eritrea,Office Supplies,Offline,H,9/25/2013,446914231,10/1/2013,707,651.21,524.96,460405.47,371146.72,89258.75
+Europe,Luxembourg,Household,Online,H,10/20/2010,840781390,11/13/2010,4752,668.27,502.54,3175619.04,2388070.08,787548.96
+Middle East and North Africa,Tunisia ,Snacks,Online,M,5/19/2014,502038991,7/8/2014,3349,152.58,97.44,510990.42,326326.56,184663.86
+Asia,North Korea,Snacks,Offline,C,7/27/2012,524485862,8/21/2012,5877,152.58,97.44,896712.66,572654.88,324057.78
+Europe,Spain,Vegetables,Online,H,3/31/2017,722233331,4/6/2017,3747,154.06,90.93,577262.82,340714.71,236548.11
+Sub-Saharan Africa,Burkina Faso,Beverages,Offline,C,11/8/2014,979705226,12/16/2014,5402,47.45,31.79,256324.90,171729.58,84595.32
+North America,Mexico,Cosmetics,Offline,H,8/14/2015,801637876,9/9/2015,1316,437.20,263.33,575355.20,346542.28,228812.92
+Europe,Portugal,Meat,Online,H,11/21/2011,663080108,12/10/2011,8994,421.89,364.69,3794478.66,3280021.86,514456.80
+Sub-Saharan Africa,Burkina Faso,Cosmetics,Offline,H,3/29/2012,659393250,4/22/2012,7971,437.20,263.33,3484921.20,2099003.43,1385917.77
+Sub-Saharan Africa,Niger,Household,Online,M,12/11/2014,956251132,1/20/2015,4815,668.27,502.54,3217720.05,2419730.10,797989.95
+Europe,Poland,Cereal,Online,L,10/7/2011,439640080,11/2/2011,8124,205.70,117.11,1671106.80,951401.64,719705.16
+Europe,Romania,Household,Offline,H,6/19/2014,765858924,7/21/2014,3530,668.27,502.54,2358993.10,1773966.20,585026.90
+Sub-Saharan Africa,Burkina Faso,Fruits,Online,C,2/25/2013,511518990,3/16/2013,8691,9.33,6.92,81087.03,60141.72,20945.31
+Europe,Austria,Cereal,Online,M,5/13/2010,123544108,6/22/2010,8302,205.70,117.11,1707721.40,972247.22,735474.18
+Europe,Latvia,Snacks,Offline,M,4/7/2017,569170606,4/13/2017,9085,152.58,97.44,1386189.30,885242.40,500946.90
+Europe,San Marino,Personal Care,Online,L,1/6/2012,185947310,1/27/2012,4796,81.73,56.67,391977.08,271789.32,120187.76
+Sub-Saharan Africa,Zambia,Clothes,Online,H,9/14/2011,531735551,11/2/2011,1221,109.28,35.84,133430.88,43760.64,89670.24
+Europe,Poland,Vegetables,Online,H,7/19/2015,534709155,9/2/2015,1176,154.06,90.93,181174.56,106933.68,74240.88
+Sub-Saharan Africa,Guinea,Household,Online,H,4/4/2016,543354451,4/28/2016,9511,668.27,502.54,6355915.97,4779657.94,1576258.03
+Sub-Saharan Africa,Togo,Meat,Online,C,5/27/2011,976470267,7/10/2011,8106,421.89,364.69,3419840.34,2956177.14,463663.20
+Sub-Saharan Africa,Guinea-Bissau,Baby Food,Offline,C,10/1/2014,973167932,10/22/2014,872,255.28,159.42,222604.16,139014.24,83589.92
+Sub-Saharan Africa,Djibouti,Household,Online,L,8/20/2014,642871272,9/1/2014,8750,668.27,502.54,5847362.50,4397225.00,1450137.50
+Australia and Oceania,Tonga,Snacks,Offline,H,8/10/2015,615316617,9/18/2015,4716,152.58,97.44,719567.28,459527.04,260040.24
+Asia,Uzbekistan,Personal Care,Offline,L,11/29/2011,690552794,12/7/2011,8772,81.73,56.67,716935.56,497109.24,219826.32
+Sub-Saharan Africa,Cameroon,Cereal,Offline,M,1/4/2014,288941133,2/16/2014,2957,205.70,117.11,608254.90,346294.27,261960.63
+North America,Canada,Vegetables,Offline,L,7/1/2014,701155459,7/2/2014,6337,154.06,90.93,976278.22,576223.41,400054.81
+Europe,Netherlands,Office Supplies,Online,C,8/9/2014,138182103,8/16/2014,10,651.21,524.96,6512.10,5249.60,1262.50
+Central America and the Caribbean,El Salvador,Cereal,Offline,M,11/2/2012,481319892,11/25/2012,2107,205.70,117.11,433409.90,246750.77,186659.13
+Asia,North Korea,Fruits,Offline,M,5/8/2016,532180154,5/31/2016,2789,9.33,6.92,26021.37,19299.88,6721.49
+Middle East and North Africa,Turkey,Personal Care,Online,M,6/2/2014,962686717,6/21/2014,9247,81.73,56.67,755757.31,524027.49,231729.82
+Central America and the Caribbean,The Bahamas,Household,Offline,H,7/15/2012,265075910,8/23/2012,707,668.27,502.54,472466.89,355295.78,117171.11
+Sub-Saharan Africa,Cameroon,Fruits,Offline,L,6/21/2013,601896560,8/6/2013,3422,9.33,6.92,31927.26,23680.24,8247.02
+Middle East and North Africa,Yemen,Household,Offline,C,6/26/2013,156009995,7/14/2013,5679,668.27,502.54,3795105.33,2853924.66,941180.67
+Europe,Bulgaria,Meat,Offline,H,9/10/2013,780590045,10/3/2013,2796,421.89,364.69,1179604.44,1019673.24,159931.20
+Sub-Saharan Africa,Djibouti,Beverages,Offline,H,4/8/2016,349123036,5/17/2016,2120,47.45,31.79,100594.00,67394.80,33199.20
+Sub-Saharan Africa,Mauritania,Vegetables,Offline,C,2/6/2013,405407798,3/11/2013,8031,154.06,90.93,1237255.86,730258.83,506997.03
+Sub-Saharan Africa,Ethiopia,Clothes,Online,M,4/12/2012,313555657,5/20/2012,6942,109.28,35.84,758621.76,248801.28,509820.48
+Asia,Sri Lanka,Office Supplies,Offline,L,8/10/2011,407990443,8/31/2011,2293,651.21,524.96,1493224.53,1203733.28,289491.25
+Europe,Greece,Fruits,Online,L,7/9/2017,643448483,7/25/2017,9560,9.33,6.92,89194.80,66155.20,23039.60
+Europe,Ireland,Office Supplies,Online,C,1/6/2011,144978606,2/19/2011,1246,651.21,524.96,811407.66,654100.16,157307.50
+Sub-Saharan Africa,Tanzania,Meat,Offline,M,1/9/2012,357942140,2/16/2012,1888,421.89,364.69,796528.32,688534.72,107993.60
+Asia,Kazakhstan,Meat,Offline,C,1/10/2015,998012912,1/31/2015,3054,421.89,364.69,1288452.06,1113763.26,174688.80
+Sub-Saharan Africa,South Africa,Baby Food,Online,M,7/30/2015,501177251,8/28/2015,8341,255.28,159.42,2129290.48,1329722.22,799568.26
+Sub-Saharan Africa,Liberia,Clothes,Offline,L,1/29/2014,973733985,3/6/2014,8380,109.28,35.84,915766.40,300339.20,615427.20
+Asia,Taiwan,Fruits,Online,H,1/2/2012,542294442,1/30/2012,5831,9.33,6.92,54403.23,40350.52,14052.71
+North America,Greenland,Baby Food,Offline,H,8/31/2015,103782451,10/1/2015,388,255.28,159.42,99048.64,61854.96,37193.68
+Sub-Saharan Africa,Angola,Vegetables,Offline,H,4/21/2017,175434339,5/26/2017,3774,154.06,90.93,581422.44,343169.82,238252.62
+Europe,Portugal,Household,Online,M,1/4/2014,444798934,1/20/2014,4744,668.27,502.54,3170272.88,2384049.76,786223.12
+Sub-Saharan Africa,Mauritius ,Cosmetics,Offline,L,7/7/2011,219737565,7/21/2011,4083,437.20,263.33,1785087.60,1075176.39,709911.21
+Australia and Oceania,Tonga,Cereal,Online,H,10/25/2012,678424060,11/3/2012,9610,205.70,117.11,1976777.00,1125427.10,851349.90
+Asia,Turkmenistan,Office Supplies,Online,M,6/2/2014,819344747,7/14/2014,1173,651.21,524.96,763869.33,615778.08,148091.25
+Sub-Saharan Africa,Liberia,Vegetables,Online,H,2/5/2010,611298453,3/20/2010,5652,154.06,90.93,870747.12,513936.36,356810.76
+Europe,Liechtenstein,Meat,Online,C,5/31/2017,543396508,6/5/2017,1957,421.89,364.69,825638.73,713698.33,111940.40
+Sub-Saharan Africa,Madagascar,Cereal,Offline,H,5/4/2013,275062739,5/16/2013,6032,205.70,117.11,1240782.40,706407.52,534374.88
+Sub-Saharan Africa,Cameroon,Personal Care,Online,C,10/13/2013,886033475,10/20/2013,5850,81.73,56.67,478120.50,331519.50,146601.00
+Middle East and North Africa,Israel,Beverages,Online,L,10/10/2016,826357543,11/3/2016,6415,47.45,31.79,304391.75,203932.85,100458.90
+Europe,Austria,Meat,Online,H,11/6/2013,866396272,11/16/2013,4765,421.89,364.69,2010305.85,1737747.85,272558.00
+Europe,Ireland,Cereal,Online,H,7/12/2016,946823489,8/30/2016,4966,205.70,117.11,1021506.20,581568.26,439937.94
+Sub-Saharan Africa,Ethiopia,Baby Food,Offline,L,9/8/2014,628625524,10/18/2014,3117,255.28,159.42,795707.76,496912.14,298795.62
+Asia,South Korea,Household,Offline,H,8/14/2010,443101203,9/1/2010,2347,668.27,502.54,1568429.69,1179461.38,388968.31
+Sub-Saharan Africa,Sierra Leone,Vegetables,Online,H,4/5/2015,541861855,5/9/2015,7819,154.06,90.93,1204595.14,710981.67,493613.47
+Asia,Uzbekistan,Office Supplies,Online,H,2/6/2014,246831309,3/5/2014,1724,651.21,524.96,1122686.04,905031.04,217655.00
+Sub-Saharan Africa,Chad,Snacks,Online,C,6/3/2016,300245893,7/19/2016,8287,152.58,97.44,1264430.46,807485.28,456945.18
+Sub-Saharan Africa,Malawi,Snacks,Offline,C,8/19/2013,614654433,9/20/2013,8761,152.58,97.44,1336753.38,853671.84,483081.54
+Central America and the Caribbean,Antigua and Barbuda ,Fruits,Online,H,5/10/2013,722918260,6/16/2013,6433,9.33,6.92,60019.89,44516.36,15503.53
+Europe,San Marino,Cosmetics,Online,H,11/30/2012,228211200,12/3/2012,1620,437.20,263.33,708264.00,426594.60,281669.40
+Australia and Oceania,Samoa ,Vegetables,Offline,L,9/14/2010,154019582,10/18/2010,6672,154.06,90.93,1027888.32,606684.96,421203.36
+Sub-Saharan Africa,Niger,Personal Care,Online,M,7/15/2017,694142234,8/7/2017,967,81.73,56.67,79032.91,54799.89,24233.02
+Sub-Saharan Africa,Gabon,Office Supplies,Offline,C,1/2/2015,762690484,1/28/2015,5918,651.21,524.96,3853860.78,3106713.28,747147.50
+Sub-Saharan Africa,Mali,Household,Online,H,4/6/2012,244088160,5/13/2012,9966,668.27,502.54,6659978.82,5008313.64,1651665.18
+Australia and Oceania,Nauru,Clothes,Offline,L,12/20/2011,443071591,1/1/2012,3585,109.28,35.84,391768.80,128486.40,263282.40
+Central America and the Caribbean,The Bahamas,Cereal,Online,H,1/17/2014,934689605,1/17/2014,4280,205.70,117.11,880396.00,501230.80,379165.20
+Sub-Saharan Africa,South Africa,Cereal,Offline,L,12/3/2011,914303529,12/11/2011,1587,205.70,117.11,326445.90,185853.57,140592.33
+Europe,Vatican City,Cereal,Online,M,6/9/2011,547587192,7/14/2011,2073,205.70,117.11,426416.10,242769.03,183647.07
+Asia,Kyrgyzstan,Fruits,Offline,H,12/7/2011,520526921,1/15/2012,4338,9.33,6.92,40473.54,30018.96,10454.58
+Europe,Italy,Clothes,Online,H,1/10/2010,689421546,1/31/2010,4011,109.28,35.84,438322.08,143754.24,294567.84
+Europe,Croatia,Meat,Online,M,12/21/2010,530882394,2/2/2011,8753,421.89,364.69,3692803.17,3192131.57,500671.60
+Asia,North Korea,Clothes,Online,L,4/19/2017,491833293,4/23/2017,3256,109.28,35.84,355815.68,116695.04,239120.64
+Sub-Saharan Africa,Cameroon,Cereal,Online,H,6/18/2017,639510571,7/9/2017,4244,205.70,117.11,872990.80,497014.84,375975.96
+Sub-Saharan Africa,Comoros,Personal Care,Offline,C,5/3/2012,211463057,6/15/2012,5473,81.73,56.67,447308.29,310154.91,137153.38
+Europe,Slovakia,Snacks,Offline,M,6/10/2011,765552079,7/17/2011,2727,152.58,97.44,416085.66,265718.88,150366.78
+Sub-Saharan Africa,Lesotho,Household,Online,C,12/28/2013,329951465,1/2/2014,8825,668.27,502.54,5897482.75,4434915.50,1462567.25
+Middle East and North Africa,Turkey,Meat,Offline,C,9/11/2012,153147542,9/27/2012,8616,421.89,364.69,3635004.24,3142169.04,492835.20
+Australia and Oceania,Federated States of Micronesia,Baby Food,Offline,H,9/12/2012,653939139,10/6/2012,3978,255.28,159.42,1015503.84,634172.76,381331.08
+Sub-Saharan Africa,Madagascar,Office Supplies,Offline,H,8/15/2012,971437585,10/2/2012,8824,651.21,524.96,5746277.04,4632247.04,1114030.00
+Asia,Turkmenistan,Fruits,Offline,L,12/13/2015,315066707,1/26/2016,4095,9.33,6.92,38206.35,28337.40,9868.95
+Middle East and North Africa,Bahrain,Household,Online,C,1/29/2012,214562833,3/2/2012,2765,668.27,502.54,1847766.55,1389523.10,458243.45
+Europe,Sweden,Baby Food,Offline,M,5/26/2010,469974792,6/17/2010,4840,255.28,159.42,1235555.20,771592.80,463962.40
+Central America and the Caribbean,Saint Vincent and the Grenadines,Fruits,Offline,H,10/22/2013,501663911,11/25/2013,2354,9.33,6.92,21962.82,16289.68,5673.14
+Europe,Slovenia,Personal Care,Offline,M,11/23/2014,700304019,12/21/2014,4376,81.73,56.67,357650.48,247987.92,109662.56
+Sub-Saharan Africa,Mauritania,Snacks,Offline,L,11/21/2014,176881444,12/19/2014,2005,152.58,97.44,305922.90,195367.20,110555.70
+Sub-Saharan Africa,Kenya,Baby Food,Online,H,4/20/2012,812695014,6/4/2012,3369,255.28,159.42,860038.32,537085.98,322952.34
+Europe,Norway,Clothes,Online,H,4/14/2014,509356057,4/17/2014,8631,109.28,35.84,943195.68,309335.04,633860.64
+Europe,Armenia,Baby Food,Offline,M,2/10/2010,838788402,2/26/2010,4983,255.28,159.42,1272060.24,794389.86,477670.38
+Central America and the Caribbean,Honduras,Fruits,Offline,H,11/7/2012,293228375,11/17/2012,1647,9.33,6.92,15366.51,11397.24,3969.27
+Middle East and North Africa,Israel,Cereal,Online,C,2/15/2010,135224807,4/6/2010,4880,205.70,117.11,1003816.00,571496.80,432319.20
+Central America and the Caribbean,Haiti,Cereal,Offline,M,5/5/2013,347639024,5/18/2013,2967,205.70,117.11,610311.90,347465.37,262846.53
+Sub-Saharan Africa,Zambia,Household,Online,C,1/16/2016,983644855,1/31/2016,1226,668.27,502.54,819299.02,616114.04,203184.98
+Australia and Oceania,Solomon Islands,Baby Food,Online,H,10/29/2012,816728627,12/5/2012,7005,255.28,159.42,1788236.40,1116737.10,671499.30
+Asia,Thailand,Personal Care,Offline,C,9/24/2010,490689170,11/9/2010,4684,81.73,56.67,382823.32,265442.28,117381.04
+North America,Canada,Office Supplies,Offline,C,4/10/2010,269637811,5/1/2010,675,651.21,524.96,439566.75,354348.00,85218.75
+Sub-Saharan Africa,Guinea,Clothes,Offline,M,10/28/2016,487998378,12/1/2016,8419,109.28,35.84,920028.32,301736.96,618291.36
+Europe,Bulgaria,Office Supplies,Offline,C,2/9/2014,200507199,2/25/2014,3391,651.21,524.96,2208253.11,1780139.36,428113.75
+Asia,Bhutan,Household,Online,M,5/29/2013,332213103,7/7/2013,8095,668.27,502.54,5409645.65,4068061.30,1341584.35
+Central America and the Caribbean,Honduras,Baby Food,Online,M,12/9/2011,528477418,1/14/2012,7067,255.28,159.42,1804063.76,1126621.14,677442.62
+Europe,Andorra,Meat,Online,M,10/3/2011,504973971,11/2/2011,1875,421.89,364.69,791043.75,683793.75,107250.00
+Asia,Bhutan,Clothes,Online,M,12/25/2015,497689092,12/31/2015,6117,109.28,35.84,668465.76,219233.28,449232.48
+Middle East and North Africa,Somalia,Meat,Online,H,6/13/2017,812921607,7/22/2017,423,421.89,364.69,178459.47,154263.87,24195.60
+Europe,Armenia,Cereal,Offline,H,1/20/2010,477282845,2/4/2010,7455,205.70,117.11,1533493.50,873055.05,660438.45
+Sub-Saharan Africa,Niger,Fruits,Online,C,4/6/2015,387696635,4/16/2015,6905,9.33,6.92,64423.65,47782.60,16641.05
+Europe,Slovakia,Cosmetics,Online,L,3/1/2010,161399304,3/15/2010,496,437.20,263.33,216851.20,130611.68,86239.52
+Middle East and North Africa,Pakistan,Vegetables,Online,M,7/27/2014,385939681,7/29/2014,6983,154.06,90.93,1075800.98,634964.19,440836.79
+Australia and Oceania,East Timor,Snacks,Offline,M,6/28/2011,369179093,7/14/2011,7153,152.58,97.44,1091404.74,696988.32,394416.42
+Sub-Saharan Africa,Rwanda,Baby Food,Offline,L,7/1/2011,389291369,8/4/2011,8822,255.28,159.42,2252080.16,1406403.24,845676.92
+Middle East and North Africa,Afghanistan,Snacks,Offline,L,2/4/2011,344762837,3/24/2011,1840,152.58,97.44,280747.20,179289.60,101457.60
+Europe,Hungary,Office Supplies,Online,H,8/20/2011,204392325,9/26/2011,3086,651.21,524.96,2009634.06,1620026.56,389607.50
+Australia and Oceania,Nauru,Meat,Online,L,7/11/2015,457291162,8/27/2015,1472,421.89,364.69,621022.08,536823.68,84198.40
+Sub-Saharan Africa,Cote d'Ivoire,Cosmetics,Online,C,11/22/2014,762883174,11/29/2014,2939,437.20,263.33,1284930.80,773926.87,511003.93
+Europe,Latvia,Cereal,Offline,M,6/28/2010,400904691,7/12/2010,5462,205.70,117.11,1123533.40,639654.82,483878.58
+Asia,Mongolia,Beverages,Online,H,7/3/2015,521404540,7/4/2015,4045,47.45,31.79,191935.25,128590.55,63344.70
+Sub-Saharan Africa,Kenya,Vegetables,Offline,M,11/19/2013,994744050,12/4/2013,5725,154.06,90.93,881993.50,520574.25,361419.25
+Sub-Saharan Africa,South Africa,Beverages,Offline,M,2/28/2017,861597049,4/9/2017,4568,47.45,31.79,216751.60,145216.72,71534.88
+Central America and the Caribbean,Saint Lucia,Baby Food,Online,H,3/18/2015,582949864,4/10/2015,6674,255.28,159.42,1703738.72,1063969.08,639769.64
+Sub-Saharan Africa,Guinea,Cosmetics,Online,L,4/27/2010,690101325,4/30/2010,5173,437.20,263.33,2261635.60,1362206.09,899429.51
+Sub-Saharan Africa,Malawi,Meat,Offline,L,6/6/2013,434662759,7/5/2013,5224,421.89,364.69,2203953.36,1905140.56,298812.80
+Sub-Saharan Africa,Central African Republic,Office Supplies,Offline,L,1/11/2010,938557994,2/18/2010,9022,651.21,524.96,5875216.62,4736189.12,1139027.50
+Europe,Belgium,Beverages,Offline,L,12/21/2016,244023358,1/22/2017,789,47.45,31.79,37438.05,25082.31,12355.74
+Sub-Saharan Africa,Niger,Fruits,Online,L,7/11/2010,963607680,7/11/2010,1781,9.33,6.92,16616.73,12324.52,4292.21
+Europe,Moldova ,Cosmetics,Online,H,6/13/2013,830172288,7/29/2013,5283,437.20,263.33,2309727.60,1391172.39,918555.21
+Central America and the Caribbean,Grenada,Beverages,Online,M,7/2/2015,346891009,7/12/2015,1613,47.45,31.79,76536.85,51277.27,25259.58
+Sub-Saharan Africa,Gabon,Baby Food,Online,H,1/27/2015,537250173,3/15/2015,3120,255.28,159.42,796473.60,497390.40,299083.20
+Sub-Saharan Africa,Burundi,Office Supplies,Offline,M,5/28/2015,695048606,7/17/2015,9183,651.21,524.96,5980061.43,4820707.68,1159353.75
+Asia,Malaysia,Clothes,Offline,H,3/26/2013,634397637,4/19/2013,1213,109.28,35.84,132556.64,43473.92,89082.72
+Australia and Oceania,Vanuatu,Personal Care,Offline,L,2/23/2010,239721095,3/9/2010,7654,81.73,56.67,625561.42,433752.18,191809.24
+Europe,Moldova ,Meat,Offline,L,5/13/2016,815755307,6/9/2016,8978,421.89,364.69,3787728.42,3274186.82,513541.60
+Sub-Saharan Africa,Cote d'Ivoire,Beverages,Offline,L,9/4/2016,137549102,9/13/2016,2691,47.45,31.79,127687.95,85546.89,42141.06
+Asia,Turkmenistan,Fruits,Online,M,1/28/2012,100463807,2/18/2012,8328,9.33,6.92,77700.24,57629.76,20070.48
+Europe,Austria,Clothes,Online,M,12/23/2015,870173251,12/30/2015,2457,109.28,35.84,268500.96,88058.88,180442.08
+Sub-Saharan Africa,Cote d'Ivoire,Personal Care,Offline,C,7/28/2012,432663762,8/27/2012,3677,81.73,56.67,300521.21,208375.59,92145.62
+Europe,Greece,Baby Food,Online,M,8/19/2013,444234168,9/27/2013,7617,255.28,159.42,1944467.76,1214302.14,730165.62
+Asia,Brunei,Baby Food,Offline,M,10/31/2016,381495797,12/15/2016,1939,255.28,159.42,494987.92,309115.38,185872.54
+Sub-Saharan Africa,South Sudan,Meat,Offline,C,2/17/2017,691372478,4/7/2017,1335,421.89,364.69,563223.15,486861.15,76362.00
+Asia,North Korea,Meat,Offline,M,7/23/2010,541100537,8/6/2010,2528,421.89,364.69,1066537.92,921936.32,144601.60
+Asia,Bhutan,Snacks,Online,L,2/18/2013,968228805,4/3/2013,9274,152.58,97.44,1415026.92,903658.56,511368.36
+Asia,Thailand,Cosmetics,Offline,L,8/27/2011,830618607,8/29/2011,7359,437.20,263.33,3217354.80,1937845.47,1279509.33
+Middle East and North Africa,Iran,Cosmetics,Offline,H,11/27/2012,856443774,1/10/2013,9600,437.20,263.33,4197120.00,2527968.00,1669152.00
+Sub-Saharan Africa,Mali,Meat,Offline,L,3/8/2017,494190633,4/13/2017,845,421.89,364.69,356497.05,308163.05,48334.00
+Asia,Kyrgyzstan,Household,Offline,C,6/21/2014,162658011,7/24/2014,2975,668.27,502.54,1988103.25,1495056.50,493046.75
+Sub-Saharan Africa,South Sudan,Baby Food,Offline,L,12/21/2010,800957238,12/23/2010,9901,255.28,159.42,2527527.28,1578417.42,949109.86
+Central America and the Caribbean,Dominica,Beverages,Offline,C,3/1/2010,718512141,3/4/2010,2564,47.45,31.79,121661.80,81509.56,40152.24
+Europe,Liechtenstein,Clothes,Offline,H,8/4/2016,545059049,8/8/2016,3940,109.28,35.84,430563.20,141209.60,289353.60
+Australia and Oceania,Fiji,Household,Offline,L,12/7/2016,980646789,12/20/2016,4032,668.27,502.54,2694464.64,2026241.28,668223.36
+Sub-Saharan Africa,Botswana,Household,Offline,H,1/29/2014,545636689,2/1/2014,4876,668.27,502.54,3258484.52,2450385.04,808099.48
+Europe,United Kingdom,Baby Food,Offline,M,10/7/2015,530702579,11/9/2015,5541,255.28,159.42,1414506.48,883346.22,531160.26
+Middle East and North Africa,Syria,Meat,Offline,C,8/25/2015,946830785,9/20/2015,7125,421.89,364.69,3005966.25,2598416.25,407550.00
+Asia,China,Cereal,Offline,H,3/29/2012,975320136,5/12/2012,7757,205.70,117.11,1595614.90,908422.27,687192.63
+Sub-Saharan Africa,Zimbabwe,Meat,Offline,M,9/9/2012,317781960,9/20/2012,7599,421.89,364.69,3205942.11,2771279.31,434662.80
+Europe,Iceland,Personal Care,Offline,L,11/7/2013,546140086,12/19/2013,3843,81.73,56.67,314088.39,217782.81,96305.58
+Sub-Saharan Africa,Eritrea,Beverages,Offline,L,8/22/2013,152630841,9/1/2013,5713,47.45,31.79,271081.85,181616.27,89465.58
+Sub-Saharan Africa,Ethiopia,Cosmetics,Offline,M,10/29/2014,399803054,11/30/2014,9463,437.20,263.33,4137223.60,2491891.79,1645331.81
+Asia,Cambodia,Household,Offline,H,9/3/2013,370518052,10/9/2013,3380,668.27,502.54,2258752.60,1698585.20,560167.40
+Central America and the Caribbean,Barbados,Beverages,Offline,C,4/17/2011,117949664,5/24/2011,2782,47.45,31.79,132005.90,88439.78,43566.12
+Europe,Belarus,Vegetables,Offline,M,6/7/2017,215584218,6/21/2017,5016,154.06,90.93,772764.96,456104.88,316660.08
+Europe,Sweden,Cereal,Online,L,5/29/2016,407220542,7/4/2016,4463,205.70,117.11,918039.10,522661.93,395377.17
+Europe,Ireland,Vegetables,Online,L,4/24/2016,956969964,5/27/2016,7533,154.06,90.93,1160533.98,684975.69,475558.29
+Europe,Slovenia,Fruits,Online,L,12/11/2014,399256312,1/5/2015,7670,9.33,6.92,71561.10,53076.40,18484.70
+Europe,Croatia,Snacks,Offline,M,3/3/2011,488815915,4/17/2011,347,152.58,97.44,52945.26,33811.68,19133.58
+Sub-Saharan Africa,Chad,Cereal,Online,M,4/11/2016,350697600,4/23/2016,8068,205.70,117.11,1659587.60,944843.48,714744.12
+Europe,Lithuania,Clothes,Offline,C,4/29/2012,530262696,5/11/2012,5370,109.28,35.84,586833.60,192460.80,394372.80
+Central America and the Caribbean,Barbados,Clothes,Offline,M,7/12/2016,743185031,7/29/2016,3821,109.28,35.84,417558.88,136944.64,280614.24
+Middle East and North Africa,Libya,Household,Online,C,11/9/2016,325450932,11/20/2016,7018,668.27,502.54,4689918.86,3526825.72,1163093.14
+Sub-Saharan Africa,Gabon,Vegetables,Offline,H,9/20/2013,483359229,10/10/2013,5592,154.06,90.93,861503.52,508480.56,353022.96
+Europe,Switzerland,Cosmetics,Online,L,2/26/2016,243521249,3/28/2016,2204,437.20,263.33,963588.80,580379.32,383209.48
+Middle East and North Africa,Jordan,Household,Offline,C,5/3/2015,502860820,5/21/2015,6546,668.27,502.54,4374495.42,3289626.84,1084868.58
+Europe,Iceland,Cosmetics,Online,M,1/27/2011,878614270,2/17/2011,342,437.20,263.33,149522.40,90058.86,59463.54
+Asia,South Korea,Cosmetics,Offline,C,8/9/2015,158330428,8/25/2015,2347,437.20,263.33,1026108.40,618035.51,408072.89
+Asia,Philippines,Clothes,Online,M,12/8/2011,349870622,1/23/2012,3347,109.28,35.84,365760.16,119956.48,245803.68
+Sub-Saharan Africa,Guinea,Cosmetics,Online,M,8/26/2010,831408679,10/2/2010,1159,437.20,263.33,506714.80,305199.47,201515.33
+Middle East and North Africa,Qatar,Office Supplies,Online,H,10/26/2015,601430928,11/26/2015,5632,651.21,524.96,3667614.72,2956574.72,711040.00
+Asia,Brunei,Household,Online,M,8/22/2013,528736197,8/31/2013,3645,668.27,502.54,2435844.15,1831758.30,604085.85
+Central America and the Caribbean,Belize,Clothes,Online,C,2/9/2014,202435815,2/24/2014,4111,109.28,35.84,449250.08,147338.24,301911.84
+Sub-Saharan Africa,Republic of the Congo,Meat,Offline,C,11/30/2016,181953608,12/31/2016,2971,421.89,364.69,1253435.19,1083493.99,169941.20
+Middle East and North Africa,Egypt,Clothes,Offline,M,3/30/2015,647025907,3/30/2015,8199,109.28,35.84,895986.72,293852.16,602134.56
+Asia,Kazakhstan,Cosmetics,Offline,C,9/13/2014,947701537,9/20/2014,4800,437.20,263.33,2098560.00,1263984.00,834576.00
+Europe,Denmark,Vegetables,Offline,H,5/23/2014,954341828,7/11/2014,9809,154.06,90.93,1511174.54,891932.37,619242.17
+Europe,Moldova ,Beverages,Online,H,9/12/2010,607620608,9/20/2010,7296,47.45,31.79,346195.20,231939.84,114255.36
+Central America and the Caribbean,Guatemala,Fruits,Offline,C,3/16/2016,368524205,4/21/2016,3357,9.33,6.92,31320.81,23230.44,8090.37
+North America,United States of America,Snacks,Online,M,6/30/2010,768351447,7/17/2010,1123,152.58,97.44,171347.34,109425.12,61922.22
+Sub-Saharan Africa,Madagascar,Snacks,Offline,M,1/27/2012,158713662,1/28/2012,5754,152.58,97.44,877945.32,560669.76,317275.56
+Europe,Cyprus,Personal Care,Online,L,1/2/2014,561534678,1/29/2014,9445,81.73,56.67,771939.85,535248.15,236691.70
+Australia and Oceania,Nauru,Fruits,Offline,L,6/5/2010,919050824,7/21/2010,6417,9.33,6.92,59870.61,44405.64,15464.97
+Australia and Oceania,East Timor,Snacks,Online,C,6/18/2015,243810927,8/4/2015,7926,152.58,97.44,1209349.08,772309.44,437039.64
+Europe,Hungary,Vegetables,Offline,L,1/6/2014,768676316,2/8/2014,7259,154.06,90.93,1118321.54,660060.87,458260.67
+Sub-Saharan Africa,Liberia,Snacks,Online,C,12/27/2010,296820819,2/10/2011,4731,152.58,97.44,721855.98,460988.64,260867.34
+Central America and the Caribbean,Grenada,Beverages,Offline,C,5/4/2012,751730763,6/11/2012,2693,47.45,31.79,127782.85,85610.47,42172.38
+Central America and the Caribbean,Dominican Republic,Meat,Online,L,9/29/2013,527204978,10/3/2013,523,421.89,364.69,220648.47,190732.87,29915.60
+Europe,Norway,Cosmetics,Offline,L,12/9/2011,337354791,1/28/2012,9634,437.20,263.33,4211984.80,2536921.22,1675063.58
+Middle East and North Africa,Tunisia ,Clothes,Online,M,1/28/2016,966604030,2/16/2016,8467,109.28,35.84,925273.76,303457.28,621816.48
+Australia and Oceania,Papua New Guinea,Office Supplies,Offline,L,8/30/2013,119689023,9/19/2013,7497,651.21,524.96,4882121.37,3935625.12,946496.25
+Australia and Oceania,Federated States of Micronesia,Baby Food,Offline,H,3/16/2012,971658599,5/3/2012,4227,255.28,159.42,1079068.56,673868.34,405200.22
+Europe,Norway,Meat,Offline,M,9/12/2012,917874085,9/23/2012,8194,421.89,364.69,3456966.66,2988269.86,468696.80
+Asia,Sri Lanka,Personal Care,Offline,H,5/31/2013,124009311,6/8/2013,5966,81.73,56.67,487601.18,338093.22,149507.96
+Europe,Poland,Cereal,Online,C,9/8/2013,176050603,10/28/2013,6140,205.70,117.11,1262998.00,719055.40,543942.60
+Europe,Lithuania,Meat,Offline,C,2/20/2010,930296790,3/26/2010,4348,421.89,364.69,1834377.72,1585672.12,248705.60
+Sub-Saharan Africa,Guinea-Bissau,Personal Care,Online,M,8/6/2015,963359200,8/30/2015,8250,81.73,56.67,674272.50,467527.50,206745.00
+Sub-Saharan Africa,Ghana,Meat,Offline,L,6/10/2017,722161662,6/29/2017,2539,421.89,364.69,1071178.71,925947.91,145230.80
+Europe,Romania,Cereal,Online,L,9/14/2011,273940503,10/19/2011,3937,205.70,117.11,809840.90,461062.07,348778.83
+Europe,Greece,Fruits,Offline,C,5/28/2014,656244552,6/19/2014,6201,9.33,6.92,57855.33,42910.92,14944.41
+Sub-Saharan Africa,Namibia,Personal Care,Offline,M,5/3/2012,726935136,6/19/2012,5116,81.73,56.67,418130.68,289923.72,128206.96
+Central America and the Caribbean,Nicaragua,Beverages,Online,L,4/19/2012,314186084,4/30/2012,3499,47.45,31.79,166027.55,111233.21,54794.34
+Europe,Macedonia,Household,Online,C,7/28/2014,666483724,8/31/2014,6199,668.27,502.54,4142605.73,3115245.46,1027360.27
+Middle East and North Africa,Saudi Arabia,Meat,Online,C,9/19/2016,402626883,10/8/2016,5097,421.89,364.69,2150373.33,1858824.93,291548.40
+Asia,China,Clothes,Online,M,5/14/2017,461726891,6/19/2017,4103,109.28,35.84,448375.84,147051.52,301324.32
+Asia,Sri Lanka,Snacks,Offline,L,6/4/2012,953207576,7/15/2012,4159,152.58,97.44,634580.22,405252.96,229327.26
+Sub-Saharan Africa,Chad,Baby Food,Online,L,1/4/2014,706805264,1/7/2014,8239,255.28,159.42,2103251.92,1313461.38,789790.54
+Europe,Malta,Meat,Online,H,5/15/2016,422568786,6/17/2016,6349,421.89,364.69,2678579.61,2315416.81,363162.80
+Sub-Saharan Africa,The Gambia,Vegetables,Offline,L,10/28/2014,420859467,10/28/2014,524,154.06,90.93,80727.44,47647.32,33080.12
+Central America and the Caribbean,Guatemala,Personal Care,Offline,C,2/8/2017,192351138,2/24/2017,9831,81.73,56.67,803487.63,557122.77,246364.86
+Sub-Saharan Africa,Equatorial Guinea,Vegetables,Online,H,11/17/2016,648030126,11/19/2016,5370,154.06,90.93,827302.20,488294.10,339008.10
+Europe,Denmark,Vegetables,Online,L,8/26/2012,969195258,9/17/2012,5269,154.06,90.93,811742.14,479110.17,332631.97
+Europe,Netherlands,Office Supplies,Online,C,7/29/2011,857457864,9/16/2011,9691,651.21,524.96,6310876.11,5087387.36,1223488.75
+North America,Canada,Office Supplies,Online,M,6/29/2010,984741771,8/13/2010,5828,651.21,524.96,3795251.88,3059466.88,735785.00
+Australia and Oceania,East Timor,Snacks,Online,H,11/26/2014,743283307,1/4/2015,2903,152.58,97.44,442939.74,282868.32,160071.42
+Europe,Hungary,Vegetables,Online,M,6/5/2012,495631301,7/18/2012,7171,154.06,90.93,1104764.26,652059.03,452705.23
+Europe,Slovakia,Office Supplies,Offline,H,6/23/2014,224647080,7/30/2014,6918,651.21,524.96,4505070.78,3631673.28,873397.50
+Europe,Armenia,Office Supplies,Offline,H,8/3/2014,883504474,9/8/2014,7462,651.21,524.96,4859329.02,3917251.52,942077.50
+Sub-Saharan Africa,Botswana,Clothes,Online,C,12/9/2014,345689809,12/28/2014,6151,109.28,35.84,672181.28,220451.84,451729.44
+Australia and Oceania,Federated States of Micronesia,Clothes,Online,M,12/26/2014,155001914,12/30/2014,7366,109.28,35.84,804956.48,263997.44,540959.04
+Europe,Austria,Office Supplies,Offline,C,4/3/2015,575552117,4/26/2015,7516,651.21,524.96,4894494.36,3945599.36,948895.00
+Europe,Andorra,Baby Food,Offline,H,7/15/2013,141764247,8/29/2013,46,255.28,159.42,11742.88,7333.32,4409.56
+Europe,Italy,Vegetables,Offline,M,4/11/2016,608374631,4/12/2016,428,154.06,90.93,65937.68,38918.04,27019.64
+Europe,Portugal,Household,Online,L,1/17/2012,200432097,1/31/2012,1167,668.27,502.54,779871.09,586464.18,193406.91
+Middle East and North Africa,United Arab Emirates,Household,Online,L,3/10/2013,363297975,3/27/2013,6799,668.27,502.54,4543567.73,3416769.46,1126798.27
+Australia and Oceania,Australia,Cosmetics,Offline,L,3/16/2014,812646090,4/17/2014,8892,437.20,263.33,3887582.40,2341530.36,1546052.04
+Europe,Romania,Snacks,Offline,M,8/21/2010,884462773,10/5/2010,1044,152.58,97.44,159293.52,101727.36,57566.16
+Europe,Czech Republic,Office Supplies,Offline,M,6/19/2010,885046851,7/19/2010,3886,651.21,524.96,2530602.06,2039994.56,490607.50
+Sub-Saharan Africa,Mali,Vegetables,Offline,L,2/25/2015,741009652,3/21/2015,78,154.06,90.93,12016.68,7092.54,4924.14
+Central America and the Caribbean,Guatemala,Fruits,Online,M,11/18/2015,449275004,11/21/2015,9313,9.33,6.92,86890.29,64445.96,22444.33
+Europe,Czech Republic,Vegetables,Online,M,6/14/2012,527079236,6/20/2012,3314,154.06,90.93,510554.84,301342.02,209212.82
+Australia and Oceania,Marshall Islands,Cosmetics,Offline,L,2/9/2017,661971175,2/18/2017,836,437.20,263.33,365499.20,220143.88,145355.32
+Europe,Denmark,Clothes,Online,C,11/9/2012,161812150,11/12/2012,2666,109.28,35.84,291340.48,95549.44,195791.04
+Sub-Saharan Africa,Gabon,Office Supplies,Online,L,4/12/2010,204775989,4/29/2010,6620,651.21,524.96,4311010.20,3475235.20,835775.00
+Europe,Hungary,Cosmetics,Offline,H,6/10/2013,689349019,7/23/2013,2548,437.20,263.33,1113985.60,670964.84,443020.76
+Sub-Saharan Africa,Democratic Republic of the Congo,Cosmetics,Offline,H,2/15/2016,684330070,2/25/2016,7330,437.20,263.33,3204676.00,1930208.90,1274467.10
+Middle East and North Africa,Syria,Cereal,Online,M,3/2/2013,678830468,3/15/2013,9876,205.70,117.11,2031493.20,1156578.36,874914.84
+Sub-Saharan Africa,Ghana,Baby Food,Offline,H,11/3/2011,332274043,12/5/2011,6128,255.28,159.42,1564355.84,976925.76,587430.08
+Asia,Bhutan,Personal Care,Online,M,11/23/2012,724397122,12/7/2012,4061,81.73,56.67,331905.53,230136.87,101768.66
+Asia,Laos,Personal Care,Online,H,5/16/2014,305248534,6/26/2014,8679,81.73,56.67,709334.67,491838.93,217495.74
+Australia and Oceania,Nauru,Meat,Offline,M,5/17/2015,745189607,5/26/2015,7019,421.89,364.69,2961245.91,2559759.11,401486.80
+Asia,Kazakhstan,Cereal,Offline,H,4/11/2012,184894168,4/16/2012,3148,205.70,117.11,647543.60,368662.28,278881.32
+Central America and the Caribbean,Panama,Household,Online,C,2/6/2010,885348546,3/4/2010,3164,668.27,502.54,2114406.28,1590036.56,524369.72
+Europe,Italy,Household,Offline,M,2/22/2011,677851569,3/2/2011,198,668.27,502.54,132317.46,99502.92,32814.54
+Sub-Saharan Africa,Senegal,Vegetables,Online,L,3/11/2011,614014565,3/13/2011,9410,154.06,90.93,1449704.60,855651.30,594053.30
+Asia,Bangladesh,Baby Food,Online,C,11/19/2010,915761363,1/3/2011,2992,255.28,159.42,763797.76,476984.64,286813.12
+Sub-Saharan Africa,Benin,Clothes,Online,H,12/4/2011,525328290,1/11/2012,5170,109.28,35.84,564977.60,185292.80,379684.80
+Asia,Mongolia,Household,Offline,M,4/19/2013,255264174,5/10/2013,7197,668.27,502.54,4809539.19,3616780.38,1192758.81
+Europe,Hungary,Clothes,Offline,H,1/21/2015,538430345,3/10/2015,2359,109.28,35.84,257791.52,84546.56,173244.96
+Asia,Kazakhstan,Beverages,Online,C,7/9/2014,978000628,7/16/2014,974,47.45,31.79,46216.30,30963.46,15252.84
+Europe,Switzerland,Beverages,Online,H,1/30/2010,797461354,2/5/2010,5391,47.45,31.79,255802.95,171379.89,84423.06
+Central America and the Caribbean,Barbados,Clothes,Offline,C,7/23/2012,190611350,8/29/2012,4989,109.28,35.84,545197.92,178805.76,366392.16
+Sub-Saharan Africa,Tanzania,Snacks,Online,M,2/11/2011,771561944,2/15/2011,1180,152.58,97.44,180044.40,114979.20,65065.20
+Central America and the Caribbean,Belize,Baby Food,Online,L,11/26/2014,624736964,11/28/2014,2406,255.28,159.42,614203.68,383564.52,230639.16
+Central America and the Caribbean,Barbados,Personal Care,Online,H,6/9/2011,154872739,7/20/2011,9140,81.73,56.67,747012.20,517963.80,229048.40
+Middle East and North Africa,Somalia,Cosmetics,Online,H,10/14/2015,737018096,10/27/2015,8888,437.20,263.33,3885833.60,2340477.04,1545356.56
+Sub-Saharan Africa,Niger,Baby Food,Offline,C,10/19/2013,666534364,11/18/2013,1185,255.28,159.42,302506.80,188912.70,113594.10
+Australia and Oceania,Tuvalu,Personal Care,Offline,C,4/30/2011,109095370,6/6/2011,2599,81.73,56.67,212416.27,147285.33,65130.94
+Middle East and North Africa,Syria,Snacks,Offline,M,4/11/2015,650687444,5/28/2015,1729,152.58,97.44,263810.82,168473.76,95337.06
+Europe,Switzerland,Cosmetics,Offline,C,9/10/2014,347609412,9/17/2014,4205,437.20,263.33,1838426.00,1107302.65,731123.35
+Central America and the Caribbean,Grenada,Office Supplies,Offline,C,10/30/2014,476472604,12/1/2014,7687,651.21,524.96,5005851.27,4035367.52,970483.75
+Sub-Saharan Africa,Republic of the Congo,Clothes,Online,C,8/25/2010,584200847,9/13/2010,6868,109.28,35.84,750535.04,246149.12,504385.92
+Australia and Oceania,Nauru,Beverages,Offline,M,4/27/2013,738030469,5/31/2013,8471,47.45,31.79,401948.95,269293.09,132655.86
+Sub-Saharan Africa,Lesotho,Snacks,Online,H,2/23/2016,175510299,3/23/2016,6252,152.58,97.44,953930.16,609194.88,344735.28
+Central America and the Caribbean,El Salvador,Fruits,Offline,M,6/30/2013,454501664,7/18/2013,5997,9.33,6.92,55952.01,41499.24,14452.77
+Middle East and North Africa,Afghanistan,Snacks,Offline,M,2/29/2012,503178393,3/6/2012,523,152.58,97.44,79799.34,50961.12,28838.22
+Asia,Myanmar,Baby Food,Online,M,6/6/2012,670026814,6/15/2012,4679,255.28,159.42,1194455.12,745926.18,448528.94
+Europe,Russia,Personal Care,Offline,H,11/12/2011,473845756,12/16/2011,344,81.73,56.67,28115.12,19494.48,8620.64
+Middle East and North Africa,Qatar,Clothes,Online,L,8/29/2016,853746545,10/15/2016,1430,109.28,35.84,156270.40,51251.20,105019.20
+Sub-Saharan Africa,Cameroon,Beverages,Offline,L,2/27/2015,119153010,3/5/2015,8878,47.45,31.79,421261.10,282231.62,139029.48
+Asia,Malaysia,Office Supplies,Offline,L,11/25/2011,699801480,12/26/2011,5664,651.21,524.96,3688453.44,2973373.44,715080.00
+Australia and Oceania,Samoa ,Meat,Online,C,4/12/2016,595740783,5/13/2016,1791,421.89,364.69,755604.99,653159.79,102445.20
+Sub-Saharan Africa,Zambia,Cereal,Online,M,1/16/2016,127332246,2/11/2016,9296,205.70,117.11,1912187.20,1088654.56,823532.64
+Sub-Saharan Africa,Gabon,Office Supplies,Online,M,5/9/2011,585249698,6/5/2011,7246,651.21,524.96,4718667.66,3803860.16,914807.50
+Europe,Belarus,Vegetables,Online,C,1/5/2011,180479466,1/12/2011,6740,154.06,90.93,1038364.40,612868.20,425496.20
+Sub-Saharan Africa,Chad,Snacks,Offline,M,7/16/2013,794320380,8/12/2013,5907,152.58,97.44,901290.06,575578.08,325711.98
+Asia,Indonesia,Personal Care,Offline,L,12/5/2010,328383767,12/18/2010,4909,81.73,56.67,401212.57,278193.03,123019.54
+Sub-Saharan Africa,Eritrea,Office Supplies,Online,H,3/7/2015,354593455,4/3/2015,938,651.21,524.96,610834.98,492412.48,118422.50
+Middle East and North Africa,Iran,Beverages,Offline,H,8/21/2016,265185773,10/5/2016,3218,47.45,31.79,152694.10,102300.22,50393.88
+Asia,South Korea,Clothes,Online,M,7/3/2010,422709548,8/4/2010,8004,109.28,35.84,874677.12,286863.36,587813.76
+Asia,Cambodia,Vegetables,Offline,L,10/3/2015,810026109,10/18/2015,3581,154.06,90.93,551688.86,325620.33,226068.53
+Asia,Laos,Cosmetics,Offline,L,10/13/2010,580309283,10/25/2010,5268,437.20,263.33,2303169.60,1387222.44,915947.16
+Asia,Sri Lanka,Office Supplies,Online,C,12/1/2012,307045400,12/2/2012,412,651.21,524.96,268298.52,216283.52,52015.00
+Europe,Norway,Personal Care,Offline,M,1/14/2014,634033286,1/15/2014,3394,81.73,56.67,277391.62,192337.98,85053.64
+Middle East and North Africa,United Arab Emirates,Household,Online,H,8/31/2014,925384271,10/12/2014,625,668.27,502.54,417668.75,314087.50,103581.25
+Asia,Thailand,Snacks,Online,C,8/8/2012,615522181,9/20/2012,5547,152.58,97.44,846361.26,540499.68,305861.58
+Europe,Ukraine,Cereal,Offline,L,4/14/2014,559183347,5/21/2014,3633,205.70,117.11,747308.10,425460.63,321847.47
+Europe,Armenia,Meat,Offline,M,11/9/2015,781416594,12/23/2015,7390,421.89,364.69,3117767.10,2695059.10,422708.00
+Middle East and North Africa,Iran,Clothes,Offline,L,7/11/2014,927583253,8/30/2014,1352,109.28,35.84,147746.56,48455.68,99290.88
+Europe,Denmark,Clothes,Offline,H,5/9/2012,713357150,6/3/2012,7088,109.28,35.84,774576.64,254033.92,520542.72
+Sub-Saharan Africa,Liberia,Cosmetics,Offline,M,6/17/2012,374724614,6/23/2012,8195,437.20,263.33,3582854.00,2157989.35,1424864.65
+Australia and Oceania,New Zealand,Household,Offline,C,4/3/2015,217984473,4/20/2015,5305,668.27,502.54,3545172.35,2665974.70,879197.65
+Middle East and North Africa,Azerbaijan,Clothes,Offline,L,8/17/2014,169748055,10/2/2014,1077,109.28,35.84,117694.56,38599.68,79094.88
+Asia,Myanmar,Baby Food,Offline,H,11/23/2016,226939189,12/10/2016,5204,255.28,159.42,1328477.12,829621.68,498855.44
+Europe,Finland,Clothes,Online,L,4/22/2014,906794202,5/11/2014,9410,109.28,35.84,1028324.80,337254.40,691070.40
+Sub-Saharan Africa,Tanzania,Vegetables,Online,L,7/8/2011,996861922,8/7/2011,2450,154.06,90.93,377447.00,222778.50,154668.50
diff --git a/freemarker-generator-cli/site/sample/csv/transactions.csv b/freemarker-generator-cli/site/sample/csv/transactions.csv
new file mode 100755
index 0000000..62311ef
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/csv/transactions.csv
@@ -0,0 +1,101 @@
+Region	Country	Item Type	Sales Channel	Order Priority	Order Date	Order ID	Ship Date	Units Sold	Unit Price	Unit Cost	Total Revenue	Total Cost	Total Profit
+Australia and Oceania	Tuvalu	Baby Food	Offline	H	5/28/2010	669165933	6/27/2010	9925	255.28	159.42	2533654.00	1582243.50	951410.50
+Central America and the Caribbean	Grenada	Cereal	Online	C	8/22/2012	963881480	9/15/2012	2804	205.70	117.11	576782.80	328376.44	248406.36
+Europe	Russia	Office Supplies	Offline	L	5/2/2014	341417157	5/8/2014	1779	651.21	524.96	1158502.59	933903.84	224598.75
+Sub-Saharan Africa	Sao Tome and Principe	Fruits	Online	C	6/20/2014	514321792	7/5/2014	8102	9.33	6.92	75591.66	56065.84	19525.82
+Sub-Saharan Africa	Rwanda	Office Supplies	Offline	L	2/1/2013	115456712	2/6/2013	5062	651.21	524.96	3296425.02	2657347.52	639077.50
+Australia and Oceania	Solomon Islands	Baby Food	Online	C	2/4/2015	547995746	2/21/2015	2974	255.28	159.42	759202.72	474115.08	285087.64
+Sub-Saharan Africa	Angola	Household	Offline	M	4/23/2011	135425221	4/27/2011	4187	668.27	502.54	2798046.49	2104134.98	693911.51
+Sub-Saharan Africa	Burkina Faso	Vegetables	Online	H	7/17/2012	871543967	7/27/2012	8082	154.06	90.93	1245112.92	734896.26	510216.66
+Sub-Saharan Africa	Republic of the Congo	Personal Care	Offline	M	7/14/2015	770463311	8/25/2015	6070	81.73	56.67	496101.10	343986.90	152114.20
+Sub-Saharan Africa	Senegal	Cereal	Online	H	4/18/2014	616607081	5/30/2014	6593	205.70	117.11	1356180.10	772106.23	584073.87
+Asia	Kyrgyzstan	Vegetables	Online	H	6/24/2011	814711606	7/12/2011	124	154.06	90.93	19103.44	11275.32	7828.12
+Sub-Saharan Africa	Cape Verde	Clothes	Offline	H	8/2/2014	939825713	8/19/2014	4168	109.28	35.84	455479.04	149381.12	306097.92
+Asia	Bangladesh	Clothes	Online	L	1/13/2017	187310731	3/1/2017	8263	109.28	35.84	902980.64	296145.92	606834.72
+Central America and the Caribbean	Honduras	Household	Offline	H	2/8/2017	522840487	2/13/2017	8974	668.27	502.54	5997054.98	4509793.96	1487261.02
+Asia	Mongolia	Personal Care	Offline	C	2/19/2014	832401311	2/23/2014	4901	81.73	56.67	400558.73	277739.67	122819.06
+Europe	Bulgaria	Clothes	Online	M	4/23/2012	972292029	6/3/2012	1673	109.28	35.84	182825.44	59960.32	122865.12
+Asia	Sri Lanka	Cosmetics	Offline	M	11/19/2016	419123971	12/18/2016	6952	437.20	263.33	3039414.40	1830670.16	1208744.24
+Sub-Saharan Africa	Cameroon	Beverages	Offline	C	4/1/2015	519820964	4/18/2015	5430	47.45	31.79	257653.50	172619.70	85033.80
+Asia	Turkmenistan	Household	Offline	L	12/30/2010	441619336	1/20/2011	3830	668.27	502.54	2559474.10	1924728.20	634745.90
+Australia and Oceania	East Timor	Meat	Online	L	7/31/2012	322067916	9/11/2012	5908	421.89	364.69	2492526.12	2154588.52	337937.60
+Europe	Norway	Baby Food	Online	L	5/14/2014	819028031	6/28/2014	7450	255.28	159.42	1901836.00	1187679.00	714157.00
+Europe	Portugal	Baby Food	Online	H	7/31/2015	860673511	9/3/2015	1273	255.28	159.42	324971.44	202941.66	122029.78
+Central America and the Caribbean	Honduras	Snacks	Online	L	6/30/2016	795490682	7/26/2016	2225	152.58	97.44	339490.50	216804.00	122686.50
+Australia and Oceania	New Zealand	Fruits	Online	H	9/8/2014	142278373	10/4/2014	2187	9.33	6.92	20404.71	15134.04	5270.67
+Europe	Moldova 	Personal Care	Online	L	5/7/2016	740147912	5/10/2016	5070	81.73	56.67	414371.10	287316.90	127054.20
+Europe	France	Cosmetics	Online	H	5/22/2017	898523128	6/5/2017	1815	437.20	263.33	793518.00	477943.95	315574.05
+Australia and Oceania	Kiribati	Fruits	Online	M	10/13/2014	347140347	11/10/2014	5398	9.33	6.92	50363.34	37354.16	13009.18
+Sub-Saharan Africa	Mali	Fruits	Online	L	5/7/2010	686048400	5/10/2010	5822	9.33	6.92	54319.26	40288.24	14031.02
+Europe	Norway	Beverages	Offline	C	7/18/2014	435608613	7/30/2014	5124	47.45	31.79	243133.80	162891.96	80241.84
+Sub-Saharan Africa	The Gambia	Household	Offline	L	5/26/2012	886494815	6/9/2012	2370	668.27	502.54	1583799.90	1191019.80	392780.10
+Europe	Switzerland	Cosmetics	Offline	M	9/17/2012	249693334	10/20/2012	8661	437.20	263.33	3786589.20	2280701.13	1505888.07
+Sub-Saharan Africa	South Sudan	Personal Care	Offline	C	12/29/2013	406502997	1/28/2014	2125	81.73	56.67	173676.25	120423.75	53252.50
+Australia and Oceania	Australia	Office Supplies	Online	C	10/27/2015	158535134	11/25/2015	2924	651.21	524.96	1904138.04	1534983.04	369155.00
+Asia	Myanmar	Household	Offline	H	1/16/2015	177713572	3/1/2015	8250	668.27	502.54	5513227.50	4145955.00	1367272.50
+Sub-Saharan Africa	Djibouti	Snacks	Online	M	2/25/2017	756274640	2/25/2017	7327	152.58	97.44	1117953.66	713942.88	404010.78
+Central America and the Caribbean	Costa Rica	Personal Care	Offline	L	5/8/2017	456767165	5/21/2017	6409	81.73	56.67	523807.57	363198.03	160609.54
+Middle East and North Africa	Syria	Fruits	Online	L	11/22/2011	162052476	12/3/2011	3784	9.33	6.92	35304.72	26185.28	9119.44
+Sub-Saharan Africa	The Gambia	Meat	Online	M	1/14/2017	825304400	1/23/2017	4767	421.89	364.69	2011149.63	1738477.23	272672.40
+Asia	Brunei	Office Supplies	Online	L	4/1/2012	320009267	5/8/2012	6708	651.21	524.96	4368316.68	3521431.68	846885.00
+Europe	Bulgaria	Office Supplies	Online	M	2/16/2012	189965903	2/28/2012	3987	651.21	524.96	2596374.27	2093015.52	503358.75
+Sub-Saharan Africa	Niger	Personal Care	Online	H	3/11/2017	699285638	3/28/2017	3015	81.73	56.67	246415.95	170860.05	75555.90
+Middle East and North Africa	Azerbaijan	Cosmetics	Online	M	2/6/2010	382392299	2/25/2010	7234	437.20	263.33	3162704.80	1904929.22	1257775.58
+Sub-Saharan Africa	The Gambia	Cereal	Offline	H	6/7/2012	994022214	6/8/2012	2117	205.70	117.11	435466.90	247921.87	187545.03
+Europe	Slovakia	Vegetables	Online	H	10/6/2012	759224212	11/10/2012	171	154.06	90.93	26344.26	15549.03	10795.23
+Asia	Myanmar	Clothes	Online	H	11/14/2015	223359620	11/18/2015	5930	109.28	35.84	648030.40	212531.20	435499.20
+Sub-Saharan Africa	Comoros	Cereal	Offline	H	3/29/2016	902102267	4/29/2016	962	205.70	117.11	197883.40	112659.82	85223.58
+Europe	Iceland	Cosmetics	Online	C	12/31/2016	331438481	12/31/2016	8867	437.20	263.33	3876652.40	2334947.11	1541705.29
+Europe	Switzerland	Personal Care	Online	M	12/23/2010	617667090	1/31/2011	273	81.73	56.67	22312.29	15470.91	6841.38
+Europe	Macedonia	Clothes	Offline	C	10/14/2014	787399423	11/14/2014	7842	109.28	35.84	856973.76	281057.28	575916.48
+Sub-Saharan Africa	Mauritania	Office Supplies	Offline	C	1/11/2012	837559306	1/13/2012	1266	651.21	524.96	824431.86	664599.36	159832.50
+Europe	Albania	Clothes	Online	C	2/2/2010	385383069	3/18/2010	2269	109.28	35.84	247956.32	81320.96	166635.36
+Sub-Saharan Africa	Lesotho	Fruits	Online	L	8/18/2013	918419539	9/18/2013	9606	9.33	6.92	89623.98	66473.52	23150.46
+Middle East and North Africa	Saudi Arabia	Cereal	Online	M	3/25/2013	844530045	3/28/2013	4063	205.70	117.11	835759.10	475817.93	359941.17
+Sub-Saharan Africa	Sierra Leone	Office Supplies	Offline	M	11/26/2011	441888415	1/7/2012	3457	651.21	524.96	2251232.97	1814786.72	436446.25
+Sub-Saharan Africa	Sao Tome and Principe	Fruits	Offline	H	9/17/2013	508980977	10/24/2013	7637	9.33	6.92	71253.21	52848.04	18405.17
+Sub-Saharan Africa	Cote d'Ivoire	Clothes	Online	C	6/8/2012	114606559	6/27/2012	3482	109.28	35.84	380512.96	124794.88	255718.08
+Australia and Oceania	Fiji	Clothes	Offline	C	6/30/2010	647876489	8/1/2010	9905	109.28	35.84	1082418.40	354995.20	727423.20
+Europe	Austria	Cosmetics	Offline	H	2/23/2015	868214595	3/2/2015	2847	437.20	263.33	1244708.40	749700.51	495007.89
+Europe	United Kingdom	Household	Online	L	1/5/2012	955357205	2/14/2012	282	668.27	502.54	188452.14	141716.28	46735.86
+Sub-Saharan Africa	Djibouti	Cosmetics	Offline	H	4/7/2014	259353148	4/19/2014	7215	437.20	263.33	3154398.00	1899925.95	1254472.05
+Australia and Oceania	Australia	Cereal	Offline	H	6/9/2013	450563752	7/2/2013	682	205.70	117.11	140287.40	79869.02	60418.38
+Europe	San Marino	Baby Food	Online	L	6/26/2013	569662845	7/1/2013	4750	255.28	159.42	1212580.00	757245.00	455335.00
+Sub-Saharan Africa	Cameroon	Office Supplies	Online	M	11/7/2011	177636754	11/15/2011	5518	651.21	524.96	3593376.78	2896729.28	696647.50
+Middle East and North Africa	Libya	Clothes	Offline	H	10/30/2010	705784308	11/17/2010	6116	109.28	35.84	668356.48	219197.44	449159.04
+Central America and the Caribbean	Haiti	Cosmetics	Offline	H	10/13/2013	505716836	11/16/2013	1705	437.20	263.33	745426.00	448977.65	296448.35
+Sub-Saharan Africa	Rwanda	Cosmetics	Offline	H	10/11/2013	699358165	11/25/2013	4477	437.20	263.33	1957344.40	1178928.41	778415.99
+Sub-Saharan Africa	Gabon	Personal Care	Offline	L	7/8/2012	228944623	7/9/2012	8656	81.73	56.67	707454.88	490535.52	216919.36
+Central America and the Caribbean	Belize	Clothes	Offline	M	7/25/2016	807025039	9/7/2016	5498	109.28	35.84	600821.44	197048.32	403773.12
+Europe	Lithuania	Office Supplies	Offline	H	10/24/2010	166460740	11/17/2010	8287	651.21	524.96	5396577.27	4350343.52	1046233.75
+Sub-Saharan Africa	Madagascar	Clothes	Offline	L	4/25/2015	610425555	5/28/2015	7342	109.28	35.84	802333.76	263137.28	539196.48
+Asia	Turkmenistan	Office Supplies	Online	M	4/23/2013	462405812	5/20/2013	5010	651.21	524.96	3262562.10	2630049.60	632512.50
+Middle East and North Africa	Libya	Fruits	Online	L	8/14/2015	816200339	9/30/2015	673	9.33	6.92	6279.09	4657.16	1621.93
+Sub-Saharan Africa	Democratic Republic of the Congo	Beverages	Online	C	5/26/2011	585920464	7/15/2011	5741	47.45	31.79	272410.45	182506.39	89904.06
+Sub-Saharan Africa	Djibouti	Cereal	Online	H	5/20/2017	555990016	6/17/2017	8656	205.70	117.11	1780539.20	1013704.16	766835.04
+Middle East and North Africa	Pakistan	Cosmetics	Offline	L	7/5/2013	231145322	8/16/2013	9892	437.20	263.33	4324782.40	2604860.36	1719922.04
+North America	Mexico	Household	Offline	C	11/6/2014	986435210	12/12/2014	6954	668.27	502.54	4647149.58	3494663.16	1152486.42
+Australia and Oceania	Federated States of Micronesia	Beverages	Online	C	10/28/2014	217221009	11/15/2014	9379	47.45	31.79	445033.55	298158.41	146875.14
+Asia	Laos	Vegetables	Offline	C	9/15/2011	789176547	10/23/2011	3732	154.06	90.93	574951.92	339350.76	235601.16
+Europe	Monaco	Baby Food	Offline	H	5/29/2012	688288152	6/2/2012	8614	255.28	159.42	2198981.92	1373243.88	825738.04
+Australia and Oceania	Samoa 	Cosmetics	Online	H	7/20/2013	670854651	8/7/2013	9654	437.20	263.33	4220728.80	2542187.82	1678540.98
+Europe	Spain	Household	Offline	L	10/21/2012	213487374	11/30/2012	4513	668.27	502.54	3015902.51	2267963.02	747939.49
+Middle East and North Africa	Lebanon	Clothes	Online	L	9/18/2012	663110148	10/8/2012	7884	109.28	35.84	861563.52	282562.56	579000.96
+Middle East and North Africa	Iran	Cosmetics	Online	H	11/15/2016	286959302	12/8/2016	6489	437.20	263.33	2836990.80	1708748.37	1128242.43
+Sub-Saharan Africa	Zambia	Snacks	Online	L	1/4/2011	122583663	1/5/2011	4085	152.58	97.44	623289.30	398042.40	225246.90
+Sub-Saharan Africa	Kenya	Vegetables	Online	L	3/18/2012	827844560	4/7/2012	6457	154.06	90.93	994765.42	587135.01	407630.41
+North America	Mexico	Personal Care	Offline	L	2/17/2012	430915820	3/20/2012	6422	81.73	56.67	524870.06	363934.74	160935.32
+Sub-Saharan Africa	Sao Tome and Principe	Beverages	Offline	C	1/16/2011	180283772	1/21/2011	8829	47.45	31.79	418936.05	280673.91	138262.14
+Sub-Saharan Africa	The Gambia	Baby Food	Offline	M	2/3/2014	494747245	3/20/2014	5559	255.28	159.42	1419101.52	886215.78	532885.74
+Middle East and North Africa	Kuwait	Fruits	Online	M	4/30/2012	513417565	5/18/2012	522	9.33	6.92	4870.26	3612.24	1258.02
+Europe	Slovenia	Beverages	Offline	C	10/23/2016	345718562	11/25/2016	4660	47.45	31.79	221117.00	148141.40	72975.60
+Sub-Saharan Africa	Sierra Leone	Office Supplies	Offline	H	12/6/2016	621386563	12/14/2016	948	651.21	524.96	617347.08	497662.08	119685.00
+Australia and Oceania	Australia	Beverages	Offline	H	7/7/2014	240470397	7/11/2014	9389	47.45	31.79	445508.05	298476.31	147031.74
+Middle East and North Africa	Azerbaijan	Office Supplies	Online	M	6/13/2012	423331391	7/24/2012	2021	651.21	524.96	1316095.41	1060944.16	255151.25
+Europe	Romania	Cosmetics	Online	H	11/26/2010	660643374	12/25/2010	7910	437.20	263.33	3458252.00	2082940.30	1375311.70
+Central America and the Caribbean	Nicaragua	Beverages	Offline	C	2/8/2011	963392674	3/21/2011	8156	47.45	31.79	387002.20	259279.24	127722.96
+Sub-Saharan Africa	Mali	Clothes	Online	M	7/26/2011	512878119	9/3/2011	888	109.28	35.84	97040.64	31825.92	65214.72
+Asia	Malaysia	Fruits	Offline	L	11/11/2011	810711038	12/28/2011	6267	9.33	6.92	58471.11	43367.64	15103.47
+Sub-Saharan Africa	Sierra Leone	Vegetables	Offline	C	6/1/2016	728815257	6/29/2016	1485	154.06	90.93	228779.10	135031.05	93748.05
+North America	Mexico	Personal Care	Offline	M	7/30/2015	559427106	8/8/2015	5767	81.73	56.67	471336.91	326815.89	144521.02
+Sub-Saharan Africa	Mozambique	Household	Offline	L	2/10/2012	665095412	2/15/2012	5367	668.27	502.54	3586605.09	2697132.18	889472.91
diff --git a/freemarker-generator-cli/site/sample/csv/user.csv b/freemarker-generator-cli/site/sample/csv/user.csv
new file mode 100644
index 0000000..3ead425
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/csv/user.csv
@@ -0,0 +1,5 @@
+disposer,user,password,token,device,name,description
+AAAAAAA,AAAAAAA,,0000000-0000-0000-0000-AAAAAAAAAAAAA,,AAAAAAA,test user AAAAAAA
+BBBBBBB,BBBBBBB,,0000000-0000-0000-0000-BBBBBBBBBBBBB,,BBBBBBB,test user BBBBBBB
+CCCCCCC,CCCCCCC,,0000000-0000-0000-0000-CCCCCCCCCCCCC,,CCCCCCC,test user CCCCCCC
+DDDDDDD,DDDDDDD,,0000000-0000-0000-0000-DDDDDDDDDDDDD,,DDDDDDD,test user DDDDDDD
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/excel/test-multiple-sheets.xlsx b/freemarker-generator-cli/site/sample/excel/test-multiple-sheets.xlsx
new file mode 100644
index 0000000..6fe449a
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/excel/test-multiple-sheets.xlsx
Binary files differ
diff --git a/freemarker-generator-cli/site/sample/excel/test.xls b/freemarker-generator-cli/site/sample/excel/test.xls
new file mode 100644
index 0000000..df48479
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/excel/test.xls
Binary files differ
diff --git a/freemarker-generator-cli/site/sample/excel/test.xlsx b/freemarker-generator-cli/site/sample/excel/test.xlsx
new file mode 100644
index 0000000..b79f954
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/excel/test.xlsx
Binary files differ
diff --git a/freemarker-generator-cli/site/sample/html/dependencies.html b/freemarker-generator-cli/site/sample/html/dependencies.html
new file mode 100644
index 0000000..c67940f
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/html/dependencies.html
@@ -0,0 +1,645 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- Generated by Apache Maven Doxia Site Renderer 1.8.1 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.0.0:dependencies at 2019-02-07 -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>FreeMarker CLI &#x2013; Project Dependencies</title>
+    <style type="text/css" media="all">
+      @import url("./css/maven-base.css");
+      @import url("./css/maven-theme.css");
+      @import url("./css/site.css");
+    </style>
+    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+    <meta http-equiv="Content-Language" content="en" />
+    
+  </head>
+  <body class="composite">
+    <div id="banner">
+<div id="bannerLeft">
+FreeMarker CLI
+</div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="breadcrumbs">
+      <div class="xleft">
+        <span id="publishDate">Last Published: 2019-02-07</span>
+          &nbsp;| <span id="projectVersion">Version: 1.0.2-SNAPSHOT</span>
+      </div>
+      <div class="xright"><a href="${project.url}" title="FreeMarker CLI">FreeMarker CLI</a>      </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+    <div id="leftColumn">
+      <div id="navcolumn">
+       <h5>Project Documentation</h5>
+    <ul>
+     <li class="expanded"><a href="project-info.html" title="Project Information">Project Information</a>
+      <ul>
+       <li class="none"><strong>Dependencies</strong></li>
+       <li class="none"><a href="dependency-info.html" title="Dependency Information">Dependency Information</a></li>
+       <li class="none"><a href="index.html" title="About">About</a></li>
+       <li class="none"><a href="plugin-management.html" title="Plugin Management">Plugin Management</a></li>
+       <li class="none"><a href="plugins.html" title="Plugins">Plugins</a></li>
+       <li class="none"><a href="summary.html" title="Summary">Summary</a></li>
+      </ul></li>
+    </ul>
+      <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
+      </a>
+      </div>
+    </div>
+    <div id="bodyColumn">
+      <div id="contentBox">
+<a name="Project_Dependencies"></a>
+<div class="section">
+<h2><a name="Project_Dependencies"></a>Project Dependencies</h2><a name="Project_Dependencies_compile"></a>
+<div class="section">
+<h3><a name="compile"></a>compile</h3>
+<p>The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:</p>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>GroupId</th>
+<th>ArtifactId</th>
+<th>Version</th>
+<th>Type</th>
+<th>Licenses</th></tr>
+<tr class="b">
+<td>com.jayway.jsonpath</td>
+<td><a class="externalLink" href="https://github.com/jayway/JsonPath">json-path</a></td>
+<td>2.4.0</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>commons-cli</td>
+<td><a class="externalLink" href="http://commons.apache.org/proper/commons-cli/">commons-cli</a></td>
+<td>1.4</td>
+<td>jar</td>
+<td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>org.apache.commons</td>
+<td><a class="externalLink" href="http://commons.apache.org/proper/commons-csv/">commons-csv</a></td>
+<td>1.5</td>
+<td>jar</td>
+<td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>org.apache.poi</td>
+<td><a class="externalLink" href="http://poi.apache.org/">poi</a></td>
+<td>4.0.1</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>org.apache.poi</td>
+<td><a class="externalLink" href="http://poi.apache.org/">poi-ooxml</a></td>
+<td>3.17</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>org.apache.poi</td>
+<td><a class="externalLink" href="http://poi.apache.org/">poi-ooxml-schemas</a></td>
+<td>3.17</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>org.freemarker</td>
+<td><a class="externalLink" href="https://freemarker.apache.org/">freemarker</a></td>
+<td>2.3.28</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>org.jsoup</td>
+<td><a class="externalLink" href="https://jsoup.org/">jsoup</a></td>
+<td>1.11.3</td>
+<td>jar</td>
+<td><a class="externalLink" href="https://jsoup.org/license">The MIT License</a></td></tr>
+<tr class="b">
+<td>org.slf4j</td>
+<td><a class="externalLink" href="http://www.slf4j.org">slf4j-api</a></td>
+<td>1.7.21</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></td></tr>
+<tr class="a">
+<td>org.slf4j</td>
+<td><a class="externalLink" href="http://www.slf4j.org">slf4j-log4j12</a></td>
+<td>1.7.21</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></td></tr></table></div></div><a name="Project_Transitive_Dependencies"></a>
+<div class="section">
+<h2><a name="Project_Transitive_Dependencies"></a>Project Transitive Dependencies</h2>
+<p>The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.</p><a name="Project_Transitive_Dependencies_compile"></a>
+<div class="section">
+<h3><a name="compile"></a>compile</h3>
+<p>The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:</p>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>GroupId</th>
+<th>ArtifactId</th>
+<th>Version</th>
+<th>Type</th>
+<th>Licenses</th></tr>
+<tr class="b">
+<td>com.github.virtuald</td>
+<td><a class="externalLink" href="https://github.com/virtuald/curvesapi">curvesapi</a></td>
+<td>1.04</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://opensource.org/licenses/BSD-3-Clause">BSD License</a></td></tr>
+<tr class="a">
+<td>commons-codec</td>
+<td><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">commons-codec</a></td>
+<td>1.11</td>
+<td>jar</td>
+<td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>log4j</td>
+<td><a class="externalLink" href="http://logging.apache.org/log4j/1.2/">log4j</a></td>
+<td>1.2.17</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>net.minidev</td>
+<td><a class="externalLink" href="http://www.minidev.net/">accessors-smart</a></td>
+<td>1.2</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>net.minidev</td>
+<td><a class="externalLink" href="http://www.minidev.net/">json-smart</a></td>
+<td>2.3</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>org.apache.commons</td>
+<td><a class="externalLink" href="http://commons.apache.org/proper/commons-collections/">commons-collections4</a></td>
+<td>4.2</td>
+<td>jar</td>
+<td><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>org.apache.commons</td>
+<td><a class="externalLink" href="http://commons.apache.org/proper/commons-math/">commons-math3</a></td>
+<td>3.6.1</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></td></tr>
+<tr class="a">
+<td>org.apache.xmlbeans</td>
+<td><a class="externalLink" href="http://xmlbeans.apache.org">xmlbeans</a></td>
+<td>2.6.0</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr>
+<tr class="b">
+<td>org.ow2.asm</td>
+<td><a class="externalLink" href="http://asm.objectweb.org/asm/">asm</a></td>
+<td>5.0.4</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://asm.objectweb.org/license.html">BSD</a></td></tr>
+<tr class="a">
+<td>stax</td>
+<td><a class="externalLink" href="http://stax.codehaus.org/">stax-api</a></td>
+<td>1.0.1</td>
+<td>jar</td>
+<td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></td></tr></table></div></div><a name="Project_Dependency_Graph"></a>
+<div class="section">
+<h2><a name="Project_Dependency_Graph"></a>Project Dependency Graph</h2>
+<script language="javascript" type="text/javascript">
+      function toggleDependencyDetails( divId, imgId )
+      {
+        var div = document.getElementById( divId );
+        var img = document.getElementById( imgId );
+        if( div.style.display == '' )
+        {
+          div.style.display = 'none';
+          img.src='./images/icon_info_sml.gif';
+          img.alt='[Information]';
+        }
+        else
+        {
+          div.style.display = '';
+          img.src='./images/close.gif';
+          img.alt='[Close]';
+        }
+      }
+</script>
+<a name="Dependency_Tree"></a>
+<div class="section">
+<h3><a name="Dependency_Tree"></a>Dependency Tree</h3>
+<ul>
+<li>org.github.sgoeschl:freemarker-cli:jar:1.0.2-SNAPSHOT <img id="_img1" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep0', '_img1' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep0" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>FreeMarker CLI</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>There is currently no description associated with this project.</p>
+<p><b>Project Licenses: </b>No licenses are defined for this project.</p></td></tr></table></div>
+<ul>
+<li>org.jsoup:jsoup:jar:1.11.3 (compile) <img id="_img3" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep2', '_img3' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep2" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>jsoup Java HTML Parser</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jquery-like methods. jsoup implements the WHATWG HTML5 specification, and parses HTML to the same DOM as modern browsers do.</p>
+<p><b>URL: </b><a class="externalLink" href="https://jsoup.org/">https://jsoup.org/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="https://jsoup.org/license">The MIT License</a></p></td></tr></table></div></li>
+<li>org.freemarker:freemarker:jar:2.3.28 (compile) <img id="_img5" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep4', '_img5' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep4" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache FreeMarker</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>FreeMarker is a &quot;template engine&quot;; a generic tool to generate text output based on templates.</p>
+<p><b>URL: </b><a class="externalLink" href="https://freemarker.apache.org/">https://freemarker.apache.org/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
+<li>com.jayway.jsonpath:json-path:jar:2.4.0 (compile) <img id="_img7" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep6', '_img7' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep6" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>project ':json-path'</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Java port of Stefan Goessner JsonPath.</p>
+<p><b>URL: </b><a class="externalLink" href="https://github.com/jayway/JsonPath">https://github.com/jayway/JsonPath</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>net.minidev:json-smart:jar:2.3 (compile) <img id="_img9" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep8', '_img9' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep8" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>JSON Small and Fast Parser</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.</p>
+<p><b>URL: </b><a class="externalLink" href="http://www.minidev.net/">http://www.minidev.net/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>net.minidev:accessors-smart:jar:1.2 (compile) <img id="_img11" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep10', '_img11' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep10" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>ASM based accessors helper used by json-smart</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Java reflect give poor performance on getter setter an constructor calls, accessors-smart use ASM to speed up those calls.</p>
+<p><b>URL: </b><a class="externalLink" href="http://www.minidev.net/">http://www.minidev.net/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>org.ow2.asm:asm:jar:5.0.4 (compile) <img id="_img13" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep12', '_img13' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep12" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>ASM Core</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>A very small and fast Java bytecode manipulation framework</p>
+<p><b>URL: </b><a class="externalLink" href="http://asm.objectweb.org/asm/">http://asm.objectweb.org/asm/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://asm.objectweb.org/license.html">BSD</a></p></td></tr></table></div></li></ul></li></ul></li></ul></li>
+<li>org.apache.commons:commons-csv:jar:1.5 (compile) <img id="_img15" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep14', '_img15' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep14" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache Commons CSV</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>The Apache Commons CSV library provides a simple interface for reading and writing
+CSV files of various types.</p>
+<p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-csv/">http://commons.apache.org/proper/commons-csv/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
+<li>commons-cli:commons-cli:jar:1.4 (compile) <img id="_img17" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep16', '_img17' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep16" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache Commons CLI</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Apache Commons CLI provides a simple API for presenting, processing and validating a command line interface.</p>
+<p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-cli/">http://commons.apache.org/proper/commons-cli/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
+<li>org.slf4j:slf4j-api:jar:1.7.21 (compile) <img id="_img19" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep18', '_img19' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep18" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>SLF4J API Module</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>The slf4j API</p>
+<p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
+<li>org.slf4j:slf4j-log4j12:jar:1.7.21 (compile) <img id="_img21" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep20', '_img21' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep20" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>SLF4J LOG4J-12 Binding</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>SLF4J LOG4J-12 Binding</p>
+<p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div>
+<ul>
+<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img23" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep22', '_img23' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep22" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache Log4j</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Apache Log4j 1.2</p>
+<p><b>URL: </b><a class="externalLink" href="http://logging.apache.org/log4j/1.2/">http://logging.apache.org/log4j/1.2/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.poi:poi:jar:4.0.1 (compile) <img id="_img25" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep24', '_img25' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep24" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache POI</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Apache POI - Java API To Access Microsoft Format Files</p>
+<p><b>URL: </b><a class="externalLink" href="http://poi.apache.org/">http://poi.apache.org/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>commons-codec:commons-codec:jar:1.11 (compile) <img id="_img27" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep26', '_img27' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep26" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache Commons Codec</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>The Apache Commons Codec package contains simple encoder and decoders for
+     various formats such as Base64 and Hexadecimal.  In addition to these
+     widely used encoders and decoders, the codec package also maintains a
+     collection of phonetic encoding utilities.</p>
+<p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">http://commons.apache.org/proper/commons-codec/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
+<li>org.apache.commons:commons-collections4:jar:4.2 (compile) <img id="_img29" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep28', '_img29' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep28" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache Commons Collections</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.</p>
+<p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-collections/">http://commons.apache.org/proper/commons-collections/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
+<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img31" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep30', '_img31' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep30" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache Commons Math</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>The Apache Commons Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.</p>
+<p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-math/">http://commons.apache.org/proper/commons-math/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.poi:poi-ooxml:jar:3.17 (compile) <img id="_img33" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep32', '_img33' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep32" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache POI</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Apache POI - Java API To Access Microsoft Format Files</p>
+<p><b>URL: </b><a class="externalLink" href="http://poi.apache.org/">http://poi.apache.org/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>com.github.virtuald:curvesapi:jar:1.04 (compile) <img id="_img35" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep34', '_img35' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep34" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>curvesapi</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Implementation of various mathematical curves that define themselves over a set of control points. The API is written in Java. The curves supported are: Bezier, B-Spline, Cardinal Spline, Catmull-Rom Spline, Lagrange, Natural Cubic Spline, and NURBS.</p>
+<p><b>URL: </b><a class="externalLink" href="https://github.com/virtuald/curvesapi">https://github.com/virtuald/curvesapi</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://opensource.org/licenses/BSD-3-Clause">BSD License</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.poi:poi-ooxml-schemas:jar:3.17 (compile) <img id="_img37" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep36', '_img37' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep36" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Apache POI</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Apache POI - Java API To Access Microsoft Format Files</p>
+<p><b>URL: </b><a class="externalLink" href="http://poi.apache.org/">http://poi.apache.org/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>org.apache.xmlbeans:xmlbeans:jar:2.6.0 (compile) <img id="_img39" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep38', '_img39' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep38" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>XmlBeans</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>XmlBeans main jar</p>
+<p><b>URL: </b><a class="externalLink" href="http://xmlbeans.apache.org">http://xmlbeans.apache.org</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>stax:stax-api:jar:1.0.1 (compile) <img id="_img41" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep40', '_img41' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep40" style="display:none">
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>StAX API</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>StAX API is the standard java XML processing API defined by JSR-173</p>
+<p><b>URL: </b><a class="externalLink" href="http://stax.codehaus.org/">http://stax.codehaus.org/</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li></ul></li></ul></div></div><a name="Licenses"></a>
+<div class="section">
+<h2><a name="Licenses"></a>Licenses</h2>
+<p><b>BSD: </b>ASM Core</p>
+<p><b>Unknown: </b>FreeMarker CLI</p>
+<p><b>BSD License: </b>curvesapi</p>
+<p><b>The MIT License: </b>jsoup Java HTML Parser</p>
+<p><b>MIT License: </b>SLF4J API Module, SLF4J LOG4J-12 Binding</p>
+<p><b>Apache License, Version 2.0: </b>Apache Commons CLI, Apache Commons CSV, Apache Commons Codec, Apache Commons Collections, Apache Commons Math, Apache FreeMarker</p>
+<p><b>The Apache Software License, Version 2.0: </b>ASM based accessors helper used by json-smart, Apache Log4j, Apache POI, JSON Small and Fast Parser, StAX API, XmlBeans, project ':json-path'</p></div><a name="Dependency_File_Details"></a>
+<div class="section">
+<h2><a name="Dependency_File_Details"></a>Dependency File Details</h2>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>Filename</th>
+<th>Size</th>
+<th>Entries</th>
+<th>Classes</th>
+<th>Packages</th>
+<th>Java Version</th>
+<th title="Indicates whether these dependencies have been compiled with debug information.">Debug Information</th></tr>
+<tr class="b">
+<td>curvesapi-1.04.jar</td>
+<td>98.4 kB</td>
+<td>102</td>
+<td>83</td>
+<td>6</td>
+<td>1.5</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>json-path-2.4.0.jar</td>
+<td>223.2 kB</td>
+<td>191</td>
+<td>174</td>
+<td>12</td>
+<td>1.6</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>commons-cli-1.4.jar</td>
+<td>53.8 kB</td>
+<td>40</td>
+<td>27</td>
+<td>1</td>
+<td>1.5</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>commons-codec-1.11.jar</td>
+<td>335 kB</td>
+<td>243</td>
+<td>96</td>
+<td>7</td>
+<td>1.6</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>log4j-1.2.17.jar</td>
+<td>489.9 kB</td>
+<td>353</td>
+<td>314</td>
+<td>21</td>
+<td>1.4</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>accessors-smart-1.2.jar</td>
+<td>30 kB</td>
+<td>24</td>
+<td>13</td>
+<td>2</td>
+<td>1.6</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>json-smart-2.3.jar</td>
+<td>120.3 kB</td>
+<td>106</td>
+<td>92</td>
+<td>5</td>
+<td>1.6</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>commons-collections4-4.2.jar</td>
+<td>752.8 kB</td>
+<td>552</td>
+<td>521</td>
+<td>19</td>
+<td>1.7</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>commons-csv-1.5.jar</td>
+<td>41.6 kB</td>
+<td>28</td>
+<td>15</td>
+<td>1</td>
+<td>1.7</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>commons-math3-3.6.1.jar</td>
+<td>2.2 MB</td>
+<td>1402</td>
+<td>1301</td>
+<td>75</td>
+<td>1.5</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>poi-4.0.1.jar</td>
+<td>2.7 MB</td>
+<td>1784</td>
+<td>1706</td>
+<td>65</td>
+<td>1.8</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>poi-ooxml-3.17.jar</td>
+<td>1.5 MB</td>
+<td>732</td>
+<td>670</td>
+<td>46</td>
+<td>1.6</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>poi-ooxml-schemas-3.17.jar</td>
+<td>5.9 MB</td>
+<td>5846</td>
+<td>2579</td>
+<td>48</td>
+<td>1.6</td>
+<td>No</td></tr>
+<tr class="a">
+<td>xmlbeans-2.6.0.jar</td>
+<td>2.7 MB</td>
+<td>2249</td>
+<td>1523</td>
+<td>52</td>
+<td>1.4</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>freemarker-2.3.28.jar</td>
+<td>1.5 MB</td>
+<td>1148</td>
+<td>1124</td>
+<td>17</td>
+<td>1.8</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>jsoup-1.11.3.jar</td>
+<td>395.7 kB</td>
+<td>266</td>
+<td>248</td>
+<td>7</td>
+<td>1.7</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>asm-5.0.4.jar</td>
+<td>53.3 kB</td>
+<td>30</td>
+<td>25</td>
+<td>2</td>
+<td>1.2</td>
+<td>No</td></tr>
+<tr class="a">
+<td>slf4j-api-1.7.21.jar</td>
+<td>41.1 kB</td>
+<td>46</td>
+<td>34</td>
+<td>4</td>
+<td>1.5</td>
+<td>Yes</td></tr>
+<tr class="b">
+<td>slf4j-log4j12-1.7.21.jar</td>
+<td>10 kB</td>
+<td>16</td>
+<td>6</td>
+<td>1</td>
+<td>1.5</td>
+<td>Yes</td></tr>
+<tr class="a">
+<td>stax-api-1.0.1.jar</td>
+<td>26.5 kB</td>
+<td>48</td>
+<td>40</td>
+<td>5</td>
+<td>1.2</td>
+<td>Yes</td></tr>
+<tr class="b">
+<th>Total</th>
+<th>Size</th>
+<th>Entries</th>
+<th>Classes</th>
+<th>Packages</th>
+<th>Java Version</th>
+<th>Debug Information</th></tr>
+<tr class="a">
+<td>20</td>
+<td>19.3 MB</td>
+<td>15206</td>
+<td>10591</td>
+<td>396</td>
+<td>1.8</td>
+<td>18</td></tr>
+<tr class="b">
+<td>compile: 20</td>
+<td>compile: 19.3 MB</td>
+<td>compile: 15206</td>
+<td>compile: 10591</td>
+<td>compile: 396</td>
+<td>-</td>
+<td>compile: 18</td></tr></table></div>
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">
+        Copyright &#169;      2016&#x2013;2019.All rights reserved.      </div>
+      <div class="clear">
+        <hr/>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/freemarker-generator-cli/site/sample/json/github-users.json b/freemarker-generator-cli/site/sample/json/github-users.json
new file mode 100644
index 0000000..e12d648
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/json/github-users.json
@@ -0,0 +1,135 @@
+[
+    {
+        "login": "mojombo",
+        "id": 1,
+        "avatar_url": "https://avatars.githubusercontent.com/u/1?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/mojombo",
+        "html_url": "https://github.com/mojombo",
+        "followers_url": "https://api.github.com/users/mojombo/followers",
+        "following_url": "https://api.github.com/users/mojombo/following{/other_user}",
+        "gists_url": "https://api.github.com/users/mojombo/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/mojombo/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/mojombo/subscriptions",
+        "organizations_url": "https://api.github.com/users/mojombo/orgs",
+        "repos_url": "https://api.github.com/users/mojombo/repos",
+        "events_url": "https://api.github.com/users/mojombo/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/mojombo/received_events",
+        "type": "User",
+        "site_admin": false
+    },
+    {
+        "login": "defunkt",
+        "id": 2,
+        "avatar_url": "https://avatars.githubusercontent.com/u/2?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/defunkt",
+        "html_url": "https://github.com/defunkt",
+        "followers_url": "https://api.github.com/users/defunkt/followers",
+        "following_url": "https://api.github.com/users/defunkt/following{/other_user}",
+        "gists_url": "https://api.github.com/users/defunkt/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/defunkt/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/defunkt/subscriptions",
+        "organizations_url": "https://api.github.com/users/defunkt/orgs",
+        "repos_url": "https://api.github.com/users/defunkt/repos",
+        "events_url": "https://api.github.com/users/defunkt/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/defunkt/received_events",
+        "type": "User",
+        "site_admin": true
+    },
+    {
+        "login": "pjhyett",
+        "id": 3,
+        "avatar_url": "https://avatars.githubusercontent.com/u/3?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/pjhyett",
+        "html_url": "https://github.com/pjhyett",
+        "followers_url": "https://api.github.com/users/pjhyett/followers",
+        "following_url": "https://api.github.com/users/pjhyett/following{/other_user}",
+        "gists_url": "https://api.github.com/users/pjhyett/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/pjhyett/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/pjhyett/subscriptions",
+        "organizations_url": "https://api.github.com/users/pjhyett/orgs",
+        "repos_url": "https://api.github.com/users/pjhyett/repos",
+        "events_url": "https://api.github.com/users/pjhyett/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/pjhyett/received_events",
+        "type": "User",
+        "site_admin": true
+    },
+    {
+        "login": "wycats",
+        "id": 4,
+        "avatar_url": "https://avatars.githubusercontent.com/u/4?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/wycats",
+        "html_url": "https://github.com/wycats",
+        "followers_url": "https://api.github.com/users/wycats/followers",
+        "following_url": "https://api.github.com/users/wycats/following{/other_user}",
+        "gists_url": "https://api.github.com/users/wycats/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/wycats/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/wycats/subscriptions",
+        "organizations_url": "https://api.github.com/users/wycats/orgs",
+        "repos_url": "https://api.github.com/users/wycats/repos",
+        "events_url": "https://api.github.com/users/wycats/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/wycats/received_events",
+        "type": "User",
+        "site_admin": false
+    },
+    {
+        "login": "ezmobius",
+        "id": 5,
+        "avatar_url": "https://avatars.githubusercontent.com/u/5?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/ezmobius",
+        "html_url": "https://github.com/ezmobius",
+        "followers_url": "https://api.github.com/users/ezmobius/followers",
+        "following_url": "https://api.github.com/users/ezmobius/following{/other_user}",
+        "gists_url": "https://api.github.com/users/ezmobius/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/ezmobius/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/ezmobius/subscriptions",
+        "organizations_url": "https://api.github.com/users/ezmobius/orgs",
+        "repos_url": "https://api.github.com/users/ezmobius/repos",
+        "events_url": "https://api.github.com/users/ezmobius/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/ezmobius/received_events",
+        "type": "User",
+        "site_admin": false
+    },
+    {
+        "login": "ivey",
+        "id": 6,
+        "avatar_url": "https://avatars.githubusercontent.com/u/6?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/ivey",
+        "html_url": "https://github.com/ivey",
+        "followers_url": "https://api.github.com/users/ivey/followers",
+        "following_url": "https://api.github.com/users/ivey/following{/other_user}",
+        "gists_url": "https://api.github.com/users/ivey/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/ivey/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/ivey/subscriptions",
+        "organizations_url": "https://api.github.com/users/ivey/orgs",
+        "repos_url": "https://api.github.com/users/ivey/repos",
+        "events_url": "https://api.github.com/users/ivey/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/ivey/received_events",
+        "type": "User",
+        "site_admin": false
+    },
+    {
+        "login": "evanphx",
+        "id": 7,
+        "avatar_url": "https://avatars.githubusercontent.com/u/7?v=3",
+        "gravatar_id": "",
+        "url": "https://api.github.com/users/evanphx",
+        "html_url": "https://github.com/evanphx",
+        "followers_url": "https://api.github.com/users/evanphx/followers",
+        "following_url": "https://api.github.com/users/evanphx/following{/other_user}",
+        "gists_url": "https://api.github.com/users/evanphx/gists{/gist_id}",
+        "starred_url": "https://api.github.com/users/evanphx/starred{/owner}{/repo}",
+        "subscriptions_url": "https://api.github.com/users/evanphx/subscriptions",
+        "organizations_url": "https://api.github.com/users/evanphx/orgs",
+        "repos_url": "https://api.github.com/users/evanphx/repos",
+        "events_url": "https://api.github.com/users/evanphx/events{/privacy}",
+        "received_events_url": "https://api.github.com/users/evanphx/received_events",
+        "type": "User",
+        "site_admin": false
+    }
+]
diff --git a/freemarker-generator-cli/site/sample/json/swagger-spec.json b/freemarker-generator-cli/site/sample/json/swagger-spec.json
new file mode 100644
index 0000000..35cf52c
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/json/swagger-spec.json
@@ -0,0 +1,210 @@
+{
+    "swagger": "2.0",
+    "info": {
+        "version": "1.0.0",
+        "title": "Swagger Petstore",
+        "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification",
+        "termsOfService": "http://swagger.io/terms/",
+        "contact": {
+            "name": "Swagger API Team",
+            "email": "apiteam@swagger.io",
+            "url": "http://swagger.io"
+        },
+        "license": {
+            "name": "Apache 2.0",
+            "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
+        }
+    },
+    "host": "petstore.swagger.io",
+    "basePath": "/api",
+    "schemes": [
+        "http"
+    ],
+    "consumes": [
+        "application/json"
+    ],
+    "produces": [
+        "application/json"
+    ],
+    "paths": {
+        "/pets": {
+            "get": {
+                "description": "Returns all pets from the system that the user has access to",
+                "operationId": "findPets",
+                "parameters": [
+                    {
+                        "name": "tags",
+                        "in": "query",
+                        "description": "tags to filter by",
+                        "required": false,
+                        "type": "array",
+                        "collectionFormat": "csv",
+                        "items": {
+                            "type": "string"
+                        }
+                    },
+                    {
+                        "name": "limit",
+                        "in": "query",
+                        "description": "maximum number of results to return",
+                        "required": false,
+                        "type": "integer",
+                        "format": "int32"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "pet response",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/Pet"
+                            }
+                        }
+                    },
+                    "default": {
+                        "description": "unexpected error",
+                        "schema": {
+                            "$ref": "#/definitions/Error"
+                        }
+                    }
+                }
+            },
+            "post": {
+                "description": "Creates a new pet in the store.  Duplicates are allowed",
+                "operationId": "addPet",
+                "parameters": [
+                    {
+                        "name": "pet",
+                        "in": "body",
+                        "description": "Pet to add to the store",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/NewPet"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "pet response",
+                        "schema": {
+                            "$ref": "#/definitions/Pet"
+                        }
+                    },
+                    "default": {
+                        "description": "unexpected error",
+                        "schema": {
+                            "$ref": "#/definitions/Error"
+                        }
+                    }
+                }
+            }
+        },
+        "/pets/{id}": {
+            "get": {
+                "description": "Returns a user based on a single ID, if the user does not have access to the pet",
+                "operationId": "find pet by id",
+                "parameters": [
+                    {
+                        "name": "id",
+                        "in": "path",
+                        "description": "ID of pet to fetch",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int64"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "pet response",
+                        "schema": {
+                            "$ref": "#/definitions/Pet"
+                        }
+                    },
+                    "default": {
+                        "description": "unexpected error",
+                        "schema": {
+                            "$ref": "#/definitions/Error"
+                        }
+                    }
+                }
+            },
+            "delete": {
+                "description": "Deletes a single pet based on the ID supplied",
+                "operationId": "deletePet",
+                "parameters": [
+                    {
+                        "name": "id",
+                        "in": "path",
+                        "description": "ID of pet to delete",
+                        "required": true,
+                        "type": "integer",
+                        "format": "int64"
+                    }
+                ],
+                "responses": {
+                    "204": {
+                        "description": "pet deleted"
+                    },
+                    "default": {
+                        "description": "unexpected error",
+                        "schema": {
+                            "$ref": "#/definitions/Error"
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "definitions": {
+        "Pet": {
+            "type": "object",
+            "allOf": [
+                {
+                    "$ref": "#/definitions/NewPet"
+                },
+                {
+                    "required": [
+                        "id"
+                    ],
+                    "properties": {
+                        "id": {
+                            "type": "integer",
+                            "format": "int64"
+                        }
+                    }
+                }
+            ]
+        },
+        "NewPet": {
+            "type": "object",
+            "required": [
+                "name"
+            ],
+            "properties": {
+                "name": {
+                    "type": "string"
+                },
+                "tag": {
+                    "type": "string"
+                }
+            }
+        },
+        "Error": {
+            "type": "object",
+            "required": [
+                "code",
+                "message"
+            ],
+            "properties": {
+                "code": {
+                    "type": "integer",
+                    "format": "int32"
+                },
+                "message": {
+                    "type": "string"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/properties/user_0001.properties b/freemarker-generator-cli/site/sample/properties/user_0001.properties
new file mode 100644
index 0000000..050b2f7
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/properties/user_0001.properties
@@ -0,0 +1,3 @@
+USER_ID=user_0001
+PASSWORD=password_0001
+ENVIRONMENTS=TENANT_B_FAT
diff --git a/freemarker-generator-cli/site/sample/properties/user_0002.properties b/freemarker-generator-cli/site/sample/properties/user_0002.properties
new file mode 100644
index 0000000..604b287
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/properties/user_0002.properties
@@ -0,0 +1,5 @@
+USER_ID=user_0002
+PASSWORD=password_0004
+SMS_OTP=000000
+ENVIRONMENTS=TENANT_C_FAT,TENANT_C_UAT
+DESCRIPTION=Many products
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/properties/user_0003.properties b/freemarker-generator-cli/site/sample/properties/user_0003.properties
new file mode 100644
index 0000000..1cf1877
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/properties/user_0003.properties
@@ -0,0 +1,3 @@
+USER_ID=user_0003
+PASSWORD=password_0003
+ENVIRONMENTS=TENANT_B_UAT
\ No newline at end of file
diff --git a/freemarker-generator-cli/site/sample/properties/user_0004.properties b/freemarker-generator-cli/site/sample/properties/user_0004.properties
new file mode 100644
index 0000000..0817b31
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/properties/user_0004.properties
@@ -0,0 +1,3 @@
+USER_ID=user_0004
+PASSWORD=password_0004
+ENVIRONMENTS=TENANT_A_FAT
diff --git a/freemarker-generator-cli/site/sample/xml/recipients.xml b/freemarker-generator-cli/site/sample/xml/recipients.xml
new file mode 100644
index 0000000..4bf4118
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/xml/recipients.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<recipients>
+    <person>
+        <name>John Smith</name>
+        <address>3033 Long Drive, Houston, TX</address>
+    </person>
+    <person>
+        <name>Janet Mason</name>
+        <address>11c Poplar Drive, Knoxville, TN</address>
+    </person>
+</recipients>
diff --git a/freemarker-generator-cli/site/sample/yaml/customer.yaml b/freemarker-generator-cli/site/sample/yaml/customer.yaml
new file mode 100644
index 0000000..35d8b23
--- /dev/null
+++ b/freemarker-generator-cli/site/sample/yaml/customer.yaml
@@ -0,0 +1,13 @@
+firstName: "John"
+lastName: "Doe"
+age: 31
+contactDetails:
+  - type: "mobile"
+    number: 123456789
+  - type: "landline"
+    number: 456786868
+homeAddress:
+  line: "Xyz, DEF Street"
+  city: "City Y"
+  state: "State Y"
+  zip: 345657
diff --git a/freemarker-generator-cli/src/main/assembly/app.xml b/freemarker-generator-cli/src/main/assembly/app.xml
new file mode 100644
index 0000000..179b4fb
--- /dev/null
+++ b/freemarker-generator-cli/src/main/assembly/app.xml
@@ -0,0 +1,34 @@
+<!--
+    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.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+    <id>app</id>
+    <formats>
+        <format>tar.gz</format>
+        <format>zip</format>
+    </formats>
+    <fileSets>
+        <fileSet>
+            <directory>${project.basedir}/target/appassembler</directory>
+            <outputDirectory>${file.separator}</outputDirectory>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/freemarker-generator-cli/src/main/assembly/dist.xml b/freemarker-generator-cli/src/main/assembly/dist.xml
new file mode 100644
index 0000000..80dc5b4
--- /dev/null
+++ b/freemarker-generator-cli/src/main/assembly/dist.xml
@@ -0,0 +1,41 @@
+<!--
+    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.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+    <id>dist</id>
+    <formats>
+        <format>tar.gz</format>
+    </formats>
+    <fileSets>
+        <fileSet>
+            <directory>${project.basedir}</directory>
+            <outputDirectory>${file.separator}</outputDirectory>
+            <useDefaultExcludes>true</useDefaultExcludes>
+            <excludes>
+                <exclude>./src/**</exclude>
+                <exclude>./target/**</exclude>
+                <exclude>./.idea/**</exclude>
+                <exclude>./*.iml</exclude>
+                <exclude>./pom.xml</exclude>
+                <exclude>./pom.xml</exclude>
+            </excludes>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/freemarker-generator-cli/src/main/config/freemarker-cli.properties b/freemarker-generator-cli/src/main/config/freemarker-cli.properties
new file mode 100644
index 0000000..af23b05
--- /dev/null
+++ b/freemarker-generator-cli/src/main/config/freemarker-cli.properties
@@ -0,0 +1,38 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+#############################################################################
+# General FreeMarker Configuration
+# See https://freemarker.apache.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-
+#############################################################################
+# freemarker.configuration.setting.locale=JVM default
+
+#############################################################################
+# Configure FreeMarker Tools (name -> implementation class)
+#############################################################################
+freemarker.tools.CSVTool=org.apache.freemarker.generator.tools.commonscsv.CommonsCSVTool
+freemarker.tools.ExecTool=org.apache.freemarker.generator.tools.commonsexec.CommonsExecTool
+freemarker.tools.ExcelTool=org.apache.freemarker.generator.tools.excel.ExcelTool
+freemarker.tools.FreeMarkerTool=org.apache.freemarker.generator.tools.freemarker.FreeMarkerTool
+freemarker.tools.GrokTool=org.apache.freemarker.generator.tools.grok.GrokTool
+freemarker.tools.JsonPathTool=org.apache.freemarker.generator.tools.jsonpath.JsonPathTool
+freemarker.tools.JsoupTool=org.apache.freemarker.generator.tools.jsoup.JsoupTool
+freemarker.tools.PropertiesTool=org.apache.freemarker.generator.tools.properties.PropertiesTool
+freemarker.tools.YamlTool=org.apache.freemarker.generator.tools.snakeyaml.SnakeYamlTool
+freemarker.tools.SystemTool=org.apache.freemarker.generator.tools.system.SystemTool
+freemarker.tools.UUIDTool=org.apache.freemarker.generator.tools.uuid.UUIDTool
+freemarker.tools.XmlTool=org.apache.freemarker.generator.tools.xml.XmlTool
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
new file mode 100644
index 0000000..5b7ac9b
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java
@@ -0,0 +1,221 @@
+/*
+ * 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.freemarker.generator.cli;
+
+import org.apache.freemarker.generator.base.util.ClosableUtils;
+import org.apache.freemarker.generator.base.util.StringUtils;
+import org.apache.freemarker.generator.cli.config.Settings;
+import org.apache.freemarker.generator.cli.picocli.GitVersionProvider;
+import org.apache.freemarker.generator.cli.task.FreeMarkerTask;
+import picocli.CommandLine;
+import picocli.CommandLine.ArgGroup;
+import picocli.CommandLine.Command;
+import picocli.CommandLine.Option;
+import picocli.CommandLine.Parameters;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+import java.util.stream.IntStream;
+
+import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.cli.config.Suppliers.propertiesSupplier;
+import static org.apache.freemarker.generator.cli.config.Suppliers.templateDirectorySupplier;
+
+@Command(description = "Apache FreeMarker CLI", name = "freemarker-cli", mixinStandardHelpOptions = true, versionProvider = GitVersionProvider.class)
+public class Main implements Callable<Integer> {
+
+    private static final String FREEMARKER_CLI_PROPERTY_FILE = "freemarker-cli.properties";
+
+    @ArgGroup(multiplicity = "1")
+    private TemplateSourceOptions templateSourceOptions;
+
+    private static final class TemplateSourceOptions {
+        @Option(names = { "-t", "--template" }, description = "FreeMarker template to render")
+        private String template;
+
+        @Option(names = { "-i", "--interactive" }, description = "Interactive FreeMarker template")
+        private String interactiveTemplate;
+    }
+
+    @Option(names = { "-b", "--basedir" }, description = "Optional template base directory")
+    private String baseDir;
+
+    @Option(names = { "-D", "--system-property" }, description = "Set system property")
+    private Properties systemProperties;
+
+    @Option(names = { "-e", "--input-encoding" }, description = "Encoding of input documents", defaultValue = "UTF-8")
+    private String inputEncoding;
+
+    @Option(names = { "-E", "--expose-env" }, description = "Expose environment variables and user-supplied properties globally")
+    private boolean isEnvironmentExposed;
+
+    @Option(names = { "-l", "--locale" }, description = "Locale being used for the output, e.g. 'en_US'")
+    private String locale;
+
+    @Option(names = { "-o", "--output" }, description = "Output file")
+    private String outputFile;
+
+    @Option(names = { "-P", "--param" }, description = "Set parameter")
+    private Map<String, String> parameters;
+
+    @Option(names = { "--config" }, defaultValue = FREEMARKER_CLI_PROPERTY_FILE, description = "FreeMarker CLI configuration file")
+    private String configFile;
+
+    @Option(names = { "--include" }, description = "File pattern for document input directory")
+    private String include;
+
+    @Option(names = { "--exclude" }, description = "File pattern for document input directory")
+    private String exclude;
+
+    @Option(names = { "--output-encoding" }, description = "Encoding of output, e.g. UTF-8", defaultValue = "UTF-8")
+    private String outputEncoding;
+
+    @Option(names = { "--stdin" }, description = "Read input document from stdin")
+    private boolean readFromStdin;
+
+    @Option(names = { "--times" }, defaultValue = "1", description = "Re-run X times for profiling")
+    private int times;
+
+    @Parameters(description = "List of input files and/or input directories")
+    private List<String> sources;
+
+    /** User-supplied command line parameters */
+    private final String[] args;
+
+    /** User-supplied writer (used mainly for unit testing) */
+    private Writer userSuppliedWriter;
+
+    private Main(String[] args) {
+        this.args = requireNonNull(args);
+    }
+
+    private Main(String[] args, Writer userSuppliedWriter) {
+        this.args = requireNonNull(args);
+        this.userSuppliedWriter = requireNonNull(userSuppliedWriter);
+    }
+
+    public static void main(String[] args) {
+        try {
+            System.exit(execute(args));
+        } catch (RuntimeException e) {
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
+    }
+
+    public static int execute(String[] args) {
+        return new CommandLine(new Main(args)).execute(args);
+    }
+
+    /**
+     * Used for testing to inject a writer.
+     *
+     * @param args   command line parameters
+     * @param writer writer used for template rendering
+     * @return exit code
+     */
+    public static int execute(String[] args, Writer writer) {
+        return new CommandLine(new Main(args, writer)).execute(args);
+    }
+
+    @Override
+    public Integer call() {
+        return IntStream.range(0, times).map(i -> onCall()).max().orElse(0);
+    }
+
+    private Integer onCall() {
+        updateSystemProperties();
+
+        final Properties configuration = loadFreeMarkerCliConfiguration(configFile);
+        final List<File> templateDirectories = getTemplateDirectories(baseDir);
+        final Settings settings = settings(configuration, templateDirectories);
+
+        try {
+            final FreeMarkerTask freeMarkerTask = new FreeMarkerTask(settings);
+            return freeMarkerTask.call();
+        } finally {
+            if (settings.hasOutputFile()) {
+                ClosableUtils.closeQuietly(settings.getWriter());
+            }
+        }
+    }
+
+    private Settings settings(Properties configuration, List<File> templateDirectories) {
+        return Settings.builder()
+                .isEnvironmentExposed(isEnvironmentExposed)
+                .isReadFromStdin(readFromStdin)
+                .setArgs(args)
+                .setConfiguration(configuration)
+                .setInclude(include)
+                .setExclude(exclude)
+                .setInputEncoding(inputEncoding)
+                .setInteractiveTemplate(templateSourceOptions.interactiveTemplate)
+                .setLocale(locale)
+                .setOutputEncoding(outputEncoding)
+                .setOutputFile(outputFile)
+                .setParameters(parameters != null ? parameters : new HashMap<>())
+                .setSources(sources != null ? sources : new ArrayList<>())
+                .setSystemProperties(systemProperties != null ? systemProperties : new Properties())
+                .setTemplateDirectories(templateDirectories)
+                .setTemplateName(templateSourceOptions.template)
+                .setWriter(writer(outputFile, outputEncoding))
+                .build();
+    }
+
+    private Writer writer(String outputFile, String ouputEncoding) {
+        try {
+            if (userSuppliedWriter != null) {
+                return userSuppliedWriter;
+            } else if (!StringUtils.isEmpty(outputFile)) {
+                return new BufferedWriter(new FileWriter(outputFile));
+            } else {
+                return new BufferedWriter(new OutputStreamWriter(System.out, ouputEncoding));
+            }
+        } catch (IOException e) {
+            throw new RuntimeException("Unable to create writer", e);
+        }
+    }
+
+    private void updateSystemProperties() {
+        if (systemProperties != null && !systemProperties.isEmpty()) {
+            System.getProperties().putAll(systemProperties);
+        }
+    }
+
+    private static List<File> getTemplateDirectories(String baseDir) {
+        return templateDirectorySupplier(baseDir).get();
+    }
+
+    private static Properties loadFreeMarkerCliConfiguration(String fileName) {
+        final Properties properties = propertiesSupplier(fileName).get();
+        if (properties != null) {
+            return properties;
+        } else {
+            throw new RuntimeException("FreeMarker CLI configuration file not found: " + fileName);
+        }
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java
new file mode 100644
index 0000000..c7d4ea7
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplier.java
@@ -0,0 +1,85 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import freemarker.cache.TemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Version;
+
+import java.util.Properties;
+import java.util.function.Supplier;
+
+import static freemarker.core.TemplateClassResolver.ALLOWS_NOTHING_RESOLVER;
+import static freemarker.template.Configuration.VERSION_2_3_29;
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Stream.of;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Configuration.SETTING_PREFIX;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.filterKeyPrefix;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.removeKeyPrefix;
+
+/**
+ * Supply a FreeMarker configuration.
+ */
+public class ConfigurationSupplier implements Supplier<Configuration> {
+
+    private static final Version FREEMARKER_VERSION = VERSION_2_3_29;
+
+    private final Settings settings;
+    private final Supplier<TemplateLoader> templateLoader;
+
+    public ConfigurationSupplier(Settings settings, Supplier<TemplateLoader> templateLoader) {
+        this.settings = requireNonNull(settings);
+        this.templateLoader = requireNonNull(templateLoader);
+    }
+
+    @Override
+    public Configuration get() {
+        try {
+            final Configuration configuration = new Configuration(FREEMARKER_VERSION);
+
+            // apply safe default configuration
+            configuration.setAPIBuiltinEnabled(false);
+            configuration.setNewBuiltinClassResolver(ALLOWS_NOTHING_RESOLVER);
+
+            // apply all "freemarker.configuration.setting" values
+            configuration.setSettings(freeMarkerConfigurationSettings());
+
+            // override current configuration with caller-provided settings
+            configuration.setDefaultEncoding(settings.getTemplateEncoding().name());
+            configuration.setLocale(settings.getLocale());
+            configuration.setOutputEncoding(settings.getOutputEncoding().name());
+            configuration.setTemplateLoader(templateLoader.get());
+
+            return configuration;
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to create FreeMarker configuration", e);
+        }
+    }
+
+    /**
+     * Slice through the given configuration to extract
+     * FreeMarker configuration settings.
+     *
+     * @return FreeMarker configuration settings
+     */
+    private Properties freeMarkerConfigurationSettings() {
+        return of(settings.getConfiguration())
+                .map(p -> filterKeyPrefix(p, SETTING_PREFIX))
+                .map(p -> removeKeyPrefix(p, SETTING_PREFIX))
+                .findFirst().get();
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
new file mode 100644
index 0000000..c1a63b3
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
@@ -0,0 +1,448 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.base.FreeMarkerConstants.Model;
+import org.apache.freemarker.generator.base.util.LocaleUtils;
+import org.apache.freemarker.generator.base.util.NonClosableWriterWrapper;
+
+import java.io.File;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Collections.emptyList;
+import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Configuration.LOCALE_KEY;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_CHARSET;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.DEFAULT_LOCALE;
+import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty;
+
+/**
+ * Capture all the settings required for rendering a FreeMarker template.
+ */
+public class Settings {
+
+    /** FreeMarker CLI configuration containing tool mappings, etc. */
+    private final Properties configuration;
+
+    /** Command line arguments */
+    private final List<String> args;
+
+    /** List of FreeMarker template directories */
+    private final List<File> templateDirectories;
+
+    /** Name of the template to be loaded and rendered  */
+    private final String templateName;
+
+    /** Template provided by the user interactivly */
+    private final String interactiveTemplate;
+
+    /** Encoding of input files */
+    private final Charset inputEncoding;
+
+    /** Encoding of output files */
+    private final Charset outputEncoding;
+
+    /** Enable verbose mode (currently not used) **/
+    private final boolean verbose;
+
+    /** Optional output file if not written to stdout */
+    private final File outputFile;
+
+    /** Optional include pattern for recursice directly search of source files */
+    private final String include;
+
+    /** Optional exclude pattern for recursice directly search of source files */
+    private final String exclude;
+
+    /** The locale used for rendering the template */
+    private final Locale locale;
+
+    /** Read from stdin? */
+    private final boolean isReadFromStdin;
+
+    /** Expose environment variables globally in the data model? */
+    private final boolean isEnvironmentExposed;
+
+    /** User-supplied list of source files or directories */
+    private final List<String> sources;
+
+    /** User-supplied parameters */
+    private final Map<String, String> parameters;
+
+    /** User-supplied system properties */
+    private final Properties sytemProperties;
+
+    /** The writer used for rendering templates, e.g. stdout or a file writer */
+    private final Writer writer;
+
+    private Settings(
+            Properties configuration,
+            List<String> args,
+            List<File> templateDirectories,
+            String template,
+            String interactiveTemplate,
+            Charset inputEncoding,
+            Charset outputEncoding,
+            boolean verbose,
+            File outputFile,
+            String include,
+            String exclude,
+            Locale locale,
+            boolean isReadFromStdin,
+            boolean isEnvironmentExposed,
+            List<String> sources,
+            Map<String, String> parameters,
+            Properties sytemProperties,
+            Writer writer) {
+        if (isEmpty(template) && isEmpty(interactiveTemplate)) {
+            throw new IllegalArgumentException("Either 'template' or 'interactiveTemplate' must be provided");
+        }
+
+        this.args = requireNonNull(args);
+        this.templateDirectories = requireNonNull(templateDirectories);
+        this.templateName = template;
+        this.interactiveTemplate = interactiveTemplate;
+        this.inputEncoding = inputEncoding;
+        this.outputEncoding = outputEncoding;
+        this.verbose = verbose;
+        this.outputFile = outputFile;
+        this.include = include;
+        this.exclude = exclude;
+        this.locale = requireNonNull(locale);
+        this.isReadFromStdin = isReadFromStdin;
+        this.isEnvironmentExposed = isEnvironmentExposed;
+        this.sources = requireNonNull(sources);
+        this.parameters = requireNonNull(parameters);
+        this.sytemProperties = requireNonNull(sytemProperties);
+        this.configuration = requireNonNull(configuration);
+        this.writer = new NonClosableWriterWrapper(requireNonNull(writer));
+    }
+
+    public static SettingsBuilder builder() {
+        return new SettingsBuilder();
+    }
+
+    public Properties getConfiguration() {
+        return configuration;
+    }
+
+    public List<String> getArgs() {
+        return args;
+    }
+
+    public List<File> getTemplateDirectories() {
+        return templateDirectories;
+    }
+
+    public String getTemplateName() {
+        return templateName;
+    }
+
+    public String getInteractiveTemplate() {
+        return interactiveTemplate;
+    }
+
+    public Charset getInputEncoding() {
+        return inputEncoding;
+    }
+
+    public Charset getOutputEncoding() {
+        return outputEncoding;
+    }
+
+    public Charset getTemplateEncoding() {
+        return UTF_8;
+    }
+
+    public boolean isVerbose() {
+        return verbose;
+    }
+
+    public File getOutputFile() {
+        return outputFile;
+    }
+
+    public String getInclude() {
+        return include;
+    }
+
+    public String getExclude() {
+        return exclude;
+    }
+
+    public Locale getLocale() {
+        return locale;
+    }
+
+    public boolean isReadFromStdin() {
+        return isReadFromStdin;
+    }
+
+    public boolean isEnvironmentExposed() {
+        return isEnvironmentExposed;
+    }
+
+    public List<String> getSources() {
+        return sources;
+    }
+
+    public Map<String, String> getParameters() {
+        return parameters;
+    }
+
+    public Properties getSytemProperties() {
+        return sytemProperties;
+    }
+
+    public boolean hasOutputFile() {
+        return outputFile != null;
+    }
+
+    public Writer getWriter() {
+        return writer;
+    }
+
+    /**
+     * Create a settings map only exposing the most important information
+     * to avoid coupling between "Settings" and the various tools.
+     *
+     * @return Map with settings
+     */
+    public Map<String, Object> toMap() {
+        final Map<String, Object> result = new HashMap<>();
+        result.put(Model.FREEMARKER_CLI_ARGS, getArgs());
+        result.put(Model.FREEMARKER_LOCALE, getLocale());
+        result.put(Model.FREEMARKER_TEMPLATE_DIRECTORIES, getTemplateDirectories());
+        result.put(Model.FREEMARKER_USER_PARAMETERS, getParameters());
+        result.put(Model.FREEMARKER_USER_SYSTEM_PROPERTIES, getSytemProperties());
+        result.put(Model.FREEMARKER_WRITER, getWriter());
+        return result;
+    }
+
+    public boolean isInteractiveTemplate() {
+        return interactiveTemplate != null;
+    }
+
+    @Override
+    public String toString() {
+        return "Settings{" +
+                "configuration=" + configuration +
+                ", args=" + args +
+                ", templateDirectories=" + templateDirectories +
+                ", templateName='" + templateName + '\'' +
+                ", interactiveTemplate='" + interactiveTemplate + '\'' +
+                ", inputEncoding=" + inputEncoding +
+                ", outputEncoding=" + outputEncoding +
+                ", verbose=" + verbose +
+                ", outputFile=" + outputFile +
+                ", include='" + include + '\'' +
+                ", exclude='" + include + '\'' +
+                ", locale=" + locale +
+                ", isReadFromStdin=" + isReadFromStdin +
+                ", isEnvironmentExposed=" + isEnvironmentExposed +
+                ", sources=" + sources +
+                ", properties=" + parameters +
+                ", sytemProperties=" + sytemProperties +
+                ", writer=" + writer +
+                ", templateEncoding=" + getTemplateEncoding() +
+                ", readFromStdin=" + isReadFromStdin() +
+                ", environmentExposed=" + isEnvironmentExposed() +
+                ", hasOutputFile=" + hasOutputFile() +
+                ", toMap=" + toMap() +
+                '}';
+    }
+
+    public static class SettingsBuilder {
+        private List<String> args;
+        private List<File> templateDirectories;
+        private String templateName;
+        private String interactiveTemplate;
+        private String inputEncoding;
+        private String outputEncoding;
+        private boolean verbose;
+        private String outputFile;
+        private String include;
+        private String exclude;
+        private String locale;
+        private boolean isReadFromStdin;
+        private boolean isEnvironmentExposed;
+        private List<String> sources;
+        private Map<String, String> parameters;
+        private Properties systemProperties;
+        private Properties configuration;
+        private Writer writer;
+
+        private SettingsBuilder() {
+            this.args = emptyList();
+            this.configuration = new Properties();
+            this.locale = DEFAULT_LOCALE.toString();
+            this.parameters = new HashMap<>();
+            this.systemProperties = new Properties();
+            this.setInputEncoding(DEFAULT_CHARSET.name());
+            this.setOutputEncoding(DEFAULT_CHARSET.name());
+            this.sources = emptyList();
+            this.templateDirectories = emptyList();
+        }
+
+        public SettingsBuilder setArgs(String[] args) {
+            if (args == null) {
+                this.args = emptyList();
+            } else {
+                this.args = Arrays.asList(args);
+            }
+
+            return this;
+        }
+
+        public SettingsBuilder setTemplateDirectories(List<File> list) {
+            this.templateDirectories = list;
+            return this;
+        }
+
+        public SettingsBuilder setTemplateName(String templateName) {
+            this.templateName = templateName;
+            return this;
+        }
+
+        public SettingsBuilder setInteractiveTemplate(String interactiveTemplate) {
+            this.interactiveTemplate = interactiveTemplate;
+            return this;
+        }
+
+        public SettingsBuilder setInputEncoding(String inputEncoding) {
+            if (inputEncoding != null) {
+                this.inputEncoding = inputEncoding;
+            }
+            return this;
+        }
+
+        public SettingsBuilder setOutputEncoding(String outputEncoding) {
+            if (outputEncoding != null) {
+                this.outputEncoding = outputEncoding;
+            }
+            return this;
+        }
+
+        public SettingsBuilder setVerbose(boolean verbose) {
+            this.verbose = verbose;
+            return this;
+        }
+
+        public SettingsBuilder setOutputFile(String outputFile) {
+            this.outputFile = outputFile;
+            return this;
+        }
+
+        public SettingsBuilder setInclude(String include) {
+            this.include = include;
+            return this;
+        }
+
+        public SettingsBuilder setExclude(String exclude) {
+            this.exclude = exclude;
+            return this;
+        }
+
+        public SettingsBuilder setLocale(String locale) {
+            this.locale = locale;
+            return this;
+        }
+
+        public SettingsBuilder isReadFromStdin(boolean stdin) {
+            this.isReadFromStdin = stdin;
+            return this;
+        }
+
+        public SettingsBuilder isEnvironmentExposed(boolean isEnvironmentExposed) {
+            this.isEnvironmentExposed = isEnvironmentExposed;
+            return this;
+        }
+
+        public SettingsBuilder setSources(List<String> sources) {
+            this.sources = sources;
+            return this;
+        }
+
+        public SettingsBuilder setParameters(Map<String, String> parameters) {
+            if (parameters != null) {
+                this.parameters = parameters;
+            }
+            return this;
+        }
+
+        public SettingsBuilder setSystemProperties(Properties systemProperties) {
+            if(systemProperties != null) {
+                this.systemProperties = systemProperties;
+            }
+            return this;
+        }
+
+        public SettingsBuilder setConfiguration(Properties configuration) {
+            if (configuration != null) {
+                this.configuration = configuration;
+            }
+            return this;
+        }
+
+        public SettingsBuilder setWriter(Writer writer) {
+            this.writer = writer;
+            return this;
+        }
+
+        public Settings build() {
+            final Charset inputEncoding = Charset.forName(this.inputEncoding);
+            final Charset outputEncoding = Charset.forName(this.outputEncoding);
+            final String currLocale = locale != null ? locale : getDefaultLocale();
+            final File currOutputFile = outputFile != null ? new File(outputFile) : null;
+
+            return new Settings(
+                    configuration,
+                    args,
+                    templateDirectories,
+                    templateName,
+                    interactiveTemplate,
+                    inputEncoding,
+                    outputEncoding,
+                    verbose,
+                    currOutputFile,
+                    include,
+                    exclude,
+                    LocaleUtils.parseLocale(currLocale),
+                    isReadFromStdin,
+                    isEnvironmentExposed,
+                    sources,
+                    parameters,
+                    systemProperties,
+                    writer
+            );
+        }
+
+        private String getDefaultLocale() {
+            return configuration.getProperty(
+                    LOCALE_KEY,
+                    System.getProperty(LOCALE_KEY, DEFAULT_LOCALE.toString()));
+        }
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
new file mode 100644
index 0000000..084be3d
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
@@ -0,0 +1,48 @@
+package org.apache.freemarker.generator.cli.config;
+
+import freemarker.cache.TemplateLoader;
+import org.apache.freemarker.generator.base.document.DocumentsSupplier;
+import org.apache.freemarker.generator.base.file.PropertiesClassPathSupplier;
+import org.apache.freemarker.generator.base.file.PropertiesFileSystemSupplier;
+import org.apache.freemarker.generator.base.file.PropertiesSupplier;
+
+import java.util.function.Supplier;
+
+/**
+ * Convenience methods to create suppliers.
+ */
+public class Suppliers {
+
+    public static ConfigurationSupplier configurationSupplier(Settings settings) {
+        return new ConfigurationSupplier(settings, templateLoaderSupplier(settings));
+    }
+
+    public static ConfigurationSupplier configurationSupplier(Settings settings, Supplier<TemplateLoader> templateLoader) {
+        return new ConfigurationSupplier(settings, templateLoader);
+    }
+
+    public static TemplateDirectorySupplier templateDirectorySupplier(String userDefinedTemplateDir) {
+        return new TemplateDirectorySupplier(userDefinedTemplateDir);
+    }
+
+    public static TemplateLoaderSupplier templateLoaderSupplier(Settings settings) {
+        return new TemplateLoaderSupplier(settings.getTemplateDirectories());
+    }
+
+    public static ToolsSupplier toolsSupplier(Settings settings) {
+        return new ToolsSupplier(settings.getConfiguration(), settings.toMap());
+    }
+
+    public static DocumentsSupplier documentsSupplier(Settings settings) {
+        return new DocumentsSupplier(settings.getSources(),
+                settings.getInclude(),
+                settings.getExclude(),
+                settings.getInputEncoding());
+    }
+
+    public static PropertiesSupplier propertiesSupplier(String fileName) {
+        return new PropertiesSupplier(
+                new PropertiesFileSystemSupplier(fileName),
+                new PropertiesClassPathSupplier(fileName));
+    }
+}
\ No newline at end of file
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java
new file mode 100644
index 0000000..976c4d4
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java
@@ -0,0 +1,100 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import org.apache.commons.io.FilenameUtils;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.function.Supplier;
+
+import static java.util.Arrays.asList;
+import static java.util.stream.Collectors.toList;
+
+/**
+ * Determine a list of directories to load a relative template file in the following order
+ * <ol>
+ *    <li>User-defined template directory</li>
+ *    <li>Current working directory</li>
+ *    <li>~/.freemarker-cli</li>
+ *    <li>Application installation directory</li>
+ * </ol>
+ */
+public class TemplateDirectorySupplier implements Supplier<List<File>> {
+
+    /** Installation directory of "freemarker-cli" when invoked with shell wrapper */
+    private static final String APP_HOME = "app.home";
+
+    /** Current working directory when invoked with shell wrapper */
+    private static final String USER_DIR = "user.dir";
+
+    /** Home directory of the user */
+    private static final String USER_HOME = "user.home";
+
+    /** The user's optional "freemarker-cli" directory */
+    private static final String USER_CONFIGURATION_DIR_NAME = ".freemarker-cli";
+
+    /** User-defined template directory */
+    private final String userDefinedTemplateDir;
+
+    public TemplateDirectorySupplier(String userDefinedTemplateDir) {
+        this.userDefinedTemplateDir = userDefinedTemplateDir;
+    }
+
+    @Override
+    public List<File> get() {
+        return templateLoaderDirectories().stream()
+                .filter(Objects::nonNull)
+                .map(FilenameUtils::normalize)
+                .map(File::new)
+                .distinct()
+                .filter(TemplateDirectorySupplier::isDirectory)
+                .collect(toList());
+    }
+
+    private List<String> templateLoaderDirectories() {
+        return new ArrayList<>(asList(
+                userTemplateDirName(),
+                currentWorkingDirName(),
+                userConfigDirName(),
+                applicationDirName()
+        ));
+    }
+
+    private String userTemplateDirName() {
+        return userDefinedTemplateDir != null ? new File(userDefinedTemplateDir).getAbsolutePath() : null;
+    }
+
+    private String userConfigDirName() {
+        final String userHomeDir = System.getProperty(USER_HOME);
+        return new File(userHomeDir, USER_CONFIGURATION_DIR_NAME).getAbsolutePath();
+    }
+
+    private static String applicationDirName() {
+        return System.getProperty(APP_HOME);
+    }
+
+    private static String currentWorkingDirName() {
+        return System.getProperty(USER_DIR);
+    }
+
+    private static boolean isDirectory(File directory) {
+        return directory != null && directory.exists() && directory.isDirectory() && directory.canRead();
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateLoaderSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateLoaderSupplier.java
new file mode 100644
index 0000000..89182dd
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateLoaderSupplier.java
@@ -0,0 +1,60 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.cache.MultiTemplateLoader;
+import freemarker.cache.TemplateLoader;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.function.Supplier;
+
+import static java.util.Objects.requireNonNull;
+
+/**
+ * Supply a FreeMarker template loader using a list of directories.
+ */
+public class TemplateLoaderSupplier implements Supplier<TemplateLoader> {
+
+    private final List<File> templateDirectories;
+
+    public TemplateLoaderSupplier(List<File> templateDirectories) {
+        this.templateDirectories = requireNonNull(templateDirectories);
+    }
+
+    @Override
+    public TemplateLoader get() {
+        return multiTemplateLoader(templateDirectories);
+    }
+
+    private static MultiTemplateLoader multiTemplateLoader(List<File> templateDirectories) {
+        return new MultiTemplateLoader(
+                templateDirectories.stream()
+                        .map(TemplateLoaderSupplier::fileTemplateLoader)
+                        .toArray(TemplateLoader[]::new));
+    }
+
+    private static FileTemplateLoader fileTemplateLoader(File directory) {
+        try {
+            return new FileTemplateLoader(directory);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to create template loader: " + directory, e);
+        }
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ToolsSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ToolsSupplier.java
new file mode 100644
index 0000000..e775eb1
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/ToolsSupplier.java
@@ -0,0 +1,79 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.base.tools.ToolsFactory;
+
+import java.util.Map;
+import java.util.Properties;
+import java.util.function.Supplier;
+
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Collectors.toMap;
+import static java.util.stream.Stream.of;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Configuration.TOOLS_PREFIX;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.filterKeyPrefix;
+import static org.apache.freemarker.generator.base.util.PropertiesTransformer.removeKeyPrefix;
+
+/**
+ * Supplies FreeMarker tools based on the provided settings.
+ */
+public class ToolsSupplier implements Supplier<Map<String, Object>> {
+
+    private final Properties configuration;
+    private final Map<String, Object> settings;
+
+    /**
+     * Constructor.
+     *
+     * @param configuration Containing "freemarker.tools.XXX=class"
+     * @param settings      Settings passed to the instantiated tools
+     */
+    public ToolsSupplier(Properties configuration, Map<String, Object> settings) {
+        this.configuration = requireNonNull(configuration);
+        this.settings = requireNonNull(settings);
+    }
+
+    @Override
+    public Map<String, Object> get() {
+        final Properties properties = toolsProperties();
+        return properties.stringPropertyNames().stream()
+                .filter(key -> toolExists(properties.getProperty(key)))
+                .collect(toMap(key -> key, key -> tool(properties.getProperty(key), settings)));
+    }
+
+    /**
+     * Slice through the properties to create a list of "tool" to
+     * implementation class mapping.
+     *
+     * @return tool properties
+     */
+    private Properties toolsProperties() {
+        return of(configuration)
+                .map(p -> filterKeyPrefix(p, TOOLS_PREFIX))
+                .map(p -> removeKeyPrefix(p, TOOLS_PREFIX))
+                .findFirst().get();
+    }
+
+    private static boolean toolExists(String clazzName) {
+        return ToolsFactory.exists(clazzName);
+    }
+
+    private static Object tool(String clazzName, Map<String, Object> settings) {
+        return ToolsFactory.create(clazzName, settings);
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java
new file mode 100644
index 0000000..bfa3f3d
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java
@@ -0,0 +1,56 @@
+/*
+ * 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.freemarker.generator.cli.picocli;
+
+import org.apache.freemarker.generator.cli.Main;
+import picocli.CommandLine.IVersionProvider;
+
+import java.io.InputStream;
+import java.util.Properties;
+
+import static java.lang.String.format;
+
+public class GitVersionProvider implements IVersionProvider {
+
+    private final String gitBuildVersion;
+    private final String gitCommitId;
+    private final String gitCommitTime;
+
+    public GitVersionProvider() {
+        final Properties gitProperties = getGitProperties();
+        this.gitBuildVersion = gitProperties.getProperty("git.build.version", "unknown");
+        this.gitCommitId = gitProperties.getProperty("git.commit.id", "unknown");
+        this.gitCommitTime = gitProperties.getProperty("git.commit.time", "unknown");
+    }
+
+    @Override
+    public String[] getVersion() {
+        return new String[] { format("version=%s, time=%s, commit=%s", gitBuildVersion, gitCommitTime, gitCommitId) };
+    }
+
+    private static Properties getGitProperties() {
+        final Properties properties = new Properties();
+        try (InputStream is = Main.class.getClassLoader().getResourceAsStream("git.properties")) {
+            if (is != null) {
+                properties.load(is);
+            }
+        } catch (Exception e) {
+            return properties;
+        }
+        return properties;
+    }
+}
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
new file mode 100644
index 0000000..c09faae
--- /dev/null
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
@@ -0,0 +1,165 @@
+/*
+ * 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.freemarker.generator.cli.task;
+
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import org.apache.commons.io.FileUtils;
+import org.apache.freemarker.generator.base.FreeMarkerConstants.Location;
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.apache.freemarker.generator.base.document.Documents;
+import org.apache.freemarker.generator.cli.config.Settings;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.function.Supplier;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Location.STDIN;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model.DOCUMENTS;
+import static org.apache.freemarker.generator.cli.config.Suppliers.configurationSupplier;
+import static org.apache.freemarker.generator.cli.config.Suppliers.documentsSupplier;
+import static org.apache.freemarker.generator.cli.config.Suppliers.toolsSupplier;
+
+/**
+ * Renders a FreeMarker template.
+ */
+public class FreeMarkerTask implements Callable<Integer> {
+
+    private static final int SUCCESS = 0;
+
+    private final Settings settings;
+    private final Supplier<Map<String, Object>> toolsSupplier;
+    private final Supplier<List<Document>> documentsSupplier;
+    private final Supplier<Configuration> configurationSupplier;
+
+    public FreeMarkerTask(Settings settings) {
+        this(settings, toolsSupplier(settings), documentsSupplier(settings), configurationSupplier(settings));
+    }
+
+    public FreeMarkerTask(Settings settings,
+                          Supplier<Map<String, Object>> toolsSupplier,
+                          Supplier<List<Document>> documentsSupplier,
+                          Supplier<Configuration> configurationSupplier) {
+        this.settings = requireNonNull(settings);
+        this.toolsSupplier = requireNonNull(toolsSupplier);
+        this.documentsSupplier = requireNonNull(documentsSupplier);
+        this.configurationSupplier = requireNonNull(configurationSupplier);
+    }
+
+    @Override
+    public Integer call() {
+        final Template template = template(settings, configurationSupplier);
+        try (Writer writer = settings.getWriter(); Documents documents = documents(settings, documentsSupplier)) {
+            final Map<String, Object> dataModel = dataModel(settings, documents, toolsSupplier);
+            template.process(dataModel, writer);
+            return SUCCESS;
+        } catch (RuntimeException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to render FreeMarker template: " + template.getName(), e);
+        }
+    }
+
+    private static Documents documents(Settings settings, Supplier<List<Document>> documentsSupplier) {
+        final List<Document> documents = new ArrayList<>(documentsSupplier.get());
+
+        // Add optional document from STDIN at the start of the list since
+        // this allows easy sequence slicing in FreeMarker.
+        if (settings.isReadFromStdin()) {
+            documents.add(0, DocumentFactory.create(STDIN, System.in, STDIN, UTF_8));
+        }
+
+        return new Documents(documents);
+    }
+
+    /**
+     * Loading FreeMarker templates from absolute paths is not encouraged due to security
+     * concern (see https://freemarker.apache.org/docs/pgui_config_templateloading.html#autoid_42)
+     * which are mostly irrelevant when running on the command line. So we resolve the absolute file
+     * instead of relying on existing template loaders.
+     *
+     * @param settings              Settings
+     * @param configurationSupplier Supplies FreeMarker configuration
+     * @return FreeMarker template
+     */
+    private static Template template(Settings settings, Supplier<Configuration> configurationSupplier) {
+        final String templateName = settings.getTemplateName();
+        final Configuration configuration = configurationSupplier.get();
+
+        try {
+            if (settings.isInteractiveTemplate()) {
+                return interactiveTemplate(settings, configuration);
+            } else if (isAbsoluteTemplateFile(settings)) {
+                return fileTemplate(settings, configuration);
+            } else {
+                return configuration.getTemplate(templateName);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to load template: " + templateName, e);
+        }
+    }
+
+    private static Map<String, Object> dataModel(Settings settings, Documents documents, Supplier<Map<String, Object>> tools) {
+        final Map<String, Object> dataModel = new HashMap<>();
+
+        dataModel.put(DOCUMENTS, documents);
+
+        if (settings.isEnvironmentExposed()) {
+            // add all system & user-supplied properties as top-level entries
+            dataModel.putAll(System.getenv());
+            dataModel.putAll(settings.getParameters());
+        }
+
+        dataModel.putAll(tools.get());
+
+        return dataModel;
+    }
+
+    private static boolean isAbsoluteTemplateFile(Settings settings) {
+        final File file = new File(settings.getTemplateName());
+        return file.isAbsolute() && file.exists() & !file.isDirectory();
+    }
+
+    private static Template fileTemplate(Settings settings, Configuration configuration) {
+        final String templateName = settings.getTemplateName();
+        final File templateFile = new File(templateName);
+        try {
+            final String content = FileUtils.readFileToString(templateFile, settings.getTemplateEncoding());
+            return new Template(templateName, content, configuration);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to load template: " + templateName, e);
+        }
+    }
+
+    private static Template interactiveTemplate(Settings settings, Configuration configuration) {
+        try {
+            return new Template(Location.INTERACTIVE, settings.getInteractiveTemplate(), configuration);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to load interactive template", e);
+        }
+    }
+
+}
diff --git a/freemarker-generator-cli/src/main/resources/freemarker-cli.properties b/freemarker-generator-cli/src/main/resources/freemarker-cli.properties
new file mode 100644
index 0000000..8dd5f59
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/freemarker-cli.properties
@@ -0,0 +1,38 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+#############################################################################
+# General FreeMarker Configuration
+# See https://freemarker.apache.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-
+#############################################################################
+# freemarker.configuration.setting.locale=JVM default
+
+#############################################################################
+# Configure FreeMarker Tools (name -> implementation class)
+#############################################################################
+freemarker.tools.CSVTool=org.apache.freemarker.generator.tools.commonscsv.CommonsCSVTool
+freemarker.tools.ExcelTool=org.apache.freemarker.generator.tools.excel.ExcelTool
+freemarker.tools.ExecTool=org.apache.freemarker.generator.tools.commonsexec.CommonsExecTool
+freemarker.tools.FreeMarkerTool=org.apache.freemarker.generator.tools.freemarker.FreeMarkerTool
+freemarker.tools.GrokTool=org.apache.freemarker.generator.tools.grok.GrokTool
+freemarker.tools.JsonPathTool=org.apache.freemarker.generator.tools.jsonpath.JsonPathTool
+freemarker.tools.JsoupTool=org.apache.freemarker.generator.tools.jsoup.JsoupTool
+freemarker.tools.PropertiesTool=org.apache.freemarker.generator.tools.properties.PropertiesTool
+freemarker.tools.SystemTool=org.apache.freemarker.generator.tools.system.SystemTool
+freemarker.tools.UUIDTool=org.apache.freemarker.generator.tools.uuid.UUIDTool
+freemarker.tools.XmlTool=org.apache.freemarker.generator.tools.xml.XmlTool
+freemarker.tools.YamlTool=org.apache.freemarker.generator.tools.snakeyaml.SnakeYamlTool
diff --git a/freemarker-generator-cli/src/main/resources/patterns/firewalls b/freemarker-generator-cli/src/main/resources/patterns/firewalls
new file mode 100755
index 0000000..8f16bea
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/firewalls
@@ -0,0 +1,3 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+# NetScreen firewall logs
+NETSCREENSESSIONLOG %{SYSLOGTIMESTAMP:date} %{IPORHOST:device} %{IPORHOST}: NetScreen device_id=%{WORD:device_id}%{DATA}: start_time=%{QUOTEDSTRING:start_time} duration=%{INT:duration} policy_id=%{INT:policy_id} service=%{DATA:service} proto=%{INT:proto} src zone=%{WORD:src_zone} dst zone=%{WORD:dst_zone} action=%{WORD:action} sent=%{INT:sent} rcvd=%{INT:rcvd} src=%{IPORHOST:src_ip} dst=%{IPORHOST:dst_ip} src_port=%{INT:src_port} dst_port=%{INT:dst_port} src-xlated ip=%{IPORHOST:src_xlated_ip} port=%{INT:src_xlated_port} dst-xlated ip=%{IPORHOST:dst_xlated_ip} port=%{INT:dst_xlated_port} session_id=%{INT:session_id} reason=%{GREEDYDATA:reason}
diff --git a/freemarker-generator-cli/src/main/resources/patterns/haproxy b/freemarker-generator-cli/src/main/resources/patterns/haproxy
new file mode 100755
index 0000000..99fff30
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/haproxy
@@ -0,0 +1,38 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+## These patterns were tested w/ haproxy-1.4.15
+
+## Documentation of the haproxy log formats can be found at the following links:
+## http://code.google.com/p/haproxy-docs/wiki/HTTPLogFormat
+## http://code.google.com/p/haproxy-docs/wiki/TCPLogFormat
+
+HAPROXYTIME (?!<[0-9])%{HOUR:haproxy_hour}:%{MINUTE:haproxy_minute}(?::%{SECOND:haproxy_second})(?![0-9])
+HAPROXYDATE %{MONTHDAY:haproxy_monthday}/%{MONTH:haproxy_month}/%{YEAR:haproxy_year}:%{HAPROXYTIME:haproxy_time}.%{INT:haproxy_milliseconds}
+
+# Override these default patterns to parse out what is captured in your haproxy.cfg
+HAPROXYCAPTUREDREQUESTHEADERS %{DATA:captured_request_headers}
+HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:captured_response_headers}
+
+# Example:
+#  These haproxy config lines will add data to the logs that are captured
+#  by the patterns below. Place them in your custom patterns directory to
+#  override the defaults.
+#
+#  capture request header Host len 40
+#  capture request header X-Forwarded-For len 50
+#  capture request header Accept-Language len 50
+#  capture request header Referer len 200
+#  capture request header User-Agent len 200
+#
+#  capture response header Content-Type len 30
+#  capture response header Content-Encoding len 10
+#  capture response header Cache-Control len 200
+#  capture response header Last-Modified len 200
+#
+# HAPROXYCAPTUREDREQUESTHEADERS %{DATA:request_header_host}\|%{DATA:request_header_x_forwarded_for}\|%{DATA:request_header_accept_language}\|%{DATA:request_header_referer}\|%{DATA:request_header_user_agent}
+# HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:response_header_content_type}\|%{DATA:response_header_content_encoding}\|%{DATA:response_header_cache_control}\|%{DATA:response_header_last_modified}
+
+# parse a haproxy 'httplog' line
+HAPROXYHTTP %{SYSLOGTIMESTAMP:syslog_timestamp} %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client_ip}:%{INT:client_port} \[%{HAPROXYDATE:accept_date}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_request}/%{INT:time_queue}/%{INT:time_backend_connect}/%{INT:time_backend_response}/%{NOTSPACE:time_duration} %{INT:http_status_code} %{NOTSPACE:bytes_read} %{DATA:captured_request_cookie} %{DATA:captured_response_cookie} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue} (\{%{HAPROXYCAPTUREDREQUESTHEADERS}\})?( )?(\{%{HAPROXYCAPTUREDRESPONSEHEADERS}\})?( )?"%{WORD:http_verb} %{URIPATHPARAM:http_request}( HTTP/%{NUMBER:http_version}")?
+
+# parse a haproxy 'tcplog' line
+HAPROXYTCP %{SYSLOGTIMESTAMP:syslog_timestamp} %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client_ip}:%{INT:client_port} \[%{HAPROXYDATE:accept_date}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_queue}/%{INT:time_backend_connect}/%{NOTSPACE:time_duration} %{NOTSPACE:bytes_read} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue}
diff --git a/freemarker-generator-cli/src/main/resources/patterns/java b/freemarker-generator-cli/src/main/resources/patterns/java
new file mode 100755
index 0000000..611952c
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/java
@@ -0,0 +1,4 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+JAVACLASS (?:[a-zA-Z0-9-]+\.)+[A-Za-z0-9$]+
+JAVAFILE (?:[A-Za-z0-9_.-]+)
+JAVASTACKTRACEPART at %{JAVACLASS:class}\.%{WORD:method}\(%{JAVAFILE:file}:%{NUMBER:line}\)
diff --git a/freemarker-generator-cli/src/main/resources/patterns/linux-syslog b/freemarker-generator-cli/src/main/resources/patterns/linux-syslog
new file mode 100755
index 0000000..a888999
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/linux-syslog
@@ -0,0 +1,8 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+SYSLOGBASE2 (?:%{SYSLOGTIMESTAMP:timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
+SYSLOGPAMSESSION %{SYSLOGBASE} (?=%{GREEDYDATA:message})%{WORD:pam_module}\(%{DATA:pam_caller}\): session %{WORD:pam_session_state} for user %{USERNAME:username}(?: by %{GREEDYDATA:pam_by})?
+
+CRON_ACTION [A-Z ]+
+CRONLOG %{SYSLOGBASE} \(%{USER:user}\) %{CRON_ACTION:action} \(%{DATA:message}\)
+
+SYSLOGLINE %{SYSLOGBASE2} %{GREEDYDATA:message}
diff --git a/freemarker-generator-cli/src/main/resources/patterns/nagios b/freemarker-generator-cli/src/main/resources/patterns/nagios
new file mode 100755
index 0000000..771cb0a
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/nagios
@@ -0,0 +1,109 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+##################################################################################
+##################################################################################
+# Chop Nagios log files to smithereens!
+#
+# A set of GROK filters to process logfiles generated by Nagios.
+# While it does not, this set intends to cover all possible Nagios logs.
+#
+# Some more work needs to be done to cover all External Commands:
+#	http://old.nagios.org/developerinfo/externalcommands/commandlist.php
+#
+# If you need some support on these rules please contact:
+#	Jelle Smet http://smetj.net
+#
+#################################################################################
+#################################################################################
+
+NAGIOSTIME \[%{NUMBER:nagios_epoch}\]
+
+###############################################
+######## Begin nagios log types
+###############################################
+NAGIOS_TYPE_CURRENT_SERVICE_STATE CURRENT SERVICE STATE
+NAGIOS_TYPE_CURRENT_HOST_STATE CURRENT HOST STATE
+
+NAGIOS_TYPE_SERVICE_NOTIFICATION SERVICE NOTIFICATION
+NAGIOS_TYPE_HOST_NOTIFICATION HOST NOTIFICATION
+
+NAGIOS_TYPE_SERVICE_ALERT SERVICE ALERT
+NAGIOS_TYPE_HOST_ALERT HOST ALERT
+
+NAGIOS_TYPE_SERVICE_FLAPPING_ALERT SERVICE FLAPPING ALERT
+NAGIOS_TYPE_HOST_FLAPPING_ALERT HOST FLAPPING ALERT
+
+NAGIOS_TYPE_SERVICE_DOWNTIME_ALERT SERVICE DOWNTIME ALERT
+NAGIOS_TYPE_HOST_DOWNTIME_ALERT HOST DOWNTIME ALERT
+
+NAGIOS_TYPE_PASSIVE_SERVICE_CHECK PASSIVE SERVICE CHECK
+NAGIOS_TYPE_PASSIVE_HOST_CHECK PASSIVE HOST CHECK
+
+NAGIOS_TYPE_SERVICE_EVENT_HANDLER SERVICE EVENT HANDLER
+NAGIOS_TYPE_HOST_EVENT_HANDLER HOST EVENT HANDLER
+
+NAGIOS_TYPE_EXTERNAL_COMMAND EXTERNAL COMMAND
+NAGIOS_TYPE_TIMEPERIOD_TRANSITION TIMEPERIOD TRANSITION
+###############################################
+######## End nagios log types
+###############################################
+
+###############################################
+######## Begin external check types
+###############################################
+NAGIOS_EC_DISABLE_SVC_CHECK DISABLE_SVC_CHECK
+NAGIOS_EC_ENABLE_SVC_CHECK ENABLE_SVC_CHECK
+NAGIOS_EC_DISABLE_HOST_CHECK DISABLE_HOST_CHECK
+NAGIOS_EC_ENABLE_HOST_CHECK ENABLE_HOST_CHECK
+NAGIOS_EC_PROCESS_SERVICE_CHECK_RESULT PROCESS_SERVICE_CHECK_RESULT
+NAGIOS_EC_PROCESS_HOST_CHECK_RESULT PROCESS_HOST_CHECK_RESULT
+NAGIOS_EC_SCHEDULE_SERVICE_DOWNTIME SCHEDULE_SERVICE_DOWNTIME
+NAGIOS_EC_SCHEDULE_HOST_DOWNTIME SCHEDULE_HOST_DOWNTIME
+###############################################
+######## End external check types
+###############################################
+NAGIOS_WARNING Warning:%{SPACE}%{GREEDYDATA:nagios_message}
+
+NAGIOS_CURRENT_SERVICE_STATE %{NAGIOS_TYPE_CURRENT_SERVICE_STATE:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_statetype};%{DATA:nagios_statecode};%{GREEDYDATA:nagios_message}
+NAGIOS_CURRENT_HOST_STATE %{NAGIOS_TYPE_CURRENT_HOST_STATE:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_statetype};%{DATA:nagios_statecode};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_NOTIFICATION %{NAGIOS_TYPE_SERVICE_NOTIFICATION:nagios_type}: %{DATA:nagios_notifyname};%{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_contact};%{GREEDYDATA:nagios_message}
+NAGIOS_HOST_NOTIFICATION %{NAGIOS_TYPE_HOST_NOTIFICATION}: %{DATA:nagios_notifyname};%{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_contact};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_ALERT %{NAGIOS_TYPE_SERVICE_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{NUMBER:nagios_attempt};%{GREEDYDATA:nagios_message}
+NAGIOS_HOST_ALERT %{NAGIOS_TYPE_HOST_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{NUMBER:nagios_attempt};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_FLAPPING_ALERT %{NAGIOS_TYPE_SERVICE_FLAPPING_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_message}
+NAGIOS_HOST_FLAPPING_ALERT %{NAGIOS_TYPE_HOST_FLAPPING_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_DOWNTIME_ALERT %{NAGIOS_TYPE_SERVICE_DOWNTIME_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+NAGIOS_HOST_DOWNTIME_ALERT %{NAGIOS_TYPE_HOST_DOWNTIME_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+
+NAGIOS_PASSIVE_SERVICE_CHECK %{NAGIOS_TYPE_PASSIVE_SERVICE_CHECK:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+NAGIOS_PASSIVE_HOST_CHECK %{NAGIOS_TYPE_PASSIVE_HOST_CHECK:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+
+NAGIOS_SERVICE_EVENT_HANDLER %{NAGIOS_TYPE_SERVICE_EVENT_HANDLER:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{DATA:nagios_event_handler_name}
+NAGIOS_HOST_EVENT_HANDLER %{NAGIOS_TYPE_HOST_EVENT_HANDLER:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{DATA:nagios_event_handler_name}
+
+NAGIOS_TIMEPERIOD_TRANSITION %{NAGIOS_TYPE_TIMEPERIOD_TRANSITION:nagios_type}: %{DATA:nagios_service};%{DATA:nagios_unknown1};%{DATA:nagios_unknown2};
+
+####################
+#### External checks
+####################
+
+#Disable host & service check
+NAGIOS_EC_LINE_DISABLE_SVC_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_DISABLE_SVC_CHECK:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_service}
+NAGIOS_EC_LINE_DISABLE_HOST_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_DISABLE_HOST_CHECK:nagios_command};%{DATA:nagios_hostname}
+
+#Enable host & service check
+NAGIOS_EC_LINE_ENABLE_SVC_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_ENABLE_SVC_CHECK:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_service}
+NAGIOS_EC_LINE_ENABLE_HOST_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_ENABLE_HOST_CHECK:nagios_command};%{DATA:nagios_hostname}
+
+#Process host & service check
+NAGIOS_EC_LINE_PROCESS_SERVICE_CHECK_RESULT %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_PROCESS_SERVICE_CHECK_RESULT:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_check_result}
+NAGIOS_EC_LINE_PROCESS_HOST_CHECK_RESULT %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_PROCESS_HOST_CHECK_RESULT:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_check_result}
+
+#Schedule host & service downtime
+NAGIOS_EC_LINE_SCHEDULE_HOST_DOWNTIME %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_SCHEDULE_HOST_DOWNTIME:nagios_command};%{DATA:nagios_hostname};%{NUMBER:nagios_start_time};%{NUMBER:nagios_end_time};%{NUMBER:nagios_fixed};%{NUMBER:nagios_trigger_id};%{NUMBER:nagios_duration};%{DATA:author};%{DATA:comment}
+
+#End matching line
+NAGIOSLOGLINE %{NAGIOSTIME} (?:%{NAGIOS_WARNING}|%{NAGIOS_CURRENT_SERVICE_STATE}|%{NAGIOS_CURRENT_HOST_STATE}|%{NAGIOS_SERVICE_NOTIFICATION}|%{NAGIOS_HOST_NOTIFICATION}|%{NAGIOS_SERVICE_ALERT}|%{NAGIOS_HOST_ALERT}|%{NAGIOS_SERVICE_FLAPPING_ALERT}|%{NAGIOS_HOST_FLAPPING_ALERT}|%{NAGIOS_SERVICE_DOWNTIME_ALERT}|%{NAGIOS_HOST_DOWNTIME_ALERT}|%{NAGIOS_PASSIVE_SERVICE_CHECK}|%{NAGIOS_PASSIVE_HOST_CHECK}|%{NAGIOS_SERVICE_EVENT_HANDLER}|%{NAGIOS_HOST_EVENT_HANDLER}|%{NAGIOS_TIMEPERIOD_TRANSITION}|%{NAGIOS_EC_LINE_DISABLE_SVC_CHECK}|%{NAGIOS_EC_LINE_ENABLE_SVC_CHECK}|%{NAGIOS_EC_LINE_DISABLE_HOST_CHECK|%{NAGIOS_EC_LINE_ENABLE_HOST_CHECK}|%{NAGIOS_EC_LINE_PROCESS_HOST_CHECK_RESULT}|%{NAGIOS_EC_LINE_PROCESS_SERVICE_CHECK_RESULT}|%{NAGIOS_EC_LINE_SCHEDULE_HOST_DOWNTIME})
diff --git a/freemarker-generator-cli/src/main/resources/patterns/patterns b/freemarker-generator-cli/src/main/resources/patterns/patterns
new file mode 100755
index 0000000..52235d8
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/patterns
@@ -0,0 +1,108 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+
+USERNAME [a-zA-Z0-9._-]+
+USER %{USERNAME:UNWANTED}
+INT (?:[+-]?(?:[0-9]+))
+BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
+NUMBER (?:%{BASE10NUM:UNWANTED})
+BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
+BASE16FLOAT \b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\b
+
+POSINT \b(?:[1-9][0-9]*)\b
+NONNEGINT \b(?:[0-9]+)\b
+WORD \b\w+\b
+NOTSPACE \S+
+SPACE \s*
+DATA .*?
+GREEDYDATA .*
+#QUOTEDSTRING (?:(?<!\\)(?:"(?:\\.|[^\\"])*"|(?:'(?:\\.|[^\\'])*')|(?:`(?:\\.|[^\\`])*`)))
+QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
+UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
+
+# Networking
+MAC (?:%{CISCOMAC:UNWANTED}|%{WINDOWSMAC:UNWANTED}|%{COMMONMAC:UNWANTED})
+CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
+WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
+COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
+IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
+IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
+IP (?:%{IPV6:UNWANTED}|%{IPV4:UNWANTED})
+HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
+HOST %{HOSTNAME:UNWANTED}
+IPORHOST (?:%{HOSTNAME:UNWANTED}|%{IP:UNWANTED})
+HOSTPORT (?:%{IPORHOST}:%{POSINT:PORT})
+
+# paths
+PATH (?:%{UNIXPATH}|%{WINPATH})
+UNIXPATH (?>/(?>[\w_%!$@:.,~-]+|\\.)*)+
+#UNIXPATH (?<![\w\/])(?:/[^\/\s?*]*)+
+TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
+WINPATH (?>[A-Za-z]+:|\\)(?:\\[^\\?*]*)+
+URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
+URIHOST %{IPORHOST}(?::%{POSINT:port})?
+# uripath comes loosely from RFC1738, but mostly from what Firefox
+# doesn't turn into %XX
+URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_\-]*)+
+#URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?
+URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
+URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
+URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
+
+# Months: January, Feb, 3, 03, 12, December
+MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b
+MONTHNUM (?:0?[1-9]|1[0-2])
+MONTHNUM2 (?:0[1-9]|1[0-2])
+MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
+
+# Days: Monday, Tue, Thu, etc...
+DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)
+
+# Years?
+YEAR (?>\d\d){1,2}
+# Time: HH:MM:SS
+#TIME \d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?
+# I'm still on the fence about using grok to perform the time match,
+# since it's probably slower.
+# TIME %{POSINT<24}:%{POSINT<60}(?::%{POSINT<60}(?:\.%{POSINT})?)?
+HOUR (?:2[0123]|[01]?[0-9])
+MINUTE (?:[0-5][0-9])
+# '60' is a leap second in most time standards and thus is valid.
+SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
+TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
+# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)
+DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
+DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
+ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
+ISO8601_SECOND (?:%{SECOND}|60)
+TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
+DATE %{DATE_US}|%{DATE_EU}
+DATESTAMP %{DATE}[- ]%{TIME}
+TZ (?:[PMCE][SD]T|UTC)
+DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
+DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
+DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
+DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
+
+# Syslog Dates: Month Day HH:MM:SS
+SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
+PROG (?:[\w._/%-]+)
+SYSLOGPROG %{PROG:program}(?:\[%{POSINT:pid}\])?
+SYSLOGHOST %{IPORHOST}
+SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
+HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
+
+# Shortcuts
+QS %{QUOTEDSTRING:UNWANTED}
+
+# Log formats
+SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
+
+MESSAGESLOG %{SYSLOGBASE} %{DATA}
+
+COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
+COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
+COMMONAPACHELOG_DATATYPED %{IPORHOST:clientip} %{USER:ident;boolean} %{USER:auth} \[%{HTTPDATE:timestamp;date;dd/MMM/yyyy:HH:mm:ss Z}\] "(?:%{WORD:verb;string} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion;float})?|%{DATA:rawrequest})" %{NUMBER:response;int} (?:%{NUMBER:bytes;long}|-)
+
+
+# Log Levels
+LOGLEVEL ([A|a]lert|ALERT|[T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)
diff --git a/freemarker-generator-cli/src/main/resources/patterns/postfix b/freemarker-generator-cli/src/main/resources/patterns/postfix
new file mode 100755
index 0000000..3adcb69
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/postfix
@@ -0,0 +1,125 @@
+# common postfix patterns
+POSTFIX_QUEUEID ([0-9A-F]{6,}|[0-9a-zA-Z]{15,})
+POSTFIX_CLIENT_INFO %{HOSTNAME:postfix_client_hostname}?\[%{IP:postfix_client_ip}\](:%{INT:postfix_client_port})?
+POSTFIX_RELAY_INFO %{HOSTNAME:postfix_relay_hostname}?\[(%{IP:postfix_relay_ip}|%{DATA:postfix_relay_service})\](:%{INT:postfix_relay_port})?|%{WORD:postfix_relay_service}
+POSTFIX_SMTP_STAGE (CONNECT|HELO|EHLO|STARTTLS|AUTH|MAIL( FROM)?|RCPT( TO)?|(end of )?DATA|RSET|UNKNOWN|END-OF-MESSAGE|VRFY|\.)
+POSTFIX_ACTION (accept|defer|discard|filter|header-redirect|reject)
+POSTFIX_STATUS_CODE \d{3}
+POSTFIX_STATUS_CODE_ENHANCED \d\.\d\.\d
+POSTFIX_DNSBL_MESSAGE Service unavailable; .* \[%{GREEDYDATA:postfix_status_data}\] %{GREEDYDATA:postfix_status_message};
+POSTFIX_PS_ACCESS_ACTION (DISCONNECT|BLACKLISTED|WHITELISTED|WHITELIST VETO|PASS NEW|PASS OLD)
+POSTFIX_PS_VIOLATION (BARE NEWLINE|COMMAND (TIME|COUNT|LENGTH) LIMIT|COMMAND PIPELINING|DNSBL|HANGUP|NON-SMTP COMMAND|PREGREET)
+POSTFIX_TIME_UNIT %{NUMBER}[smhd]
+POSTFIX_KEYVALUE_DATA [\w-]+=[^;]*
+POSTFIX_KEYVALUE %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+POSTFIX_WARNING_LEVEL (warning|fatal|info)
+
+POSTFIX_TLSCONN (Anonymous|Trusted|Untrusted|Verified) TLS connection established (to %{POSTFIX_RELAY_INFO}|from %{POSTFIX_CLIENT_INFO}): %{DATA:postfix_tls_version} with cipher %{DATA:postfix_tls_cipher} \(%{DATA:postfix_tls_cipher_size} bits\)
+POSTFIX_DELAYS %{NUMBER:postfix_delay_before_qmgr}/%{NUMBER:postfix_delay_in_qmgr}/%{NUMBER:postfix_delay_conn_setup}/%{NUMBER:postfix_delay_transmission}
+POSTFIX_LOSTCONN (lost connection|timeout|SSL_accept error)
+POSTFIX_LOSTCONN_REASONS (receiving the initial server greeting|sending message body|sending end of data -- message may be sent more than once)
+POSTFIX_PROXY_MESSAGE (%{POSTFIX_STATUS_CODE:postfix_proxy_status_code} )?(%{POSTFIX_STATUS_CODE_ENHANCED:postfix_proxy_status_code_enhanced})?.*
+
+# helper patterns
+GREEDYDATA_NO_COLON [^:]*
+GREEDYDATA_NO_SEMICOLON [^;]*
+
+# warning patterns
+POSTFIX_WARNING_WITH_KV (%{POSTFIX_QUEUEID:postfix_queueid}: )?%{POSTFIX_WARNING_LEVEL:postfix_message_level}: %{GREEDYDATA:postfix_message}; %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+POSTFIX_WARNING_WITHOUT_KV (%{POSTFIX_QUEUEID:postfix_queueid}: )?%{POSTFIX_WARNING_LEVEL:postfix_message_level}: %{GREEDYDATA:postfix_message}
+POSTFIX_WARNING %{POSTFIX_WARNING_WITH_KV}|%{POSTFIX_WARNING_WITHOUT_KV}
+
+# smtpd patterns
+POSTFIX_SMTPD_CONNECT connect from %{POSTFIX_CLIENT_INFO}
+POSTFIX_SMTPD_DISCONNECT disconnect from %{POSTFIX_CLIENT_INFO}
+POSTFIX_SMTPD_LOSTCONN %{POSTFIX_LOSTCONN:postfix_smtpd_lostconn_data}( after %{POSTFIX_SMTP_STAGE:postfix_smtp_stage}( \(%{INT} bytes\))?)? from %{POSTFIX_CLIENT_INFO}(: %{GREEDYDATA:postfix_smtpd_lostconn_reason})?
+POSTFIX_SMTPD_NOQUEUE NOQUEUE: %{POSTFIX_ACTION:postfix_action}: %{POSTFIX_SMTP_STAGE:postfix_smtp_stage} from %{POSTFIX_CLIENT_INFO}:( %{POSTFIX_STATUS_CODE:postfix_status_code} %{POSTFIX_STATUS_CODE_ENHANCED:postfix_status_code_enhanced})?( <%{DATA:postfix_status_data}>:)? (%{POSTFIX_DNSBL_MESSAGE}|%{GREEDYDATA:postfix_status_message};) %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+POSTFIX_SMTPD_PIPELINING improper command pipelining after %{POSTFIX_SMTP_STAGE:postfix_smtp_stage} from %{POSTFIX_CLIENT_INFO}: %{GREEDYDATA:postfix_improper_pipelining_data}
+POSTFIX_SMTPD_PROXY proxy-%{POSTFIX_ACTION:postfix_proxy_result}: (%{POSTFIX_SMTP_STAGE:postfix_proxy_smtp_stage}): %{POSTFIX_PROXY_MESSAGE:postfix_proxy_message}; %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+
+# cleanup patterns
+POSTFIX_CLEANUP_MILTER %{POSTFIX_QUEUEID:postfix_queueid}: milter-%{POSTFIX_ACTION:postfix_milter_result}: %{GREEDYDATA:postfix_milter_message}; %{GREEDYDATA_NO_COLON:postfix_keyvalue_data}(: %{GREEDYDATA:postfix_milter_data})?
+
+# qmgr patterns
+POSTFIX_QMGR_REMOVED %{POSTFIX_QUEUEID:postfix_queueid}: removed
+POSTFIX_QMGR_ACTIVE %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data} \(queue active\)
+POSTFIX_QMGR_EXPIRED %{POSTFIX_QUEUEID:postfix_queueid}: from=<%{DATA:postfix_from}>, status=%{WORD:postfix_status}, returned to sender
+
+# pipe patterns
+POSTFIX_PIPE_ANY %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}, status=%{WORD:postfix_status} \(%{GREEDYDATA:postfix_pipe_response}\)
+
+# error patterns
+POSTFIX_ERROR_ANY %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}, status=%{WORD:postfix_status} \(%{GREEDYDATA:postfix_error_response}\)
+
+# discard patterns
+POSTFIX_DISCARD_ANY %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data} status=%{WORD:postfix_status} %{GREEDYDATA}
+
+# postsuper patterns
+POSTFIX_POSTSUPER_ACTIONS (removed|requeued|placed on hold|released from hold)
+POSTFIX_POSTSUPER_ACTION %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_POSTSUPER_ACTIONS:postfix_postsuper_action}
+POSTFIX_POSTSUPER_SUMMARY_ACTIONS (Deleted|Requeued|Placed on hold|Released from hold)
+POSTFIX_POSTSUPER_SUMMARY %{POSTFIX_POSTSUPER_SUMMARY_ACTIONS:postfix_postsuper_summary_action}: %{NUMBER:postfix_postsuper_summary_count} messages?
+
+# postscreen patterns
+POSTFIX_PS_CONNECT CONNECT from %{POSTFIX_CLIENT_INFO} to \[%{IP:postfix_server_ip}\]:%{INT:postfix_server_port}
+POSTFIX_PS_ACCESS %{POSTFIX_PS_ACCESS_ACTION:postfix_postscreen_access} %{POSTFIX_CLIENT_INFO}
+POSTFIX_PS_NOQUEUE %{POSTFIX_SMTPD_NOQUEUE}
+POSTFIX_PS_TOOBUSY NOQUEUE: reject: CONNECT from %{POSTFIX_CLIENT_INFO}: %{GREEDYDATA:postfix_postscreen_toobusy_data}
+POSTFIX_PS_DNSBL %{POSTFIX_PS_VIOLATION:postfix_postscreen_violation} rank %{INT:postfix_postscreen_dnsbl_rank} for %{POSTFIX_CLIENT_INFO}
+POSTFIX_PS_CACHE cache %{DATA} full cleanup: retained=%{NUMBER:postfix_postscreen_cache_retained} dropped=%{NUMBER:postfix_postscreen_cache_dropped} entries
+POSTFIX_PS_VIOLATIONS %{POSTFIX_PS_VIOLATION:postfix_postscreen_violation}( %{INT})?( after %{NUMBER:postfix_postscreen_violation_time})? from %{POSTFIX_CLIENT_INFO}(( after %{POSTFIX_SMTP_STAGE:postfix_smtp_stage})?(: %{GREEDYDATA:postfix_postscreen_data})?| in tests (after|before) SMTP handshake)
+
+# dnsblog patterns
+POSTFIX_DNSBLOG_LISTING addr %{IP:postfix_client_ip} listed by domain %{HOSTNAME:postfix_dnsbl_domain} as %{IP:postfix_dnsbl_result}
+
+# tlsproxy patterns
+POSTFIX_TLSPROXY_CONN (DIS)?CONNECT( from)? %{POSTFIX_CLIENT_INFO}
+
+# anvil patterns
+POSTFIX_ANVIL_CONN_RATE statistics: max connection rate %{NUMBER:postfix_anvil_conn_rate}/%{POSTFIX_TIME_UNIT:postfix_anvil_conn_period} for \(%{DATA:postfix_service}:%{IP:postfix_client_ip}\) at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp}
+POSTFIX_ANVIL_CONN_CACHE statistics: max cache size %{NUMBER:postfix_anvil_cache_size} at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp}
+POSTFIX_ANVIL_CONN_COUNT statistics: max connection count %{NUMBER:postfix_anvil_conn_count} for \(%{DATA:postfix_service}:%{IP:postfix_client_ip}\) at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp}
+
+# smtp patterns
+POSTFIX_SMTP_DELIVERY %{POSTFIX_KEYVALUE} status=%{WORD:postfix_status}( \(%{GREEDYDATA:postfix_smtp_response}\))?
+POSTFIX_SMTP_CONNERR connect to %{POSTFIX_RELAY_INFO}: (Connection timed out|No route to host|Connection refused|Network is unreachable)
+POSTFIX_SMTP_LOSTCONN %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_LOSTCONN:postfix_smtp_lostconn_data} with %{POSTFIX_RELAY_INFO}( while %{POSTFIX_LOSTCONN_REASONS:postfix_smtp_lostconn_reason})?
+POSTFIX_SMTP_TIMEOUT %{POSTFIX_QUEUEID:postfix_queueid}: conversation with %{POSTFIX_RELAY_INFO} timed out( while %{POSTFIX_LOSTCONN_REASONS:postfix_smtp_lostconn_reason})?
+POSTFIX_SMTP_RELAYERR %{POSTFIX_QUEUEID:postfix_queueid}: host %{POSTFIX_RELAY_INFO} said: %{GREEDYDATA:postfix_smtp_response} \(in reply to %{POSTFIX_SMTP_STAGE:postfix_smtp_stage} command\)
+
+# master patterns
+POSTFIX_MASTER_START (daemon started|reload) -- version %{DATA:postfix_version}, configuration %{PATH:postfix_config_path}
+POSTFIX_MASTER_EXIT terminating on signal %{INT:postfix_termination_signal}
+
+# bounce patterns
+POSTFIX_BOUNCE_NOTIFICATION %{POSTFIX_QUEUEID:postfix_queueid}: sender (non-delivery|delivery status|delay) notification: %{POSTFIX_QUEUEID:postfix_bounce_queueid}
+
+# scache patterns
+POSTFIX_SCACHE_LOOKUPS statistics: (address|domain) lookup hits=%{INT:postfix_scache_hits} miss=%{INT:postfix_scache_miss} success=%{INT:postfix_scache_success}%
+POSTFIX_SCACHE_SIMULTANEOUS statistics: max simultaneous domains=%{INT:postfix_scache_domains} addresses=%{INT:postfix_scache_addresses} connection=%{INT:postfix_scache_connection}
+POSTFIX_SCACHE_TIMESTAMP statistics: start interval %{SYSLOGTIMESTAMP:postfix_scache_timestamp}
+
+# aggregate all patterns
+POSTFIX_SMTPD %{POSTFIX_SMTPD_CONNECT}|%{POSTFIX_SMTPD_DISCONNECT}|%{POSTFIX_SMTPD_LOSTCONN}|%{POSTFIX_SMTPD_NOQUEUE}|%{POSTFIX_SMTPD_PIPELINING}|%{POSTFIX_TLSCONN}|%{POSTFIX_WARNING}|%{POSTFIX_SMTPD_PROXY}|%{POSTFIX_KEYVALUE}
+POSTFIX_CLEANUP %{POSTFIX_CLEANUP_MILTER}|%{POSTFIX_WARNING}|%{POSTFIX_KEYVALUE}
+POSTFIX_QMGR %{POSTFIX_QMGR_REMOVED}|%{POSTFIX_QMGR_ACTIVE}|%{POSTFIX_QMGR_EXPIRED}|%{POSTFIX_WARNING}
+POSTFIX_PIPE %{POSTFIX_PIPE_ANY}
+POSTFIX_POSTSCREEN %{POSTFIX_PS_CONNECT}|%{POSTFIX_PS_ACCESS}|%{POSTFIX_PS_NOQUEUE}|%{POSTFIX_PS_TOOBUSY}|%{POSTFIX_PS_CACHE}|%{POSTFIX_PS_DNSBL}|%{POSTFIX_PS_VIOLATIONS}|%{POSTFIX_WARNING}
+POSTFIX_DNSBLOG %{POSTFIX_DNSBLOG_LISTING}|%{POSTFIX_WARNING}
+POSTFIX_ANVIL %{POSTFIX_ANVIL_CONN_RATE}|%{POSTFIX_ANVIL_CONN_CACHE}|%{POSTFIX_ANVIL_CONN_COUNT}
+POSTFIX_SMTP %{POSTFIX_SMTP_DELIVERY}|%{POSTFIX_SMTP_CONNERR}|%{POSTFIX_SMTP_LOSTCONN}|%{POSTFIX_SMTP_TIMEOUT}|%{POSTFIX_SMTP_RELAYERR}|%{POSTFIX_TLSCONN}|%{POSTFIX_WARNING}
+POSTFIX_DISCARD %{POSTFIX_DISCARD_ANY}|%{POSTFIX_WARNING}
+POSTFIX_LMTP %{POSTFIX_SMTP}
+POSTFIX_PICKUP %{POSTFIX_KEYVALUE}
+POSTFIX_TLSPROXY %{POSTFIX_TLSPROXY_CONN}|%{POSTFIX_WARNING}
+POSTFIX_MASTER %{POSTFIX_MASTER_START}|%{POSTFIX_MASTER_EXIT}|%{POSTFIX_WARNING}
+POSTFIX_BOUNCE %{POSTFIX_BOUNCE_NOTIFICATION}
+POSTFIX_SENDMAIL %{POSTFIX_WARNING}
+POSTFIX_POSTDROP %{POSTFIX_WARNING}
+POSTFIX_SCACHE %{POSTFIX_SCACHE_LOOKUPS}|%{POSTFIX_SCACHE_SIMULTANEOUS}|%{POSTFIX_SCACHE_TIMESTAMP}
+POSTFIX_TRIVIAL_REWRITE %{POSTFIX_WARNING}
+POSTFIX_TLSMGR %{POSTFIX_WARNING}
+POSTFIX_LOCAL %{POSTFIX_KEYVALUE}
+POSTFIX_VIRTUAL %{POSTFIX_SMTP_DELIVERY}
+POSTFIX_ERROR %{POSTFIX_ERROR_ANY}
+POSTFIX_POSTSUPER %{POSTFIX_POSTSUPER_ACTION}|%{POSTFIX_POSTSUPER_SUMMARY}
diff --git a/freemarker-generator-cli/src/main/resources/patterns/ruby b/freemarker-generator-cli/src/main/resources/patterns/ruby
new file mode 100755
index 0000000..9e5aa5b
--- /dev/null
+++ b/freemarker-generator-cli/src/main/resources/patterns/ruby
@@ -0,0 +1,3 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+RUBY_LOGLEVEL (?:DEBUG|FATAL|ERROR|WARN|INFO)
+RUBY_LOGGER [DFEWI], \[%{TIMESTAMP_ISO8601:timestamp} #%{POSINT:pid}\] *%{RUBY_LOGLEVEL:loglevel} -- +%{DATA:progname}: %{GREEDYDATA:message}
diff --git a/freemarker-generator-cli/src/main/scripts/run-samples.sh b/freemarker-generator-cli/src/main/scripts/run-samples.sh
new file mode 100755
index 0000000..cf192cc
--- /dev/null
+++ b/freemarker-generator-cli/src/main/scripts/run-samples.sh
@@ -0,0 +1,167 @@
+#!/bin/sh
+
+#
+# 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.
+#
+
+# Check that java is on the path
+
+hash java 2>/dev/null || { echo >&2 "I require JDK but it's not installed.  Aborting."; exit 1; }
+
+# Run all the samples being documented
+
+mkdir target 2>/dev/null
+mkdir target/out 2>/dev/null
+
+FREEMARKER_CMD=./bin/freemarker-cli
+
+#############################################################################
+# Info
+#############################################################################
+
+echo "templates/info.ftl"
+$FREEMARKER_CMD -t templates/info.ftl README.md > target/out/info.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# Demo
+#############################################################################
+
+echo "templates/demo.ftl"
+$FREEMARKER_CMD -t templates/demo.ftl README.md > target/out/demo.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# Interactive Mode
+#############################################################################
+
+$FREEMARKER_CMD -i '${JsonPathTool.parse(Documents.first).read("$.info.title")}' site/sample/json/swagger-spec.json > target/out/interactive-json.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -i '${XmlTool.parse(Documents.first)["recipients/person[1]/name"]}' site/sample/xml/recipients.xml > target/out/interactive-xml.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -i '${JsoupTool.parse(Documents.first).select("a")[0]}' site/sample/html/dependencies.html > target/out/interactive-html.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# CSV
+#############################################################################
+
+echo "templates/csv/html/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/html/transform.ftl site/sample/csv/contract.csv > target/out/contract.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/csv/md/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/md/transform.ftl site/sample/csv/contract.csv > target/out/contract.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/csv/shell/curl.ftl"
+$FREEMARKER_CMD -t ./templates/csv/shell/curl.ftl site/sample/csv/user.csv > target/out/curl.sh || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/csv/md/filter.ftl"
+$FREEMARKER_CMD -e UTF-8 -l de_AT -Pcolumn="Order ID" -Pvalues=226939189,957081544 -Pformat=DEFAULT -Pdelimiter=COMMA -t templates/csv/md/filter.ftl site/sample/csv/sales-records.csv > target/out/sales-records.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# CSV To XML-FO & PDF
+#############################################################################
+
+echo "templates/csv/fo/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/fo/transform.ftl site/sample/csv/locker-test-users.csv > target/out/locker-test-users.fo || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash fop 2>/dev/null; then
+	echo "fop -fo target/out/locker-test-users.fo target/out/locker-test-users.pdf"
+    fop -fo target/out/locker-test-users.fo target/out/locker-test-users.pdf 2>/dev/null || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+echo "templates/csv/fo/transactions.ftl"
+$FREEMARKER_CMD -t templates/csv/fo/transactions.ftl site/sample/csv/transactions.csv > target/out/transactions.fo || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash fop 2>/dev/null; then
+	echo "fop -fo target/out/transactions.fo target/out/transactions-fo.pdf"
+    fop -fo target/out/transactions.fo target/out/transactions-fo.pdf 2>/dev/null || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+#############################################################################
+# CSV to HTML & PDF
+#############################################################################
+
+echo "templates/csv/html/transform.ftl"
+$FREEMARKER_CMD -t templates/csv/html/transactions.ftl site/sample/csv/transactions.csv > target/out/transactions.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash wkhtmltopdf 2>/dev/null; then
+	echo "wkhtmltopdf -O landscape target/out/transactions.html target/out/transactions-html.pdf"
+    wkhtmltopdf -O landscape target/out/transactions.html target/out/transactions-html.pdf 2>/dev/null || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+#############################################################################
+# Grok
+#############################################################################
+
+echo "templates/accesslog/combined-access.ftl"
+$FREEMARKER_CMD -t templates/accesslog/combined-access.ftl site/sample/accesslog/combined-access.log > target/out/combined-access.log.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# Excel
+#############################################################################
+
+echo "templates/excel/html/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xls > target/out/test.xls.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test.xlsx > target/out/test.xslx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t templates/excel/html/transform.ftl site/sample/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/excel/md/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/md/transform.ftl site/sample/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/excel/csv/transform.ftl"
+$FREEMARKER_CMD -t templates/excel/csv/transform.ftl site/sample/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "templates/excel/csv/custom.ftl"
+$FREEMARKER_CMD -t templates/excel/csv/custom.ftl -Pcsv.format=MYSQL site/sample/excel/test.xls > target/out/test-transform-xls.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# HTML
+#############################################################################
+
+echo "templates/html/csv/dependencies.ftl"
+$FREEMARKER_CMD -t templates/html/csv/dependencies.ftl site/sample/html/dependencies.html > target/out/dependencies.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# JSON
+#############################################################################
+
+echo "templates/json/csv/swagger-endpoints.ftl"
+$FREEMARKER_CMD -t templates/json/csv/swagger-endpoints.ftl site/sample/json/swagger-spec.json > target/out/swagger-spec.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+if hash curl 2>/dev/null; then
+echo "templates/json/md/github-users.ftl"
+$FREEMARKER_CMD -t templates/json/md/github-users.ftl site/sample/json/github-users.json > target/out/github-users-curl.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+fi
+
+#############################################################################
+# Properties
+#############################################################################
+
+echo "templates/properties/csv/locker-test-users.ftl"
+$FREEMARKER_CMD -t templates/properties/csv/locker-test-users.ftl site/sample/properties > target/out/locker-test-users.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# YAML
+#############################################################################
+
+echo "templates/yaml/txt/transform.ftl"
+$FREEMARKER_CMD -t ./templates/yaml/txt/transform.ftl ./site/sample/yaml/customer.yaml > target/out/customer.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+#############################################################################
+# XML
+#############################################################################
+
+echo "templates/xml/txt/recipients.ftl"
+$FREEMARKER_CMD -t ./templates/xml/txt/recipients.ftl site/sample/xml/recipients.xml > target/out/recipients.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+
+echo "Created the following sample files in ./target/out"
+ls -l ./target/out
diff --git a/freemarker-generator-cli/src/test/data/encoding/utf16.txt b/freemarker-generator-cli/src/test/data/encoding/utf16.txt
new file mode 100755
index 0000000..4d8e1f2
--- /dev/null
+++ b/freemarker-generator-cli/src/test/data/encoding/utf16.txt
Binary files differ
diff --git a/freemarker-generator-cli/src/test/data/encoding/utf8.txt b/freemarker-generator-cli/src/test/data/encoding/utf8.txt
new file mode 100755
index 0000000..c43eb00
--- /dev/null
+++ b/freemarker-generator-cli/src/test/data/encoding/utf8.txt
@@ -0,0 +1,4 @@
+première is first
+première is slightly different
+Кириллица is Cyrillic
+𐐀 am Deseret
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java
new file mode 100644
index 0000000..2d3e101
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java
@@ -0,0 +1,38 @@
+/*
+ * 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.freemarker.generator.cli;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Arrays;
+
+abstract class AbstractMainTest {
+
+    private static final String SPACE = " ";
+
+    String execute(String commandLine) throws IOException {
+        try (Writer writer = new StringWriter()) {
+            final String[] args = commandLine.split(SPACE);
+            if (Main.execute(args, writer) == 0) {
+                return writer.toString();
+            } else {
+                throw new RuntimeException("Executing freemarker-cli failed: " + Arrays.toString(args));
+            }
+        }
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
new file mode 100644
index 0000000..6e152dd
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
@@ -0,0 +1,133 @@
+/*
+ * 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.freemarker.generator.cli;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class ExamplesTest extends AbstractMainTest {
+
+    private static final int MIN_OUTPUT_SIZE = 1;
+
+    @Test
+    public void shouldRunInfo() throws IOException {
+        assertValid(execute("-t templates/info.ftl README.md"));
+    }
+
+    @Test
+    public void shouldRunMultipleTimes() throws IOException {
+        assertValid(execute("--times=2 -t templates/info.ftl README.md"));
+    }
+
+    @Test
+    public void shouldRunDemoExamples() throws IOException {
+        assertValid(execute("-t templates/demo.ftl README.md"));
+    }
+
+    @Test
+    public void shouldRunCsvExamples() throws IOException {
+        assertValid(execute("-t templates/csv/html/transform.ftl site/sample/csv/contract.csv"));
+        assertValid(execute("-t templates/csv/md/transform.ftl site/sample/csv/contract.csv"));
+        assertValid(execute("-t templates/csv/shell/curl.ftl site/sample/csv/user.csv"));
+        assertValid(execute("-t templates/csv/fo/transform.ftl site/sample/csv/locker-test-users.csv"));
+        assertValid(execute("-t templates/csv/fo/transactions.ftl site/sample/csv/transactions.csv"));
+        assertValid(execute("-t templates/csv/html/transactions.ftl site/sample/csv/transactions.csv"));
+        assertValid(execute("-t templates/csv/transform.ftl site/sample/csv/contract.csv"));
+    }
+
+    @Test
+    public void shouldRunExcelExamples() throws IOException {
+        assertValid(execute("-t templates/excel/html/transform.ftl site/sample/excel/test.xls"));
+        assertValid(execute("-t templates/excel/html/transform.ftl site/sample/excel/test.xlsx"));
+        assertValid(execute("-t templates/excel/html/transform.ftl site/sample/excel/test-multiple-sheets.xlsx"));
+        assertValid(execute("-t templates/excel/md/transform.ftl site/sample/excel/test-multiple-sheets.xlsx"));
+        assertValid(execute("-t templates/excel/csv/transform.ftl site/sample/excel/test-multiple-sheets.xlsx"));
+        assertValid(execute("-t templates/excel/csv/custom.ftl -Pcsv.format=MYSQL site/sample/excel/test.xls"));
+    }
+
+    @Test
+    public void shouldRunHtmlExamples() throws IOException {
+        assertValid(execute("-t templates/html/csv/dependencies.ftl site/sample/html/dependencies.html"));
+    }
+
+    @Test
+    public void shouldRunJsonExamples() throws IOException {
+        assertValid(execute("-t templates/json/csv/swagger-endpoints.ftl site/sample/json/swagger-spec.json"));
+        assertValid(execute("-t templates/json/md/github-users.ftl site/sample/json/github-users.json"));
+    }
+
+    @Test
+    public void shouldRunPropertiesExamples() throws IOException {
+        assertValid(execute("-t templates/properties/csv/locker-test-users.ftl site/sample/properties"));
+    }
+
+    @Test
+    public void shouldRunYamlExamples() throws IOException {
+        assertValid(execute("-t templates/yaml/txt/transform.ftl site/sample/yaml/customer.yaml"));
+    }
+
+    @Test
+    public void shouldRunXmlExamples() throws IOException {
+        assertValid(execute("-t templates/xml/txt/recipients.ftl site/sample/xml/recipients.xml"));
+    }
+
+    @Test
+    public void shouldRunGrokExamples() throws IOException {
+        assertValid(execute("-t templates/accesslog/combined-access.ftl site/sample/accesslog/combined-access.log"));
+    }
+
+    @Test
+    public void shouldRunWithExposedEnvironmentVariableExamples() throws IOException {
+        assertValid(execute("-b ./src/test -E -t templates/environment.ftl"));
+    }
+
+    @Test
+    public void shouldRunInteractiveTemplateExamples() throws IOException {
+        assertValid(execute("-i ${JsonPathTool.parse(Documents.first).read(\"$.info.title\")} site/sample/json/swagger-spec.json"));
+        assertValid(execute("-i ${XmlTool.parse(Documents.first)[\"recipients/person[1]/name\"]} site/sample/xml/recipients.xml"));
+        assertValid(execute("-i ${JsoupTool.parse(Documents.first).select(\"a\")[0]} site/sample/html/dependencies.html"));
+    }
+
+    @Test
+    @Ignore("Manual test to check memory consumption and resource handling")
+    public void shouldCloseAllResources() throws IOException {
+        for (int i = 0; i < 5000; i++) {
+            shouldRunInfo();
+            shouldRunDemoExamples();
+            shouldRunCsvExamples();
+            shouldRunExcelExamples();
+            shouldRunHtmlExamples();
+            shouldRunJsonExamples();
+            shouldRunPropertiesExamples();
+            shouldRunYamlExamples();
+            shouldRunXmlExamples();
+            shouldRunGrokExamples();
+            shouldRunInteractiveTemplateExamples();
+            shouldRunWithExposedEnvironmentVariableExamples();
+        }
+    }
+
+    private static void assertValid(String output) {
+        assertTrue(output.length() > MIN_OUTPUT_SIZE);
+        assertFalse(output.contains("Exception"));
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.java
new file mode 100644
index 0000000..81f47eb
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ManualTest.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.freemarker.generator.cli;
+
+import java.util.Arrays;
+
+/**
+ * Invoke freemarker-cli and dump the output for ad-hoc manual testing.
+ */
+public class ManualTest {
+
+    private static final String SPACE = " ";
+    // private static final String CMD = "-b ./src/test -t templates/csv/html/transactions.ftl site/sample/csv/transactions.csv";
+    // private static final String CMD = "-b ./src/test -l de_AT -DFOO=foo -DBAR=bar -t templates/info.ftl site/sample/csv/transactions.csv";
+    // private static final String CMD = "-b ./src/test -DFOO=foo -PBAR=bar -l de -t templates/demo.ftl site/sample/csv/transactions.csv";
+    // private static final String CMD = "-b ./src/test -DFOO=foo -PBAR=bar -t templates/demo.ftl site/sample/csv/transactions.csv";
+    // private static final String CMD = "-b ./src/test -Dcsv.out.format=TDF -t templates/csv/transform.ftl site/sample/csv/contract.csv";
+    // private static final String CMD = "-t templates/excel/csv/transform.ftl -l de_AT site/sample/excel/test.xlsx";
+    // private static final String CMD = "-i ${JsonPathTool.parse(Documents.first).read('$.info.title')} site/sample/json/swagger-spec.json";
+    // private static final String CMD = "-i ${XmlTool.parse(Documents.first)['recipients/person[1]/name']} site/sample/xml/recipients.xml";
+    // private static final String CMD = "-i ${JsoupTool.parse(Documents.first).select('a')[0]} site/sample/html/dependencies.html";
+    // private static final String CMD = "-b ./src/test -t templates/properties/csv/locker-test-users.ftl site/sample/properties";
+    // private static final String CMD = "-b ./src/test -e UTF-8 -l de_AT -Dcolumn=Order%20ID -Dvalues=226939189,957081544 -Dformat=DEFAULT -Ddelimiter=COMMA -t templates/csv/md/filter.ftl site/sample/csv/sales-records.csv";
+    private static final String CMD = "-E -b ./src/test -t templates/environment.ftl";
+
+    public static void main(String[] args) {
+        Main.execute(toArgs(CMD));
+    }
+
+    private static String[] toArgs(String line) {
+        // map a "%20" to space to protect system property values containing a space
+        return Arrays.stream(line.split(SPACE)).map(s -> s.replace("%20", " ")).toArray(String[]::new);
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/SecurityRelatedTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/SecurityRelatedTest.java
new file mode 100644
index 0000000..e3c5d9d
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/SecurityRelatedTest.java
@@ -0,0 +1,36 @@
+/*
+ * 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.freemarker.generator.cli;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.IOException;
+
+@Ignore("Manual security testing")
+public class SecurityRelatedTest extends AbstractMainTest {
+
+    @Test(expected = RuntimeException.class)
+    public void shouldDisallowFreeMarkerNewBuiltIn() throws IOException {
+        execute("-b ./src/test -t templates/security/new.ftl");
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void shouldDisallowFreeMarkerApiBuiltIn() throws IOException {
+        execute("-b ./src/test -t templates/security/api.ftl");
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/SourceEncodingTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/SourceEncodingTest.java
new file mode 100644
index 0000000..8f6e762
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/SourceEncodingTest.java
@@ -0,0 +1,40 @@
+/*
+ * 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.freemarker.generator.cli;
+
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertTrue;
+
+public class SourceEncodingTest extends AbstractMainTest {
+
+    private static final String CYRILLIC_TERM = "\u041A\u0438\u0440\u0438\u043B\u043B\u0438\u0446\u0430";
+
+    @Test
+    public void shouldLoadUtf8Text() throws IOException {
+        final String output = execute("-b ./src/test -e UTF-8 -t templates/echo.ftl ./src/test/data/encoding/utf8.txt");
+        assertTrue("Unable to find expected cyrillic term", output.contains(CYRILLIC_TERM));
+    }
+
+    @Test
+    public void shouldLoadUtf16Text() throws IOException {
+        final String output = execute("-b ./src/test -e UTF-16 -t templates/echo.ftl ./src/test/data/encoding/utf16.txt");
+        assertTrue("Unable to find expected cyrillic term", output.contains(CYRILLIC_TERM));
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java
new file mode 100644
index 0000000..723f4a8
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.freemarker.generator.cli;
+
+import org.apache.commons.io.output.NullWriter;
+import org.junit.Test;
+
+import java.io.File;
+
+import static org.junit.Assert.assertEquals;
+
+public class TemplateLoadingTest extends AbstractMainTest {
+
+    private static final int SUCCESS = 0;
+    private static final String ANY_TEMPLATE_NAME = "templates/info.ftl";
+    private static final String CURR_DIR = System.getProperty("user.dir", ".");
+
+    @Test
+    public void shouldLoadRelativeTemplate() {
+        final String[] args = new String[] { "-t", ANY_TEMPLATE_NAME };
+
+        assertEquals(SUCCESS, Main.execute(args, new NullWriter()));
+    }
+
+    @Test
+    public void shouldLoadAbsoluteTemplate() {
+        final String absoluteFileName = new File(CURR_DIR, ANY_TEMPLATE_NAME).getAbsolutePath();
+        final String[] args = new String[] { "-t", absoluteFileName };
+
+        assertEquals(SUCCESS, Main.execute(args, new NullWriter()));
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/UserSuppliedLocaleTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/UserSuppliedLocaleTest.java
new file mode 100644
index 0000000..2a3e76c
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/UserSuppliedLocaleTest.java
@@ -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.
+ */
+package org.apache.freemarker.generator.cli;
+
+import org.junit.Test;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertTrue;
+
+public class UserSuppliedLocaleTest extends AbstractMainTest {
+
+    @Test
+    public void shouldUserGermanLocalForRenderingTemplate() throws IOException {
+        final String output = execute("-b ./src/test -l de -t templates/locale.ftl README.md");
+
+        assertTrue(output.contains("3,142"));
+        assertTrue(output.contains("99.999,99"));
+    }
+
+    @Test
+    public void shouldUserEnglishLocalForRenderingTemplate() throws IOException {
+        final String output = execute("-b ./src/test -l en -t templates/locale.ftl README.md");
+
+        assertTrue(output.contains("3.142"));
+        assertTrue(output.contains("99,999.99"));
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
new file mode 100644
index 0000000..ad24631
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import freemarker.template.Configuration;
+import org.apache.freemarker.generator.cli.config.Settings.SettingsBuilder;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.StringWriter;
+
+import static java.util.Collections.singletonList;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class ConfigurationSupplierTest {
+
+    private static final String ANY_TEMPLATE_NAME = "templateName";
+
+    @Test
+    public void shouldProvideDefaultConfiguration() {
+        final ConfigurationSupplier configurationSupplier = configurationSupplier(settingsBuilder().build());
+
+        final Configuration configuration = configurationSupplier.get();
+
+        assertTrue(configuration.isDefaultEncodingExplicitlySet());
+        assertTrue(configuration.isLocaleExplicitlySet());
+        assertTrue(configuration.isTemplateLoaderExplicitlySet());
+        assertTrue(configuration.isOutputEncodingSet());
+
+        assertFalse(configuration.isCacheStorageExplicitlySet());
+        assertFalse(configuration.isObjectWrapperExplicitlySet());
+        assertFalse(configuration.isOutputFormatExplicitlySet());
+        assertFalse(configuration.isTemplateExceptionHandlerExplicitlySet());
+        assertFalse(configuration.isTimeZoneExplicitlySet());
+        assertFalse(configuration.isWrapUncheckedExceptionsExplicitlySet());
+    }
+
+    private ConfigurationSupplier configurationSupplier(Settings settings) {
+        return new ConfigurationSupplier(settings, templateLoaderSupplier());
+    }
+
+    private TemplateLoaderSupplier templateLoaderSupplier() {
+        return new TemplateLoaderSupplier(singletonList(new File(".")));
+    }
+
+    private SettingsBuilder settingsBuilder() {
+        return Settings.builder().setTemplateName(ANY_TEMPLATE_NAME).setWriter(new StringWriter());
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java
new file mode 100644
index 0000000..4821723
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/SettingsTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.cli.config.Settings.SettingsBuilder;
+import org.junit.Test;
+
+import java.io.StringWriter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static java.util.Collections.singletonList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+public class SettingsTest {
+
+    private static final String[] ANY_ARGS = singletonList("arg1 arg2").toArray(new String[0]);
+    private static final Properties ANY_CONFIGURATION = new Properties();
+    private static final String ANY_INCLUDE = "*.csv";
+    private static final String ANY_INPUT_ENCODING = "US-ASCII";
+    private static final String ANY_INTERACTIVE_TEMPLATE = "interactiveTemplate";
+    private static final String ANY_LOCALE = "th-TH";
+    private static final String ANY_OUTPUT_ENCODING = "UTF-16";
+    private static final String ANY_OUTPUT_FILE = "outputFile";
+    private static final List<String> ANY_SOURCES = singletonList("sources");
+    private static final String ANY_TEMPLATE_NAME = "templateName";
+    private static final Map<String, String> ANY_USER_PARAMETERS = new HashMap<>();
+    private static final Properties ANY_SYSTEM_PROPERTIES = new Properties();
+
+    @Test
+    public void shouldProvideAllExpectedSettings() {
+        final Settings settings = allSettingsBuilder().build();
+
+        assertEquals(1, settings.getArgs().size());
+        assertNotNull(settings.getConfiguration());
+        assertEquals(ANY_INCLUDE, settings.getInclude());
+        assertEquals(ANY_INPUT_ENCODING, settings.getInputEncoding().name());
+        assertEquals(ANY_OUTPUT_ENCODING, settings.getOutputEncoding().name());
+        assertEquals(ANY_OUTPUT_FILE, settings.getOutputFile().getName());
+        assertEquals(ANY_TEMPLATE_NAME, settings.getTemplateName());
+        assertNotNull(settings.getSources());
+        assertNotNull(settings.getParameters());
+        assertNotNull(settings.getSytemProperties());
+        assertTrue(settings.isReadFromStdin());
+        assertTrue(settings.isEnvironmentExposed());
+        assertTrue(settings.isInteractiveTemplate());
+        assertTrue(settings.isVerbose());
+    }
+
+    private SettingsBuilder allSettingsBuilder() {
+        return Settings.builder()
+                .isEnvironmentExposed(true)
+                .isReadFromStdin(true)
+                .setArgs(ANY_ARGS)
+                .setConfiguration(ANY_CONFIGURATION)
+                .setInclude(ANY_INCLUDE)
+                .setInputEncoding(ANY_INPUT_ENCODING)
+                .setInteractiveTemplate(ANY_INTERACTIVE_TEMPLATE)
+                .setLocale(ANY_LOCALE)
+                .setOutputEncoding(ANY_OUTPUT_ENCODING)
+                .setOutputFile(ANY_OUTPUT_FILE)
+                .setParameters(ANY_USER_PARAMETERS)
+                .setSources(ANY_SOURCES)
+                .setSystemProperties(ANY_SYSTEM_PROPERTIES)
+                .setTemplateName(ANY_TEMPLATE_NAME)
+                .setWriter(new StringWriter())
+                .setVerbose(true);
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java
new file mode 100644
index 0000000..79c9ea4
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java
@@ -0,0 +1,55 @@
+/*
+ * 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.freemarker.generator.cli.config;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class TemplateDirectorySupplierTest {
+
+    // Depending on the local configuration the "~/.freemarker-cli" directory might be found.
+    private final int nrOfDefaultTemplateDirectories = templateDirectories(null).size();
+
+    @Test
+    public void shouldRemoveDuplicateTemplateDirectorie() throws IOException {
+        final List<File> directories = templateDirectories(".");
+
+        assertEquals(nrOfDefaultTemplateDirectories, directories.size());
+    }
+
+    @Test
+    public void shouldAddTemplateDirectory() throws IOException {
+        assertEquals(nrOfDefaultTemplateDirectories + 1, templateDirectories("templates").size());
+        assertEquals(nrOfDefaultTemplateDirectories + 1, templateDirectories("./templates").size());
+    }
+
+    @Test
+    public void shouldSkippedNonExistingTemplateDirectorie() throws IOException {
+        final List<File> directories = templateDirectories("does-not-exist");
+
+        assertEquals(nrOfDefaultTemplateDirectories, directories.size());
+    }
+
+    private List<File> templateDirectories(String directory) {
+        return new TemplateDirectorySupplier(directory).get();
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateLoaderSupplierTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateLoaderSupplierTest.java
new file mode 100644
index 0000000..8c77f74
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateLoaderSupplierTest.java
@@ -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.
+ */
+package org.apache.freemarker.generator.cli.config;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+import static java.util.Collections.emptyList;
+import static org.junit.Assert.assertNotNull;
+
+public class TemplateLoaderSupplierTest {
+
+    @Test
+    public void shouldHandleEmptyDirectoryList() {
+        assertNotNull(templateLoaderSupplier(emptyList()));
+    }
+
+    private TemplateLoaderSupplier templateLoaderSupplier(List<File> templateDirectories) {
+        return new TemplateLoaderSupplier(templateDirectories);
+    }
+}
diff --git a/freemarker-generator-cli/src/test/templates/echo.ftl b/freemarker-generator-cli/src/test/templates/echo.ftl
new file mode 100644
index 0000000..3499bb0
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/echo.ftl
@@ -0,0 +1,22 @@
+<#ftl output_format="plainText" >
+<#--
+  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.
+-->
+<#list Documents.list as document>
+${document.name}, ${document.location}
+=============================================================================
+${document.text}
+</#list>
\ No newline at end of file
diff --git a/freemarker-generator-cli/src/test/templates/environment.ftl b/freemarker-generator-cli/src/test/templates/environment.ftl
new file mode 100644
index 0000000..96d10b1
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/environment.ftl
@@ -0,0 +1,23 @@
+<#ftl output_format="plainText" >
+<#--
+  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.
+-->
+Environment variables are directly exposed when using the "-E" option
+
+HOME: ${HOME!""}
+USER: ${USER!""}
+PWD: ${PWD!""}
+PATH: ${PATH!""}
diff --git a/freemarker-generator-cli/src/test/templates/locale.ftl b/freemarker-generator-cli/src/test/templates/locale.ftl
new file mode 100644
index 0000000..d33edf4
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/locale.ftl
@@ -0,0 +1,26 @@
+<#ftl output_format="plainText" >
+<#--
+  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.
+-->
+Manual Test
+---------------------------------------------------------------------------
+<#assign smallNumber = 3.1415927>
+<#assign largeNumber = 99999.99>
+
+Small Number :  ${smallNumber}
+Large Number :  ${largeNumber}
+Date         :  ${.now?date}
+Time         :  ${.now?time}
diff --git a/freemarker-generator-cli/src/test/templates/manual.ftl b/freemarker-generator-cli/src/test/templates/manual.ftl
new file mode 100644
index 0000000..d33edf4
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/manual.ftl
@@ -0,0 +1,26 @@
+<#ftl output_format="plainText" >
+<#--
+  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.
+-->
+Manual Test
+---------------------------------------------------------------------------
+<#assign smallNumber = 3.1415927>
+<#assign largeNumber = 99999.99>
+
+Small Number :  ${smallNumber}
+Large Number :  ${largeNumber}
+Date         :  ${.now?date}
+Time         :  ${.now?time}
diff --git a/freemarker-generator-cli/src/test/templates/security/api.ftl b/freemarker-generator-cli/src/test/templates/security/api.ftl
new file mode 100644
index 0000000..5208784
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/security/api.ftl
@@ -0,0 +1,17 @@
+<#--
+  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.
+-->
+<#assign uri=SystemTool?api.class.getResource("/").toURI()>
diff --git a/freemarker-generator-cli/src/test/templates/security/new.ftl b/freemarker-generator-cli/src/test/templates/security/new.ftl
new file mode 100644
index 0000000..b7ddf2a
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/security/new.ftl
@@ -0,0 +1,17 @@
+<#--
+  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.
+-->
+<#assign ex="freemarker.template.utility.Execute"?new()> ${ ex("date") }
diff --git a/freemarker-generator-cli/src/test/templates/tools/csv.ftl b/freemarker-generator-cli/src/test/templates/tools/csv.ftl
new file mode 100644
index 0000000..93b53f8
--- /dev/null
+++ b/freemarker-generator-cli/src/test/templates/tools/csv.ftl
@@ -0,0 +1,46 @@
+<#ftl output_format="plainText">
+<#--
+  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.
+-->
+<#assign records = CSVTool.parse(Documents.get(0), CSVFormat.DEFAULT.withHeader()).records>
+
+CSVTool.toMap(name)
+=============================================================================
+<#assign map = CSVTool.toMap(records, "contract_id")>
+<#list map as key, record>
+${key} ==> ${record.get("customer_company_name")}
+</#list>
+
+CSVTool.toMap(index)
+=============================================================================
+<#assign map = CSVTool.toMap(records, 0)>
+<#list map as key, record>
+${key} ==> ${record.get("customer_company_name")}
+</#list>
+
+CSVTool.toMultiMap(name)
+=============================================================================
+<#assign map = CSVTool.toMultiMap(records, "contract_id")>
+<#list map as key, records>
+${key} ==> Found ${records?size} records
+</#list>
+
+CSVTool.toMultiMap(index)
+=============================================================================
+<#assign map = CSVTool.toMultiMap(records, 0)>
+<#list map as key, records>
+${key} ==> Found ${records?size} records
+</#list>
diff --git a/freemarker-generator-cli/templates/accesslog/combined-access.ftl b/freemarker-generator-cli/templates/accesslog/combined-access.ftl
new file mode 100644
index 0000000..fbcb71e
--- /dev/null
+++ b/freemarker-generator-cli/templates/accesslog/combined-access.ftl
@@ -0,0 +1,32 @@
+<#ftl output_format="plainText" strip_whitespace=true>
+<#--
+  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.
+-->
+<#assign grok = GrokTool.compile("%{COMBINEDAPACHELOG}")>
+<#assign document = Documents.get(0)>
+<#assign lines = document.getLineIterator()>
+
+<#compress>
+    TIMESTAMP;VERB;REQUEST;HTTPVERSION
+    <#list lines as line>
+        <#assign parts = grok.match(line)>
+        <#assign timestamp = parts["timestamp"]>
+        <#assign verb = parts["verb"]>
+        <#assign request = parts["request"]>
+        <#assign httpversion = parts["httpversion"]>
+        ${timestamp};${verb};${request};${httpversion}
+    </#list>
+</#compress>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/cat.ftl b/freemarker-generator-cli/templates/cat.ftl
new file mode 100644
index 0000000..77fd4c2
--- /dev/null
+++ b/freemarker-generator-cli/templates/cat.ftl
@@ -0,0 +1,23 @@
+<#ftl output_format="plainText" strip_whitespace=true>
+<#--
+  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.
+-->
+<#assign lines = Documents.get(0).getLineIterator()>
+<#compress>
+    <#list lines as line>
+        ${line}
+    </#list>
+</#compress>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/csv/csv/gatling-user-credentials.ftl b/freemarker-generator-cli/templates/csv/csv/gatling-user-credentials.ftl
new file mode 100644
index 0000000..3cfe9e8
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/csv/gatling-user-credentials.ftl
@@ -0,0 +1,30 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withDelimiter(';')>
+<#assign csvParser = CSVTool.parse(document, cvsFormat)>
+<#assign csvRecords = csvParser.records>
+
+<#compress>
+disposer,user,password,token,device,name,description
+<#list csvRecords as record>
+    <#assign user = record.get(0)>
+    <#assign token = record.get(1)>
+    ${user},${user},,${token},,${user},performance test user ${user}
+</#list>
+</#compress>
diff --git a/freemarker-generator-cli/templates/csv/fo/transactions.ftl b/freemarker-generator-cli/templates/csv/fo/transactions.ftl
new file mode 100644
index 0000000..4715484
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/fo/transactions.ftl
@@ -0,0 +1,97 @@
+<#ftl output_format="XML" >
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign name = document.name>
+<#assign cvsFormat = CSVTool.formats.DEFAULT.withDelimiter('\t').withHeader()>
+<#assign csvParser = CSVTool.parse(document, cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+    <fo:layout-master-set>
+        <fo:simple-page-master master-name="first"
+                               page-height="21cm"
+                               page-width="29.7cm"
+                               margin-top="1cm"
+                               margin-bottom="1cm"
+                               margin-left="1cm"
+                               margin-right="1cm">
+            <fo:region-body margin-top="1cm"/>
+            <fo:region-before extent="1cm"/>
+            <fo:region-after extent="-1.2cm"/>
+        </fo:simple-page-master>
+    </fo:layout-master-set>
+    <fo:page-sequence master-reference="first">
+        <fo:static-content flow-name="xsl-region-before">
+            <fo:block line-height="10pt" font-size="8pt" text-align="left">Transaction Export - ${.now}</fo:block>
+        </fo:static-content>
+        <fo:static-content flow-name="xsl-region-after">
+            <fo:block line-height="6pt" font-size="6pt" text-align="end">Page <fo:page-number/></fo:block>
+        </fo:static-content>
+        <fo:flow flow-name="xsl-region-body">
+            <fo:table table-layout="fixed" width="100%" border-collapse="separate">
+                <fo:table-column column-width="9%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="7%"/>
+                <@writeTableHeader headers=csvHeaders/>
+                <@writeTableBody columns=csvRecords/>
+            </fo:table>
+        </fo:flow>
+    </fo:page-sequence>
+</fo:root>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableHeader headers>
+    <fo:table-header>
+        <fo:table-row>
+            <#list headers as header>
+                <fo:table-cell border-style="solid" border-width="0.1pt" padding-left="1.0px" padding-right="1.0px">
+                    <fo:block font-size="6pt" font-weight="bold">${header}</fo:block>
+                </fo:table-cell>
+            </#list>
+        </fo:table-row>
+    </fo:table-header>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableBody columns>
+    <fo:table-body>
+        <#list columns as column>
+            <fo:table-row>
+                <#list column.iterator() as field>
+                    <fo:table-cell border-style="solid" border-width="0.1pt" padding-left="1.0px" padding-right="1.0px">
+                        <fo:block font-size="6pt">${field}</fo:block>
+                    </fo:table-cell>
+                </#list>
+            </fo:table-row>
+        </#list>
+    </fo:table-body>
+</#macro>
diff --git a/freemarker-generator-cli/templates/csv/fo/transform.ftl b/freemarker-generator-cli/templates/csv/fo/transform.ftl
new file mode 100644
index 0000000..38594cd
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/fo/transform.ftl
@@ -0,0 +1,76 @@
+<#ftl output_format="XML" >
+<#--
+  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.
+-->
+<#assign csvFormatName = SystemTool.parameters["csv.format"]!"DEFAULT">
+<#assign cvsFormat = CSVTool.formats[csvFormatName].withHeader()>
+<#assign csvParser = CSVTool.parse(Documents.get(0), cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+    <fo:layout-master-set>
+        <fo:simple-page-master master-name="first"
+                               page-height="21cm"
+                               page-width="29.7cm"
+                               margin-top="1cm"
+                               margin-bottom="1cm"
+                               margin-left="1cm"
+                               margin-right="1cm">
+            <fo:region-body margin-top="1cm"/>
+            <fo:region-before extent="1cm"/>
+            <fo:region-after extent="1cm"/>
+        </fo:simple-page-master>
+    </fo:layout-master-set>
+    <fo:page-sequence master-reference="first">
+        <fo:flow flow-name="xsl-region-body">
+            <fo:table table-layout="fixed" width="100%" border-collapse="separate">
+                <@writeTableHeader headers=csvHeaders/>
+                <@writeTableBody columns=csvRecords/>
+            </fo:table>
+        </fo:flow>
+    </fo:page-sequence>
+</fo:root>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableHeader headers>
+    <fo:table-header>
+        <fo:table-row>
+            <#list headers as header>
+                <fo:table-cell>
+                    <fo:block font-weight="bold">${header}</fo:block>
+                </fo:table-cell>
+            </#list>
+        </fo:table-row>
+    </fo:table-header>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableBody columns>
+    <fo:table-body>
+        <#list columns as column>
+            <fo:table-row>
+                <#list column.iterator() as field>
+                    <fo:table-cell>
+                        <fo:block>${field}</fo:block>
+                    </fo:table-cell>
+                </#list>
+            </fo:table-row>
+        </#list>
+    </fo:table-body>
+</#macro>
diff --git a/freemarker-generator-cli/templates/csv/html/transactions.ftl b/freemarker-generator-cli/templates/csv/html/transactions.ftl
new file mode 100644
index 0000000..b31d6c0
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/html/transactions.ftl
@@ -0,0 +1,58 @@
+<#ftl output_format="HTML" >
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign name = document.name>
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withDelimiter('\t').withHeader()>
+<#assign csvParser = CSVTool.parse(document, cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+
+<!DOCTYPE html>
+<html>
+<head>
+    <title>${name}</title>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
+</head>
+<body>
+<table class="table table-striped">
+    <@writeHeaders headers=csvHeaders/>
+    <@writeColums columns=csvRecords/>
+</table>
+</body>
+</html>
+<#--------------------------------------------------------------------------->
+<#macro writeHeaders headers>
+    <tr>
+        <#list headers as header>
+            <th>${header}</th>
+        </#list>
+    </tr>
+</#macro>
+<#--------------------------------------------------------------------------->
+<#macro writeColums columns>
+    <#list columns as column>
+        <tr>
+            <#list column.iterator() as field>
+                <td>${field}</td>
+            </#list>
+        </tr>
+    </#list>
+</#macro>
diff --git a/freemarker-generator-cli/templates/csv/html/transform.ftl b/freemarker-generator-cli/templates/csv/html/transform.ftl
new file mode 100644
index 0000000..54a805e
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/html/transform.ftl
@@ -0,0 +1,56 @@
+<#ftl output_format="HTML" >
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign name = document.name>
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withHeader()>
+<#assign csvParser = CSVTool.parse(document, cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderNames()>
+<#--------------------------------------------------------------------------->
+<!DOCTYPE html>
+<html>
+<head>
+    <title>${name}</title>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
+</head>
+<body>
+<table class="table table-striped">
+    <@writeHeaders csvParser.getHeaderNames()/>
+    <#list csvParser.iterator() as record>
+        <@writeColumns record/>
+    </#list>
+</table>
+</body>
+</html>
+<#--------------------------------------------------------------------------->
+<#macro writeHeaders headers>
+    <tr>
+        <#list headers as header>
+            <th>${header}</th>
+        </#list>
+    </tr>
+</#macro>
+<#--------------------------------------------------------------------------->
+<#macro writeColumns record>
+    <tr>
+        <#list record.iterator() as field>
+            <th>${field}</th>
+        </#list>
+    </tr>
+</#macro>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/csv/md/filter.ftl b/freemarker-generator-cli/templates/csv/md/filter.ftl
new file mode 100644
index 0000000..3967e0c
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/md/filter.ftl
@@ -0,0 +1,55 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign parser = parser(document)>
+<#assign headers = parser.getHeaderNames()>
+<#assign column = SystemTool.getParameter("column")>
+<#assign values = SystemTool.getParameter("values")?split(",")>
+
+<#compress>
+    <@writePageHeader document/>
+    <#-- Process each line without materializing the whole file in memory -->
+    <#list parser.iterator() as record>
+        <#if filter(record)>
+            <@writeCsvRecord headers record/>
+        </#if>
+    </#list>
+</#compress>
+
+<#function parser document>
+    <#assign format = CSVTool.formats[SystemTool.getParameter("format", "DEFAULT")]>
+    <#assign delimiter = CSVTool.toDelimiter(SystemTool.getParameter("delimiter", format.getDelimiter()))>
+    <#return CSVTool.parse(document, format.withFirstRecordAsHeader().withDelimiter(delimiter))>
+</#function>
+
+<#function filter record>
+    <#return values?seq_contains(record.get(column))>
+</#function>
+
+<#macro writePageHeader document>
+    # ${document.name}
+</#macro>
+
+<#macro writeCsvRecord headers record>
+    ## Line ${record.getRecordNumber()}
+    | Column    | Value                       |
+    | --------- | --------------------------- |
+    <#list headers as header>
+    | ${header} | ${record.get(header)}       |
+    </#list>
+</#macro>
diff --git a/freemarker-generator-cli/templates/csv/md/transform.ftl b/freemarker-generator-cli/templates/csv/md/transform.ftl
new file mode 100644
index 0000000..efcf276
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/md/transform.ftl
@@ -0,0 +1,37 @@
+<#ftl output_format="plainText">
+<#--
+  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.
+-->
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withHeader()>
+<#assign csvParser = CSVTool.parse(Documents.get(0), cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+<#compress>
+<@writeHeaders headers=csvHeaders/>
+<@writeColums columns=csvRecords/>
+</#compress>
+<#--------------------------------------------------------------------------->
+<#macro writeHeaders headers>
+| ${csvHeaders?join(" | ", "")} |
+    <#list csvHeaders as csvHeader>| --------</#list>|
+</#macro>
+<#--------------------------------------------------------------------------->
+<#macro writeColums columns>
+    <#list columns as column>
+    | ${column.iterator()?join(" | ", "")} |
+    </#list>
+</#macro>
diff --git a/freemarker-generator-cli/templates/csv/shell/curl.ftl b/freemarker-generator-cli/templates/csv/shell/curl.ftl
new file mode 100644
index 0000000..8df601f
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/shell/curl.ftl
@@ -0,0 +1,32 @@
+<#ftl output_format="plainText">
+<#--
+  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.
+-->
+<#assign cvsFormat = CSVTool.formats["DEFAULT"].withHeader()>
+<#assign csvParser = CSVTool.parse(Documents.get(0), cvsFormat)>
+<#assign records = csvParser.records>
+<#assign csvMap = CSVTool.toMap(records, "disposer")>
+<#--------------------------------------------------------------------------->
+#!/bin/sh
+
+<#noparse>
+MY_BASE_URL=${MY_BASE_URL:=https://postman-echo.com}
+</#noparse>
+ 
+echo "time,user,status,duration,size"
+<#list records as record>
+date "+%FT%H:%M:%S" | tr -d '\n'; curl --write-out ',${record.disposer},%{http_code},%{time_total},%{size_download}\n' --silent --show-error --output /dev/null "${r"${MY_BASE_URL}"}/get"
+</#list>
diff --git a/freemarker-generator-cli/templates/csv/transform.ftl b/freemarker-generator-cli/templates/csv/transform.ftl
new file mode 100644
index 0000000..0380abb
--- /dev/null
+++ b/freemarker-generator-cli/templates/csv/transform.ftl
@@ -0,0 +1,39 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign csvParser = createCsvParser(Documents.get(0))>
+<#assign csvPrinter = createCsvPrinter()>
+<#-- Print each line without materializing the CSV in memory -->
+<#compress>
+    <#list csvParser.iterator() as record>
+        ${csvPrinter.printRecord(record)}
+    </#list>
+</#compress>
+
+<#function createCsvParser document>
+    <#assign initialCvsInFormat = CSVTool.formats[SystemTool.getParameter("csv.in.format", "DEFAULT")]>
+    <#assign csvInDelimiter = CSVTool.toDelimiter(SystemTool.getParameter("csv.in.delimiter", initialCvsInFormat.getDelimiter()))>
+    <#assign cvsInFormat = initialCvsInFormat.withDelimiter(csvInDelimiter)>
+    <#return CSVTool.parse(document, cvsInFormat)>
+</#function>
+
+<#function createCsvPrinter>
+    <#assign initialCvsOutFormat = CSVTool.formats[SystemTool.getParameter("csv.out.format", "DEFAULT")]>
+    <#assign csvOutDelimiter = CSVTool.toDelimiter(SystemTool.getParameter("csv.out.delimiter", initialCvsOutFormat.getDelimiter()))>
+    <#assign cvsOutFormat = initialCvsOutFormat.withDelimiter(csvOutDelimiter)>
+    <#return CSVTool.printer(cvsOutFormat, SystemTool.writer)>
+</#function>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/demo.ftl b/freemarker-generator-cli/templates/demo.ftl
new file mode 100644
index 0000000..b3cad69
--- /dev/null
+++ b/freemarker-generator-cli/templates/demo.ftl
@@ -0,0 +1,143 @@
+<#ftl output_format="plainText">
+<#--
+  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.
+-->
+1) FreeMarker Special Variables
+---------------------------------------------------------------------------
+FreeMarker version     : ${.version}
+Template name          : ${.current_template_name}
+Language               : ${.lang}
+Locale                 : ${.locale}
+Timestamp              : ${.now}
+Output encoding        : ${.output_encoding!"not set"}
+Output format          : ${.output_format}
+
+2) Invoke a constructor of a Java class
+---------------------------------------------------------------------------
+<#assign date = FreeMarkerTool.objectConstructor("java.util.Date", 1000 * 3600 * 24)>
+new java.utilDate(1000 * 3600 * 24): ${date?datetime}
+
+3) Invoke a static method of an non-constructor class
+---------------------------------------------------------------------------
+Random UUID              : ${FreeMarkerTool.statics["java.util.UUID"].randomUUID()}
+System.currentTimeMillis : ${FreeMarkerTool.statics["java.lang.System"].currentTimeMillis()}
+
+4) Access an Enumeration
+---------------------------------------------------------------------------
+java.math.RoundingMode#UP: ${FreeMarkerTool.enums["java.math.RoundingMode"].UP}
+
+5) Loop Over The Values Of An Enumeration
+---------------------------------------------------------------------------
+<#list FreeMarkerTool.enums["java.math.RoundingMode"]?values as roundingMode>
+- java.math.RoundingMode.${roundingMode}<#lt>
+</#list>
+
+6) Display list of input files
+---------------------------------------------------------------------------
+List all files:
+<#list Documents.list as document>
+- Document: name=${document.name} location=${document.location} length=${document.length} encoding=${document.encoding!""}
+</#list>
+
+7) SystemTool
+---------------------------------------------------------------------------
+Host name       : ${SystemTool.getHostName()}
+Command line    : ${SystemTool.getCommandLineArgs()?join(", ")}
+System property : ${SystemTool.getSystemProperty("user.name", "N.A.")}
+Timestamp       : ${SystemTool.currentTimeMillis?c}
+Environment var : ${SystemTool.envs["USER"]!"N.A."}
+
+8) Access System Properties
+---------------------------------------------------------------------------
+app.dir      : ${SystemTool.systemProperties["app.dir"]!""}
+app.home     : ${SystemTool.systemProperties["app.home"]!""}
+app.pid      : ${SystemTool.systemProperties["app.pid"]!""}
+basedir      : ${SystemTool.systemProperties["basedir"]!""}
+java.version : ${SystemTool.systemProperties["java.version"]!""}
+user.name    : ${SystemTool.systemProperties["user.name"]!""}
+user.dir     : ${SystemTool.systemProperties["user.dir"]!""}
+user.home    : ${SystemTool.systemProperties["user.home"]!""}
+
+9) List Environment Variables
+---------------------------------------------------------------------------
+<#list SystemTool.envs as name,value>
+- ${name} ==> ${value}<#lt>
+</#list>
+
+10) List System Properties
+---------------------------------------------------------------------------
+<#list SystemTool.systemProperties as name,value>
+- ${name} ==> ${value}<#lt>
+</#list>
+
+11) Access Documents
+---------------------------------------------------------------------------
+Get the number of documents:
+- ${Documents.size()}
+<#if !Documents.isEmpty()>
+Get the first document
+- ${Documents.get(0)!"NA"}
+</#if>
+List all files containing "README" in the name
+<#list Documents.find("*README*") as document>
+- ${document.name}
+</#list>
+List all files having "md" extension
+<#list Documents.find("*.md") as document>
+- ${document.name}
+</#list>
+Get all documents
+<#list Documents.list as document>
+- ${document.name} => ${document.location}
+</#list>
+
+12) FreeMarker CLI Tools
+---------------------------------------------------------------------------
+<#list .data_model?keys?sort as key>
+<#if key?ends_with("Tool")>
+- ${key?right_pad(20)} : ${.data_model[key]}
+</#if>
+</#list>
+
+13) Document Data Model
+---------------------------------------------------------------------------
+<#list .data_model?keys?sort as key>
+- ${key}<#lt>
+</#list>
+
+14) Create a UUID
+---------------------------------------------------------------------------
+UUIDTool Random UUID  : ${UUIDTool.randomUUID()}
+UUIDTool Named UUID   : ${UUIDTool.namedUUID("value and salt")}
+
+15) Printing Special Characters
+---------------------------------------------------------------------------
+German Special Characters: äöüßÄÖÜ
+
+16) Locale-specific output
+---------------------------------------------------------------------------
+<#setting number_format=",##0.00">
+<#assign smallNumber = 1.234>
+<#assign largeNumber = 12345678.9>
+Small Number :  ${smallNumber}
+Large Number :  ${largeNumber}
+Date         :  ${.now?date}
+Time         :  ${.now?time}
+
+17) Execute a program
+---------------------------------------------------------------------------
+> date
+${ExecTool.execute("date")}
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/excel/csv/custom.ftl b/freemarker-generator-cli/templates/excel/csv/custom.ftl
new file mode 100644
index 0000000..9235460
--- /dev/null
+++ b/freemarker-generator-cli/templates/excel/csv/custom.ftl
@@ -0,0 +1,56 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign format = SystemTool.parameters["csv.format"]!"DEFAULT">
+<#assign salt = SystemTool.parameters["salt"]!"salt">
+<#-- Parse the first document & sheet of the Excel document -->
+<#assign workbook = ExcelTool.parse(Documents.get(0))>
+<#assign sheet = ExcelTool.getSheets(workbook)[0]>
+<#assign records = ExcelTool.toTable(sheet)>
+<#-- Setup CSVPrinter  -->
+<#assign cvsFormat = CSVTool.formats[format]>
+<#assign csvPrinter = CSVTool.printer(cvsFormat, SystemTool.writer)>
+<#--
+    Transform an arbitrary Excel file and add addition columns using Commons CSV
+    We are using an instance of CSVPrinter directly have proper quoting of the output
+    which in turn uses the underlying java.io.Writer.
+-->
+<#compress>
+    <#list records as record>
+        <#if record?is_first>
+        <#-- Updated header line -->
+            <#assign line = "Line">
+            <#assign uuid = "UUID">
+            <#assign quoted = "Quoted Text">
+        <#else>
+        <#-- Updated rows -->
+            <#assign line = record?counter-1>
+            <#assign uuid = uuidFromValueAndSalt(text, salt)>
+            <#assign quoted = ",;">
+        </#if>
+        <#assign text = record[1]>
+        <#assign date = record[2]>
+        ${csvPrinter.printRecord(line, text, date, uuid, quoted)}
+    </#list>
+</#compress>
+<#--------------------------------------------------------------------------->
+<#function uuidFromValueAndSalt value salt>
+    <#assign uuidSource = value + salt>
+    <#assign buffer = FreeMarkerTool.statics["java.nio.charset.Charset"].forName("UTF-8").encode(uuidSource).rewind()>
+    <#assign bytes = buffer.array()[0..<buffer.limit()]>
+    <#return FreeMarkerTool.statics["java.util.UUID"].nameUUIDFromBytes(bytes)>
+</#function>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/excel/csv/transform.ftl b/freemarker-generator-cli/templates/excel/csv/transform.ftl
new file mode 100644
index 0000000..a1e2497
--- /dev/null
+++ b/freemarker-generator-cli/templates/excel/csv/transform.ftl
@@ -0,0 +1,31 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign format = SystemTool.parameters["csv.format"]!"DEFAULT">
+<#-- Parse the first document & sheet of the Excel document -->
+<#assign workbook = ExcelTool.parse(Documents.get(0))>
+<#assign sheet = ExcelTool.getSheets(workbook)[0]>
+<#assign records = ExcelTool.toTable(sheet)>
+<#-- Setup CSVPrinter  -->
+<#assign cvsFormat = CSVTool.formats[format]>
+<#assign csvPrinter = CSVTool.printer(cvsFormat, SystemTool.writer)>
+<#-- Print each line of the Excel as CSV record -->
+<#compress>
+    <#list records as record>
+        ${csvPrinter.printRecord(record)}
+    </#list>
+</#compress>
diff --git a/freemarker-generator-cli/templates/excel/html/transform.ftl b/freemarker-generator-cli/templates/excel/html/transform.ftl
new file mode 100644
index 0000000..5fa4ad9
--- /dev/null
+++ b/freemarker-generator-cli/templates/excel/html/transform.ftl
@@ -0,0 +1,83 @@
+<#ftl output_format="HTML" >
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign documentName = document.name>
+<#assign workbook = ExcelTool.parse(document)>
+<#assign date = .now?iso_utc>
+<#--------------------------------------------------------------------------->
+<!DOCTYPE html>
+<html>
+<head>
+    <title>${documentName}</title>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
+</head>
+<body>
+<div class="container-fluid">
+    <h1>Excel Test
+        <small>${documentName}, ${date}</small>
+    </h1>
+    <@writeSheets workbook/>
+</div>
+</body>
+</html>
+
+<#--------------------------------------------------------------------------->
+<#-- writeSheets                                                           -->
+<#--------------------------------------------------------------------------->
+<#macro writeSheets workbook>
+    <#assign sheets = ExcelTool.getSheets(workbook)>
+    <#list sheets as sheet>
+        <@writeSheet sheet/>
+    </#list>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeSheet                                                            -->
+<#--------------------------------------------------------------------------->
+<#macro writeSheet sheet>
+    <#assign rows = ExcelTool.toTable(sheet)>
+    <h2>${sheet.getSheetName()}</h2>
+    <@writeRows rows/>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeRows                                                             -->
+<#--------------------------------------------------------------------------->
+<#macro writeRows rows>
+    <table class="table table-striped">
+        <#list rows as row>
+            <#if row?is_first>
+                <tr>
+                    <th>#</th>
+                    <#list row as column>
+                        <th>${column}</th>
+                    </#list>
+                </tr>
+            <#else>
+                <tr>
+                    <td>${row?index}</td>
+                    <#list row as column>
+                        <td>${column}</td>
+                    </#list>
+                </tr>
+            </#if>
+        </#list>
+    </table>
+</#macro>
diff --git a/freemarker-generator-cli/templates/excel/md/transform.ftl b/freemarker-generator-cli/templates/excel/md/transform.ftl
new file mode 100644
index 0000000..6ce112e
--- /dev/null
+++ b/freemarker-generator-cli/templates/excel/md/transform.ftl
@@ -0,0 +1,75 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign documentName = document.name>
+<#assign workbook = ExcelTool.parse(document)>
+<#assign date = .now?iso_utc>
+
+<#compress>
+    # ${documentName}
+    <@writeSheets workbook/>
+</#compress>
+${'\n'}
+
+<#--------------------------------------------------------------------------->
+<#-- writeSheets                                                           -->
+<#--------------------------------------------------------------------------->
+<#macro writeSheets workbook>
+    <#assign sheets = ExcelTool.getSheets(workbook)>
+    <#list sheets as sheet>
+        <@writeSheet sheet/>
+    </#list>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeSheet                                                            -->
+<#--------------------------------------------------------------------------->
+<#macro writeSheet sheet>
+    <#assign rows = ExcelTool.toTable(sheet)>
+    ## ${sheet.getSheetName()}
+    ${'\n'}
+    <@writeRows rows/>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeRows                                                             -->
+<#--------------------------------------------------------------------------->
+<#macro writeRows rows>
+    <#list rows as row>
+        <#if row?is_first>
+            <@writeHeaderRow row/>
+        <#else>
+            <@writeDataRow row/>
+        </#if>
+    </#list>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeHeaderRow                                                        -->
+<#--------------------------------------------------------------------------->
+<#macro writeHeaderRow headers>
+    | ${headers?join(" | ", "", " |")}
+    <#list headers as header>| -------- </#list>|
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#-- writeDataRow                                                          -->
+<#--------------------------------------------------------------------------->
+<#macro writeDataRow columns>
+    | ${columns?join(" | ", "", " |")}
+</#macro>
diff --git a/freemarker-generator-cli/templates/html/csv/dependencies.ftl b/freemarker-generator-cli/templates/html/csv/dependencies.ftl
new file mode 100644
index 0000000..0eaad6c
--- /dev/null
+++ b/freemarker-generator-cli/templates/html/csv/dependencies.ftl
@@ -0,0 +1,50 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign document = Documents.get(0)>
+<#assign documentName = document.name>
+<#assign html = JsoupTool.parse(document)>
+
+<#compress>
+    <@writeHeader/>
+    <@writeDependencies "Project_Dependencies_compile"/>
+    <@writeDependencies "Project_Transitive_Dependencies_compile"/>
+    <@writeDependencies "Project_Transitive_Dependencies_runtime"/>
+    <@writeDependencies "Project_Transitive_Dependencies_provided"/>
+</#compress>
+
+<#macro writeHeader>
+    GroupId,ArtifactId,Version,Type,Licenses
+</#macro>
+
+<#macro writeDependencies section>
+    <#assign selection = html.select("a[name=${section}]")>
+    <#if selection?has_content>
+        <#assign table = selection[0].nextElementSibling().child(2).child(0)>
+        <#assign rows = table.children()>
+        <#list rows as row>
+            <#if !row?is_first>
+                <#assign groupId = row.child(0).text()>
+                <#assign artificatId = row.child(1).text()>
+                <#assign version = row.child(2).text()>
+                <#assign type = row.child(3).text()>
+                <#assign licences = row.child(4).text()?replace(",", "")>
+                ${groupId},${artificatId},${version},${type},${licences}
+            </#if>
+        </#list>
+    </#if>
+</#macro>
diff --git a/freemarker-generator-cli/templates/info.ftl b/freemarker-generator-cli/templates/info.ftl
new file mode 100644
index 0000000..9f2fbe8
--- /dev/null
+++ b/freemarker-generator-cli/templates/info.ftl
@@ -0,0 +1,67 @@
+<#ftl output_format="plainText" strip_whitespace=true>
+<#--
+  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.
+-->
+FreeMarker CLI Information
+---------------------------------------------------------------------------
+FreeMarker version     : ${.version}
+Template name          : ${.current_template_name}
+Language               : ${.lang}
+Locale                 : ${.locale}
+Timestamp              : ${.now}
+Output encoding        : ${.output_encoding}
+Output format          : ${.output_format}
+
+FreeMarker CLI Template Directories
+---------------------------------------------------------------------------
+<#list SystemTool.getTemplateDirectories() as directory>
+[${directory?counter}] ${directory}
+</#list>
+
+FreeMarker CLI Tools
+---------------------------------------------------------------------------
+<#list .data_model?keys?sort as key>
+<#if key?ends_with("Tool")>
+- ${key?right_pad(20)} : ${.data_model[key]}
+</#if>
+</#list>
+
+FreeMarker CLI Documents
+---------------------------------------------------------------------------
+<#list Documents.list as document>
+[${document?counter}] ${document.name}, ${document.location}, ${document.length} Bytes
+</#list>
+
+User Supplied Parameters
+---------------------------------------------------------------------------
+<#list SystemTool.parameters as name,value>
+- ${name} ==> ${value}
+</#list>
+
+User Supplied System Properties
+---------------------------------------------------------------------------
+<#list SystemTool.userSystemProperties as name,value>
+- ${name} ==> ${value}
+</#list>
+
+SystemTool
+---------------------------------------------------------------------------
+Command line         : ${SystemTool.getCommandLineArgs()?join(", ")}
+Host Name            : ${SystemTool.getHostName()}
+Java Home            : ${SystemTool.getEnv("JAVA_HOME", "N.A.")}
+User Name            : ${SystemTool.getSystemProperty("user.name", "N.A.")}
+Timestamp            : ${SystemTool.currentTimeMillis}
+Writer               : ${SystemTool.writer.class.name}
diff --git a/freemarker-generator-cli/templates/json/csv/swagger-endpoints.ftl b/freemarker-generator-cli/templates/json/csv/swagger-endpoints.ftl
new file mode 100644
index 0000000..7e34ac5
--- /dev/null
+++ b/freemarker-generator-cli/templates/json/csv/swagger-endpoints.ftl
@@ -0,0 +1,48 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#assign json = JsonPathTool.parse(Documents.get(0))>
+<#assign basePath = json.read("$.basePath")>
+<#assign paths = json.read("$.paths")>
+
+<#compress>
+    ENDPOINT;METHOD;CONSUMES;PRODUCES;SUMMARY;DESCRIPTION
+    <#list paths as endpoint,metadata>
+        <#assign relative_url = basePath + endpoint>
+        <#assign methods = metadata?keys>
+        <#list methods as method>
+            <#assign summary = sanitize(paths[endpoint][method]["summary"]!"")>
+            <#assign description = sanitize(paths[endpoint][method]["description"]!"")>
+            <#assign consumes = join(paths[endpoint][method]["consumes"]![])>
+            <#assign produces = join(paths[endpoint][method]["produces"]![])>
+            ${relative_url};${method?upper_case};${consumes};${produces};${summary};${description}
+        </#list>
+    </#list>
+</#compress>
+${'\n'}
+
+<#function sanitize str>
+    <#return (((str?replace(";", ","))?replace("(\\n)+", "",'r')))?truncate(250)>
+</#function>
+
+<#function join list>
+    <#if list?has_content>
+        <#return list?join(", ")>
+    <#else>
+        <#return "">
+    </#if>
+</#function>
diff --git a/freemarker-generator-cli/templates/json/md/github-users.ftl b/freemarker-generator-cli/templates/json/md/github-users.ftl
new file mode 100644
index 0000000..581d1ca
--- /dev/null
+++ b/freemarker-generator-cli/templates/json/md/github-users.ftl
@@ -0,0 +1,35 @@
+<#ftl output_format="plainText" >
+<#--
+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.
+-->
+<#assign json = JsonPathTool.parse(Documents.get(0))>
+<#assign users = json.read("$[*]")>
+<#--------------------------------------------------------------------------->
+# GitHub Users
+
+Report generated at ${.now?iso_utc}
+
+<#compress>
+<#list users as user>
+<#assign userAvatarUrl = user.avatar_url>
+<#assign userHomeUrl = user.html_url>
+# ${user.login}
+
+| User                                                    | Homepage                                      |
+|:--------------------------------------------------------|:----------------------------------------------|
+| <img src="${user.avatar_url}" width="48" height="48"/> | [${userHomeUrl}](${userHomeUrl})               |
+</#list>
+</#compress>
\ No newline at end of file
diff --git a/freemarker-generator-cli/templates/properties/csv/locker-test-users.ftl b/freemarker-generator-cli/templates/properties/csv/locker-test-users.ftl
new file mode 100644
index 0000000..4328182
--- /dev/null
+++ b/freemarker-generator-cli/templates/properties/csv/locker-test-users.ftl
@@ -0,0 +1,62 @@
+<#ftl output_format="plainText" strip_text="true">
+<#--
+  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.
+-->
+<#compress>
+    TENANT,SITE,USER_ID,DISPOSER_ID,PASSWORD,SMS_OTP,NAME,DESCRIPTION
+    <#list Documents.list as document>
+        <#assign properties = PropertiesTool.parse(document)>
+        <#assign environments = properties["ENVIRONMENTS"]!"">
+        <#assign tenant = extractTenant(environments)>
+        <#assign site = extractSite(environments)>
+        <#assign userId = properties["USER_ID"]!"">
+        <#assign disposerId = properties["USER_ID"]!"">
+        <#assign password = properties["PASSWORD"]!"">
+        <#assign smsOtp = properties["SMS_OTP"]!"">
+        <#assign name = properties["NAME"]!"">
+        <#assign description = properties["DESCRIPTION"]!"">
+        ${tenant},${site},${userId},${disposerId},${password},${smsOtp},${name},${description}
+    </#list>
+</#compress>
+${'\n'}
+
+<#function extractSite environments>
+    <#if (environments)?contains("_DEV")>
+        <#return "dev">
+    <#elseif (environments)?contains("_FAT")>
+        <#return "fat">
+    <#elseif (environments)?contains("_ST")>
+        <#return "st">
+    <#elseif (environments)?contains("_PROD")>
+        <#return "prod">
+    <#elseif (environments)?contains("_UAT")>
+        <#return "uat">
+    <#else>
+        <#return "???">
+    </#if>
+</#function>
+
+<#function extractTenant environments>
+    <#if (environments)?contains("TENANT_A")>
+        <#return "TENANT_A">
+    <#elseif (environments)?contains("TENANT_B")>
+        <#return "TENANT_B">
+    <#elseif (environments)?contains("TENANT_C")>
+        <#return "TENANT_C">
+    <#else>
+        <#return "???">
+    </#if>
+</#function>
diff --git a/freemarker-generator-cli/templates/tsv/fo/transactions.ftl b/freemarker-generator-cli/templates/tsv/fo/transactions.ftl
new file mode 100644
index 0000000..2485e48
--- /dev/null
+++ b/freemarker-generator-cli/templates/tsv/fo/transactions.ftl
@@ -0,0 +1,91 @@
+<#ftl output_format="XML" >
+<#--
+  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.
+-->
+<#assign cvsFormat = CSVTool.formats["TDF"].withHeader()>
+<#assign csvParser = CSVTool.parse(Documents.get(0), cvsFormat)>
+<#assign csvHeaders = csvParser.getHeaderMap()?keys>
+<#assign csvRecords = csvParser.records>
+<#--------------------------------------------------------------------------->
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+    <fo:layout-master-set>
+        <fo:simple-page-master master-name="first"
+                               page-height="21cm"
+                               page-width="29.7cm"
+                               margin-top="1cm"
+                               margin-bottom="1cm"
+                               margin-left="1cm"
+                               margin-right="1cm">
+            <fo:region-body margin-top="1cm"/>
+            <fo:region-before extent="1cm"/>
+            <fo:region-after extent="-1.2cm"/>
+        </fo:simple-page-master>
+    </fo:layout-master-set>
+    <fo:page-sequence master-reference="first">
+        <fo:static-content flow-name="xsl-region-before">
+            <fo:block line-height="10pt" font-size="8pt" text-align="left">Transaction Export - ${.now}</fo:block>
+        </fo:static-content>
+        <fo:static-content flow-name="xsl-region-after">
+            <fo:block line-height="6pt" font-size="6pt" text-align="end">Page <fo:page-number/></fo:block>
+        </fo:static-content>
+        <fo:flow flow-name="xsl-region-body">
+            <fo:table table-layout="fixed" width="100%" border-collapse="separate">
+                <fo:table-column column-width="8%"/>
+                <fo:table-column column-width="10%"/>
+                <fo:table-column column-width="12%"/>
+                <fo:table-column column-width="8%"/>
+                <fo:table-column column-width="7%"/>
+                <fo:table-column column-width="5%"/>
+                <fo:table-column column-width="5%"/>
+                <fo:table-column column-width="5%"/>
+                <fo:table-column column-width="35%"/>
+                <fo:table-column column-width="5%"/>
+                <@writeTableHeader headers=csvHeaders/>
+                <@writeTableBody columns=csvRecords/>
+            </fo:table>
+        </fo:flow>
+    </fo:page-sequence>
+</fo:root>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableHeader headers>
+    <fo:table-header>
+        <fo:table-row>
+            <#list headers as header>
+                <fo:table-cell border-style="solid" border-width="0.1pt" padding-left="1.0px" padding-right="1.0px">
+                    <fo:block font-size="6pt" font-weight="bold">${header}</fo:block>
+                </fo:table-cell>
+            </#list>
+        </fo:table-row>
+    </fo:table-header>
+</#macro>
+
+<#--------------------------------------------------------------------------->
+<#macro writeTableBody columns>
+    <fo:table-body>
+        <#list columns as column>
+            <fo:table-row>
+                <#list column.iterator() as field>
+                    <fo:table-cell border-style="solid" border-width="0.1pt" padding-left="1.0px" padding-right="1.0px">
+                        <fo:block font-size="6pt">${field}</fo:block>
+                    </fo:table-cell>
+                </#list>
+            </fo:table-row>
+        </#list>
+    </fo:table-body>
+</#macro>
diff --git a/freemarker-generator-cli/templates/xml/txt/recipients.ftl b/freemarker-generator-cli/templates/xml/txt/recipients.ftl
new file mode 100644
index 0000000..434d7ea
--- /dev/null
+++ b/freemarker-generator-cli/templates/xml/txt/recipients.ftl
@@ -0,0 +1,36 @@
+<#ftl output_format="plainText" >
+<#--
+  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.
+-->
+<#assign xml = XmlTool.parse(Documents.get(0))>
+<#list xml.recipients.person as recipient>
+To: ${recipient.name}
+${recipient.address}
+
+Dear ${recipient.name},
+
+Thank you for your interest in our products. We will be sending you a catalog shortly.
+To take advantage of our free gift offer, please fill in the survey attached to this
+letter and return it to the address on the reverse. Only one participant is allowed for
+each household.
+
+Sincere salutations,
+
+
+D. H.
+
+---------------------------------------------------------------------------------------
+</#list>
diff --git a/freemarker-generator-cli/templates/yaml/txt/transform.ftl b/freemarker-generator-cli/templates/yaml/txt/transform.ftl
new file mode 100644
index 0000000..00911bc
--- /dev/null
+++ b/freemarker-generator-cli/templates/yaml/txt/transform.ftl
@@ -0,0 +1,46 @@
+<#ftl output_format="plainText">
+<#--
+  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.
+-->
+<#assign map = YamlTool.parse(Documents.get(0))>
+<#--------------------------------------------------------------------------->
+<#compress>
+<@print map 1/>
+</#compress>
+
+<#macro print object level>
+    <#if object?is_sequence>
+        <#list object as value>
+            <@print value level/>
+        </#list>
+    <#elseif object?is_hash>
+        <#list object as key, value>
+            ${level} ${key} : <@printValue value level/>
+        </#list>
+    </#if>
+</#macro>
+
+<#macro printValue value level>
+        <#if value?is_sequence>
+            ${'\n'}<@print value level+1/>
+        <#elseif value?is_hash>
+            ${'\n'}<@print value level+1/>
+        <#elseif value?is_number>
+            ${value?c}
+        <#else>
+            ${value}
+        </#if>
+</#macro>
diff --git a/freemarker-generator-maven-plugin-sample/LICENSE b/freemarker-generator-maven-plugin-sample/LICENSE
new file mode 100644
index 0000000..1121eba
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/LICENSE
@@ -0,0 +1,223 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/freemarker-generator-maven-plugin-sample/NOTICE b/freemarker-generator-maven-plugin-sample/NOTICE
new file mode 100644
index 0000000..c27f50e
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/NOTICE
@@ -0,0 +1,5 @@
+Apache FreeMarker Site
+Copyright 2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/freemarker-generator-maven-plugin-sample/README.md b/freemarker-generator-maven-plugin-sample/README.md
new file mode 100644
index 0000000..4669e07
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/README.md
@@ -0,0 +1,13 @@
+Apache FreeMarker Generator Maven Plugin Sample
+=============================================================================
+
+This project allows to play around with `freemarker-generator-maven-plugin` quickly. 
+
+Let's create a Java class and text file using the `freemarker-generator-maven-plugin`, compile and package it (so you know that the generated code is compiling)
+
+```text
+> mvn clean package
+> cat target/generated-sources/freemarker/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java 
+> cat target/generated-sources/freemarker/generator/test.txt
+```
+
diff --git a/freemarker-generator-maven-plugin-sample/pom.xml b/freemarker-generator-maven-plugin-sample/pom.xml
new file mode 100644
index 0000000..cbd84a1
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/pom.xml
@@ -0,0 +1,87 @@
+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.freemarker.generator</groupId>
+        <artifactId>freemarker-generator</artifactId>
+        <version>0.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>freemarker-generator-maven-plugin-sample</artifactId>
+    <name>Apache FreeMarker Generator: Maven Plugin Sample</name>
+    <description>Sample project for Apache FreeMarker Generator Plugin</description>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.freemarker.generator</groupId>
+                <artifactId>freemarker-generator-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    <!-- Required. Specifies the compatibility version for template processing -->
+                    <freeMarkerVersion>${freemarker.version}</freeMarkerVersion>
+                </configuration>
+                <executions>
+                    <!-- 
+                        If you want to generate files during other phases, just add more execution
+                        tags and specify appropriate phase, sourceDirectory and outputDirectory values.
+                    -->
+                    <execution>
+                        <id>freemarker-generator</id>
+                        <!-- Optional, defaults to generate-sources -->
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <!-- Required, must be generate -->
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <!-- Optional, defaults to src/main/freemarker/generator -->
+                            <sourceDirectory>src/main/freemarker/generator</sourceDirectory>
+                            <!-- Optional, defaults to src/main/freemarker/generator/templatee -->
+                            <templateDirectory>src/main/freemarker/generator/template</templateDirectory>
+                            <!-- Optional, defaults to src/main/freemarker/generator/generatorr -->
+                            <generatorDirectory>src/main/freemarker/generator/generator</generatorDirectory>
+                            <!-- Optional, defaults to target/generated-sources/freemarker/generator -->
+                            <outputDirectory>target/generated-sources/freemarker/generator</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>*.md</exclude>
+                        <excludde>**/*.json</excludde>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java.json b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java.json
new file mode 100644
index 0000000..088b6b5
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java.json
@@ -0,0 +1,6 @@
+{
+  "templateName": "HelloWorld.java.ftl",
+  "dataModel": {
+    "name": "Apache FreeMarker Maven Plugin"
+  }
+}
\ No newline at end of file
diff --git a/src/test/data/generating-file-visitor/data/mydir/success-test.txt.json b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/test.txt.json
similarity index 100%
copy from src/test/data/generating-file-visitor/data/mydir/success-test.txt.json
copy to freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/test.txt.json
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/HelloWorld.java.ftl b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/HelloWorld.java.ftl
new file mode 100644
index 0000000..9f7f41a
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/HelloWorld.java.ftl
@@ -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.
+ */
+package ${session.currentProject.model.groupId}.maven.sample;
+
+/**
+ * Generated by Apache FreeMarker ${pomProperties["freemarker.version"]}.
+ */
+public class HelloWorld 
+{
+	public static void main (String[] args)
+	{
+	    System.out.println("Hello ${name}!");
+	}
+}
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/test.ftl b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/test.ftl
new file mode 100644
index 0000000..ebb20b3
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/test.ftl
@@ -0,0 +1,43 @@
+<#ftl output_format="plainText">
+<#--
+  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.
+-->
+<#assign model=session.currentProject.model>
+<#assign properties=session.currentProject.properties>
+<#assign dependencies=session.currentProject.dependencies>
+Accessing Generator Data
+-----------------------------------------------------------------------------
+This is a test freemarker template. Test json data: '${testVar}'
+
+Maven Project Properties
+-----------------------------------------------------------------------------
+<#list properties as key,value>
+- ${key?right_pad(38)} ==> ${value}<#lt>
+</#list>
+
+Maven Project Model
+-----------------------------------------------------------------------------
+- ArtifactId                             ==> ${model.artifactId}
+- GroupId                                ==> ${model.groupId}
+- Version                                ==> ${model.version}
+- Name                                   ==> ${model.name}
+- Description                            ==> ${model.description!""}
+
+Maven Project Dependencies
+-----------------------------------------------------------------------------
+<#list dependencies as dependency>
+- ${dependency.groupId}:${dependency.artifactId}:${dependency.version}:${dependency.optional?string('yes', 'no')}
+</#list>
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin/LICENSE b/freemarker-generator-maven-plugin/LICENSE
new file mode 100644
index 0000000..1121eba
--- /dev/null
+++ b/freemarker-generator-maven-plugin/LICENSE
@@ -0,0 +1,223 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/freemarker-generator-maven-plugin/NOTICE b/freemarker-generator-maven-plugin/NOTICE
new file mode 100644
index 0000000..c27f50e
--- /dev/null
+++ b/freemarker-generator-maven-plugin/NOTICE
@@ -0,0 +1,5 @@
+Apache FreeMarker Site
+Copyright 2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/freemarker-generator-maven-plugin/README.md b/freemarker-generator-maven-plugin/README.md
new file mode 100644
index 0000000..f6e186d
--- /dev/null
+++ b/freemarker-generator-maven-plugin/README.md
@@ -0,0 +1,149 @@
+Apache FreeMarker Generator Maven Plugin
+=============================================================================
+
+# Table of contents
+
+- [Background](#background)
+- [Install](#install)
+- [Usage](#usage)
+  - [FreeMarker Template Files](#freemarker-template-files)
+  - [JSON Generator Files](#json-generator-files)
+  - [Using POM Properties During Generation](#using-pom-properties-during-generation)
+  - [FreeMarker Configuration](#freemarker-configuration)
+  - [Incremental Builds](#incremental-builds)
+- [Code Coverage](#code-coverage)
+
+# Background
+This plugin generates source files from FreeMarker templates with a flexible process that includes the ability to:
+
+- Generate multiple source files from a single template,
+- Generate source files during multiple steps in the build process such as testing, and
+- Specify distinct locations for the templates and data models for different stages of the build. 
+
+# Install
+
+## pom.xml
+
+Add the following snippet within the `<plugins>` tag of your pom.xml:
+
+```xml
+<build>
+    <plugins>
+        <plugin>
+            <groupId>org.apache.freemarker.generator</groupId>
+            <artifactId>freemarker-generator-maven-plugin</artifactId>
+            <version>${project.version}</version>
+            <configuration>
+                <!-- Required. Specifies the compatibility version for template processing -->
+                <freeMarkerVersion>${freemarker.version}</freeMarkerVersion>
+            </configuration>
+            <executions>
+                <!-- 
+                    If you want to generate files during other phases, just add more execution
+                    tags and specify appropriate phase, sourceDirectory and outputDirectory values.
+                -->
+                <execution>
+                    <id>freemarker-generator</id>
+                    <!-- Optional, defaults to generate-sources -->
+                    <phase>generate-sources</phase>
+                    <goals>
+                        <!-- Required, must be generate -->
+                        <goal>generate</goal>
+                    </goals>
+                    <configuration>
+                        <!-- Optional, defaults to src/main/freemarker/generator -->
+                        <sourceDirectory>src/main/freemarker/generator</sourceDirectory>
+                        <!-- Optional, defaults to src/main/freemarker/generator/templatee -->
+                        <templateDirectory>src/main/freemarker/generator/template</templateDirectory>
+                        <!-- Optional, defaults to src/main/freemarker/generator/generatorr -->
+                        <generatorDirectory>src/main/freemarker/generator/generator</generatorDirectory>
+                        <!-- Optional, defaults to target/generated-sources/freemarker/generator -->
+                        <outputDirectory>target/generated-sources/freemarker/generator</outputDirectory>
+                    </configuration>
+                </execution>
+            </executions>
+        </plugin>
+    </plugins>
+</build>
+```
+
+# Usage
+
+## FreeMarker Template Files
+FreeMarker template files must reside in the `templateDirectory`. For the default configuration,
+this is: `src/main/freemarker/generator/template`.
+
+By convention, file names for FreeMarker template files use the .ftl extension. For details on the FreeMarker
+template syntax, see: [Getting Started](https://freemarker.apache.org/docs/dgui_quickstart.html) and
+[Template Language Reference](https://freemarker.apache.org/docs/ref.html).
+
+## JSON Generator Files
+The JSON generator files must reside in the `generatorDirectory`. For the default
+configuration, this is: `src/main/freemarker/generator/generator`.
+
+For each JSON generator file, freemarker-maven-plugin will generate a file under the outputDirectory.
+The name of the generated file will be based on the name of the JSON data file. For example,
+the following JSON file: 
+```
+    <sourceDirectory>/data/my/package/MyClass.java.json
+```
+will result in the following file being generated:
+```
+    <outputDirectory>/my/package/MyClass.java
+```
+
+This plugin parses the JSON generator file's `dataModel` field into a `Map<String, Object>` instance (hereafter, referred
+to as the data model). If the dataModel field is empty, an empty map will be created.
+
+Here are some additional details you need to know.
+
+  - This plugin *requires* one top-level field in the JSON data file: `templateName`. This field is used to locate the template file under `<sourceDirectory>/template` that is used to generate the file. This plugin provides the data model to FreeMarker as the data model to process the template identified by `templateName`.
+  - The parser allows for comments.
+  - This plugin currently assumes that the JSON data file encoded using UTF-8.
+
+Here is an example JSON data file:
+```json
+{
+  // An end-of-line comment.
+  # Another end-of-line comment
+  "templateName": "my-template.ftl", #Required
+  "dataModel": { #Optional
+      /* A multi-line
+         comment */
+      "myString": "a string",
+      "myNumber": 1,
+      "myListOfStrings": ["s1", "s2"],
+      "myListOfNumbers": [1, 2],
+      "myMap": {
+        "key1": "value1",
+        "key2": 2
+      }
+  }
+}
+```
+
+## Using POM Properties During Generation
+After parsing the JSON file, the plugin will add
+a `pomProperties` entry into the data model, which is a map itself, that contains the properties defined in the pom. Thus, your template can reference the pom property `my_property` using `${pomProperties.my_property}`. If you have a period or dash in the property name, use `${pomProperties["my.property"]}`.
+
+## FreeMarker Configuration
+
+Typically, users of this plugin do not need to mess with the FreeMarker configuration. This plugin explicitly sets two FreeMarker configurations:
+
+ 1. the default encoding is set to UTF-8
+ 2. the template loader is set to be a FileTemplateLoader that reads from `templateDirectory`.
+ 
+If you need to override these configs or set your own, you can put them in a 
+`<sourceDirectory>/freemarker.properties` file. If that file exists, this plugin will read it into a java Properties instance and pass it to freemarker.core.Configurable.setSettings() to establish the FreeMarker configuration. See this [javadoc](https://freemarker.apache.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-) for configuration details.
+
+
+## Incremental Builds
+This plugin supports incremental builds; it only generates sources if the generator file, template file, or pom file have timestamps newer than any existing output file.  To force a rebuild if these conditions are not met (for example, if you pass in a model parameter on the command line), first run `mvn clean`.
+
+# Code Coverage
+
+By default, the code coverage report is not generated. It is generated by screwdriver jobs. You can generate code coverage on your dev machine with the following maven command:
+```bash
+mvn clean initialize -Dclover-phase=initialize 
+``` 
+Bring up the coverage report by pointing your browser to target/site/clover/dashboard.html under the root directory of the local repository.
diff --git a/freemarker-generator-maven-plugin/pom.xml b/freemarker-generator-maven-plugin/pom.xml
new file mode 100644
index 0000000..2d19093
--- /dev/null
+++ b/freemarker-generator-maven-plugin/pom.xml
@@ -0,0 +1,195 @@
+<?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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.freemarker.generator</groupId>
+        <artifactId>freemarker-generator</artifactId>
+        <version>0.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>freemarker-generator-maven-plugin</artifactId>
+    <packaging>maven-plugin</packaging>
+
+    <name>Apache FreeMarker Generator: Maven Plugin</name>
+    <description>Maven plugin for Apache FreeMarker</description>
+
+    <properties>
+        <maven-core.version>3.5.2</maven-core.version>
+        <maven-plugin-api.version>3.5.2</maven-plugin-api.version>
+        <maven-plugin-annotations.version>3.5</maven-plugin-annotations.version>
+        <fastutil.version>8.1.0</fastutil.version>
+        <gson.version>2.8.6</gson.version>
+        <jmockit.version>1.32</jmockit.version>
+        <org.testng.version>6.8</org.testng.version>
+        <assertj-core.version>3.8.0</assertj-core.version>
+        <clover-target-percentage>100</clover-target-percentage>
+        <clover-phase>pre-site</clover-phase>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>${maven-core.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+            <version>${maven-plugin-api.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <version>${maven-plugin-annotations.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-artifact</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.sisu</groupId>
+            <artifactId>org.eclipse.sisu.plexus</artifactId>
+            <version>0.3.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jmockit</groupId>
+            <artifactId>jmockit</artifactId>
+            <version>${jmockit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${gson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.testng</groupId>
+            <artifactId>testng</artifactId>
+            <version>${org.testng.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>${assertj-core.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-site-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-plugin-plugin</artifactId>
+                <configuration>
+                    <goalPrefix>freemarker-generator</goalPrefix>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>default-descriptor</id>
+                        <goals>
+                            <goal>descriptor</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.openclover</groupId>
+                <artifactId>clover-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>clover</id>
+                        <phase>${clover-phase}</phase>
+                        <goals>
+                            <goal>instrument-test</goal>
+                            <goal>clover</goal>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <targetPercentage>${clover-target-percentage}</targetPercentage>
+                            <generateHtml>true</generateHtml>
+                            <generateXml>true</generateXml>
+                            <jdk>${maven.compiler.source}</jdk>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>*.md</exclude>
+                        <excludde>**/*.json</excludde>
+                        <excludde>src/test/data/generating-file-visitor/data/mydir/bad-extension-test.txt</excludde>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/src/main/java/org/apache/freemarker/generator/FactoryUtil.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FactoryUtil.java
similarity index 67%
rename from src/main/java/org/apache/freemarker/generator/FactoryUtil.java
rename to freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FactoryUtil.java
index 359dd3f..a255d3f 100644
--- a/src/main/java/org/apache/freemarker/generator/FactoryUtil.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FactoryUtil.java
@@ -17,34 +17,34 @@
  * under the License.
  */
 
-package org.apache.freemarker.generator;
+package org.apache.freemarker.generator.maven;
+
+import freemarker.template.Configuration;
+import freemarker.template.Version;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 
-import freemarker.template.Configuration;
-import freemarker.template.Version;
-
 /**
  * Simple utility class to call various constructors.
  * Needed because some jmockit features don't work well with constructors.
  */
 public class FactoryUtil {
 
-  public static Configuration createConfiguration(String freeMarkerVersion) {
-    return new Configuration(new Version(freeMarkerVersion));
-  }
+    public static Configuration createConfiguration(String freeMarkerVersion) {
+        return new Configuration(new Version(freeMarkerVersion));
+    }
 
-  public static File createFile(File parent, String child) {
-    return new File(parent, child);
-  }
+    public static File createFile(File parent, String child) {
+        return new File(parent, child);
+    }
 
-  public static FileInputStream createFileInputStream(File file) throws FileNotFoundException {
-    return new FileInputStream(file);
-  }
-  
-  public static File createFile(String name) {
-    return new File(name);
-  }
+    public static FileInputStream createFileInputStream(File file) throws FileNotFoundException {
+        return new FileInputStream(file);
+    }
+
+    public static File createFile(String name) {
+        return new File(name);
+    }
 }
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java
new file mode 100644
index 0000000..4add19b
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.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.freemarker.generator.maven;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.template.Configuration;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.io.File;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
+public class FreeMarkerMojo extends AbstractMojo {
+
+    /** FreeMarker version string used to build FreeMarker Configuration instance. */
+    @Parameter
+    private String freeMarkerVersion;
+
+    @Parameter(defaultValue = "src/main/freemarker/generator")
+    private File sourceDirectory;
+
+    @Parameter(defaultValue = "src/main/freemarker/generator/template")
+    private File templateDirectory;
+
+    @Parameter(defaultValue = "src/main/freemarker/generator/generator")
+    private File generatorDirectory;
+
+    @Parameter(defaultValue = "target/generated-sources/freemarker/generator")
+    private File outputDirectory;
+
+    @Parameter(defaultValue = "${session}", readonly = true)
+    private MavenSession session;
+
+    @Parameter(defaultValue = "${mojoExecution}", readonly = true)
+    private MojoExecution mojo;
+
+    @Override
+    public void execute() throws MojoExecutionException, MojoFailureException {
+
+        if (freeMarkerVersion == null || freeMarkerVersion.isEmpty()) {
+            throw new MojoExecutionException("freeMarkerVersion is required");
+        }
+
+        if (!generatorDirectory.isDirectory()) {
+            throw new MojoExecutionException("Required directory does not exist: " + generatorDirectory);
+        }
+
+        final Configuration config = FactoryUtil.createConfiguration(freeMarkerVersion);
+
+        config.setDefaultEncoding("UTF-8");
+
+        if (!templateDirectory.isDirectory()) {
+            throw new MojoExecutionException("Required directory does not exist: " + templateDirectory);
+        }
+        try {
+            config.setTemplateLoader(new FileTemplateLoader(templateDirectory));
+        } catch (Throwable t) {
+            getLog().error("Could not establish file template loader for directory: " + templateDirectory, t);
+            throw new MojoExecutionException("Could not establish file template loader for directory: " + templateDirectory);
+        }
+
+        final File freeMarkerProps = FactoryUtil.createFile(sourceDirectory, "freemarker.properties");
+        if (freeMarkerProps.isFile()) {
+            final Properties configProperties = new Properties();
+            try (InputStream is = FactoryUtil.createFileInputStream(freeMarkerProps)) {
+                configProperties.load(is);
+            } catch (Throwable t) {
+                getLog().error("Failed to load " + freeMarkerProps, t);
+                throw new MojoExecutionException("Failed to load " + freeMarkerProps);
+            }
+            try {
+                config.setSettings(configProperties);
+            } catch (Throwable t) {
+                getLog().error("Invalid setting(s) in " + freeMarkerProps, t);
+                throw new MojoExecutionException("Invalid setting(s) in " + freeMarkerProps);
+            }
+        }
+
+        if ("generate-sources".equals(mojo.getLifecyclePhase())) {
+            session.getCurrentProject().addCompileSourceRoot(outputDirectory.toString());
+        } else if ("generate-test-sources".equals(mojo.getLifecyclePhase())) {
+            session.getCurrentProject().addTestCompileSourceRoot(outputDirectory.toString());
+        }
+
+        final Map<String, OutputGeneratorPropertiesProvider> extensionToBuilders = new HashMap<>(1);
+        extensionToBuilders.put(".json", JsonPropertiesProvider.create(generatorDirectory, templateDirectory, outputDirectory));
+
+        final GeneratingFileVisitor fileVisitor = GeneratingFileVisitor.create(config, session, extensionToBuilders);
+        try {
+            Files.walkFileTree(generatorDirectory.toPath(), fileVisitor);
+        } catch (Throwable t) {
+            getLog().error("Failed to process files in generator dir: " + generatorDirectory, t);
+            throw new MojoExecutionException("Failed to process files in generator dir: " + generatorDirectory);
+        }
+    }
+}
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
new file mode 100644
index 0000000..4ca3ce2
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.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.freemarker.generator.maven;
+
+import freemarker.template.Configuration;
+import org.apache.maven.execution.MavenSession;
+
+import java.nio.file.FileVisitResult;
+import java.nio.file.Path;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Map;
+
+/**
+ * FileVisitor designed to process json data files. The json file parsed into
+ * a map and given to FreeMarker to
+ */
+public class GeneratingFileVisitor extends SimpleFileVisitor<Path> {
+
+    private final Configuration config;
+    private final MavenSession session;
+    private final long pomLastModifiedTimestamp;
+    private final Map<String, OutputGeneratorPropertiesProvider> extensionToBuilder;
+
+    private GeneratingFileVisitor(Configuration config, MavenSession session, Map<String, OutputGeneratorPropertiesProvider> extensionToBuilder) {
+        this.config = config;
+        this.session = session;
+        this.extensionToBuilder = extensionToBuilder;
+        this.pomLastModifiedTimestamp = session.getAllProjects().stream()
+                .map(project -> project.getFile().lastModified())
+                .reduce(Long::max)
+                .orElse(0L);
+    }
+
+    /**
+     * Factory method that calls constructor, added to facilitate testing with jmockit.
+     */
+    public static GeneratingFileVisitor create(Configuration config, MavenSession session, Map<String, OutputGeneratorPropertiesProvider> extensionToBuilder) {
+        return new GeneratingFileVisitor(config, session, extensionToBuilder);
+    }
+
+    @Override
+    public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) {
+        if (attrs.isRegularFile()) {
+            final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder()
+                    .addGeneratorLocation(path)
+                    .addPomLastModifiedTimestamp(pomLastModifiedTimestamp);
+            final String fileName = path.getFileName().toString();
+            final String extenstion = fileName.substring(fileName.lastIndexOf('.'));
+            final OutputGeneratorPropertiesProvider pathProcessor = extensionToBuilder.get(extenstion);
+            if (pathProcessor == null) {
+                throw new RuntimeException("Unknown file extension: " + path);
+            }
+            pathProcessor.providePropertiesFromFile(path, builder);
+            builder.addToDataModel("session", session);
+            builder.addToDataModel("pomProperties", session.getCurrentProject().getProperties());
+            builder.create().generate(config);
+        }
+        return FileVisitResult.CONTINUE;
+    }
+}
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
new file mode 100644
index 0000000..f2e2cc4
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/JsonPropertiesProvider.java
@@ -0,0 +1,94 @@
+/*
+ * 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.freemarker.generator.maven;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Type;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Map;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+public class JsonPropertiesProvider implements OutputGeneratorPropertiesProvider {
+    private final Gson gson;
+    private final Type stringObjectMap;
+    private final File dataDir;
+    private final File templateDir;
+    private final File outputDir;
+
+    private JsonPropertiesProvider(File dataDir, File templateDir, File outputDir) {
+        this.dataDir = dataDir;
+        this.templateDir = templateDir;
+        this.outputDir = outputDir;
+        this.gson = new GsonBuilder().setLenient().create();
+        this.stringObjectMap = new TypeToken<Map<String, Object>>() {}.getType();
+    }
+
+    public static JsonPropertiesProvider create(File dataDir, File templateDir, File outputDir) {
+        return new JsonPropertiesProvider(dataDir, templateDir, outputDir);
+    }
+
+    @Override
+    public void providePropertiesFromFile(Path path, OutputGenerator.OutputGeneratorBuilder builder) {
+        final File jsonDataFile = path.toFile();
+        final Map<String, Object> data = parseJson(jsonDataFile);
+
+        Object obj = data.get("dataModel");
+        if (obj != null) {
+            builder.addDataModel((Map<String, Object>) obj);
+        } else {
+            builder.addDataModel(new HashMap<>());
+        }
+
+        obj = data.get("templateName");
+        if (obj == null) {
+            throw new RuntimeException("Require json data property not found: templateName");
+        }
+        builder.addTemplateLocation(templateDir.toPath().resolve(obj.toString()));
+
+        final String dataDirName = dataDir.getAbsolutePath();
+        final String jsonFileName = jsonDataFile.getAbsolutePath();
+        if (!jsonFileName.startsWith(dataDirName)) {
+            throw new IllegalStateException("visitFile() given file not in sourceDirectory: " + jsonDataFile);
+        }
+
+        String outputFileName = jsonFileName.substring(dataDirName.length() + 1);
+        outputFileName = outputFileName.substring(0, outputFileName.length() - 5);
+        final Path outputPath = outputDir.toPath();
+        final Path resolved = outputPath.resolve(outputFileName);
+        builder.addOutputLocation(resolved);
+    }
+
+    private Map<String, Object> parseJson(File jsonDataFile) {
+        try (JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(jsonDataFile), UTF_8))) {
+            return gson.fromJson(reader, stringObjectMap);
+        } catch (Throwable t) {
+            throw new RuntimeException("Could not parse json data file: " + jsonDataFile, t);
+        }
+    }
+}
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java
new file mode 100644
index 0000000..2ac3b4f
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGenerator.java
@@ -0,0 +1,179 @@
+/*
+ * 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.freemarker.generator.maven;
+
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Knows how to generate an output file given five things:
+ * <ul>
+ * <li>The latest update time of the <b>pom file(s)</b> for the project</li>
+ * <li>The location of the <b>generator file</b></li>
+ * <li>The location of the <b>template file</b></li>
+ * <li>The location of the <b>output file</b></li>
+ * <li>A <b>data model<b> used to fill out the template.</li>
+ * </ul>
+ * <p>Given these five pieces of information, the generator will generate a new output file, but only if any existing
+ * generated file is not newer than the inputs (pom, generator, and template).</p>
+ */
+class OutputGenerator {
+    public final long pomModifiedTimestamp;
+    public final Path generatorLocation;
+    public final Path templateLocation;
+    public final Path outputLocation;
+    public final Map<String, Object> dataModel;
+
+    private OutputGenerator(
+            long pomModifiedTimestamp,
+            Path generatorLocation,
+            Path templateLocation,
+            Path outputLocation,
+            Map<String, Object> dataModel) {
+        this.pomModifiedTimestamp = pomModifiedTimestamp;
+        this.generatorLocation = generatorLocation;
+        this.templateLocation = templateLocation;
+        this.outputLocation = outputLocation;
+        this.dataModel = dataModel;
+    }
+
+    /**
+     * Uses a fluent builder to make the code more legible in place.
+     * Also allows the output generator to be built from multiple locations in source by passing the builder.
+     *
+     * @return A new fluent builder for the OutputGenerator class.
+     */
+    public static OutputGeneratorBuilder builder() {
+        return new OutputGeneratorBuilder();
+    }
+
+    public static class OutputGeneratorBuilder {
+        private long pomModifiedTimestamp = Long.MAX_VALUE;
+        private Path generatorLocation = null;
+        private Path templateLocation = null;
+        private Path outputLocation = null;
+        private Map<String, Object> dataModel = null;
+
+        public OutputGeneratorBuilder addPomLastModifiedTimestamp(long pomModifiedTimestamp) {
+            this.pomModifiedTimestamp = pomModifiedTimestamp;
+            return this;
+        }
+
+        public OutputGeneratorBuilder addGeneratorLocation(Path generatorLocation) {
+            this.generatorLocation = generatorLocation;
+            return this;
+        }
+
+        public OutputGeneratorBuilder addTemplateLocation(Path templateLocation) {
+            this.templateLocation = templateLocation;
+            return this;
+        }
+
+        public OutputGeneratorBuilder addOutputLocation(Path outputLocation) {
+            this.outputLocation = outputLocation;
+            return this;
+        }
+
+        public OutputGeneratorBuilder addDataModel(Map<String, Object> dataModel) {
+            this.dataModel = dataModel;
+            return this;
+        }
+
+        public OutputGeneratorBuilder addToDataModel(String key, Object val) {
+            if (this.dataModel == null) {
+                this.dataModel = new HashMap<>(4);
+            }
+            this.dataModel.put(key, val);
+            return this;
+        }
+
+        /**
+         * @return A new output generator (which is immutable).
+         * @throws IllegalStateException if any of the parts of the OutputGenerator were not set.
+         */
+        public OutputGenerator create() {
+            if (pomModifiedTimestamp == Long.MAX_VALUE) {
+                throw new IllegalStateException("Must set the pomModifiedTimestamp");
+            }
+            if (generatorLocation == null) {
+                throw new IllegalStateException("Must set a non-null generatorLocation");
+            }
+            if (templateLocation == null) {
+                throw new IllegalStateException("Must set a non-null templateLocation");
+            }
+            if (outputLocation == null) {
+                throw new IllegalStateException("Must set a non-null outputLocation");
+            }
+            if (dataModel == null) {
+                throw new IllegalStateException("Must set a non-null dataModel");
+            }
+            return new OutputGenerator(pomModifiedTimestamp, generatorLocation, templateLocation, outputLocation, dataModel);
+        }
+    }
+
+    /**
+     * <p>Generates an output by applying the model to the template.</p>
+     * <p>Checks the ages of the inputs against an existing output file to early exit if there is no update.</p>
+     *
+     * @param config Used to load the template from the template name.
+     */
+    public void generate(Configuration config) {
+        //Use "createFile" for testing purposes only
+        final File outputFile = FactoryUtil.createFile(outputLocation.toFile().toString());
+        final File templateFile = templateLocation.toFile();
+        final File generatorFile = generatorLocation.toFile();
+        if (outputFile.exists()) {
+            //early exit only if the output file is newer than all files that contribute to its generation
+            if (outputFile.lastModified() > generatorFile.lastModified()
+                    && outputFile.lastModified() > templateFile.lastModified()
+                    && outputFile.lastModified() > pomModifiedTimestamp) {
+                return;
+            }
+        } else {
+            final File parentDir = outputFile.getParentFile();
+            if (parentDir.isFile()) {
+                throw new RuntimeException("Parent directory of output file is a file: " + parentDir.getAbsoluteFile());
+            }
+            parentDir.mkdirs();
+            if (!parentDir.isDirectory()) {
+                throw new RuntimeException("Could not create directory: " + parentDir.getAbsoluteFile());
+            }
+        }
+
+        final Template template;
+        try {
+            template = config.getTemplate(templateFile.getName());
+        } catch (Throwable t) {
+            throw new RuntimeException("Could not read template: " + templateFile.getName(), t);
+        }
+
+        try (FileWriter writer = new FileWriter(outputFile)) {
+            template.process(dataModel, writer);
+        } catch (Throwable t) {
+            throw new RuntimeException("Could not process template associated with data file: " + generatorLocation, t);
+        }
+    }
+}
diff --git a/src/main/java/org/apache/freemarker/generator/OutputGeneratorPropertiesProvider.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGeneratorPropertiesProvider.java
similarity index 61%
rename from src/main/java/org/apache/freemarker/generator/OutputGeneratorPropertiesProvider.java
rename to freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGeneratorPropertiesProvider.java
index 019373b..25b929b 100644
--- a/src/main/java/org/apache/freemarker/generator/OutputGeneratorPropertiesProvider.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/OutputGeneratorPropertiesProvider.java
@@ -17,16 +17,17 @@
  * under the License.
  */
 
-package org.apache.freemarker.generator;
+package org.apache.freemarker.generator.maven;
 
 import java.nio.file.Path;
 
 public interface OutputGeneratorPropertiesProvider {
-	/**
-	 * Must add three properties to the builder: the <b>templateLocation</b>, <b>outputLocation</b>, and <b>dataModel</b>
-	 * The <b>pom updated timestamp</b> and <b>generatorLocation</b> are added elsewhere.
-	 * @param path The path to the generator file, to be used to decide on the three properties above.
-	 * @param builder The builder to which to add the properties.
-	 */
-	public void providePropertiesFromFile(Path path, OutputGenerator.OutputGeneratorBuilder builder);
+    /**
+     * Must add three properties to the builder: the <b>templateLocation</b>, <b>outputLocation</b>, and <b>dataModel</b>
+     * The <b>pom updated timestamp</b> and <b>generatorLocation</b> are added elsewhere.
+     *
+     * @param path    The path to the generator file, to be used to decide on the three properties above.
+     * @param builder The builder to which to add the properties.
+     */
+    void providePropertiesFromFile(Path path, OutputGenerator.OutputGeneratorBuilder builder);
 }
diff --git a/src/test/data/freemarker-mojo/data/test.txt.json b/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/data/test.txt.json
similarity index 100%
rename from src/test/data/freemarker-mojo/data/test.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/data/test.txt.json
diff --git a/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/freemarker.properties b/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/freemarker.properties
new file mode 100644
index 0000000..a7b8bc5
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/freemarker.properties
@@ -0,0 +1,20 @@
+## ---------------------------------------------------------------------------
+## 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 properties file used by FreeMarkerMojoTest to verify FreeMarkerMojo
+# passes these settings to the FreeMarker configuration.
+boolean_format: T,F
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/template/test.ftl b/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/template/test.ftl
new file mode 100644
index 0000000..897ba68
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/data/freemarker-mojo/template/test.ftl
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+This is a dummy test file. It is only here to make sure the directory exists.
\ No newline at end of file
diff --git a/src/test/data/generating-file-visitor/badPath/success-test.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/badPath/success-test.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/badPath/success-test.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/badPath/success-test.txt.json
diff --git a/src/test/data/generating-file-visitor/data/badParent/bad-parent-test.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/badParent/bad-parent-test.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/data/badParent/bad-parent-test.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/badParent/bad-parent-test.txt.json
diff --git a/src/test/data/generating-file-visitor/data/mydir/bad-extension-test.txt b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/bad-extension-test.txt
similarity index 100%
rename from src/test/data/generating-file-visitor/data/mydir/bad-extension-test.txt
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/bad-extension-test.txt
diff --git a/src/test/data/generating-file-visitor/data/mydir/bad-template-name.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/bad-template-name.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/data/mydir/bad-template-name.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/bad-template-name.txt.json
diff --git a/src/test/data/generating-file-visitor/data/mydir/missing-template-name.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/missing-template-name.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/data/mydir/missing-template-name.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/missing-template-name.txt.json
diff --git a/src/test/data/generating-file-visitor/data/mydir/missing-var-test.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/missing-var-test.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/data/mydir/missing-var-test.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/missing-var-test.txt.json
diff --git a/src/test/data/generating-file-visitor/data/mydir/success-test-2.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/success-test-2.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/data/mydir/success-test-2.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/success-test-2.txt.json
diff --git a/src/test/data/generating-file-visitor/data/mydir/success-test.txt.json b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/success-test.txt.json
similarity index 100%
rename from src/test/data/generating-file-visitor/data/mydir/success-test.txt.json
rename to freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/data/mydir/success-test.txt.json
diff --git a/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/template/test-pom-only.ftl b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/template/test-pom-only.ftl
new file mode 100644
index 0000000..d09f6df
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/template/test-pom-only.ftl
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+This is a test freemarker template. Test pom data: '${pomProperties.pomVar}'.
diff --git a/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/template/test.ftl b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/template/test.ftl
new file mode 100644
index 0000000..7f5c69b
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/data/generating-file-visitor/template/test.ftl
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+This is a test freemarker template. Test json data: '${testVar}'. Test pom data: '${pomProperties.pomVar}'.
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java
new file mode 100644
index 0000000..f835c6a
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java
@@ -0,0 +1,358 @@
+/*
+ * 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.freemarker.generator.maven;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.cache.TemplateLoader;
+import freemarker.template.Configuration;
+import mockit.Deencapsulation;
+import mockit.Expectations;
+import mockit.Mocked;
+import mockit.Verifications;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.project.MavenProject;
+import org.junit.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileVisitor;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Comparator;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.assertj.core.api.Assertions.*;
+
+public class FreeMarkerMojoTest extends Assert {
+
+    private static final File TEST_OUTPUT_DIR = new File("target/test-output/freemarker-mojo");
+    private static final String FREEMARKER_VERSION = "2.3.29";
+
+    @BeforeClass
+    public static void beforeClass() throws IOException {
+        // Clean output dir before each run.
+        if (TEST_OUTPUT_DIR.exists()) {
+            // Recursively delete output from previous run.
+            Files.walk(TEST_OUTPUT_DIR.toPath())
+                    .sorted(Comparator.reverseOrder())
+                    .map(Path::toFile)
+                    .forEach(File::delete);
+        }
+    }
+
+    @Test
+    public void executeTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked GeneratingFileVisitor generatingFileVisitor,
+            @Mocked Files files
+    ) throws MojoExecutionException, MojoFailureException, IOException {
+
+        new Expectations(mojoExecution, generatingFileVisitor) {{
+            mojoExecution.getLifecyclePhase();
+            result = "generate-sources";
+            session.getCurrentProject();
+            result = project;
+        }};
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        // Validate freeMarkerVersion is required.
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        }).withMessage("freeMarkerVersion is required");
+
+        Deencapsulation.setField(mojo, "freeMarkerVersion", "");
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        }).withMessage("freeMarkerVersion is required");
+
+        final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "executeTest");
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        // Validate source directory.
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        }).withMessage("Required directory does not exist: target/test-output/freemarker-mojo/executeTest/data");
+
+        new File(testCaseOutputDir, "data").mkdirs();
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        }).withMessage("Required directory does not exist: target/test-output/freemarker-mojo/executeTest/template");
+        new File(testCaseOutputDir, "template").mkdirs();
+
+        // Validate minimum configuration.
+        mojo.execute();
+
+        new Verifications() {{
+            project.addCompileSourceRoot("target/test-output/freemarker-mojo/executeTest/generated-files");
+            times = 1;
+
+            Configuration config;
+            MavenSession capturedSession;
+            Map<String, OutputGeneratorPropertiesProvider> builders;
+
+            GeneratingFileVisitor.create(
+                    config = withCapture(),
+                    capturedSession = withCapture(),
+                    builders = withCapture());
+            times = 1;
+
+            assertEquals("UTF-8", config.getDefaultEncoding());
+            assertEquals(session, capturedSession);
+            TemplateLoader loader = config.getTemplateLoader();
+            assertTrue(loader instanceof FileTemplateLoader);
+
+            Path path;
+            FileVisitor<Path> fileVisitor;
+
+            Files.walkFileTree(path = withCapture(), fileVisitor = withCapture());
+            times = 1;
+
+            assertEquals(new File(testCaseOutputDir, "data").toPath(), path);
+            assertTrue(fileVisitor instanceof GeneratingFileVisitor);
+        }};
+    }
+
+    @Test
+    public void execute_generateTestSourceTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked GeneratingFileVisitor generatingFileVisitor,
+            @Mocked Files files
+    ) throws MojoExecutionException, MojoFailureException, IOException {
+
+        new Expectations(mojoExecution, generatingFileVisitor) {{
+            mojoExecution.getLifecyclePhase();
+            result = "generate-test-sources";
+            session.getCurrentProject();
+            result = project;
+        }};
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest");
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        new File(testCaseOutputDir, "data").mkdirs();
+        new File(testCaseOutputDir, "template").mkdirs();
+
+        mojo.execute();
+
+        new Verifications() {{
+            project.addTestCompileSourceRoot("target/test-output/freemarker-mojo/generateTestSourceTest/generated-files");
+            times = 1;
+        }};
+    }
+
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    @Test
+    public void execute_walkFileTreeExceptionTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked GeneratingFileVisitor generatingFileVisitor,
+            @Mocked Files files
+    ) throws MojoExecutionException, MojoFailureException, IOException {
+
+        new Expectations(mojoExecution, generatingFileVisitor) {{
+            mojoExecution.getLifecyclePhase();
+            result = "generate-test-sources";
+            session.getCurrentProject();
+            result = project;
+            Files.walkFileTree((Path) any, (FileVisitor) any);
+            result = new RuntimeException("test exception");
+        }};
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest");
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        new File(testCaseOutputDir, "data").mkdirs();
+        new File(testCaseOutputDir, "template").mkdirs();
+
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        })
+                .withMessage("Failed to process files in generator dir: target/test-output/freemarker-mojo/generateTestSourceTest/data");
+    }
+
+    @Test
+    public void execute_setTemplateLoaderExceptionTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked FactoryUtil factoryUtil,
+            @Mocked Configuration config) {
+
+        new Expectations(config, FactoryUtil.class) {{
+            FactoryUtil.createConfiguration(FREEMARKER_VERSION);
+            result = config;
+            config.setTemplateLoader((TemplateLoader) any);
+            result = new RuntimeException("test exception");
+        }};
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "setTemplateLoaderException");
+
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        new File(testCaseOutputDir, "data").mkdirs();
+        new File(testCaseOutputDir, "template").mkdirs();
+
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        })
+                .withMessage("Could not establish file template loader for directory: target/test-output/freemarker-mojo/setTemplateLoaderException/template");
+    }
+
+    @Test
+    public void execute_loadFreemarkerPropertiesTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked Configuration config) throws Exception {
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        File sourceDirectory = new File("src/test/data/freemarker-mojo");
+        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties");
+
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(sourceDirectory, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(sourceDirectory, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        mojo.execute();
+
+        new Verifications() {{
+            Properties properties;
+
+            config.setSettings(properties = withCapture());
+            times = 1;
+
+            assertEquals("T,F", properties.getProperty("boolean_format"));
+        }};
+    }
+
+    @Test
+    public void execute_loadFreemarkerPropertiesExceptionTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked FactoryUtil factoryUtil,
+            @Mocked Configuration config) throws Exception {
+
+        new Expectations(FactoryUtil.class) {{
+            FactoryUtil.createFileInputStream((File) any);
+            result = new RuntimeException("test exception");
+        }};
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        File sourceDirectory = new File("src/test/data/freemarker-mojo");
+        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerPropertiesExceptionTest");
+
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(sourceDirectory, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(sourceDirectory, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        System.out.println("==== before mojo execute");
+        try {
+            assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+                mojo.execute();
+            }).withMessage("Failed to load src/test/data/freemarker-mojo/freemarker.properties");
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    @Test
+    public void execute_setSettingsExceptionTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked MojoExecution mojoExecution,
+            @Mocked Configuration config) throws Exception {
+
+        new Expectations() {{
+            config.setSettings((Properties) any);
+            result = new RuntimeException("test exception");
+        }};
+
+        FreeMarkerMojo mojo = new FreeMarkerMojo();
+
+        File sourceDirectory = new File("src/test/data/freemarker-mojo");
+        File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties");
+
+        Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
+        Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
+        Deencapsulation.setField(mojo, "templateDirectory", new File(sourceDirectory, "template"));
+        Deencapsulation.setField(mojo, "generatorDirectory", new File(sourceDirectory, "data"));
+        Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
+        Deencapsulation.setField(mojo, "mojo", mojoExecution);
+        Deencapsulation.setField(mojo, "session", session);
+
+        assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
+            mojo.execute();
+        }).withMessage("Invalid setting(s) in src/test/data/freemarker-mojo/freemarker.properties");
+    }
+
+}
diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java
new file mode 100644
index 0000000..d2c9803
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java
@@ -0,0 +1,206 @@
+/*
+ * 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.freemarker.generator.maven;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.template.Configuration;
+import mockit.Expectations;
+import mockit.Mocked;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.project.MavenProject;
+import org.junit.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.assertj.core.api.Assertions.*;
+
+public class GeneratingFileVisitorTest extends Assert {
+
+    private static File testDir = new File("src/test/data/generating-file-visitor");
+    private static File dataDir = new File(testDir, "data");
+    private static File templateDir = new File(testDir, "template");
+    private static File outputDir = new File("target/test-output/generating-file-visitor");
+    private static Map<String, OutputGeneratorPropertiesProvider> builders = new HashMap<>();
+    private Configuration config;
+    private Properties pomProperties = new Properties();
+
+    @BeforeClass
+    public static void beforeClass() throws IOException {
+        builders.put(".json", JsonPropertiesProvider.create(dataDir, templateDir, outputDir));
+        // Clean output dir before each run.
+        File outputDir = new File("target/test-output/generating-file-visitor");
+        if (outputDir.exists()) {
+            // Recursively delete output from previous run.
+            Files.walk(outputDir.toPath())
+                    .sorted(Comparator.reverseOrder())
+                    .map(Path::toFile)
+                    .forEach(File::delete);
+        }
+    }
+
+    @BeforeMethod
+    public void before() throws IOException {
+        if (!testDir.isDirectory()) {
+            throw new RuntimeException("Can't find required test data directory. "
+                    + "If running test outside of maven, make sure working directory is the project directory. "
+                    + "Looking for: " + testDir);
+        }
+
+        config = new Configuration(Configuration.VERSION_2_3_23);
+        config.setDefaultEncoding("UTF-8");
+        config.setTemplateLoader(new FileTemplateLoader(templateDir));
+        pomProperties.put("pomVar", "pom value");
+    }
+
+    @Test
+    public void functionalHappyPathTestNoDataModel(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked File mockFile,
+            @Mocked BasicFileAttributes attrs) throws IOException {
+        List<MavenProject> projects = new ArrayList<>();
+        projects.add(project);
+        new Expectations(session, project, mockFile) {{
+            session.getCurrentProject();
+            result = project;
+            session.getAllProjects();
+            result = projects;
+            project.getProperties();
+            result = pomProperties;
+            attrs.isRegularFile();
+            result = true;
+            project.getFile();
+            result = mockFile;
+            mockFile.lastModified();
+            result = 10;
+        }};
+
+        File file = new File(dataDir, "mydir/success-test-2.txt.json");
+        GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
+        assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), attrs));
+
+        File outputFile = new File(outputDir, "mydir/success-test-2.txt");
+        assertTrue(outputFile.isFile());
+        List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8);
+        assertEquals(17, lines.size());
+        assertEquals("This is a test freemarker template. Test pom data: 'pom value'.", lines.get(16));
+    }
+
+    @Test
+    public void functionalHappyPathTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked File mockFile,
+            @Mocked BasicFileAttributes attrs) throws IOException {
+        List<MavenProject> projects = new ArrayList<>();
+        projects.add(project);
+        new Expectations(session, project, mockFile) {{
+            session.getCurrentProject();
+            result = project;
+            session.getAllProjects();
+            result = projects;
+            project.getProperties();
+            result = pomProperties;
+            attrs.isRegularFile();
+            result = true;
+            project.getFile();
+            result = mockFile;
+            mockFile.lastModified();
+            result = 10;
+        }};
+
+        File file = new File(dataDir, "mydir/success-test.txt.json");
+        GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
+        assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), attrs));
+
+        File outputFile = new File(outputDir, "mydir/success-test.txt");
+        assertTrue(outputFile.isFile());
+        List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8);
+        assertEquals(17, lines.size());
+        assertEquals("This is a test freemarker template. Test json data: 'test value'. Test pom data: 'pom value'.", lines
+                .get(16));
+    }
+
+    @Test
+    public void visitFile_badExtensionTest(
+            @Mocked MavenSession session,
+            @Mocked MavenProject project,
+            @Mocked File mockFile,
+            @Mocked BasicFileAttributes attrs) throws IOException {
+        List<MavenProject> projects = new ArrayList<>();
+        projects.add(project);
+        new Expectations(session, project, mockFile) {{
+            attrs.isRegularFile();
+            result = true;
+            session.getAllProjects();
+            result = projects;
+            project.getFile();
+            result = mockFile;
+            mockFile.lastModified();
+            result = 10;
+        }};
+        // Test file without .json suffix.
+        File file = new File(dataDir, "mydir/bad-extension-test.txt");
+        GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
+        assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
+            gfv.visitFile(file.toPath(), attrs);
+        }).withMessage("Unknown file extension: " + file.toPath());
+    }
+
+    @Test
+    public void visitFile_notRegularFileTest(@Mocked MavenSession session,
+                                             @Mocked MavenProject project,
+                                             @Mocked BasicFileAttributes attrs,
+                                             @Mocked File mockFile
+    ) {
+        List<MavenProject> projects = new ArrayList<>();
+        projects.add(project);
+        new Expectations(session, project, mockFile) {{
+            attrs.isRegularFile();
+            result = false;
+            session.getAllProjects();
+            result = projects;
+            project.getFile();
+            result = mockFile;
+            mockFile.lastModified();
+            result = 10;
+        }};
+        // FYI: if you change above result to true, test will fail trying to read the 'mydir' directory
+        // as a json file.
+        File dir = new File(dataDir, "mydir");
+        GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
+        assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(dir.toPath(), attrs));
+    }
+}
diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.java
new file mode 100644
index 0000000..88d8fc6
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.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.freemarker.generator.maven;
+
+import com.google.gson.Gson;
+import com.google.gson.stream.JsonReader;
+import mockit.Expectations;
+import mockit.Mocked;
+import mockit.Verifications;
+import org.testng.annotations.Test;
+
+import java.io.File;
+import java.lang.reflect.Type;
+import java.nio.file.Path;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.assertj.core.api.AssertionsForClassTypes.*;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
+
+public class JsonPropertiesProviderTest {
+    private File testDir = new File("src/test/data/generating-file-visitor");
+    private File dataDir = new File(testDir, "data");
+    private File templateDir = new File(testDir, "template");
+    private File outputDir = new File("target/test-output/generating-file-visitor");
+
+    @Test
+    public void testSuccess(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
+        Path path = dataDir.toPath().resolve("mydir/success-test.txt.json");
+        Path expectedTemplateLocation = templateDir.toPath().resolve("test.ftl");
+        Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test.txt");
+        Map<String, Object> expectedMap = new HashMap<>(4);
+        expectedMap.put("testVar", "test value");
+        JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
+        toTest.providePropertiesFromFile(path, builder);
+        new Verifications() {{
+            Path templateLocation;
+            builder.addTemplateLocation(templateLocation = withCapture());
+            Path outputLocation;
+            builder.addOutputLocation(outputLocation = withCapture());
+            Map<String, Object> actualMap;
+            builder.addDataModel(actualMap = withCapture());
+
+            assertEquals(expectedTemplateLocation, templateLocation);
+            assertEquals(expectedOutputLocation, outputLocation);
+            assertArrayEquals(expectedMap.entrySet().toArray(), actualMap.entrySet().toArray());
+        }};
+    }
+
+    @Test
+    public void testSuccessNoDataModel(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
+        Path path = dataDir.toPath().resolve("mydir/success-test-2.txt.json");
+        Path expectedTemplateLocation = templateDir.toPath().resolve("test-pom-only.ftl");
+        Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test-2.txt");
+        Map<String, Object> expectedMap = new HashMap<>(4);
+        JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
+        toTest.providePropertiesFromFile(path, builder);
+        new Verifications() {{
+            Path templateLocation;
+            builder.addTemplateLocation(templateLocation = withCapture());
+            Path outputLocation;
+            builder.addOutputLocation(outputLocation = withCapture());
+            Map<String, Object> actualMap;
+            builder.addDataModel(actualMap = withCapture());
+
+            assertEquals(expectedTemplateLocation, templateLocation);
+            assertEquals(expectedOutputLocation, outputLocation);
+            assertArrayEquals(expectedMap.entrySet().toArray(), actualMap.entrySet().toArray());
+        }};
+    }
+
+    @Test
+    public void testParsingException(@Mocked OutputGenerator.OutputGeneratorBuilder builder, @Mocked Gson gson) {
+        Path path = dataDir.toPath().resolve("mydir/success-test.txt.json");
+        new Expectations() {{
+            gson.fromJson((JsonReader) any, (Type) any);
+            result = new RuntimeException("test exception");
+        }};
+        JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
+
+        assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
+            toTest.providePropertiesFromFile(path, builder);
+        })
+                .withMessage("Could not parse json data file: src/test/data/generating-file-visitor/data/mydir/success-test.txt.json");
+    }
+
+    @Test
+    public void testMissingTemplateName(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
+        Path path = dataDir.toPath().resolve("mydir/missing-template-name.txt.json");
+        JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
+
+        assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
+            toTest.providePropertiesFromFile(path, builder);
+        }).withMessage("Require json data property not found: templateName");
+    }
+
+    @Test
+    public void testBadPath(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
+        Path path = testDir.toPath().resolve("badPath/success-test.txt.json");
+        JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            toTest.providePropertiesFromFile(path, builder);
+        })
+                .withMessage("visitFile() given file not in sourceDirectory: src/test/data/generating-file-visitor/badPath/success-test.txt.json");
+    }
+}
diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java
new file mode 100644
index 0000000..a88592f
--- /dev/null
+++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java
@@ -0,0 +1,305 @@
+/*
+ * 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.freemarker.generator.maven;
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.template.Configuration;
+import mockit.Expectations;
+import mockit.Mocked;
+import org.assertj.core.api.*;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static junit.framework.Assert.assertEquals;
+import static org.assertj.core.api.AssertionsForClassTypes.*;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertTrue;
+
+public class OutputGeneratorTest {
+
+    private File testDir = new File("src/test/data/generating-file-visitor");
+    private File dataDir = new File(testDir, "data");
+    private File templateDir = new File(testDir, "template");
+    private File outputDir = new File("target/test-output/generating-file-visitor");
+    private Configuration config;
+    private Map<String, Object> dataModel = new HashMap<String, Object>();
+
+    @BeforeMethod
+    public void setupDataModel() {
+        dataModel.clear();
+        dataModel.put("testVar", "test value");
+        dataModel.put("pomProperties", new HashMap<String, String>());
+        ((Map<String, String>) dataModel.get("pomProperties")).put("pomVar", "pom value");
+    }
+
+    @BeforeClass
+    public static void cleanFields() throws IOException {
+        // Clean output dir before each run.
+        File outputDir = new File("target/test-output/generating-file-visitor");
+        if (outputDir.exists()) {
+            // Recursively delete output from previous run.
+            Files.walk(outputDir.toPath())
+                    .sorted(Comparator.reverseOrder())
+                    .map(Path::toFile)
+                    .forEach(File::delete);
+        }
+    }
+
+    @BeforeMethod
+    public void before() throws IOException {
+        if (!testDir.isDirectory()) {
+            throw new RuntimeException("Can't find required test data directory. "
+                    + "If running test outside of maven, make sure working directory is the project directory. "
+                    + "Looking for: " + testDir);
+        }
+
+        config = new Configuration(Configuration.VERSION_2_3_23);
+        config.setDefaultEncoding("UTF-8");
+        config.setTemplateLoader(new FileTemplateLoader(templateDir));
+    }
+
+    @Test
+    public void createTest() {
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set the pomModifiedTimestamp");
+
+        builder.addPomLastModifiedTimestamp(0);
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null generatorLocation");
+
+        File file = new File(dataDir, "mydir/success-test.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null templateLocation");
+
+        File templateFile = new File(templateDir, "test.ftl");
+        builder.addTemplateLocation(templateFile.toPath());
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null outputLocation");
+
+        File outputFile = new File(outputDir, "mydir/success-test.txt");
+        builder.addOutputLocation(outputFile.toPath());
+
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null dataModel");
+
+        builder.addDataModel(dataModel);
+        OutputGenerator generator = builder.create();
+
+        assertEquals(0, generator.pomModifiedTimestamp);
+        assertEquals(file.toPath(), generator.generatorLocation);
+        assertEquals(templateFile.toPath(), generator.templateLocation);
+        assertEquals(outputFile.toPath(), generator.outputLocation);
+        assertEquals(dataModel.size(), generator.dataModel.size());
+        assertArrayEquals(dataModel.entrySet().toArray(), generator.dataModel.entrySet().toArray());
+    }
+
+    @Test
+    public void addToDataModelTest() {
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set the pomModifiedTimestamp");
+
+        builder.addPomLastModifiedTimestamp(0);
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null generatorLocation");
+
+        File file = new File(dataDir, "mydir/success-test.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null templateLocation");
+
+        File templateFile = new File(templateDir, "test.ftl");
+        builder.addTemplateLocation(templateFile.toPath());
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null outputLocation");
+
+        File outputFile = new File(outputDir, "mydir/success-test.txt");
+        builder.addOutputLocation(outputFile.toPath());
+
+        assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
+            builder.create();
+        }).withMessage("Must set a non-null dataModel");
+
+        builder.addToDataModel("testVar", "testVal");
+        OutputGenerator generator = builder.create();
+
+        assertEquals(1, generator.dataModel.size());
+        assertEquals("testVal", generator.dataModel.get("testVar"));
+
+        builder.addDataModel(dataModel);
+        builder.addToDataModel("testVar2", "testVal2");
+
+        generator = builder.create();
+
+        assertEquals(3, generator.dataModel.size());
+        assertEquals("test value", generator.dataModel.get("testVar"));
+        assertEquals("testVal2", generator.dataModel.get("testVar2"));
+    }
+
+    @Test
+    public void generate_SuccessTest()
+            throws IOException {
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        builder.addPomLastModifiedTimestamp(0);
+        File file = new File(dataDir, "mydir/success-test.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        File outputFile = new File(outputDir, "mydir/success-test.txt");
+        builder.addOutputLocation(outputFile.toPath());
+        File templateFile = new File(templateDir, "test.ftl");
+        builder.addTemplateLocation(templateFile.toPath());
+        builder.addDataModel(dataModel);
+        OutputGenerator generator = builder.create();
+        generator.generate(config);
+
+        assertTrue(outputFile.isFile());
+        List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8);
+        assertEquals(17, lines.size());
+        assertEquals("This is a test freemarker template. Test json data: 'test value'. Test pom data: 'pom value'.", lines
+                .get(16));
+
+        // Process same file again, should not regenerate file.
+        long lastMod = outputFile.lastModified();
+        generator.generate(config);
+        assertEquals(lastMod, outputFile.lastModified());
+
+        // Set mod time to before json file.
+        lastMod = file.lastModified() - 1000; // File system may only keep 1 second precision.
+        outputFile.setLastModified(lastMod);
+        generator.generate(config);
+        assertTrue(lastMod < outputFile.lastModified());
+
+        // Set mod time to before template file.
+        lastMod = templateFile.lastModified() - 1000; // File system may only keep 1 second precision.
+        outputFile.setLastModified(lastMod);
+        generator.generate(config);
+        assertTrue(lastMod < outputFile.lastModified());
+    }
+
+    @Test
+    public void generate_badTemplateNameTest() {
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        builder.addPomLastModifiedTimestamp(0);
+        File file = new File(dataDir, "mydir/bad-template-name.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        File outputFile = new File(outputDir, "mydir/bad-template-name.txt");
+        builder.addOutputLocation(outputFile.toPath());
+        File templateFile = new File(templateDir, "missing.ftl"); //this doesn't exist
+        builder.addTemplateLocation(templateFile.toPath());
+        builder.addDataModel(dataModel);
+        OutputGenerator generator = builder.create();
+        Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
+            generator.generate(config);
+        }).withMessage("Could not read template: missing.ftl");
+    }
+
+    @Test
+    public void generate_missingVarTest() {
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        builder.addPomLastModifiedTimestamp(0);
+        File file = new File(dataDir, "mydir/missing-var-test.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        File outputFile = new File(outputDir, "mydir/missing-var-test.txt");
+        builder.addOutputLocation(outputFile.toPath());
+        File templateFile = new File(templateDir, "test.ftl"); //this is missing a
+        builder.addTemplateLocation(templateFile.toPath());
+        dataModel.remove("testVar");
+        builder.addDataModel(dataModel);
+        OutputGenerator generator = builder.create();
+        Assertions.assertThatExceptionOfType(RuntimeException.class)
+                .isThrownBy(() -> {
+                    generator.generate(config);
+                })
+                .withMessage("Could not process template associated with data file: src/test/data/generating-file-visitor/data/mydir/missing-var-test.txt.json");
+    }
+
+    @Test
+    public void generate_badParentTest() throws IOException {
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        builder.addPomLastModifiedTimestamp(0);
+        File file = new File(dataDir, "badParent/bad-parent-test.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        File outputFile = new File(outputDir, "badParent/bad-parent-test.txt");
+        builder.addOutputLocation(outputFile.toPath());
+        File templateFile = new File(templateDir, "test.ftl"); //this is missing a
+        builder.addTemplateLocation(templateFile.toPath());
+        builder.addDataModel(dataModel);
+        OutputGenerator generator = builder.create();
+        outputDir.mkdirs();
+        outputFile.getParentFile().createNewFile();
+
+        Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
+            generator.generate(config);
+        }).withMessage("Parent directory of output file is a file: " + outputFile.getParentFile().getAbsolutePath());
+    }
+
+    @Test
+    public void generate_cantCreateOutputFileParentDirTest(
+            @Mocked FactoryUtil factoryUtil,
+            @Mocked File mockOutputFile) throws IOException {
+
+        File parentDir = new File("target/test-output/generating-file-visitor/mydir");
+        new Expectations(mockOutputFile, parentDir) {{
+            FactoryUtil.createFile(anyString);
+            result = mockOutputFile;
+            mockOutputFile.exists();
+            result = false;
+            mockOutputFile.getParentFile();
+            result = parentDir;
+            parentDir.isDirectory();
+            result = false;
+        }};
+
+        OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
+        builder.addPomLastModifiedTimestamp(0);
+        File file = new File(dataDir, "mydir/missing-var-test.txt.json");
+        builder.addGeneratorLocation(file.toPath());
+        File outputFile = new File(outputDir, "mydir/missing-var-test.txt");
+        builder.addOutputLocation(outputFile.toPath());
+        File templateFile = new File(templateDir, "test.ftl"); //this is missing a
+        builder.addTemplateLocation(templateFile.toPath());
+        builder.addDataModel(dataModel);
+        OutputGenerator generator = builder.create();
+        Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
+            generator.generate(config);
+        }).withMessage("Could not create directory: " + parentDir.getAbsoluteFile().toString());
+    }
+}
diff --git a/freemarker-generator-tools/LICENSE b/freemarker-generator-tools/LICENSE
new file mode 100644
index 0000000..1121eba
--- /dev/null
+++ b/freemarker-generator-tools/LICENSE
@@ -0,0 +1,223 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+=========================================================================
+
+The source code contains the following binaries,
+which were created at the Apache FreeMarker project, and hence are
+covered by the same license as the other source files of it:
+
+  src/main/misc/overloadedNumberRules/prices.ods
+  src/manual/en_US/docgen-originals/figures/overview.odg
+  src/manual/en_US/docgen-originals/figures/model2sketch_with_alpha.png
+  src/manual/en_US/docgen-originals/figures/tree_with_alpha.png
+  src/manual/en_US/favicon.png
+  src/manual/en_US/figures/model2sketch.png
+  src/manual/en_US/figures/overview.png
+  src/manual/en_US/figures/tree.png
+  src/manual/en_US/logo.png
+  src/manual/zh_CN/favicon.png
+  src/manual/zh_CN/figures/model2sketch.png
+  src/manual/zh_CN/figures/overview.png
+  src/manual/zh_CN/figures/tree.png
+  src/manual/zh_CN/logo.png
diff --git a/freemarker-generator-tools/NOTICE b/freemarker-generator-tools/NOTICE
new file mode 100644
index 0000000..c27f50e
--- /dev/null
+++ b/freemarker-generator-tools/NOTICE
@@ -0,0 +1,5 @@
+Apache FreeMarker Site
+Copyright 2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/freemarker-generator-tools/README.md b/freemarker-generator-tools/README.md
new file mode 100644
index 0000000..12d1c61
--- /dev/null
+++ b/freemarker-generator-tools/README.md
@@ -0,0 +1,35 @@
+Apache FreeMarker Generator Tools
+=============================================================================
+
+A "tool" is just a POJO (plain old java object) that is "useful" in a template and is not meant to be rendered in the output. 
+
+Design Considerations
+------------------------------------------------------------------------------
+
+* A tool shall expose a default constructor and/or a constructor taking a `Map<String, Object> settings`
+* A tool processing documents shall provide a `parse(Document document)` method
+* A tool shall be stateless, multi-thread safe and potentially long-lived to enable usage in a different context
+* A tool shall support arbitrary large source documents and process them efficiently
+* A tool shall expose a `toString()` method for documentation purposes
+
+Available Tools
+------------------------------------------------------------------------------
+
+The following tools are currently provided
+
+| Helper                | Description                                                                                               |
+|-----------------------|-----------------------------------------------------------------------------------------------------------|
+| CSVTool               | Process CSV files using [Apache Commons CSV](https://commons.apache.org/proper/commons-csv/)              |
+| ExecTool              | Execute command line tools using [Apache Commons Exec](https://commons.apache.org/proper/commons-exec/)   |
+| ExcelTool             | Process Excels files (XLS, XLSX) using [Apache POI](https://poi.apache.org)                               |
+| FreeMarkerTool        | Expose useful Apache FreeMarker classes                                                                   |
+| GrokTool              | Process text files using [Grok](https://github.com/thekrakken/java-grok) expressions                      |
+| JsonPathTool          | Process JSON files using [Java JSON Path](https://github.com/json-path/JsonPath)                          |
+| JsoupTool             | Process  HTML files using [Jsoup](https://jsoup.org)                                                      |
+| PropertiesTool        | Process JDK properties files                                                                              |
+| SystemTool            | Expose System-related utility methods                                                                     |
+| XmlTool               | Process XML files using [Apache FreeMarker](https://freemarker.apache.org/docs/xgui.html)                 |
+| YamlTool              | Process YAML files using [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/wiki/Home)                    |
+| UUIDTool              | Create UUIDs                                                                                              |
+
+
diff --git a/freemarker-generator-tools/pom.xml b/freemarker-generator-tools/pom.xml
new file mode 100644
index 0000000..32fa5b7
--- /dev/null
+++ b/freemarker-generator-tools/pom.xml
@@ -0,0 +1,132 @@
+<?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>
+
+    <parent>
+        <groupId>org.apache.freemarker.generator</groupId>
+        <artifactId>freemarker-generator</artifactId>
+        <version>0.1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>freemarker-generator-tools</artifactId>
+    <name>Apache FreeMarker Generator: Tools</name>
+    <description>Document processing tools for Apache FreeMarker Generator</description>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <apache.poi.version>4.1.1</apache.poi.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.freemarker.generator</groupId>
+            <artifactId>freemarker-generator-base</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.krakens</groupId>
+            <artifactId>java-grok</artifactId>
+            <version>0.1.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path</artifactId>
+            <version>2.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>info.picocli</groupId>
+            <artifactId>picocli</artifactId>
+            <version>4.1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+            <version>1.12.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.yaml</groupId>
+            <artifactId>snakeyaml</artifactId>
+            <version>1.25</version>
+        </dependency>
+        <!-- Apache libraries -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-exec</artifactId>
+            <version>1.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-csv</artifactId>
+            <version>1.8</version>
+        </dependency>
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+        </dependency>
+        <!-- Apache POI -->
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>${apache.poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>${apache.poi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml-schemas</artifactId>
+            <version>${apache.poi.version}</version>
+        </dependency>
+        <!-- Testing -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>*.md</exclude>
+                        <exclude>**/*.csv</exclude>
+                        <exclude>src/main/resources/patterns/*</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
new file mode 100644
index 0000000..da7779a
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVTool.java
@@ -0,0 +1,278 @@
+/*
+ * 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.freemarker.generator.tools.commonscsv;
+
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVPrinter;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.commons.io.input.BOMInputStream;
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.util.StringUtils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.util.Objects.requireNonNull;
+import static java.util.stream.Collectors.toList;
+import static org.apache.commons.io.IOUtils.toInputStream;
+
+public class CommonsCSVTool {
+
+    public CSVParser parse(Document document) {
+        return parse(document, CSVFormat.DEFAULT);
+    }
+
+    public CSVParser parse(Document document, CSVFormat format) {
+        if (document == null) {
+            throw new IllegalArgumentException("No document was provided");
+        }
+
+        try {
+            // As stated in the documentation : "If you do not read all records from the given {@code reader},
+            // you should call {@link #close()} on the parser, unless you close the {@code reader}."
+            // The underlying input stream is closed by the document by its "CloseableReaper".
+            final InputStream is = new BOMInputStream(document.getInputStream(), false);
+            return parse(is, document.getCharset(), format);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to parse CSV: " + document, e);
+        }
+    }
+
+    public CSVParser parse(String csv, CSVFormat format) {
+        if (StringUtils.isEmpty(csv)) {
+            throw new IllegalArgumentException("No CSV was provided");
+        }
+
+        try {
+            // We don't need to close the underyling ByteArrayInputStream
+            return parse(toInputStream(csv, UTF_8), UTF_8, format);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to parse CSV", e);
+        }
+    }
+
+    public Map<String, CSVFormat> getFormats() {
+        return createCSVFormats();
+    }
+
+    /**
+     * Get a CSVPrinter using the FreeMarker's writer instance.
+     *
+     * @param csvFormat CSV format to use for writing records
+     * @param writer    Writer to receive the CSV output
+     * @return CSVPrinter instance
+     * @throws IOException thrown if the parameters of the format are inconsistent or if either out or format are null.
+     */
+    public CSVPrinter printer(CSVFormat csvFormat, Writer writer) throws IOException {
+        // We do not close the CSVPrinter but the underlying writer at the of processing
+        return new CSVPrinter(writer, csvFormat);
+    }
+
+    /**
+     * Extract the list of unique values (keys) of the column "name".
+     *
+     * @param records records to process
+     * @param name    column name to process
+     * @return unique keys
+     */
+    public List<String> toKeys(Collection<CSVRecord> records, String name) {
+        return toKeys(records, new ValueResolver(name));
+    }
+
+    /**
+     * Extract the list of unique values (keys) of the column with the given index..
+     *
+     * @param records records to process
+     * @param index   column index to map
+     * @return unique keys
+     */
+    public List<String> toKeys(Collection<CSVRecord> records, Integer index) {
+        return toKeys(records, new ValueResolver(index));
+    }
+
+    /**
+     * Map the given value of the CVS record into (key to record). If duplicates
+     * are encountered return the first occurence of the CVS record. The map
+     * retains the insertion order of they keys.
+     *
+     * @param records records to process
+     * @param name    column name to map
+     * @return map of records
+     */
+    public Map<String, CSVRecord> toMap(Collection<CSVRecord> records, String name) {
+        return toMap(records, new ValueResolver(name));
+    }
+
+    /**
+     * Map the given value of the CVS record into (key to record). If duplicates
+     * are encountered return the first occurence of the CVS record. The map
+     * retains the insertion order of they keys.
+     *
+     * @param records records to process
+     * @param index   column index to map
+     * @return map of records
+     */
+    public Map<String, CSVRecord> toMap(Collection<CSVRecord> records, Integer index) {
+        return toMap(records, new ValueResolver(index));
+    }
+
+    /**
+     * Map the given value of the CVS record into a list of records.
+     *
+     * @param records records to process
+     * @param name    column name to map
+     * @return map of records
+     */
+    public Map<String, List<CSVRecord>> toMultiMap(Collection<CSVRecord> records, String name) {
+        return toMultiMap(records, new ValueResolver(name));
+    }
+
+    /**
+     * Map the given value of the CVS record into a list of records.
+     *
+     * @param records records to process
+     * @param index   column index to map
+     * @return map of records
+     */
+    public Map<String, List<CSVRecord>> toMultiMap(Collection<CSVRecord> records, Integer index) {
+        return toMultiMap(records, new ValueResolver(index));
+    }
+
+    /**
+     * Maps the sybmolic name of a delimiter to a single character since it
+     * is not possible to define commony used delimiters on the command line.
+     *
+     * @param name symbolic name of delimiter
+     * @return CSV delimiter
+     */
+    public char toDelimiter(String name) {
+        if (name == null || name.isEmpty()) {
+            throw new IllegalArgumentException("Now CSV delimiter provided");
+        }
+
+        switch (name.toUpperCase().trim()) {
+            case "COMMA":
+                return ',';
+            case "HASH":
+                return '#';
+            case "PIPE":
+                return '|';
+            case "RS":
+                return 30;
+            case "SEMICOLON":
+                return ';';
+            case "SPACE":
+                return ' ';
+            case "TAB":
+                return '\t';
+            default:
+                if (name.length() == 1) {
+                    return name.charAt(0);
+                } else {
+                    throw new IllegalArgumentException("Unsupported CSV delimiter: " + name);
+                }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "Process CSV files using Apache Commons CSV (see https://commons.apache.org/proper/commons-csv/)";
+    }
+
+    private static CSVParser parse(InputStream is, Charset charset, CSVFormat format) throws IOException {
+        if (is == null) {
+            throw new IllegalArgumentException("No input stream was provided");
+        }
+
+        return CSVParser.parse(is, charset, format);
+    }
+
+    private static List<String> toKeys(Collection<CSVRecord> csvRecords, Function<CSVRecord, String> value) {
+        return csvRecords.stream()
+                .map(value)
+                .distinct()
+                .collect(toList());
+    }
+
+    private static Map<String, CSVRecord> toMap(Collection<CSVRecord> records, Function<CSVRecord, String> value) {
+        return records.stream()
+                .collect(Collectors.toMap(
+                        value,
+                        record -> record,
+                        (firstKey, currentKey) -> firstKey,
+                        LinkedHashMap::new
+                ));
+    }
+
+    private static Map<String, List<CSVRecord>> toMultiMap(Collection<CSVRecord> records, Function<CSVRecord, String> value) {
+        final Map<String, List<CSVRecord>> result = new LinkedHashMap<>();
+        final List<String> keys = toKeys(records, value);
+        keys.forEach(key -> result.put(key, new ArrayList<>()));
+        records.forEach(record -> result.get(value.apply(record)).add(record));
+        return result;
+    }
+
+    private static Map<String, CSVFormat> createCSVFormats() {
+        final Map<String, CSVFormat> result = new HashMap<>();
+        result.put("DEFAULT", CSVFormat.DEFAULT);
+        result.put("EXCEL", CSVFormat.EXCEL);
+        result.put("INFORMIX_UNLOAD", CSVFormat.INFORMIX_UNLOAD);
+        result.put("INFORMIX_UNLOAD_CSV", CSVFormat.INFORMIX_UNLOAD_CSV);
+        result.put("MONGODB_CSV", CSVFormat.MONGODB_CSV);
+        result.put("MONGODB_TSV", CSVFormat.MONGODB_TSV);
+        result.put("MYSQL", CSVFormat.MYSQL);
+        result.put("RFC4180", CSVFormat.RFC4180);
+        result.put("ORACLE", CSVFormat.ORACLE);
+        result.put("POSTGRESQL_CSV", CSVFormat.POSTGRESQL_CSV);
+        result.put("POSTGRESQL_TEXT", CSVFormat.POSTGRESQL_TEXT);
+        result.put("TDF", CSVFormat.TDF);
+        return result;
+    }
+
+    private static final class ValueResolver implements Function<CSVRecord, String> {
+
+        private final Integer index;
+        private final String name;
+
+        ValueResolver(Integer index) {
+            this.index = requireNonNull(index);
+            this.name = null;
+        }
+
+        ValueResolver(String name) {
+            this.index = null;
+            this.name = requireNonNull(name);
+        }
+
+        @Override
+        public String apply(CSVRecord record) {
+            return index != null ? record.get(index) : record.get(name);
+        }
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonsexec/CommonsExecTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonsexec/CommonsExecTool.java
new file mode 100644
index 0000000..d0e4f2e
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/commonsexec/CommonsExecTool.java
@@ -0,0 +1,59 @@
+/*
+ * 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.freemarker.generator.tools.commonsexec;
+
+import org.apache.commons.exec.CommandLine;
+import org.apache.commons.exec.DefaultExecutor;
+import org.apache.commons.exec.Executor;
+import org.apache.commons.exec.PumpStreamHandler;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.List;
+
+public class CommonsExecTool {
+
+    public String execute(String line) {
+        return execute(CommandLine.parse(line));
+    }
+
+    public String execute(String executable, List<String> args) {
+        return execute(commandLine(executable, args));
+    }
+
+    @Override
+    public String toString() {
+        return "Execute command line tools using Apache Commons Exec (see https://commons.apache.org/proper/commons-exec/)";
+    }
+
+    private String execute(CommandLine commandLine) {
+        try (ByteArrayOutputStream boas = new ByteArrayOutputStream()) {
+            final Executor executor = new DefaultExecutor();
+            executor.setStreamHandler(new PumpStreamHandler(boas));
+            executor.execute(commandLine);
+            return boas.toString();
+        } catch (IOException e) {
+            throw new RuntimeException("Executing command failed: " + commandLine, e);
+        }
+    }
+
+    private static CommandLine commandLine(String executable, List<String> args) {
+        final CommandLine cmdLine = new CommandLine(executable);
+        cmdLine.addArguments(args.toArray(new String[0]));
+        return cmdLine;
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java
new file mode 100644
index 0000000..43fa5ea
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/excel/ExcelTool.java
@@ -0,0 +1,184 @@
+/*
+ * 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.freemarker.generator.tools.excel;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import static org.apache.poi.ss.usermodel.Row.MissingCellPolicy.CREATE_NULL_AS_BLANK;
+
+/**
+ * Parse Excel documents (XLS &amp; XLSX) using Apache POI.
+ */
+public class ExcelTool {
+
+    private static final boolean EMULATE_CSV = true;
+    private static final SimpleDateFormat TIME_DATE_FORMAT = new SimpleDateFormat("HH:mm:ss");
+    private static final SimpleDateFormat YEAR_TIME_FORMAT = new SimpleDateFormat("yyyy");
+
+    public Workbook parse(Document document) {
+        try (InputStream is = document.getUnsafeInputStream()) {
+            final Workbook workbook = WorkbookFactory.create(is);
+            // make sure that the workbook is closed together with the document
+            return document.addClosable(workbook);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to parse Ecxel document: " + document, e);
+        }
+    }
+
+    /**
+     * Get all sheets of a workbook.
+     *
+     * @param workbook The workbook
+     * @return Sheets of the workbook
+     */
+    public List<Sheet> getSheets(Workbook workbook) {
+        final List<Sheet> result = new ArrayList<>();
+        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
+            result.add(workbook.getSheetAt(i));
+        }
+        return result;
+    }
+
+    /**
+     * Transform the Excel sheet into a table. Please not that locales are mostly
+     * ignored by Apache POI (see https://poi.apache.org/apidocs/dev/org/apache/poi/ss/usermodel/DataFormatter.html)
+     *
+     * @param sheet Excel sheet
+     * @return Table containing formatted cell values as strings
+     */
+    public List<List<String>> toTable(Sheet sheet) {
+        final DataFormatter dataFormatter = dataFormatter();
+        final Iterator<Row> iterator = sheet.iterator();
+        final List<List<String>> result = new ArrayList<>();
+
+        while (iterator.hasNext()) {
+            final Row row = iterator.next();
+            result.add(toColumns(row, dataFormatter));
+        }
+
+        return result;
+    }
+
+    /**
+     * EXPERIMENTAL FEATURE
+     * <p>
+     * Transform the sheet to table contaning raw Java objects, e.g. Date, Double, ...
+     *
+     * @param sheet Excel sheet
+     * @return Table containing cells as raw Java objects
+     */
+    public List<List<Object>> toRawTable(Sheet sheet) {
+        final DataFormatter dataFormatter = dataFormatter();
+        final Iterator<Row> iterator = sheet.iterator();
+        final List<List<Object>> result = new ArrayList<>();
+
+        while (iterator.hasNext()) {
+            final Row row = iterator.next();
+            result.add(toRawColumns(row, dataFormatter));
+        }
+
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return "Process Excels files (XLS, XLSX) using Apache POI (see https://poi.apache.org)";
+    }
+
+    private static List<String> toColumns(Row row, DataFormatter dataFormatter) {
+        final List<String> columnValues = new ArrayList<>();
+        for (int columnIndex = 0; columnIndex < row.getLastCellNum(); columnIndex++) {
+            final Cell cell = row.getCell(columnIndex, CREATE_NULL_AS_BLANK);
+            final String formatedCellValue = dataFormatter.formatCellValue(cell).trim();
+            columnValues.add(formatedCellValue);
+        }
+        return columnValues;
+    }
+
+    private static List<Object> toRawColumns(Row row, DataFormatter dataFormatter) {
+        final List<Object> columnValues = new ArrayList<>();
+        for (int columnIndex = 0; columnIndex < row.getLastCellNum(); columnIndex++) {
+            final Cell cell = row.getCell(columnIndex, CREATE_NULL_AS_BLANK);
+            final Object cellValue = toCellValue(cell, dataFormatter);
+            columnValues.add(cellValue);
+        }
+        return columnValues;
+    }
+
+    private static Object toCellValue(Cell cell, DataFormatter formatter) {
+        final CellType cellType = cell.getCellType();
+        switch (cellType) {
+            case BOOLEAN:
+                return cell.getBooleanCellValue();
+            case NUMERIC:
+                return DateUtil.isCellDateFormatted(cell) ? toDateCellValue(cell) : cell.getNumericCellValue();
+            default:
+                return formatter.formatCellValue(cell);
+        }
+    }
+
+    /**
+     * Try desperately to make sense out of Excel and its handling of dates.
+     * See https://stackoverflow.com/questions/15710888/reading-time-values-from-spreadsheet-using-poi-api.
+     *
+     * @param cell Cell containing some sort of date or time
+     * @return The corresponding Java istance
+     */
+    private static synchronized Object toDateCellValue(Cell cell) {
+        final Date date = cell.getDateCellValue();
+
+        // "Time-only" values have date set to 31-Dec-1899 so if year is "1899"
+        // you can assume it is a "time-only" value
+        final String year = YEAR_TIME_FORMAT.format(date);
+
+        if (year.equals("1899")) {
+            // handle "Time-only" value
+            return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalTime();
+        } else {
+            // here you may have a date-only or date-time value
+            final String timeStamp = TIME_DATE_FORMAT.format(date);
+            if (timeStamp.equals("00:00:00")) {
+                // if time is 00:00:00 you can assume it is a date only value (but it could be midnight)
+                return new java.sql.Date(date.getTime()).toLocalDate();
+            } else {
+                return date;
+            }
+        }
+    }
+
+    private static DataFormatter dataFormatter() {
+        return new DataFormatter(EMULATE_CSV);
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java
new file mode 100644
index 0000000..1150ccb
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerTool.java
@@ -0,0 +1,58 @@
+/*
+ * 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.freemarker.generator.tools.freemarker;
+
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.ext.beans.BeansWrapperBuilder;
+import freemarker.template.Configuration;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.utility.ObjectConstructor;
+
+public class FreeMarkerTool {
+
+    private BeansWrapper beansWrapper;
+    private ObjectConstructor objectConstructor;
+
+    public synchronized ObjectConstructor getObjectConstructor() {
+        if (objectConstructor == null) {
+            objectConstructor = new ObjectConstructor();
+        }
+        return objectConstructor;
+    }
+
+    public synchronized BeansWrapper getBeansWrapper() {
+        if (beansWrapper == null) {
+            beansWrapper = new BeansWrapperBuilder(Configuration.VERSION_2_3_29).build();
+        }
+        return beansWrapper;
+    }
+
+    public TemplateHashModel getEnums() {
+        return getBeansWrapper().getEnumModels();
+    }
+
+    public TemplateHashModel getStatics() {
+        return getBeansWrapper().getStaticModels();
+    }
+
+    @Override
+    public String toString() {
+        return "Expose useful Apache FreeMarker classes";
+    }
+}
+
+
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/grok/GrokTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/grok/GrokTool.java
new file mode 100644
index 0000000..984d22c
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/grok/GrokTool.java
@@ -0,0 +1,41 @@
+/*
+ * 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.freemarker.generator.tools.grok;
+
+import io.krakens.grok.api.Grok;
+import io.krakens.grok.api.GrokCompiler;
+
+public class GrokTool {
+
+    private static final String DEFAULT_PATTERN = "/patterns/patterns";
+
+    public GrokWrapper compile(String pattern) {
+        return compile(DEFAULT_PATTERN, pattern);
+    }
+
+    public GrokWrapper compile(String path, String pattern) {
+        final GrokCompiler grokCompiler = GrokCompiler.newInstance();
+        grokCompiler.registerPatternFromClasspath(path);
+        final Grok grok = grokCompiler.compile(pattern);
+        return new GrokWrapper(grok);
+    }
+
+    @Override
+    public String toString() {
+        return "Process text files using Grok expressions (see https://github.com/thekrakken/java-grok)";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/grok/GrokWrapper.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/grok/GrokWrapper.java
new file mode 100644
index 0000000..7a6931e
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/grok/GrokWrapper.java
@@ -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.
+ */
+package org.apache.freemarker.generator.tools.grok;
+
+import io.krakens.grok.api.Grok;
+import org.apache.freemarker.generator.base.util.StringUtils;
+
+import java.util.Collections;
+import java.util.Map;
+
+import static java.util.Objects.requireNonNull;
+
+public class GrokWrapper {
+
+    private final Grok grok;
+
+    public GrokWrapper(Grok grok) {
+        this.grok = requireNonNull(grok);
+    }
+
+    public Map<String, Object> match(String line) {
+        if (StringUtils.isEmpty(line)) {
+            return Collections.emptyMap();
+        }
+
+        return grok.match(line).capture();
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java
new file mode 100644
index 0000000..3e31ffc
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathTool.java
@@ -0,0 +1,50 @@
+/*
+ * 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.freemarker.generator.tools.jsonpath;
+
+import com.jayway.jsonpath.Configuration;
+import com.jayway.jsonpath.DocumentContext;
+import com.jayway.jsonpath.JsonPath;
+import com.jayway.jsonpath.Option;
+import org.apache.freemarker.generator.base.document.Document;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class JsonPathTool {
+
+    public DocumentContext parse(Document document) throws IOException {
+        try (InputStream is = document.getUnsafeInputStream()) {
+            return JsonPath.using(configuration()).parse(is);
+        }
+    }
+
+    public DocumentContext parse(String json) {
+        return JsonPath.using(configuration()).parse(json);
+    }
+
+    @Override
+    public String toString() {
+        return "Process JSON files using Java JSON Path (see https://github.com/json-path/JsonPath)";
+    }
+
+    private Configuration configuration() {
+        return Configuration.builder()
+                .options(Option.SUPPRESS_EXCEPTIONS)
+                .build();
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsoup/JsoupTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsoup/JsoupTool.java
new file mode 100644
index 0000000..62d0944
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/jsoup/JsoupTool.java
@@ -0,0 +1,43 @@
+/*
+ * 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.freemarker.generator.tools.jsoup;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.jsoup.Jsoup;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public class JsoupTool {
+
+    public org.jsoup.nodes.Document parse(Document document) {
+        try (InputStream is = document.getUnsafeInputStream()) {
+            return Jsoup.parse(is, document.getCharset().name(), "");
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to parse HTML document: " + document, e);
+        }
+    }
+
+    public org.jsoup.nodes.Document parse(String html) {
+        return Jsoup.parse(html);
+    }
+
+    @Override
+    public String toString() {
+        return "Process  HTML files using Jsoup (see https://jsoup.org)";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java
new file mode 100644
index 0000000..96acb0d
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/properties/PropertiesTool.java
@@ -0,0 +1,44 @@
+/*
+ * 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.freemarker.generator.tools.properties;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.util.PropertiesFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+public class PropertiesTool {
+
+    public Properties parse(Document document) {
+        try (InputStream is = document.getUnsafeInputStream()) {
+            return PropertiesFactory.create(is);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to parse properties: " + document, e);
+        }
+    }
+
+    public Properties parse(String value) {
+        return PropertiesFactory.create(value);
+    }
+
+    @Override
+    public String toString() {
+        return "Process JDK properties files";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java
new file mode 100644
index 0000000..96bc938
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlTool.java
@@ -0,0 +1,44 @@
+/*
+ * 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.freemarker.generator.tools.snakeyaml;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.yaml.snakeyaml.Yaml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+public class SnakeYamlTool {
+
+    public Map<String, Object> parse(Document document) {
+        try (InputStream is = document.getUnsafeInputStream()) {
+            return new Yaml().load(is);
+        } catch (IOException e) {
+            throw new RuntimeException("Failed to load YAML document: " + document, e);
+        }
+    }
+
+    public Map<String, Object> parse(String value) {
+        return new Yaml().load(value);
+    }
+
+    @Override
+    public String toString() {
+        return "Process YAML files using SnakeYAML(see https://bitbucket.org/asomov/snakeyaml/wiki/Home)";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
new file mode 100644
index 0000000..2b50c99
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
@@ -0,0 +1,144 @@
+/*
+ * 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.freemarker.generator.tools.system;
+
+import java.io.File;
+import java.io.Writer;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static java.util.Collections.emptyList;
+import static java.util.Collections.emptyMap;
+import static java.util.Objects.requireNonNull;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model.FREEMARKER_CLI_ARGS;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model.FREEMARKER_TEMPLATE_DIRECTORIES;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model.FREEMARKER_USER_PARAMETERS;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model.FREEMARKER_USER_SYSTEM_PROPERTIES;
+import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model.FREEMARKER_WRITER;
+
+/**
+ * Provides system related functionality, e.g. accessing environment variable,
+ * system properties, commandl-line arguments, hostname, FreeMarker writer, etc.
+ */
+@SuppressWarnings("unchecked")
+public class SystemTool {
+
+    /** Command line arguments */
+    private final List<String> commandLineArgs;
+
+    /** User-supplied parameters */
+    private final Map<String, String> parameters;
+
+    /** List of FreeMarker's template directories */
+    private final List<File> templateDirectories;
+
+    /** User-supplied system properties */
+    private final Properties userSystemProperties;
+
+    /** Underlying FreeMarker writer for rendering templates */
+    private final Writer writer;
+
+    public SystemTool() {
+        this.commandLineArgs = emptyList();
+        this.templateDirectories = emptyList();
+        this.parameters = emptyMap();
+        this.userSystemProperties = new Properties();
+        this.writer = null;
+    }
+
+    public SystemTool(Map<String, Object> settings) {
+        requireNonNull(settings);
+        this.commandLineArgs = (List<String>) settings.getOrDefault(FREEMARKER_CLI_ARGS, emptyList());
+        this.parameters = (Map<String, String>) settings.getOrDefault(FREEMARKER_USER_PARAMETERS, emptyMap());
+        this.templateDirectories = (List<File>) settings.getOrDefault(FREEMARKER_TEMPLATE_DIRECTORIES, emptyList());
+        this.userSystemProperties = (Properties) settings.getOrDefault(FREEMARKER_USER_SYSTEM_PROPERTIES, new Properties());
+        this.writer = (Writer) settings.getOrDefault(FREEMARKER_WRITER, null);
+    }
+
+    public List<String> getCommandLineArgs() {
+        return commandLineArgs;
+    }
+
+    public List<File> getTemplateDirectories() {
+        return templateDirectories;
+    }
+
+    public String getSystemProperty(String key) {
+        return System.getProperty(key);
+    }
+
+    public String getSystemProperty(String key, String def) {
+        return System.getProperty(key, def);
+    }
+
+    public Properties getSystemProperties() {
+        return System.getProperties();
+    }
+
+    public String getParameter(String key) {
+        return parameters.get(key);
+    }
+
+    public String getParameter(String key, String def) {
+        return parameters.getOrDefault(key, def);
+    }
+
+    public Map<String, String> getParameters() {
+        return parameters;
+    }
+
+    public Properties getUserSystemProperties() {
+        return userSystemProperties;
+    }
+
+    public Map<String, String> getEnvs() {
+        return System.getenv();
+    }
+
+    public String getEnv(String name) {
+        return System.getenv(name);
+    }
+
+    public String getEnv(String name, String def) {
+        final String env = this.getEnv(name);
+        return env != null ? env : def;
+    }
+
+    public String getHostName() {
+        try {
+            return InetAddress.getLocalHost().getHostName();
+        } catch (UnknownHostException ignored) {
+            return "localhost";
+        }
+    }
+
+    public Writer getWriter() {
+        return writer;
+    }
+
+    public long getCurrentTimeMillis() {
+        return System.currentTimeMillis();
+    }
+
+    @Override
+    public String toString() {
+        return "Expose System-related utility methods";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/uuid/UUIDTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/uuid/UUIDTool.java
new file mode 100644
index 0000000..34eab30
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/uuid/UUIDTool.java
@@ -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.
+ */
+package org.apache.freemarker.generator.tools.uuid;
+
+import java.util.UUID;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+public class UUIDTool {
+
+    public UUID randomUUID() {
+        return UUID.randomUUID();
+    }
+
+    public UUID namedUUID(String name) {
+        return UUID.nameUUIDFromBytes(name.getBytes(UTF_8));
+    }
+
+    @Override
+    public String toString() {
+        return "Create UUIDs";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.java
new file mode 100644
index 0000000..5977ae7
--- /dev/null
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/xml/XmlTool.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.freemarker.generator.tools.xml;
+
+import freemarker.ext.dom.NodeModel;
+import org.apache.freemarker.generator.base.document.Document;
+import org.xml.sax.InputSource;
+
+import java.io.InputStream;
+import java.io.StringReader;
+
+public class XmlTool {
+
+    public NodeModel parse(Document document) {
+        try (InputStream is = document.getUnsafeInputStream()) {
+            return NodeModel.parse(new InputSource(is));
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to parse XML document: " + document, e);
+        }
+    }
+
+    public NodeModel parse(String value) {
+        try (StringReader reader = new StringReader(value)) {
+            return NodeModel.parse(new InputSource(reader));
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to parse XML document: " + value, e);
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "Process XML files using Apache FreeMarker (see https://freemarker.apache.org/docs/xgui.html)";
+    }
+}
diff --git a/freemarker-generator-tools/src/main/resources/patterns/firewalls b/freemarker-generator-tools/src/main/resources/patterns/firewalls
new file mode 100755
index 0000000..8f16bea
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/firewalls
@@ -0,0 +1,3 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+# NetScreen firewall logs
+NETSCREENSESSIONLOG %{SYSLOGTIMESTAMP:date} %{IPORHOST:device} %{IPORHOST}: NetScreen device_id=%{WORD:device_id}%{DATA}: start_time=%{QUOTEDSTRING:start_time} duration=%{INT:duration} policy_id=%{INT:policy_id} service=%{DATA:service} proto=%{INT:proto} src zone=%{WORD:src_zone} dst zone=%{WORD:dst_zone} action=%{WORD:action} sent=%{INT:sent} rcvd=%{INT:rcvd} src=%{IPORHOST:src_ip} dst=%{IPORHOST:dst_ip} src_port=%{INT:src_port} dst_port=%{INT:dst_port} src-xlated ip=%{IPORHOST:src_xlated_ip} port=%{INT:src_xlated_port} dst-xlated ip=%{IPORHOST:dst_xlated_ip} port=%{INT:dst_xlated_port} session_id=%{INT:session_id} reason=%{GREEDYDATA:reason}
diff --git a/freemarker-generator-tools/src/main/resources/patterns/haproxy b/freemarker-generator-tools/src/main/resources/patterns/haproxy
new file mode 100755
index 0000000..99fff30
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/haproxy
@@ -0,0 +1,38 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+## These patterns were tested w/ haproxy-1.4.15
+
+## Documentation of the haproxy log formats can be found at the following links:
+## http://code.google.com/p/haproxy-docs/wiki/HTTPLogFormat
+## http://code.google.com/p/haproxy-docs/wiki/TCPLogFormat
+
+HAPROXYTIME (?!<[0-9])%{HOUR:haproxy_hour}:%{MINUTE:haproxy_minute}(?::%{SECOND:haproxy_second})(?![0-9])
+HAPROXYDATE %{MONTHDAY:haproxy_monthday}/%{MONTH:haproxy_month}/%{YEAR:haproxy_year}:%{HAPROXYTIME:haproxy_time}.%{INT:haproxy_milliseconds}
+
+# Override these default patterns to parse out what is captured in your haproxy.cfg
+HAPROXYCAPTUREDREQUESTHEADERS %{DATA:captured_request_headers}
+HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:captured_response_headers}
+
+# Example:
+#  These haproxy config lines will add data to the logs that are captured
+#  by the patterns below. Place them in your custom patterns directory to
+#  override the defaults.
+#
+#  capture request header Host len 40
+#  capture request header X-Forwarded-For len 50
+#  capture request header Accept-Language len 50
+#  capture request header Referer len 200
+#  capture request header User-Agent len 200
+#
+#  capture response header Content-Type len 30
+#  capture response header Content-Encoding len 10
+#  capture response header Cache-Control len 200
+#  capture response header Last-Modified len 200
+#
+# HAPROXYCAPTUREDREQUESTHEADERS %{DATA:request_header_host}\|%{DATA:request_header_x_forwarded_for}\|%{DATA:request_header_accept_language}\|%{DATA:request_header_referer}\|%{DATA:request_header_user_agent}
+# HAPROXYCAPTUREDRESPONSEHEADERS %{DATA:response_header_content_type}\|%{DATA:response_header_content_encoding}\|%{DATA:response_header_cache_control}\|%{DATA:response_header_last_modified}
+
+# parse a haproxy 'httplog' line
+HAPROXYHTTP %{SYSLOGTIMESTAMP:syslog_timestamp} %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client_ip}:%{INT:client_port} \[%{HAPROXYDATE:accept_date}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_request}/%{INT:time_queue}/%{INT:time_backend_connect}/%{INT:time_backend_response}/%{NOTSPACE:time_duration} %{INT:http_status_code} %{NOTSPACE:bytes_read} %{DATA:captured_request_cookie} %{DATA:captured_response_cookie} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue} (\{%{HAPROXYCAPTUREDREQUESTHEADERS}\})?( )?(\{%{HAPROXYCAPTUREDRESPONSEHEADERS}\})?( )?"%{WORD:http_verb} %{URIPATHPARAM:http_request}( HTTP/%{NUMBER:http_version}")?
+
+# parse a haproxy 'tcplog' line
+HAPROXYTCP %{SYSLOGTIMESTAMP:syslog_timestamp} %{IPORHOST:syslog_server} %{SYSLOGPROG}: %{IP:client_ip}:%{INT:client_port} \[%{HAPROXYDATE:accept_date}\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{INT:time_queue}/%{INT:time_backend_connect}/%{NOTSPACE:time_duration} %{NOTSPACE:bytes_read} %{NOTSPACE:termination_state} %{INT:actconn}/%{INT:feconn}/%{INT:beconn}/%{INT:srvconn}/%{NOTSPACE:retries} %{INT:srv_queue}/%{INT:backend_queue}
diff --git a/freemarker-generator-tools/src/main/resources/patterns/java b/freemarker-generator-tools/src/main/resources/patterns/java
new file mode 100755
index 0000000..611952c
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/java
@@ -0,0 +1,4 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+JAVACLASS (?:[a-zA-Z0-9-]+\.)+[A-Za-z0-9$]+
+JAVAFILE (?:[A-Za-z0-9_.-]+)
+JAVASTACKTRACEPART at %{JAVACLASS:class}\.%{WORD:method}\(%{JAVAFILE:file}:%{NUMBER:line}\)
diff --git a/freemarker-generator-tools/src/main/resources/patterns/linux-syslog b/freemarker-generator-tools/src/main/resources/patterns/linux-syslog
new file mode 100755
index 0000000..a888999
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/linux-syslog
@@ -0,0 +1,8 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+SYSLOGBASE2 (?:%{SYSLOGTIMESTAMP:timestamp}|%{TIMESTAMP_ISO8601:timestamp8601}) (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
+SYSLOGPAMSESSION %{SYSLOGBASE} (?=%{GREEDYDATA:message})%{WORD:pam_module}\(%{DATA:pam_caller}\): session %{WORD:pam_session_state} for user %{USERNAME:username}(?: by %{GREEDYDATA:pam_by})?
+
+CRON_ACTION [A-Z ]+
+CRONLOG %{SYSLOGBASE} \(%{USER:user}\) %{CRON_ACTION:action} \(%{DATA:message}\)
+
+SYSLOGLINE %{SYSLOGBASE2} %{GREEDYDATA:message}
diff --git a/freemarker-generator-tools/src/main/resources/patterns/nagios b/freemarker-generator-tools/src/main/resources/patterns/nagios
new file mode 100755
index 0000000..771cb0a
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/nagios
@@ -0,0 +1,109 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+##################################################################################
+##################################################################################
+# Chop Nagios log files to smithereens!
+#
+# A set of GROK filters to process logfiles generated by Nagios.
+# While it does not, this set intends to cover all possible Nagios logs.
+#
+# Some more work needs to be done to cover all External Commands:
+#	http://old.nagios.org/developerinfo/externalcommands/commandlist.php
+#
+# If you need some support on these rules please contact:
+#	Jelle Smet http://smetj.net
+#
+#################################################################################
+#################################################################################
+
+NAGIOSTIME \[%{NUMBER:nagios_epoch}\]
+
+###############################################
+######## Begin nagios log types
+###############################################
+NAGIOS_TYPE_CURRENT_SERVICE_STATE CURRENT SERVICE STATE
+NAGIOS_TYPE_CURRENT_HOST_STATE CURRENT HOST STATE
+
+NAGIOS_TYPE_SERVICE_NOTIFICATION SERVICE NOTIFICATION
+NAGIOS_TYPE_HOST_NOTIFICATION HOST NOTIFICATION
+
+NAGIOS_TYPE_SERVICE_ALERT SERVICE ALERT
+NAGIOS_TYPE_HOST_ALERT HOST ALERT
+
+NAGIOS_TYPE_SERVICE_FLAPPING_ALERT SERVICE FLAPPING ALERT
+NAGIOS_TYPE_HOST_FLAPPING_ALERT HOST FLAPPING ALERT
+
+NAGIOS_TYPE_SERVICE_DOWNTIME_ALERT SERVICE DOWNTIME ALERT
+NAGIOS_TYPE_HOST_DOWNTIME_ALERT HOST DOWNTIME ALERT
+
+NAGIOS_TYPE_PASSIVE_SERVICE_CHECK PASSIVE SERVICE CHECK
+NAGIOS_TYPE_PASSIVE_HOST_CHECK PASSIVE HOST CHECK
+
+NAGIOS_TYPE_SERVICE_EVENT_HANDLER SERVICE EVENT HANDLER
+NAGIOS_TYPE_HOST_EVENT_HANDLER HOST EVENT HANDLER
+
+NAGIOS_TYPE_EXTERNAL_COMMAND EXTERNAL COMMAND
+NAGIOS_TYPE_TIMEPERIOD_TRANSITION TIMEPERIOD TRANSITION
+###############################################
+######## End nagios log types
+###############################################
+
+###############################################
+######## Begin external check types
+###############################################
+NAGIOS_EC_DISABLE_SVC_CHECK DISABLE_SVC_CHECK
+NAGIOS_EC_ENABLE_SVC_CHECK ENABLE_SVC_CHECK
+NAGIOS_EC_DISABLE_HOST_CHECK DISABLE_HOST_CHECK
+NAGIOS_EC_ENABLE_HOST_CHECK ENABLE_HOST_CHECK
+NAGIOS_EC_PROCESS_SERVICE_CHECK_RESULT PROCESS_SERVICE_CHECK_RESULT
+NAGIOS_EC_PROCESS_HOST_CHECK_RESULT PROCESS_HOST_CHECK_RESULT
+NAGIOS_EC_SCHEDULE_SERVICE_DOWNTIME SCHEDULE_SERVICE_DOWNTIME
+NAGIOS_EC_SCHEDULE_HOST_DOWNTIME SCHEDULE_HOST_DOWNTIME
+###############################################
+######## End external check types
+###############################################
+NAGIOS_WARNING Warning:%{SPACE}%{GREEDYDATA:nagios_message}
+
+NAGIOS_CURRENT_SERVICE_STATE %{NAGIOS_TYPE_CURRENT_SERVICE_STATE:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_statetype};%{DATA:nagios_statecode};%{GREEDYDATA:nagios_message}
+NAGIOS_CURRENT_HOST_STATE %{NAGIOS_TYPE_CURRENT_HOST_STATE:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_statetype};%{DATA:nagios_statecode};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_NOTIFICATION %{NAGIOS_TYPE_SERVICE_NOTIFICATION:nagios_type}: %{DATA:nagios_notifyname};%{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_contact};%{GREEDYDATA:nagios_message}
+NAGIOS_HOST_NOTIFICATION %{NAGIOS_TYPE_HOST_NOTIFICATION}: %{DATA:nagios_notifyname};%{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_contact};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_ALERT %{NAGIOS_TYPE_SERVICE_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{NUMBER:nagios_attempt};%{GREEDYDATA:nagios_message}
+NAGIOS_HOST_ALERT %{NAGIOS_TYPE_HOST_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{NUMBER:nagios_attempt};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_FLAPPING_ALERT %{NAGIOS_TYPE_SERVICE_FLAPPING_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_message}
+NAGIOS_HOST_FLAPPING_ALERT %{NAGIOS_TYPE_HOST_FLAPPING_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_message}
+
+NAGIOS_SERVICE_DOWNTIME_ALERT %{NAGIOS_TYPE_SERVICE_DOWNTIME_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+NAGIOS_HOST_DOWNTIME_ALERT %{NAGIOS_TYPE_HOST_DOWNTIME_ALERT:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+
+NAGIOS_PASSIVE_SERVICE_CHECK %{NAGIOS_TYPE_PASSIVE_SERVICE_CHECK:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+NAGIOS_PASSIVE_HOST_CHECK %{NAGIOS_TYPE_PASSIVE_HOST_CHECK:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_comment}
+
+NAGIOS_SERVICE_EVENT_HANDLER %{NAGIOS_TYPE_SERVICE_EVENT_HANDLER:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{DATA:nagios_event_handler_name}
+NAGIOS_HOST_EVENT_HANDLER %{NAGIOS_TYPE_HOST_EVENT_HANDLER:nagios_type}: %{DATA:nagios_hostname};%{DATA:nagios_state};%{DATA:nagios_statelevel};%{DATA:nagios_event_handler_name}
+
+NAGIOS_TIMEPERIOD_TRANSITION %{NAGIOS_TYPE_TIMEPERIOD_TRANSITION:nagios_type}: %{DATA:nagios_service};%{DATA:nagios_unknown1};%{DATA:nagios_unknown2};
+
+####################
+#### External checks
+####################
+
+#Disable host & service check
+NAGIOS_EC_LINE_DISABLE_SVC_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_DISABLE_SVC_CHECK:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_service}
+NAGIOS_EC_LINE_DISABLE_HOST_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_DISABLE_HOST_CHECK:nagios_command};%{DATA:nagios_hostname}
+
+#Enable host & service check
+NAGIOS_EC_LINE_ENABLE_SVC_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_ENABLE_SVC_CHECK:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_service}
+NAGIOS_EC_LINE_ENABLE_HOST_CHECK %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_ENABLE_HOST_CHECK:nagios_command};%{DATA:nagios_hostname}
+
+#Process host & service check
+NAGIOS_EC_LINE_PROCESS_SERVICE_CHECK_RESULT %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_PROCESS_SERVICE_CHECK_RESULT:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_service};%{DATA:nagios_state};%{GREEDYDATA:nagios_check_result}
+NAGIOS_EC_LINE_PROCESS_HOST_CHECK_RESULT %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_PROCESS_HOST_CHECK_RESULT:nagios_command};%{DATA:nagios_hostname};%{DATA:nagios_state};%{GREEDYDATA:nagios_check_result}
+
+#Schedule host & service downtime
+NAGIOS_EC_LINE_SCHEDULE_HOST_DOWNTIME %{NAGIOS_TYPE_EXTERNAL_COMMAND:nagios_type}: %{NAGIOS_EC_SCHEDULE_HOST_DOWNTIME:nagios_command};%{DATA:nagios_hostname};%{NUMBER:nagios_start_time};%{NUMBER:nagios_end_time};%{NUMBER:nagios_fixed};%{NUMBER:nagios_trigger_id};%{NUMBER:nagios_duration};%{DATA:author};%{DATA:comment}
+
+#End matching line
+NAGIOSLOGLINE %{NAGIOSTIME} (?:%{NAGIOS_WARNING}|%{NAGIOS_CURRENT_SERVICE_STATE}|%{NAGIOS_CURRENT_HOST_STATE}|%{NAGIOS_SERVICE_NOTIFICATION}|%{NAGIOS_HOST_NOTIFICATION}|%{NAGIOS_SERVICE_ALERT}|%{NAGIOS_HOST_ALERT}|%{NAGIOS_SERVICE_FLAPPING_ALERT}|%{NAGIOS_HOST_FLAPPING_ALERT}|%{NAGIOS_SERVICE_DOWNTIME_ALERT}|%{NAGIOS_HOST_DOWNTIME_ALERT}|%{NAGIOS_PASSIVE_SERVICE_CHECK}|%{NAGIOS_PASSIVE_HOST_CHECK}|%{NAGIOS_SERVICE_EVENT_HANDLER}|%{NAGIOS_HOST_EVENT_HANDLER}|%{NAGIOS_TIMEPERIOD_TRANSITION}|%{NAGIOS_EC_LINE_DISABLE_SVC_CHECK}|%{NAGIOS_EC_LINE_ENABLE_SVC_CHECK}|%{NAGIOS_EC_LINE_DISABLE_HOST_CHECK|%{NAGIOS_EC_LINE_ENABLE_HOST_CHECK}|%{NAGIOS_EC_LINE_PROCESS_HOST_CHECK_RESULT}|%{NAGIOS_EC_LINE_PROCESS_SERVICE_CHECK_RESULT}|%{NAGIOS_EC_LINE_SCHEDULE_HOST_DOWNTIME})
diff --git a/freemarker-generator-tools/src/main/resources/patterns/patterns b/freemarker-generator-tools/src/main/resources/patterns/patterns
new file mode 100755
index 0000000..52235d8
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/patterns
@@ -0,0 +1,108 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+
+USERNAME [a-zA-Z0-9._-]+
+USER %{USERNAME:UNWANTED}
+INT (?:[+-]?(?:[0-9]+))
+BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
+NUMBER (?:%{BASE10NUM:UNWANTED})
+BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
+BASE16FLOAT \b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\b
+
+POSINT \b(?:[1-9][0-9]*)\b
+NONNEGINT \b(?:[0-9]+)\b
+WORD \b\w+\b
+NOTSPACE \S+
+SPACE \s*
+DATA .*?
+GREEDYDATA .*
+#QUOTEDSTRING (?:(?<!\\)(?:"(?:\\.|[^\\"])*"|(?:'(?:\\.|[^\\'])*')|(?:`(?:\\.|[^\\`])*`)))
+QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
+UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
+
+# Networking
+MAC (?:%{CISCOMAC:UNWANTED}|%{WINDOWSMAC:UNWANTED}|%{COMMONMAC:UNWANTED})
+CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
+WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
+COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
+IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
+IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
+IP (?:%{IPV6:UNWANTED}|%{IPV4:UNWANTED})
+HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
+HOST %{HOSTNAME:UNWANTED}
+IPORHOST (?:%{HOSTNAME:UNWANTED}|%{IP:UNWANTED})
+HOSTPORT (?:%{IPORHOST}:%{POSINT:PORT})
+
+# paths
+PATH (?:%{UNIXPATH}|%{WINPATH})
+UNIXPATH (?>/(?>[\w_%!$@:.,~-]+|\\.)*)+
+#UNIXPATH (?<![\w\/])(?:/[^\/\s?*]*)+
+TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
+WINPATH (?>[A-Za-z]+:|\\)(?:\\[^\\?*]*)+
+URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
+URIHOST %{IPORHOST}(?::%{POSINT:port})?
+# uripath comes loosely from RFC1738, but mostly from what Firefox
+# doesn't turn into %XX
+URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_\-]*)+
+#URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?
+URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
+URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
+URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
+
+# Months: January, Feb, 3, 03, 12, December
+MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b
+MONTHNUM (?:0?[1-9]|1[0-2])
+MONTHNUM2 (?:0[1-9]|1[0-2])
+MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
+
+# Days: Monday, Tue, Thu, etc...
+DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)
+
+# Years?
+YEAR (?>\d\d){1,2}
+# Time: HH:MM:SS
+#TIME \d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?
+# I'm still on the fence about using grok to perform the time match,
+# since it's probably slower.
+# TIME %{POSINT<24}:%{POSINT<60}(?::%{POSINT<60}(?:\.%{POSINT})?)?
+HOUR (?:2[0123]|[01]?[0-9])
+MINUTE (?:[0-5][0-9])
+# '60' is a leap second in most time standards and thus is valid.
+SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
+TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
+# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)
+DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
+DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
+ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
+ISO8601_SECOND (?:%{SECOND}|60)
+TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
+DATE %{DATE_US}|%{DATE_EU}
+DATESTAMP %{DATE}[- ]%{TIME}
+TZ (?:[PMCE][SD]T|UTC)
+DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
+DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
+DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
+DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
+
+# Syslog Dates: Month Day HH:MM:SS
+SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
+PROG (?:[\w._/%-]+)
+SYSLOGPROG %{PROG:program}(?:\[%{POSINT:pid}\])?
+SYSLOGHOST %{IPORHOST}
+SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
+HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
+
+# Shortcuts
+QS %{QUOTEDSTRING:UNWANTED}
+
+# Log formats
+SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
+
+MESSAGESLOG %{SYSLOGBASE} %{DATA}
+
+COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
+COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
+COMMONAPACHELOG_DATATYPED %{IPORHOST:clientip} %{USER:ident;boolean} %{USER:auth} \[%{HTTPDATE:timestamp;date;dd/MMM/yyyy:HH:mm:ss Z}\] "(?:%{WORD:verb;string} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion;float})?|%{DATA:rawrequest})" %{NUMBER:response;int} (?:%{NUMBER:bytes;long}|-)
+
+
+# Log Levels
+LOGLEVEL ([A|a]lert|ALERT|[T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)
diff --git a/freemarker-generator-tools/src/main/resources/patterns/postfix b/freemarker-generator-tools/src/main/resources/patterns/postfix
new file mode 100755
index 0000000..3adcb69
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/postfix
@@ -0,0 +1,125 @@
+# common postfix patterns
+POSTFIX_QUEUEID ([0-9A-F]{6,}|[0-9a-zA-Z]{15,})
+POSTFIX_CLIENT_INFO %{HOSTNAME:postfix_client_hostname}?\[%{IP:postfix_client_ip}\](:%{INT:postfix_client_port})?
+POSTFIX_RELAY_INFO %{HOSTNAME:postfix_relay_hostname}?\[(%{IP:postfix_relay_ip}|%{DATA:postfix_relay_service})\](:%{INT:postfix_relay_port})?|%{WORD:postfix_relay_service}
+POSTFIX_SMTP_STAGE (CONNECT|HELO|EHLO|STARTTLS|AUTH|MAIL( FROM)?|RCPT( TO)?|(end of )?DATA|RSET|UNKNOWN|END-OF-MESSAGE|VRFY|\.)
+POSTFIX_ACTION (accept|defer|discard|filter|header-redirect|reject)
+POSTFIX_STATUS_CODE \d{3}
+POSTFIX_STATUS_CODE_ENHANCED \d\.\d\.\d
+POSTFIX_DNSBL_MESSAGE Service unavailable; .* \[%{GREEDYDATA:postfix_status_data}\] %{GREEDYDATA:postfix_status_message};
+POSTFIX_PS_ACCESS_ACTION (DISCONNECT|BLACKLISTED|WHITELISTED|WHITELIST VETO|PASS NEW|PASS OLD)
+POSTFIX_PS_VIOLATION (BARE NEWLINE|COMMAND (TIME|COUNT|LENGTH) LIMIT|COMMAND PIPELINING|DNSBL|HANGUP|NON-SMTP COMMAND|PREGREET)
+POSTFIX_TIME_UNIT %{NUMBER}[smhd]
+POSTFIX_KEYVALUE_DATA [\w-]+=[^;]*
+POSTFIX_KEYVALUE %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+POSTFIX_WARNING_LEVEL (warning|fatal|info)
+
+POSTFIX_TLSCONN (Anonymous|Trusted|Untrusted|Verified) TLS connection established (to %{POSTFIX_RELAY_INFO}|from %{POSTFIX_CLIENT_INFO}): %{DATA:postfix_tls_version} with cipher %{DATA:postfix_tls_cipher} \(%{DATA:postfix_tls_cipher_size} bits\)
+POSTFIX_DELAYS %{NUMBER:postfix_delay_before_qmgr}/%{NUMBER:postfix_delay_in_qmgr}/%{NUMBER:postfix_delay_conn_setup}/%{NUMBER:postfix_delay_transmission}
+POSTFIX_LOSTCONN (lost connection|timeout|SSL_accept error)
+POSTFIX_LOSTCONN_REASONS (receiving the initial server greeting|sending message body|sending end of data -- message may be sent more than once)
+POSTFIX_PROXY_MESSAGE (%{POSTFIX_STATUS_CODE:postfix_proxy_status_code} )?(%{POSTFIX_STATUS_CODE_ENHANCED:postfix_proxy_status_code_enhanced})?.*
+
+# helper patterns
+GREEDYDATA_NO_COLON [^:]*
+GREEDYDATA_NO_SEMICOLON [^;]*
+
+# warning patterns
+POSTFIX_WARNING_WITH_KV (%{POSTFIX_QUEUEID:postfix_queueid}: )?%{POSTFIX_WARNING_LEVEL:postfix_message_level}: %{GREEDYDATA:postfix_message}; %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+POSTFIX_WARNING_WITHOUT_KV (%{POSTFIX_QUEUEID:postfix_queueid}: )?%{POSTFIX_WARNING_LEVEL:postfix_message_level}: %{GREEDYDATA:postfix_message}
+POSTFIX_WARNING %{POSTFIX_WARNING_WITH_KV}|%{POSTFIX_WARNING_WITHOUT_KV}
+
+# smtpd patterns
+POSTFIX_SMTPD_CONNECT connect from %{POSTFIX_CLIENT_INFO}
+POSTFIX_SMTPD_DISCONNECT disconnect from %{POSTFIX_CLIENT_INFO}
+POSTFIX_SMTPD_LOSTCONN %{POSTFIX_LOSTCONN:postfix_smtpd_lostconn_data}( after %{POSTFIX_SMTP_STAGE:postfix_smtp_stage}( \(%{INT} bytes\))?)? from %{POSTFIX_CLIENT_INFO}(: %{GREEDYDATA:postfix_smtpd_lostconn_reason})?
+POSTFIX_SMTPD_NOQUEUE NOQUEUE: %{POSTFIX_ACTION:postfix_action}: %{POSTFIX_SMTP_STAGE:postfix_smtp_stage} from %{POSTFIX_CLIENT_INFO}:( %{POSTFIX_STATUS_CODE:postfix_status_code} %{POSTFIX_STATUS_CODE_ENHANCED:postfix_status_code_enhanced})?( <%{DATA:postfix_status_data}>:)? (%{POSTFIX_DNSBL_MESSAGE}|%{GREEDYDATA:postfix_status_message};) %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+POSTFIX_SMTPD_PIPELINING improper command pipelining after %{POSTFIX_SMTP_STAGE:postfix_smtp_stage} from %{POSTFIX_CLIENT_INFO}: %{GREEDYDATA:postfix_improper_pipelining_data}
+POSTFIX_SMTPD_PROXY proxy-%{POSTFIX_ACTION:postfix_proxy_result}: (%{POSTFIX_SMTP_STAGE:postfix_proxy_smtp_stage}): %{POSTFIX_PROXY_MESSAGE:postfix_proxy_message}; %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}
+
+# cleanup patterns
+POSTFIX_CLEANUP_MILTER %{POSTFIX_QUEUEID:postfix_queueid}: milter-%{POSTFIX_ACTION:postfix_milter_result}: %{GREEDYDATA:postfix_milter_message}; %{GREEDYDATA_NO_COLON:postfix_keyvalue_data}(: %{GREEDYDATA:postfix_milter_data})?
+
+# qmgr patterns
+POSTFIX_QMGR_REMOVED %{POSTFIX_QUEUEID:postfix_queueid}: removed
+POSTFIX_QMGR_ACTIVE %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data} \(queue active\)
+POSTFIX_QMGR_EXPIRED %{POSTFIX_QUEUEID:postfix_queueid}: from=<%{DATA:postfix_from}>, status=%{WORD:postfix_status}, returned to sender
+
+# pipe patterns
+POSTFIX_PIPE_ANY %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}, status=%{WORD:postfix_status} \(%{GREEDYDATA:postfix_pipe_response}\)
+
+# error patterns
+POSTFIX_ERROR_ANY %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data}, status=%{WORD:postfix_status} \(%{GREEDYDATA:postfix_error_response}\)
+
+# discard patterns
+POSTFIX_DISCARD_ANY %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_KEYVALUE_DATA:postfix_keyvalue_data} status=%{WORD:postfix_status} %{GREEDYDATA}
+
+# postsuper patterns
+POSTFIX_POSTSUPER_ACTIONS (removed|requeued|placed on hold|released from hold)
+POSTFIX_POSTSUPER_ACTION %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_POSTSUPER_ACTIONS:postfix_postsuper_action}
+POSTFIX_POSTSUPER_SUMMARY_ACTIONS (Deleted|Requeued|Placed on hold|Released from hold)
+POSTFIX_POSTSUPER_SUMMARY %{POSTFIX_POSTSUPER_SUMMARY_ACTIONS:postfix_postsuper_summary_action}: %{NUMBER:postfix_postsuper_summary_count} messages?
+
+# postscreen patterns
+POSTFIX_PS_CONNECT CONNECT from %{POSTFIX_CLIENT_INFO} to \[%{IP:postfix_server_ip}\]:%{INT:postfix_server_port}
+POSTFIX_PS_ACCESS %{POSTFIX_PS_ACCESS_ACTION:postfix_postscreen_access} %{POSTFIX_CLIENT_INFO}
+POSTFIX_PS_NOQUEUE %{POSTFIX_SMTPD_NOQUEUE}
+POSTFIX_PS_TOOBUSY NOQUEUE: reject: CONNECT from %{POSTFIX_CLIENT_INFO}: %{GREEDYDATA:postfix_postscreen_toobusy_data}
+POSTFIX_PS_DNSBL %{POSTFIX_PS_VIOLATION:postfix_postscreen_violation} rank %{INT:postfix_postscreen_dnsbl_rank} for %{POSTFIX_CLIENT_INFO}
+POSTFIX_PS_CACHE cache %{DATA} full cleanup: retained=%{NUMBER:postfix_postscreen_cache_retained} dropped=%{NUMBER:postfix_postscreen_cache_dropped} entries
+POSTFIX_PS_VIOLATIONS %{POSTFIX_PS_VIOLATION:postfix_postscreen_violation}( %{INT})?( after %{NUMBER:postfix_postscreen_violation_time})? from %{POSTFIX_CLIENT_INFO}(( after %{POSTFIX_SMTP_STAGE:postfix_smtp_stage})?(: %{GREEDYDATA:postfix_postscreen_data})?| in tests (after|before) SMTP handshake)
+
+# dnsblog patterns
+POSTFIX_DNSBLOG_LISTING addr %{IP:postfix_client_ip} listed by domain %{HOSTNAME:postfix_dnsbl_domain} as %{IP:postfix_dnsbl_result}
+
+# tlsproxy patterns
+POSTFIX_TLSPROXY_CONN (DIS)?CONNECT( from)? %{POSTFIX_CLIENT_INFO}
+
+# anvil patterns
+POSTFIX_ANVIL_CONN_RATE statistics: max connection rate %{NUMBER:postfix_anvil_conn_rate}/%{POSTFIX_TIME_UNIT:postfix_anvil_conn_period} for \(%{DATA:postfix_service}:%{IP:postfix_client_ip}\) at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp}
+POSTFIX_ANVIL_CONN_CACHE statistics: max cache size %{NUMBER:postfix_anvil_cache_size} at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp}
+POSTFIX_ANVIL_CONN_COUNT statistics: max connection count %{NUMBER:postfix_anvil_conn_count} for \(%{DATA:postfix_service}:%{IP:postfix_client_ip}\) at %{SYSLOGTIMESTAMP:postfix_anvil_timestamp}
+
+# smtp patterns
+POSTFIX_SMTP_DELIVERY %{POSTFIX_KEYVALUE} status=%{WORD:postfix_status}( \(%{GREEDYDATA:postfix_smtp_response}\))?
+POSTFIX_SMTP_CONNERR connect to %{POSTFIX_RELAY_INFO}: (Connection timed out|No route to host|Connection refused|Network is unreachable)
+POSTFIX_SMTP_LOSTCONN %{POSTFIX_QUEUEID:postfix_queueid}: %{POSTFIX_LOSTCONN:postfix_smtp_lostconn_data} with %{POSTFIX_RELAY_INFO}( while %{POSTFIX_LOSTCONN_REASONS:postfix_smtp_lostconn_reason})?
+POSTFIX_SMTP_TIMEOUT %{POSTFIX_QUEUEID:postfix_queueid}: conversation with %{POSTFIX_RELAY_INFO} timed out( while %{POSTFIX_LOSTCONN_REASONS:postfix_smtp_lostconn_reason})?
+POSTFIX_SMTP_RELAYERR %{POSTFIX_QUEUEID:postfix_queueid}: host %{POSTFIX_RELAY_INFO} said: %{GREEDYDATA:postfix_smtp_response} \(in reply to %{POSTFIX_SMTP_STAGE:postfix_smtp_stage} command\)
+
+# master patterns
+POSTFIX_MASTER_START (daemon started|reload) -- version %{DATA:postfix_version}, configuration %{PATH:postfix_config_path}
+POSTFIX_MASTER_EXIT terminating on signal %{INT:postfix_termination_signal}
+
+# bounce patterns
+POSTFIX_BOUNCE_NOTIFICATION %{POSTFIX_QUEUEID:postfix_queueid}: sender (non-delivery|delivery status|delay) notification: %{POSTFIX_QUEUEID:postfix_bounce_queueid}
+
+# scache patterns
+POSTFIX_SCACHE_LOOKUPS statistics: (address|domain) lookup hits=%{INT:postfix_scache_hits} miss=%{INT:postfix_scache_miss} success=%{INT:postfix_scache_success}%
+POSTFIX_SCACHE_SIMULTANEOUS statistics: max simultaneous domains=%{INT:postfix_scache_domains} addresses=%{INT:postfix_scache_addresses} connection=%{INT:postfix_scache_connection}
+POSTFIX_SCACHE_TIMESTAMP statistics: start interval %{SYSLOGTIMESTAMP:postfix_scache_timestamp}
+
+# aggregate all patterns
+POSTFIX_SMTPD %{POSTFIX_SMTPD_CONNECT}|%{POSTFIX_SMTPD_DISCONNECT}|%{POSTFIX_SMTPD_LOSTCONN}|%{POSTFIX_SMTPD_NOQUEUE}|%{POSTFIX_SMTPD_PIPELINING}|%{POSTFIX_TLSCONN}|%{POSTFIX_WARNING}|%{POSTFIX_SMTPD_PROXY}|%{POSTFIX_KEYVALUE}
+POSTFIX_CLEANUP %{POSTFIX_CLEANUP_MILTER}|%{POSTFIX_WARNING}|%{POSTFIX_KEYVALUE}
+POSTFIX_QMGR %{POSTFIX_QMGR_REMOVED}|%{POSTFIX_QMGR_ACTIVE}|%{POSTFIX_QMGR_EXPIRED}|%{POSTFIX_WARNING}
+POSTFIX_PIPE %{POSTFIX_PIPE_ANY}
+POSTFIX_POSTSCREEN %{POSTFIX_PS_CONNECT}|%{POSTFIX_PS_ACCESS}|%{POSTFIX_PS_NOQUEUE}|%{POSTFIX_PS_TOOBUSY}|%{POSTFIX_PS_CACHE}|%{POSTFIX_PS_DNSBL}|%{POSTFIX_PS_VIOLATIONS}|%{POSTFIX_WARNING}
+POSTFIX_DNSBLOG %{POSTFIX_DNSBLOG_LISTING}|%{POSTFIX_WARNING}
+POSTFIX_ANVIL %{POSTFIX_ANVIL_CONN_RATE}|%{POSTFIX_ANVIL_CONN_CACHE}|%{POSTFIX_ANVIL_CONN_COUNT}
+POSTFIX_SMTP %{POSTFIX_SMTP_DELIVERY}|%{POSTFIX_SMTP_CONNERR}|%{POSTFIX_SMTP_LOSTCONN}|%{POSTFIX_SMTP_TIMEOUT}|%{POSTFIX_SMTP_RELAYERR}|%{POSTFIX_TLSCONN}|%{POSTFIX_WARNING}
+POSTFIX_DISCARD %{POSTFIX_DISCARD_ANY}|%{POSTFIX_WARNING}
+POSTFIX_LMTP %{POSTFIX_SMTP}
+POSTFIX_PICKUP %{POSTFIX_KEYVALUE}
+POSTFIX_TLSPROXY %{POSTFIX_TLSPROXY_CONN}|%{POSTFIX_WARNING}
+POSTFIX_MASTER %{POSTFIX_MASTER_START}|%{POSTFIX_MASTER_EXIT}|%{POSTFIX_WARNING}
+POSTFIX_BOUNCE %{POSTFIX_BOUNCE_NOTIFICATION}
+POSTFIX_SENDMAIL %{POSTFIX_WARNING}
+POSTFIX_POSTDROP %{POSTFIX_WARNING}
+POSTFIX_SCACHE %{POSTFIX_SCACHE_LOOKUPS}|%{POSTFIX_SCACHE_SIMULTANEOUS}|%{POSTFIX_SCACHE_TIMESTAMP}
+POSTFIX_TRIVIAL_REWRITE %{POSTFIX_WARNING}
+POSTFIX_TLSMGR %{POSTFIX_WARNING}
+POSTFIX_LOCAL %{POSTFIX_KEYVALUE}
+POSTFIX_VIRTUAL %{POSTFIX_SMTP_DELIVERY}
+POSTFIX_ERROR %{POSTFIX_ERROR_ANY}
+POSTFIX_POSTSUPER %{POSTFIX_POSTSUPER_ACTION}|%{POSTFIX_POSTSUPER_SUMMARY}
diff --git a/freemarker-generator-tools/src/main/resources/patterns/ruby b/freemarker-generator-tools/src/main/resources/patterns/ruby
new file mode 100755
index 0000000..9e5aa5b
--- /dev/null
+++ b/freemarker-generator-tools/src/main/resources/patterns/ruby
@@ -0,0 +1,3 @@
+# Forked from https://github.com/elasticsearch/logstash/tree/v1.4.0/patterns
+RUBY_LOGLEVEL (?:DEBUG|FATAL|ERROR|WARN|INFO)
+RUBY_LOGGER [DFEWI], \[%{TIMESTAMP_ISO8601:timestamp} #%{POSINT:pid}\] *%{RUBY_LOGLEVEL:loglevel} -- +%{DATA:progname}: %{GREEDYDATA:message}
diff --git a/freemarker-generator-tools/src/test/data/csv/contract.csv b/freemarker-generator-tools/src/test/data/csv/contract.csv
new file mode 100644
index 0000000..6ce0d00
--- /dev/null
+++ b/freemarker-generator-tools/src/test/data/csv/contract.csv
@@ -0,0 +1,23 @@
+contract_id,seller_company_name,customer_company_name,customer_duns_number,contract_affiliate,FERC_tariff_reference,contract_service_agreement_id,contract_execution_date,contract_commencement_date,contract_termination_date,actual_termination_date,extension_provision_description,class_name,term_name,increment_name,increment_peaking_name,product_type_name,product_name,quantity,units_for_contract,rate,rate_minimum,rate_maximum,rate_description,units_for_rate,point_of_receipt_control_area,point_of_receipt_specific_location,point_of_delivery_control_area,point_of_delivery_specific_location,begin_date,end_date,time_zone
+C71,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Original Volume No. 10,2,2/15/2001,2/15/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,,,,,,ES
+C72,The Electric Company,Utility A,38495837,n,FERC Electric Tariff Original Volume No. 10,15,7/25/2001,8/1/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,,,,,,ES
+C73,The Electric Company,Utility B,493758794,N,FERC Electric Tariff Original Volume No. 10,7,6/8/2001,7/6/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,, , ,,,ep
+C74,The Electric Company,Utility C,594739573,n,FERC Electric Tariff Original Volume No. 10,25,6/8/2001,7/6/2001,,,Evergreen,N/A,N/A,N/A,N/A,MB,ENERGY,0,, , , ,Market Based,,,, , ,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,ENERGY,2000,KWh,.1475, , ,Max amount of capacity and energy to be transmitted.  Bill based on monthly max delivery to City.,$/KWh,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,point-to-point agreement,2000,KW,0.01, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,network,2000,KW,0.2, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,BLACK START SERVICE,2000,KW,0.22, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,CAPACITY,2000,KW,0.04, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,regulation & frequency response,2000,KW,0.1, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C75,The Electric Company,The Power Company,456543333,N,FERC Electric Tariff Third Revised Volume No. 7,94,2/13/2001,7/1/2001,12/31/2006,,None,F,LT,M,P,T,real power transmission loss,2000,KW,7, , ,,$/kw-mo,PJM,Point A,PJM,Point B,,,ep
+C76,The Electric Company,The Power Company,456534333,N,FERC Electric Tariff Original Volume No. 10,132,12/15/2001,1/1/2002,12/31/2004,12/31/2004,None,F,LT,M,FP,MB,CAPACITY,70,MW,3750, , ,70MW for each and every hour over the term of the agreement (7x24 schedule).,$/MW,,,,,,,ep
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,35, , ,,$/MWH,,,PJM,Bus 4321,20020101,20030101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,37, , ,,$/MWH,,,PJM,Bus 4321,20030101,20040101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,39, , ,,$/MWH,,,PJM,Bus 4321,20040101,20050101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,41, , ,,$/MWH,,,PJM,Bus 4321,20050101,20060101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,43, , ,,$/MWH,,,PJM,Bus 4321,20060101,20070101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,45, , ,,$/MWH,,,PJM,Bus 4321,20070101,20080101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,47, , ,,$/MWH,,,PJM,Bus 4321,20080101,20090101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,49, , ,,$/MWH,,,PJM,Bus 4321,20090101,20100101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,51, , ,,$/MWH,,,PJM,Bus 4321,20100101,20110101,EP
+C78,The Electric Company,"The Electric Marketing Co., LLC",23456789,Y,FERC Electric Tariff Original Volume No. 2,Service Agreement 1,1/2/1992,1/2/1992,1/1/2012,,Renewable annually by mutual agreement after termination date.,UP,LT,Y,FP,CB,ENERGY,0,MWH,53, , ,,$/MWH,,,PJM,Bus 4321,20110101,20120101,EP
diff --git a/freemarker-generator-tools/src/test/data/csv/excel-export-utf8.csv b/freemarker-generator-tools/src/test/data/csv/excel-export-utf8.csv
new file mode 100644
index 0000000..8022365
--- /dev/null
+++ b/freemarker-generator-tools/src/test/data/csv/excel-export-utf8.csv
@@ -0,0 +1,3 @@
+﻿Text;Date;Number;Currency;Time;Percentage;Forumula
+Row 1;01.01.17;100,00;€100,00;10:00;50,00%;50
+Row 2;01.01.17;100,00;€100,00;10:00;50,00%;50
\ No newline at end of file
diff --git a/freemarker-generator-tools/src/test/data/excel/test-multiple-sheets.xlsx b/freemarker-generator-tools/src/test/data/excel/test-multiple-sheets.xlsx
new file mode 100644
index 0000000..6fe449a
--- /dev/null
+++ b/freemarker-generator-tools/src/test/data/excel/test-multiple-sheets.xlsx
Binary files differ
diff --git a/freemarker-generator-tools/src/test/data/excel/test.xls b/freemarker-generator-tools/src/test/data/excel/test.xls
new file mode 100644
index 0000000..df48479
--- /dev/null
+++ b/freemarker-generator-tools/src/test/data/excel/test.xls
Binary files differ
diff --git a/freemarker-generator-tools/src/test/data/excel/test.xlsx b/freemarker-generator-tools/src/test/data/excel/test.xlsx
new file mode 100644
index 0000000..b79f954
--- /dev/null
+++ b/freemarker-generator-tools/src/test/data/excel/test.xlsx
Binary files differ
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVToolTest.java
new file mode 100644
index 0000000..770309e
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/commonscsv/CommonsCSVToolTest.java
@@ -0,0 +1,153 @@
+/*
+ * 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.freemarker.generator.tools.commonscsv;
+
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVPrinter;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.List;
+import java.util.Map;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+import static junit.framework.TestCase.assertTrue;
+import static org.apache.commons.csv.CSVFormat.DEFAULT;
+import static org.apache.commons.csv.CSVFormat.EXCEL;
+
+public class CommonsCSVToolTest {
+
+    private static final String ANY_KEY = "C71";
+    private static final String CONTRACT_ID = "contract_id";
+    private static final int CONTRACT_ID_IDX = 0;
+    private static final File BOM_CSV = new File("./src/test/data/csv/excel-export-utf8.csv");
+    private static final File TEST_CSV = new File("./src/test/data/csv/contract.csv");
+
+    @Test
+    public void shallParseCvsFile() throws IOException {
+        try (CSVParser parser = commonsCsvTool().parse(document(), DEFAULT.withHeader())) {
+            assertNotNull(parser);
+            assertEquals(32, parser.getHeaderMap().size());
+            assertEquals(22, parser.getRecords().size());
+        }
+    }
+
+    @Test
+    public void shallParseCvsString() throws IOException {
+        try (CSVParser parser = commonsCsvTool().parse(document().getText(), DEFAULT.withHeader())) {
+            assertNotNull(parser);
+            assertEquals(32, parser.getHeaderMap().size());
+            assertEquals(22, parser.getRecords().size());
+        }
+    }
+
+    @Test
+    public void shallGetKeysFromCsvRecords() throws IOException {
+        final CommonsCSVTool commonsCsvTool = commonsCsvTool();
+        final List<String> keys;
+
+        try (CSVParser parser = commonsCsvTool.parse(document(), DEFAULT.withHeader())) {
+            keys = commonsCsvTool.toKeys(parser.getRecords(), CONTRACT_ID);
+        }
+
+        assertEquals(7, keys.size());
+        assertEquals(7, keys.size());
+        assertEquals("C71", keys.get(0));
+        assertEquals("C72", keys.get(1));
+        assertEquals("C73", keys.get(2));
+        assertEquals("C74", keys.get(3));
+        assertEquals("C75", keys.get(4));
+        assertEquals("C76", keys.get(5));
+        assertEquals("C78", keys.get(6));
+    }
+
+    @Test
+    public void shallCreateMapFromCsvRecords() throws IOException {
+        final CommonsCSVTool commonsCsvTool = commonsCsvTool();
+        final Map<String, CSVRecord> map;
+
+        try (CSVParser parser = commonsCsvTool.parse(document(), DEFAULT.withHeader())) {
+            map = commonsCsvTool.toMap(parser.getRecords(), CONTRACT_ID);
+        }
+
+        assertEquals(7, map.size());
+        assertEquals(ANY_KEY, map.get(ANY_KEY).get(CONTRACT_ID_IDX));
+    }
+
+    @Test
+    public void shallCreateMultiMapFromCsvRecords() throws IOException {
+        final CommonsCSVTool commonsCsvTool = commonsCsvTool();
+        final Map<String, List<CSVRecord>> map;
+
+        try (CSVParser parser = commonsCsvTool.parse(document(), DEFAULT.withHeader())) {
+            map = commonsCsvTool.toMultiMap(parser.getRecords(), CONTRACT_ID);
+        }
+
+        assertEquals(7, map.size());
+        assertEquals(ANY_KEY, map.get(ANY_KEY).get(0).get(CONTRACT_ID_IDX));
+    }
+
+    @Test
+    public void shallPrintCsvRecords() throws IOException {
+        final CommonsCSVTool commonsCsvTool = commonsCsvTool();
+        final CSVFormat cvsFormat = DEFAULT.withHeader();
+        final Writer writer = new StringWriter();
+
+        try (CSVParser parser = commonsCsvTool.parse(document(), cvsFormat)) {
+            try (CSVPrinter printer = commonsCsvTool.printer(cvsFormat, writer)) {
+                printer.printRecord(parser.getHeaderMap());
+            }
+        }
+
+        assertTrue(writer.toString().contains(CONTRACT_ID));
+    }
+
+    @Test
+    public void shallStripBomFromCsvFile() throws IOException {
+        try (CSVParser parser = commonsCsvTool().parse(document(BOM_CSV), EXCEL.withHeader().withDelimiter(';'))) {
+            assertEquals("Text", parser.getHeaderNames().get(0));
+        }
+    }
+
+    @Test
+    public void shallConvertToCsvDelimiter() {
+        assertEquals(' ', commonsCsvTool().toDelimiter("space"));
+        assertEquals(' ', commonsCsvTool().toDelimiter("SPACE"));
+        assertEquals('^', commonsCsvTool().toDelimiter("^"));
+    }
+
+    private Document document() {
+        return document(TEST_CSV);
+    }
+
+    private Document document(File file) {
+        return DocumentFactory.create(file, UTF_8);
+    }
+
+    private CommonsCSVTool commonsCsvTool() {
+        return new CommonsCSVTool();
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/commonsexec/CommonsExecToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/commonsexec/CommonsExecToolTest.java
new file mode 100644
index 0000000..aa1ce62
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/commonsexec/CommonsExecToolTest.java
@@ -0,0 +1,52 @@
+/*
+ * 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.freemarker.generator.tools.commonsexec;
+
+import org.junit.Test;
+
+import java.util.Collections;
+
+import static junit.framework.TestCase.assertFalse;
+
+public class CommonsExecToolTest {
+
+    // The "date" command should work on all platforms
+    private static final String ANY_EXECUTABLE = "date";
+
+    @Test
+    public void shallExecuteCommand() {
+        final String result = commonsExecTool().execute(ANY_EXECUTABLE, Collections.emptyList());
+
+        assertFalse(result.isEmpty());
+    }
+
+    @Test
+    public void shallExecuteCommandLine() {
+        final String result = commonsExecTool().execute(ANY_EXECUTABLE);
+
+        assertFalse(result.isEmpty());
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void shallThrowExecptionForUnknownCommand() {
+        commonsExecTool().execute("does-not-exist");
+    }
+
+    private CommonsExecTool commonsExecTool() {
+        return new CommonsExecTool();
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/excel/ExcelToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/excel/ExcelToolTest.java
new file mode 100644
index 0000000..9003a38
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/excel/ExcelToolTest.java
@@ -0,0 +1,115 @@
+/*
+ * 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.freemarker.generator.tools.excel;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static junit.framework.TestCase.assertEquals;
+
+public class ExcelToolTest {
+
+    private final File TEST_XLS = new File("./src/test/data/excel/test.xls");
+    private final File TEST_XLSX = new File("./src/test/data/excel/test.xlsx");
+    private final File MULTIPLE_SHEETS_XSLX_FILE = new File("./src/test/data/excel/test-multiple-sheets.xlsx");
+
+    @Test
+    public void shallParseXlsFile() {
+        final Workbook workbook = workbook(TEST_XLS);
+
+        final List<Sheet> sheets = excelTool().getSheets(workbook);
+        final List<List<String>> records = excelTool().toTable(sheets.get(0));
+
+        assertEquals(1, sheets.size());
+        assertEquals(3, records.size());
+    }
+
+    @Test
+    public void shallParseXlsxFile() {
+        final Workbook workbook = workbook(TEST_XLSX);
+
+        final List<Sheet> sheets = excelTool().getSheets(workbook);
+        final List<List<String>> records = excelTool().toTable(sheets.get(0));
+
+        assertEquals(1, sheets.size());
+        assertEquals(3, records.size());
+    }
+
+    @Test
+    public void shallParseMultiSheetExcel() {
+        final Workbook workbook = workbook(MULTIPLE_SHEETS_XSLX_FILE);
+
+        final List<Sheet> sheets = excelTool().getSheets(workbook);
+
+        assertEquals(2, sheets.size());
+        assertEquals(3, excelTool().toTable(sheets.get(0)).size());
+        assertEquals(2, excelTool().toTable(sheets.get(1)).size());
+    }
+
+    @Test
+    public void shouldConvertSheetToTable() {
+        final Workbook workbook = workbook(TEST_XLSX);
+        final List<Sheet> sheets = excelTool().getSheets(workbook);
+        final List<List<String>> records = excelTool().toTable(sheets.get(0));
+
+        final List<String> record = records.get(1);
+
+        assertEquals("Row 1", record.get(0));
+        assertEquals("01/31/17", record.get(1));
+        assertEquals("100.00", record.get(2));
+        assertEquals("€100.00", record.get(3));
+        assertEquals("11:00", record.get(4));
+        assertEquals("10.00%", record.get(5));
+        assertEquals("C2*F2", record.get(6));
+    }
+
+    @Test
+    public void shouldConvertSheetToRawTable() {
+        final Workbook workbook = workbook(TEST_XLSX);
+        final List<Sheet> sheets = excelTool().getSheets(workbook);
+        final List<List<Object>> records = excelTool().toRawTable(sheets.get(0));
+
+        final List<Object> record = records.get(1);
+
+        assertEquals("Row 1", record.get(0));
+        assertEquals("2017-01-31", record.get(1).toString());
+        assertEquals(100.00, record.get(2));
+        assertEquals(100.00, record.get(2));
+        assertEquals("11:00", record.get(4).toString());
+        assertEquals(0.1, record.get(5));
+        assertEquals("C2*F2", record.get(6));
+    }
+
+    private Workbook workbook(File file) {
+        return excelTool().parse(document(file));
+    }
+
+    private ExcelTool excelTool() {
+        return new ExcelTool();
+    }
+
+    private Document document(File file) {
+        return DocumentFactory.create(file, UTF_8);
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerToolTest.java
new file mode 100644
index 0000000..d585945
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/freemarker/FreeMarkerToolTest.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.freemarker.generator.tools.freemarker;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertNotNull;
+
+public class FreeMarkerToolTest {
+
+    @Test
+    public void shallGetBeansWrapper() {
+        assertNotNull(freeMarkerTool().getBeansWrapper());
+    }
+
+    @Test
+    public void shallGetObjectConstructor() {
+        assertNotNull(freeMarkerTool().getObjectConstructor());
+    }
+
+    @Test
+    public void shallGetEnums() {
+        assertNotNull(freeMarkerTool().getEnums());
+    }
+
+    @Test
+    public void shallGetStatics() {
+        assertNotNull(freeMarkerTool().getStatics());
+    }
+
+    private FreeMarkerTool freeMarkerTool() {
+        return new FreeMarkerTool();
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/grok/GrokToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/grok/GrokToolTest.java
new file mode 100644
index 0000000..2bf21dc
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/grok/GrokToolTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.freemarker.generator.tools.grok;
+
+import org.junit.Test;
+
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+public class GrokToolTest {
+
+    private static final String LOG = "112.169.19.192 - - [06/Mar/2013:01:36:30 +0900] \"GET / HTTP/1.1\" 200 44346 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22\"";
+
+    @Test
+    public void shallParseCombinedAccessLog() {
+        final GrokWrapper grok = grokTool().compile("%{COMBINEDAPACHELOG}");
+
+        final Map<String, Object> map = grok.match(LOG);
+
+        assertEquals("GET", map.get("verb"));
+        assertEquals("06/Mar/2013:01:36:30 +0900", map.get("timestamp"));
+        assertEquals("44346", map.get("bytes"));
+        assertEquals("/", map.get("request"));
+        assertEquals("1.1", map.get("httpversion"));
+    }
+
+    private GrokTool grokTool() {
+        return new GrokTool();
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathToolTest.java
new file mode 100644
index 0000000..aaed1b5
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsonpath/JsonPathToolTest.java
@@ -0,0 +1,93 @@
+/*
+ * 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.freemarker.generator.tools.jsonpath;
+
+import com.jayway.jsonpath.DocumentContext;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNull;
+
+public class JsonPathToolTest {
+
+    private static final String JSON_OBJECT_STRING = "{\n" +
+            "\"id\": 110,\n" +
+            "\"language\": \"Python\",\n" +
+            "\"price\": 1900,\n" +
+            "}";
+
+    private static final String JSON_ARRAY_STRING = "{\n" +
+            "   \"eBooks\":[\n" +
+            "      {\n" +
+            "         \"language\":\"Pascal\",\n" +
+            "         \"edition\":\"third\"\n" +
+            "      },\n" +
+            "      {\n" +
+            "         \"language\":\"Python\",\n" +
+            "         \"edition\":\"four\"\n" +
+            "      },\n" +
+            "      {\n" +
+            "         \"language\":\"SQL\",\n" +
+            "         \"edition\":\"second\"\n" +
+            "      }\n" +
+            "   ]\n" +
+            "}";
+
+    private static final String JSON_WITH_COMMENTS = "{\n" +
+            "    // Single line comment\n" +
+            "    \"fruit\": \"Apple\",\n" +
+            "    \"size\": \"Large\",\n" +
+            "    \"color\": \"Red\"\n" +
+            "}";
+
+    @Test
+    public void shallParseJsonObject() {
+        final DocumentContext json = parse(JSON_OBJECT_STRING);
+
+        assertEquals(json.read("$.language"), "Python");
+        assertEquals(json.read("$['language']"), "Python");
+    }
+
+    @Test
+    public void shallParseJsonArray() {
+        final DocumentContext json = parse(JSON_ARRAY_STRING);
+
+        assertEquals(json.read("$.eBooks[0].language"), "Pascal");
+        assertEquals(json.read("$['eBooks'][0]['language']"), "Pascal");
+    }
+
+    @Test
+    public void failsToParseJsonComments() {
+        final DocumentContext json = parse(JSON_WITH_COMMENTS);
+
+        assertNull(json.read("$.fruit"));
+        assertEquals("Large", json.read("$.size"));
+    }
+
+    @Test
+    public void shallSuppressExceptionForUnknonwPath() {
+        assertNull(parse(JSON_OBJECT_STRING).read("$.unknown"));
+    }
+
+    private DocumentContext parse(String json) {
+        return jsonPathTool().parse(json);
+    }
+
+    private JsonPathTool jsonPathTool() {
+        return new JsonPathTool();
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java
new file mode 100644
index 0000000..a8f3a61
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/jsoup/JsoupToolTest.java
@@ -0,0 +1,59 @@
+/*
+ * 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.freemarker.generator.tools.jsoup;
+
+import org.jsoup.nodes.Document;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNull;
+
+public class JsoupToolTest {
+
+    private static final String ANY_HTML_CONTENT = "<!DOCTYPE html>\n" +
+            "<html lang=\"en\">\n" +
+            "  <head>\n" +
+            "    <meta charset=\"utf-8\">\n" +
+            "    <title>title</title>\n" +
+            "    <link rel=\"stylesheet\" href=\"style.css\">\n" +
+            "    <script src=\"script.js\"></script>\n" +
+            "  </head>\n" +
+            "  <body>\n" +
+            "    <h1>Hello World</h1>\n" +
+            "  </body>\n" +
+            "</html>";
+
+    @Test
+    public void shallParseStringHtmlContent() {
+        assertEquals("Hello World", parse(ANY_HTML_CONTENT).select("h1").first().text());
+    }
+
+    @Test
+    public void shallReturnNullForUndefinedCSSPath() {
+        assertNull(parse(ANY_HTML_CONTENT).select("h2").first());
+    }
+
+    private Document parse(String html) {
+        return jsoupTool().parse(html);
+    }
+
+    private JsoupTool jsoupTool() {
+        return new JsoupTool();
+    }
+
+
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/properties/PropertiesToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/properties/PropertiesToolTest.java
new file mode 100644
index 0000000..8e010e7
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/properties/PropertiesToolTest.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.freemarker.generator.tools.properties;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class PropertiesToolTest {
+
+    private static final String ANY_PROPERTIES_STRING = "foo=bar";
+
+    @Test
+    public void shallParsePropertiesDocument() {
+        try (Document document = document(ANY_PROPERTIES_STRING)) {
+            assertEquals("bar", propertiesTool().parse(document).getProperty("foo"));
+        }
+    }
+
+    @Test
+    public void shallParsePropertiesString() {
+        assertEquals("bar", propertiesTool().parse(ANY_PROPERTIES_STRING).getProperty("foo"));
+    }
+
+    private PropertiesTool propertiesTool() {
+        return new PropertiesTool();
+    }
+
+    private Document document(String value) {
+        return DocumentFactory.create("test.properties", value);
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlToolTest.java
new file mode 100644
index 0000000..4a522b6
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/snakeyaml/SnakeYamlToolTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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.freemarker.generator.tools.snakeyaml;
+
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class SnakeYamlToolTest {
+
+    private static final String ANY_YAML_STRING = "docker:\n" +
+            "    - image: ubuntu:14.04\n" +
+            "    - image: mongo:2.6.8\n" +
+            "      command: [mongod, --smallfiles]\n" +
+            "    - image: postgres:9.4.1";
+
+    @Test
+    public void shallParseYamlDocument() {
+        try (Document document = document(ANY_YAML_STRING)) {
+            final Map<String, Object> map = snakeYamlTool().parse(document);
+
+            assertEquals(1, map.size());
+            assertEquals(3, ((List<?>) map.get("docker")).size());
+        }
+    }
+
+    @Test
+    public void shallParseYamlString() {
+        final Map<String, Object> map = snakeYamlTool().parse(ANY_YAML_STRING);
+
+        assertEquals(1, map.size());
+        assertEquals(3, ((List<?>) map.get("docker")).size());
+    }
+
+    private SnakeYamlTool snakeYamlTool() {
+        return new SnakeYamlTool();
+    }
+
+    private Document document(String value) {
+        return DocumentFactory.create("test.yml", value);
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/system/SystemToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/system/SystemToolTest.java
new file mode 100644
index 0000000..46323be
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/system/SystemToolTest.java
@@ -0,0 +1,44 @@
+/*
+ * 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.freemarker.generator.tools.system;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+
+public class SystemToolTest {
+
+    @Test
+    public void shallGetProperties() {
+        assertFalse(systemTool().getSystemProperties().isEmpty());
+    }
+
+    @Test
+    public void shallGetEnvs() {
+        assertFalse(systemTool().getEnvs().isEmpty());
+    }
+
+    @Test
+    public void shallGetHostName() {
+        assertFalse(systemTool().getHostName().isEmpty());
+    }
+
+    private SystemTool systemTool() {
+        return new SystemTool();
+    }
+
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/uuid/UUIDToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/uuid/UUIDToolTest.java
new file mode 100644
index 0000000..5130240
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/uuid/UUIDToolTest.java
@@ -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.
+ */
+package org.apache.freemarker.generator.tools.uuid;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+
+public class UUIDToolTest {
+
+    @Test
+    public void shallCreateRandomUUID() {
+        assertNotNull(uuidTool().randomUUID());
+    }
+
+    @Test
+    public void shallCreateNamedUUID() {
+        assertEquals("b068931c-c450-342b-a3f5-b3d276ea4297", uuidTool().namedUUID("name").toString());
+    }
+
+    private UUIDTool uuidTool() {
+        return new UUIDTool();
+    }
+}
diff --git a/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/xml/XmlToolTest.java b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/xml/XmlToolTest.java
new file mode 100644
index 0000000..de69881
--- /dev/null
+++ b/freemarker-generator-tools/src/test/java/org/apache/freemarker/generator/tools/xml/XmlToolTest.java
@@ -0,0 +1,62 @@
+/*
+ * 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.freemarker.generator.tools.xml;
+
+import freemarker.ext.dom.NodeModel;
+import org.apache.freemarker.generator.base.document.Document;
+import org.apache.freemarker.generator.base.document.DocumentFactory;
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+
+public class XmlToolTest {
+
+    private static final String ANY_XML_STRING = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+            "<note>\n" +
+            "  <to>Tove</to>\n" +
+            "  <from>Jani</from>\n" +
+            "  <heading>Reminder</heading>\n" +
+            "  <body>Don't forget me this weekend!</body>\n" +
+            "</note>";
+
+    @Test
+    public void shallParseXmlDocument() throws Exception {
+        try (Document document = document(ANY_XML_STRING)) {
+            final NodeModel model = xmlTool().parse(document);
+
+            assertNotNull(model);
+            assertEquals(1, model.getChildNodes().size());
+        }
+    }
+
+    @Test
+    public void shallParseXmlString() throws Exception {
+        final NodeModel model = xmlTool().parse(ANY_XML_STRING);
+
+        assertNotNull(model);
+        assertEquals(1, model.getChildNodes().size());
+    }
+
+    private XmlTool xmlTool() {
+        return new XmlTool();
+    }
+
+    private Document document(String value) {
+        return DocumentFactory.create("test.xml", value);
+    }
+}
diff --git a/pom.xml b/pom.xml
index 7e826cb..e5a5d73 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,182 +1,271 @@
-<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/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+<?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
 
-  <groupId>org.apache.freemarker</groupId>
-  <artifactId>freemarker-generator-maven-plugin</artifactId>
-  <version>1.0.0-SNAPSHOT</version>
-  <packaging>maven-plugin</packaging>
+       http://www.apache.org/licenses/LICENSE-2.0
 
-  <name>Freemarker Generator Maven Plugin</name>
-  <url>http://freemarker.apache.org/</url>
+   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/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven-core.version>3.5.2</maven-core.version>
-    <maven-plugin-api.version>3.5.2</maven-plugin-api.version>
-    <maven-plugin-annotations.version>3.5</maven-plugin-annotations.version>
-    <fastutil.version>8.1.0</fastutil.version>
-    <freemarker.version>2.3.29</freemarker.version>
-    <gson.version>2.8.6</gson.version>
-    <jmockit.version>1.32</jmockit.version>
-    <org.testng.version>6.8</org.testng.version>
-    <assertj-core.version>3.8.0</assertj-core.version>
-    <clover-target-percentage>100</clover-target-percentage>
-    <clover-phase>pre-site</clover-phase>
-    <target-jdk-version>1.8</target-jdk-version>
-  </properties>
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>23</version>
+    </parent>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-core</artifactId>
-      <version>${maven-core.version}</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>com.google.guava</groupId>
-          <artifactId>guava</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-utils</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-plugin-api</artifactId>
-      <version>${maven-plugin-api.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.maven.plugin-tools</groupId>
-      <artifactId>maven-plugin-annotations</artifactId>
-      <version>${maven-plugin-annotations.version}</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.maven</groupId>
-          <artifactId>maven-artifact</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.sisu</groupId>
-      <artifactId>org.eclipse.sisu.plexus</artifactId>
-      <version>0.3.3</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.codehaus.plexus</groupId>
-          <artifactId>plexus-utils</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.jmockit</groupId>
-      <artifactId>jmockit</artifactId>
-      <version>${jmockit.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.google.code.gson</groupId>
-      <artifactId>gson</artifactId>
-      <version>${gson.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.freemarker</groupId>
-      <artifactId>freemarker</artifactId>
-      <version>${freemarker.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.testng</groupId>
-      <artifactId>testng</artifactId>
-      <version>${org.testng.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.assertj</groupId>
-      <artifactId>assertj-core</artifactId>
-      <version>${assertj-core.version}</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+    <groupId>org.apache.freemarker.generator</groupId>
+    <artifactId>freemarker-generator</artifactId>
+    <packaging>pom</packaging>
+    <version>0.1.0-SNAPSHOT</version>
+    <name>Apache FreeMarker Generator: Parent</name>
+    <url>https://freemarker.apache.org/</url>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.7.1</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <version>3.0.0</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.8.1</version>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-        <version>3.2.0</version>
-        <executions>
-          <execution>
-            <id>attach-sources</id>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-plugin-plugin</artifactId>
-        <version>3.6.0</version>
-        <configuration>
-          <goalPrefix>freemarker</goalPrefix>
-        </configuration>
-        <executions>
-          <execution>
-            <id>default-descriptor</id>
-            <goals>
-              <goal>descriptor</goal>
-            </goals>
-            <phase>process-classes</phase>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.openclover</groupId>
-        <artifactId>clover-maven-plugin</artifactId>
-        <version>4.2.0</version>
-        <executions>
-          <execution>
-            <id>clover</id>
-            <phase>${clover-phase}</phase>
-            <goals>
-              <goal>instrument-test</goal>
-              <goal>clover</goal>
-              <goal>check</goal>
-            </goals>
-            <configuration>
-              <targetPercentage>${clover-target-percentage}</targetPercentage>
-              <generateHtml>true</generateHtml>
-              <generateXml>true</generateXml>
-              <jdk>${target-jdk-version}</jdk>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
+    <issueManagement>
+        <system>jira</system>
+        <url>https://issues.apache.org/jira/browse/FREEMARKER/</url>
+    </issueManagement>
+
+    <mailingLists>
+        <mailingList>
+            <name>FreeMarker developer list</name>
+            <post>dev@freemarker.apache.org</post>
+            <subscribe>dev-subscribe@freemarker.apache.org</subscribe>
+            <unsubscribe>dev-unsubscribe@freemarker.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/freemarker-dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>FreeMarker commit and Jira notifications list</name>
+            <post>notifications@freemarker.apache.org</post>
+            <subscribe>notifications-subscribe@freemarker.apache.org</subscribe>
+            <unsubscribe>notifications-unsubscribe@freemarker.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/freemarker-notifications/</archive>
+        </mailingList>
+        <mailingList>
+            <name>FreeMarker management private</name>
+            <post>private@freemarker.apache.org</post>
+        </mailingList>
+    </mailingLists>
+
+    <scm>
+        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/freemarker-generator.git</connection>
+        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/freemarker-generator.git
+        </developerConnection>
+        <url>https://git-wip-us.apache.org/repos/asf?p=freemarker-generator.git</url>
+        <tag />
+    </scm>
+
+    <modules>
+        <module>freemarker-generator-base</module>
+        <module>freemarker-generator-tools</module>
+        <module>freemarker-generator-cli</module>
+        <module>freemarker-generator-maven-plugin</module>
+    </modules>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <freemarker.version>2.3.29</freemarker.version>
+    </properties>
+
+    <developers>
+        <developer>
+            <name>Siegfried Goeschl</name>
+            <organization>ASF</organization>
+            <organizationUrl>https://github.com/sgoeschl</organizationUrl>
+        </developer>
+    </developers>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.freemarker</groupId>
+                <artifactId>freemarker</artifactId>
+                <version>${freemarker.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>2.6</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.activation</groupId>
+                <artifactId>activation</artifactId>
+                <version>1.1.1</version>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>1.7.28</version>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-simple</artifactId>
+                <version>1.7.28</version>
+            </dependency>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.13</version>
+                <scope>test</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <artifactId>maven-antrun-plugin</artifactId>
+                    <version>1.8</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-assembly-plugin</artifactId>
+                    <version>3.2.0</version>                    
+                </plugin>
+                <plugin>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>3.1.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>3.8.1</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-gpg-plugin</artifactId>
+                    <version>1.6</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>3.0.0-M1</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <version>3.1.1</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-plugin-plugin</artifactId>
+                    <version>3.6.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-pmd-plugin</artifactId>
+                    <version>3.12.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-project-info-reports-plugin</artifactId>
+                    <version>3.0.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>2.5.3</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>3.1.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>3.7.1</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>3.2.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>2.19</version>
+                    <configuration>
+                        <useSystemClassLoader>false</useSystemClassLoader>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>appassembler-maven-plugin</artifactId>
+                    <version>1.10</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.openclover</groupId>
+                    <artifactId>clover-maven-plugin</artifactId>
+                    <version>4.2.0</version>
+                </plugin>
+                <plugin>
+                    <groupId>pl.project13.maven</groupId>
+                    <artifactId>git-commit-id-plugin</artifactId>
+                    <version>2.2.6</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.13</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>${maven.compiler.source}</source>
+                    <target>${maven.compiler.target}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <arguments>-Dmaven.javadoc.skip=true</arguments>
+                    <autoVersionSubmodules>true</autoVersionSubmodules>
+                    <localCheckout>true</localCheckout>
+                    <releaseProfiles>release</releaseProfiles>
+                    <pushChanges>false</pushChanges>
+                    <goals>deploy</goals>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-source-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <configuration>
+                    <linkXRef>false</linkXRef>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>*.md</exclude>
+                        <excludde>**/*.json</excludde>
+                        <excludde>**/*.csv</excludde>
+                    </excludes>
+                </configuration>
+            </plugin>            
+        </plugins>
+    </reporting>
+</project>
\ No newline at end of file
diff --git a/src/main/java/org/apache/freemarker/generator/FreeMarkerMojo.java b/src/main/java/org/apache/freemarker/generator/FreeMarkerMojo.java
deleted file mode 100644
index 5b0454a..0000000
--- a/src/main/java/org/apache/freemarker/generator/FreeMarkerMojo.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import java.io.File;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-
-import freemarker.cache.FileTemplateLoader;
-import freemarker.template.Configuration;
-
-@Mojo(name = "generate", defaultPhase = LifecyclePhase.GENERATE_SOURCES)
-public class FreeMarkerMojo extends AbstractMojo {
-
-  /** FreeMarker version string used to build FreeMarker Configuration instance. */
-  @Parameter
-  private String freeMarkerVersion;
-
-  @Parameter(defaultValue = "src/main/freemarker/generator")
-  private File sourceDirectory;
-
-  @Parameter(defaultValue = "src/main/freemarker/generator/template")
-  private File templateDirectory;
-
-  @Parameter(defaultValue = "src/main/freemarker/generator/generator")
-  private File generatorDirectory;
-
-  @Parameter(defaultValue = "target/generated-sources/freemarker/generator")
-  private File outputDirectory;
-
-  @Parameter(defaultValue = "${session}", readonly = true)
-  private MavenSession session;
-
-  @Parameter(defaultValue = "${mojoExecution}", readonly = true)
-  private MojoExecution mojo;
-
-  @Override
-  public void execute() throws MojoExecutionException, MojoFailureException {
-
-    if (freeMarkerVersion == null || freeMarkerVersion.length() == 0) {
-      throw new MojoExecutionException("freeMarkerVersion is required");
-    }
-
-    if (!generatorDirectory.isDirectory()) {
-      throw new MojoExecutionException("Required directory does not exist: " + generatorDirectory);
-    }
-
-    Configuration config = FactoryUtil.createConfiguration(freeMarkerVersion);
-
-    config.setDefaultEncoding("UTF-8");
-
-    if (!templateDirectory.isDirectory()) {
-      throw new MojoExecutionException("Required directory does not exist: " + templateDirectory);
-    }
-    try {
-      config.setTemplateLoader(new FileTemplateLoader(templateDirectory));
-    } catch (Throwable t) {
-      getLog().error("Could not establish file template loader for directory: " + templateDirectory, t);
-      throw new MojoExecutionException("Could not establish file template loader for directory: " + templateDirectory);
-    }
-
-    File freeMarkerProps = FactoryUtil.createFile(sourceDirectory, "freemarker.properties");
-    if (freeMarkerProps.isFile()) {
-      Properties configProperties = new Properties();
-      try (InputStream is = FactoryUtil.createFileInputStream(freeMarkerProps)) {
-        configProperties.load(is);
-      } catch (Throwable t) {
-        getLog().error("Failed to load " + freeMarkerProps, t);
-        throw new MojoExecutionException("Failed to load " + freeMarkerProps);
-      }
-      try {
-        config.setSettings(configProperties);
-      } catch (Throwable t) {
-        getLog().error("Invalid setting(s) in " + freeMarkerProps, t);
-        throw new MojoExecutionException("Invalid setting(s) in " + freeMarkerProps);
-      }
-    }
-    
-    if ("generate-sources".equals(mojo.getLifecyclePhase())) {
-      session.getCurrentProject().addCompileSourceRoot(outputDirectory.toString());
-    } else if ("generate-test-sources".equals(mojo.getLifecyclePhase())) {
-      session.getCurrentProject().addTestCompileSourceRoot(outputDirectory.toString());
-    }
-
-    Map<String, OutputGeneratorPropertiesProvider> extensionToBuilders = new HashMap<>(1);
-    extensionToBuilders.put(".json", JsonPropertiesProvider.create(generatorDirectory,templateDirectory,outputDirectory));
-
-    GeneratingFileVisitor fileVisitor = GeneratingFileVisitor.create(config, session, extensionToBuilders);
-    try {
-      Files.walkFileTree(generatorDirectory.toPath(), fileVisitor);
-    } catch (Throwable t) {
-      getLog().error("Failed to process files in generator dir: " + generatorDirectory, t);
-      throw new MojoExecutionException("Failed to process files in generator dir: " + generatorDirectory);
-    }
-  }
-}
diff --git a/src/main/java/org/apache/freemarker/generator/GeneratingFileVisitor.java b/src/main/java/org/apache/freemarker/generator/GeneratingFileVisitor.java
deleted file mode 100644
index a130257..0000000
--- a/src/main/java/org/apache/freemarker/generator/GeneratingFileVisitor.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import java.nio.file.FileVisitResult;
-import java.nio.file.Path;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.Map;
-
-import org.apache.maven.execution.MavenSession;
-
-import freemarker.template.Configuration;
-
-/**
- * FileVisitor designed to process json data files. The json file parsed into
- * a map and given to FreeMarker to 
- */
-public class GeneratingFileVisitor extends SimpleFileVisitor<Path> {
-
-  private final Configuration config;
-  private final MavenSession session;
-  private final long pomLastModifiedTimestamp;
-  private final Map<String, OutputGeneratorPropertiesProvider > extensionToBuilder;
-
-  private GeneratingFileVisitor(Configuration config, MavenSession session, Map<String, OutputGeneratorPropertiesProvider> extensionToBuilder) {
-    this.config = config;
-    this.session = session;
-    this.extensionToBuilder = extensionToBuilder;
-    this.pomLastModifiedTimestamp = session.getAllProjects().stream()
-        .map(project->project.getFile().lastModified())
-        .reduce(Long::max)
-        .orElse(0L);
-  }
-
-  /**
-   * Factory method that calls constructor, added to facilitate testing with jmockit.
-   */
-  public static GeneratingFileVisitor create(Configuration config, MavenSession session, Map<String, OutputGeneratorPropertiesProvider> extensionToBuilder) {
-    return new GeneratingFileVisitor(config, session, extensionToBuilder);
-  }
-
-  @Override
-  public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) {
-    if (attrs.isRegularFile()) {
-      OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder()
-          .addGeneratorLocation(path)
-          .addPomLastModifiedTimestamp(pomLastModifiedTimestamp);
-      String fileName = path.getFileName().toString();
-      String extenstion = fileName.substring(fileName.lastIndexOf('.'));
-      OutputGeneratorPropertiesProvider pathProcessor = extensionToBuilder.get(extenstion);
-      if (pathProcessor == null) {
-        throw new RuntimeException("Unknown file extension: " + path);
-      }
-      pathProcessor.providePropertiesFromFile(path, builder);
-      builder.addToDataModel("pomProperties", session.getCurrentProject().getProperties());
-      builder.create().generate(config);
-    }
-    return FileVisitResult.CONTINUE;
-  }
-}
diff --git a/src/main/java/org/apache/freemarker/generator/JsonPropertiesProvider.java b/src/main/java/org/apache/freemarker/generator/JsonPropertiesProvider.java
deleted file mode 100644
index ea9e678..0000000
--- a/src/main/java/org/apache/freemarker/generator/JsonPropertiesProvider.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.reflect.TypeToken;
-import com.google.gson.stream.JsonReader;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.lang.reflect.Type;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
-
-public class JsonPropertiesProvider implements OutputGeneratorPropertiesProvider {
-	private final Gson gson;
-	private final Type stringObjectMap;
-	private final File dataDir;
-	private final File templateDir;
-	private final File outputDir;
-
-	private JsonPropertiesProvider(File dataDir, File templateDir, File outputDir) {
-		this.dataDir = dataDir;
-		this.templateDir = templateDir;
-		this.outputDir = outputDir;
-		gson = new GsonBuilder().setLenient().create();
-		stringObjectMap = new TypeToken<Map<String, Object>>() { } .getType();
-	}
-
-	public static JsonPropertiesProvider create(File dataDir, File templateDir, File outputDir) {
-		return new JsonPropertiesProvider(dataDir, templateDir, outputDir);
-	}
-
-	@Override
-	public void providePropertiesFromFile(Path path, OutputGenerator.OutputGeneratorBuilder builder) {
-		File jsonDataFile = path.toFile();
-		Map<String,Object> data = parseJson(jsonDataFile);
-
-		Object obj = data.get("dataModel");
-		if (obj != null) {
-			builder.addDataModel((Map<String, Object>) obj);
-		} else {
-			builder.addDataModel(new HashMap<String,Object>());
-		}
-
-		obj = data.get("templateName");
-		if (obj == null) {
-			throw new RuntimeException("Require json data property not found: templateName");
-		}
-		builder.addTemplateLocation(templateDir.toPath().resolve(obj.toString()));
-
-		String dataDirName = dataDir.getAbsolutePath();
-		String jsonFileName = jsonDataFile.getAbsolutePath();
-		if (!jsonFileName.startsWith(dataDirName)) {
-			throw new IllegalStateException("visitFile() given file not in sourceDirectory: " + jsonDataFile);
-		}
-
-		String outputFileName = jsonFileName.substring(dataDirName.length()+1);
-		outputFileName = outputFileName.substring(0, outputFileName.length() - 5);
-		Path outputPath = outputDir.toPath();
-		Path resolved = outputPath.resolve(outputFileName);
-		builder.addOutputLocation(resolved);
-	}
-
-	private Map<String, Object> parseJson(File jsonDataFile) {
-		try (JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(jsonDataFile), "UTF-8"))) {
-			return gson.fromJson(reader, stringObjectMap);
-		} catch (Throwable t) {
-			throw new RuntimeException("Could not parse json data file: " + jsonDataFile, t);
-		}
-	}
-}
diff --git a/src/main/java/org/apache/freemarker/generator/OutputGenerator.java b/src/main/java/org/apache/freemarker/generator/OutputGenerator.java
deleted file mode 100644
index e639392..0000000
--- a/src/main/java/org/apache/freemarker/generator/OutputGenerator.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import freemarker.template.Configuration;
-import freemarker.template.Template;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Knows how to generate an output file given five things:
- * <ul>
- * <li>The latest update time of the <b>pom file(s)</b> for the project</li>
- * <li>The location of the <b>generator file</b></li>
- * <li>The location of the <b>template file</b></li>
- * <li>The location of the <b>output file</b></li>
- * <li>A <b>data model<b> used to fill out the template.</li>
- * </ul>
- *<p>Given these five pieces of information, the generator will generate a new output file, but only if any existing
- * generated file is not newer than the inputs (pom, generator, and template).</p>
- */
-class OutputGenerator {
-	public final long pomModifiedTimestamp;
-	public final Path generatorLocation;
-	public final Path templateLocation;
-	public final Path outputLocation;
-	public final Map<String,Object> dataModel;
-	private OutputGenerator(
-		 long pomModifiedTimestamp,
-		 Path generatorLocation,
-		 Path templateLocation,
-		 Path outputLocation,
-		 Map<String, Object> dataModel) {
-		this.pomModifiedTimestamp = pomModifiedTimestamp;
-		this.generatorLocation = generatorLocation;
-		this.templateLocation = templateLocation;
-		this.outputLocation = outputLocation;
-		this.dataModel = dataModel;
-	}
-
-	/**
-	 * Uses a fluent builder to make the code more legible in place.
-	 * Also allows the output generator to be built from multiple locations in source by passing the builder.
-	 * @return A new fluent builder for the OutputGenerator class.
-	 */
-	public static OutputGeneratorBuilder builder() {
-		return new OutputGeneratorBuilder();
-	}
-
-	public static class OutputGeneratorBuilder {
-		private long pomModifiedTimestamp = Long.MAX_VALUE;
-		private Path generatorLocation = null;
-		private Path templateLocation = null;
-		private Path outputLocation = null;
-		private Map<String,Object> dataModel = null;
-
-		public OutputGeneratorBuilder addPomLastModifiedTimestamp(long pomModifiedTimestamp) {
-			this.pomModifiedTimestamp = pomModifiedTimestamp;
-			return this;
-		}
-
-		public OutputGeneratorBuilder addGeneratorLocation(Path generatorLocation) {
-			this.generatorLocation = generatorLocation;
-			return this;
-		}
-
-		public OutputGeneratorBuilder addTemplateLocation(Path templateLocation) {
-			this.templateLocation = templateLocation;
-			return this;
-		}
-
-		public OutputGeneratorBuilder addOutputLocation(Path outputLocation) {
-			this.outputLocation = outputLocation;
-			return this;
-		}
-
-		public OutputGeneratorBuilder addDataModel(Map<String,Object> dataModel) {
-			this.dataModel = dataModel;
-			return this;
-		}
-
-		public OutputGeneratorBuilder addToDataModel(String key, Object val) {
-			if (this.dataModel == null) {
-				this.dataModel = new HashMap<>(4);
-			}
-			this.dataModel.put(key,val);
-			return this;
-		}
-
-		/**
-		 * @throws IllegalStateException if any of the parts of the OutputGenerator were not set.
-		 * @return A new output generator (which is immutable).
-		 */
-		public OutputGenerator create() {
-			if (pomModifiedTimestamp == Long.MAX_VALUE) throw new IllegalStateException("Must set the pomModifiedTimestamp");
-			if (generatorLocation == null) throw new IllegalStateException("Must set a non-null generatorLocation");
-			if (templateLocation == null) throw new IllegalStateException("Must set a non-null templateLocation");
-			if (outputLocation == null) throw new IllegalStateException("Must set a non-null outputLocation");
-			if (dataModel == null) throw new IllegalStateException("Must set a non-null dataModel");
-			return new OutputGenerator(pomModifiedTimestamp, generatorLocation, templateLocation, outputLocation, dataModel);
-		}
-	}
-
-	/**
-	 * <p>Generates an output by applying the model to the template.</p>
-	 * <p>Checks the ages of the inputs against an existing output file to early exit if there is no update.</p>
-	 * @param config Used to load the template from the template name.
-	 */
-	public void generate(Configuration config) {
-		//Use "createFile" for testing purposes only
-		File outputFile = FactoryUtil.createFile(outputLocation.toFile().toString());
-		File templateFile = templateLocation.toFile();
-		File generatorFile = generatorLocation.toFile();
-		if (outputFile.exists()) {
-			//early exit only if the output file is newer than all files that contribute to its generation
-			if (outputFile.lastModified() > generatorFile.lastModified()
-				 && outputFile.lastModified() > templateFile.lastModified()
-				 && outputFile.lastModified() > pomModifiedTimestamp) {
-				return;
-			}
-		} else {
-			File parentDir = outputFile.getParentFile();
-			if (parentDir.isFile()) {
-				throw new RuntimeException("Parent directory of output file is a file: " + parentDir.getAbsoluteFile());
-			}
-			parentDir.mkdirs();
-			if (!parentDir.isDirectory()) {
-				throw new RuntimeException("Could not create directory: " + parentDir.getAbsoluteFile());
-			}
-		}
-
-		Template template;
-		try {
-			template = config.getTemplate(templateFile.getName());
-		} catch (Throwable t) {
-			throw new RuntimeException("Could not read template: " + templateFile.getName(), t);
-		}
-
-		try (FileWriter writer = new FileWriter(outputFile)) {
-			template.process(dataModel, writer);
-		} catch (Throwable t) {
-			throw new RuntimeException("Could not process template associated with data file: " + generatorLocation, t);
-		}
-	}
-}
diff --git a/src/test/data/freemarker-mojo/freemarker.properties b/src/test/data/freemarker-mojo/freemarker.properties
deleted file mode 100644
index 17cefa1..0000000
--- a/src/test/data/freemarker-mojo/freemarker.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Test properties file used by FreeMarkerMojoTest to verify FreeMarkerMojo
-# passes these settings to the FreeMarker configuration.
-boolean_format: T,F
\ No newline at end of file
diff --git a/src/test/data/freemarker-mojo/template/test.ftl b/src/test/data/freemarker-mojo/template/test.ftl
deleted file mode 100644
index 6986c80..0000000
--- a/src/test/data/freemarker-mojo/template/test.ftl
+++ /dev/null
@@ -1 +0,0 @@
-This is a dummy test file. It is only here to make sure the directory exists.
\ No newline at end of file
diff --git a/src/test/data/generating-file-visitor/template/test-pom-only.ftl b/src/test/data/generating-file-visitor/template/test-pom-only.ftl
deleted file mode 100644
index 7168154..0000000
--- a/src/test/data/generating-file-visitor/template/test-pom-only.ftl
+++ /dev/null
@@ -1 +0,0 @@
-This is a test freemarker template. Test pom data: '${pomProperties.pomVar}'.
diff --git a/src/test/data/generating-file-visitor/template/test.ftl b/src/test/data/generating-file-visitor/template/test.ftl
deleted file mode 100644
index 1edee95..0000000
--- a/src/test/data/generating-file-visitor/template/test.ftl
+++ /dev/null
@@ -1 +0,0 @@
-This is a test freemarker template. Test json data: '${testVar}'. Test pom data: '${pomProperties.pomVar}'.
\ No newline at end of file
diff --git a/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java b/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java
deleted file mode 100644
index 31281fb..0000000
--- a/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.FileVisitor;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-import org.junit.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import freemarker.cache.FileTemplateLoader;
-import freemarker.cache.TemplateLoader;
-import freemarker.template.Configuration;
-import mockit.Deencapsulation;
-import mockit.Expectations;
-import mockit.Mocked;
-import mockit.Verifications;
-
-public class FreeMarkerMojoTest extends Assert {
-
-  private static final File TEST_OUTPUT_DIR = new File("target/test-output/freemarker-mojo");
-  private static final String FREEMARKER_VERSION = "2.3.29";
-  
-  @BeforeClass
-  public static void beforeClass() throws IOException {
-    // Clean output dir before each run.
-    if (TEST_OUTPUT_DIR.exists()) {
-      // Recursively delete output from previous run.
-      Files.walk(TEST_OUTPUT_DIR.toPath())
-       .sorted(Comparator.reverseOrder())
-       .map(Path::toFile)
-       .forEach(File::delete);
-    }
-  }
-
-  @Test
-  public void executeTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked GeneratingFileVisitor generatingFileVisitor,
-      @Mocked Files files
-      ) throws MojoExecutionException, MojoFailureException, IOException {
-
-    new Expectations(mojoExecution, generatingFileVisitor) {{
-      mojoExecution.getLifecyclePhase(); result = "generate-sources";
-      session.getCurrentProject(); result = project;
-    }};
-
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-    
-    // Validate freeMarkerVersion is required.
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("freeMarkerVersion is required");
-    
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "");
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("freeMarkerVersion is required");
-
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "executeTest");
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
-    Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    // Validate source directory.
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("Required directory does not exist: target/test-output/freemarker-mojo/executeTest/data");
-    
-    new File(testCaseOutputDir, "data").mkdirs();
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("Required directory does not exist: target/test-output/freemarker-mojo/executeTest/template");
-    new File(testCaseOutputDir, "template").mkdirs();
-    
-    // Validate minimum configuration.
-    mojo.execute();
-    
-    new Verifications() {{
-      project.addCompileSourceRoot("target/test-output/freemarker-mojo/executeTest/generated-files"); times = 1;
-
-      Configuration config;
-      MavenSession capturedSession;
-      Map<String, OutputGeneratorPropertiesProvider> builders;
-
-      GeneratingFileVisitor.create(
-          config = withCapture(), 
-          capturedSession = withCapture(), 
-          builders = withCapture()); times = 1;
-
-      assertEquals("UTF-8", config.getDefaultEncoding());
-      assertEquals(session, capturedSession);
-      TemplateLoader loader = config.getTemplateLoader();
-      assertTrue(loader instanceof FileTemplateLoader);
-
-      Path path;
-      FileVisitor<Path> fileVisitor;
-      
-      Files.walkFileTree(path = withCapture(), fileVisitor = withCapture()); times = 1;
-      
-      assertEquals(new File(testCaseOutputDir, "data").toPath(), path);
-      assertTrue(fileVisitor instanceof GeneratingFileVisitor);
-    }};
-  }
-  
-  @Test
-  public void execute_generateTestSourceTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked GeneratingFileVisitor generatingFileVisitor,
-      @Mocked Files files
-      ) throws MojoExecutionException, MojoFailureException, IOException {
-
-    new Expectations(mojoExecution, generatingFileVisitor) {{
-      mojoExecution.getLifecyclePhase(); result = "generate-test-sources";
-      session.getCurrentProject(); result = project;
-    }};
-
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-    
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest");
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
-    Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    new File(testCaseOutputDir, "data").mkdirs();
-    new File(testCaseOutputDir, "template").mkdirs();
-    
-    mojo.execute();
-    
-    new Verifications() {{
-      project.addTestCompileSourceRoot("target/test-output/freemarker-mojo/generateTestSourceTest/generated-files"); times = 1;
-    }};
-  }
-
-  @SuppressWarnings({"rawtypes", "unchecked"})
-  @Test
-  public void execute_walkFileTreeExceptionTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked GeneratingFileVisitor generatingFileVisitor,
-      @Mocked Files files
-      ) throws MojoExecutionException, MojoFailureException, IOException {
-
-    new Expectations(mojoExecution, generatingFileVisitor) {{
-      mojoExecution.getLifecyclePhase(); result = "generate-test-sources";
-      session.getCurrentProject(); result = project;
-      Files.walkFileTree((Path) any,(FileVisitor) any); result = new RuntimeException("test exception");
-    }};
-
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-    
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest");
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
-    Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    new File(testCaseOutputDir, "data").mkdirs();
-    new File(testCaseOutputDir, "template").mkdirs();
-    
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("Failed to process files in generator dir: target/test-output/freemarker-mojo/generateTestSourceTest/data");
-  }
-  
-  @Test
-  public void execute_setTemplateLoaderExceptionTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked FactoryUtil factoryUtil,
-      @Mocked Configuration config) {
-    
-    new Expectations(config, FactoryUtil.class) {{
-      FactoryUtil.createConfiguration(FREEMARKER_VERSION); result = config;
-      config.setTemplateLoader((TemplateLoader) any); result = new RuntimeException("test exception");
-    }};
-
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "setTemplateLoaderException");
-
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
-    Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    new File(testCaseOutputDir, "data").mkdirs();
-    new File(testCaseOutputDir, "template").mkdirs();
-
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("Could not establish file template loader for directory: target/test-output/freemarker-mojo/setTemplateLoaderException/template");
-  }
-  
-  @Test
-  public void execute_loadFreemarkerPropertiesTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked Configuration config) throws Exception {
-    
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-
-    File sourceDirectory = new File("src/test/data/freemarker-mojo");
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties");
-
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
-    Deencapsulation.setField(mojo, "templateDirectory", new File( sourceDirectory, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File( sourceDirectory, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    mojo.execute();
-    
-    new Verifications() {{
-      Properties properties;
-      
-      config.setSettings(properties = withCapture()); times = 1;
-      
-      assertEquals("T,F", properties.getProperty("boolean_format"));
-    }};
-  }
-  
-  @Test
-  public void execute_loadFreemarkerPropertiesExceptionTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked FactoryUtil factoryUtil,
-      @Mocked Configuration config) throws Exception {
-    
-    new Expectations(FactoryUtil.class) {{
-      FactoryUtil.createFileInputStream((File) any); result = new RuntimeException("test exception");
-    }};
-    
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-
-    File sourceDirectory = new File("src/test/data/freemarker-mojo");
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerPropertiesExceptionTest");
-
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
-    Deencapsulation.setField(mojo, "templateDirectory", new File( sourceDirectory, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File( sourceDirectory, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    System.out.println("==== before mojo execute");
-    try {
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("Failed to load src/test/data/freemarker-mojo/freemarker.properties");
-    } catch ( Throwable t) {
-      t.printStackTrace();
-    }
-  }
-
-  @Test
-  public void execute_setSettingsExceptionTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked MojoExecution mojoExecution,
-      @Mocked Configuration config) throws Exception {
-    
-    new Expectations() {{
-      config.setSettings((Properties) any); result = new RuntimeException("test exception");
-    }};
-    
-    FreeMarkerMojo mojo = new FreeMarkerMojo();
-
-    File sourceDirectory = new File("src/test/data/freemarker-mojo");
-    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties");
-
-    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
-    Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
-    Deencapsulation.setField(mojo, "templateDirectory", new File( sourceDirectory, "template"));
-    Deencapsulation.setField(mojo, "generatorDirectory", new File( sourceDirectory, "data"));
-    Deencapsulation.setField(mojo, "outputDirectory", new File(testCaseOutputDir, "generated-files"));
-    Deencapsulation.setField(mojo, "mojo", mojoExecution);
-    Deencapsulation.setField(mojo, "session", session);
-
-    assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> {
-      mojo.execute();
-    }).withMessage("Invalid setting(s) in src/test/data/freemarker-mojo/freemarker.properties");
-  }
-  
-}
diff --git a/src/test/java/org/apache/freemarker/generator/GeneratingFileVisitorTest.java b/src/test/java/org/apache/freemarker/generator/GeneratingFileVisitorTest.java
deleted file mode 100644
index 8770a27..0000000
--- a/src/test/java/org/apache/freemarker/generator/GeneratingFileVisitorTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.*;
-
-import org.apache.maven.execution.MavenSession;
-import org.apache.maven.project.MavenProject;
-import org.junit.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import freemarker.cache.FileTemplateLoader;
-import freemarker.template.Configuration;
-import mockit.Expectations;
-import mockit.Mocked;
-
-public class GeneratingFileVisitorTest extends Assert {
-
-  private static File testDir = new File("src/test/data/generating-file-visitor");
-  private static File dataDir = new File(testDir, "data");
-  private static File templateDir = new File(testDir, "template");
-  private static File outputDir = new File("target/test-output/generating-file-visitor");
-  private static Map<String, OutputGeneratorPropertiesProvider> builders = new HashMap<>();
-  private Configuration config;
-  private Properties pomProperties = new Properties();
-  
-  @BeforeClass
-  public static void beforeClass() throws IOException {
-  	 builders.put(".json", JsonPropertiesProvider.create(dataDir,templateDir,outputDir));
-    // Clean output dir before each run.
-    File outputDir = new File("target/test-output/generating-file-visitor");
-    if (outputDir.exists()) {
-      // Recursively delete output from previous run.
-      Files.walk(outputDir.toPath())
-       .sorted(Comparator.reverseOrder())
-       .map(Path::toFile)
-       .forEach(File::delete);
-    }
-  }
-
-  @BeforeMethod
-  public void before() throws IOException {
-    if (!testDir.isDirectory()) {
-      throw new RuntimeException("Can't find required test data directory. "
-          + "If running test outside of maven, make sure working directory is the project directory. "
-          + "Looking for: " + testDir);
-    }
-
-    config = new Configuration(Configuration.VERSION_2_3_23);
-    config.setDefaultEncoding("UTF-8");
-    config.setTemplateLoader(new FileTemplateLoader(templateDir));
-    pomProperties.put("pomVar", "pom value");
-  }
-  
-  @Test
-  public void functionalHappyPathTestNoDataModel(
-      @Mocked MavenSession session, 
-      @Mocked MavenProject project,
-      @Mocked File mockFile,
-      @Mocked BasicFileAttributes attrs) throws IOException {
-    List<MavenProject> projects = new ArrayList<>();
-    projects.add(project);
-    new Expectations(session, project, mockFile) {{
-      session.getCurrentProject(); result = project;
-      session.getAllProjects(); result = projects;
-      project.getProperties(); result = pomProperties;
-      attrs.isRegularFile(); result = true;
-      project.getFile(); result = mockFile;
-      mockFile.lastModified(); result = 10;
-    }};
-    
-    File file = new File(dataDir, "mydir/success-test-2.txt.json");
-    GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
-    assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), attrs));
-    
-    File outputFile = new File(outputDir, "mydir/success-test-2.txt");
-    assertTrue(outputFile.isFile());
-    List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8);
-    assertEquals(1, lines.size());
-    assertEquals("This is a test freemarker template. Test pom data: 'pom value'.", lines.get(0));
-  }
-
-  @Test
-  public void functionalHappyPathTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked File mockFile,
-      @Mocked BasicFileAttributes attrs) throws IOException {
-    List<MavenProject> projects = new ArrayList<>();
-    projects.add(project);
-    new Expectations(session, project, mockFile) {{
-      session.getCurrentProject(); result = project;
-      session.getAllProjects(); result = projects;
-      project.getProperties(); result = pomProperties;
-      attrs.isRegularFile(); result = true;
-      project.getFile(); result = mockFile;
-      mockFile.lastModified(); result = 10;
-    }};
-
-    File file = new File(dataDir, "mydir/success-test.txt.json");
-    GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
-    assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), attrs));
-
-    File outputFile = new File(outputDir, "mydir/success-test.txt");
-    assertTrue(outputFile.isFile());
-    List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8);
-    assertEquals(1, lines.size());
-    assertEquals("This is a test freemarker template. Test json data: 'test value'. Test pom data: 'pom value'.", lines.get(0));
-  }
-
-  @Test
-  public void visitFile_badExtensionTest(
-      @Mocked MavenSession session,
-      @Mocked MavenProject project,
-      @Mocked File mockFile,
-      @Mocked BasicFileAttributes attrs) throws IOException {
-    List<MavenProject> projects = new ArrayList<>();
-    projects.add(project);
-    new Expectations(session, project, mockFile) {{
-      attrs.isRegularFile(); result = true;
-      session.getAllProjects(); result = projects;
-      project.getFile(); result = mockFile;
-      mockFile.lastModified(); result = 10;
-    }};
-    // Test file without .json suffix.
-    File file = new File(dataDir, "mydir/bad-extension-test.txt");
-    GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
-    assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-      gfv.visitFile(file.toPath(), attrs);
-    }).withMessage("Unknown file extension: " + file.toPath());
-  }
-
-  @Test 
-  public void visitFile_notRegularFileTest(@Mocked MavenSession session,
-                                           @Mocked MavenProject project,
-                                           @Mocked BasicFileAttributes attrs,
-                                           @Mocked File mockFile
-                                           ) {
-    List<MavenProject> projects = new ArrayList<>();
-    projects.add(project);
-    new Expectations(session, project, mockFile) {{
-      attrs.isRegularFile(); result = false;
-      session.getAllProjects(); result = projects;
-      project.getFile(); result = mockFile;
-      mockFile.lastModified(); result = 10;
-    }};
-    // FYI: if you change above result to true, test will fail trying to read the 'mydir' directory
-    // as a json file.
-    File dir = new File(dataDir, "mydir");
-    GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders);
-    assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(dir.toPath(), attrs));
-  }
-}
diff --git a/src/test/java/org/apache/freemarker/generator/JsonPropertiesProviderTest.java b/src/test/java/org/apache/freemarker/generator/JsonPropertiesProviderTest.java
deleted file mode 100644
index 3f5b2ff..0000000
--- a/src/test/java/org/apache/freemarker/generator/JsonPropertiesProviderTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import com.google.gson.Gson;
-import com.google.gson.stream.JsonReader;
-import mockit.Expectations;
-import mockit.Mocked;
-import mockit.Verifications;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.lang.reflect.Type;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
-
-public class JsonPropertiesProviderTest {
-	private File testDir = new File("src/test/data/generating-file-visitor");
-	private File dataDir = new File(testDir, "data");
-	private File templateDir = new File(testDir, "template");
-	private File outputDir = new File("target/test-output/generating-file-visitor");
-
-	@Test
-	public void testSuccess(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
-		Path path = dataDir.toPath().resolve("mydir/success-test.txt.json");
-		Path expectedTemplateLocation = templateDir.toPath().resolve("test.ftl");
-		Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test.txt");
-		Map<String,Object> expectedMap = new HashMap<String,Object>(4);
-		expectedMap.put("testVar", "test value");
-		JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
-		toTest.providePropertiesFromFile(path, builder);
-		new Verifications(){{
-			Path templateLocation;
-			builder.addTemplateLocation(templateLocation = withCapture());
-			Path outputLocation;
-			builder.addOutputLocation(outputLocation = withCapture());
-			Map<String,Object> actualMap;
-			builder.addDataModel(actualMap = withCapture());
-
-			assertEquals(expectedTemplateLocation, templateLocation);
-			assertEquals(expectedOutputLocation, outputLocation);
-			assertArrayEquals(expectedMap.entrySet().toArray(), actualMap.entrySet().toArray());
-		}};
-	}
-
-	@Test
-	public void testSuccessNoDataModel(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
-		Path path = dataDir.toPath().resolve("mydir/success-test-2.txt.json");
-		Path expectedTemplateLocation = templateDir.toPath().resolve("test-pom-only.ftl");
-		Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test-2.txt");
-		Map<String,Object> expectedMap = new HashMap<String,Object>(4);
-		JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
-		toTest.providePropertiesFromFile(path, builder);
-		new Verifications(){{
-			Path templateLocation;
-			builder.addTemplateLocation(templateLocation = withCapture());
-			Path outputLocation;
-			builder.addOutputLocation(outputLocation = withCapture());
-			Map<String,Object> actualMap;
-			builder.addDataModel(actualMap = withCapture());
-
-			assertEquals(expectedTemplateLocation, templateLocation);
-			assertEquals(expectedOutputLocation, outputLocation);
-			assertArrayEquals(expectedMap.entrySet().toArray(), actualMap.entrySet().toArray());
-		}};
-	}
-
-	@Test
-	public void testParsingException(@Mocked OutputGenerator.OutputGeneratorBuilder builder, @Mocked Gson gson) {
-		Path path = dataDir.toPath().resolve("mydir/success-test.txt.json");
-		new Expectations() {{
-			gson.fromJson((JsonReader) any, (Type) any); result = new RuntimeException("test exception");
-		}};
-		JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
-
-		assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-			toTest.providePropertiesFromFile(path, builder);
-		}).withMessage("Could not parse json data file: src/test/data/generating-file-visitor/data/mydir/success-test.txt.json");
-	}
-
-	@Test
-	public void testMissingTemplateName(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
-		Path path = dataDir.toPath().resolve("mydir/missing-template-name.txt.json");
-		JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
-
-		assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-			toTest.providePropertiesFromFile(path, builder);
-		}).withMessage("Require json data property not found: templateName");
-	}
-
-	@Test
-	public void testBadPath(@Mocked OutputGenerator.OutputGeneratorBuilder builder) {
-		Path path = testDir.toPath().resolve("badPath/success-test.txt.json");
-		JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir);
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			toTest.providePropertiesFromFile(path, builder);
-		}).withMessage("visitFile() given file not in sourceDirectory: src/test/data/generating-file-visitor/badPath/success-test.txt.json");
-	}
-}
diff --git a/src/test/java/org/apache/freemarker/generator/OutputGeneratorTest.java b/src/test/java/org/apache/freemarker/generator/OutputGeneratorTest.java
deleted file mode 100644
index 63e5eeb..0000000
--- a/src/test/java/org/apache/freemarker/generator/OutputGeneratorTest.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * 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.freemarker.generator;
-
-import freemarker.cache.FileTemplateLoader;
-import freemarker.template.Configuration;
-import mockit.Expectations;
-import mockit.Mocked;
-import org.assertj.core.api.Assertions;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.annotations.BeforeMethod;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.*;
-
-import static junit.framework.Assert.assertEquals;
-import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertTrue;
-
-public class OutputGeneratorTest {
-
-	private File testDir = new File("src/test/data/generating-file-visitor");
-	private File dataDir = new File(testDir, "data");
-	private File templateDir = new File(testDir, "template");
-	private File outputDir = new File("target/test-output/generating-file-visitor");
-	private Configuration config;
-	private Map<String, Object> dataModel = new HashMap<String,Object>();
-
-	@BeforeMethod
-	public void setupDataModel() {
-		dataModel.clear();
-		dataModel.put("testVar", "test value");
-		dataModel.put("pomProperties", new HashMap<String,String>());
-		((Map<String,String>)dataModel.get("pomProperties")).put("pomVar", "pom value");
-	}
-
-	@BeforeClass
-	public static void cleanFields() throws IOException {
-		// Clean output dir before each run.
-		File outputDir = new File("target/test-output/generating-file-visitor");
-		if (outputDir.exists()) {
-			// Recursively delete output from previous run.
-			Files.walk(outputDir.toPath())
-				 .sorted(Comparator.reverseOrder())
-				 .map(Path::toFile)
-				 .forEach(File::delete);
-		}
-	}
-
-	@BeforeMethod
-	public void before() throws IOException {
-		if (!testDir.isDirectory()) {
-			throw new RuntimeException("Can't find required test data directory. "
-				 + "If running test outside of maven, make sure working directory is the project directory. "
-				 + "Looking for: " + testDir);
-		}
-
-		config = new Configuration(Configuration.VERSION_2_3_23);
-		config.setDefaultEncoding("UTF-8");
-		config.setTemplateLoader(new FileTemplateLoader(templateDir));
-	}
-
-	@Test
-	public void createTest() {
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set the pomModifiedTimestamp");
-
-		builder.addPomLastModifiedTimestamp(0);
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null generatorLocation");
-
-		File file = new File(dataDir, "mydir/success-test.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null templateLocation");
-
-		File templateFile = new File(templateDir, "test.ftl");
-		builder.addTemplateLocation(templateFile.toPath());
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null outputLocation");
-
-		File outputFile = new File(outputDir, "mydir/success-test.txt");
-		builder.addOutputLocation(outputFile.toPath());
-
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null dataModel");
-
-		builder.addDataModel(dataModel);
-		OutputGenerator generator = builder.create();
-
-		assertEquals(0, generator.pomModifiedTimestamp);
-		assertEquals(file.toPath(), generator.generatorLocation);
-		assertEquals(templateFile.toPath(), generator.templateLocation);
-		assertEquals(outputFile.toPath(), generator.outputLocation);
-		assertEquals(dataModel.size(), generator.dataModel.size());
-		assertArrayEquals(dataModel.entrySet().toArray(), generator.dataModel.entrySet().toArray());
-	}
-
-	@Test
-	public void addToDataModelTest() {
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set the pomModifiedTimestamp");
-
-		builder.addPomLastModifiedTimestamp(0);
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null generatorLocation");
-
-		File file = new File(dataDir, "mydir/success-test.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null templateLocation");
-
-		File templateFile = new File(templateDir, "test.ftl");
-		builder.addTemplateLocation(templateFile.toPath());
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null outputLocation");
-
-		File outputFile = new File(outputDir, "mydir/success-test.txt");
-		builder.addOutputLocation(outputFile.toPath());
-
-		assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> {
-			builder.create();
-		}).withMessage("Must set a non-null dataModel");
-
-		builder.addToDataModel("testVar", "testVal");
-		OutputGenerator generator = builder.create();
-
-		assertEquals(1, generator.dataModel.size());
-		assertEquals( "testVal", generator.dataModel.get("testVar"));
-
-		builder.addDataModel(dataModel);
-		builder.addToDataModel("testVar2", "testVal2");
-
-		generator = builder.create();
-
-		assertEquals(3, generator.dataModel.size());
-		assertEquals( "test value", generator.dataModel.get("testVar"));
-		assertEquals( "testVal2", generator.dataModel.get("testVar2"));
-	}
-
-	@Test
-	public void generate_SuccessTest()
-		  throws IOException {
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		builder.addPomLastModifiedTimestamp(0);
-		File file = new File(dataDir, "mydir/success-test.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		File outputFile = new File(outputDir, "mydir/success-test.txt");
-		builder.addOutputLocation(outputFile.toPath());
-		File templateFile = new File(templateDir, "test.ftl");
-		builder.addTemplateLocation(templateFile.toPath());
-		builder.addDataModel(dataModel);
-		OutputGenerator generator = builder.create();
-		generator.generate(config);
-
-		assertTrue(outputFile.isFile());
-		List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8);
-		assertEquals(1, lines.size());
-		assertEquals("This is a test freemarker template. Test json data: 'test value'. Test pom data: 'pom value'.", lines.get(0));
-
-		// Process same file again, should not regenerate file.
-		long lastMod = outputFile.lastModified();
-		generator.generate(config);
-		assertEquals(lastMod, outputFile.lastModified());
-
-		// Set mod time to before json file.
-		lastMod = file.lastModified() - 1000; // File system may only keep 1 second precision.
-		outputFile.setLastModified(lastMod);
-		generator.generate(config);
-		assertTrue(lastMod < outputFile.lastModified());
-
-		// Set mod time to before template file.
-		lastMod = templateFile.lastModified() - 1000; // File system may only keep 1 second precision.
-		outputFile.setLastModified(lastMod);
-		generator.generate(config);
-		assertTrue(lastMod < outputFile.lastModified());
-	}
-
-	@Test
-	public void generate_badTemplateNameTest(){
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		builder.addPomLastModifiedTimestamp(0);
-		File file = new File(dataDir, "mydir/bad-template-name.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		File outputFile = new File(outputDir, "mydir/bad-template-name.txt");
-		builder.addOutputLocation(outputFile.toPath());
-		File templateFile = new File(templateDir, "missing.ftl"); //this doesn't exist
-		builder.addTemplateLocation(templateFile.toPath());
-		builder.addDataModel(dataModel);
-		OutputGenerator generator = builder.create();
-		Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-			generator.generate(config);
-		}).withMessage("Could not read template: missing.ftl");
-	}
-
-	@Test
-	public void generate_missingVarTest() {
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		builder.addPomLastModifiedTimestamp(0);
-		File file = new File(dataDir, "mydir/missing-var-test.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		File outputFile = new File(outputDir, "mydir/missing-var-test.txt");
-		builder.addOutputLocation(outputFile.toPath());
-		File templateFile = new File(templateDir, "test.ftl"); //this is missing a
-		builder.addTemplateLocation(templateFile.toPath());
-		dataModel.remove("testVar");
-		builder.addDataModel(dataModel);
-		OutputGenerator generator = builder.create();
-		Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-			generator.generate(config);
-		}).withMessage("Could not process template associated with data file: src/test/data/generating-file-visitor/data/mydir/missing-var-test.txt.json");
-	}
-
-	@Test
-	public void generate_badParentTest() throws IOException {
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		builder.addPomLastModifiedTimestamp(0);
-		File file = new File(dataDir, "badParent/bad-parent-test.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		File outputFile = new File(outputDir, "badParent/bad-parent-test.txt");
-		builder.addOutputLocation(outputFile.toPath());
-		File templateFile = new File(templateDir, "test.ftl"); //this is missing a
-		builder.addTemplateLocation(templateFile.toPath());
-		builder.addDataModel(dataModel);
-		OutputGenerator generator = builder.create();
-		outputDir.mkdirs();
-		outputFile.getParentFile().createNewFile();
-
-		Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-			generator.generate(config);
-		}).withMessage("Parent directory of output file is a file: " + outputFile.getParentFile().getAbsolutePath());
-	}
-
-	@Test
-	public void generate_cantCreateOutputFileParentDirTest(
-		 @Mocked FactoryUtil factoryUtil,
-		 @Mocked File mockOutputFile) throws IOException {
-
-		File parentDir = new File("target/test-output/generating-file-visitor/mydir");
-		new Expectations(mockOutputFile, parentDir) {{
-			FactoryUtil.createFile(anyString); result = mockOutputFile;
-			mockOutputFile.exists(); result = false;
-			mockOutputFile.getParentFile(); result = parentDir;
-			parentDir.isDirectory(); result = false;
-		}};
-
-		OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder();
-		builder.addPomLastModifiedTimestamp(0);
-		File file = new File(dataDir, "mydir/missing-var-test.txt.json");
-		builder.addGeneratorLocation(file.toPath());
-		File outputFile = new File(outputDir, "mydir/missing-var-test.txt");
-		builder.addOutputLocation(outputFile.toPath());
-		File templateFile = new File(templateDir, "test.ftl"); //this is missing a
-		builder.addTemplateLocation(templateFile.toPath());
-		builder.addDataModel(dataModel);
-		OutputGenerator generator = builder.create();
-		Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> {
-			generator.generate(config);
-		}).withMessage("Could not create directory: " + parentDir.getAbsoluteFile().toString());
-	}
-}
