/*
	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.
*/

/* Fixed Data in ROM - Field and Curve parameters */

public class ROM
{
/* Don't Modify from here... */
	public static final int CHUNK=64; /* Set word size */
	public static final int NOT_SPECIAL=0;
	public static final int PSEUDO_MERSENNE=1;
	public static final int MONTGOMERY_FRIENDLY=2;
	public static final int GENERALISED_MERSENNE=3;
	public static final int WEIERSTRASS=0;
	public static final int EDWARDS=1;
	public static final int MONTGOMERY=2;
	public static final int BN_CURVE=0;
	public static final int BLS_CURVE=1;

/* ...to here */

/*** Enter Some Field details here  ***/
// BN254 Curve
//	public static final int MODBITS=254; /* Number of bits in Modulus */
//	public static final int MOD8=3;  /* Modulus mod 8 */
//	public static final int BASEBITS=56;
//	public static final int AES_S=0;  /* AES equivalaent strength if significantly less than group size */

// BN454 Curve
//	public static final int MODBITS=454; /* Number of bits in Modulus */
//	public static final int MOD8=3;  /* Modulus mod 8 */
//	public static final int BASEBITS=60;
//	public static final int AES_S=128;

// BLS455 Curve
//	public static final int MODBITS=455; /* Number of bits in Modulus */
//	public static final int MOD8=3;  /* Modulus mod 8 */
//	public static final int BASEBITS=60;
//	public static final int AES_S=128;

// BLS383 Curve
	public static final int MODBITS=383; /* Number of bits in Modulus */
	public static final int MOD8=3;  /* Modulus mod 8 */
	public static final int BASEBITS=56; 
	public static final int AES_S=0;


// HIFIVE Curve
//	public static final int MODBITS=336;
//	public static final int MOD8=5; 
//	public static final int BASEBITS=60;
//	public static final int AES_S=128;

// GOLDILOCKS
//	public static final int MODBITS=448;
//	public static final int MOD8=7;
//	public static final int BASEBITS=60;
//	public static final int AES_S=0; 

// NIST384
//	public static final int MODBITS=384;
//	public static final int MOD8=7;
//	public static final int BASEBITS=60;	
//	public static final int AES_S=0; 

// C41417
//	public static final int MODBITS=414;
//	public static final int MOD8=7;
//	public static final int BASEBITS=60;	
//	public static final int AES_S=0; 

// NIST521
//	public static final int MODBITS=521;
//	public static final int MOD8=7;
//	public static final int BASEBITS=60;	
//	public static final int AES_S=0; 
	
// BN646 Curve
//	public static final int MODBITS=646;
//	public static final int MOD8=3;
//	public static final int BASEBITS=60;	
//	public static final int AES_S=192; 

// Curve 25519
//	public static final int MODBITS=255; 
//	public static final int MOD8=5;  
//	public static final int BASEBITS=56;	
//	public static final int AES_S=0; 

// NIST256 or Brainpool
//	public static final int MODBITS=256; 
//	public static final int MOD8=7;  
//	public static final int BASEBITS=56;	
//	public static final int AES_S=0; 

// MF254 
//	public static final int MODBITS=254; 
//	public static final int MOD8=7;  
//	public static final int BASEBITS=56;
//	public static final int AES_S=0; 

// MS255
//	public static final int MODBITS= 255;
//	public static final int MOD8= 3;
//	public static final int BASEBITS=56;
//	public static final int AES_S=0; 

// MF256
//	public static final int MODBITS=256; 
//	public static final int MOD8=7;  
//	public static final int BASEBITS=56;
//	public static final int AES_S=0; 

// MS256
//	public static final int MODBITS= 256;
//	public static final int MOD8= 3;
//	public static final int BASEBITS=56;
//	public static final int AES_S=0; 

// ANSSI
//  public static final int MODBITS= 256;
//  public static final int MOD8= 3;
//	public static final int BASEBITS=56;
//	public static final int AES_S=0; 


/* RSA/DH modulus length as multiple of BIGBITS */
	public static final int FFLEN=4;

/* Don't Modify from here... */
	public static final int NLEN=(1+((MODBITS-1)/BASEBITS));
	public static final int DNLEN=2*NLEN;
	public static final long BMASK=(((long)1<<BASEBITS)-1);
	public static final int MODBYTES=(1+(MODBITS-1)/8);
	public static final int HBITS=BASEBITS/2;
	public static final long HMASK=(((long)1<<HBITS)-1);
	public static final int NEXCESS =((int)1<<(CHUNK-BASEBITS-1));
	public static final long FEXCESS =((long)1<<(BASEBITS*NLEN-MODBITS)); 
	public static final long OMASK=(long)(-1)<<(MODBITS%BASEBITS);
	public static final int TBITS=MODBITS%BASEBITS; // Number of active bits in top word 
	public static final long TMASK=((long)1<<TBITS)-1;
	public static final int BIGBITS=(MODBYTES*8);

/* Finite field support - for RSA, DH etc. */
	public static final int FF_BITS=(BIGBITS*FFLEN); /* Finite Field Size in bits - must be 256.2^n */
	public static final int HFLEN=(FFLEN/2);  /* Useful for half-size RSA private key operations */

	public static final int P_MBITS=MODBYTES*8;
	public static final long P_OMASK=((long)(-1)<<(P_MBITS%BASEBITS));
	public static final long P_FEXCESS=((long)1<<(BASEBITS*NLEN-P_MBITS));
	public static final int P_TBITS=(P_MBITS%BASEBITS);

/* ...to here */

// START SPECIFY FIELD DETAILS HERE
//*********************************************************************************
// Curve25519 Modulus 
//	public static final int MODTYPE=PSEUDO_MERSENNE;
//	public static final long[] Modulus= {0xFFFFFFFFFFFFEDL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x7FFFFFFFL};
//	public static final long MConst=0x13L;


// NIST-256 Curve 
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus= {0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFL,0x0L,0x1000000L,0xFFFFFFFFL};
//	public static final long MConst=0x1L;

// MF254 Modulus
//	public static final int MODTYPE=MONTGOMERY_FRIENDLY;
//	public static final long[] Modulus= {0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x3F80FFFFL};
//	public static final long MConst=0x3F810000L;

// MS255 Modulus
//public static final int MODTYPE= 1;
//public static final long[] Modulus= {0xFFFFFFFFFFFD03L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x7FFFFFFFL};
//public static final long MConst=0x2FDL;

// MS256 Modulus
//public static final int MODTYPE= 1;
//public static final long[] Modulus= {0xFFFFFFFFFFFF43L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL};
//public static final long MConst=0xBDL;

// MF256 Modulus
//public static final int MODTYPE= 2;
//public static final long[] Modulus= {0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFA7FFFFL};
//public static final long MConst=0xFFA80000L;

// Brainpool
//	public static final int MODTYPE= NOT_SPECIAL;
//	public static final long[] Modulus= {0x13481D1F6E5377L,0xF623D526202820L,0x909D838D726E3BL,0xA1EEA9BC3E660AL,0xA9FB57DBL};
//	public static final long MConst=0xA75590CEFD89B9L;

// ANSSI
//  public static final int MODTYPE= 0;
//  public static final long[] Modulus= {0xFCF353D86E9C03L,0xADBCABC8CA6DE8L,0xE8CE42435B3961L,0xB3AD58F10126DL,0xF1FD178CL};
//  public static final long MConst=0x97483A164E1155L;

// BNCX Curve Modulus
//public static final int MODTYPE=NOT_SPECIAL;
//public static final long[] Modulus= {0x6623EF5C1B55B3L,0xD6EE18093EE1BEL,0x647A6366D3243FL,0x8702A0DB0BDDFL,0x24000000L};
//public static final long MConst=0x4E205BF9789E85L;

// HIFIVE Curve
//public static final int MODTYPE=PSEUDO_MERSENNE;
//public static final long[] Modulus= {0xFFFFFFFFFFFFFFDL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFL};
//public static final long MConst=0x3L;

//GOLDILOCKS
//	public static final int MODTYPE=GENERALISED_MERSENNE;
//	public static final long[] Modulus={0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFEFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFL};
//	public static final long MConst=0x1;

// NIST384 Curve Modulus
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus={0xFFFFFFFFL,0xFFFFFF000000000L,0xFFFFFFFFFFFFEFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFL};
//	public static final long MConst=0x100000001L;

// C41417 Curve Modulus
//	public static final int MODTYPE=PSEUDO_MERSENNE;
//	public static final long[] Modulus={0xFFFFFFFFFFFFFEFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x3FFFFFFFFFFFFFL};
//	public static final long MConst=0x11L;

// NIST521
//	public static final int MODTYPE=PSEUDO_MERSENNE;
//	public static final long[] Modulus={0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x1FFFFFFFFFFL};
//	public static final long MConst=0x1L;

// BN646
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus=	{0x2406C08404E013L,0x240510420138000L,0xE01920840000000L,0x601B00000901441L,0x400000006C0A206L,0xD814423414402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L};
//	public static final long MConst=0xCE50F5CF5F615E5L;		

// BN254 Curve
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus= {0x13L,0x13A7L,0x80000000086121L,0x40000001BA344DL,0x25236482L};
//	public static final long MConst=0x435E50D79435E5L;

// BN454 Curve
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus= {0x4E00000013L,0x4E006C4E0000840L,0x800014508002508L,0x888401D5080091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L};
//	public static final long MConst=0xF33C46ED79435E5L;

// BLS455 Curve
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus= {0xAA00001800002ABL,0xC589556B2AA956AL,0xB9994ACE86D1BA6L,0x3954FCB314B8B3DL,0xE3A5B1D56234BD9L,0x95B49203003F665L,0x57955572AA00E0FL,0x555559555L};
//	public static final long MConst=0xB3EF8137F4017FDL;

// BLS383 Curve
	public static final int MODTYPE=NOT_SPECIAL;
	public static final long[] Modulus= {0xACAAB52AAD556BL,0x1BB01475F75D7AL,0xCF73083D5D7520L,0x531820F99EB16L,0x2C01355A68EA32L,0x5C6105C552A785L,0x7AC52080A9F7L};
	public static final long MConst=0xA59AB3B123D0BDL;


// BNT Curve
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus= {0x9DBBFEEEB4A713L,0x555614F464BABEL,0x3696F8D5F06E8AL,0x6517014EFA0BABL,0x240120DBL};
//	public static final long MConst=0xC5A872D914C4E5L;

// BNT2 Curve
//	public static final int MODTYPE=NOT_SPECIAL;
//	public static final long[] Modulus= {0xB2DC2BB460A48BL,0x93E428F0D651E8L,0xF3B89D00081CFL,0x410F5AADB74E20L,0x24000482L};
//	public static final long MConst=0xFE6A47A6505CDDL;

// START SPECIFY CURVE DETAILS HERE
//*********************************************************************************

// Ed25519 Curve 
//	public static final int CURVETYPE=EDWARDS;
//	public static final int CURVE_A = -1;
//	public static final long[] CURVE_B = {0xEB4DCA135978A3L,0xA4D4141D8AB75L,0x797779E8980070L,0x2B6FFE738CC740L,0x52036CEEL};
//	public static final long[] CURVE_Order={0x12631A5CF5D3EDL,0xF9DEA2F79CD658L,0x14DEL,0x0L,0x10000000L};
//	public static final long[] CURVE_Gx ={0x562D608F25D51AL,0xC7609525A7B2C9L,0x31FDD6DC5C692CL,0xCD6E53FEC0A4E2L,0x216936D3L};
//	public static final long[] CURVE_Gy ={0x66666666666658L,0x66666666666666L,0x66666666666666L,0x66666666666666L,0x66666666L};

// Original Curve25519 
//	public static final int CURVETYPE=MONTGOMERY;
//	public static final int CURVE_A =486662;
//	public static final long[] CURVE_B = {0x0L,0x0L,0x0L,0x0L,0x0L}; // not used
//	public static final long[] CURVE_Order={0x12631A5CF5D3EDL,0xF9DEA2F79CD658L,0x14DEL,0x0L,0x10000000L};
//	public static final long[] CURVE_Gx ={0x9L,0x0L,0x0L,0x0L,0x0L};
//	public static final long[] CURVE_Gy ={0x0L,0x0L,0x0L,0x0L,0x0L}; // not used

// NIST-256 Curve
//	public static final int CURVETYPE=WEIERSTRASS;
//	public static final int CURVE_A = -3;
//	public static final long[] CURVE_B = {0xCE3C3E27D2604BL,0x6B0CC53B0F63BL,0x55769886BC651DL,0xAA3A93E7B3EBBDL,0x5AC635D8L};
//	public static final long[] CURVE_Order={0xB9CAC2FC632551L,0xFAADA7179E84F3L,0xFFFFFFFFFFBCE6L,0xFFFFFFL,0xFFFFFFFFL};
//	public static final long[] CURVE_Gx ={0xA13945D898C296L,0x7D812DEB33A0F4L,0xE563A440F27703L,0xE12C4247F8BCE6L,0x6B17D1F2L};
//	public static final long[] CURVE_Gy ={0xB6406837BF51F5L,0x33576B315ECECBL,0x4A7C0F9E162BCEL,0xFE1A7F9B8EE7EBL,0x4FE342E2L};

// MF254 Modulus, Weierstrass Curve w-254-mont
//public static final int CURVETYPE= WEIERSTRASS;
//public static final int CURVE_A = -3;
//public static final long[] CURVE_B = {0xFFFFFFFFFFD08DL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x3F80FFFFL};
//public static final long[] CURVE_Order={0xA419C4AF8DF83FL,0x8BEA0DA375C06FL,0xFFFFFFFFFFEB81L,0xFFFFFFFFFFFFFFL,0x3F80FFFFL};
//public static final long[] CURVE_Gx ={0x2L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0x65DF37F90D4EBCL,0x38E3F8511931ADL,0x75BD778AEBDFB7L,0x3B2E56014AE15AL,0x140E3FD3L};

// MF254 Modulus, Edwards Curve ed-254-mont
//public static final int CURVETYPE= EDWARDS;
//public static final int CURVE_A = -1;
//public static final long[] CURVE_B = {0x367BL,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Order={0xF3D3FEC46E98C7L,0x306C8BD62FB0EAL,0xFFFFFFFFFFEB95L,0xFFFFFFFFFFFFFFL,0xFE03FFFL};
//public static final long[] CURVE_Gx ={0x1L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0x52D0FDAF2701E5L,0x9A840E3212187CL,0xD502363F4E3632L,0xD6A4C335951D00L,0x19F0E690L};

// MF254 Modulus, Montgomery Curve
//	public static final int CURVETYPE=MONTGOMERY;
//	public static final int CURVE_A =-55790;
//	public static final long[] CURVE_B = {0x0L,0x0L,0x0L,0x0L,0x0L}; // not used
//	public static final long[] CURVE_Order={0xF3D3FEC46E98C7L,0x306C8BD62FB0EAL,0xFFFFFFFFFFEB95L,0xFFFFFFFFFFFFFFL,0xFE03FFFL};
//	public static final long[] CURVE_Gx ={0x3L,0x0L,0x0L,0x0L,0x0L};
//	public static final long[] CURVE_Gy ={0x0L,0x0L,0x0L,0x0L,0x0L}; // not used

// MS255 Modulus, Weierstrass Curve
//public static final int CURVETYPE= WEIERSTRASS;
//public static final int CURVE_A = -3;
//public static final long[] CURVE_B = {0xFFFFFFFFFFAB46L,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFL,0x7FFFFFFFL};
//public static final long[] CURVE_Order={0x8FAC983C594AEBL,0x38283AD2B3DFABL,0xFFFFFFFFFF864AL,0xFFFFFFFFFFFFFFL,0x7FFFFFFFL};
//public static final long[] CURVE_Gx ={0x1L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0x33FF6769CB44BAL,0xC78CDDFDA60D17L,0xF9B2FF7D177DB6L,0xEDBA7833921EBFL,0x6F7A6AC0L};

// MS255 Modulus, Edwards Curve
//public static final int CURVETYPE= EDWARDS;
//public static final int CURVE_A = -1;
//public static final long[] CURVE_B = {0xEA97L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Order={0x49D1ED0436EB75L,0xA785EDA6832EACL,0xFFFFFFFFFFDCF1L,0xFFFFFFFFFFFFFFL,0x1FFFFFFFL};
//public static final long[] CURVE_Gx ={0x4L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0x2A255BD08736A0L,0x4B8AED445A45BAL,0xDD8E0C47E55291L,0x4A7BB545EC254CL,0x26CB7853L};

// MS255 Modulus, Montgomery Curve
//	public static final int CURVETYPE=MONTGOMERY;
//	public static final int CURVE_A =-240222;
//	public static final long[] CURVE_B = {0x0L,0x0L,0x0L,0x0L,0x0L}; // not used
//	public static final long[] CURVE_Order={0x49D1ED0436EB75L,0xA785EDA6832EACL,0xFFFFFFFFFFDCF1L,0xFFFFFFFFFFFFFFL,0x1FFFFFFFL};
//	public static final long[] CURVE_Gx ={0x4L,0x0L,0x0L,0x0L,0x0L};
//	public static final long[] CURVE_Gy ={0x0L,0x0L,0x0L,0x0L,0x0L}; // not used

// MS256, Weierstrass Curve
//public static final int CURVETYPE= WEIERSTRASS;
//public static final int CURVE_A = -3;
//public static final long[] CURVE_B = {0x25581L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Order={0xAB20294751A825L,0x8275EA265C6020L,0xFFFFFFFFFFE43CL,0xFFFFFFFFFFFFFFL,0xFFFFFFFFL};
//public static final long[] CURVE_Gx ={0x1L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0xF46306C2B56C77L,0x2F9375894EC10BL,0x6CCEEEDD6BD02CL,0xC1E466D7FC82C9L,0x696F1853L};

// MS256, Edwards Curve
//public static final int CURVETYPE= EDWARDS;
//public static final int CURVE_A = -1;
//public static final long[] CURVE_B = {0x3BEEL,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Order={0xB84E6F1122B4ADL,0xA55AD0A6BC64E5L,0xFFFFFFFFFFBE6AL,0xFFFFFFFFFFFFFFL,0x3FFFFFFFL};
//public static final long[] CURVE_Gx ={0xDL,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0x7F6FB5331CADBAL,0x6D63824D303F70L,0xB39FA046BFBE2AL,0x2A1276DBA3D330L,0x7D0AB41EL};

// MS256 Modulus, Montgomery Curve
//	public static final int CURVETYPE=MONTGOMERY;
//	public static final int CURVE_A =-61370;
//	public static final long[] CURVE_B = {0x0L,0x0L,0x0L,0x0L,0x0L}; // not used
//  public static final long[] CURVE_Order={0xB84E6F1122B4ADL,0xA55AD0A6BC64E5L,0xFFFFFFFFFFBE6AL,0xFFFFFFFFFFFFFFL,0x3FFFFFFFL};
//	public static final long[] CURVE_Gx ={0xbL,0x0L,0x0L,0x0L,0x0L};
//	public static final long[] CURVE_Gy ={0x0L,0x0L,0x0L,0x0L,0x0L}; // not used

// MF256 Modulus, Weierstrass Curve
//public static final int CURVETYPE= WEIERSTRASS;
//public static final int CURVE_A = -3;
//public static final long[] CURVE_B = {0x14E6AL,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Order={0x10C5E1A79857EBL,0x7513E6E5074B9DL,0xFFFFFFFFFFFC51L,0xFFFFFFFFFFFFFFL,0xFFA7FFFFL};
//public static final long[] CURVE_Gx ={0x1L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0x7954C2B724D2AL,0x47EB8D94DC6610L,0x26123DAE289569L,0xBE1808CE7BABBAL,0x20887C87L};

// MF256, Edwards Curve
//public static final int CURVETYPE= EDWARDS;
//public static final int CURVE_A = -1;
//public static final long[] CURVE_B = {0x350AL,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Order={0xD92EDED8EC7BABL,0xBBAFB86733C966L,0xFFFFFFFFFFB154L,0xFFFFFFFFFFFFFFL,0x3FE9FFFFL};
//public static final long[] CURVE_Gx ={0x1L,0x0L,0x0L,0x0L,0x0L};
//public static final long[] CURVE_Gy ={0xEAA722F2F3C908L,0x5E648DFEA68D7DL,0xF3DB2C1AACA0C0L,0xF8CC4D5AEAEBEEL,0xDAD8D4F8L};

// MF256 Modulus, Montgomery Curve
//	public static final int CURVETYPE=MONTGOMERY;
//	public static final int CURVE_A =-54314;
//	public static final long[] CURVE_B = {0x0L,0x0L,0x0L,0x0L,0x0L}; // not used
//  public static final long[] CURVE_Order={0xD92EDED8EC7BABL,0xBBAFB86733C966L,0xFFFFFFFFFFB154L,0xFFFFFFFFFFFFFFL,0x3FE9FFFFL};
//	public static final long[] CURVE_Gx ={0x8L,0x0L,0x0L,0x0L,0x0L};
//	public static final long[] CURVE_Gy ={0x0L,0x0L,0x0L,0x0L,0x0L}; // not used

// Brainpool
//	public static final int CURVETYPE= 0;
//	public static final int CURVE_A = -3;
//	public static final long[] CURVE_B = {0xE58101FEE92B04L,0xEBC4AF2F49256AL,0x733D0B76B7BF93L,0x30D84EA4FE66A7L,0x662C61C4L};
//	public static final long[] CURVE_Order={0x1E0E82974856A7L,0x7AA3B561A6F790L,0x909D838D718C39L,0xA1EEA9BC3E660AL,0xA9FB57DBL};
//	public static final long[] CURVE_Gx ={0xA191562E1305F4L,0x42C47AAFBC2B79L,0xB23A656149AFA1L,0xC1CFE7B7732213L,0xA3E8EB3CL};
//	public static final long[] CURVE_Gy ={0xABE8F35B25C9BEL,0xB6DE39D027001DL,0xE14644417E69BCL,0x3439C56D7F7B22L,0x2D996C82L};

// ANSSI
//  public static final int CURVETYPE= 0;
//  public static final int CURVE_A = -3;
//  public static final long[] CURVE_B = {0x75ED967B7BB73FL,0xC9AE4B1A18030L,0x754A44C00FDFECL,0x5428A9300D4ABAL,0xEE353FCAL};
//  public static final long[] CURVE_Order={0xFDD459C6D655E1L,0x67E140D2BF941FL,0xE8CE42435B53DCL,0xB3AD58F10126DL,0xF1FD178CL};
//  public static final long[] CURVE_Gx ={0xC97A2DD98F5CFFL,0xD2DCAF98B70164L,0x4749D423958C27L,0x56C139EB31183DL,0xB6B3D4C3L};
//  public static final long[] CURVE_Gy ={0x115A1554062CFBL,0xC307E8E4C9E183L,0xF0F3ECEF8C2701L,0xC8B204911F9271L,0x6142E0F7L};

// HIFIVE
//  public static final int CURVETYPE= EDWARDS;
//  public static final int CURVE_A = 1;
//  public static final long[] CURVE_B = {0x2B67L,0x0L,0x0L,0x0L,0x0L,0x0L};
//  public static final long[] CURVE_Order={0xB2F95973E9FA805L,0xC0BD6B87F93BAA7L,0x71415FA9850L,0x0L,0x0L,0x200000000L};
//  public static final long[] CURVE_Gx ={0xCL,0x0L,0x0L,0x0L,0x0L,0x0L};
//  public static final long[] CURVE_Gy ={0x2BEC68505FE8632L,0x5D5650CA0365DB1L,0x3811C7EF435B6DBL,0x7853D1B14B46CL,0x56502E18E1C161DL,0xC0DC616BL};

// GOLDILOCKS
//	public static final int CURVETYPE= EDWARDS;
//	public static final int CURVE_A = 1;
//	public static final long[] CURVE_B = {0xFFFFFFFFFFF6756L,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFEFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFL};
//	public static final long[] CURVE_Order={0x378C292AB5844F3L,0x6CC2728DC58F552L,0xEDB49AED6369021L,0xFFFF7CCA23E9C44L,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x3FFFFFFL};
//	public static final long[] CURVE_Gx ={0x555555555555555L,0x555555555555555L,0x555555555555555L,0xAAA955555555555L,0xAAAAAAAAAAAAAAAL,0xAAAAAAAAAAAAAAAL,0xAAAAAAAAAAAAAAAL,0xAAAAAAAL};
//	public static final long[] CURVE_Gy ={0xAEAFBCDEA9386EDL,0xBCB2BED1CDA06BDL,0x565833A2A3098BBL,0x6D728AD8C4B80D6L,0x7A035884DD7B7E3L,0x205086C2B0036EDL,0x34AD7048DB359D6L,0xAE05E96L};

// NIST384
//	public static final int CURVETYPE= WEIERSTRASS;
//	public static final int CURVE_A = -3;
//  public static final long[] CURVE_B = {0xA85C8EDD3EC2AEFL,0x56398D8A2ED19D2L,0x4088F5013875AC6L,0x9C6EFE814112031L,0x56BE3F82D19181DL,0xA7E23EE7E4988E0L,0xB3312FL};
//	public static final long[] CURVE_Order= {0xCEC196ACCC52973L,0x1A0DB248B0A77AEL,0x34D81F4372DDF58L,0xFFFFFFFFFFFFC76L,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFL};
//	public static final long[] CURVE_Gx = {0xA545E3872760AB7L,0x2F25DBF55296C3L,0x741E082542A3855L,0x3B628BA79B9859FL,0x71EF320AD746E1DL,0x22BE8B05378EB1CL,0xAA87CAL};
//  public static final long[] CURVE_Gy = {0xA431D7C90EA0E5FL,0x60B1CE1D7E819D7L,0xA3113B5F0B8C00AL,0x1DBD289A147CE9DL,0x8BF9292DC29F8F4L,0x4A96262C6F5D9E9L,0x3617DEL};

// C41417
//	public static final int CURVETYPE= EDWARDS;
//	public static final int CURVE_A = 1;
//  public static final long[] CURVE_B =  {0xE21L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
//	public static final long[] CURVE_Order=	{0xB0E71A5E106AF79L,0x1C0338AD63CF181L,0x414CF706022B36FL,0xFFFFFFFFEB3CC92L,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x7FFFFFFFFFFFFL};
//	public static final long[] CURVE_Gx =  {0x4FD3812F3CBC595L,0x1A73FAA8537C64CL,0x4AB4D6D6BA11130L,0x3EC7F57FF35498AL,0xE5FCD46369F44C0L,0x300218C0631C326L,0x1A334905141443L};
//	public static final long[] CURVE_Gy =  {0x22L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};

// NIST521
//	public static final int CURVETYPE= WEIERSTRASS;
//	public static final int CURVE_A = -3;
//	public static final long[] CURVE_B = {0xF451FD46B503F00L,0x73DF883D2C34F1EL,0x2C0BD3BB1BF0735L,0x3951EC7E937B165L,0x9918EF109E15619L,0x5B99B315F3B8B48L,0xB68540EEA2DA72L,0x8E1C9A1F929A21AL,0x51953EB961L};
//	public static final long[] CURVE_Order=	{0xB6FB71E91386409L,0xB5C9B8899C47AEBL,0xC0148F709A5D03BL,0x8783BF2F966B7FCL,0xFFFFFFFFFFA5186L,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0xFFFFFFFFFFFFFFFL,0x1FFFFFFFFFFL};
//	public static final long[] CURVE_Gx = {0x97E7E31C2E5BD66L,0x48B3C1856A429BFL,0xDC127A2FFA8DE33L,0x5E77EFE75928FE1L,0xF606B4D3DBAA14BL,0x39053FB521F828AL,0x62395B4429C6481L,0x404E9CD9E3ECB6L,0xC6858E06B7L};
//	public static final long[] CURVE_Gy = {0x8BE94769FD16650L,0x3C7086A272C2408L,0xB9013FAD076135L,0x72995EF42640C55L,0xD17273E662C97EEL,0x49579B446817AFBL,0x42C7D1BD998F544L,0x9A3BC0045C8A5FBL,0x11839296A78L};

// BN646 Curve
/*
	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BN_CURVE;
	public static final int CURVE_A = 0;

	public static final long[] CURVE_Order={0x2406C07E04200DL,0x2405103F0108000L,0xD418607E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L};
	public static final long[] CURVE_B= {0x2L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Gx={0x2406C08404E012L,0x240510420138000L,0xE01920840000000L,0x601B00000901441L,0x400000006C0A206L,0xD814423414402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L};
	public static final long[] CURVE_Gy={0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};

	public static final long[] CURVE_Bnx={0x1001L,0x4000L,0x10000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0x1202401B007L,0xD812006C000L,0x480510240000000L,0x200480000000360L,0x1B01L,0x3602403600L,0xD800000000L,0x0L,0x12L,0x0L,0x0L};
	public static final long[] CURVE_Fra={0x76EAD944929A14L,0xB7E0A0BE10CDF74L,0x4FB8A8A2B93166BL,0xECDFC4B0F037D9L,0xC27307962815598L,0xCF5EF558D2135D8L,0x8CE651FD85AF9C3L,0x80AF6D02A45219FL,0x69B8147979A41A4L,0x9577C152A374C5BL,0x9FF28B3A478L};
	public static final long[] CURVE_Frb={0xFAD1BE73F7245FFL,0x6C246F83F06A08BL,0x906077E146CE994L,0x514D03B4F9FDC68L,0x7D8CF86A43F4C6EL,0x31791EE96200E29L,0x79D9FF04BA5063CL,0x8CD092FD5BADE60L,0x9647EB8686EBEC7L,0x6A883EAD5ECB3A4L,0x1A00D74C5B87L};
	public static final long[] CURVE_Pxa={0x4233F273CCC5E10L,0x6408117FB1B1FFAL,0xA7978AC166486AAL,0xDA6417BDCFDC1D0L,0xDCE981D68FA7F5CL,0x4169ED790F45048L,0xBA06CCE894F26BEL,0xB0C98247FD18141L,0x30CE35212F353A6L,0xFF9A1B9162B0B9EL,0xFD835F078BFL};
	public static final long[] CURVE_Pxb={0x837F879267F4BC0L,0x443F1581FA770EDL,0x8FBA0763CB82027L,0xA8F7E5DE4945F11L,0x780AAE5D219F786L,0xF3BB745205342E9L,0xCC0A34FF057013CL,0xA6DFAF3E689709EL,0xD69FBD8D12B6B79L,0x6A1715D9469215DL,0x1764FA509C41L};
	public static final long[] CURVE_Pya={0xC570D1DCC3FB414L,0xD0ABFE7F36161E4L,0xABA2F61496C849AL,0x4E4A05030CD4F3FL,0x70F7CECD5CEF83L,0x9D4711CBF491613L,0xDF8011EA770418EL,0x56548E514EC94ECL,0xC9E853DFF35EE42L,0x5481ABBAAD13633L,0x78D8A63783FL};
	public static final long[] CURVE_Pyb={0xAFE3E3DB33908ADL,0x7CD4290A506594CL,0xFA043D85973EC3FL,0xFAC7A642BB5E628L,0x71A36A52DA82EE2L,0x12C2231EDAE0C76L,0x994DF2771091B48L,0xCFFF7637B76831CL,0xD463BD03DA14916L,0x1074F23C580C40L,0x12188D99546BL};
	public static final long[][] CURVE_W={{0x6008003L,0x30020000L,0xC0080060000000L,0x300000000000000L,0x0L,0x600000L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_SB={{{0x600A004L,0x30028000L,0xC00A0060000000L,0x300000000000000L,0x0L,0x600000L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2406C07803A00AL,0x2405103C00E8000L,0xC817E0780000000L,0x1B00000901441L,0x400000006C0A206L,0xD814422814402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L}}};
	public static final long[][] CURVE_WB={{0x2001000L,0x10004000L,0x40010020000000L,0x100000000000000L,0x0L,0x200000L,0x0L,0x0L,0x0L,0x0L,0x0L},{0xC01C015005L,0x900E0054000L,0x3803901C0000000L,0xE00300000000240L,0x1200L,0x2401C02400L,0x9000000000L,0x0L,0xCL,0x0L,0x0L},{0x600E00B003L,0x4807002C000L,0x1C01D00E0000000L,0x700180000000120L,0x900L,0x1200E01200L,0x4800000000L,0x0L,0x6L,0x0L,0x0L},{0x2003001L,0x1000C000L,0x40030020000000L,0x100000000000000L,0x0L,0x200000L,0x0L,0x0L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_BB={{{0x2406C07E04100DL,0x2405103F0104000L,0xD418507E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L},{0x2406C07E04100CL,0x2405103F0104000L,0xD418507E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L},{0x2406C07E04100CL,0x2405103F0104000L,0xD418507E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L},{0x2002L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2406C07E04100CL,0x2405103F0104000L,0xD418507E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L},{0x2406C07E04100DL,0x2405103F0104000L,0xD418507E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L},{0x2406C07E04100CL,0x2405103F0104000L,0xD418507E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L}},{{0x2002L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2001L,0x8000L,0x20000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x1002L,0x4000L,0x10000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x4002L,0x10000L,0x40000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x2406C07E04000AL,0x2405103F0100000L,0xD418407E0000000L,0x301B00000901441L,0x400000006C0A206L,0xD814422E14402L,0x6C051024000000L,0xD8000000000000L,0x9006CL,0x240000L,0x240000000000L},{0x1002L,0x4000L,0x10000000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=false;
*/
// BNCX Curve 
/*
	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BN_CURVE;
	public static final int CURVE_A = 0;
	public static final long[] CURVE_B = {0x2L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof = {0x1L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Order={0x11C0A636EB1F6DL,0xD6EE0CC906CEBEL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L};
	public static final long[] CURVE_Bnx={0x3C012B1L,0x40L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0xE0931794235C97L,0xDF6471EF875631L,0xCA83F1440BDL,0x480000L,0x0L};
	public static final long[] CURVE_Fra={0xD9083355C80EA3L,0x7326F173F8215BL,0x8AACA718986867L,0xA63A0164AFE18BL,0x1359082FL};
	public static final long[] CURVE_Frb={0x8D1BBC06534710L,0x63C7269546C062L,0xD9CDBC4E3ABBD8L,0x623628A900DC53L,0x10A6F7D0L};
	public static final long[] CURVE_Pxa={0x851CEEE4D2EC74L,0x85BFA03E2726C0L,0xF5C34BBB907CL,0x7053B256358B25L,0x19682D2CL};
	public static final long[] CURVE_Pxb={0xA58E8B2E29CFE1L,0x97B0C209C30F47L,0x37A8E99743F81BL,0x3E19F64AA011C9L,0x1466B9ECL};
	public static final long[] CURVE_Pya={0xFBFCEBCF0BE09FL,0xB33D847EC1B30CL,0x157DAEE2096361L,0x72332B8DD81E22L,0xA79EDD9L};
	public static final long[] CURVE_Pyb={0x904B228898EE9DL,0x4EA569D2EDEBEDL,0x512D8D3461C286L,0xECC4C09035C6E4L,0x6160C39L};
	public static final long[] CURVE_Gx ={0x6623EF5C1B55B2L,0xD6EE18093EE1BEL,0x647A6366D3243FL,0x8702A0DB0BDDFL,0x24000000L};
	public static final long[] CURVE_Gy ={0x1L,0x0L,0x0L,0x0L,0x0L};
	public static final long[][] CURVE_W={{0x546349162FEB83L,0xB40381200L,0x6000L,0x0L,0x0L},{0x7802561L,0x80L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_SB={{{0x5463491DB010E4L,0xB40381280L,0x6000L,0x0L,0x0L},{0x7802561L,0x80L,0x0L,0x0L,0x0L}},{{0x7802561L,0x80L,0x0L,0x0L,0x0L},{0xBD5D5D20BB33EAL,0xD6EE0188CEBCBDL,0x647A6366D2643FL,0x8702A0DB0BDDFL,0x24000000L}}};
	public static final long[][] CURVE_WB={{0x1C2118567A84B0L,0x3C012B040L,0x2000L,0x0L,0x0L},{0xCDF995BE220475L,0x94EDA8CA7F9A36L,0x8702A0DC07EL,0x300000L,0x0L},{0x66FCCAE0F10B93L,0x4A76D4653FCD3BL,0x4381506E03FL,0x180000L,0x0L},{0x1C21185DFAAA11L,0x3C012B0C0L,0x2000L,0x0L,0x0L}};
	public static final long[][][] CURVE_BB={{{0x11C0A6332B0CBDL,0xD6EE0CC906CE7EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L},{0x11C0A6332B0CBCL,0xD6EE0CC906CE7EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L},{0x11C0A6332B0CBCL,0xD6EE0CC906CE7EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L},{0x7802562L,0x80L,0x0L,0x0L,0x0L}},{{0x7802561L,0x80L,0x0L,0x0L,0x0L},{0x11C0A6332B0CBCL,0xD6EE0CC906CE7EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L},{0x11C0A6332B0CBDL,0xD6EE0CC906CE7EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L},{0x11C0A6332B0CBCL,0xD6EE0CC906CE7EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L}},{{0x7802562L,0x80L,0x0L,0x0L,0x0L},{0x7802561L,0x80L,0x0L,0x0L,0x0L},{0x7802561L,0x80L,0x0L,0x0L,0x0L},{0x7802561L,0x80L,0x0L,0x0L,0x0L}},{{0x3C012B2L,0x40L,0x0L,0x0L,0x0L},{0xF004AC2L,0x100L,0x0L,0x0L,0x0L},{0x11C0A62F6AFA0AL,0xD6EE0CC906CE3EL,0x647A6366D2C43FL,0x8702A0DB0BDDFL,0x24000000L},{0x3C012B2L,0x40L,0x0L,0x0L,0x0L}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=true;
*/
// BNT Curve
/*
public static final int CURVETYPE=WEIERSTRASS;
public static final int CURVE_PAIRING_TYPE=BN_CURVE;
public static final int CURVE_A = 0;
public static final long[] CURVE_B = {0x2L,0x0L,0x0L,0x0L,0x0L};
public static final long[] CURVE_Cof = {0x1L,0x0L,0x0L,0x0L,0x0L};
public static final long[] CURVE_Order={0x75777E8D30210DL,0xD43492B2CB363AL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL};
public static final long[] CURVE_Bnx={0x806000004081L,0x40L,0x0L,0x0L,0x0L};
public static final long[] CURVE_Cru={0xEB53D5AB4FCD87L,0x82A5F2BAB11FADL,0x47651504C9764CL,0x4801B1L,0x0L};
public static final long[] CURVE_Fra={0xF5D14EADC80022L,0x4904D6FACCE359L,0xF190A13211BE6CL,0xC9BBC4394F6509L,0x1328A292L};
public static final long[] CURVE_Frb={0xA7EAB040ECA6F1L,0xC513DF997D764L,0x450657A3DEB01EL,0x9B5B3D15AAA6A1L,0x10D87E48L};
public static final long[] CURVE_Pxa={0x8987E2288E65BBL,0xAD1CAA6313BEL,0x325041548B7CCCL,0x4C1339EBCC055L,0x14483FCDL};
public static final long[] CURVE_Pxb={0x67888808DBE2C0L,0x7FE1F81E34853AL,0xA631A51B57B95L,0x384EC302DA3FC5L,0x87F46B3L};
public static final long[] CURVE_Pya={0x202C47E020CA1DL,0xB4167E8399F36CL,0xC6E5439F72C94CL,0x102B0BD74A2C69L,0x14E8C29CL};
public static final long[] CURVE_Pyb={0xD8437C716628F2L,0x27E167BCB7DC6BL,0xA82C7572681D0AL,0x62454BD1EDEC18L,0x17AFE2A4L};
public static final long[] CURVE_Gx ={0x9DBBFEEEB4A712L,0x555614F464BABEL,0x3696F8D5F06E8AL,0x6517014EFA0BABL,0x240120DBL};
public static final long[] CURVE_Gy ={0x1L,0x0L,0x0L,0x0L,0x0L};
public static final long[][] CURVE_W={{0x26430061838403L,0x81218241998384L,0x6001L,0x0L,0x0L},{0x100C000008101L,0x80L,0x0L,0x0L,0x0L}};
public static final long[][][] CURVE_SB={{{0x2743C061840504L,0x81218241998404L,0x6001L,0x0L,0x0L},{0x100C000008101L,0x80L,0x0L,0x0L,0x0L}},{{0x100C000008101L,0x80L,0x0L,0x0L,0x0L},{0x4F347E2BAC9D0AL,0x5313107131B2B6L,0x3696F8D5EFAE87L,0x6517014EFA0BABL,0x240120DBL}}};
public static final long[][] CURVE_WB={{0x6140602080C080L,0x806080C08880C1L,0x2000L,0x0L,0x0L},{0xB53904088C4A85L,0xAD2FA352DC6C36L,0xDA436358868EDEL,0x300120L,0x0L},{0x5ADCB204464583L,0x5697D1A96E363BL,0x6D21B1AC43476FL,0x180090L,0x0L},{0x62412020814181L,0x806080C0888141L,0x2000L,0x0L,0x0L}};
public static final long[][][] CURVE_BB={{{0x74F71E8D2FE08DL,0xD43492B2CB35FAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL},{0x74F71E8D2FE08CL,0xD43492B2CB35FAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL},{0x74F71E8D2FE08CL,0xD43492B2CB35FAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL},{0x100C000008102L,0x80L,0x0L,0x0L,0x0L}},{{0x100C000008101L,0x80L,0x0L,0x0L,0x0L},{0x74F71E8D2FE08CL,0xD43492B2CB35FAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL},{0x74F71E8D2FE08DL,0xD43492B2CB35FAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL},{0x74F71E8D2FE08CL,0xD43492B2CB35FAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL}},{{0x100C000008102L,0x80L,0x0L,0x0L,0x0L},{0x100C000008101L,0x80L,0x0L,0x0L,0x0L},{0x100C000008101L,0x80L,0x0L,0x0L,0x0L},{0x100C000008101L,0x80L,0x0L,0x0L,0x0L}},{{0x806000004082L,0x40L,0x0L,0x0L,0x0L},{0x2018000010202L,0x100L,0x0L,0x0L,0x0L},{0x7476BE8D2FA00AL,0xD43492B2CB35BAL,0x3696F8D5F00E88L,0x6517014EFA0BABL,0x240120DBL},{0x806000004082L,0x40L,0x0L,0x0L,0x0L}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=true;

*/

// BNT2 Curve
/*
	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BN_CURVE;
	public static final int CURVE_A = 0;
	public static final long[] CURVE_B = {0x2L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof = {0x1L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Order={0xFB71A511AA2BF5L,0x8DE127B73833D7L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L};
	public static final long[] CURVE_Bnx={0x20100608205L,0x40L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0x5027444866BD33L,0x5B773016470EFBL,0xC3617BECF23675L,0x480006L,0x0L};
	public static final long[] CURVE_Fra={0xB268C973AEF062L,0xC69B33C3BCE492L,0xF67FA37F195BBCL,0x29E8CAB6BD0A41L,0x124E0B8DL};
	public static final long[] CURVE_Frb={0x736240B1B429L,0xCD48F52D196D56L,0x18BBE650E72612L,0x17268FF6FA43DEL,0x11B1F8F5L};
	public static final long[] CURVE_Pxa={0xCC92399F40A3C8L,0xCDA4E96611784AL,0x7B056961706B35L,0x9693C6318279D7L,0x16FC17CFL};
	public static final long[] CURVE_Pxb={0x557A8AD8549540L,0x6F7BE6F6510610L,0x565907A95D17DBL,0xBD5975909C8188L,0x1EB5B500L};
	public static final long[] CURVE_Pya={0x7BECC514220513L,0x4A78860E737B14L,0x51B83935F12684L,0x761422AA9D4DFAL,0x1E8EE498L};
	public static final long[] CURVE_Pyb={0xB9328F577CE78EL,0xB746E26FA5781FL,0xA93DBC1FB8E27EL,0xBAE33BDBA29D76L,0x23CEF4CDL};
	public static final long[] CURVE_Gx ={0xB2DC2BB460A48AL,0x93E428F0D651E8L,0xF3B89D00081CFL,0x410F5AADB74E20L,0x24000482L};
	public static final long[] CURVE_Gy ={0x1L,0x0L,0x0L,0x0L,0x0L};
	public static final long[][] CURVE_W={{0xB76282A1347083L,0x60301399E1D10L,0x6000L,0x0L,0x0L},{0x40200C10409L,0x80L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_SB={{{0xB76684A1F5748CL,0x60301399E1D90L,0x6000L,0x0L,0x0L},{0x40200C10409L,0x80L,0x0L,0x0L,0x0L}},{{0x40200C10409L,0x80L,0x0L,0x0L,0x0L},{0x440F227075BB72L,0x87DE267D9A16C7L,0xF3B89CFFFC1CFL,0x410F5AADB74E20L,0x24000482L}}};
	public static final long[][] CURVE_WB={{0x9272D48A70A224L,0x20100688A0945L,0x2000L,0x0L,0x0L},{0x5A572CF030EF19L,0x9651763543721DL,0x8240FD48A1B9A3L,0x300004L,0x0L},{0xAD2C96F848B88FL,0xCB28BB1AA1B92EL,0x41207EA450DCD1L,0x180002L,0x0L},{0x9276D68B31A62DL,0x20100688A09C5L,0x2000L,0x0L,0x0L}};
	public static final long[][][] CURVE_BB={{{0xFB6FA41149A9F1L,0x8DE127B7383397L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L},{0xFB6FA41149A9F0L,0x8DE127B7383397L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L},{0xFB6FA41149A9F0L,0x8DE127B7383397L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L},{0x40200C1040AL,0x80L,0x0L,0x0L,0x0L}},{{0x40200C10409L,0x80L,0x0L,0x0L,0x0L},{0xFB6FA41149A9F0L,0x8DE127B7383397L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L},{0xFB6FA41149A9F1L,0x8DE127B7383397L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L},{0xFB6FA41149A9F0L,0x8DE127B7383397L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L}},{{0x40200C1040AL,0x80L,0x0L,0x0L,0x0L},{0x40200C10409L,0x80L,0x0L,0x0L,0x0L},{0x40200C10409L,0x80L,0x0L,0x0L,0x0L},{0x40200C10409L,0x80L,0x0L,0x0L,0x0L}},{{0x20100608206L,0x40L,0x0L,0x0L,0x0L},{0x80401820812L,0x100L,0x0L,0x0L,0x0L},{0xFB6DA310E927EAL,0x8DE127B7383357L,0xF3B89D00021CFL,0x410F5AADB74E20L,0x24000482L},{0x20100608206L,0x40L,0x0L,0x0L,0x0L}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=true;
*/

// BN254 Curve
/*
	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BN_CURVE;
	public static final int CURVE_A = 0;
	public static final long[] CURVE_B = {0x2L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof = {0x1L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Order={0xDL,0x800000000010A1L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L};
	public static final long[] CURVE_Bnx={0x80000000000001L,0x40L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0x80000000000007L,0x6CDL,0x40000000024909L,0x49B362L,0x0L};
	public static final long[] CURVE_Fra={0x7DE6C06F2A6DE9L,0x74924D3F77C2E1L,0x50A846953F8509L,0x212E7C8CB6499BL,0x1B377619L};
	public static final long[] CURVE_Frb={0x82193F90D5922AL,0x8B6DB2C08850C5L,0x2F57B96AC8DC17L,0x1ED1837503EAB2L,0x9EBEE69L};
	public static final long[] CURVE_Pxa={0xEE4224C803FB2BL,0x8BBB4898BF0D91L,0x7E8C61EDB6A464L,0x519EB62FEB8D8CL,0x61A10BBL};
	public static final long[] CURVE_Pxb={0x8C34C1E7D54CF3L,0x746BAE3784B70DL,0x8C5982AA5B1F4DL,0xBA737833310AA7L,0x516AAF9L};
	public static final long[] CURVE_Pya={0xF0E07891CD2B9AL,0xAE6BDBE09BD19L,0x96698C822329BDL,0x6BAF93439A90E0L,0x21897A0L};
	public static final long[] CURVE_Pyb={0x2D1AEC6B3ACE9BL,0x6FFD739C9578AL,0x56F5F38D37B090L,0x7C8B15268F6D44L,0xEBB2B0EL};
	public static final long[] CURVE_Gx ={0x12L,0x13A7L,0x80000000086121L,0x40000001BA344DL,0x25236482L};
	public static final long[] CURVE_Gy ={0x1L,0x0L,0x0L,0x0L,0x0L};
	public static final long[][] CURVE_W={{0x3L,0x80000000000204L,0x6181L,0x0L,0x0L},{0x1L,0x81L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_SB={{{0x4L,0x80000000000285L,0x6181L,0x0L,0x0L},{0x1L,0x81L,0x0L,0x0L,0x0L}},{{0x1L,0x81L,0x0L,0x0L,0x0L},{0xAL,0xE9DL,0x80000000079E1EL,0x40000001BA344DL,0x25236482L}}};
	public static final long[][] CURVE_WB={{0x80000000000000L,0x80000000000040L,0x2080L,0x0L,0x0L},{0x80000000000005L,0x54AL,0x8000000001C707L,0x312241L,0x0L},{0x80000000000003L,0x800000000002C5L,0xC000000000E383L,0x189120L,0x0L},{0x80000000000001L,0x800000000000C1L,0x2080L,0x0L,0x0L}};
	public static final long[][][] CURVE_BB={{{0x8000000000000DL,0x80000000001060L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L},{0x8000000000000CL,0x80000000001060L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L},{0x8000000000000CL,0x80000000001060L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L},{0x2L,0x81L,0x0L,0x0L,0x0L}},{{0x1L,0x81L,0x0L,0x0L,0x0L},{0x8000000000000CL,0x80000000001060L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L},{0x8000000000000DL,0x80000000001060L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L},{0x8000000000000CL,0x80000000001060L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L}},{{0x2L,0x81L,0x0L,0x0L,0x0L},{0x1L,0x81L,0x0L,0x0L,0x0L},{0x1L,0x81L,0x0L,0x0L,0x0L},{0x1L,0x81L,0x0L,0x0L,0x0L}},{{0x80000000000002L,0x40L,0x0L,0x0L,0x0L},{0x2L,0x102L,0x0L,0x0L,0x0L},{0xAL,0x80000000001020L,0x8000000007FF9FL,0x40000001BA344DL,0x25236482L},{0x80000000000002L,0x40L,0x0L,0x0L,0x0L}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=false;

*/
// BN454 Curve
/*
	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BN_CURVE;
	public static final int CURVE_A = 0;
	public static final long[] CURVE_Order={0x420000000DL,0x42006C4200007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L};
	public static final long[] CURVE_B= {0x2L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof= {0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Gx={0x4E00000012L,0x4E006C4E0000840L,0x800014508002508L,0x888401D5080091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L};
	public static final long[] CURVE_Gy={0x1L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};

	public static final long[] CURVE_Bnx={0x100000001L,0x10000010000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0x1B00000007L,0x1B00121B0000240L,0xA00003648000048L,0x6C2400364800005L,0x36000012360000L,0x12000036000L,0x0L,0x0L};
	public static final long[] CURVE_Fra={0x302DC9FD573B0ECL,0x7AEEE6C3A90B9B8L,0xD06B734A02B17ECL,0xDBD9562D6A87DL,0x929326ECAFCB5A2L,0x32139C5D6DDCE26L,0x7A687EBE1CCD92BL,0x12E79EC72L};
	public static final long[] CURVE_Frb={0xCFD23AE2A8C4F27L,0xD311858A56F4E87L,0xAF94A1067D50D1BL,0x87A8287EDA9609EL,0x8F2CD9352474B38L,0xF39CCFA443671E2L,0x85A50141EC3B6D4L,0x111861C8DL};
	public static final long[] CURVE_Pxa={0xFBA3BAC20F02B14L,0x6BC30BEF0CC2BB1L,0xFE2DA6B5FCEFFF3L,0x3682EDFC1FE1E7EL,0xAD66CC979483454L,0xE163BB5D98CBBA1L,0xD55083668F14AAFL,0x1403D4F80L};
	public static final long[] CURVE_Pxb={0x9C06D0EC45BF266L,0x365ACBB7823C36EL,0xD2E4624790DBC52L,0xE0803BE6F2F769FL,0x7BA9E2AA951971DL,0x25841737EBE5665L,0x142E8014B1E40D5L,0x15952D69EL};
	public static final long[] CURVE_Pya={0x939AB6BBE1B15C7L,0xDF26024555C6CB4L,0x671C46519474FB5L,0xBAA277A8FC5DD54L,0xB00871EE82F2FAAL,0xFE0A26E1C64C3AL,0x7ABC6DB12C5287AL,0x1D67A4004L};
	public static final long[] CURVE_Pyb={0xC10E6FB60571D60L,0xE9271847B128D8EL,0xBE70ED2753A65C7L,0x75C2604B7433768L,0x4F0B46811003851L,0xD91F0CA48ABC5EAL,0x842C9ADF53F903EL,0x976E2360L};
	public static final long[][] CURVE_W={{0x800000003L,0x80000080000060L,0x60000000C00000CL,0x600000C00000L,0x0L,0x0L,0x0L,0x0L},{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_SB={{{0xA00000004L,0xA00000A0000060L,0x60000000C00000CL,0x600000C00000L,0x0L,0x0L,0x0L,0x0L},{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x3A0000000AL,0x3A006C3A0000780L,0xC000144F00024F0L,0x887801D4F00091BL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L}}};
	public static final long[][] CURVE_WB={{0x100000000L,0x10000010000020L,0x200000004000004L,0x200000400000L,0x0L,0x0L,0x0L,0x0L},{0x1500000005L,0x15000C1500001C0L,0x2438000038L,0x481C00243800004L,0x2400000C240000L,0xC000024000L,0x0L,0x0L},{0xB00000003L,0xB00060B00000E0L,0x121C00001CL,0x240E00121C00002L,0x12000006120000L,0x6000012000L,0x0L,0x0L},{0x300000001L,0x30000030000020L,0x200000004000004L,0x200000400000L,0x0L,0x0L,0x0L,0x0L}};
	public static final long[][][] CURVE_BB={{{0x410000000DL,0x41006C4100007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L},{0x410000000CL,0x41006C4100007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L},{0x410000000CL,0x41006C4100007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L},{0x200000002L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x410000000CL,0x41006C4100007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L},{0x410000000DL,0x41006C4100007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L},{0x410000000CL,0x41006C4100007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L}},{{0x200000002L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x200000001L,0x20000020000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}},{{0x100000002L,0x10000010000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x400000002L,0x40000040000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L},{0x400000000AL,0x40006C4000007E0L,0x2000144FC0024FCL,0x887E01D4FC0091CL,0x21C00021D4400DAL,0x25B06C01B144009L,0xD80000909000L,0x240000900L},{0x100000002L,0x10000010000000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=false;

*/

// BLS383 Curve

	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BLS_CURVE;
	public static final int CURVE_A = 0;

	public static final long[] CURVE_Order={0xFFF80000FFF001L,0xBFDE0070FE7800L,0x3000049C5EDF1CL,0xC40007F910007AL,0x14641004CL,0x0L,0x0L};
	public static final long[] CURVE_B= {0x9L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof= {0x2A00000052BL,0x5560AAAAAB2CA0L,0x6055L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Gx={0xD59B348D10786BL,0x3477C0E3F54AD0L,0xBF25B734578B9BL,0x4F6AC007BB6F65L,0xEFD5830FF57E9CL,0xADB9F88FB6EC02L,0xB08CEE4BC98L};
	public static final long[] CURVE_Gy={0x5DA023D145DDBL,0x13F518C5FEF7CCL,0x56EC3462B2A66FL,0x96F3019C7A925FL,0x9061047981223EL,0x4810AD8F5BE59L,0x1F3909337671L};

	public static final long[] CURVE_Bnx={0x1000000040L,0x110L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0xA3AAC4EDA155A9L,0xDF2FE8761E5E3DL,0xBCDFAADE632625L,0x5123128D3035A6L,0xDBF3A2BBEAD683L,0x5C5FAB20424190L,0x7AC52080A9F7L};
	public static final long[] CURVE_Fra={0x2BA59A92B4508BL,0x63DB7A06EEF343L,0x40341CB1DFBC74L,0x1639E9D32D55D3L,0xB19B3F05CC36D4L,0xF323EE4D86AB98L,0x5A5FB198672L};
	public static final long[] CURVE_Frb={0x81051A97F904E0L,0xB7D49A6F086A37L,0x8F3EEB8B7DB8ABL,0xEEF7983C6C9543L,0x7A65F6549CB35DL,0x693D1777CBFBECL,0x751F25672384L};
	public static final long[] CURVE_Pxa={0x6059885BAC9472L,0x7C4D31DE2DC36DL,0xBDC90C308C88A7L,0x29F01971C688FCL,0x3693539C43F167L,0xD81E5A561EB8BFL,0x4D50722B56BFL};
	public static final long[] CURVE_Pxb={0x9B4BD7A272AB23L,0x7AF19D4F44DCE8L,0x3F6F7B93206A34L,0x571DD3E2A819FBL,0x3A2BA3B635D7EEL,0xAC28C780C1A126L,0xEE3617C3E5BL};
	public static final long[] CURVE_Pya={0x81D230977BD4FDL,0xB660720DFDFC6L,0x41FC9590C89A0CL,0x2E1FBCF878287AL,0x11C23014EEE65L,0x28878816BB325EL,0x8F40859A05CL};
	public static final long[] CURVE_Pyb={0xA5E20A252C4CE6L,0x5907A74AFF40C8L,0x41760A42448EF3L,0xFFEF82B0FDA199L,0xA0F29A18D4EA49L,0xAC7F7B86E4997BL,0x1DCABBA88C12L};
// not used
	public static final long[][] CURVE_W={{},{}};
	public static final long[][][] CURVE_SB={{{},{}},{{},{}}};
	public static final long[][] CURVE_WB={{},{},{},{}};
	public static final long[][][] CURVE_BB={{{},{},{},{}},{{},{},{},{}},{{},{},{},{}},{{},{},{},{}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=false;



// BLS455 Curve
/*
	public static final int CURVETYPE=WEIERSTRASS;
	public static final int CURVE_PAIRING_TYPE=BLS_CURVE;
	public static final int CURVE_A = 0;

	public static final long[] CURVE_Order={0x7FFFFC00001L,0xA00000400001CL,0x25E000750001D10L,0xE0000F10004F000L,0x80000380002L,0x10L,0x0L,0x0L};
	public static final long[] CURVE_B= {0xAL,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cof= {0xA9557FFAABFFAABL,0xAAB15555B54AAB6L,0x555556AAL,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Gx={0x6D4C5DDFDFCEDD1L,0x35C6F43B3A034FBL,0x7F05B56A579C725L,0xB1F2B8ECE11B321L,0x9F342AB0CFE8392L,0xA5911EE32767994L,0x3005E40CC56ABEDL,0x18855F3BL};
	public static final long[] CURVE_Gy={0x404FD79A6619B9BL,0x69D80A5D6FA0286L,0xEE722322D91A493L,0xB1EE58431C1E968L,0xCA9BC8953801F5FL,0xDFAFD40FE9E388EL,0x9F8985FC3DEB0D6L,0x19A8DB77EL};

	public static final long[] CURVE_Bnx={0x20000080000800L,0x10000L,0x0L,0x0L,0x0L,0x0L,0x0L,0x0L};
	public static final long[] CURVE_Cru={0x9202FFC00000AA9L,0xFA5190F4A3762AL,0x8B2B9BDD548FEC9L,0xD7B469DB33A586AL,0xC91731354CAFD99L,0xF5B48D02FFFE695L,0x57955572A900E0EL,0x555559555L};
	public static final long[] CURVE_Fra={0x9CCFBDCA2EBF21L,0x572F54A73379964L,0x72819F887545498L,0x22BBC1CAD1F8534L,0xA82CD7D435944F0L,0x4594F818D030F7BL,0xEDCBE3ADC0016A7L,0x397EA4973L};
	public static final long[] CURVE_Frb={0xA033043B5D1438AL,0x6E5A00C3F72FC06L,0x4717AB46118C70EL,0x16993AE842C0609L,0x3B78DA012CA06E9L,0x501F99EA300E6EAL,0x69C971C4E9FF768L,0x1BD6B4BE1L};
	public static final long[] CURVE_Pxa={0x475F20F0C1F542L,0x65D6070F8567E10L,0xD780698BB33D776L,0x71F685ED1531721L,0x303D3FEC5B6A49CL,0x8DEF064FF553CEBL,0xC0E9A31B4C463L,0x2ECB12FA8L};
	public static final long[] CURVE_Pxb={0x99086EE6749F03DL,0xE89A55A5AC5EF2EL,0x7B41AECD88EA016L,0x622450FE6163E06L,0x755066E1C8E296FL,0xA80F219487326E8L,0x66DBFBB0BEAEE59L,0xECFFCE0L};
	public static final long[] CURVE_Pya={0x83235A4581A77F4L,0x9F0F367B7A7E10AL,0x8FA0C4A66D55B9DL,0xEF03F65E0D6EC4CL,0x9C7DC299C1A9EC2L,0x32453CA21CFA5ACL,0x6C3DCD5ABB9C544L,0x22471D90AL};
	public static final long[] CURVE_Pyb={0xF413B6D9E1FDBA2L,0xA7E630913DA0356L,0xFBC913D9AC488E2L,0x72E7CF61B401585L,0x656D801B21C89EDL,0xF9E921EEE0558F9L,0x3D2B7B03CFC8698L,0x33503CA8L};
// not used
	public static final long[][] CURVE_W={{},{}};
	public static final long[][][] CURVE_SB={{{},{}},{{},{}}};
	public static final long[][] CURVE_WB={{},{},{},{}};
	public static final long[][][] CURVE_BB={{{},{},{},{}},{{},{},{},{}},{{},{},{},{}},{{},{},{},{}}};

	public static final boolean USE_GLV =true;
	public static final boolean USE_GS_G2 =true;
	public static final boolean USE_GS_GT =true;	
	public static final boolean GT_STRONG=false;
*/
	public static boolean debug=false;

}

