You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pirk.apache.org by ea...@apache.org on 2016/07/13 13:44:36 UTC

[5/7] incubator-pirk git commit: Jekyll build from gh-pages:dad5af4

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/classes/pirk.properties
----------------------------------------------------------------------
diff --git a/target/classes/pirk.properties b/target/classes/pirk.properties
new file mode 100644
index 0000000..1b1339c
--- /dev/null
+++ b/target/classes/pirk.properties
@@ -0,0 +1,237 @@
+###############################################################################
+# 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.
+###############################################################################
+
+##
+## Default System Configuration Properties
+##
+
+# Name of log4j properties file (relative to current folder)
+log4jPropertiesFile=logging/log4j.properties
+
+#Name of the local properties file - used when running with the 
+#hadoop jar command
+local.pirk.properties=/root/local.pirk.properties
+
+##
+##Spark path for SparkLauncher
+##
+spark.home = /usr
+
+##
+## Data schema properties
+##
+## Each data schema should be specified in an xml file of the form; 
+## 		all items are treated in a case insensitive manner:
+##
+##<schema>
+##  <schemaName> name of the schema </schemaName>
+##  <element>
+##      <name> element name </name>
+##      <type> class name or type name (if Java primitive type) of the element </type>
+##      <isArray> true or false -- whether or not the schema element is an array within the data </isArray>
+##      <partitioner> optional - Partitioner class for the element; defaults to primitive java type partitioner </partitioner> 
+##  </element>
+## </schema>
+##
+## Primitive Java types must be one of the following: "byte", "short", "int", "long", "float", 
+##                  "double", "char", "string", "boolean"
+##
+
+#Comma separated list of local data schema files to load, fully qualified file names
+data.schemas = none
+
+##
+## Query schema properties
+##
+## Each query schema should be specified in an xml file of the form; 
+## 		all items are treated in a case insensitive manner:
+##
+##<schema>
+##  <schemaName> name of the schema </schemaName>
+##	<dataSchemaName> name of the data schema over which this query is run </dataSchemaName>
+##	<selectorName> name of the element in the data schema that will be the selector </selectorName>
+##  <elements>
+##     	<name> element name of element in the data schema to include in the query response </name>
+## 	</elements>
+##  <filter> (optional) name of the filter class to use to filter the data </filter>
+##  <filterNames>
+##       <name> (optional) element name of element in the data schema to apply pre-processing filters </name>
+##  </filterNames>
+## </schema>
+##
+##
+
+#Comma separated list of local query schema files to load, fully qualified file names
+query.schemas = none
+
+##
+##Properties for ElasticSearch compatibility
+##
+
+#ES host address - One Elasticsearch node in the cluster - may include port specification
+es.nodes= none
+           
+#Default HTTP/REST port used for connecting to Elasticsearch 
+es.port=9200
+
+#Number of results/items returned by each individual scroll
+es.scroll.size = 1000
+
+#Whether elasticsearch-hadoop will treat empty fields as null
+es.field.read.empty.as.null=yes
+
+
+##
+##Properties for functional testing
+##
+
+#Test index to create in ES (created and deleted within the tests)
+#Need final form to be: <host>:<port>/<test.esTestIndex>
+test.es.index = testindex
+test.pir.es.index = testindexpir
+
+#Type of elements to insert in ES
+test.es.type = pkt
+
+#Elasticsearch resource - Elasticsearch resource location where data is read and written to. 
+#Requires the format <index>/<type> 
+test.es.resource= none
+test.pir.es.resource = none
+
+#Pathname in hdfs to place input JSON file testing
+test.inputJSONFile = none
+test.pir.inputJSONFile = none
+
+#Pathname in hdfs to place output file for testing
+test.outputHDFSFile = none
+
+#PIR query input dir in hdfs for testing
+test.pir.queryInputDir = none
+
+#PIR stoplist file
+test.pir.stopListFile = none
+
+#Whether or not we are running PIR testing (used as a flag to dump intermediate RDDs for checking)
+#This should default to false; it is changed to true in the test suite, as applicable
+pir.test = false
+
+#HDFS output dir for PIR intermediate testing
+#Should default to none; changed to a real hdfs path in the test suite, as applicable
+pir.testOut = none
+
+
+##
+## Properties to enable/disable JNA-GMP modPow acceleration for Paillier 
+##
+
+paillier.useGMPForModPow = true
+
+# The JNA-GMP library we use to invoke the much faster, natively compiled GMP
+# can be called in a way that tries to make all modPow calls take a constant amount 
+# of time to execute. This will slow down the modPow performance (still better than
+# Java's BigInteger.modPow() ). 
+# If you are using this package in a multi-tenant computing environment and have 
+# concerns about other tenants being able to closely inspect the runtime of your
+# software, you may want to enable this property. 
+paillier.GMPConstantTimeMode = false
+
+# This property controls the more rigorous prime generation checks in PrimeMaker.java
+# which are based on FIPS SP 800-56B and FIPS 186-4 (extra Miller-Rabin rounds, limits
+# on how close the primes p and q can be, and bounds on the values of the primes)
+# These checks slow down prime generation considerably
+pallier.FIPSPrimeGenerationChecks = true
+
+##
+## Properties for PIR query and response
+##
+
+#Number of bits to return when encoding/returning string values as part of return data elements
+pir.stringBits = 64
+
+#Number of array elements to return when encoding/returning array valued elements
+pir.numReturnArrayElements = 2
+
+#Default prime certainty
+pir.primeCertainty = 128
+
+#Fully qualified dir in hdfs of Query files
+pir.queryInput = none
+
+#Data input format type -- 'base' or 'elasticsearch' (given in InputFormatsConst class)
+pir.dataInputFormat = base
+
+#Fully qualified name of input file/directory in hdfs; used if pir.dataInputFormat = base
+pir.inputData = none
+
+#Inputformat for 'base' data input format type -- must extend BaseInputFormat
+pir.baseInputFormat = none
+
+#ElasticSearch-like query if using 'base' input format
+pir.baseQuery = none
+
+#ES resource for input data
+pir.esResource = null
+
+#ES query for input data
+pir.esQuery = none
+
+#Fully qualified name of output file in hdfs
+pir.outputFile = none
+
+#Fully qualified dir in hdfs of file containing stoplist terms
+pir.stopListFile = none
+
+#Number of reduce tasks
+pir.numReduceTasks = 100
+
+#Whether or not to use the local cache during PIR computations
+pir.useLocalCache = true
+
+#Whether or not to limit the hits for each query term
+pir.limitHitsPerSelector = true
+
+#Number of hits to limit for each query term, if pir.limitHitsPerSelector = true
+pir.maxHitsPerSelector = 100
+
+#Whether or not to embed the selector in the results for false positive reduction
+pir.embedSelector = true
+
+#Whether or not to generate and use the HDFS modular exponentiation lookup table
+pir.useHDFSLookupTable = false
+
+#Number of partitions to coalesce the input data into in Spark
+pir.numDataPartitions = 1500
+
+#Mapreduce memory options
+mapreduce.map.memory.mb = 3000
+mapreduce.reduce.memory.mb = 3000
+mapreduce.map.java.opts = -Xmx2800m
+mapreduce.reduce.java.opts = -Xmx2800m
+
+#HDFS directory for the expLookupTable 
+pir.expDir = none
+		
+#Parallelism for expLookupTable creation in hdfs 
+pir.expCreationSplits = 600
+
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/general/ISO8601DateParserTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/general/ISO8601DateParserTest.class b/target/test-classes/test/general/ISO8601DateParserTest.class
new file mode 100644
index 0000000..dfe70cf
Binary files /dev/null and b/target/test-classes/test/general/ISO8601DateParserTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/general/KeyedHashTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/general/KeyedHashTest.class b/target/test-classes/test/general/KeyedHashTest.class
new file mode 100644
index 0000000..e2b2672
Binary files /dev/null and b/target/test-classes/test/general/KeyedHashTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/general/PaillierTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/general/PaillierTest.class b/target/test-classes/test/general/PaillierTest.class
new file mode 100644
index 0000000..4939a2b
Binary files /dev/null and b/target/test-classes/test/general/PaillierTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/general/PartitionUtilsTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/general/PartitionUtilsTest.class b/target/test-classes/test/general/PartitionUtilsTest.class
new file mode 100644
index 0000000..fa0877f
Binary files /dev/null and b/target/test-classes/test/general/PartitionUtilsTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/general/QueryParserUtilsTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/general/QueryParserUtilsTest.class b/target/test-classes/test/general/QueryParserUtilsTest.class
new file mode 100644
index 0000000..d267855
Binary files /dev/null and b/target/test-classes/test/general/QueryParserUtilsTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/schema/data/LoadDataSchemaTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/schema/data/LoadDataSchemaTest.class b/target/test-classes/test/schema/data/LoadDataSchemaTest.class
new file mode 100644
index 0000000..c1a3755
Binary files /dev/null and b/target/test-classes/test/schema/data/LoadDataSchemaTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/schema/query/LoadQuerySchemaTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/schema/query/LoadQuerySchemaTest.class b/target/test-classes/test/schema/query/LoadQuerySchemaTest.class
new file mode 100644
index 0000000..fe16eb3
Binary files /dev/null and b/target/test-classes/test/schema/query/LoadQuerySchemaTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/target/test-classes/test/wideskies/standalone/StandaloneTest.class
----------------------------------------------------------------------
diff --git a/target/test-classes/test/wideskies/standalone/StandaloneTest.class b/target/test-classes/test/wideskies/standalone/StandaloneTest.class
new file mode 100644
index 0000000..e1a74d0
Binary files /dev/null and b/target/test-classes/test/wideskies/standalone/StandaloneTest.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/verifying_releases.html
----------------------------------------------------------------------
diff --git a/verifying_releases.html b/verifying_releases.html
index dac45ac..65a2b3b 100644
--- a/verifying_releases.html
+++ b/verifying_releases.html
@@ -20,18 +20,18 @@
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
-<link href="/pirk/css/bootstrap.min.css" rel="stylesheet">
-<link href="/pirk/css/bootstrap-theme.min.css" rel="stylesheet">
-<link href="/pirk/css/dataTables.bootstrap.css" rel="stylesheet">
-<link href="/pirk/css/pirk.css" rel="stylesheet" type="text/css">
+<link href="/css/bootstrap.min.css" rel="stylesheet">
+<link href="/css/bootstrap-theme.min.css" rel="stylesheet">
+<link href="/css/dataTables.bootstrap.css" rel="stylesheet">
+<link href="/css/pirk.css" rel="stylesheet" type="text/css">
 <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
 
 <title>Verifying a Release</title>
 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
-<script src="/pirk/js/bootstrap.min.js"></script>
-<script src="/pirk/js/jquery.dataTables.min.js"></script>
-<script src="/pirk/js/dataTables.bootstrap.js"></script>
+<script src="/js/bootstrap.min.js"></script>
+<script src="/js/jquery.dataTables.min.js"></script>
+<script src="/js/dataTables.bootstrap.js"></script>
 <script>
   // show location of canonical site if not currently on the canonical site
   $(function() {
@@ -84,43 +84,43 @@
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
       </button>
-      <a href="/pirk/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/pirk/images/pirkImage.png" width="150"/></a>
+      <a href="/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="150"/></a>
     </div>
     <div class="collapse navbar-collapse" id="navbar-items">
       <ul class="nav navbar-nav">
-        <li class="nav-link"><a href="/pirk/downloads">Download</a></li>
+        <li class="nav-link"><a href="/downloads">Download</a></li>
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
         <ul class="dropdown-menu">
-          <li id="nav_users"><a href="/pirk/for_users">For Users</a></li>
-          <li id="nav_developers"><a href="/pirk/for_developers">For Developers</a></li>
-          <li id="nav_papers"><a href="/pirk/papers">Papers</a></li>
-          <li class="nav_faq"><a href="/pirk/faq">FAQ</a></li>
+          <li id="nav_users"><a href="/for_users">For Users</a></li>
+          <li id="nav_developers"><a href="/for_developers">For Developers</a></li>
+          <li id="nav_papers"><a href="/papers">Papers</a></li>
+          <li class="nav_faq"><a href="/faq">FAQ</a></li>
           <li class="divider"></li>
-           <li><a href="/pirk/javadocs">Javadocs</a></li>     
+           <li><a href="/javadocs">Javadocs</a></li>     
         </ul>
         </li>
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
         <ul class="dropdown-menu">
-          <li id="nav_getinvolvedpirk"><a href="/pirk/get_involved_pirk">Get Involved</a></li>
-          <li id="nav_listspirk"><a href="/pirk/mailing_list_pirk">Mailing Lists</a></li>
-          <li id="nav_peoplepirk"><a href="/pirk/people_pirk">People</a></li>
+          <li id="nav_getinvolvedpirk"><a href="/get_involved_pirk">Get Involved</a></li>
+          <li id="nav_listspirk"><a href="/mailing_list_pirk">Mailing Lists</a></li>
+          <li id="nav_peoplepirk"><a href="/people_pirk">People</a></li>
        	</ul>
         </li>
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Development<span class="caret"></span></a>
         <ul class="dropdown-menu">
-          <li id="nav_releasing"><a href="/pirk/releasing">Making Releases</a></li>
-          <li id="nav_nav_verify_release"><a href="/pirk/verifying_releases">Verifying Releases</a></li>
-          <li id="nav_update_website"><a href="/pirk/website_updates">Website Updates</a></li>
+          <li id="nav_releasing"><a href="/releasing">Making Releases</a></li>
+          <li id="nav_nav_verify_release"><a href="/verifying_releases">Verifying Releases</a></li>
+          <li id="nav_update_website"><a href="/website_updates">Website Updates</a></li>
           <hr>
           <li><a href="https://issues.apache.org/jira/browse/PIRK ">Issue Tracker/JIRA <i class="fa fa-external-link"></i></a></li>
           <li><a href="https://builds.apache.org/view/A/view/Accumulo">Jenkins Builds <i class="fa fa-external-link"></i></a></li>
           <li><a href="https://github.com/apache/incubator-pirk"> Pirk Github Mirror <i class="fa fa-external-link"></i></a></li>
         </ul>
         </li>
-        <li class="nav-link"><a href="/pirk/roadmap">Roadmap</a></li>
+        <li class="nav-link"><a href="/roadmap">Roadmap</a></li>
        <ul class="nav navbar-nav navbar-right">
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
@@ -227,7 +227,7 @@ to this artifact\u2019s NOTICE file.</p>
         
 <footer>
 
-  <p><a href="https://www.apache.org"><img src="/pirk/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>
+  <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>
 
   <p>Copyright � 2016-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache�License,�Version�2.0</a>.</p>
 

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/b3e90d09/website_updates.html
----------------------------------------------------------------------
diff --git a/website_updates.html b/website_updates.html
index ccf07a6..dd8758c 100644
--- a/website_updates.html
+++ b/website_updates.html
@@ -20,18 +20,18 @@
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1">
-<link href="/pirk/css/bootstrap.min.css" rel="stylesheet">
-<link href="/pirk/css/bootstrap-theme.min.css" rel="stylesheet">
-<link href="/pirk/css/dataTables.bootstrap.css" rel="stylesheet">
-<link href="/pirk/css/pirk.css" rel="stylesheet" type="text/css">
+<link href="/css/bootstrap.min.css" rel="stylesheet">
+<link href="/css/bootstrap-theme.min.css" rel="stylesheet">
+<link href="/css/dataTables.bootstrap.css" rel="stylesheet">
+<link href="/css/pirk.css" rel="stylesheet" type="text/css">
 <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
 
 <title>Updating the Website</title>
 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
-<script src="/pirk/js/bootstrap.min.js"></script>
-<script src="/pirk/js/jquery.dataTables.min.js"></script>
-<script src="/pirk/js/dataTables.bootstrap.js"></script>
+<script src="/js/bootstrap.min.js"></script>
+<script src="/js/jquery.dataTables.min.js"></script>
+<script src="/js/dataTables.bootstrap.js"></script>
 <script>
   // show location of canonical site if not currently on the canonical site
   $(function() {
@@ -84,43 +84,43 @@
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
       </button>
-      <a href="/pirk/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/pirk/images/pirkImage.png" width="150"/></a>
+      <a href="/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="150"/></a>
     </div>
     <div class="collapse navbar-collapse" id="navbar-items">
       <ul class="nav navbar-nav">
-        <li class="nav-link"><a href="/pirk/downloads">Download</a></li>
+        <li class="nav-link"><a href="/downloads">Download</a></li>
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
         <ul class="dropdown-menu">
-          <li id="nav_users"><a href="/pirk/for_users">For Users</a></li>
-          <li id="nav_developers"><a href="/pirk/for_developers">For Developers</a></li>
-          <li id="nav_papers"><a href="/pirk/papers">Papers</a></li>
-          <li class="nav_faq"><a href="/pirk/faq">FAQ</a></li>
+          <li id="nav_users"><a href="/for_users">For Users</a></li>
+          <li id="nav_developers"><a href="/for_developers">For Developers</a></li>
+          <li id="nav_papers"><a href="/papers">Papers</a></li>
+          <li class="nav_faq"><a href="/faq">FAQ</a></li>
           <li class="divider"></li>
-           <li><a href="/pirk/javadocs">Javadocs</a></li>     
+           <li><a href="/javadocs">Javadocs</a></li>     
         </ul>
         </li>
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
         <ul class="dropdown-menu">
-          <li id="nav_getinvolvedpirk"><a href="/pirk/get_involved_pirk">Get Involved</a></li>
-          <li id="nav_listspirk"><a href="/pirk/mailing_list_pirk">Mailing Lists</a></li>
-          <li id="nav_peoplepirk"><a href="/pirk/people_pirk">People</a></li>
+          <li id="nav_getinvolvedpirk"><a href="/get_involved_pirk">Get Involved</a></li>
+          <li id="nav_listspirk"><a href="/mailing_list_pirk">Mailing Lists</a></li>
+          <li id="nav_peoplepirk"><a href="/people_pirk">People</a></li>
        	</ul>
         </li>
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Development<span class="caret"></span></a>
         <ul class="dropdown-menu">
-          <li id="nav_releasing"><a href="/pirk/releasing">Making Releases</a></li>
-          <li id="nav_nav_verify_release"><a href="/pirk/verifying_releases">Verifying Releases</a></li>
-          <li id="nav_update_website"><a href="/pirk/website_updates">Website Updates</a></li>
+          <li id="nav_releasing"><a href="/releasing">Making Releases</a></li>
+          <li id="nav_nav_verify_release"><a href="/verifying_releases">Verifying Releases</a></li>
+          <li id="nav_update_website"><a href="/website_updates">Website Updates</a></li>
           <hr>
           <li><a href="https://issues.apache.org/jira/browse/PIRK ">Issue Tracker/JIRA <i class="fa fa-external-link"></i></a></li>
           <li><a href="https://builds.apache.org/view/A/view/Accumulo">Jenkins Builds <i class="fa fa-external-link"></i></a></li>
           <li><a href="https://github.com/apache/incubator-pirk"> Pirk Github Mirror <i class="fa fa-external-link"></i></a></li>
         </ul>
         </li>
-        <li class="nav-link"><a href="/pirk/roadmap">Roadmap</a></li>
+        <li class="nav-link"><a href="/roadmap">Roadmap</a></li>
        <ul class="nav navbar-nav navbar-right">
         <li class="dropdown">
         <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
@@ -203,7 +203,7 @@ the given file into your <code class="highlighter-rouge">.git/hook</code> direct
         
 <footer>
 
-  <p><a href="https://www.apache.org"><img src="/pirk/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>
+  <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>
 
   <p>Copyright � 2016-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache�License,�Version�2.0</a>.</p>