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/31 23:10:35 UTC

[13/26] incubator-pirk git commit: Jekyll build from gh-pages:7b7dfd7

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/org/apache/pirk/utils/SystemConfiguration$1.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/pirk/utils/SystemConfiguration$1.class b/target/classes/org/apache/pirk/utils/SystemConfiguration$1.class
new file mode 100644
index 0000000..97977d4
Binary files /dev/null and b/target/classes/org/apache/pirk/utils/SystemConfiguration$1.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/org/apache/pirk/utils/SystemConfiguration.class
----------------------------------------------------------------------
diff --git a/target/classes/org/apache/pirk/utils/SystemConfiguration.class b/target/classes/org/apache/pirk/utils/SystemConfiguration.class
new file mode 100644
index 0000000..4f7f142
Binary files /dev/null and b/target/classes/org/apache/pirk/utils/SystemConfiguration.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType.class
----------------------------------------------------------------------
diff --git a/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType.class b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType.class
new file mode 100644
index 0000000..c8a9d21
Binary files /dev/null and b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B1.class
----------------------------------------------------------------------
diff --git a/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B1.class b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B1.class
new file mode 100644
index 0000000..92ca397
Binary files /dev/null and b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B1.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B2.class
----------------------------------------------------------------------
diff --git a/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B2.class b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B2.class
new file mode 100644
index 0000000..f466872
Binary files /dev/null and b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B2.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B3.class
----------------------------------------------------------------------
diff --git a/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B3.class b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B3.class
new file mode 100644
index 0000000..6e3219f
Binary files /dev/null and b/target/classes/org/openjdk/jmh/infra/generated/Blackhole_jmhType_B3.class differ

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/pirk.properties
----------------------------------------------------------------------
diff --git a/target/classes/pirk.properties b/target/classes/pirk.properties
new file mode 100644
index 0000000..aee87ad
--- /dev/null
+++ b/target/classes/pirk.properties
@@ -0,0 +1,239 @@
+###############################################################################
+# 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 the local properties file - used when running with the
+#hadoop jar command
+local.pirk.properties=/root/
+
+##
+##Spark path for SparkLauncher
+##
+spark.home = /usr
+
+##
+## Data schema properties
+##
+## Each data schema should be specified in an xml file of the form:
+##
+##<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 = /tmp/testJSONInput
+
+#Pathname in hdfs to place output file for testing
+test.outputHDFSFile = /tmp/testOutput
+
+#PIR query input dir in hdfs for testing
+test.pir.queryInputDir = none
+
+#PIR stoplist file
+test.pir.stopListFile = /tmp/testStopListFile
+
+#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
+
+## These properties control the secure random number generator algorithm and provider.
+## You can specify just the algorithm, or both algorithm and provider.  The system's
+## default secure random is used when the algorithm is left unspecified. 
+pallier.secureRandom.algorithm=NativePRNG
+#pallier.secureRandom.provider=SUN
+
+##
+## 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 = stopListFile
+
+#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/9af0dad4/target/classes/querier.properties
----------------------------------------------------------------------
diff --git a/target/classes/querier.properties b/target/classes/querier.properties
new file mode 100644
index 0000000..2051d46
--- /dev/null
+++ b/target/classes/querier.properties
@@ -0,0 +1,123 @@
+###############################################################################
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+###############################################################################
+
+##
+## Required Properties
+##
+
+#action -- required - 'encrypt' or 'decrypt' -- The action performed by the QuerierDriver
+querier.action=
+
+#inputFile - required - Fully qualified file containing input
+#The input is either:
+#(1) For Encryption: A query file - Contains the query selectors, one per line;
+#the first line must be the query number
+#OR
+#(2) For Decryption: A response file - Contains the serialized Response object
+querier.inputFile=
+
+#outputFile -- required - Fully qualified file for the result output.
+#The output file specifies either:
+#(1) For encryption:
+#(a) A file to contain the serialized Querier object named: <outputFile>-querier
+#AND
+#(b) A file to contain the serialized Query object named: <outputFile>-query
+#OR
+#(2) A file to contain the decryption results where each line is where each line
+#corresponds to one hit and is a JSON object with the schema QuerySchema
+querier.outputFile=
+
+#numThreads -- required -- Number of threads to use for encryption/decryption
+querier.numThreads=
+
+##
+## Optional Args
+##
+
+#dataSchemas -- optional -- Comma separated list of data schema file names to load
+#querier.dataSchemas=
+
+#querySchemas -- optional -- Comma separated list of query schema file names to load
+#querier.dataSchemas=
+
+
+## Optional, but required for Encryption (ignored if not encrypting)
+
+#bitset -- required for encryption -- Ensure that this bit position is set in the Paillier
+#modulus (will generate Paillier moduli until finding one in which this bit is set)
+#querier.bitSet=
+
+#certainty -- required for encryption -- Certainty of prime generation for Paillier
+#must be greater than or equal to 128
+#querier.certainty=
+
+#dataPartitionBitSize -- required for encryption -- Partition bit size in data partitioning
+#querier.dataPartitionBitSize=
+
+#embedSelector - required for encryption -- 'true' or 'false'
+#Whether or not to embed the selector in the results to reduce false positives
+#Defaults to 'true'
+#querier.embedSelector=
+
+#embedQuerySchema - true or false
+#Whether or not to embed the QuerySchema in the Query (via QueryInfo)
+#Defaults to 'false'
+#querier.embedQuerySchema=
+ 
+#hashBitSize - required for encryption-- Bit size of keyed hash
+#querier.hashBitSize=
+
+#hashKey -- required for encryption -- String key for the keyed hash functionality
+#querier.hashKey=
+
+#useHDFSLookupTable -- required for encryption -- 'true' or 'false'
+#Whether or not to generate and use a hdfs modular exponentation lookup table
+#Defaults to 'false'
+#querier.useHDFSLookupTable=
+
+#memLookupTable -- required for encryption -- 'true' or 'false'
+#Whether or not to generate and use an in memory modular exponentation lookup table - only for
+#standalone/testing right now...
+#Defaults to 'false'
+#querier.memLookupTable=
+
+#paillierBitSize -- required for encryption -- Paillier modulus size N
+#querier.paillierBitSize=
+ 
+#queryName -- required for encryption -- Name of the query
+#querier.queryName=
+
+#queryType -- required for encryption
+#Type of the query as defined in the 'schemaName' tag of the corresponding query schema file
+#querier.queryType=
+
+#secureRandomAlg -- specify the SecureRandom algorithm
+#Defaults to NativePRNG
+#querier.secureRandomAlg=
+
+#secureRandomProvider -- specify the SecureRandom provider
+#Defaults to SUN
+#querier.secureRandomProvider=
+  
+## Optional, but required for Decryption (ignored if not decrypting)
+
+#querierFile -- required for decryption
+#Fully qualified file containing the serialized Querier object
+#querier.querierFile=
+  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/query-schema.xsd
----------------------------------------------------------------------
diff --git a/target/classes/query-schema.xsd b/target/classes/query-schema.xsd
new file mode 100644
index 0000000..65a36ce
--- /dev/null
+++ b/target/classes/query-schema.xsd
@@ -0,0 +1,119 @@
+<?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.
+ -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    targetNamespace="http://pirk.apache.org" xmlns="http://pirk.apache.org"
+    elementFormDefault="qualified">
+
+    <xs:element name="schema">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="schemaName" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The name of the query schema.
+                            The name omits leading and trailing
+                            whitespace, and is case sensitive.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+
+                <xs:element name="dataSchemaName" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The name of the data schema
+                            over which this query is run. The name omits
+                            leading and trailing whitespace, and is case
+                            sensitive.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+
+                <xs:element name="selectorName" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name of the name of the
+                            element in the data schema that will be the
+                            selector for this query.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+
+                <xs:element name="elements">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The set of element names to
+                            include in the query response.
+                        </xs:documentation>
+                    </xs:annotation>
+                    <xs:complexType>
+                        <xs:sequence>
+
+                            <xs:element name="name" type="xs:string"
+                                maxOccurs="unbounded">
+                                <xs:annotation>
+                                    <xs:documentation>
+                                        The name of an
+                                        element in the data schema to
+                                        include in the query response.
+                                    </xs:documentation>
+                                </xs:annotation>
+                            </xs:element>
+
+                        </xs:sequence>
+                    </xs:complexType>
+                </xs:element>
+
+                <xs:element name="filter" type="xs:string"
+                    minOccurs="0">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The name of a class used to
+                            filter the query response data.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+
+                <xs:element name="filterNames" minOccurs="0"
+                    maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:documentation>
+                            The set of data element names
+                            over which the
+                            response filter is applied.
+                        </xs:documentation>
+                    </xs:annotation>
+                    <xs:complexType>
+                        <xs:sequence>
+
+                            <xs:element name="name" type="xs:string">
+                                <xs:annotation>
+                                    <xs:documentation>
+                                        The name of an
+                                        element in the data schema over
+                                        which to apply the filter.
+                                    </xs:documentation>
+                                </xs:annotation>
+                            </xs:element>
+
+                        </xs:sequence>
+                    </xs:complexType>
+                </xs:element>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/classes/responder.properties
----------------------------------------------------------------------
diff --git a/target/classes/responder.properties b/target/classes/responder.properties
new file mode 100644
index 0000000..11ad7f6
--- /dev/null
+++ b/target/classes/responder.properties
@@ -0,0 +1,137 @@
+###############################################################################
+# 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.
+###############################################################################
+
+##
+## Required Properties
+##
+
+#dataInputFormat -- required -- 'base', 'elasticsearch', or 'standalone' -- Specify the input format
+pir.dataInputFormat=
+
+#outputFile -- required -- Fully qualified name of output file in hdfs
+pir.outputFile=
+
+#platform -- required -- 'mapreduce', 'spark', or 'standalone'
+#Processing platform technology for the responder                
+platform= 
+
+#queryInput -- required -- Fully qualified dir in hdfs of Query files
+pir.queryInput=
+
+
+##
+## Optional Args - Leave empty if not using/not changing default values
+##
+
+#inputData -- required if baseInputFormat = 'base'
+#Fully qualified name of input file/directory in hdfs; used if inputFormat = 'base'
+#pir.inputData=
+ 
+#dataSchemas -- optional -- Comma separated list of data schema file names to load
+#responder.dataSchemas=
+
+#querySchemas -- optional -- Comma separated list of query schema file names to load
+#responder.querySchemas=                                    
+
+#allowAdHocQuerySchemas -- 'true' or 'false'
+#If true, allows embedded QuerySchemas for a query.
+#Defaults to 'false'
+#pir.allowEmbeddedQuerySchemas=
+
+#colMultReduceByKey -- 'true' or 'false' -- Spark only
+#If true, uses reduceByKey in performing column multiplication; if false, uses groupByKey -> reduce
+#Defaults to 'false' 
+#pir.colMultReduceByKey=
+
+#baseInputFormat -- required if baseInputFormat = 'base'
+#Full class name of the InputFormat to use when reading in the data - must extend BaseInputFormat
+#pir.baseInputFormat=
+
+#esQuery -- required if baseInputFormat = 'elasticsearch' -- ElasticSearch query
+#if using 'elasticsearch' input format
+#pir.esQuery=
+
+#esResource --  required if baseInputFormat = 'elasticsearch'
+#Requires the format <index>/<type> : Elasticsearch resource where data is read and written to
+#pir.esResource=
+
+#useHDFSLookupTable -- 'true' or 'false' - Whether or not to generate and use the
+#hdfs lookup table for modular exponentiation
+#Defaults to 'false'
+#pir.useHDFSLookupTable=
+
+#baseQuery -- ElasticSearch-like query if using 'base' input format -
+#used to filter records in the RecordReader
+#Defaults to ?q=*
+#pir.baseQuery=
+
+#limitHitsPerSelector -- 'true' or 'false'
+#Whether or not to limit the number of hits per selector
+#Defaults to 'true'
+#pir.limitHitsPerSelector=
+
+#mapreduceMapJavaOpts -- Amount of heap (in MB) to allocate per map task
+#Defaults to -Xmx2800m
+#mapreduce.map.java.opts=
+
+#mapreduceMapMemoryMb -- Amount of memory (in MB) to allocate per map task
+#Defaults to 3000
+#mapreduce.map.memory.mb=
+     
+#mapreduceReduceJavaOpts
+#Amount of heap (in MB) to allocate per reduce task
+#Defaults to -Xmx2800m
+#mapreduce.reduce.java.opts=
+
+#mapreduceReduceMemoryMb
+#Amount of memory (in MB) to allocate per reduce task
+#Defaults to 3000
+#mapreduce.reduce.memory.mb=
+
+#stopListFile -- optional (unless using StopListFilter) -- Fully qualified file in hdfs
+#containing stoplist terms; used by the StopListFilter
+#pir.stopListFile=
+
+#useLocalCache -- 'true' or 'false'
+#Whether or not to use the local cache for modular exponentiation
+#Defaults to 'true'
+#pir.useLocalCache=
+
+#useModExpJoin -- 'true' or 'false' -- Spark only
+#Whether or not to pre-compute the modular exponentiation table and join it to the data
+#partitions when performing the encrypted row calculations
+#Defaults to 'false'
+#pir.useModExpJoin=
+
+#numReduceTasks -- optional -- Number of reduce tasks
+#pir.numReduceTasks=
+
+#numColMultPartitions -- optional, Spark only
+#Number of partitions to use when performing  column multiplication
+#pir.numColMultPartitions=        
+
+#maxHitsPerSelector --  optional -- Max number of hits encrypted per selector
+#pir.maxHitsPerSelector=
+
+#dataParts -- optional -- Number of partitions for the input data
+#pir.numDataPartitions=
+
+#numExpLookupPartitions -- optional -- Number of partitions for the exp lookup table
+#pir.numExpLookupPartitions=
+ 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType.java
new file mode 100644
index 0000000..249d6dd
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType.java
@@ -0,0 +1,4 @@
+package org.apache.pirk.benchmark.generated;
+public class PaillierBenchmark_PaillierBenchmarkState_jmhType extends PaillierBenchmark_PaillierBenchmarkState_jmhType_B3 {
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B1.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B1.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B1.java
new file mode 100644
index 0000000..878c930
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B1.java
@@ -0,0 +1,20 @@
+package org.apache.pirk.benchmark.generated;
+import org.apache.pirk.benchmark.PaillierBenchmark.PaillierBenchmarkState;
+public class PaillierBenchmark_PaillierBenchmarkState_jmhType_B1 extends org.apache.pirk.benchmark.PaillierBenchmark.PaillierBenchmarkState {
+    boolean p000, p001, p002, p003, p004, p005, p006, p007, p008, p009, p010, p011, p012, p013, p014, p015;
+    boolean p016, p017, p018, p019, p020, p021, p022, p023, p024, p025, p026, p027, p028, p029, p030, p031;
+    boolean p032, p033, p034, p035, p036, p037, p038, p039, p040, p041, p042, p043, p044, p045, p046, p047;
+    boolean p048, p049, p050, p051, p052, p053, p054, p055, p056, p057, p058, p059, p060, p061, p062, p063;
+    boolean p064, p065, p066, p067, p068, p069, p070, p071, p072, p073, p074, p075, p076, p077, p078, p079;
+    boolean p080, p081, p082, p083, p084, p085, p086, p087, p088, p089, p090, p091, p092, p093, p094, p095;
+    boolean p096, p097, p098, p099, p100, p101, p102, p103, p104, p105, p106, p107, p108, p109, p110, p111;
+    boolean p112, p113, p114, p115, p116, p117, p118, p119, p120, p121, p122, p123, p124, p125, p126, p127;
+    boolean p128, p129, p130, p131, p132, p133, p134, p135, p136, p137, p138, p139, p140, p141, p142, p143;
+    boolean p144, p145, p146, p147, p148, p149, p150, p151, p152, p153, p154, p155, p156, p157, p158, p159;
+    boolean p160, p161, p162, p163, p164, p165, p166, p167, p168, p169, p170, p171, p172, p173, p174, p175;
+    boolean p176, p177, p178, p179, p180, p181, p182, p183, p184, p185, p186, p187, p188, p189, p190, p191;
+    boolean p192, p193, p194, p195, p196, p197, p198, p199, p200, p201, p202, p203, p204, p205, p206, p207;
+    boolean p208, p209, p210, p211, p212, p213, p214, p215, p216, p217, p218, p219, p220, p221, p222, p223;
+    boolean p224, p225, p226, p227, p228, p229, p230, p231, p232, p233, p234, p235, p236, p237, p238, p239;
+    boolean p240, p241, p242, p243, p244, p245, p246, p247, p248, p249, p250, p251, p252, p253, p254, p255;
+}

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.java
new file mode 100644
index 0000000..38cef53
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.java
@@ -0,0 +1,22 @@
+package org.apache.pirk.benchmark.generated;
+import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+public class PaillierBenchmark_PaillierBenchmarkState_jmhType_B2 extends PaillierBenchmark_PaillierBenchmarkState_jmhType_B1 {
+    public volatile int setupTrialMutex;
+    public volatile int tearTrialMutex;
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_PaillierBenchmarkState_jmhType_B2> setupTrialMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.class, "setupTrialMutex");
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_PaillierBenchmarkState_jmhType_B2> tearTrialMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.class, "tearTrialMutex");
+
+    public volatile int setupIterationMutex;
+    public volatile int tearIterationMutex;
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_PaillierBenchmarkState_jmhType_B2> setupIterationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.class, "setupIterationMutex");
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_PaillierBenchmarkState_jmhType_B2> tearIterationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.class, "tearIterationMutex");
+
+    public volatile int setupInvocationMutex;
+    public volatile int tearInvocationMutex;
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_PaillierBenchmarkState_jmhType_B2> setupInvocationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.class, "setupInvocationMutex");
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_PaillierBenchmarkState_jmhType_B2> tearInvocationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_PaillierBenchmarkState_jmhType_B2.class, "tearInvocationMutex");
+
+    public volatile boolean readyTrial;
+    public volatile boolean readyIteration;
+    public volatile boolean readyInvocation;
+}

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B3.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B3.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B3.java
new file mode 100644
index 0000000..96099a8
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_PaillierBenchmarkState_jmhType_B3.java
@@ -0,0 +1,20 @@
+package org.apache.pirk.benchmark.generated;
+public class PaillierBenchmark_PaillierBenchmarkState_jmhType_B3 extends PaillierBenchmark_PaillierBenchmarkState_jmhType_B2 {
+    boolean p000, p001, p002, p003, p004, p005, p006, p007, p008, p009, p010, p011, p012, p013, p014, p015;
+    boolean p016, p017, p018, p019, p020, p021, p022, p023, p024, p025, p026, p027, p028, p029, p030, p031;
+    boolean p032, p033, p034, p035, p036, p037, p038, p039, p040, p041, p042, p043, p044, p045, p046, p047;
+    boolean p048, p049, p050, p051, p052, p053, p054, p055, p056, p057, p058, p059, p060, p061, p062, p063;
+    boolean p064, p065, p066, p067, p068, p069, p070, p071, p072, p073, p074, p075, p076, p077, p078, p079;
+    boolean p080, p081, p082, p083, p084, p085, p086, p087, p088, p089, p090, p091, p092, p093, p094, p095;
+    boolean p096, p097, p098, p099, p100, p101, p102, p103, p104, p105, p106, p107, p108, p109, p110, p111;
+    boolean p112, p113, p114, p115, p116, p117, p118, p119, p120, p121, p122, p123, p124, p125, p126, p127;
+    boolean p128, p129, p130, p131, p132, p133, p134, p135, p136, p137, p138, p139, p140, p141, p142, p143;
+    boolean p144, p145, p146, p147, p148, p149, p150, p151, p152, p153, p154, p155, p156, p157, p158, p159;
+    boolean p160, p161, p162, p163, p164, p165, p166, p167, p168, p169, p170, p171, p172, p173, p174, p175;
+    boolean p176, p177, p178, p179, p180, p181, p182, p183, p184, p185, p186, p187, p188, p189, p190, p191;
+    boolean p192, p193, p194, p195, p196, p197, p198, p199, p200, p201, p202, p203, p204, p205, p206, p207;
+    boolean p208, p209, p210, p211, p212, p213, p214, p215, p216, p217, p218, p219, p220, p221, p222, p223;
+    boolean p224, p225, p226, p227, p228, p229, p230, p231, p232, p233, p234, p235, p236, p237, p238, p239;
+    boolean p240, p241, p242, p243, p244, p245, p246, p247, p248, p249, p250, p251, p252, p253, p254, p255;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType.java
new file mode 100644
index 0000000..c9fb26c
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType.java
@@ -0,0 +1,4 @@
+package org.apache.pirk.benchmark.generated;
+public class PaillierBenchmark_jmhType extends PaillierBenchmark_jmhType_B3 {
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B1.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B1.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B1.java
new file mode 100644
index 0000000..24b5cae
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B1.java
@@ -0,0 +1,20 @@
+package org.apache.pirk.benchmark.generated;
+import org.apache.pirk.benchmark.PaillierBenchmark;
+public class PaillierBenchmark_jmhType_B1 extends org.apache.pirk.benchmark.PaillierBenchmark {
+    boolean p000, p001, p002, p003, p004, p005, p006, p007, p008, p009, p010, p011, p012, p013, p014, p015;
+    boolean p016, p017, p018, p019, p020, p021, p022, p023, p024, p025, p026, p027, p028, p029, p030, p031;
+    boolean p032, p033, p034, p035, p036, p037, p038, p039, p040, p041, p042, p043, p044, p045, p046, p047;
+    boolean p048, p049, p050, p051, p052, p053, p054, p055, p056, p057, p058, p059, p060, p061, p062, p063;
+    boolean p064, p065, p066, p067, p068, p069, p070, p071, p072, p073, p074, p075, p076, p077, p078, p079;
+    boolean p080, p081, p082, p083, p084, p085, p086, p087, p088, p089, p090, p091, p092, p093, p094, p095;
+    boolean p096, p097, p098, p099, p100, p101, p102, p103, p104, p105, p106, p107, p108, p109, p110, p111;
+    boolean p112, p113, p114, p115, p116, p117, p118, p119, p120, p121, p122, p123, p124, p125, p126, p127;
+    boolean p128, p129, p130, p131, p132, p133, p134, p135, p136, p137, p138, p139, p140, p141, p142, p143;
+    boolean p144, p145, p146, p147, p148, p149, p150, p151, p152, p153, p154, p155, p156, p157, p158, p159;
+    boolean p160, p161, p162, p163, p164, p165, p166, p167, p168, p169, p170, p171, p172, p173, p174, p175;
+    boolean p176, p177, p178, p179, p180, p181, p182, p183, p184, p185, p186, p187, p188, p189, p190, p191;
+    boolean p192, p193, p194, p195, p196, p197, p198, p199, p200, p201, p202, p203, p204, p205, p206, p207;
+    boolean p208, p209, p210, p211, p212, p213, p214, p215, p216, p217, p218, p219, p220, p221, p222, p223;
+    boolean p224, p225, p226, p227, p228, p229, p230, p231, p232, p233, p234, p235, p236, p237, p238, p239;
+    boolean p240, p241, p242, p243, p244, p245, p246, p247, p248, p249, p250, p251, p252, p253, p254, p255;
+}

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B2.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B2.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B2.java
new file mode 100644
index 0000000..ea65ff1
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B2.java
@@ -0,0 +1,19 @@
+package org.apache.pirk.benchmark.generated;
+import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+public class PaillierBenchmark_jmhType_B2 extends PaillierBenchmark_jmhType_B1 {
+    public volatile int setupTrialMutex;
+    public volatile int tearTrialMutex;
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_jmhType_B2> setupTrialMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_jmhType_B2.class, "setupTrialMutex");
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_jmhType_B2> tearTrialMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_jmhType_B2.class, "tearTrialMutex");
+
+    public volatile int setupIterationMutex;
+    public volatile int tearIterationMutex;
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_jmhType_B2> setupIterationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_jmhType_B2.class, "setupIterationMutex");
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_jmhType_B2> tearIterationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_jmhType_B2.class, "tearIterationMutex");
+
+    public volatile int setupInvocationMutex;
+    public volatile int tearInvocationMutex;
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_jmhType_B2> setupInvocationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_jmhType_B2.class, "setupInvocationMutex");
+    public final static AtomicIntegerFieldUpdater<PaillierBenchmark_jmhType_B2> tearInvocationMutexUpdater = AtomicIntegerFieldUpdater.newUpdater(PaillierBenchmark_jmhType_B2.class, "tearInvocationMutex");
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B3.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B3.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B3.java
new file mode 100644
index 0000000..7d2b623
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_jmhType_B3.java
@@ -0,0 +1,20 @@
+package org.apache.pirk.benchmark.generated;
+public class PaillierBenchmark_jmhType_B3 extends PaillierBenchmark_jmhType_B2 {
+    boolean p000, p001, p002, p003, p004, p005, p006, p007, p008, p009, p010, p011, p012, p013, p014, p015;
+    boolean p016, p017, p018, p019, p020, p021, p022, p023, p024, p025, p026, p027, p028, p029, p030, p031;
+    boolean p032, p033, p034, p035, p036, p037, p038, p039, p040, p041, p042, p043, p044, p045, p046, p047;
+    boolean p048, p049, p050, p051, p052, p053, p054, p055, p056, p057, p058, p059, p060, p061, p062, p063;
+    boolean p064, p065, p066, p067, p068, p069, p070, p071, p072, p073, p074, p075, p076, p077, p078, p079;
+    boolean p080, p081, p082, p083, p084, p085, p086, p087, p088, p089, p090, p091, p092, p093, p094, p095;
+    boolean p096, p097, p098, p099, p100, p101, p102, p103, p104, p105, p106, p107, p108, p109, p110, p111;
+    boolean p112, p113, p114, p115, p116, p117, p118, p119, p120, p121, p122, p123, p124, p125, p126, p127;
+    boolean p128, p129, p130, p131, p132, p133, p134, p135, p136, p137, p138, p139, p140, p141, p142, p143;
+    boolean p144, p145, p146, p147, p148, p149, p150, p151, p152, p153, p154, p155, p156, p157, p158, p159;
+    boolean p160, p161, p162, p163, p164, p165, p166, p167, p168, p169, p170, p171, p172, p173, p174, p175;
+    boolean p176, p177, p178, p179, p180, p181, p182, p183, p184, p185, p186, p187, p188, p189, p190, p191;
+    boolean p192, p193, p194, p195, p196, p197, p198, p199, p200, p201, p202, p203, p204, p205, p206, p207;
+    boolean p208, p209, p210, p211, p212, p213, p214, p215, p216, p217, p218, p219, p220, p221, p222, p223;
+    boolean p224, p225, p226, p227, p228, p229, p230, p231, p232, p233, p234, p235, p236, p237, p238, p239;
+    boolean p240, p241, p242, p243, p244, p245, p246, p247, p248, p249, p250, p251, p252, p253, p254, p255;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-pirk/blob/9af0dad4/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_testWithGMPConstantTime_jmhTest.java
----------------------------------------------------------------------
diff --git a/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_testWithGMPConstantTime_jmhTest.java b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_testWithGMPConstantTime_jmhTest.java
new file mode 100644
index 0000000..ef351d6
--- /dev/null
+++ b/target/generated-sources/annotations/org/apache/pirk/benchmark/generated/PaillierBenchmark_testWithGMPConstantTime_jmhTest.java
@@ -0,0 +1,414 @@
+package org.apache.pirk.benchmark.generated;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+import javax.annotation.Generated;
+import org.openjdk.jmh.annotations.CompilerControl;
+import org.openjdk.jmh.runner.InfraControl;
+import org.openjdk.jmh.infra.ThreadParams;
+import org.openjdk.jmh.results.BenchmarkTaskResult;
+import org.openjdk.jmh.results.Result;
+import org.openjdk.jmh.results.ThroughputResult;
+import org.openjdk.jmh.results.AverageTimeResult;
+import org.openjdk.jmh.results.SampleTimeResult;
+import org.openjdk.jmh.results.SingleShotResult;
+import org.openjdk.jmh.util.SampleBuffer;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.results.RawResults;
+import org.openjdk.jmh.results.ResultRole;
+import java.lang.reflect.Field;
+import org.openjdk.jmh.infra.BenchmarkParams;
+import org.openjdk.jmh.infra.IterationParams;
+
+import org.openjdk.jmh.infra.generated.Blackhole_jmhType;
+import org.apache.pirk.benchmark.generated.PaillierBenchmark_jmhType;
+import org.apache.pirk.benchmark.generated.PaillierBenchmark_PaillierBenchmarkState_jmhType;
+@Generated("org.openjdk.jmh.generators.core.BenchmarkGenerator")
+public final class PaillierBenchmark_testWithGMPConstantTime_jmhTest {
+
+    boolean p000, p001, p002, p003, p004, p005, p006, p007, p008, p009, p010, p011, p012, p013, p014, p015;
+    boolean p016, p017, p018, p019, p020, p021, p022, p023, p024, p025, p026, p027, p028, p029, p030, p031;
+    boolean p032, p033, p034, p035, p036, p037, p038, p039, p040, p041, p042, p043, p044, p045, p046, p047;
+    boolean p048, p049, p050, p051, p052, p053, p054, p055, p056, p057, p058, p059, p060, p061, p062, p063;
+    boolean p064, p065, p066, p067, p068, p069, p070, p071, p072, p073, p074, p075, p076, p077, p078, p079;
+    boolean p080, p081, p082, p083, p084, p085, p086, p087, p088, p089, p090, p091, p092, p093, p094, p095;
+    boolean p096, p097, p098, p099, p100, p101, p102, p103, p104, p105, p106, p107, p108, p109, p110, p111;
+    boolean p112, p113, p114, p115, p116, p117, p118, p119, p120, p121, p122, p123, p124, p125, p126, p127;
+    boolean p128, p129, p130, p131, p132, p133, p134, p135, p136, p137, p138, p139, p140, p141, p142, p143;
+    boolean p144, p145, p146, p147, p148, p149, p150, p151, p152, p153, p154, p155, p156, p157, p158, p159;
+    boolean p160, p161, p162, p163, p164, p165, p166, p167, p168, p169, p170, p171, p172, p173, p174, p175;
+    boolean p176, p177, p178, p179, p180, p181, p182, p183, p184, p185, p186, p187, p188, p189, p190, p191;
+    boolean p192, p193, p194, p195, p196, p197, p198, p199, p200, p201, p202, p203, p204, p205, p206, p207;
+    boolean p208, p209, p210, p211, p212, p213, p214, p215, p216, p217, p218, p219, p220, p221, p222, p223;
+    boolean p224, p225, p226, p227, p228, p229, p230, p231, p232, p233, p234, p235, p236, p237, p238, p239;
+    boolean p240, p241, p242, p243, p244, p245, p246, p247, p248, p249, p250, p251, p252, p253, p254, p255;
+    int startRndMask;
+
+    public BenchmarkTaskResult testWithGMPConstantTime_Throughput(InfraControl control, ThreadParams threadParams) throws Throwable {
+        if (threadParams.getSubgroupIndex() == 0) {
+            RawResults res = new RawResults();
+            Blackhole_jmhType l_blackhole1_1 = _jmh_tryInit_f_blackhole1_1(control, threadParams);
+            PaillierBenchmark_jmhType l_paillierbenchmark0_0 = _jmh_tryInit_f_paillierbenchmark0_0(control, threadParams);
+            PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G = _jmh_tryInit_f_paillierbenchmarkstate2_G(control, threadParams);
+
+            control.preSetup();
+            l_blackhole1_1.clearSinks();
+
+            control.announceWarmupReady();
+            while (control.warmupShouldWait) {
+                l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+                res.allOps++;
+            }
+
+            testWithGMPConstantTime_thrpt_jmhStub(control, res, l_paillierbenchmarkstate2_G, l_paillierbenchmark0_0, l_blackhole1_1);
+            control.announceWarmdownReady();
+            try {
+                while (control.warmdownShouldWait) {
+                    l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+                    res.allOps++;
+                }
+                control.preTearDown();
+            } catch (InterruptedException ie) {
+                control.preTearDownForce();
+            }
+
+            if (control.isLastIteration()) {
+                if (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.compareAndSet(l_paillierbenchmarkstate2_G, 0, 1)) {
+                    try {
+                        if (l_paillierbenchmarkstate2_G.readyTrial) {
+                            l_paillierbenchmarkstate2_G.readyTrial = false;
+                        }
+                    } finally {
+                        PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.set(l_paillierbenchmarkstate2_G, 0);
+                    }
+                } else {
+                    long l_paillierbenchmarkstate2_G_backoff = 1;
+                    while (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.get(l_paillierbenchmarkstate2_G) == 1) {
+                        TimeUnit.MILLISECONDS.sleep(l_paillierbenchmarkstate2_G_backoff);
+                        l_paillierbenchmarkstate2_G_backoff = Math.max(1024, l_paillierbenchmarkstate2_G_backoff * 2);
+                        if (Thread.interrupted()) throw new InterruptedException();
+                    }
+                }
+                synchronized(this.getClass()) {
+                    f_paillierbenchmarkstate2_G = null;
+                }
+                f_paillierbenchmark0_0 = null;
+                f_blackhole1_1 = null;
+            }
+            res.allOps += res.measuredOps;
+            int batchSize = control.iterationParams.getBatchSize();
+            int opsPerInv = control.benchmarkParams.getOpsPerInvocation();
+            res.allOps *= opsPerInv;
+            res.allOps /= batchSize;
+            res.measuredOps *= opsPerInv;
+            res.measuredOps /= batchSize;
+            BenchmarkTaskResult results = new BenchmarkTaskResult(res.allOps, res.measuredOps);
+            results.add(new ThroughputResult(ResultRole.PRIMARY, "testWithGMPConstantTime", res.measuredOps, res.getTime(), control.benchmarkParams.getTimeUnit()));
+            return results;
+        } else
+            throw new IllegalStateException("Harness failed to distribute threads among groups properly");
+    }
+
+    public void testWithGMPConstantTime_thrpt_jmhStub(InfraControl control, RawResults result, PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G, PaillierBenchmark_jmhType l_paillierbenchmark0_0, Blackhole_jmhType l_blackhole1_1) throws Throwable {
+        long operations = 0;
+        long realTime = 0;
+        result.startTime = System.nanoTime();
+        do {
+            l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+            operations++;
+        } while(!control.isDone);
+        result.stopTime = System.nanoTime();
+        result.realTime = realTime;
+        result.measuredOps = operations;
+    }
+
+
+    public BenchmarkTaskResult testWithGMPConstantTime_AverageTime(InfraControl control, ThreadParams threadParams) throws Throwable {
+        if (threadParams.getSubgroupIndex() == 0) {
+            RawResults res = new RawResults();
+            Blackhole_jmhType l_blackhole1_1 = _jmh_tryInit_f_blackhole1_1(control, threadParams);
+            PaillierBenchmark_jmhType l_paillierbenchmark0_0 = _jmh_tryInit_f_paillierbenchmark0_0(control, threadParams);
+            PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G = _jmh_tryInit_f_paillierbenchmarkstate2_G(control, threadParams);
+
+            control.preSetup();
+            l_blackhole1_1.clearSinks();
+
+            control.announceWarmupReady();
+            while (control.warmupShouldWait) {
+                l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+                res.allOps++;
+            }
+
+            testWithGMPConstantTime_avgt_jmhStub(control, res, l_paillierbenchmarkstate2_G, l_paillierbenchmark0_0, l_blackhole1_1);
+            control.announceWarmdownReady();
+            try {
+                while (control.warmdownShouldWait) {
+                    l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+                    res.allOps++;
+                }
+                control.preTearDown();
+            } catch (InterruptedException ie) {
+                control.preTearDownForce();
+            }
+
+            if (control.isLastIteration()) {
+                if (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.compareAndSet(l_paillierbenchmarkstate2_G, 0, 1)) {
+                    try {
+                        if (l_paillierbenchmarkstate2_G.readyTrial) {
+                            l_paillierbenchmarkstate2_G.readyTrial = false;
+                        }
+                    } finally {
+                        PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.set(l_paillierbenchmarkstate2_G, 0);
+                    }
+                } else {
+                    long l_paillierbenchmarkstate2_G_backoff = 1;
+                    while (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.get(l_paillierbenchmarkstate2_G) == 1) {
+                        TimeUnit.MILLISECONDS.sleep(l_paillierbenchmarkstate2_G_backoff);
+                        l_paillierbenchmarkstate2_G_backoff = Math.max(1024, l_paillierbenchmarkstate2_G_backoff * 2);
+                        if (Thread.interrupted()) throw new InterruptedException();
+                    }
+                }
+                synchronized(this.getClass()) {
+                    f_paillierbenchmarkstate2_G = null;
+                }
+                f_paillierbenchmark0_0 = null;
+                f_blackhole1_1 = null;
+            }
+            res.allOps += res.measuredOps;
+            int batchSize = control.iterationParams.getBatchSize();
+            int opsPerInv = control.benchmarkParams.getOpsPerInvocation();
+            res.allOps *= opsPerInv;
+            res.allOps /= batchSize;
+            res.measuredOps *= opsPerInv;
+            res.measuredOps /= batchSize;
+            BenchmarkTaskResult results = new BenchmarkTaskResult(res.allOps, res.measuredOps);
+            results.add(new AverageTimeResult(ResultRole.PRIMARY, "testWithGMPConstantTime", res.measuredOps, res.getTime(), control.benchmarkParams.getTimeUnit()));
+            return results;
+        } else
+            throw new IllegalStateException("Harness failed to distribute threads among groups properly");
+    }
+
+    public void testWithGMPConstantTime_avgt_jmhStub(InfraControl control, RawResults result, PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G, PaillierBenchmark_jmhType l_paillierbenchmark0_0, Blackhole_jmhType l_blackhole1_1) throws Throwable {
+        long operations = 0;
+        long realTime = 0;
+        result.startTime = System.nanoTime();
+        do {
+            l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+            operations++;
+        } while(!control.isDone);
+        result.stopTime = System.nanoTime();
+        result.realTime = realTime;
+        result.measuredOps = operations;
+    }
+
+
+    public BenchmarkTaskResult testWithGMPConstantTime_SampleTime(InfraControl control, ThreadParams threadParams) throws Throwable {
+        if (threadParams.getSubgroupIndex() == 0) {
+            RawResults res = new RawResults();
+            Blackhole_jmhType l_blackhole1_1 = _jmh_tryInit_f_blackhole1_1(control, threadParams);
+            PaillierBenchmark_jmhType l_paillierbenchmark0_0 = _jmh_tryInit_f_paillierbenchmark0_0(control, threadParams);
+            PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G = _jmh_tryInit_f_paillierbenchmarkstate2_G(control, threadParams);
+
+            control.preSetup();
+            l_blackhole1_1.clearSinks();
+
+            control.announceWarmupReady();
+            while (control.warmupShouldWait) {
+                l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+                res.allOps++;
+            }
+
+            int targetSamples = (int) (control.getDuration(TimeUnit.MILLISECONDS) * 20); // at max, 20 timestamps per millisecond
+            int batchSize = control.iterationParams.getBatchSize();
+            int opsPerInv = control.benchmarkParams.getOpsPerInvocation();
+            SampleBuffer buffer = new SampleBuffer();
+            testWithGMPConstantTime_sample_jmhStub(control, res, buffer, targetSamples, opsPerInv, batchSize, l_paillierbenchmarkstate2_G, l_paillierbenchmark0_0, l_blackhole1_1);
+            control.announceWarmdownReady();
+            try {
+                while (control.warmdownShouldWait) {
+                    l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+                    res.allOps++;
+                }
+                control.preTearDown();
+            } catch (InterruptedException ie) {
+                control.preTearDownForce();
+            }
+
+            if (control.isLastIteration()) {
+                if (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.compareAndSet(l_paillierbenchmarkstate2_G, 0, 1)) {
+                    try {
+                        if (l_paillierbenchmarkstate2_G.readyTrial) {
+                            l_paillierbenchmarkstate2_G.readyTrial = false;
+                        }
+                    } finally {
+                        PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.set(l_paillierbenchmarkstate2_G, 0);
+                    }
+                } else {
+                    long l_paillierbenchmarkstate2_G_backoff = 1;
+                    while (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.get(l_paillierbenchmarkstate2_G) == 1) {
+                        TimeUnit.MILLISECONDS.sleep(l_paillierbenchmarkstate2_G_backoff);
+                        l_paillierbenchmarkstate2_G_backoff = Math.max(1024, l_paillierbenchmarkstate2_G_backoff * 2);
+                        if (Thread.interrupted()) throw new InterruptedException();
+                    }
+                }
+                synchronized(this.getClass()) {
+                    f_paillierbenchmarkstate2_G = null;
+                }
+                f_paillierbenchmark0_0 = null;
+                f_blackhole1_1 = null;
+            }
+            res.allOps += res.measuredOps * batchSize;
+            res.allOps *= opsPerInv;
+            res.allOps /= batchSize;
+            res.measuredOps *= opsPerInv;
+            BenchmarkTaskResult results = new BenchmarkTaskResult(res.allOps, res.measuredOps);
+            results.add(new SampleTimeResult(ResultRole.PRIMARY, "testWithGMPConstantTime", buffer, control.benchmarkParams.getTimeUnit()));
+            return results;
+        } else
+            throw new IllegalStateException("Harness failed to distribute threads among groups properly");
+    }
+
+    public void testWithGMPConstantTime_sample_jmhStub(InfraControl control, RawResults result, SampleBuffer buffer, int targetSamples, long opsPerInv, int batchSize, PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G, PaillierBenchmark_jmhType l_paillierbenchmark0_0, Blackhole_jmhType l_blackhole1_1) throws Throwable {
+        long realTime = 0;
+        long operations = 0;
+        int rnd = (int)System.nanoTime();
+        int rndMask = startRndMask;
+        long time = 0;
+        int currentStride = 0;
+        do {
+            rnd = (rnd * 1664525 + 1013904223);
+            boolean sample = (rnd & rndMask) == 0;
+            if (sample) {
+                time = System.nanoTime();
+            }
+            for (int b = 0; b < batchSize; b++) {
+                if (control.volatileSpoiler) return;
+                l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+            }
+            if (sample) {
+                buffer.add((System.nanoTime() - time) / opsPerInv);
+                if (currentStride++ > targetSamples) {
+                    buffer.half();
+                    currentStride = 0;
+                    rndMask = (rndMask << 1) + 1;
+                }
+            }
+            operations++;
+        } while(!control.isDone);
+        startRndMask = Math.max(startRndMask, rndMask);
+        result.realTime = realTime;
+        result.measuredOps = operations;
+    }
+
+
+    public BenchmarkTaskResult testWithGMPConstantTime_SingleShotTime(InfraControl control, ThreadParams threadParams) throws Throwable {
+        if (threadParams.getSubgroupIndex() == 0) {
+            Blackhole_jmhType l_blackhole1_1 = _jmh_tryInit_f_blackhole1_1(control, threadParams);
+            PaillierBenchmark_jmhType l_paillierbenchmark0_0 = _jmh_tryInit_f_paillierbenchmark0_0(control, threadParams);
+            PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G = _jmh_tryInit_f_paillierbenchmarkstate2_G(control, threadParams);
+
+            control.preSetup();
+            l_blackhole1_1.clearSinks();
+
+            RawResults res = new RawResults();
+            int batchSize = control.iterationParams.getBatchSize();
+            testWithGMPConstantTime_ss_jmhStub(control, batchSize, res, l_paillierbenchmarkstate2_G, l_paillierbenchmark0_0, l_blackhole1_1);
+            control.preTearDown();
+
+            if (control.isLastIteration()) {
+                if (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.compareAndSet(l_paillierbenchmarkstate2_G, 0, 1)) {
+                    try {
+                        if (l_paillierbenchmarkstate2_G.readyTrial) {
+                            l_paillierbenchmarkstate2_G.readyTrial = false;
+                        }
+                    } finally {
+                        PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.set(l_paillierbenchmarkstate2_G, 0);
+                    }
+                } else {
+                    long l_paillierbenchmarkstate2_G_backoff = 1;
+                    while (PaillierBenchmark_PaillierBenchmarkState_jmhType.tearTrialMutexUpdater.get(l_paillierbenchmarkstate2_G) == 1) {
+                        TimeUnit.MILLISECONDS.sleep(l_paillierbenchmarkstate2_G_backoff);
+                        l_paillierbenchmarkstate2_G_backoff = Math.max(1024, l_paillierbenchmarkstate2_G_backoff * 2);
+                        if (Thread.interrupted()) throw new InterruptedException();
+                    }
+                }
+                synchronized(this.getClass()) {
+                    f_paillierbenchmarkstate2_G = null;
+                }
+                f_paillierbenchmark0_0 = null;
+                f_blackhole1_1 = null;
+            }
+            int opsPerInv = control.benchmarkParams.getOpsPerInvocation();
+            long totalOps = opsPerInv;
+            BenchmarkTaskResult results = new BenchmarkTaskResult(totalOps, totalOps);
+            results.add(new SingleShotResult(ResultRole.PRIMARY, "testWithGMPConstantTime", res.getTime(), control.benchmarkParams.getTimeUnit()));
+            return results;
+        } else
+            throw new IllegalStateException("Harness failed to distribute threads among groups properly");
+    }
+
+    public void testWithGMPConstantTime_ss_jmhStub(InfraControl control, int batchSize, RawResults result, PaillierBenchmark_PaillierBenchmarkState_jmhType l_paillierbenchmarkstate2_G, PaillierBenchmark_jmhType l_paillierbenchmark0_0, Blackhole_jmhType l_blackhole1_1) throws Throwable {
+        long realTime = 0;
+        result.startTime = System.nanoTime();
+        for (int b = 0; b < batchSize; b++) {
+            if (control.volatileSpoiler) return;
+            l_paillierbenchmark0_0.testWithGMPConstantTime(l_paillierbenchmarkstate2_G);
+        }
+        result.stopTime = System.nanoTime();
+        result.realTime = realTime;
+    }
+
+    
+    static volatile PaillierBenchmark_PaillierBenchmarkState_jmhType f_paillierbenchmarkstate2_G;
+    
+    PaillierBenchmark_PaillierBenchmarkState_jmhType _jmh_tryInit_f_paillierbenchmarkstate2_G(InfraControl control, ThreadParams threadParams) throws Throwable {
+        PaillierBenchmark_PaillierBenchmarkState_jmhType val = f_paillierbenchmarkstate2_G;
+        if (val != null) {
+            return val;
+        }
+        synchronized(this.getClass()) {
+            val = f_paillierbenchmarkstate2_G;
+            if (val != null) {
+                return val;
+            }
+            val = new PaillierBenchmark_PaillierBenchmarkState_jmhType();
+            val.setUp();
+            val.readyTrial = true;
+            f_paillierbenchmarkstate2_G = val;
+        }
+        return val;
+    }
+    
+    Blackhole_jmhType f_blackhole1_1;
+    
+    Blackhole_jmhType _jmh_tryInit_f_blackhole1_1(InfraControl control, ThreadParams threadParams) throws Throwable {
+        Blackhole_jmhType val = f_blackhole1_1;
+        if (val == null) {
+            val = new Blackhole_jmhType();
+            f_blackhole1_1 = val;
+        }
+        return val;
+    }
+    
+    PaillierBenchmark_jmhType f_paillierbenchmark0_0;
+    
+    PaillierBenchmark_jmhType _jmh_tryInit_f_paillierbenchmark0_0(InfraControl control, ThreadParams threadParams) throws Throwable {
+        PaillierBenchmark_jmhType val = f_paillierbenchmark0_0;
+        if (val == null) {
+            val = new PaillierBenchmark_jmhType();
+            f_paillierbenchmark0_0 = val;
+        }
+        return val;
+    }
+
+
+}
+