diff --git a/docs/fastcrypto_tbls/polynomial/index.html b/docs/fastcrypto_tbls/polynomial/index.html index d4686c1b29..7de8fba849 100644 --- a/docs/fastcrypto_tbls/polynomial/index.html +++ b/docs/fastcrypto_tbls/polynomial/index.html @@ -1,2 +1,2 @@ -fastcrypto_tbls::polynomial - Rust

Structs

source

fn aggregate( threshold: u32, - partials: &[PartialSignature<Self::Signature>] + partials: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>> + Clone ) -> FastCryptoResult<Self::Signature>

Interpolate partial signatures to recover the full signature.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl ThresholdBls for ThresholdBls12381MinSig

§

type Private = Scalar

§

type Public = G2Element

§

type Signature = G1Element

\ No newline at end of file diff --git a/docs/fastcrypto_tbls/tbls/type.PartialSignature.html b/docs/fastcrypto_tbls/tbls/type.PartialSignature.html index 184ff89956..89fffa0592 100644 --- a/docs/fastcrypto_tbls/tbls/type.PartialSignature.html +++ b/docs/fastcrypto_tbls/tbls/type.PartialSignature.html @@ -1,4 +1,4 @@ -PartialSignature in fastcrypto_tbls::tbls - Rust
pub type PartialSignature<S> = IndexedValue<S>;

Aliased Type§

struct PartialSignature<S> {
+PartialSignature in fastcrypto_tbls::tbls - Rust
pub type PartialSignature<S> = IndexedValue<S>;

Aliased Type§

struct PartialSignature<S> {
     pub index: NonZeroU32,
     pub value: S,
 }

Fields§

§index: NonZeroU32§value: S
\ No newline at end of file diff --git a/docs/fastcrypto_tbls/tbls/type.Share.html b/docs/fastcrypto_tbls/tbls/type.Share.html index c3718c9455..4b4a6b6baa 100644 --- a/docs/fastcrypto_tbls/tbls/type.Share.html +++ b/docs/fastcrypto_tbls/tbls/type.Share.html @@ -1,4 +1,4 @@ -Share in fastcrypto_tbls::tbls - Rust

Type Alias fastcrypto_tbls::tbls::Share

source ·
pub type Share<S> = IndexedValue<S>;

Aliased Type§

struct Share<S> {
+Share in fastcrypto_tbls::tbls - Rust

Type Alias fastcrypto_tbls::tbls::Share

source ·
pub type Share<S> = IndexedValue<S>;

Aliased Type§

struct Share<S> {
     pub index: NonZeroU32,
     pub value: S,
 }

Fields§

§index: NonZeroU32§value: S
\ No newline at end of file diff --git a/docs/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.html b/docs/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.html index 86dfd622a2..31ca03a124 100644 --- a/docs/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.html +++ b/docs/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.html @@ -5,26 +5,26 @@ msg: &[u8], sig: &Self::Signature ) -> FastCryptoResult<()>
Verify a signature on a given message. This is standard BLS signature verification -over the used curve construction.
source§

fn partial_sign( +over the used curve construction.

source§

fn partial_sign( share: &Share<Self::Private>, msg: &[u8] -) -> PartialSignature<Self::Signature>

Sign a message using the private share/partial key.
source§

fn partial_sign_batch( - shares: &[Share<Self::Private>], +) -> PartialSignature<Self::Signature>

Sign a message using the private share/partial key.
source§

fn partial_sign_batch( + shares: impl Iterator<Item = impl Borrow<Share<Self::Private>>>, msg: &[u8] -) -> Vec<PartialSignature<Self::Signature>>

Sign a message using one of more private share/partial keys.
source§

fn partial_verify( +) -> Vec<PartialSignature<Self::Signature>>

Sign a message using one of more private share/partial keys.
source§

fn partial_verify( vss_pk: &Poly<Self::Public>, msg: &[u8], partial_sig: &PartialSignature<Self::Signature> -) -> FastCryptoResult<()>

Verify a signature done by a partial key holder.
source§

fn partial_verify_batch<R: AllowedRng>( +) -> FastCryptoResult<()>

Verify a signature done by a partial key holder.
source§

fn partial_verify_batch<R: AllowedRng>( vss_pk: &Poly<Self::Public>, msg: &[u8], - partial_sigs: &[PartialSignature<Self::Signature>], + partial_sigs: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>>, rng: &mut R ) -> FastCryptoResult<()>

Verify a set of signatures done by a partial key holder. Randomly check if \sum r_i sig_i is a valid signature with public key \sum r_i p(i) G -where r_i are random scalars, and p(i) are points on the polynomial.
source§

fn aggregate( +where r_i are random scalars, and p(i) are points on the polynomial.

source§

fn aggregate( threshold: u32, - partials: &[PartialSignature<Self::Signature>] + partials: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>> + Clone ) -> FastCryptoResult<Self::Signature>

Interpolate partial signatures to recover the full signature.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where diff --git a/docs/search-index.js b/docs/search-index.js index d7b6dcd7c1..8403c54fb6 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -4,7 +4,7 @@ var searchIndex = JSON.parse('{\ "fastcrypto":{"doc":"","t":"CCCCCQCCCQCCCCCCQQCCCCIIIIIIIIIIIFFFIKKKFRRIKNNNNNNNNNNNNNNNMNNNMNNNNNNMNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSCCFIFFFIFSNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFIFFFIFSNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSFFFFIFIFNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFKFNNNNNNNNNNNNNNNMNNNHNNNNNNNNNMNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPGIPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNKKKKKRRKKRCMMMMMMCMMCCMFISFISFSSFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKMMMMCFNNNNNHNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFSFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFFFKKFIKTKIIIIRRNNNNNNNNNNNNNNNNNNNNNNMMNNONNNNNNNNNMNNNNNNNNNNNMNMNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNNIIHHFNNNNNNNNNNNNNNNONHNNNNNONNFNNNNNNNNNNNNNNNNNNNNNNNFKFFNNNNNNNNNNNNNNNMNMNMNMNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIJSSSSFFFIFINNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOCONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNJSFFNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNISSSSSSFFFIFINNNNNNNNNNNNNNNNNNOOONNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOCONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSFNNNNNONNNNNNNNNNNNNNNNNONONNNNNNNNTFFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNHNNNNMNNNNNNNNNNFNNNNNNNNNNNNNNKKKRKKKKKTTTRRRRRRRRRRKKRRRRRRKRKKKKMMMNMMMMMMMNMMMNMMNMMMMNNHRRRRRRKKKKCMNMMMNFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNONNNNNNNNNNNNNNNNNN","n":["aes","bls12381","ed25519","encoding","error","generate_bytes_representation","groups","hash","hmac","impl_base64_display_fmt","jwt_utils","private_seed","rsa","secp256k1","secp256r1","serde_helpers","serialize_deserialize_with_to_from_byte_array","serialize_deserialize_with_to_from_bytes","signature_service","traits","utils","vrf","Aes128CbcAnsiX923","Aes128CbcIso10126","Aes128CbcPkcs7","Aes128Ctr","Aes128Gcm","Aes192Ctr","Aes256CbcAnsiX923","Aes256CbcIso10126","Aes256CbcPkcs7","Aes256Ctr","Aes256Gcm","AesCbc","AesCtr","AesGcm","AesKey","AuthenticatedCipher","Cipher","EncryptionKey","GenericByteArray","IVType","IVType","InitializationVector","Nonce","__clone_box","as_bits","as_bytes","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","decode_base64","decrypt","decrypt","decrypt","decrypt","decrypt_authenticated","decrypt_authenticated","deserialize","drop","encode_base64","encode_hex","encode_hex_upper","encrypt","encrypt","encrypt","encrypt","encrypt_authenticated","encrypt_authenticated","fmt","fmt","from","from","from","from","from_bytes","generate","into","into","into","into","new","new","new","serialize","to_owned","to_string","try_as_bits","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","zeroize","BLS_G1_LENGTH","BLS_G2_LENGTH","BLS_KEYPAIR_LENGTH","BLS_PRIVATE_KEY_LENGTH","min_pk","min_sig","BLS12381AggregateSignature","BLS12381AggregateSignatureAsBytes","BLS12381KeyPair","BLS12381PrivateKey","BLS12381PublicKey","BLS12381PublicKeyAsBytes","BLS12381Signature","DST_G2","__clone_box","__clone_box","__clone_box","add_aggregate","add_signature","aggregate","as_bits","as_bits","as_bits","as_bits","as_bits","as_ref","as_ref","as_ref","as_ref","as_ref","batch_verify","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes","bytes","bytes","clone","clone","clone","clone_into","clone_into","clone_into","cmp","copy","decode_base64","decode_base64","decode_base64","decode_base64","decode_base64","default","default","deserialize","deserialize","deserialize","deserialize","deserialize","encode_base64","encode_base64","encode_base64","encode_base64","encode_base64","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_str","generate","hash","hash","insecure_default","into","into","into","into","into","partial_cmp","private","privkey","pubkey","public","serialize","serialize","serialize","serialize","serialize","sig","sig","sign","sign","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","validate","verify","verify","verify_different_msg","vzip","vzip","vzip","vzip","vzip","BLS12381AggregateSignature","BLS12381AggregateSignatureAsBytes","BLS12381KeyPair","BLS12381PrivateKey","BLS12381PublicKey","BLS12381PublicKeyAsBytes","BLS12381Signature","DST_G1","__clone_box","__clone_box","__clone_box","add_aggregate","add_signature","aggregate","as_bits","as_bits","as_bits","as_bits","as_bits","as_ref","as_ref","as_ref","as_ref","as_ref","batch_verify","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes","bytes","bytes","clone","clone","clone","clone_into","clone_into","clone_into","cmp","copy","decode_base64","decode_base64","decode_base64","decode_base64","decode_base64","default","default","default","deserialize","deserialize","deserialize","deserialize","deserialize","encode_base64","encode_base64","encode_base64","encode_base64","encode_base64","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_str","generate","hash","hash","insecure_default","into","into","into","into","into","partial_cmp","private","privkey","pubkey","public","serialize","serialize","serialize","serialize","serialize","sig","sig","sign","sign","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","validate","verify","verify","verify_different_msg","vzip","vzip","vzip","vzip","vzip","ED25519_KEYPAIR_LENGTH","ED25519_PRIVATE_KEY_LENGTH","ED25519_PUBLIC_KEY_LENGTH","ED25519_SIGNATURE_LENGTH","Ed25519AggregateSignature","Ed25519KeyPair","Ed25519PrivateKey","Ed25519PublicKey","Ed25519PublicKeyAsBytes","Ed25519Signature","Ed25519SignatureAsBytes","SingleSignature","__clone_box","__clone_box","__clone_box","as_bits","as_bits","as_bits","as_bits","as_bits","as_ref","as_ref","as_ref","as_ref","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes","clone","clone","clone","clone_into","clone_into","clone_into","cmp","copy","decode_base64","decode_base64","decode_base64","decode_base64","decode_base64","default","default","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize_as","drop","encode_base64","encode_base64","encode_base64","encode_base64","encode_base64","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_bytes","from_str","generate","hash","insecure_default","into","into","into","into","into","into","partial_cmp","private","public","serialize","serialize","serialize","serialize","serialize","serialize_as","sig","sign","sigs","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","vzip","vzip","Base58","Base64","Encoding","Hex","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","decode","decode","decode","decode","decode_bytes_hex","deserialize","deserialize","deserialize","deserialize_as","deserialize_as","deserialize_as","deserialize_as","deserialize_as","deserialize_as","encode","encode","encode","encode","encode_with_format","encoded","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","from","from_bytes","from_bytes","into","into","into","json_schema","json_schema","json_schema","schema_name","schema_name","schema_name","serialize","serialize","serialize","serialize_as","serialize_as","serialize_as","to_owned","to_owned","to_owned","to_vec","to_vec","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","Err","FastCryptoError","FastCryptoResult","GeneralError","GeneralOpaqueError","InputLengthWrong","InputTooLong","InputTooShort","InvalidInput","InvalidMessage","InvalidProof","InvalidSignature","NotEnoughInputs","Ok","__clone_box","borrow","borrow_mut","clone","clone_into","eq","equivalent","equivalent","fmt","fmt","from","from","into","to_owned","to_string","try_from","try_into","type_id","vzip","Doubling","FiatShamirChallenge","GroupElement","HashToGroupElement","MultiScalarMul","Other","Output","Pairing","Scalar","ScalarType","bls12381","double","fiat_shamir_reduction_to_group_element","generator","hash_to_group_element","inverse","multi_scalar_mul","multiplier","pairing","rand","ristretto255","secp256r1","zero","G1Element","G1ElementAsBytes","G1_ELEMENT_BYTE_LENGTH","G2Element","G2ElementAsBytes","G2_ELEMENT_BYTE_LENGTH","GTElement","GT_ELEMENT_BYTE_LENGTH","SCALAR_LENGTH","Scalar","__clone_box","__clone_box","__clone_box","__clone_box","add","add","add","add","add","add","add","add","add","add","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","add_assign","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","deserialize","deserialize","deserialize","deserialize","div","div","div","div","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fiat_shamir_reduction_to_group_element","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_byte_array","from_byte_array","from_byte_array","from_byte_array","generator","generator","generator","generator","hash_to_group_element","hash_to_group_element","into","into","into","into","inverse","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","mul_assign","mul_assign","mul_assign","mul_assign","mul_assign","mul_assign","multi_scalar_mul","multi_scalar_mul","neg","neg","neg","neg","neg","neg","neg","neg","pairing","rand","serialize","serialize","serialize","serialize","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","sub_assign","to_byte_array","to_byte_array","to_byte_array","to_byte_array","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","zero","zero","zero","zero","ScalarMultiplier","ToLittleEndianBytes","mul","new","to_le_bytes","two_scalar_mul","windowed","WindowedScalarMultiplier","borrow","borrow_mut","from","into","mul","multi_scalar_mul","new","try_from","try_into","two_scalar_mul","type_id","vzip","RistrettoPoint","RistrettoScalar","__clone_box","__clone_box","add","add","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compress","decompress","default","deserialize","deserialize","div","div","div","double","eq","eq","equivalent","equivalent","equivalent","equivalent","fiat_shamir_reduction_to_group_element","fmt","fmt","from","from","from","from","from","from_byte_array","from_byte_array","from_bytes_mod_order","from_bytes_mod_order_wide","from_uniform_bytes","generator","generator","group_order","hash_to_group_element","hash_to_group_element","into","into","inverse","map_to_point","mul","mul","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","mul_assign","mul_assign","multi_scalar_mul","neg","neg","neg","neg","rand","serialize","serialize","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","to_byte_array","to_byte_array","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","zero","zero","zeroize","ProjectivePoint","SCALAR_SIZE_IN_BYTES","Scalar","__clone_box","__clone_box","add","add","add","add","add","add","add","add","add_assign","add_assign","add_assign","add_assign","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","default","deserialize","div","div","double","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","from","from","from_byte_array","generator","generator","into","into","inverse","mul","mul","mul","mul","mul","mul","mul","mul","mul_assign","mul_assign","mul_assign","mul_assign","neg","neg","neg","neg","rand","serialize","sub","sub","sub","sub","sub","sub","sub","sub","sub_assign","sub_assign","sub_assign","sub_assign","to_byte_array","to_le_bytes","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","zero","zero","Blake2b256","Blake3","Digest","EllipticCurveMultisetHash","Hash","HashFunction","HashFunctionWrapper","Keccak256","MultisetHash","OUTPUT_SIZE","ReverseWrapper","Sha256","Sha3_256","Sha3_512","Sha512","TypedDigest","Variant","__clone_box","__clone_box","as_bits","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","default","default","default","deserialize","deserialize","digest","digest","digest","digest","digest","digest_iterator","encode_hex","encode_hex_upper","eq","eq","equivalent","equivalent","equivalent","equivalent","finalize","finalize","finalize","flush","fmt","fmt","fmt","from","from","from","from","hash","insert","insert","insert_all","insert_all","into","into","into","into","new","new","partial_cmp","remove","remove","remove_all","remove_all","serialize","serialize","size","to_owned","to_owned","to_string","to_vec","try_as_bits","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","union","update","update","update","vzip","vzip","vzip","vzip","write","write","write","HkdfIkm","HmacKey","hkdf_sha3_256","hmac_sha3_256","JWTHeader","__clone_box","borrow","borrow_mut","clone","clone_into","default","deserialize","eq","equivalent","equivalent","fmt","from","hash","into","json_schema","kid","new","parse_and_validate_jwt","schema_name","serialize","to_owned","try_from","try_into","typ","type_id","vzip","PrivateSeed","as_bits","as_bytes","as_ref","borrow","borrow_mut","decode_base64","drop","encode_base64","encode_hex","encode_hex_upper","eq","equivalent","equivalent","fmt","from","from_bytes","into","try_as_bits","try_from","try_into","type_id","vzip","zeroize","Base64UrlUnpadded","Encoding","RSAPublicKey","RSASignature","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","decode","decode","decode_in_place","decode_in_place","decode_vec","decode_vec","encode","encode","encode_string","encode_string","encoded_len","encoded_len","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","from","from","from","from_bytes","from_der","from_raw_components","into","into","into","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verify","verify_prehash","vzip","vzip","vzip","DefaultHash","SECP256K1","SECP256K1_KEYPAIR_LENGTH","SECP256K1_PRIVATE_KEY_LENGTH","SECP256K1_PUBLIC_KEY_LENGTH","SECP256K1_SIGNATURE_LENGTH","Secp256k1KeyPair","Secp256k1PrivateKey","Secp256k1PublicKey","Secp256k1PublicKeyAsBytes","Secp256k1Signature","Secp256k1SignatureAsBytes","__clone_box","__clone_box","as_bits","as_bits","as_bits","as_bits","as_ref","as_ref","as_ref","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes","bytes","clone","clone","clone_into","clone_into","cmp","copy","decode_base64","decode_base64","decode_base64","decode_base64","deserialize","deserialize","deserialize","deserialize","drop","encode_base64","encode_base64","encode_base64","encode_base64","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_str","generate","hash","hash","into","into","into","into","partial_cmp","private","privkey","pubkey","public","public","recoverable","secret","serialize","serialize","serialize","serialize","sig","sign","sign_recoverable_with_hash","sign_with_hash","to_owned","to_owned","to_string","to_string","to_string","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify","verify_with_hash","vzip","vzip","vzip","vzip","SECP256K1","SECP256K1_RECOVERABLE_SIGNATURE_SIZE","Secp256k1RecoverableSignature","Secp256k1Sig","__clone_box","__clone_box","as_bits","as_c_ptr","as_mut_c_ptr","as_mut_ptr","as_ptr","as_ref","borrow","borrow","borrow_mut","borrow_mut","bytes","clone","clone","clone_into","clone_into","cmp","cmp_fast_unstable","decode_base64","deserialize","encode_base64","encode_hex","encode_hex_upper","eq","eq","eq_fast_unstable","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from_bytes","from_compact","from_der","from_der_lax","from_str","hash","hash","into","into","normalize_s","partial_cmp","recover_with_hash","serialize","serialize_compact","serialize_der","sig","to_owned","to_owned","to_string","to_string","try_as_bits","try_from","try_from","try_from_nonrecoverable","try_into","try_into","type_id","type_id","verify","vzip","vzip","DefaultHash","PRECOMPUTED_POINTS","SECP256R1_KEYPAIR_LENGTH","SECP256R1_PRIVATE_KEY_LENGTH","SECP256R1_PUBLIC_KEY_LENGTH","SECP256R1_SIGNATURE_LENTH","SLIDING_WINDOW_WIDTH","Secp256r1KeyPair","Secp256r1PrivateKey","Secp256r1PublicKey","Secp256r1PublicKeyAsBytes","Secp256r1Signature","Secp256r1SignatureAsBytes","__clone_box","__clone_box","as_bits","as_bits","as_bits","as_bits","as_ref","as_ref","as_ref","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","bytes","bytes","bytes","clone","clone","clone_into","clone_into","cmp","conversion","copy","decode_base64","decode_base64","decode_base64","decode_base64","deserialize","deserialize","deserialize","deserialize","encode_base64","encode_base64","encode_base64","encode_base64","encode_hex","encode_hex","encode_hex","encode_hex","encode_hex_upper","encode_hex_upper","encode_hex_upper","encode_hex_upper","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_bytes","from_bytes","from_bytes","from_bytes","from_str","generate","hash","hash","into","into","into","into","partial_cmp","private","privkey","pubkey","public","public","recoverable","secret","serialize","serialize","serialize","serialize","sig","sign","sign_recoverable_with_hash","sign_with_hash","to_owned","to_owned","to_string","to_string","to_string","try_as_bits","try_as_bits","try_as_bits","try_as_bits","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify","verify_with_hash","vzip","vzip","vzip","vzip","SECP256R1_RECOVERABLE_SIGNATURE_LENGTH","Secp256r1RecoverableSignature","__clone_box","as_bits","as_ref","borrow","borrow_mut","bytes","clone","clone_into","decode_base64","deserialize","encode_base64","encode_hex","encode_hex_upper","eq","equivalent","equivalent","fmt","fmt","from","from_bytes","hash","into","recover_with_hash","recovery_id","serialize","sig","to_owned","to_string","try_as_bits","try_from","try_from_nonrecoverable","try_into","type_id","vzip","BYTE_LENGTH","BytesRepresentation","SerializationHelper","ToFromByteArray","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","cmp","deserialize","deserialize","eq","equivalent","equivalent","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_byte_array","hash","into","into","is_referenceable","json_schema","keypair_decode_base64","partial_cmp","schema_name","serialize","serialize","to_byte_array","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","SignatureService","__clone_box","borrow","borrow_mut","clone","clone_into","from","into","new","request_signature","to_owned","try_from","try_into","type_id","vzip","AggregateAuthenticator","AllowedRng","Authenticator","DefaultHash","EncodeDecodeBase64","FromUniformBytes","Generate","InsecureDefault","KeyPair","LENGTH","LENGTH","LENGTH","PrivKey","PrivKey","PrivKey","PrivKey","PubKey","PubKey","PubKey","PubKey","PubKey","PubKey","RecoverableSignature","RecoverableSigner","Sig","Sig","Sig","Sig","Sig","Sig","Signer","Signer","SigningKey","ToFromBytes","VerifyRecoverable","VerifyingKey","add_aggregate","add_signature","aggregate","as_bytes","batch_verify","copy","decode_base64","encode_base64","from_bytes","generate","generate","generate","insecure_default","private","public","recover","recover_with_hash","sign","sign_recoverable","sign_recoverable_with_hash","verify","verify","verify_different_msg","verify_recoverable","verify_recoverable_with_hash","log2_byte","PrivateKey","PrivateKey","Proof","PublicKey","PublicKey","PublicKey","VRFKeyPair","VRFPrivateKey","VRFProof","VRFPublicKey","ecvrf","generate","output","prove","to_hash","verify","verify_output","ECVRFKeyPair","ECVRFPrivateKey","ECVRFProof","ECVRFPublicKey","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","deserialize","deserialize","drop","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","generate","into","into","into","into","pk","prove","serialize","serialize","serialize","serialize","sk","to_hash","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip"],"q":[[0,"fastcrypto"],[22,"fastcrypto::aes"],[113,"fastcrypto::bls12381"],[119,"fastcrypto::bls12381::min_pk"],[292,"fastcrypto::bls12381::min_sig"],[466,"fastcrypto::ed25519"],[641,"fastcrypto::encoding"],[728,"fastcrypto::error"],[761,"fastcrypto::groups"],[784,"fastcrypto::groups::bls12381"],[981,"fastcrypto::groups::multiplier"],[988,"fastcrypto::groups::multiplier::windowed"],[1001,"fastcrypto::groups::ristretto255"],[1110,"fastcrypto::groups::secp256r1"],[1204,"fastcrypto::hash"],[1316,"fastcrypto::hmac"],[1320,"fastcrypto::jwt_utils"],[1347,"fastcrypto::private_seed"],[1371,"fastcrypto::rsa"],[1435,"fastcrypto::secp256k1"],[1578,"fastcrypto::secp256k1::recoverable"],[1651,"fastcrypto::secp256r1"],[1795,"fastcrypto::secp256r1::recoverable"],[1831,"fastcrypto::serde_helpers"],[1886,"fastcrypto::signature_service"],[1901,"fastcrypto::traits"],[1962,"fastcrypto::utils"],[1963,"fastcrypto::vrf"],[1980,"fastcrypto::vrf::ecvrf"],[2048,"dyn_clone::sealed"],[2049,"bitvec::slice"],[2050,"bitvec::order"],[2051,"generic_array"],[2052,"core::fmt"],[2053,"core::clone"],[2054,"eyre"],[2055,"core::result"],[2056,"alloc::vec"],[2057,"crypto_common"],[2058,"crypto_common"],[2059,"typenum::generated::consts"],[2060,"crypto_common"],[2061,"serde::de"],[2062,"alloc::string"],[2063,"core::iter::traits::collect"],[2064,"core::fmt"],[2065,"bitvec::ptr::span"],[2066,"core::any"],[2067,"core::borrow"],[2068,"core::iter::traits::collect"],[2069,"core::cmp"],[2070,"core::fmt"],[2071,"core::option"],[2072,"core::marker"],[2073,"ed25519_consensus::signature"],[2074,"ed25519_consensus::signing_key"],[2075,"eyre"],[2076,"core::convert"],[2077,"schemars::schema"],[2078,"signature::error"],[2079,"blst"],[2080,"blst"],[2081,"core::ops::arith"],[2082,"core::ops::arith"],[2083,"curve25519_dalek_ng::scalar"],[2084,"ark_secp256r1::curves"],[2085,"ark_secp256r1::fields::fr"],[2086,"core::default"],[2087,"digest::digest"],[2088,"core::convert"],[2089,"der::error"],[2090,"der::error"],[2091,"base64ct::errors"],[2092,"secp256k1"],[2093,"secp256k1::ecdsa::serialized_signature"],[2094,"secp256k1"],[2095,"core::marker"]],"d":["This module contains implementations of various AES modes.","This module contains an implementation of the BLS …","This module contains an implementation of the Ed25519 …","Encodings of binary data such as Base64 and Hex.","Collection of errors to be used in fastcrypto.","Macro for generating a new alias for BytesRepresentation …","","This module contains a selection of cryptographic hash …","Implementations of HMAC and HKDF.","","","","Implementation of a verifier following RSASSA-PKCS1-v1_5 …","This module contains an implementation of the ECDSA …","This module contains an implementation of the ECDSA …","","Macro for generating Serialize/Deserialize for a type that …","","","","","","AES128 in CBC-mode using ANSI X9.23 padding.","AES128 in CBC-mode using ISO 10126 padding.","AES128 in CBC-mode using PKCS #7 padding.","AES128 in CTR-mode.","AES128 in GCM-mode (authenticated) using the given nonce …","AES192 in CTR-mode.","AES256 in CBC-mode using ANSI X9.23 padding.","AES256 in CBC-mode using ISO 10126 padding.","AES256 in CBC-mode using PKCS #7 padding.","AES256 in CTR-mode.","AES256 in GCM-mode (authenticated) using the given nonce …","Aes in CBC mode","Aes in CTR mode","AES in GCM mode (authenticated).","A key of N bytes used with AES ciphers.","Trait impl’d by symmetric ciphers for authenticated …","Trait impl’d by symmetric ciphers.","Trait impl’d by encryption keys in symmetric cryptography","Struct wrapping an instance of a …","","","An N byte initialization vector used with AES ciphers.","Trait impl’d by nonces and IV’s used in symmetric …","","","","","","","","","","","","","","","","Decrypt ciphertext using the given IV and return the …","","","","Decrypt ciphertext using the given IV and authentication …","","","","","","","Encrypt plaintext using the given IV and return the result.","","","","Encrypt plaintext using the given IV and authentication …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","The length of public keys when using the min_pk module and …","The length of public keys when using the min_sig module …","The key pair bytes length used by helper is the same as …","The length of a private key in bytes.","Module minimizing the size of public keys. Module …","Module minimizing the size of signatures. Module …","Aggregation of multiple BLS 12-381 signatures.","","BLS 12-381 key pair.","BLS 12-381 private key.","BLS 12-381 public key.","","BLS 12-381 signature.","Hash-to-curve domain separation tag.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Aggregation of multiple BLS 12-381 signatures.","","BLS 12-381 key pair.","BLS 12-381 private key.","BLS 12-381 public key.","","BLS 12-381 signature.","Hash-to-curve domain separation tag.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The key pair bytes length is the same as the private key …","The length of a private key in bytes.","The length of a public key in bytes.","The length of a signature in bytes.","Aggregation of multiple Ed25519 signatures.","Ed25519 key pair.","Ed25519 private key.","Ed25519 public key.","","Ed25519 signature.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Base64 encoding","Trait representing a general binary-to-string encoding.","Hex string encoding.","","","","","","","","","","","","","","","","Decode this encoding into bytes.","","","","Decodes a hex string to bytes. Both upper and lower case …","","","","","","","","","","Encode bytes into a string.","","","","Encodes bytes as a 0x prefixed hex string using lower case …","Get a string representation of this Base64 encoding.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Encodes bytes as a Base64.","Encodes bytes as a hex string.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","Decodes this Base64 encoding to bytes.","Decodes this hex encoding to bytes.","","","","","","","","","","","","","","","Contains the error value","Collection of errors to be used in fastcrypto.","","General cryptographic error.","General opaque cryptographic error.","Input length is wrong.","Input is to long.","Input is to short.","Invalid value was given to the function","Invalid message was given to the function","Invalid proof was given to the function","Invalid signature was given to the function","Not enough inputs were given to the function, retry with …","Contains the success value","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","Trait for group elements that has a fast doubling …","Trait for groups that have a reduction from a random …","Trait impl’d by elements of an additive cyclic group.","Trait for groups that have a standardized “hash_to_point…","Trait for groups that support multi-scalar multiplication.","","","","Trait impl’d by scalars to be used with GroupElement.","Type of scalars used in the [Self::mul] multiplication …","","Compute 2 * Self = Self + Self.","","Return an instance of the generator for this group.","Hashes the given message and maps the result to a group …","","","This module contains implementations of optimised scalar …","","","Implementations of the ristretto255 group which is a group …","Implementation of the Secp256r1 (aka P-256) curve. This is …","Return an instance of the identity element in this group.","Elements of the group G_1 in BLS 12-381.","","","Elements of the group G_2 in BLS 12-381.","","","Elements of the subgroup G_T of F_q^{12} in BLS 12-381. …","","","This represents a scalar modulo r = …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Trait for scalar multiplication for a fixed group element, …","","Compute self.base_element * scalar.","Create a new scalar multiplier with the given base element.","Serialize scalar into a byte vector in little-endian …","Compute …","","This scalar multiplier uses pre-computation with the …","","","Returns the argument unchanged.","Calls U::from(self).","","This method computes the linear combination of the given …","","","","","","","Represents a point in the Ristretto group for Curve25519.","Represents a scalar.","","","","","","","","","","","","","","","","","","","","","","","Return this point in compressed form.","Return this point in compressed form.","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","Construct a RistrettoScalar by reducing a 32-byte …","Construct a RistrettoScalar by reducing a 64-byte …","Construct a RistrettoPoint from the given data using an …","","","The order of the base point.","","","Calls U::from(self).","Calls U::from(self).","","Construct a RistrettoPoint from the given data using a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Decode a ristretto point in compressed binary form.","","","","","","","","","","","","A point on the Secp256r1 curve in projective coordinates.","","A field element in the prime field of the same order as …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The BLAKE2-256 hash function with 256 bit digests.","The BLAKE3 hash function with 256 bit digests.","Represents a digest of DIGEST_LEN bytes.","EllipticCurveMultisetHash (ECMH) is a homomorphic multiset …","This trait is implemented by all messages that can be …","Trait implemented by hash functions providing a output of …","This wraps a digest::Digest as a HashFunction.","The KECCAK hash function with 256 bit digests.","A Multiset Hash is a homomorphic hash function, which …","The length of this hash functions digests in bytes.","This trait allows using a HashFunctionWrapper where a …","The SHA-2 hash function with 256 bit digests.","The SHA-3 hash function with 256 bit digests.","The SHA-3 hash function with 512 bit digests.","The SHA-512 hash function with 512 bit digests.","The type of the digest when this is hashed.","","","","","","","","","","","","","","","","","","","","","","","","","Generate a digest of the current state of this hash …","Compute the digest of the given data and consume the hash …","","","Compute a single digest from all slices in the iterator in …","","","","","","","","","Retrieve result and consume hash function.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Insert an item into this hash function.","","Insert multiple items into this hash function.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a new hash function of the given type","Create a new digest containing the given bytes","","Remove an element from this hash function.","","Remove multiple items from this hash function.","","","","The size of this digest in bytes.","","","","Copy the digest into a new vector.","","","","","","","","","","","","","","Add all the elements of another hash function into this …","","Process the given data, and update the internal of the …","","","","","","","","","","Type for input keying material in hkdf_sha3_256.","Type for key in hmac_sha3_256.","HMAC-based Extract-and-Expand Key Derivation Function …","Keyed-Hash Message Authentication Code (HMAC) using …","Struct that represents a standard JWT header according to …","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","Parse the header base64 string into a [struct JWTHeader].","","","","","","","","","","Private key/seed of any/fixed size.","","","","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","URL-safe Base64 encoding without padding.","Base64 encoding trait.","","","","","","","","","","","","","","","","","","Decode a Base64 string into the provided destination …","","Decode a Base64 string in-place.","","Decode a Base64 string into a byte vector.","","Encode the input byte slice as Base64.","","Encode input byte slice into a String containing Base64.","","Get the length of Base64 produced by encoding the given …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Parse signature from binary representation according to …","Parse an RSAPublicKey from an ASN.1 DER (Distinguished …","Parse an RSAPublicKey from its components, eg. the modulus …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","Verify a signed message. The verification uses SHA-256 for …","Verify a signed message. The message, hashed, must be the …","","","","Default hash function used for signing and verifying …","","The key pair bytes length is the same as the private key …","The length of a private key in bytes.","The length of a public key in bytes.","The length of a signature in bytes.","Secp256k1 public/private key pair.","Secp256k1 private key.","Secp256k1 public key.","","Secp256k1 ECDSA signature.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","This module contains an implementation of the ECDSA …","","","","","","","","Create a new recoverable signature over the given message. …","Create a new signature using the given hash function to …","","","","","","","","","","","","","","","","","","","","","","","","","Verify the signature using the given hash function to hash …","","","","","","Length of a compact signature followed by one extra byte …","Secp256k1 signature.","An ECDSA signature","","","","","","Obtains a raw mutable pointer suitable for use with FFI …","Obtains a raw pointer suitable for use with FFI functions","","","","","","","","","","","","Like cmp::Cmp but faster and with no guarantees across …","","","","","","","","Like cmp::Eq but faster and with no guarantees across …","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Converts a 64-byte compact-encoded byte slice to a …","Converts a DER-encoded byte slice to a signature","Converts a “lax DER”-encoded byte slice to a …","","","","Calls U::from(self).","Calls U::from(self).","Normalizes a signature to a “low S” form. In ECDSA, …","","Recover public key from signature using the given hash …","","Serializes the signature in compact format","Serializes the signature in DER format","","","","","","","","","Convert a non-recoverable signature into a recoverable …","","","","","Verifies an ECDSA signature for msg using pk and the …","","","Default hash function used for signing and verifying …","The number of precomputed points used for scalar …","The key pair bytes length is the same as the private key …","The length of a private key in bytes.","The length of a public key in bytes.","The length of a signature in bytes.","The size of the sliding window used for scalar …","Secp256r1 public/private key pair.","Secp256r1 private key.","Secp256r1 public key.","","Secp256r1 signature.","","","","","","","","","","","","","","","","","","","","","","","","","","","","This module contains conversion function between scalars …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","This module contains an implementation of the ECDSA …","","","","","","","","","Create a new signature using the given hash function to …","","","","","","","","","","","","","","","","","","","","","","","","","Verify the signature using the given hash function to hash …","","","","","","Secp256r1 signature.","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","Recover the public key used to create this signature. This …","","","","","External types.","Serialization of internal types.","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","This service holds the node’s private key. It takes …","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","Trait impl’d by aggregated signatures in asymmetric …","Trait impl’d by RNG’s accepted by fastcrypto.","Trait impl’d by signatures in asymmetric cryptography.","","Cryptographic material with an immediate conversion …","Trait impl’d by a keys/secret seeds for generating a …","Trait impl’d by cryptographic material that can be …","Trait for objects that support an insecure default value …","Trait impl’d by a public / private key pair in …","","","","","","","","","","","","","","Trait impl’d by recoverable signatures","Trait impl’d by public / private keypairs that can …","","","","","","","Trait impl’d by a key/keypair that can create signatures.","","Trait impl’d by private (secret) keys in asymmetric …","Trait impl’d by concrete types that represent digital …","","Trait impl’d by public keys in asymmetric cryptography.","","","Combine signatures into a single aggregated signature.","Borrow a byte slice representing the serialized form of …","Verify a batch of aggregate signatures, each consisting of …","","","","Parse an object from its byte representation","Generate a new keypair using the given RNG.","Generate a new random instance using the given RNG.","","","Get the private key.","Get the public key.","Recover the public key from this signature.","Recover the public key from this signature. Assuming that …","Create a new signature over a message.","Sign as a recoverable signature.","Sign as a recoverable signature using the given hash …","Use Self to verify that the provided signature for a given …","Verify this aggregate signature assuming that all …","Verify this aggregate signature where the signatures are …","Verify a recoverable signature by recovering the public …","Verify a recoverable signature by recovering the public …","Returns the log base 2 of b. There is an exception: for …","","","","","","","A keypair for a verifiable random function (VRF).","Represents a private key used to compute outputs for a …","A proof that the output of a VRF was computed correctly.","Represents a public key of which is use to verify outputs …","An implementation of an Elliptic Curve VRF (ECVRF) using …","Generate a new keypair using the given RNG.","Compute both hash and proof for the given input.","Generate a proof for the given input.","Compute the output of the VRF with this proof.","Verify the correctness of this proof.","Verify the correctness of this proof and VRF output.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,32,0,0,5,5,5,5,19,29,31,5,19,29,31,5,5,5,5,15,19,29,31,32,31,5,5,5,5,5,15,19,29,31,32,31,5,5,19,29,31,5,5,5,19,29,31,5,19,29,31,5,5,5,5,19,29,31,5,19,29,31,5,19,29,31,5,19,29,31,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,44,44,44,44,48,49,50,51,44,48,49,50,51,44,44,48,49,50,51,44,48,49,50,51,44,48,49,51,44,48,51,44,48,51,44,48,50,48,49,50,51,44,51,44,48,49,50,51,44,48,49,50,51,44,48,49,50,51,44,48,49,50,51,44,48,49,50,51,44,48,48,49,49,50,50,51,51,44,44,48,48,49,49,50,51,51,44,44,48,48,49,50,50,51,44,44,48,49,50,51,44,50,50,48,51,48,48,49,50,51,44,48,50,49,48,50,48,49,50,51,44,51,44,49,50,48,51,44,48,49,51,44,48,49,50,51,44,48,48,49,50,51,44,44,48,49,50,51,44,48,49,50,51,44,48,48,44,44,48,49,50,51,44,0,0,0,0,0,0,0,0,60,63,59,59,59,59,60,61,62,63,59,60,61,62,63,59,59,60,61,62,63,59,60,61,62,63,59,60,61,63,59,60,63,59,60,63,59,60,62,60,61,62,63,59,63,59,64,60,61,62,63,59,60,61,62,63,59,60,61,62,63,59,60,61,62,63,59,60,61,62,63,59,60,60,61,61,62,62,63,63,59,59,60,60,61,61,62,63,63,59,59,60,60,61,62,62,63,59,59,60,61,62,63,59,62,62,60,63,60,60,61,62,63,59,60,62,61,60,62,60,61,62,63,59,63,59,61,62,60,63,59,60,61,63,59,60,61,62,63,59,60,60,61,62,63,59,59,60,61,62,63,59,60,61,62,63,59,60,60,59,59,60,61,62,63,59,0,0,0,0,0,0,0,0,0,0,0,0,65,69,70,65,67,68,69,70,65,67,68,69,70,196,65,67,68,69,70,196,65,67,68,69,70,69,70,65,69,70,65,69,70,65,68,65,67,68,69,70,69,70,65,67,68,69,70,196,67,65,67,68,69,70,65,67,68,69,70,65,67,68,69,70,65,67,68,69,70,65,65,67,67,68,68,69,69,70,70,65,65,67,67,68,69,69,70,70,196,65,65,67,68,68,68,69,70,65,67,68,69,70,68,68,65,65,196,65,67,68,69,70,65,68,68,65,67,68,69,70,196,69,68,70,65,69,70,65,67,69,70,65,67,68,69,70,196,65,65,67,68,69,69,70,196,65,67,68,69,70,196,65,67,68,69,70,65,196,65,67,68,69,70,0,0,0,0,73,74,75,73,74,75,73,74,75,73,74,75,73,74,75,197,73,74,75,0,73,74,75,73,73,74,74,75,75,197,73,74,75,0,73,73,75,73,73,75,75,73,74,75,73,74,75,73,74,73,74,75,73,74,75,73,74,75,73,74,75,73,74,75,73,74,75,73,74,73,73,74,75,75,73,74,75,73,74,75,73,74,75,89,0,0,17,17,17,17,17,17,17,17,17,17,89,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,0,93,93,0,0,86,0,83,84,86,88,87,90,0,93,87,0,0,86,0,0,0,0,0,0,0,0,0,0,94,95,96,97,94,94,94,94,95,95,95,95,96,96,96,96,97,97,97,97,94,94,95,95,96,96,97,97,94,95,96,97,94,95,96,97,94,95,96,97,94,95,96,97,94,95,96,97,94,95,96,97,94,95,96,97,94,94,95,95,96,96,97,97,97,94,95,96,97,94,94,95,95,96,96,97,97,97,94,95,96,97,94,95,96,97,94,95,94,95,96,97,97,94,94,94,94,95,95,95,95,96,96,96,96,97,97,97,97,94,94,95,95,96,96,97,97,94,95,94,94,95,95,96,96,97,97,94,97,94,95,96,97,94,94,94,94,95,95,95,95,96,96,96,96,97,97,97,97,94,94,95,95,96,96,97,97,94,95,96,97,94,95,96,97,94,94,95,95,96,97,94,95,96,97,94,95,96,97,94,95,96,97,94,95,96,97,0,0,103,103,104,103,0,0,105,105,105,105,105,0,105,105,105,105,105,105,0,0,110,111,110,110,110,110,111,111,111,111,110,110,111,111,110,111,110,111,110,111,110,111,110,110,110,110,111,110,111,111,110,110,111,110,110,111,111,111,110,111,110,110,111,111,111,110,111,111,111,110,110,111,111,110,111,110,111,111,110,110,110,110,110,111,111,111,111,110,110,111,111,110,110,110,111,111,111,110,111,110,110,110,110,111,111,111,111,110,110,111,111,110,111,110,111,110,110,111,110,111,110,111,110,111,110,111,111,0,0,0,114,115,114,114,114,114,115,115,115,115,114,114,115,115,114,115,114,115,114,115,114,115,114,115,115,114,115,114,114,115,114,114,115,115,114,115,114,114,115,115,115,115,114,115,114,115,115,114,114,114,114,115,115,115,115,114,114,115,115,114,114,115,115,115,115,114,114,114,114,115,115,115,115,114,114,115,115,115,115,114,115,114,115,114,115,114,115,114,115,114,115,0,0,0,0,0,0,0,0,0,131,0,0,0,0,0,125,198,118,119,118,118,118,120,123,119,118,120,123,119,118,119,118,119,118,120,123,119,118,119,125,130,131,119,118,131,118,118,118,119,118,118,119,119,131,120,123,120,118,118,119,118,120,123,119,118,130,119,130,119,118,120,123,119,131,118,118,130,119,130,119,118,119,118,118,119,118,118,118,118,120,123,119,118,120,123,119,118,120,123,119,130,119,131,120,123,118,120,123,119,120,120,120,0,0,0,0,0,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,0,137,137,137,137,137,137,137,137,0,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,138,0,0,0,0,139,140,141,139,140,141,139,140,141,139,140,141,139,140,141,199,139,199,139,199,139,199,139,199,139,199,139,139,141,139,139,141,141,139,139,140,141,141,140,140,139,140,141,139,140,141,139,140,141,139,140,141,139,140,141,140,140,139,140,141,0,0,0,0,0,0,0,0,0,0,0,0,145,147,145,146,147,148,145,146,147,148,145,146,147,148,145,146,147,148,145,146,147,145,147,145,147,145,148,145,146,147,148,145,146,147,148,146,145,146,147,148,145,146,147,148,145,146,147,148,145,146,147,148,145,145,146,146,147,147,148,148,145,145,146,146,147,147,148,145,145,146,147,147,148,148,145,146,147,148,148,148,145,147,145,146,147,148,145,148,146,145,148,148,0,148,145,146,147,148,147,148,148,148,145,147,145,146,147,145,146,147,148,145,145,146,147,147,148,145,146,147,148,145,146,147,148,145,145,145,146,147,148,0,0,0,0,150,149,149,150,150,150,150,149,150,149,150,149,149,150,149,150,149,150,150,149,149,149,149,149,150,149,150,150,150,149,149,150,150,149,149,150,150,149,149,150,150,150,150,150,149,150,149,150,150,149,149,150,150,149,150,149,150,149,149,150,149,149,150,149,150,149,150,150,149,0,0,0,0,0,0,0,0,0,0,0,0,0,156,158,156,157,158,159,156,157,158,159,156,157,158,159,156,157,158,159,156,157,158,156,158,156,158,156,0,159,156,157,158,159,156,157,158,159,156,157,158,159,156,157,158,159,156,157,158,159,156,157,158,159,156,156,157,157,158,158,159,159,156,156,157,157,158,158,159,156,156,157,158,158,159,159,156,157,158,159,159,159,156,158,156,157,158,159,156,159,157,156,159,159,0,159,156,157,158,159,158,159,159,159,156,158,156,157,158,156,157,158,159,156,156,157,158,158,159,156,157,158,159,156,157,158,159,156,156,156,157,158,159,0,0,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,162,0,0,0,58,161,58,161,58,58,58,58,161,58,58,58,58,58,58,161,58,58,58,58,58,58,58,58,58,58,58,58,58,162,58,161,58,58,58,0,58,58,161,58,162,58,58,161,58,161,58,161,58,161,58,0,164,164,164,164,164,164,164,164,164,164,164,164,164,164,0,0,0,182,0,0,0,0,0,172,173,165,172,165,163,171,173,165,163,183,182,171,0,0,172,173,163,183,184,171,0,182,0,0,0,0,171,171,171,174,171,163,176,176,174,163,177,178,179,163,163,182,182,166,183,183,172,171,171,184,184,0,190,188,188,191,188,189,0,0,0,0,0,188,188,188,189,189,189,0,0,0,0,192,193,194,195,192,193,194,195,192,193,194,195,193,192,193,194,195,192,192,193,193,194,194,195,195,192,193,194,195,192,193,194,194,195,194,192,193,194,195,194,194,192,193,194,195,194,195,192,193,194,195,192,193,194,195,192,193,194,195,195,192,193,194,195],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[[[5,[-1]]],[[7,[6]]],[[8,[6]],9]],[[[5,[-1]]],[[7,[6]]],[[8,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[5,[-1]]],[[5,[-1]]],[10,[8,[6]]]],[[-1,-2],2,[],[]],[11,[[13,[-1,12]]],[]],[[[15,[],[[14,[-1]]]],-1,[7,[6]]],[[13,[[16,[6]],17]]],18],[[[19,[-1,-2]],-3,[7,[6]]],[[13,[[16,[6]],17]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27,28],[]],[[[29,[-1,-2,-3]],-4,[7,[6]]],[[13,[[16,[6]],17]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27,28],[[30,[25]]],[]],[[[31,[-1,-2,-3]],-4,[7,[6]]],[[13,[[16,[6]],17]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27],[[8,[6]],9],[]],[[[32,[],[[14,[-1]]]],-1,[7,[6]],[7,[6]]],[[13,[[16,[6]],17]]],18],[[[31,[-1,-2,-3]],-4,[7,[6]],[7,[6]]],[[13,[[16,[6]],17]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27],[[8,[6]],9],[]],[-1,[[13,[[5,[-2]]]]],33,[[8,[6]]]],[[[5,[-1]]],2,[[8,[6]]]],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[[15,[],[[14,[-1]]]],-1,[7,[6]]],[[16,[6]]],18],[[[19,[-1,-2]],-3,[7,[6]]],[[16,[6]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27,28],[]],[[[29,[-1,-2,-3]],-4,[7,[6]]],[[16,[6]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27,28],[[30,[25]]],[]],[[[31,[-1,-2,-3]],-4,[7,[6]]],[[16,[6]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27],[[8,[6]],9],[]],[[[32,[],[[14,[-1]]]],-1,[7,[6]],[7,[6]]],[[16,[6]]],18],[[[31,[-1,-2,-3]],-4,[7,[6]],[7,[6]]],[[16,[6]]],[[8,[6]]],[[21,[],[[20,[-1]]]],22,23,[26,[],[[24,[25]]]],27],[[8,[6]],9],[]],[[[5,[-1]],37],38,[[8,[6]]]],[[[5,[-1]],37],38,[[8,[6]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[7,[6]]],[[13,[[5,[-1]],17]]],[[8,[6]],9]],[-1,[[39,[-2]]],40,[[8,[6]],9]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[39,[-1]]],[[19,[-1,-2]]],[[8,[6]]],[]],[[[39,[-1]]],[[29,[-1,-2,-3]]],[[8,[6]]],[],[]],[[[39,[-1]]],[[31,[-1,-2,-3]]],[[8,[6]]],[],[]],[[[5,[-1]],-2],13,[[8,[6]]],41],[-1,-2,[],[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[5,[-1]]],2,[[8,[6]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[44,44],[[13,[2,17]]]],[[44,-1],[[13,[2,17]]],[]],[-3,[[13,[44,17]]],[],[[45,[-1]]],[[47,[],[[46,[-2]]]]]],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[48,[[7,[6]]]],[49,[[7,[6]]]],[50,[[7,[6]]]],[51,[[7,[6]]]],[44,[[7,[6]]]],[[[7,[44]],[16,[-2]],[7,[[7,[6]]]]],[[13,[2,17]]],[],[[52,[],[[46,[-1]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[48,48],[51,51],[44,44],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[48,48],53],[50,50],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[[],51],[[],44],[-1,[[13,[48]]],33],[-1,[[13,[49]]],33],[-1,[[13,[50]]],33],[-1,[[13,[51]]],33],[-1,[[13,[44]]],33],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[48,48],54],[[49,49],54],[[50,50],54],[[51,51],54],[[44,44],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[48,37],[[13,[2,55]]]],[[48,37],[[13,[2,55]]]],[[49,37],38],[[49,37],38],[[50,37],38],[[51,37],38],[[51,37],[[13,[2,55]]]],[[44,37],[[13,[2,55]]]],[[44,37],38],[-1,-1,[]],[49,48],[-1,-1,[]],[-1,-1,[]],[49,50],[-1,-1,[]],[-1,-1,[]],[51,44],[[[7,[6]]],[[13,[48,17]]]],[[[7,[6]]],[[13,[49,17]]]],[[[7,[6]]],[[13,[50,17]]]],[[[7,[6]]],[[13,[51,17]]]],[[[7,[6]]],[[13,[44,17]]]],[11,[[13,[50,-1]]],[]],[-1,50,40],[[48,-1],2,56],[[51,-1],2,56],[[],48],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[48,48],[[57,[53]]]],[50,-1,[]],0,0,[50,-1,[]],[[48,-1],13,41],[[49,-1],13,41],[[50,-1],13,41],[[51,-1],13,41],[[44,-1],13,41],0,0,[[49,[7,[6]]],51],[[50,[7,[6]]],51],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[58,[[13,[48,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[44,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[48,[[13,[2,17]]]],[[48,[7,[6]],51],[[13,[2,17]]]],[[44,7,[7,[6]]],[[13,[2,17]]]],[[44,7,[7,[[7,[6]]]]],[[13,[2,17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[59,59],[[13,[2,17]]]],[[59,-1],[[13,[2,17]]],[]],[-3,[[13,[59,17]]],[],[[45,[-1]]],[[47,[],[[46,[-2]]]]]],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[60,[[7,[6]]]],[61,[[7,[6]]]],[62,[[7,[6]]]],[63,[[7,[6]]]],[59,[[7,[6]]]],[[[7,[59]],[16,[-2]],[7,[[7,[6]]]]],[[13,[2,17]]],[],[[52,[],[[46,[-1]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[60,60],[63,63],[59,59],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[60,60],53],[62,62],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[[],63],[[],59],[[],64],[-1,[[13,[60]]],33],[-1,[[13,[61]]],33],[-1,[[13,[62]]],33],[-1,[[13,[63]]],33],[-1,[[13,[59]]],33],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[60,60],54],[[61,61],54],[[62,62],54],[[63,63],54],[[59,59],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[60,37],[[13,[2,55]]]],[[60,37],[[13,[2,55]]]],[[61,37],38],[[61,37],38],[[62,37],38],[[63,37],38],[[63,37],[[13,[2,55]]]],[[59,37],[[13,[2,55]]]],[[59,37],38],[-1,-1,[]],[61,60],[-1,-1,[]],[-1,-1,[]],[61,62],[-1,-1,[]],[-1,-1,[]],[63,59],[[[7,[6]]],[[13,[60,17]]]],[[[7,[6]]],[[13,[61,17]]]],[[[7,[6]]],[[13,[62,17]]]],[[[7,[6]]],[[13,[63,17]]]],[[[7,[6]]],[[13,[59,17]]]],[11,[[13,[62,-1]]],[]],[-1,62,40],[[60,-1],2,56],[[63,-1],2,56],[[],60],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[60,60],[[57,[53]]]],[62,-1,[]],0,0,[62,-1,[]],[[60,-1],13,41],[[61,-1],13,41],[[62,-1],13,41],[[63,-1],13,41],[[59,-1],13,41],0,0,[[61,[7,[6]]],63],[[62,[7,[6]]],63],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[58,[[13,[60,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[59,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[60,[[13,[2,17]]]],[[60,[7,[6]],63],[[13,[2,17]]]],[[59,7,[7,[6]]],[[13,[2,17]]]],[[59,7,[7,[[7,[6]]]]],[[13,[2,17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[65,-1,66],[67,-1,66],[68,[[7,[6]]]],[69,[[7,[6]]]],[70,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[65,65],[69,69],[70,70],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[65,65],53],[68,68],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[[],69],[[],70],[-1,[[13,[65]]],33],[-1,[[13,[67]]],33],[-1,[[13,[68]]],33],[-1,[[13,[69]]],33],[-1,[[13,[70]]],33],[-1,[[13,[71]]],33],[67,2],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[65,65],54],[[67,67],54],[[68,68],54],[[69,69],54],[[70,70],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[65,37],38],[[65,37],[[13,[2,55]]]],[[67,37],38],[[67,37],38],[[68,37],38],[[69,37],38],[[69,37],[[13,[2,55]]]],[[70,37],[[13,[2,55]]]],[[70,37],38],[-1,-1,[]],[-1,-1,[]],[67,65],[-1,-1,[]],[72,68],[-1,-1,[]],[67,68],[-1,-1,[]],[-1,-1,[]],[[[7,[6]]],[[13,[65,17]]]],[[[7,[6]]],[[13,[67,17]]]],[[[7,[6]]],[[13,[68,17]]]],[[[7,[6]]],[[13,[69,17]]]],[[[7,[6]]],[[13,[70,17]]]],[11,[[13,[68,-1]]],[]],[-1,68,40],[[65,-1],2,56],[[],65],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[65,65],[[57,[53]]]],[68,-1,[]],[68,-1,[]],[[65,-1],13,41],[[67,-1],13,41],[[68,-1],13,41],[[69,-1],13,41],[[70,-1],13,41],[[71,-1],13,41],0,[[68,[7,[6]]],69],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[65,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[69,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[[65,[7,[6]],69],[[13,[2,17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[73,73],[74,74],[75,75],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[11,[[76,[[16,[6]]]]]],[11,[[76,[[16,[6]],12]]]],[11,[[76,[[16,[6]],12]]]],[11,[[76,[[16,[6]],12]]]],[11,[[76,[-1]]],[[77,[[7,[6]]]]]],[-1,[[13,[73]]],33],[-1,[[13,[74]]],33],[-1,[[13,[75]]],33],[-1,[[76,[[78,[6]]]]],33],[-1,[[76,[[16,[6]]]]],33],[-1,[[76,[[16,[6]]]]],33],[-1,[[76,[[78,[6]]]]],33],[-1,[[76,[[78,[6]]]]],33],[-1,[[76,[[16,[6]]]]],33],[-1,34,[[79,[[7,[6]]]]]],[-1,34,[[79,[[7,[6]]]]]],[-1,34,[[79,[[7,[6]]]]]],[-1,34,[[79,[[7,[6]]]]]],[-1,34,[[79,[[7,[6]]]]]],[73,34],[[73,73],54],[[75,75],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[73,37],38],[[74,37],38],[[75,37],38],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[7,[6]]],73],[[[7,[6]]],74],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[80,81],[80,81],[80,81],[[],34],[[],34],[[],34],[[73,-1],13,41],[[74,-1],13,41],[[75,-1],13,41],[[-1,-2],76,[[79,[[7,[6]]]]],41],[[-1,-2],76,[[79,[[7,[6]]]]],41],[[-1,-2],76,[[79,[[7,[6]]]]],41],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[73,[[76,[[16,[6]],12]]]],[74,[[76,[[16,[6]],12]]]],[-1,[[13,[-2]]],[],[]],[34,[[76,[73,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[34,[[76,[75,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[17,17],[[-1,-2],2,[],[]],[[17,17],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[17,37],38],[[17,37],38],[-1,-1,[]],[82,17],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,[83,83],[[[7,[6]]],84],[[],[[86,[],[[85,[-1]]]]],87],[[[7,[6]]],88],[87,[[89,[87]]]],[[[7,[-1]],[7,[90]]],[[89,[90]]],[]],0,[[[93,[],[[91,[-1]],[92,[-2]]]],-1],-2,86,[]],[-1,87,40],0,0,[[],[[86,[],[[85,[-1]]]]],87],0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[94,94],-1,[]],[[94,94],-1,[]],[[94,94],-1,[]],[[94,94],-1,[]],[[95,95],-1,[]],[[95,95],-1,[]],[[95,95],-1,[]],[[95,95],-1,[]],[[96,96],-1,[]],[[96,96],-1,[]],[[96,96],-1,[]],[[96,96],-1,[]],[[97,97],-1,[]],[[97,97],-1,[]],[[97,97],-1,[]],[[97,97],-1,[]],[[94,94],2],[[94,94],2],[[95,95],2],[[95,95],2],[[96,96],2],[[96,96],2],[[97,97],2],[[97,97],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[94,94],[95,95],[96,96],[97,97],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[-1,[[13,[94]]],33],[-1,[[13,[95]]],33],[-1,[[13,[96]]],33],[-1,[[13,[97]]],33],[[94,97],-1,[]],[[95,97],-1,[]],[[96,97],-1,[]],[[97,97],-1,[]],[[94,94],54],[[95,95],54],[[96,96],54],[[97,97],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[[7,[6]]],97],[[94,37],38],[[95,37],38],[[96,37],38],[[97,37],38],[-1,-1,[]],[98,94],[99,95],[-1,-1,[]],[-1,-1,[]],[100,96],[101,97],[-1,-1,[]],[102,97],[[[78,[6]]],[[13,[94,17]]]],[[[78,[6]]],[[13,[95,17]]]],[[[78,[6]]],[[13,[96,17]]]],[[[78,[6]]],[[13,[97,17]]]],[[],94],[[],95],[[],96],[[],97],[[[7,[6]]],94],[[[7,[6]]],95],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[97,[[89,[97]]]],[94,-1,[]],[94,-1,[]],[94,-1,[]],[[94,97],-1,[]],[[95,97],-1,[]],[95,-1,[]],[95,-1,[]],[95,-1,[]],[96,-1,[]],[96,-1,[]],[96,-1,[]],[[96,97],-1,[]],[97,-1,[]],[97,-1,[]],[97,-1,[]],[[97,97],-1,[]],[94,2],[94,2],[95,2],[95,2],[96,2],[96,2],[97,2],[97,2],[[[7,[-1]],[7,[94]]],[[89,[94]]],[]],[[[7,[-1]],[7,[95]]],[[89,[95]]],[]],[94,-1,[]],[94,-1,[]],[95,-1,[]],[95,-1,[]],[96,-1,[]],[96,-1,[]],[97,-1,[]],[97,-1,[]],[[94,-1],-2,[],[]],[-1,97,40],[[94,-1],13,41],[[95,-1],13,41],[[96,-1],13,41],[[97,-1],13,41],[[94,94],-1,[]],[[94,94],-1,[]],[[94,94],-1,[]],[[94,94],-1,[]],[[95,95],-1,[]],[[95,95],-1,[]],[[95,95],-1,[]],[[95,95],-1,[]],[[96,96],-1,[]],[[96,96],-1,[]],[[96,96],-1,[]],[[96,96],-1,[]],[[97,97],-1,[]],[[97,97],-1,[]],[[97,97],-1,[]],[[97,97],-1,[]],[[94,94],2],[[94,94],2],[[95,95],2],[[95,95],2],[[96,96],2],[[96,96],2],[[97,97],2],[[97,97],2],[94,[[78,[6]]]],[95,[[78,[6]]]],[96,[[78,[6]]]],[97,[[78,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[94,-1]]],[]],[58,[[13,[95,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],94],[[],95],[[],96],[[],97],0,0,[[103,-1],-2,[],[]],[[-1,-1],103,[]],[104,[[16,[6]]]],[[103,-1,-2,-1],-2,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],[-1,-2,[],[]],[[[105,[-1,-2]],-2],-1,[],[]],[[[78,[-1]],[78,[-2]],[107,[106,[16,[-2]]]],106,-2],-2,[104,10,9],[]],[[-1,-1],[[105,[-1,-2]]],[[108,[],[[92,[]]]],[109,[],[[92,[]]]],83,10,9],[104,10,9]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[[[105,[-1,-2]],-2,-1,-2],-1,[],[]],[-1,43,[]],[-1,-2,[],[]],0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[110,110],110],[[110,110],-1,[]],[[110,110],-1,[]],[[110,110],-1,[]],[[111,111],-1,[]],[[111,111],-1,[]],[[111,111],-1,[]],[[111,111],111],[[110,110],2],[[110,110],2],[[111,111],2],[[111,111],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[110,110],[111,111],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[110,[[78,[6]]]],[[[78,[6]]],[[13,[110,17]]]],[[],110],[-1,[[13,[110]]],33],[-1,[[13,[111]]],33],[[110,111],-1,[]],[[111,-1],111,[]],[[111,111],[[13,[111,17]]]],[110,110],[[110,110],54],[[111,111],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[[7,[6]]],111],[[110,37],38],[[111,37],38],[-1,-1,[]],[112,110],[113,111],[-1,-1,[]],[102,111],[[[78,[6]]],[[13,[110,17]]]],[[[78,[6]]],[[13,[111,17]]]],[[[78,[6]]],111],[[[78,[6]]],111],[[[78,[6]]],110],[[],110],[[],111],[[],111],[[[7,[6]]],110],[[[7,[6]]],111],[-1,-2,[],[]],[-1,-2,[],[]],[111,[[89,[111]]]],[[[7,[6]]],110],[110,-1,[]],[[110,111],110],[110,-1,[]],[110,-1,[]],[[111,111],111],[111,-1,[]],[111,-1,[]],[111,-1,[]],[110,2],[110,2],[111,2],[111,2],[[[7,[-1]],[7,[110]]],[[89,[110]]],[]],[110,110],[110,-1,[]],[111,-1,[]],[111,111],[-1,111,40],[[110,-1],13,41],[[111,-1],13,41],[[110,110],-1,[]],[[110,110],-1,[]],[[110,110],-1,[]],[[110,110],110],[[111,111],-1,[]],[[111,111],-1,[]],[[111,111],-1,[]],[[111,111],111],[[110,110],2],[[110,110],2],[[111,111],2],[[111,111],2],[110,[[78,[6]]]],[111,[[78,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[[[7,[6]]],[[13,[110,17]]]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],110],[[],111],[111,2],0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[114,114],-1,[]],[[114,114],-1,[]],[[114,114],114],[[114,114],-1,[]],[[115,115],-1,[]],[[115,115],115],[[115,115],-1,[]],[[115,115],-1,[]],[[114,114],2],[[114,114],2],[[115,115],2],[[115,115],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[114,114],[115,115],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],114],[[],115],[-1,[[13,[115]]],33],[[114,115],[[13,[114,17]]]],[[115,115],[[13,[115,17]]]],[114,114],[[114,114],54],[[115,115],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[114,37],38],[[115,37],38],[116,114],[-1,-1,[]],[-1,-1,[]],[117,115],[102,115],[[[78,[6]]],[[13,[115,17]]]],[[],114],[[],115],[-1,-2,[],[]],[-1,-2,[],[]],[115,[[89,[115]]]],[114,-1,[]],[[114,115],114],[114,-1,[]],[114,-1,[]],[115,-1,[]],[115,-1,[]],[115,-1,[]],[[115,115],-1,[]],[114,2],[114,2],[115,2],[115,2],[114,114],[114,-1,[]],[115,-1,[]],[115,115],[-1,115,40],[[115,-1],13,41],[[114,114],-1,[]],[[114,114],-1,[]],[[114,114],-1,[]],[[114,114],114],[[115,115],-1,[]],[[115,115],-1,[]],[[115,115],115],[[115,115],-1,[]],[[114,114],2],[[114,114],2],[[115,115],2],[[115,115],2],[115,[[78,[6]]]],[115,[[16,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],114],[[],115],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[118,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[118,118],[119,119],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[118,118],53],[[],[[120,[-1]]],[121,122]],[[],123],[[],119],[-1,[[13,[118]]],33],[-1,[[13,[119]]],33],[[[125,[],[[124,[-1]]]]],-1,[[126,[118]],127,128,129,9]],[130,118],[-1,118,[[79,[[7,[6]]]]]],[119,118],0,[-2,118,[[79,[[7,[6]]]]],[[52,[],[[46,[-1]]]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[118,118],54],[[119,119],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[131,118],[[[120,[-1]]],118,[122,121]],[123,118],[[[120,[-1]]],[[132,[2]]],[122,121]],[[118,37],[[13,[2,55]]]],[[118,37],[[13,[2,55]]]],[[119,37],38],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[118,-1],2,56],[[130,-1],2,[[79,[[7,[6]]]]]],[[119,-1],2,[[79,[[7,[6]]]]]],[[130,-2],2,[[79,[[7,[6]]]]],[[47,[],[[46,[-1]]]]]],[[119,-2],2,[[79,[[7,[6]]]]],[[47,[],[[46,[-1]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],131],[[[78,[6]]],118],[[118,118],[[57,[53]]]],[[130,-1],2,[[79,[[7,[6]]]]]],[[119,-1],2,[[79,[[7,[6]]]]]],[[130,-2],2,[[79,[[7,[6]]]]],[[47,[],[[46,[-1]]]]]],[[119,-2],2,[[79,[[7,[6]]]]],[[47,[],[[46,[-1]]]]]],[[118,-1],13,41],[[119,-1],13,41],[118,106],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[118,[[16,[6]]]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[[130,130],2],[[119,119],2],[[131,-1],2,[[79,[[7,[6]]]]]],[[[120,[-1]],-2],2,[122,121],[[79,[[7,[6]]]]]],[[123,-1],2,[[79,[[7,[6]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[120,[-1]],[7,[6]]],[[132,[106]]],[122,121]],[[-1,[7,[6]]],[[13,[2,133]]],[]],[[-1,[7,[6]]],[[13,[2,134]]],[]],0,0,[[135,[7,[6]],[7,[6]],106],[[13,[[16,[6]],17]]]],[[136,[7,[6]]],118],0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[137,137],[[-1,-2],2,[],[]],[[],137],[-1,[[13,[137]]],33],[[137,137],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[137,37],38],[-1,-1,[]],[[137,-1],2,56],[-1,-2,[],[]],[80,81],0,[11,[[13,[137,17]]]],[11,[[13,[[2,[34,34]],17]]]],[[],34],[[137,-1],13,41],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],0,[-1,43,[]],[-1,-2,[],[]],0,[-1,[[3,[-2,-3]]],[],[],4],[138,[[7,[6]]]],[138,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[11,[[13,[-1,12]]],[]],[138,2],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[138,138],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[138,37],38],[-1,-1,[]],[[[7,[6]]],[[13,[138,17]]]],[-1,-2,[],[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,-2,[],[]],[138,2],0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[139,139],[140,140],[141,141],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,[7,[6]]],[[13,[[7,[6]],142]]],[[79,[[7,[6]]]]]],[[-1,[7,[6]]],[[13,[[7,[6]],142]]],[[79,[[7,[6]]]]]],[[[7,[6]]],[[13,[[7,[6]],143]]]],[[[7,[6]]],[[13,[[7,[6]],143]]]],[11,[[13,[[16,[6]],142]]]],[11,[[13,[[16,[6]],142]]]],[[[7,[6]],[7,[6]]],[[13,[11,144]]]],[[[7,[6]],[7,[6]]],[[13,[11,144]]]],[[[7,[6]]],34],[[[7,[6]]],34],[[[7,[6]]],106],[[[7,[6]]],106],[[139,139],54],[[141,141],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[139,37],[[13,[2,55]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[7,[6]]],[[89,[141]]]],[[[7,[6]]],[[89,[140]]]],[[[7,[6]],[7,[6]]],[[89,[140]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[[140,[7,[6]],141],[[89,[2]]]],[[140,[7,[6]],141],[[89,[2]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[145,[[7,[6]]]],[146,[[7,[6]]]],[147,[[7,[6]]]],[148,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[145,145],[147,147],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[145,145],53],[148,148],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[-1,[[13,[145]]],33],[-1,[[13,[146]]],33],[-1,[[13,[147]]],33],[-1,[[13,[148]]],33],[146,2],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[145,145],54],[[146,146],54],[[147,147],54],[[148,148],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[145,37],38],[[145,37],[[13,[2,55]]]],[[146,37],38],[[146,37],38],[[147,37],38],[[147,37],[[13,[2,55]]]],[[148,37],38],[146,145],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[149,147],[-1,-1,[]],[146,148],[[[7,[6]]],[[13,[145,17]]]],[[[7,[6]]],[[13,[146,17]]]],[[[7,[6]]],[[13,[147,17]]]],[[[7,[6]]],[[13,[148,17]]]],[11,[[13,[148,-1]]],[]],[-1,148,40],[[145,-1],2,56],[[147,-1],2,56],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[145,145],[[57,[53]]]],[148,-1,[]],0,0,[148,-1,[]],0,0,0,[[145,-1],13,41],[[146,-1],13,41],[[147,-1],13,41],[[148,-1],13,41],0,[[148,[7,[6]]],147],[[148,[7,[6]]],149],[[148,[7,[6]]],147],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[58,[[13,[145,-1]]],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[147,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[[145,[7,[6]],147],[[13,[2,17]]]],[[145,[7,[6]],147],[[13,[2,17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[150],[150],[150,151],[150,151],[149,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[150,150],[149,149],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[150,150],53],[[150,150],53],[11,[[13,[-1,12]]],[]],[-1,[[13,[149]]],33],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[150,150],54],[[149,149],54],[[150,150],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[150,37],[[13,[2,55]]]],[[150,37],[[13,[2,55]]]],[[149,37],[[13,[2,55]]]],[[149,37],38],[-1,-1,[]],[151,150],[-1,-1,[]],[[[7,[6]]],[[13,[149,17]]]],[[[7,[6]]],[[13,[150,152]]]],[[[7,[6]]],[[13,[150,152]]]],[[[7,[6]]],[[13,[150,152]]]],[11,[[13,[150,152]]]],[[150,-1],2,56],[[149,-1],2,56],[-1,-2,[],[]],[-1,-2,[],[]],[150,2],[[150,150],[[57,[53]]]],[[149,[7,[6]]],[[13,[145,17]]]],[[149,-1],13,41],[150,[[78,[6]]]],[150,153],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[[147,145,[7,[6]]],[[13,[149,17]]]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[[150,154,155],[[13,[2,152]]]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[-1,[[3,[-2,-3]]],[],[],4],[156,[[7,[6]]]],[157,[[7,[6]]]],[158,[[7,[6]]]],[159,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[156,156],[158,158],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[156,156],53],0,[159,159],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[11,[[13,[-1,12]]],[]],[-1,[[13,[156]]],33],[-1,[[13,[157]]],33],[-1,[[13,[158]]],33],[-1,[[13,[159]]],33],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[156,156],54],[[157,157],54],[[158,158],54],[[159,159],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[156,37],[[13,[2,55]]]],[[156,37],38],[[157,37],38],[[157,37],38],[[158,37],38],[[158,37],[[13,[2,55]]]],[[159,37],38],[157,156],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[160,158],[157,159],[-1,-1,[]],[[[7,[6]]],[[13,[156,17]]]],[[[7,[6]]],[[13,[157,17]]]],[[[7,[6]]],[[13,[158,17]]]],[[[7,[6]]],[[13,[159,17]]]],[11,[[13,[159,-1]]],[]],[-1,159,40],[[156,-1],2,56],[[158,-1],2,56],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[156,156],[[57,[53]]]],[159,-1,[]],0,0,[159,-1,[]],0,0,0,[[156,-1],13,41],[[157,-1],13,41],[[158,-1],13,41],[[159,-1],13,41],0,[[159,[7,[6]]],158],[[159,[7,[6]]],160],[[159,[7,[6]]],158],[-1,-2,[],[]],[-1,-2,[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[58,[[13,[156,-1]]],[]],[-1,[[13,[-2]]],[],[]],[58,[[13,[158,-1]]],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[[156,[7,[6]],158],[[13,[2,17]]]],[[156,[7,[6]],158],[[13,[2,17]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[[-1,1],2,[]],[-1,[[3,[-2,-3]]],[],[],4],[160,[[7,[6]]]],[-1,-2,[],[]],[-1,-2,[],[]],0,[160,160],[[-1,-2],2,[],[]],[11,[[13,[-1,12]]],[]],[-1,[[13,[160]]],33],[-1,34,[]],[-1,-2,[],[[36,[35]]]],[-1,-2,[],[[36,[35]]]],[[160,160],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[160,37],38],[[160,37],[[13,[2,55]]]],[-1,-1,[]],[[[7,[6]]],[[13,[160,17]]]],[[160,-1],2,56],[-1,-2,[],[]],[[160,[7,[6]]],[[13,[156,17]]]],0,[[160,-1],13,41],0,[-1,-2,[],[]],[-1,34,[]],[-1,[[13,[[3,[-2,-3]],[42,[-2]]]]],[],[],4],[-1,[[13,[-2]]],[],[]],[[158,156,[7,[6]]],[[13,[160,17]]]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,-2,[],[]],0,0,0,0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[58,58],[[-1,-2],2,[],[]],[[58,58],53],[-1,[[13,[161]]],33],[-1,[[13,[58]]],33],[[58,58],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[58,37],38],[[58,37],[[13,[2,55]]]],[-1,-1,[]],[60,58],[69,58],[44,58],[145,58],[147,58],[48,58],[65,58],[95,58],[158,58],[59,58],[94,58],[156,58],[-1,-1,[]],[[[78,[6]]],[[13,[162,17]]]],[[58,-1],2,56],[-1,-2,[],[]],[-1,-2,[],[]],[[],54],[80,81],[11,[[13,[-1,12]]],163],[[58,58],[[57,[53]]]],[[],34],[[161,-1],13,41],[[58,-1],13,41],[162,[[78,[6]]]],[-1,-2,[],[]],[-1,34,[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[164,[-1]]],[[164,[-1]]],[10,165]],[[-1,-2],2,[],[]],[-1,-1,[]],[-1,-2,[],[]],[-2,[[164,[-1]]],165,[[166,[-1]],167]],[[[164,[-1]],118],-1,165],[-1,-2,[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[171,[],[[168,[-1]],[169,[-2]],[170,[-3]]]],[171,[],[[168,[-1]],[169,[-2]],[170,[-3]]]]],[[13,[2,17]]],[[165,[],[[169,[-2]]]]],[[172,[],[[168,[-1]]]]],[[173,[],[[168,[-1]]]]]],[[[171,[],[[168,[-1]],[169,[-2]],[170,[-3]]]],-1],[[13,[2,17]]],[[165,[],[[169,[-2]]]]],[[172,[],[[168,[-1]]]]],[[173,[],[[168,[-1]]]]]],[-3,[[13,[[171,[],[[168,[-1]],[169,[-4]],[170,[-5]]]],17]]],[[165,[],[[169,[-4]]]]],[[45,[-1]]],[[47,[],[[46,[-2]]]]],[[172,[],[[168,[-1]]]]],[[173,[],[[168,[-1]]]]]],[174,[[7,[6]]]],[[[7,[[171,[],[[168,[-1]],[169,[-2]],[170,[-3]]]]]],[16,[-4]],[7,[[7,[6]]]]],[[13,[2,17]]],[[165,[],[[169,[-2]]]]],[[172,[],[[168,[-1]]]]],[[173,[],[[168,[-1]]]]],[[175,[],[[46,[-2]]]]]],[[[163,[],[[169,[-1]],[170,[-2]],[168,[-3]]]]],[[163,[],[[169,[-1]],[170,[-2]],[168,[-3]]]]],[[172,[],[[170,[-2]],[168,[-3]]]]],[[173,[],[[169,[-1]],[168,[-3]]]]],[[165,[],[[169,[-1]],[170,[-2]]]]]],[11,[[13,[176,12]]]],[176,34],[[[7,[6]]],[[13,[174,17]]]],[-1,[[163,[],[[169,[-2]],[170,[-3]],[168,[-4]]]]],40,[[172,[],[[170,[-3]],[168,[-4]]]]],[[173,[],[[169,[-2]],[168,[-4]]]]],[[165,[],[[169,[-2]],[170,[-3]]]]]],[-1,177,40],[-1,178,40],[[],179],[[[163,[],[[169,[-1]],[170,[-2]],[168,[-3]]]]],-2,[[172,[],[[170,[-2]],[168,[-3]]]]],[[173,[],[[169,[-1]],[168,[-3]]]]],[[165,[],[[169,[-1]],[170,[-2]]]]]],[[[163,[],[[169,[-1]],[170,[-2]],[168,[-3]]]]],-1,[[172,[],[[170,[-2]],[168,[-3]]]]],[[173,[],[[169,[-1]],[168,[-3]]]]],[[165,[],[[169,[-1]],[170,[-2]]]]]],[[[182,[],[[169,[-1]],[180,[-2]],[181,[-3]]]],[7,[6]]],[[13,[-1,17]]],[],[[183,[],[[168,[[182,[],[[169,[-1]],[180,[-2]],[181,[-3]]]]]],[169,[-1]]]]],131],[[[182,[],[[169,[-1]],[180,[-2]],[181,[-3]]]],[7,[6]]],[[13,[-1,17]]],[],[[183,[],[[168,[[182,[],[[169,[-1]],[180,[-2]],[181,[-3]]]]]],[169,[-1]]]]],131],[[166,[7,[6]]],-1,[]],[[[183,[],[[169,[-1]],[168,[-2]]]],[7,[6]]],-2,[],[[182,[],[[180,[[183,[],[[169,[-1]],[168,[-2]]]]]],[169,[-1]]]]]],[[[183,[],[[169,[-1]],[168,[-2]]]],[7,[6]]],-2,[],[[182,[],[[180,[[183,[],[[169,[-1]],[168,[-2]]]]]],[169,[-1]]]]]],[[[172,[],[[170,[-1]],[168,[-2]]]],[7,[6]],-2],[[13,[2,17]]],[[173,[],[[169,[[172,[],[[170,[-1]],[168,[-2]]]]]]]]],[[165,[],[[169,[[172,[],[[170,[-1]],[168,[-2]]]]]]]]]],[[[171,[],[[168,[-1]],[169,[-2]],[170,[-3]]]],7,[7,[6]]],[[13,[2,17]]],[[165,[],[[169,[-2]]]]],[[172,[],[[168,[-1]]]]],[[173,[],[[168,[-1]]]]]],[[[171,[],[[168,[-1]],[169,[-2]],[170,[-3]]]],7,[7,[[7,[6]]]]],[[13,[2,17]]],[[165,[],[[169,[-2]]]]],[[172,[],[[168,[-1]]]]],[[173,[],[[168,[-1]]]]]],[[[184,[],[[168,[-1]]]],[7,[6]],-1],[[13,[2,17]]],[[182,[],[[169,[[184,[],[[168,[-1]]]]]]]]]],[[[184,[],[[168,[-1]]]],[7,[6]],-1],[[13,[2,17]]],[[182,[],[[169,[[184,[],[[168,[-1]]]]]]]]]],[6,106],0,0,0,0,0,0,0,0,0,0,0,[-1,[[188,[],[[185,[-2]],[186,[-4]],[187,[-3]]]]],40,[[189,[],[[187,[-3]]]]],[[190,[],[[186,[-4]]]]],[[191,[],[[187,[-3]]]]]],[[[188,[],[[185,[-1]],[186,[-3]],[187,[-2]]]],[7,[6]]],[[2,[[78,[6]],-1]]],[[189,[],[[187,[-2]]]]],[[190,[],[[186,[-3]]]]],[[191,[],[[187,[-2]]]]]],[[[188,[],[[185,[-1]],[186,[-3]],[187,[-2]]]],[7,[6]]],-1,[[189,[],[[187,[-2]]]]],[[190,[],[[186,[-3]]]]],[[191,[],[[187,[-2]]]]]],[[[189,[],[[187,[-1]]]]],[[78,[6]]],190],[[[189,[],[[187,[-1]]]],[7,[6]],-1],[[13,[2,17]]],190],[[[189,[],[[187,[-1]]]],[7,[6]],-1,[78,[6]]],[[13,[2,17]]],190],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[13,[192]]],33],[-1,[[13,[193]]],33],[-1,[[13,[194]]],33],[-1,[[13,[195]]],33],[193,2],[[192,192],54],[[193,193],54],[[194,194],54],[[195,195],54],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[-1,-2],54,[],[]],[[192,37],38],[[193,37],38],[[194,37],38],[[195,37],38],[-1,-1,[]],[-1,-1,[]],[193,194],[-1,-1,[]],[-1,-1,[]],[-1,194,40],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[194,[7,[6]]],195],[[192,-1],13,41],[[193,-1],13,41],[[194,-1],13,41],[[195,-1],13,41],0,[195,[[78,[6]]]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,[[13,[-2]]],[],[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[-1,43,[]],[[195,[7,[6]],-1],[[13,[2,17]]],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[1587,1588],"p":[[5,"Private",2048],[1,"tuple"],[5,"BitSlice",2049],[10,"BitOrder",2050],[5,"GenericByteArray",22],[1,"u8"],[1,"slice"],[10,"ArrayLength",2051],[10,"Debug",2052],[10,"Clone",2053],[1,"str"],[5,"Report",2054],[6,"Result",2055],[17,"IVType"],[10,"Cipher",22],[5,"Vec",2056],[6,"FastCryptoError",728],[10,"Nonce",22],[5,"AesCtr",22],[17,"KeySize"],[10,"KeySizeUser",2057],[10,"KeyInit",2057],[10,"BlockCipher",2058],[17,"BlockSize"],[8,"U16",2059],[10,"BlockSizeUser",2057],[10,"BlockEncrypt",2058],[10,"BlockDecrypt",2058],[5,"AesCbc",22],[10,"Padding",2060],[5,"AesGcm",22],[10,"AuthenticatedCipher",22],[10,"Deserializer",2061],[5,"String",2062],[1,"char"],[10,"FromIterator",2063],[5,"Formatter",2052],[8,"Result",2052],[8,"AesKey",22],[10,"AllowedRng",1901],[10,"Serializer",2064],[6,"BitSpanError",2065],[5,"TypeId",2066],[5,"BLS12381AggregateSignature",119],[10,"Borrow",2067],[17,"Item"],[10,"IntoIterator",2063],[5,"BLS12381PublicKey",119],[5,"BLS12381PrivateKey",119],[5,"BLS12381KeyPair",119],[5,"BLS12381Signature",119],[10,"Iterator",2068],[6,"Ordering",2069],[1,"bool"],[5,"Error",2052],[10,"Hasher",2070],[6,"Option",2071],[5,"BytesRepresentation",1831],[5,"BLS12381AggregateSignature",292],[5,"BLS12381PublicKey",292],[5,"BLS12381PrivateKey",292],[5,"BLS12381KeyPair",292],[5,"BLS12381Signature",292],[8,"BLS12381AggregateSignatureAsBytes",292],[5,"Ed25519PublicKey",466],[10,"Sized",2072],[5,"Ed25519PrivateKey",466],[5,"Ed25519KeyPair",466],[5,"Ed25519Signature",466],[5,"Ed25519AggregateSignature",466],[5,"Signature",2073],[5,"SigningKey",2074],[5,"Base64",641],[5,"Hex",641],[5,"Base58",641],[8,"Result",2054],[10,"TryFrom",2075],[1,"array"],[10,"AsRef",2075],[5,"SchemaGenerator",2076],[6,"Schema",2077],[5,"Error",2078],[10,"Doubling",761],[10,"FiatShamirChallenge",761],[17,"ScalarType"],[10,"GroupElement",761],[10,"Scalar",761],[10,"HashToGroupElement",761],[8,"FastCryptoResult",728],[10,"MultiScalarMul",761],[17,"Other"],[17,"Output"],[10,"Pairing",761],[5,"G1Element",784],[5,"G2Element",784],[5,"GTElement",784],[5,"Scalar",784],[5,"blst_p1",2079],[5,"blst_p2",2079],[5,"blst_fp12",2079],[5,"blst_fr",2079],[1,"u64"],[10,"ScalarMultiplier",981],[10,"ToLittleEndianBytes",981],[5,"WindowedScalarMultiplier",988],[1,"usize"],[5,"HashMap",2080],[10,"Add",2081],[10,"Mul",2081],[5,"RistrettoPoint",1001],[5,"RistrettoScalar",1001],[5,"RistrettoPoint",2082],[5,"Scalar",2083],[5,"ProjectivePoint",1110],[5,"Scalar",1110],[8,"Projective",2084],[8,"Fr",2085],[5,"Digest",1204],[5,"EllipticCurveMultisetHash",1204],[5,"HashFunctionWrapper",1204],[10,"Default",2086],[10,"Digest",2087],[5,"Blake3",1204],[17,"TypedDigest"],[10,"Hash",1204],[10,"Into",2075],[10,"Eq",2069],[10,"Hash",2070],[10,"Copy",2072],[10,"MultisetHash",1204],[10,"HashFunction",1204],[8,"Result",2088],[5,"Error",2089],[5,"Error",2089],[8,"HkdfIkm",1316],[8,"HmacKey",1316],[5,"JWTHeader",1320],[5,"PrivateSeed",1347],[5,"Base64UrlUnpadded",1371],[5,"RSAPublicKey",1371],[5,"RSASignature",1371],[6,"Error",2090],[5,"InvalidEncodingError",2090],[5,"InvalidLengthError",2090],[5,"Secp256k1PublicKey",1435],[5,"Secp256k1PrivateKey",1435],[5,"Secp256k1Signature",1435],[5,"Secp256k1KeyPair",1435],[5,"Secp256k1RecoverableSignature",1578],[5,"Secp256k1Sig",1578],[5,"Signature",2091],[6,"Error",2092],[5,"SerializedSignature",2093],[5,"Message",2092],[5,"PublicKey",2094],[5,"Secp256r1PublicKey",1651],[5,"Secp256r1PrivateKey",1651],[5,"Secp256r1Signature",1651],[5,"Secp256r1KeyPair",1651],[5,"Secp256r1RecoverableSignature",1795],[5,"SerializationHelper",1831],[10,"ToFromByteArray",1831],[10,"KeyPair",1901],[5,"SignatureService",1886],[10,"Authenticator",1901],[10,"Signer",1901],[10,"Send",2072],[17,"Sig"],[17,"PubKey"],[17,"PrivKey"],[10,"AggregateAuthenticator",1901],[10,"VerifyingKey",1901],[10,"SigningKey",1901],[10,"ToFromBytes",1901],[10,"ExactSizeIterator",2095],[10,"EncodeDecodeBase64",1901],[10,"Generate",1901],[10,"FromUniformBytes",1901],[10,"InsecureDefault",1901],[17,"Signer"],[17,"DefaultHash"],[10,"RecoverableSignature",1901],[10,"RecoverableSigner",1901],[10,"VerifyRecoverable",1901],[17,"Proof"],[17,"PrivateKey"],[17,"PublicKey"],[10,"VRFKeyPair",1963],[10,"VRFProof",1963],[10,"VRFPublicKey",1963],[10,"VRFPrivateKey",1963],[5,"ECVRFPublicKey",1980],[5,"ECVRFPrivateKey",1980],[5,"ECVRFKeyPair",1980],[5,"ECVRFProof",1980],[5,"SingleSignature",466],[10,"Encoding",641],[10,"ReverseWrapper",1204],[10,"Encoding",1371]],"b":[[77,"impl-Display-for-GenericByteArray%3CN%3E"],[78,"impl-Debug-for-GenericByteArray%3CN%3E"],[208,"impl-Debug-for-BLS12381PublicKey"],[209,"impl-Display-for-BLS12381PublicKey"],[210,"impl-Debug-for-BLS12381PrivateKey"],[211,"impl-Display-for-BLS12381PrivateKey"],[213,"impl-Debug-for-BLS12381Signature"],[214,"impl-Display-for-BLS12381Signature"],[215,"impl-Display-for-BLS12381AggregateSignature"],[216,"impl-Debug-for-BLS12381AggregateSignature"],[382,"impl-Debug-for-BLS12381PublicKey"],[383,"impl-Display-for-BLS12381PublicKey"],[384,"impl-Display-for-BLS12381PrivateKey"],[385,"impl-Debug-for-BLS12381PrivateKey"],[387,"impl-Debug-for-BLS12381Signature"],[388,"impl-Display-for-BLS12381Signature"],[389,"impl-Display-for-BLS12381AggregateSignature"],[390,"impl-Debug-for-BLS12381AggregateSignature"],[557,"impl-Debug-for-Ed25519PublicKey"],[558,"impl-Display-for-Ed25519PublicKey"],[559,"impl-Debug-for-Ed25519PrivateKey"],[560,"impl-Display-for-Ed25519PrivateKey"],[562,"impl-Debug-for-Ed25519Signature"],[563,"impl-Display-for-Ed25519Signature"],[564,"impl-Display-for-Ed25519AggregateSignature"],[565,"impl-Debug-for-Ed25519AggregateSignature"],[570,"impl-From%3CSigningKey%3E-for-Ed25519KeyPair"],[572,"impl-From%3CEd25519PrivateKey%3E-for-Ed25519KeyPair"],[668,"impl-DeserializeAs%3C\'de,+%5Bu8;+N%5D%3E-for-Base64"],[669,"impl-DeserializeAs%3C\'de,+Vec%3Cu8%3E%3E-for-Base64"],[670,"impl-DeserializeAs%3C\'de,+Vec%3Cu8%3E%3E-for-Hex"],[671,"impl-DeserializeAs%3C\'de,+%5Bu8;+N%5D%3E-for-Hex"],[672,"impl-DeserializeAs%3C\'de,+%5Bu8;+N%5D%3E-for-Base58"],[673,"impl-DeserializeAs%3C\'de,+Vec%3Cu8%3E%3E-for-Base58"],[750,"impl-Debug-for-FastCryptoError"],[751,"impl-Display-for-FastCryptoError"],[798,"impl-Add%3CG1Element%3E-for-%26G1Element"],[799,"impl-Add%3C%26G1Element%3E-for-G1Element"],[800,"impl-Add-for-G1Element"],[801,"impl-Add%3C%26G1Element%3E-for-%26G1Element"],[802,"impl-Add%3C%26G2Element%3E-for-G2Element"],[803,"impl-Add%3CG2Element%3E-for-%26G2Element"],[804,"impl-Add%3C%26G2Element%3E-for-%26G2Element"],[805,"impl-Add-for-G2Element"],[806,"impl-Add%3CGTElement%3E-for-%26GTElement"],[807,"impl-Add-for-GTElement"],[808,"impl-Add%3C%26GTElement%3E-for-GTElement"],[809,"impl-Add%3C%26GTElement%3E-for-%26GTElement"],[810,"impl-Add-for-Scalar"],[811,"impl-Add%3CScalar%3E-for-%26Scalar"],[812,"impl-Add%3C%26Scalar%3E-for-%26Scalar"],[813,"impl-Add%3C%26Scalar%3E-for-Scalar"],[814,"impl-AddAssign%3C%26G1Element%3E-for-G1Element"],[815,"impl-AddAssign-for-G1Element"],[816,"impl-AddAssign%3C%26G2Element%3E-for-G2Element"],[817,"impl-AddAssign-for-G2Element"],[818,"impl-AddAssign-for-GTElement"],[819,"impl-AddAssign%3C%26GTElement%3E-for-GTElement"],[820,"impl-AddAssign-for-Scalar"],[821,"impl-AddAssign%3C%26Scalar%3E-for-Scalar"],[869,"impl-From%3Cblst_fr%3E-for-Scalar"],[871,"impl-From%3Cu64%3E-for-Scalar"],[887,"impl-Mul%3C%26%3CG1Element+as+GroupElement%3E::ScalarType%3E-for-G1Element"],[888,"impl-Mul%3C%26%3CG1Element+as+GroupElement%3E::ScalarType%3E-for-%26G1Element"],[889,"impl-Mul%3C%3CG1Element+as+GroupElement%3E::ScalarType%3E-for-%26G1Element"],[890,"impl-Mul%3CScalar%3E-for-G1Element"],[891,"impl-Mul%3CScalar%3E-for-G2Element"],[892,"impl-Mul%3C%26%3CG2Element+as+GroupElement%3E::ScalarType%3E-for-G2Element"],[893,"impl-Mul%3C%3CG2Element+as+GroupElement%3E::ScalarType%3E-for-%26G2Element"],[894,"impl-Mul%3C%26%3CG2Element+as+GroupElement%3E::ScalarType%3E-for-%26G2Element"],[895,"impl-Mul%3C%26%3CGTElement+as+GroupElement%3E::ScalarType%3E-for-GTElement"],[896,"impl-Mul%3C%26%3CGTElement+as+GroupElement%3E::ScalarType%3E-for-%26GTElement"],[897,"impl-Mul%3C%3CGTElement+as+GroupElement%3E::ScalarType%3E-for-%26GTElement"],[898,"impl-Mul%3CScalar%3E-for-GTElement"],[899,"impl-Mul%3C%26%3CScalar+as+GroupElement%3E::ScalarType%3E-for-%26Scalar"],[900,"impl-Mul%3C%3CScalar+as+GroupElement%3E::ScalarType%3E-for-%26Scalar"],[901,"impl-Mul%3C%26%3CScalar+as+GroupElement%3E::ScalarType%3E-for-Scalar"],[902,"impl-Mul-for-Scalar"],[903,"impl-MulAssign%3C%3CG1Element+as+GroupElement%3E::ScalarType%3E-for-G1Element"],[904,"impl-MulAssign%3C%26%3CG1Element+as+GroupElement%3E::ScalarType%3E-for-G1Element"],[905,"impl-MulAssign%3C%3CG2Element+as+GroupElement%3E::ScalarType%3E-for-G2Element"],[906,"impl-MulAssign%3C%26%3CG2Element+as+GroupElement%3E::ScalarType%3E-for-G2Element"],[907,"impl-MulAssign%3C%3CGTElement+as+GroupElement%3E::ScalarType%3E-for-GTElement"],[908,"impl-MulAssign%3C%26%3CGTElement+as+GroupElement%3E::ScalarType%3E-for-GTElement"],[909,"impl-MulAssign%3C%26%3CScalar+as+GroupElement%3E::ScalarType%3E-for-Scalar"],[910,"impl-MulAssign%3C%3CScalar+as+GroupElement%3E::ScalarType%3E-for-Scalar"],[913,"impl-Neg-for-G1Element"],[914,"impl-Neg-for-%26G1Element"],[915,"impl-Neg-for-%26G2Element"],[916,"impl-Neg-for-G2Element"],[917,"impl-Neg-for-GTElement"],[918,"impl-Neg-for-%26GTElement"],[919,"impl-Neg-for-Scalar"],[920,"impl-Neg-for-%26Scalar"],[927,"impl-Sub%3C%26G1Element%3E-for-%26G1Element"],[928,"impl-Sub%3CG1Element%3E-for-%26G1Element"],[929,"impl-Sub-for-G1Element"],[930,"impl-Sub%3C%26G1Element%3E-for-G1Element"],[931,"impl-Sub-for-G2Element"],[932,"impl-Sub%3C%26G2Element%3E-for-G2Element"],[933,"impl-Sub%3CG2Element%3E-for-%26G2Element"],[934,"impl-Sub%3C%26G2Element%3E-for-%26G2Element"],[935,"impl-Sub%3C%26GTElement%3E-for-%26GTElement"],[936,"impl-Sub%3C%26GTElement%3E-for-GTElement"],[937,"impl-Sub%3CGTElement%3E-for-%26GTElement"],[938,"impl-Sub-for-GTElement"],[939,"impl-Sub%3C%26Scalar%3E-for-Scalar"],[940,"impl-Sub%3C%26Scalar%3E-for-%26Scalar"],[941,"impl-Sub-for-Scalar"],[942,"impl-Sub%3CScalar%3E-for-%26Scalar"],[943,"impl-SubAssign%3C%26G1Element%3E-for-G1Element"],[944,"impl-SubAssign-for-G1Element"],[945,"impl-SubAssign-for-G2Element"],[946,"impl-SubAssign%3C%26G2Element%3E-for-G2Element"],[947,"impl-SubAssign-for-GTElement"],[948,"impl-SubAssign%3C%26GTElement%3E-for-GTElement"],[949,"impl-SubAssign-for-Scalar"],[950,"impl-SubAssign%3C%26Scalar%3E-for-Scalar"],[1005,"impl-Add-for-RistrettoPoint"],[1006,"impl-Add%3C%26RistrettoPoint%3E-for-%26RistrettoPoint"],[1007,"impl-Add%3CRistrettoPoint%3E-for-%26RistrettoPoint"],[1008,"impl-Add%3C%26RistrettoPoint%3E-for-RistrettoPoint"],[1009,"impl-Add%3CRistrettoScalar%3E-for-%26RistrettoScalar"],[1010,"impl-Add%3C%26RistrettoScalar%3E-for-%26RistrettoScalar"],[1011,"impl-Add%3C%26RistrettoScalar%3E-for-RistrettoScalar"],[1012,"impl-Add-for-RistrettoScalar"],[1013,"impl-AddAssign-for-RistrettoPoint"],[1014,"impl-AddAssign%3C%26RistrettoPoint%3E-for-RistrettoPoint"],[1015,"impl-AddAssign-for-RistrettoScalar"],[1016,"impl-AddAssign%3C%26RistrettoScalar%3E-for-RistrettoScalar"],[1031,"impl-Div%3C__RhsT%3E-for-RistrettoScalar"],[1032,"impl-Div-for-RistrettoScalar"],[1045,"impl-From%3CScalar%3E-for-RistrettoScalar"],[1047,"impl-From%3Cu64%3E-for-RistrettoScalar"],[1062,"impl-Mul%3C%3CRistrettoPoint+as+GroupElement%3E::ScalarType%3E-for-%26RistrettoPoint"],[1063,"impl-Mul%3CRistrettoScalar%3E-for-RistrettoPoint"],[1064,"impl-Mul%3C%26%3CRistrettoPoint+as+GroupElement%3E::ScalarType%3E-for-%26RistrettoPoint"],[1065,"impl-Mul%3C%26%3CRistrettoPoint+as+GroupElement%3E::ScalarType%3E-for-RistrettoPoint"],[1066,"impl-Mul-for-RistrettoScalar"],[1067,"impl-Mul%3C%26%3CRistrettoScalar+as+GroupElement%3E::ScalarType%3E-for-RistrettoScalar"],[1068,"impl-Mul%3C%26%3CRistrettoScalar+as+GroupElement%3E::ScalarType%3E-for-%26RistrettoScalar"],[1069,"impl-Mul%3C%3CRistrettoScalar+as+GroupElement%3E::ScalarType%3E-for-%26RistrettoScalar"],[1070,"impl-MulAssign%3C%3CRistrettoPoint+as+GroupElement%3E::ScalarType%3E-for-RistrettoPoint"],[1071,"impl-MulAssign%3C%26%3CRistrettoPoint+as+GroupElement%3E::ScalarType%3E-for-RistrettoPoint"],[1072,"impl-MulAssign%3C%3CRistrettoScalar+as+GroupElement%3E::ScalarType%3E-for-RistrettoScalar"],[1073,"impl-MulAssign%3C%26%3CRistrettoScalar+as+GroupElement%3E::ScalarType%3E-for-RistrettoScalar"],[1075,"impl-Neg-for-RistrettoPoint"],[1076,"impl-Neg-for-%26RistrettoPoint"],[1077,"impl-Neg-for-%26RistrettoScalar"],[1078,"impl-Neg-for-RistrettoScalar"],[1082,"impl-Sub%3C%26RistrettoPoint%3E-for-%26RistrettoPoint"],[1083,"impl-Sub%3C%26RistrettoPoint%3E-for-RistrettoPoint"],[1084,"impl-Sub%3CRistrettoPoint%3E-for-%26RistrettoPoint"],[1085,"impl-Sub-for-RistrettoPoint"],[1086,"impl-Sub%3C%26RistrettoScalar%3E-for-RistrettoScalar"],[1087,"impl-Sub%3CRistrettoScalar%3E-for-%26RistrettoScalar"],[1088,"impl-Sub%3C%26RistrettoScalar%3E-for-%26RistrettoScalar"],[1089,"impl-Sub-for-RistrettoScalar"],[1090,"impl-SubAssign-for-RistrettoPoint"],[1091,"impl-SubAssign%3C%26RistrettoPoint%3E-for-RistrettoPoint"],[1092,"impl-SubAssign%3C%26RistrettoScalar%3E-for-RistrettoScalar"],[1093,"impl-SubAssign-for-RistrettoScalar"],[1115,"impl-Add%3C%26ProjectivePoint%3E-for-%26ProjectivePoint"],[1116,"impl-Add%3C%26ProjectivePoint%3E-for-ProjectivePoint"],[1117,"impl-Add-for-ProjectivePoint"],[1118,"impl-Add%3CProjectivePoint%3E-for-%26ProjectivePoint"],[1119,"impl-Add%3C%26Scalar%3E-for-%26Scalar"],[1120,"impl-Add-for-Scalar"],[1121,"impl-Add%3CScalar%3E-for-%26Scalar"],[1122,"impl-Add%3C%26Scalar%3E-for-Scalar"],[1123,"impl-AddAssign-for-ProjectivePoint"],[1124,"impl-AddAssign%3C%26ProjectivePoint%3E-for-ProjectivePoint"],[1125,"impl-AddAssign%3C%26Scalar%3E-for-Scalar"],[1126,"impl-AddAssign-for-Scalar"],[1152,"impl-From%3CFp%3CMontBackend%3CFrConfig,+4%3E,+4%3E%3E-for-Scalar"],[1153,"impl-From%3Cu64%3E-for-Scalar"],[1160,"impl-Mul%3C%26%3CProjectivePoint+as+GroupElement%3E::ScalarType%3E-for-ProjectivePoint"],[1161,"impl-Mul%3CScalar%3E-for-ProjectivePoint"],[1162,"impl-Mul%3C%26%3CProjectivePoint+as+GroupElement%3E::ScalarType%3E-for-%26ProjectivePoint"],[1163,"impl-Mul%3C%3CProjectivePoint+as+GroupElement%3E::ScalarType%3E-for-%26ProjectivePoint"],[1164,"impl-Mul%3C%26%3CScalar+as+GroupElement%3E::ScalarType%3E-for-Scalar"],[1165,"impl-Mul%3C%26%3CScalar+as+GroupElement%3E::ScalarType%3E-for-%26Scalar"],[1166,"impl-Mul%3C%3CScalar+as+GroupElement%3E::ScalarType%3E-for-%26Scalar"],[1167,"impl-Mul-for-Scalar"],[1168,"impl-MulAssign%3C%3CProjectivePoint+as+GroupElement%3E::ScalarType%3E-for-ProjectivePoint"],[1169,"impl-MulAssign%3C%26%3CProjectivePoint+as+GroupElement%3E::ScalarType%3E-for-ProjectivePoint"],[1170,"impl-MulAssign%3C%26%3CScalar+as+GroupElement%3E::ScalarType%3E-for-Scalar"],[1171,"impl-MulAssign%3C%3CScalar+as+GroupElement%3E::ScalarType%3E-for-Scalar"],[1172,"impl-Neg-for-ProjectivePoint"],[1173,"impl-Neg-for-%26ProjectivePoint"],[1174,"impl-Neg-for-%26Scalar"],[1175,"impl-Neg-for-Scalar"],[1178,"impl-Sub%3C%26ProjectivePoint%3E-for-ProjectivePoint"],[1179,"impl-Sub%3C%26ProjectivePoint%3E-for-%26ProjectivePoint"],[1180,"impl-Sub%3CProjectivePoint%3E-for-%26ProjectivePoint"],[1181,"impl-Sub-for-ProjectivePoint"],[1182,"impl-Sub%3C%26Scalar%3E-for-%26Scalar"],[1183,"impl-Sub%3C%26Scalar%3E-for-Scalar"],[1184,"impl-Sub-for-Scalar"],[1185,"impl-Sub%3CScalar%3E-for-%26Scalar"],[1186,"impl-SubAssign%3C%26ProjectivePoint%3E-for-ProjectivePoint"],[1187,"impl-SubAssign-for-ProjectivePoint"],[1188,"impl-SubAssign-for-Scalar"],[1189,"impl-SubAssign%3C%26Scalar%3E-for-Scalar"],[1261,"impl-Display-for-Digest%3CDIGEST_LEN%3E"],[1262,"impl-Debug-for-Digest%3CDIGEST_LEN%3E"],[1507,"impl-Debug-for-Secp256k1PublicKey"],[1508,"impl-Display-for-Secp256k1PublicKey"],[1509,"impl-Display-for-Secp256k1PrivateKey"],[1510,"impl-Debug-for-Secp256k1PrivateKey"],[1511,"impl-Debug-for-Secp256k1Signature"],[1512,"impl-Display-for-Secp256k1Signature"],[1613,"impl-Display-for-Signature"],[1614,"impl-Debug-for-Signature"],[1615,"impl-Display-for-Secp256k1RecoverableSignature"],[1616,"impl-Debug-for-Secp256k1RecoverableSignature"],[1724,"impl-Display-for-Secp256r1PublicKey"],[1725,"impl-Debug-for-Secp256r1PublicKey"],[1726,"impl-Debug-for-Secp256r1PrivateKey"],[1727,"impl-Display-for-Secp256r1PrivateKey"],[1728,"impl-Debug-for-Secp256r1Signature"],[1729,"impl-Display-for-Secp256r1Signature"],[1813,"impl-Debug-for-Secp256r1RecoverableSignature"],[1814,"impl-Display-for-Secp256r1RecoverableSignature"],[1848,"impl-Debug-for-BytesRepresentation%3CN%3E"],[1849,"impl-Display-for-BytesRepresentation%3CN%3E"],[1851,"impl-From%3C%26BLS12381PublicKey%3E-for-BytesRepresentation%3C%24length%3E"],[1852,"impl-From%3C%26Ed25519Signature%3E-for-BytesRepresentation%3C%24length%3E"],[1853,"impl-From%3C%26BLS12381AggregateSignature%3E-for-BytesRepresentation%3C%24length%3E"],[1854,"impl-From%3C%26Secp256k1PublicKey%3E-for-BytesRepresentation%3C%24length%3E"],[1855,"impl-From%3C%26Secp256k1Signature%3E-for-BytesRepresentation%3C%24length%3E"],[1856,"impl-From%3C%26BLS12381PublicKey%3E-for-BytesRepresentation%3C%24length%3E"],[1857,"impl-From%3C%26Ed25519PublicKey%3E-for-BytesRepresentation%3C%24length%3E"],[1858,"impl-From%3C%26G2Element%3E-for-BytesRepresentation%3C%24length%3E"],[1859,"impl-From%3C%26Secp256r1Signature%3E-for-BytesRepresentation%3C%24length%3E"],[1860,"impl-From%3C%26BLS12381AggregateSignature%3E-for-BytesRepresentation%3C%24length%3E"],[1861,"impl-From%3C%26G1Element%3E-for-BytesRepresentation%3C%24length%3E"],[1862,"impl-From%3C%26Secp256r1PublicKey%3E-for-BytesRepresentation%3C%24length%3E"]]},\ "fastcrypto_cli":{"doc":"This module contains test vectors for all signature …","t":"CSSSFNNNNOOOONNN","n":["sigs_cli_test_vectors","MSG","SEED","TEST_CASES","TestVector","borrow","borrow_mut","from","into","name","private","public","sig","try_from","try_into","type_id"],"q":[[0,"fastcrypto_cli"],[1,"fastcrypto_cli::sigs_cli_test_vectors"],[16,"core::result"],[17,"core::any"]],"d":["","","","","A test vector containing a signature over MSG encoded as a …","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","",""],"i":[0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3],"f":[0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],[-1,-2,[],[]],0,0,0,0,[-1,[[1,[-2]]],[],[]],[-1,[[1,[-2]]],[],[]],[-1,2,[]]],"c":[],"p":[[6,"Result",16],[5,"TypeId",17],[5,"TestVector",1]],"b":[]},\ "fastcrypto_derive":{"doc":"This crate contains the SilentDebug and SilentDisplay …","t":"YYY","n":["GroupOpsExtend","SilentDebug","SilentDisplay"],"q":[[0,"fastcrypto_derive"]],"d":["Extend implementations of Add, Sub, Mul…","Derive the SilentDebug trait, which is an implementation …","Derive the SilentDisplay trait, which is an implementation …"],"i":[0,0,0],"f":[0,0,0],"c":[],"p":[],"b":[]},\ -"fastcrypto_tbls":{"doc":"A crate that implements threshold BLS (tBLS) and …","t":"CCCCCCCCCFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONOONNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNHHHHHFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNFFINNNNNNNNNNNNNNNNNNNNNNNONNNNNNONNNNNNNNNNNNNNNNNOIFIINNNNNNNNNNNNNNNNNNONNNNNNNNNONNNFNNNNNNNNNNNNNNNNNNNNNIRRIRKNOONNNNOOMIFIIIIIIIIIIFNNNNNNNNNNNNNNOONNNNNNNNNNOONNN","n":["dkg","dl_verification","ecies","nizk","nodes","polynomial","random_oracle","tbls","types","Complaint","Confirmation","Message","Output","Party","ProcessedMessage","UsedProcessedMessages","VerifiedProcessedMessages","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","complaint","complaints","complete","create_message","data","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","encrypted_shares","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","is_empty","len","merge","message","new","nodes","process_message","sender","sender","serialize","serialize","serialize","serialize","serialize","serialize","serialize","shares","shares","t","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vss_pk","vss_pk","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","verify_deg_t_poly","verify_equal_exponents","verify_pairs","verify_poly_evals","verify_triplets","Encryption","MultiRecipientEncryption","PrivateKey","PublicKey","RecoveryPackage","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_element","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","create_recovery_package","decrypt","decrypt_from_partial_decryption","decrypt_with_recovery_package","deserialize","deserialize","deserialize","deserialize","deserialize","deterministic_encrypt","encrypt","encrypt","ephemeral_key","ephemeral_key","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_private_key","get_encryption","into","into","into","into","into","is_empty","len","new","proof","serialize","serialize","serialize","serialize","serialize","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","vzip","DLNizk","__clone_box","borrow","borrow_mut","clone","clone_into","create","deserialize","eq","equivalent","equivalent","fmt","from","into","serialize","to_owned","try_from","try_into","type_id","verify","vzip","Node","Nodes","PartyId","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","hash","id","into","into","iter","new","node_id_to_node","num_nodes","pk","reduce","serialize","serialize","share_id_to_node","share_ids_iter","share_ids_of","to_owned","to_owned","total_weight","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","weight","Eval","Poly","PrivatePoly","PublicPoly","__clone_box","add","as_vec","borrow","borrow_mut","c0","clone","clone_into","commit","degree","deserialize","eq","equivalent","equivalent","eval","fmt","from","from","index","into","rand","recover_c0","recover_c0_msm","serialize","to_owned","try_from","try_into","type_id","value","verify_share","vzip","zero","RandomOracle","__clone_box","borrow","borrow_mut","clone","clone_into","deserialize","eq","equivalent","equivalent","evaluate","extend","fmt","from","into","new","serialize","to_owned","try_from","try_into","type_id","vzip","PartialSignature","Private","Public","Share","Signature","ThresholdBls","aggregate","index","index","partial_sign","partial_sign_batch","partial_verify","partial_verify_batch","value","value","verify","EciesEncryption","IndexedValue","PrivateBlsKey","PrivateEciesKey","PublicBlsKey","PublicEciesKey","PublicVssKey","RawSignature","RecoveryPackage","Share","ShareIndex","Signature","ThresholdBls12381MinSig","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","eq","equivalent","equivalent","fmt","from","from","index","index","into","into","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","value","value","verify","vzip","vzip"],"q":[[0,"fastcrypto_tbls"],[9,"fastcrypto_tbls::dkg"],[164,"fastcrypto_tbls::dl_verification"],[169,"fastcrypto_tbls::ecies"],[284,"fastcrypto_tbls::nizk"],[305,"fastcrypto_tbls::nodes"],[357,"fastcrypto_tbls::polynomial"],[393,"fastcrypto_tbls::random_oracle"],[415,"fastcrypto_tbls::tbls"],[431,"fastcrypto_tbls::types"],[475,"dyn_clone::sealed"],[476,"core::clone"],[477,"fastcrypto::groups"],[478,"fastcrypto::error"],[479,"fastcrypto::groups"],[480,"serde::de"],[481,"fastcrypto::traits"],[482,"core::result"],[483,"serde::de"],[484,"core::fmt"],[485,"core::fmt"],[486,"fastcrypto::groups::bls12381"],[487,"fastcrypto::groups::bls12381"],[488,"fastcrypto::hash"],[489,"core::iter::traits::iterator"],[490,"fastcrypto::groups"]],"d":["","","","","","","","","","A complaint/fraud claim against a dealer that created …","A Confirmation is sent during the second phase of the …","The higher-level protocol is responsible for verifying …","Output is the final output of the DKG protocol in case it …","Generics below use …","Wrapper for collecting everything related to a processed …","Unique processed messages that are being used in the …","Processed messages that were not excluded.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","List of complaints against other parties. Empty if there …","Execute the previous two steps together.","Create the first message to be broadcasted.","","","","","","","","","The encrypted shares created by the sender. Sorted …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Merge results from multiple ProcessedMessages so only one …","","Create a new ECIES private key and send the public key to …","","Process a message and create the second message to be …","","","","","","","","","","","","The threshold needed to reconstruct the full key/signature.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The commitment of the secret polynomial created by the …","","","","","","","","","","Check that partial public keys form a polynomial of the …","Checks if vectors v1=(a1G1, …, anG1) and v2=(a1’*G2, …","Check that a pair (k, H) satisfies H = k*G using a random …","Checks that a given set of evaluations is consistent with …","Check that a triplet (k, G, H) satisfies H = k*G using a …","","Multi-recipient encryption with a proof-of-knowledge of …","Simple ECIES encryption using a generic group and …","","A recovery package that allows decrypting a specific ECIES …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NIZKPoK for the DL [G, xG].","","","","","","Create a new NIZKPoK for the DL [G, xG] using the given …","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","Public parameters of a party.","Wrapper for a set of nodes.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Get an iterator on the nodes.","Create a new set of nodes. Nodes must have consecutive ids …","","Number of nodes.","","Reduce weights up to an allowed delta in the original …","","","Get the node corresponding to a share id.","Get an iterator on the share ids.","Get the share ids of a node.","","","Total weight of the nodes.","","","","","","","","","","Types","A polynomial that is using a scalar for the variable x and …","","","","Performs polynomial addition in place.","Returns the coefficients of the polynomial.","","","Return the constant term of the polynomial.","","","Commits the scalar polynomial to the group and returns a …","Returns the degree of the polynomial","","","","","Evaluates the polynomial at the specified value.","","","Returns the argument unchanged.","","Calls U::from(self).","Returns a new polynomial of the given degree where each …","Given exactly t polynomial evaluations, it will recover …","Given exactly t polynomial evaluations, it will recover …","","","","","","","Checks if a given share is valid.","","Returns a polynomial with the zero element.","Random Oracle from SHA3-512.","","","","","","","","","","Evaluate the random oracle on a given input.","Derive a new random oracle from the current one and …","","Returns the argument unchanged.","Calls U::from(self).","Create a fresh random oracle with a given “session id”…","","","","","","","","","Public represents the group over which the public keys are …","","Signature represents the group over which the signatures …","Trait ThresholdBls provides sign & verify functions for …","Interpolate partial signatures to recover the full …","","","Sign a message using the private share/partial key.","Sign a message using one of more private share/partial …","Verify a signature done by a partial key holder.","Verify a set of signatures done by a partial key holder. …","","","Verify a signature on a given message. This is standard …","","Wrapper of a value that is associated with a specific …","","ECIES related types with Ristretto points.","","","","","","tBLS with ThresholdBls12381MinSig types.","Indexes of shares/private keys (0 is reserved for the …","","Implementation of [ThresholdBls] for BLS12-381-min-sig. A …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,3,6,7,8,9,10,11,3,6,7,8,9,10,11,9,8,3,3,19,3,6,7,8,9,10,11,6,3,6,7,8,9,10,3,3,6,6,7,7,8,8,9,9,10,10,6,11,19,3,6,7,8,9,10,10,11,19,3,6,7,8,9,10,11,19,19,3,9,3,11,3,6,8,3,6,7,8,9,10,11,9,11,3,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,6,11,19,3,6,7,8,9,10,11,0,0,0,0,0,0,0,0,0,0,29,38,39,40,41,38,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,29,39,38,29,38,39,40,41,38,38,40,39,40,29,38,39,40,41,29,29,38,38,39,39,40,40,41,41,29,38,39,40,41,29,29,38,38,38,39,40,41,38,40,29,38,39,40,41,40,40,29,40,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,40,29,38,39,40,41,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,46,30,46,30,46,30,46,30,46,30,46,30,46,30,46,46,30,30,46,30,46,30,30,46,46,30,30,30,30,30,46,30,46,30,30,30,30,46,30,30,46,30,46,30,46,30,46,30,46,0,0,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,37,37,37,37,37,37,37,37,37,36,37,37,37,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,61,61,0,61,0,61,59,58,61,61,61,61,59,58,61,0,0,0,0,0,0,0,0,0,0,0,0,0,60,62,60,62,60,60,60,60,60,60,60,60,62,60,63,60,62,60,60,60,62,60,62,60,62,60,63,60,62,62,60],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[3,[-1,-2]]],[[3,[-1,-2]]],[4,5],[4,5]],[[[6,[-1,-2]]],[[6,[-1,-2]]],[4,5],[4,5]],[[[7,[-1]]],[[7,[-1]]],[4,5]],[[[8,[-1]]],[[8,[-1]]],[4,5]],[[[9,[-1,-2]]],[[9,[-1,-2]]],[4,5],[4,5]],[[[10,[-1,-2]]],[[10,[-1,-2]]],[4,5],[4,5]],[[[11,[-1,-2]]],[[11,[-1,-2]]],[4,5],[4,5]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],0,0,[[[3,[-1,-2]],[10,[-1,-2]],[12,[[8,[-2]]]],13,-3],[[14,[[11,[-1,-2]]]]],[5,15,16,17],[5,16,17],18],[[[3,[-1,-2]],-3],[[6,[-1,-2]]],[5,15,16,17],[5,16,17],18],[[[19,[-1,-2]]],[[12,[[9,[-1,-2]]]]],5,5],[-1,[[20,[[3,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[6,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[7,[-2]]]]],21,[22,5]],[-1,[[20,[[8,[-2]]]]],21,[22,5]],[-1,[[20,[[9,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[10,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[11,[-2,-3]]]]],21,[22,5],[22,5]],0,[[[3,[-1,-2]],[3,[-1,-2]]],23,[24,5],[24,5]],[[[6,[-1,-2]],[6,[-1,-2]]],23,[24,5],[24,5]],[[[7,[-1]],[7,[-1]]],23,[24,5]],[[[8,[-1]],[8,[-1]]],23,[24,5]],[[[9,[-1,-2]],[9,[-1,-2]]],23,[24,5],[24,5]],[[[10,[-1,-2]],[10,[-1,-2]]],23,[24,5],[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[6,[-1,-2]],25],26,[27,5],[27,5]],[[[11,[-1,-2]],25],26,[27,5],[27,5]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[12,[[9,[-1,-2]]]]],[[10,[-1,-2]]],5,5],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[19,[-1,-2]]],23,5,5],[[[19,[-1,-2]]],28,5,5],[[[3,[-1,-2]],[12,[[9,[-1,-2]]]]],[[14,[[2,[[8,[-2]],[10,[-1,-2]]]]]]],[5,15,16,17],[5,16,17]],0,[[[29,[-1]],[30,[-1]],13,31,-2],[[14,[[3,[-3,-1]]]]],[5,16,17],18,[5,15,16,17]],0,[[[3,[-1,-2]],[6,[-1,-2]],-3],[[14,[[9,[-1,-2]]]]],[5,15,16,17],[5,16,17],18],0,0,[[[3,[-1,-2]],-3],20,[16,5],[16,5],32],[[[6,[-1,-2]],-3],20,[16,5],[16,5],32],[[[7,[-1]],-2],20,[16,5],32],[[[8,[-1]],-2],20,[16,5],32],[[[9,[-1,-2]],-3],20,[16,5],[16,5],32],[[[10,[-1,-2]],-3],20,[16,5],[16,5],32],[[[11,[-1,-2]],-3],20,[16,5],[16,5],32],0,0,[[[3,[-1,-2]]],13,[5,15,16,17],[5,16,17]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[13,[12,[-1]],12,-2],[[14,[2]]],[5,15],18],[[[12,[34]],[12,[35]],-1],[[14,[2]]],18],[[[12,[[2,[-1]]]],-2],[[14,[2]]],[5,15],18],[[[12,[36]],[37,[-1]],-2],[[14,[2]]],[5,15],18],[[[12,[[2,[-1,-1]]]],-2],[[14,[2]]],[5,15],18],0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[[38,[-1]]],-1,[5,16,17]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-1]]],[[29,[-1]]],[4,5]],[[[38,[-1]]],[[38,[-1]]],[4,5]],[[[39,[-1]]],[[39,[-1]]],[4,5]],[[[40,[-1]]],[[40,[-1]]],[4,5]],[[[41,[-1]]],[[41,[-1]]],[4,5]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[29,[-1]],[39,[-1]],31,-2],[[41,[-1]]],[5,16],18],[[[29,[-1]],[39,[-1]]],[[43,[42]]],[5,16]],[[[39,[-1]],-1],[[43,[42]]],[5,16]],[[[38,[-1]],[41,[-1]],31,[39,[-1]]],[[14,[[43,[42]]]]],[5,16,17]],[-1,[[20,[[29,[-2]]]]],21,5],[-1,[[20,[[38,[-2]]]]],21,[22,5]],[-1,[[20,[[39,[-2]]]]],21,[22,5]],[-1,[[20,[[40,[-2]]]]],21,[22,5]],[-1,[[20,[[41,[-2]]]]],21,[22,5]],[[[12,[42]],-1,-1],[[39,[-1]]],[5,16,17]],[[[38,[-1]],[12,[42]],-2],[[39,[-1]]],[5,16,17],18],[[[12,[[2,[[38,[-1]],[43,[42]]]]]],31,-2],[[40,[-1]]],[5,16],18],[[[39,[-1]]],-1,[5,16]],[[[40,[-1]]],-1,[5,16]],[[[29,[-1]],[29,[-1]]],23,[24,5]],[[[38,[-1]],[38,[-1]]],23,[24,5]],[[[39,[-1]],[39,[-1]]],23,[24,5]],[[[40,[-1]],[40,[-1]]],23,[24,5]],[[[41,[-1]],[41,[-1]]],23,[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[29,[-1]],25],26,[27,5]],[[[38,[-1]],25],26,[27,5]],[[[39,[-1]],25],26,[27,5]],[[[40,[-1]],25],26,[27,5]],[[[41,[-1]],25],26,[27,5]],[-1,-1,[]],[[],[[29,[-1]]],[5,16]],[-1,[[38,[-1]]],5],[-1,-1,[]],[44,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[29,[-1]]],[[38,[-1]]],[5,16,17]],[[[40,[-1]],28],[[14,[[39,[-1]]]]],[5,16]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[40,[-1]]],23,[5,16]],[[[40,[-1]]],28,[5,16]],[-1,[[29,[-2]]],18,[5,16]],[[[40,[-1]]],[[45,[-1]]],[5,16]],[[[29,[-1]],-2],20,5,32],[[[38,[-1]],-2],20,[16,5],32],[[[39,[-1]],-2],20,[16,5],32],[[[40,[-1]],-2],20,[16,5],32],[[[41,[-1]],-2],20,[16,5],32],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[[[40,[-1]],31],[[14,[2]]],[5,16]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[45,[-1]]],[[45,[-1]]],[4,5]],[[-1,-2],2,[],[]],[[-1,[12,[42]],31,-2],[[45,[-1]]],[5,16],18],[-1,[[20,[[45,[-2]]]]],21,[5,22]],[[[45,[-1]],[45,[-1]]],23,[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[45,[-1]],25],26,[27,5]],[-1,-1,[]],[-1,-2,[],[]],[[[45,[-1]],-2],20,[16,5],32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[[[45,[-1]],-1,[12,[42]],31],[[14,[2]]],[5,16]],[-1,-2,[],[]],0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[46,[-1]]],[[46,[-1]]],[4,5]],[[[30,[-1]]],[[30,[-1]]],[4,5]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[-1,[[20,[[46,[-2]]]]],21,[22,5]],[-1,[[20,[[30,[-2]]]]],21,[22,5]],[[[46,[-1]],[46,[-1]]],23,[24,5]],[[[30,[-1]],[30,[-1]]],23,[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[46,[-1]],25],26,[27,5]],[[[30,[-1]],25],26,[27,5]],[-1,-1,[]],[-1,-1,[]],[[[30,[-1]]],47,[5,16]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],[[0,[[49,[],[[48,[[46,[-1]]]]]]]]],[5,16]],[[[43,[[46,[-1]]]]],[[14,[[30,[-1]]]]],[5,16]],[[[30,[-1]],50],[[14,[[46,[-1]]]]],[5,16]],[[[30,[-1]]],28,[5,16]],0,[[[30,[-1]],51,51],[[2,[[30,[-1]],51]]],[5,16]],[[[46,[-1]],-2],20,[16,5],32],[[[30,[-1]],-2],20,[16,5],32],[[[30,[-1]],52],[[14,[[46,[-1]]]]],[5,16]],[[[30,[-1]]],[[0,[[49,[],[[48,[52]]]]]]],[5,16]],[[[30,[-1]],50],[[43,[52]]],[5,16]],[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],13,[5,16]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[-1,1],2,[]],[[[37,[-1]],[37,[-1]]],2,5],[[[37,[-1]]],[[43,[-1]]],5],[-1,-2,[],[]],[-1,-2,[],[]],[[[37,[-1]]],-1,5],[[[37,[-1]]],[[37,[-1]]],4],[[-1,-2],2,[],[]],[[[37,[-1]]],[[37,[-2]]],53,[[5,[],[[54,[-1]]]]]],[[[37,[-1]]],13,[]],[-1,[[20,[[37,[-2]]]]],21,22],[[[37,[-1]],[37,[-1]]],23,24],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[37,[-1]],52],[[36,[-1]]],5],[[[37,[-1]],25],26,27],[[[43,[-1]]],[[37,[-1]]],[]],[-1,-1,[]],0,[-1,-2,[],[]],[[13,-1],[[37,[-2]]],18,53],[[13,[12,[[36,[-1]]]]],[[20,[-1,55]]],5],[[13,[12,[[36,[-1]]]]],[[20,[-1,55]]],[5,15]],[[[37,[-1]],-2],20,16,32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],0,[[[37,[-1]],52],[[14,[2]]],5],[-1,-2,[],[]],[[],[[37,[-1]]],5],0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[31,31],[[-1,-2],2,[],[]],[-1,[[20,[31]]],21],[[31,31],23],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[31,-1],[[56,[42]]],16],[[31,57],31],[[31,25],26],[-1,-1,[]],[-1,-2,[],[]],[57,31],[[31,-1],20,32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,-2,[],[]],0,0,0,0,0,0,[[13,[12,[[58,[-1]]]]],[[14,[-1]]],[]],0,0,[[[59,[-1]],[12,[42]]],[[58,[-2]]],[],[]],[[[12,[[59,[-1]]]],[12,[42]]],[[43,[[58,[-2]]]]],[],[]],[[[37,[-1]],[12,[42]],[58,[-2]]],[[14,[2]]],[],[]],[[[37,[-1]],[12,[42]],[12,[[58,[-2]]]],-3],[[14,[2]]],[],[],18],0,0,[[-1,[12,[42]],-2],[[14,[2]]],[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[60,[-1]]],[[60,[-1]]],4],[[-1,-2],2,[],[]],[-1,[[20,[[60,[-2]]]]],21,22],[[[60,[-1]],[60,[-1]]],23,24],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[60,[-1]],25],26,27],[-1,-1,[]],[-1,-1,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[60,[-1]],-2],20,16,32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],0,0,[[-1,[12,[42]],-2],[[14,[2]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[5,"Private",475],[1,"tuple"],[5,"Party",9],[10,"Clone",476],[10,"GroupElement",477],[5,"Message",9],[5,"Complaint",9],[5,"Confirmation",9],[5,"ProcessedMessage",9],[5,"UsedProcessedMessages",9],[5,"Output",9],[1,"slice"],[1,"u32"],[8,"FastCryptoResult",478],[10,"MultiScalarMul",477],[10,"Serialize",479],[10,"DeserializeOwned",480],[10,"AllowedRng",481],[5,"VerifiedProcessedMessages",9],[6,"Result",482],[10,"Deserializer",480],[10,"Deserialize",480],[1,"bool"],[10,"PartialEq",483],[5,"Formatter",484],[8,"Result",484],[10,"Debug",484],[1,"usize"],[5,"PrivateKey",169],[5,"Nodes",305],[5,"RandomOracle",393],[10,"Serializer",479],[5,"TypeId",485],[5,"G1Element",486],[5,"G2Element",486],[8,"Eval",357],[5,"Poly",357],[5,"PublicKey",169],[5,"Encryption",169],[5,"MultiRecipientEncryption",169],[5,"RecoveryPackage",169],[1,"u8"],[5,"Vec",487],[1,"never"],[5,"DLNizk",284],[5,"Node",305],[5,"Digest",488],[17,"Item"],[10,"Iterator",489],[8,"PartyId",305],[1,"u16"],[8,"ShareIndex",431],[10,"Scalar",477],[17,"ScalarType"],[6,"FastCryptoError",478],[1,"array"],[1,"str"],[8,"PartialSignature",415],[8,"Share",415],[5,"IndexedValue",431],[10,"ThresholdBls",415],[5,"ThresholdBls12381MinSig",431],[8,"Share",431]],"b":[]},\ +"fastcrypto_tbls":{"doc":"A crate that implements threshold BLS (tBLS) and …","t":"CCCCCCCCCFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONOONNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNHHHHHFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNFFINNNNNNNNNNNNNNNNNNNNNNNONNNNNNONNNNNNNNNNNNNNNNNOIFIINNNNNNNNNNNNNNNNNNONNNNNNNNNONNNFNNNNNNNNNNNNNNNNNNNNNIRRIRKNOONNNNOOMIFIIIIIIIIIIFNNNNNNNNNNNNNNOONNNNNNNNNNOONNN","n":["dkg","dl_verification","ecies","nizk","nodes","polynomial","random_oracle","tbls","types","Complaint","Confirmation","Message","Output","Party","ProcessedMessage","UsedProcessedMessages","VerifiedProcessedMessages","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","complaint","complaints","complete","create_message","data","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","encrypted_shares","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","is_empty","len","merge","message","new","nodes","process_message","sender","sender","serialize","serialize","serialize","serialize","serialize","serialize","serialize","shares","shares","t","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vss_pk","vss_pk","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","verify_deg_t_poly","verify_equal_exponents","verify_pairs","verify_poly_evals","verify_triplets","Encryption","MultiRecipientEncryption","PrivateKey","PublicKey","RecoveryPackage","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","as_element","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","create_recovery_package","decrypt","decrypt_from_partial_decryption","decrypt_with_recovery_package","deserialize","deserialize","deserialize","deserialize","deserialize","deterministic_encrypt","encrypt","encrypt","ephemeral_key","ephemeral_key","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_private_key","get_encryption","into","into","into","into","into","is_empty","len","new","proof","serialize","serialize","serialize","serialize","serialize","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","verify","vzip","vzip","vzip","vzip","vzip","DLNizk","__clone_box","borrow","borrow_mut","clone","clone_into","create","deserialize","eq","equivalent","equivalent","fmt","from","into","serialize","to_owned","try_from","try_into","type_id","verify","vzip","Node","Nodes","PartyId","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","deserialize","deserialize","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","hash","id","into","into","iter","new","node_id_to_node","num_nodes","pk","reduce","serialize","serialize","share_id_to_node","share_ids_iter","share_ids_of","to_owned","to_owned","total_weight","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","weight","Eval","Poly","PrivatePoly","PublicPoly","__clone_box","add","as_vec","borrow","borrow_mut","c0","clone","clone_into","commit","degree","deserialize","eq","equivalent","equivalent","eval","fmt","from","from","index","into","rand","recover_c0","recover_c0_msm","serialize","to_owned","try_from","try_into","type_id","value","verify_share","vzip","zero","RandomOracle","__clone_box","borrow","borrow_mut","clone","clone_into","deserialize","eq","equivalent","equivalent","evaluate","extend","fmt","from","into","new","serialize","to_owned","try_from","try_into","type_id","vzip","PartialSignature","Private","Public","Share","Signature","ThresholdBls","aggregate","index","index","partial_sign","partial_sign_batch","partial_verify","partial_verify_batch","value","value","verify","EciesEncryption","IndexedValue","PrivateBlsKey","PrivateEciesKey","PublicBlsKey","PublicEciesKey","PublicVssKey","RawSignature","RecoveryPackage","Share","ShareIndex","Signature","ThresholdBls12381MinSig","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deserialize","eq","equivalent","equivalent","fmt","from","from","index","index","into","into","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","value","value","verify","vzip","vzip"],"q":[[0,"fastcrypto_tbls"],[9,"fastcrypto_tbls::dkg"],[164,"fastcrypto_tbls::dl_verification"],[169,"fastcrypto_tbls::ecies"],[284,"fastcrypto_tbls::nizk"],[305,"fastcrypto_tbls::nodes"],[357,"fastcrypto_tbls::polynomial"],[393,"fastcrypto_tbls::random_oracle"],[415,"fastcrypto_tbls::tbls"],[431,"fastcrypto_tbls::types"],[475,"dyn_clone::sealed"],[476,"core::clone"],[477,"fastcrypto::groups"],[478,"fastcrypto::error"],[479,"fastcrypto::groups"],[480,"serde::de"],[481,"fastcrypto::traits"],[482,"core::result"],[483,"serde::de"],[484,"core::fmt"],[485,"core::fmt"],[486,"fastcrypto::groups::bls12381"],[487,"fastcrypto::groups::bls12381"],[488,"fastcrypto::hash"],[489,"core::iter::traits::iterator"],[490,"fastcrypto::groups"]],"d":["","","","","","","","","","A complaint/fraud claim against a dealer that created …","A Confirmation is sent during the second phase of the …","The higher-level protocol is responsible for verifying …","Output is the final output of the DKG protocol in case it …","Generics below use …","Wrapper for collecting everything related to a processed …","Unique processed messages that are being used in the …","Processed messages that were not excluded.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","List of complaints against other parties. Empty if there …","Execute the previous two steps together.","Create the first message to be broadcasted.","","","","","","","","","The encrypted shares created by the sender. Sorted …","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Merge results from multiple ProcessedMessages so only one …","","Create a new ECIES private key and send the public key to …","","Process a message and create the second message to be …","","","","","","","","","","","","The threshold needed to reconstruct the full key/signature.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The commitment of the secret polynomial created by the …","","","","","","","","","","Check that partial public keys form a polynomial of the …","Checks if vectors v1=(a1G1, …, anG1) and v2=(a1’*G2, …","Check that a pair (k, H) satisfies H = k*G using a random …","Checks that a given set of evaluations is consistent with …","Check that a triplet (k, G, H) satisfies H = k*G using a …","","Multi-recipient encryption with a proof-of-knowledge of …","Simple ECIES encryption using a generic group and …","","A recovery package that allows decrypting a specific ECIES …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","NIZKPoK for the DL [G, xG].","","","","","","Create a new NIZKPoK for the DL [G, xG] using the given …","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","","Public parameters of a party.","Wrapper for a set of nodes.","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Get an iterator on the nodes.","Create a new set of nodes. Nodes must have consecutive ids …","","Number of nodes.","","Reduce weights up to an allowed delta in the original …","","","Get the node corresponding to a share id.","Get an iterator on the share ids.","Get the share ids of a node.","","","Total weight of the nodes.","","","","","","","","","","Types","A polynomial that is using a scalar for the variable x and …","","","","Performs polynomial addition in place.","Returns the coefficients of the polynomial.","","","Return the constant term of the polynomial.","","","Commits the scalar polynomial to the group and returns a …","Returns the degree of the polynomial","","","","","Evaluates the polynomial at the specified value.","","","Returns the argument unchanged.","","Calls U::from(self).","Returns a new polynomial of the given degree where each …","Given exactly t polynomial evaluations, it will recover …","Given exactly t polynomial evaluations, it will recover …","","","","","","","Checks if a given share is valid.","","Returns a polynomial with the zero element.","Random Oracle from SHA3-512.","","","","","","","","","","Evaluate the random oracle on a given input.","Derive a new random oracle from the current one and …","","Returns the argument unchanged.","Calls U::from(self).","Create a fresh random oracle with a given “session id”…","","","","","","","","","Public represents the group over which the public keys are …","","Signature represents the group over which the signatures …","Trait ThresholdBls provides sign & verify functions for …","Interpolate partial signatures to recover the full …","","","Sign a message using the private share/partial key.","Sign a message using one of more private share/partial …","Verify a signature done by a partial key holder.","Verify a set of signatures done by a partial key holder. …","","","Verify a signature on a given message. This is standard …","","Wrapper of a value that is associated with a specific …","","ECIES related types with Ristretto points.","","","","","","tBLS with ThresholdBls12381MinSig types.","Indexes of shares/private keys (0 is reserved for the …","","Implementation of [ThresholdBls] for BLS12-381-min-sig. A …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,3,6,7,8,9,10,11,3,6,7,8,9,10,11,9,8,3,3,19,3,6,7,8,9,10,11,6,3,6,7,8,9,10,3,3,6,6,7,7,8,8,9,9,10,10,6,11,19,3,6,7,8,9,10,10,11,19,3,6,7,8,9,10,11,19,19,3,9,3,11,3,6,8,3,6,7,8,9,10,11,9,11,3,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,19,3,6,7,8,9,10,11,6,11,19,3,6,7,8,9,10,11,0,0,0,0,0,0,0,0,0,0,29,38,39,40,41,38,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,29,39,38,29,38,39,40,41,38,38,40,39,40,29,38,39,40,41,29,29,38,38,39,39,40,40,41,41,29,38,39,40,41,29,29,38,38,38,39,40,41,38,40,29,38,39,40,41,40,40,29,40,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,29,38,39,40,41,40,29,38,39,40,41,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,46,30,46,30,46,30,46,30,46,30,46,30,46,30,46,46,30,30,46,30,46,30,30,46,46,30,30,30,30,30,46,30,46,30,30,30,30,46,30,30,46,30,46,30,46,30,46,30,46,0,0,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,37,37,37,37,37,37,37,37,37,36,37,37,37,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,62,62,0,62,0,62,60,59,62,62,62,62,60,59,62,0,0,0,0,0,0,0,0,0,0,0,0,0,61,63,61,63,61,61,61,61,61,61,61,61,63,61,64,61,63,61,61,61,63,61,63,61,63,61,64,61,63,63,61],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[3,[-1,-2]]],[[3,[-1,-2]]],[4,5],[4,5]],[[[6,[-1,-2]]],[[6,[-1,-2]]],[4,5],[4,5]],[[[7,[-1]]],[[7,[-1]]],[4,5]],[[[8,[-1]]],[[8,[-1]]],[4,5]],[[[9,[-1,-2]]],[[9,[-1,-2]]],[4,5],[4,5]],[[[10,[-1,-2]]],[[10,[-1,-2]]],[4,5],[4,5]],[[[11,[-1,-2]]],[[11,[-1,-2]]],[4,5],[4,5]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],0,0,[[[3,[-1,-2]],[10,[-1,-2]],[12,[[8,[-2]]]],13,-3],[[14,[[11,[-1,-2]]]]],[5,15,16,17],[5,16,17],18],[[[3,[-1,-2]],-3],[[6,[-1,-2]]],[5,15,16,17],[5,16,17],18],[[[19,[-1,-2]]],[[12,[[9,[-1,-2]]]]],5,5],[-1,[[20,[[3,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[6,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[7,[-2]]]]],21,[22,5]],[-1,[[20,[[8,[-2]]]]],21,[22,5]],[-1,[[20,[[9,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[10,[-2,-3]]]]],21,[22,5],[22,5]],[-1,[[20,[[11,[-2,-3]]]]],21,[22,5],[22,5]],0,[[[3,[-1,-2]],[3,[-1,-2]]],23,[24,5],[24,5]],[[[6,[-1,-2]],[6,[-1,-2]]],23,[24,5],[24,5]],[[[7,[-1]],[7,[-1]]],23,[24,5]],[[[8,[-1]],[8,[-1]]],23,[24,5]],[[[9,[-1,-2]],[9,[-1,-2]]],23,[24,5],[24,5]],[[[10,[-1,-2]],[10,[-1,-2]]],23,[24,5],[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[6,[-1,-2]],25],26,[27,5],[27,5]],[[[11,[-1,-2]],25],26,[27,5],[27,5]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[12,[[9,[-1,-2]]]]],[[10,[-1,-2]]],5,5],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[19,[-1,-2]]],23,5,5],[[[19,[-1,-2]]],28,5,5],[[[3,[-1,-2]],[12,[[9,[-1,-2]]]]],[[14,[[2,[[8,[-2]],[10,[-1,-2]]]]]]],[5,15,16,17],[5,16,17]],0,[[[29,[-1]],[30,[-1]],13,31,-2],[[14,[[3,[-3,-1]]]]],[5,16,17],18,[5,15,16,17]],0,[[[3,[-1,-2]],[6,[-1,-2]],-3],[[14,[[9,[-1,-2]]]]],[5,15,16,17],[5,16,17],18],0,0,[[[3,[-1,-2]],-3],20,[16,5],[16,5],32],[[[6,[-1,-2]],-3],20,[16,5],[16,5],32],[[[7,[-1]],-2],20,[16,5],32],[[[8,[-1]],-2],20,[16,5],32],[[[9,[-1,-2]],-3],20,[16,5],[16,5],32],[[[10,[-1,-2]],-3],20,[16,5],[16,5],32],[[[11,[-1,-2]],-3],20,[16,5],[16,5],32],0,0,[[[3,[-1,-2]]],13,[5,15,16,17],[5,16,17]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[13,[12,[-1]],12,-2],[[14,[2]]],[5,15],18],[[[12,[34]],[12,[35]],-1],[[14,[2]]],18],[[[12,[[2,[-1]]]],-2],[[14,[2]]],[5,15],18],[[[12,[36]],[37,[-1]],-2],[[14,[2]]],[5,15],18],[[[12,[[2,[-1,-1]]]],-2],[[14,[2]]],[5,15],18],0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[[38,[-1]]],-1,[5,16,17]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-1]]],[[29,[-1]]],[4,5]],[[[38,[-1]]],[[38,[-1]]],[4,5]],[[[39,[-1]]],[[39,[-1]]],[4,5]],[[[40,[-1]]],[[40,[-1]]],[4,5]],[[[41,[-1]]],[[41,[-1]]],[4,5]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[29,[-1]],[39,[-1]],31,-2],[[41,[-1]]],[5,16],18],[[[29,[-1]],[39,[-1]]],[[43,[42]]],[5,16]],[[[39,[-1]],-1],[[43,[42]]],[5,16]],[[[38,[-1]],[41,[-1]],31,[39,[-1]]],[[14,[[43,[42]]]]],[5,16,17]],[-1,[[20,[[29,[-2]]]]],21,5],[-1,[[20,[[38,[-2]]]]],21,[22,5]],[-1,[[20,[[39,[-2]]]]],21,[22,5]],[-1,[[20,[[40,[-2]]]]],21,[22,5]],[-1,[[20,[[41,[-2]]]]],21,[22,5]],[[[12,[42]],-1,-1],[[39,[-1]]],[5,16,17]],[[[38,[-1]],[12,[42]],-2],[[39,[-1]]],[5,16,17],18],[[[12,[[2,[[38,[-1]],[43,[42]]]]]],31,-2],[[40,[-1]]],[5,16],18],[[[39,[-1]]],-1,[5,16]],[[[40,[-1]]],-1,[5,16]],[[[29,[-1]],[29,[-1]]],23,[24,5]],[[[38,[-1]],[38,[-1]]],23,[24,5]],[[[39,[-1]],[39,[-1]]],23,[24,5]],[[[40,[-1]],[40,[-1]]],23,[24,5]],[[[41,[-1]],[41,[-1]]],23,[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[29,[-1]],25],26,[27,5]],[[[38,[-1]],25],26,[27,5]],[[[39,[-1]],25],26,[27,5]],[[[40,[-1]],25],26,[27,5]],[[[41,[-1]],25],26,[27,5]],[-1,-1,[]],[[],[[29,[-1]]],[5,16]],[-1,[[38,[-1]]],5],[-1,-1,[]],[44,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[29,[-1]]],[[38,[-1]]],[5,16,17]],[[[40,[-1]],28],[[14,[[39,[-1]]]]],[5,16]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[40,[-1]]],23,[5,16]],[[[40,[-1]]],28,[5,16]],[-1,[[29,[-2]]],18,[5,16]],[[[40,[-1]]],[[45,[-1]]],[5,16]],[[[29,[-1]],-2],20,5,32],[[[38,[-1]],-2],20,[16,5],32],[[[39,[-1]],-2],20,[16,5],32],[[[40,[-1]],-2],20,[16,5],32],[[[41,[-1]],-2],20,[16,5],32],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[-1,33,[]],[[[40,[-1]],31],[[14,[2]]],[5,16]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[45,[-1]]],[[45,[-1]]],[4,5]],[[-1,-2],2,[],[]],[[-1,[12,[42]],31,-2],[[45,[-1]]],[5,16],18],[-1,[[20,[[45,[-2]]]]],21,[5,22]],[[[45,[-1]],[45,[-1]]],23,[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[45,[-1]],25],26,[27,5]],[-1,-1,[]],[-1,-2,[],[]],[[[45,[-1]],-2],20,[16,5],32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[[[45,[-1]],-1,[12,[42]],31],[[14,[2]]],[5,16]],[-1,-2,[],[]],0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[46,[-1]]],[[46,[-1]]],[4,5]],[[[30,[-1]]],[[30,[-1]]],[4,5]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[-1,[[20,[[46,[-2]]]]],21,[22,5]],[-1,[[20,[[30,[-2]]]]],21,[22,5]],[[[46,[-1]],[46,[-1]]],23,[24,5]],[[[30,[-1]],[30,[-1]]],23,[24,5]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[46,[-1]],25],26,[27,5]],[[[30,[-1]],25],26,[27,5]],[-1,-1,[]],[-1,-1,[]],[[[30,[-1]]],47,[5,16]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],[[0,[[49,[],[[48,[[46,[-1]]]]]]]]],[5,16]],[[[43,[[46,[-1]]]]],[[14,[[30,[-1]]]]],[5,16]],[[[30,[-1]],50],[[14,[[46,[-1]]]]],[5,16]],[[[30,[-1]]],28,[5,16]],0,[[[30,[-1]],51,51],[[2,[[30,[-1]],51]]],[5,16]],[[[46,[-1]],-2],20,[16,5],32],[[[30,[-1]],-2],20,[16,5],32],[[[30,[-1]],52],[[14,[[46,[-1]]]]],[5,16]],[[[30,[-1]]],[[0,[[49,[],[[48,[52]]]]]]],[5,16]],[[[30,[-1]],50],[[43,[52]]],[5,16]],[-1,-2,[],[]],[-1,-2,[],[]],[[[30,[-1]]],13,[5,16]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,[[-1,1],2,[]],[[[37,[-1]],[37,[-1]]],2,5],[[[37,[-1]]],[[43,[-1]]],5],[-1,-2,[],[]],[-1,-2,[],[]],[[[37,[-1]]],-1,5],[[[37,[-1]]],[[37,[-1]]],4],[[-1,-2],2,[],[]],[[[37,[-1]]],[[37,[-2]]],53,[[5,[],[[54,[-1]]]]]],[[[37,[-1]]],13,[]],[-1,[[20,[[37,[-2]]]]],21,22],[[[37,[-1]],[37,[-1]]],23,24],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[37,[-1]],52],[[36,[-1]]],5],[[[37,[-1]],25],26,27],[[[43,[-1]]],[[37,[-1]]],[]],[-1,-1,[]],0,[-1,-2,[],[]],[[13,-1],[[37,[-2]]],18,53],[[13,-3],[[20,[-1,55]]],5,[[56,[[36,[-1]]]]],[[49,[],[[48,[-2]]]],4]],[[13,-3],[[20,[-1,55]]],[5,15],[[56,[[36,[-1]]]]],[[49,[],[[48,[-2]]]],4]],[[[37,[-1]],-2],20,16,32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],0,[[[37,[-1]],52],[[14,[2]]],5],[-1,-2,[],[]],[[],[[37,[-1]]],5],0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[31,31],[[-1,-2],2,[],[]],[-1,[[20,[31]]],21],[[31,31],23],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[31,-1],[[57,[42]]],16],[[31,58],31],[[31,25],26],[-1,-1,[]],[-1,-2,[],[]],[58,31],[[31,-1],20,32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,-2,[],[]],0,0,0,0,0,0,[[13,-3],[[14,[-1]]],[],[[56,[[59,[-1]]]]],[[49,[],[[48,[-2]]]],4]],0,0,[[[60,[-1]],[12,[42]]],[[59,[-2]]],[],[]],[[-3,[12,[42]]],[[43,[[59,[-4]]]]],[],[[56,[[60,[-1]]]]],[[49,[],[[48,[-2]]]]],[]],[[[37,[-1]],[12,[42]],[59,[-2]]],[[14,[2]]],[],[]],[[[37,[-1]],[12,[42]],-4,-5],[[14,[2]]],[],[],[[56,[[59,[-2]]]]],[[49,[],[[48,[-3]]]]],18],0,0,[[-1,[12,[42]],-2],[[14,[2]]],[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[61,[-1]]],[[61,[-1]]],4],[[-1,-2],2,[],[]],[-1,[[20,[[61,[-2]]]]],21,22],[[[61,[-1]],[61,[-1]]],23,24],[[-1,-2],23,[],[]],[[-1,-2],23,[],[]],[[[61,[-1]],25],26,27],[-1,-1,[]],[-1,-1,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[[[61,[-1]],-2],20,16,32],[-1,-2,[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,[[20,[-2]]],[],[]],[-1,33,[]],[-1,33,[]],0,0,[[-1,[12,[42]],-2],[[14,[2]]],[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[5,"Private",475],[1,"tuple"],[5,"Party",9],[10,"Clone",476],[10,"GroupElement",477],[5,"Message",9],[5,"Complaint",9],[5,"Confirmation",9],[5,"ProcessedMessage",9],[5,"UsedProcessedMessages",9],[5,"Output",9],[1,"slice"],[1,"u32"],[8,"FastCryptoResult",478],[10,"MultiScalarMul",477],[10,"Serialize",479],[10,"DeserializeOwned",480],[10,"AllowedRng",481],[5,"VerifiedProcessedMessages",9],[6,"Result",482],[10,"Deserializer",480],[10,"Deserialize",480],[1,"bool"],[10,"PartialEq",483],[5,"Formatter",484],[8,"Result",484],[10,"Debug",484],[1,"usize"],[5,"PrivateKey",169],[5,"Nodes",305],[5,"RandomOracle",393],[10,"Serializer",479],[5,"TypeId",485],[5,"G1Element",486],[5,"G2Element",486],[8,"Eval",357],[5,"Poly",357],[5,"PublicKey",169],[5,"Encryption",169],[5,"MultiRecipientEncryption",169],[5,"RecoveryPackage",169],[1,"u8"],[5,"Vec",487],[1,"never"],[5,"DLNizk",284],[5,"Node",305],[5,"Digest",488],[17,"Item"],[10,"Iterator",489],[8,"PartyId",305],[1,"u16"],[8,"ShareIndex",431],[10,"Scalar",477],[17,"ScalarType"],[6,"FastCryptoError",478],[10,"Borrow",490],[1,"array"],[1,"str"],[8,"PartialSignature",415],[8,"Share",415],[5,"IndexedValue",431],[10,"ThresholdBls",415],[5,"ThresholdBls12381MinSig",431],[8,"Share",431]],"b":[]},\ "fastcrypto_vdf":{"doc":"","t":"KRKRKKCMCMMMCMFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFKNNNHHHNMNNNNHNRRRKMMCSFKFIIFIIFNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Parameter","ParameterType","ParameterizedGroupElement","ScalarType","ToBytes","UnknownOrderGroupElement","class_group","from_seed","hash_prime","mul","same_group","to_bytes","vdf","zero","Discriminant","QuadraticForm","__clone_box","__clone_box","add","add","add","bits","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","compose","discriminant","double","eq","eq","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from_a_b_discriminant","from_bytes","from_seed","generator","into","into","mul","mul","neg","same_group","serialized_length","to_bytes","to_bytes","to_owned","to_owned","try_from","try_from","try_from","try_from_be_bytes","try_into","try_into","type_id","type_id","vzip","vzip","zero","DefaultPrimalityCheck","PrimalityCheck","borrow","borrow_mut","from","hash_prime","hash_prime_default","hash_prime_with_index","into","is_prime","is_prime","try_from","try_into","type_id","verify_prime","vzip","InputType","OutputType","ProofType","VDF","evaluate","verify","wesolowski","CHALLENGE_SIZE","FastVerifier","FiatShamir","StrongFiatShamir","StrongVDF","StrongVDFVerifier","WeakFiatShamir","WeakVDF","WeakVDFVerifier","WesolowskisVDF","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","compute_challenge","compute_challenge","compute_challenge","evaluate","from","from","from","from","from_seed","into","into","into","into","new","new","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify","verify","vzip","vzip","vzip","vzip"],"q":[[0,"fastcrypto_vdf"],[14,"fastcrypto_vdf::class_group"],[69,"fastcrypto_vdf::hash_prime"],[85,"fastcrypto_vdf::vdf"],[92,"fastcrypto_vdf::vdf::wesolowski"],[143,"fastcrypto::error"],[144,"core::convert"],[145,"alloc::vec"],[146,"dyn_clone::sealed"],[147,"core::fmt"],[148,"core::fmt"],[149,"core::result"],[150,"core::any"],[151,"num_bigint::biguint"],[152,"fastcrypto::groups::multiplier"]],"d":["This trait is implemented by types which can be used as …","The type of the parameter which uniquely defines this …","Trait implemented by elements of an additive group where …","Integer type used for multiplication.","","Trait impl’d by elements of groups where the order is …","This module contains implementation of imaginary class …","Compute a random instance of a given size from a seed.","This module contains an implementation of a hash-to-prime …","Compute scale * self.","Check whether this group element is in the same group as …","Serialize this object into a byte vector.","This module contains a implementation of a verifiable …","Return an instance of the identity element in this group.","A discriminant for an imaginary class group. The …","A binary quadratic form, (a, b, c) for arbitrary integers …","","","","","","Return the number of bits needed to represent this …","","","","","","","","","Compute the composition of this quadratic form with …","Compute the discriminant b^2 - 4ac for this quadratic form.","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Create a new quadratic form given only the a and b …","Deserialize bytes into a quadratic form. The expected …","Compute a valid discriminant (aka a negative prime equal …","Return a generator (or, more precisely, an element with a …","Calls U::from(self).","Calls U::from(self).","","","","","Return the length of the serialization in bytes of a …","","","","","","","","Try to create a discriminant from a big-endian byte …","","","","","","","","Implementation of the PrimalityCheck trait using the …","Implementation of a probabilistic primality test.","","","Returns the argument unchanged.","Implementation of HashPrime from chiavdf (): Generates a …","Implementation of hash_prime using the primality test from …","Generates a random pseudo-prime using the hash and check …","Calls U::from(self).","Return true if x is probably a prime. If false is …","","","","","Verify that the given prime is a prime and has the given …","","The type of the input to the VDF.","The type of the output from the VDF.","The type of the proof of correctness for this VDF.","This represents a Verifiable Delay Function (VDF) …","Evaluate this VDF and return the output and a proof of …","Verify the output and proof from a VDF.","","Default size in bytes of the Fiat-Shamir challenge used in …","A faster method of verification which uses fast …","","Implementation of the Fiat-Shamir challenge generation for …","Implementation of Wesolowski’s VDF construction over a …","","Implementation of the Fiat-Shamir challenge generation …","Implementation of Wesolowski’s VDF construction over a …","","An implementation of Wesolowski’s VDF construction …","","","","","","","","","Compute the prime modulus used in proving and …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a new VDF over an group of unknown where the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a new VDF using the group defined by the given …","Create a new FastVerifier for the given VDF instance.","","","","","","","","","","","","","","Verify the output and proof from a VDF using the input …","","","",""],"i":[0,8,0,8,0,0,0,4,0,8,8,12,0,8,0,0,16,17,16,16,16,17,16,17,16,17,16,17,16,17,16,16,16,16,17,16,16,17,17,16,17,16,17,16,16,17,16,16,17,16,16,16,16,16,16,17,16,17,16,17,17,17,16,17,16,17,16,17,16,0,0,36,36,36,0,0,0,36,32,36,36,36,36,0,36,27,27,27,0,27,27,0,0,0,0,0,0,0,0,0,0,0,29,34,31,33,29,34,31,33,28,31,33,29,29,34,31,33,29,29,34,31,33,29,34,29,34,31,33,29,34,31,33,29,34,31,33,29,34,29,34,31,33],"f":[0,0,0,0,0,0,0,[[[2,[1]],3],[[5,[4]]]],0,[[[8,[],[[6,[-1]],[7,[-2]]]],-2],[[8,[],[[6,[-1]],[7,[-2]]]]],4,[[10,[9]]]],[[[8,[],[[6,[-1]],[7,[-2]]]],[8,[],[[6,[-1]],[7,[-2]]]]],11,4,[[10,[9]]]],[12,[[13,[1]]]],0,[-1,[[8,[],[[6,[-1]],[7,[-2]]]]],4,[[10,[9]]]],0,0,[[-1,14],15,[]],[[-1,14],15,[]],[[16,16],-1,[]],[[16,16],-1,[]],[[16,16],-1,[]],[17,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[16,16],[17,17],[[-1,-2],15,[],[]],[[-1,-2],15,[],[]],[[16,16],16],[16,17],[16,16],[[16,16],11],[[17,17],11],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],[[-1,-2],11,[],[]],[[16,18],19],[[17,18],19],[-1,-1,[]],[-1,-1,[]],[[20,20,17],16],[[[2,[1]],17],[[5,[16]]]],[[[2,[1]],3],[[5,[17]]]],[17,16],[-1,-2,[],[]],[-1,-2,[],[]],[[16,20],16],[[16,20],-1,[]],[16,-1,[]],[[16,16],11],[3,3],[16,[[13,[1]]]],[17,[[13,[1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[20,[[5,[17]]]],[[[2,[1]]],[[5,[17]]]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,22,[]],[-1,22,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,16,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-1,[]],[[[2,[1]],3,[2,[3]]],23],[[[2,[1]],3,[2,[3]]],23],[[[2,[1]],3,[2,[3]]],[[15,[3,23]]]],[-1,-2,[],[]],[23,11],[23,11],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,22,[]],[[[2,[1]],3,[2,[3]],3],[[5,[15]]]],[-1,-2,[],[]],0,0,0,0,[[[27,[],[[24,[-1]],[25,[-2]],[26,[-3]]]],-1],[[5,[[15,[-2,-3]]]]],[],[],[]],[[[27,[],[[24,[-1]],[25,[-2]],[26,[-3]]]],-1,-2,-3],[[5,[15]]],[],[],[]],0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[29,[-1,28]],-1,-1],[],[8,30]],[[[29,[-1,[31,[-1,-2]]]],-1,-1],20,[[8,[],[[7,[20]]]],30],32],[[[29,[-1,[33,[-1,-2]]]],-1,-1],20,[[8,[],[[7,[20]]]],30],32],[[[29,[-1,-2]],-1],[[5,[[15,[-1,-1]]]]],[[8,[],[[7,[20]]]],30],[[28,[-1]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[2,[1]],3,9],[[5,[[29,[-1,-2]]]]],[8,30],[[28,[-1]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[9,[[29,[-1,-2]]],[8,30],[[28,[-1]]]],[[[29,[-1,-2]],-1],[[34,[-1,-2,-3]]],[[8,[],[[7,[20]]]],30],[[28,[-1]]],[[35,[-1,20]]]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,[[21,[-2]]],[],[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[-1,22,[]],[[[29,[-1,-2]],-1,-1,-1],[[5,[15]]],[[8,[],[[7,[20]]]],30],[[28,[-1]]]],[[[34,[-1,-2,-3]],-1,-1],[[5,[15]]],[[8,[],[[7,[20]]]],30],[[28,[-1]]],[[35,[-1,20]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[1,"u8"],[1,"slice"],[1,"usize"],[10,"Parameter",0],[8,"FastCryptoResult",143],[17,"ParameterType"],[17,"ScalarType"],[10,"ParameterizedGroupElement",0],[1,"u64"],[10,"From",144],[1,"bool"],[10,"ToBytes",0],[5,"Vec",145],[5,"Private",146],[1,"tuple"],[5,"QuadraticForm",14],[5,"Discriminant",14],[5,"Formatter",147],[8,"Result",147],[5,"BigInt",148],[6,"Result",149],[5,"TypeId",150],[5,"BigUint",151],[17,"InputType"],[17,"OutputType"],[17,"ProofType"],[10,"VDF",85],[10,"FiatShamir",92],[5,"WesolowskisVDF",92],[10,"UnknownOrderGroupElement",0],[5,"WeakFiatShamir",92],[10,"PrimalityCheck",69],[5,"StrongFiatShamir",92],[5,"FastVerifier",92],[10,"ScalarMultiplier",152],[5,"DefaultPrimalityCheck",69]],"b":[[18,"impl-Add-for-QuadraticForm"],[19,"impl-Add%3C%26QuadraticForm%3E-for-QuadraticForm"],[20,"impl-Add%3C%26QuadraticForm%3E-for-%26QuadraticForm"],[49,"impl-ParameterizedGroupElement-for-QuadraticForm"],[50,"impl-Mul%3C%26BigInt%3E-for-QuadraticForm"]]},\ "fastcrypto_zkp":{"doc":"Fastcrypto-zkp is an experimental crate that offers a …","t":"FFNNNNNNNNNNNNNNCCNNNNCNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNCNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNCNNNHHISSHHHHHHHHHHHHHHHHHHFNONNNNONNNNNNNNONNNNNNNONFFFCNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNCCNNNCCSHHHSSHHHFHNNNNNHHHHHHHNHNNNNFNONNNNONNNNNNNNNONNNNNNNONPIIKYKYFPPFFFFPGFPKPFFFNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMONNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNOONNNNOOOONNNHNNNNNNNNNNNNNNNMMHMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIIKYKYPPKGNNNNNNNNNNNMNNNNNMMMNNNNNHHHHNIIHHFFNOONNNNNNNNNNNNNNNOONNNNNNNNN","n":["Fr","FrRepr","__clone_box","__clone_box","add","add","add_assign","add_assign","as_bits","as_byte_slice","as_mut","as_mut_bits","as_mut_byte_slice","as_mut_slice_of","as_ref","as_slice_of","bls12381","bn254","borrow","borrow","borrow_mut","borrow_mut","circom","clone","clone","clone_into","clone_into","cmp","conditional_select","ct_eq","ct_eq","default","default","double","dummy_circuits","encode_hex","encode_hex_upper","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from","from","from","from_repr","from_repr_vartime","into","into","invert","is_odd","is_zero_vartime","mul","mul","mul_assign","mul_assign","neg","partial_cmp","product","random","sqrt","sqrt_ratio","square","sub","sub","sub_assign","sub_assign","sum","to_owned","to_owned","to_repr","try_as_bits","try_as_mut_bits","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","FieldElement","Proof","VerifyingKey","__clone_box","api","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","conversions","deserialize","deserialize","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","verifier","vzip","vzip","vzip","prepare_pvk_bytes","verify_groth16_in_bytes","BlsFr","G1_COMPRESSED_SIZE","SCALAR_SIZE","bls_fq12_to_blst_fp12","bls_fq2_to_blst_fp2","bls_fq6_to_blst_fp6","bls_fq_to_blst_fp","bls_fr_to_blst_fr","bls_g1_affine_from_zcash_bytes","bls_g1_affine_to_blst_g1_affine","bls_g1_affine_to_zcash_bytes","bls_g2_affine_from_zcash_bytes","bls_g2_affine_to_blst_g2_affine","bls_g2_affine_to_zcash_bytes","blst_fp12_to_bls_fq12","blst_fp2_to_bls_fq2","blst_fp6_to_bls_fq6","blst_fp_to_bls_fq","blst_fr_to_bls_fr","blst_g1_affine_to_bls_g1_affine","blst_g2_affine_to_bls_g2_affine","PreparedVerifyingKey","__clone_box","alpha_g1_beta_g2","borrow","borrow_mut","clone","clone_into","delta_g2_neg_pc","deserialize","eq","equivalent","equivalent","equivalent","fmt","from","from","gamma_g2_neg_pc","into","serialize","to_owned","try_from","try_into","type_id","verify","vk_gamma_abc_g1","vzip","FieldElement","Proof","VerifyingKey","api","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deserialize","deserialize","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","poseidon","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","utils","verifier","vzip","vzip","vzip","zk_login","zk_login_api","SCALAR_SIZE","prepare_pvk_bytes","verify_groth16","verify_groth16_in_bytes","FIELD_ELEMENT_SIZE_IN_BYTES","MERKLE_TREE_DEGREE","poseidon","poseidon_bytes","poseidon_merkle_tree","GetSaltResponse","big_int_str_to_bytes","borrow","borrow_mut","deserialize","fmt","from","gen_address_seed","get_nonce","get_oidc_url","get_proof","get_salt","get_token_exchange_url","get_zk_login_address","into","split_to_two_frs","try_from","try_into","type_id","vzip","PreparedVerifyingKey","__clone_box","alpha_g1_beta_g2","borrow","borrow_mut","clone","clone_into","delta_g2_neg_pc","deserialize","eq","equivalent","equivalent","equivalent","fmt","from","from","from","gamma_g2_neg_pc","into","serialize","to_owned","try_from","try_into","type_id","verify","vk_gamma_abc_g1","vzip","Apple","Bn254","Bn254Fr","CanonicalDeserialize","CanonicalDeserialize","CanonicalSerialize","CanonicalSerialize","Claim","Facebook","Google","JWK","JWKReader","JWTDetails","JwkId","Kakao","OIDCProvider","ProviderConfig","Slack","ToConstraintField","Twitch","ZkLoginInputs","ZkLoginInputsReader","ZkLoginProof","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","alg","as_arkworks","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_all_inputs_hash","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","compressed_size","default","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize_compressed","deserialize_compressed_unchecked","deserialize_uncompressed","deserialize_uncompressed_unchecked","deserialize_with_mode","e","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fetch_jwks","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from_iss","from_json","from_json","from_reader","from_reader","from_str","get_address_seed","get_config","get_hash","get_hash","get_hash","get_iss","get_kid","get_proof","hash","hash","hash","hash_ascii_str_to_field","init","into","into","into","into","into","into","into","into","into","into","iss","iss","json_schema","json_schema","json_schema","json_schema","jwk_endpoint","kid","kty","n","new","new","new","parse_jwks","partial_cmp","partial_cmp","schema_name","schema_name","schema_name","schema_name","serialize","serialize","serialize","serialize","serialize","serialize","serialize","serialize_compressed","serialize_uncompressed","serialize_with_mode","serialized_size","to_field","to_field_elements","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","uncompressed_size","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bn254","Bn254Fr","CanonicalDeserialize","CanonicalDeserialize","CanonicalSerialize","CanonicalSerialize","Prod","Test","ToConstraintField","ZkLoginEnv","__clone_box","borrow","borrow_mut","clone","clone_into","compressed_size","default","deserialize_compressed","deserialize_compressed_unchecked","deserialize_uncompressed","deserialize_uncompressed_unchecked","deserialize_with_mode","fmt","from","into","serialize_compressed","serialize_uncompressed","serialize_with_mode","serialized_size","to_field_elements","to_owned","try_from","try_into","type_id","uncompressed_size","verify_zk_login","verify_zk_login_id","verify_zk_login_iss","verify_zk_login_proof_with_fixed_vk","vzip","CircomG1","CircomG2","g1_affine_from_str_projective","g2_affine_from_str_projective","DummyCircuit","Fibonacci","__clone_box","a","b","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","from","from","generate_constraints","generate_constraints","into","into","new","num_constraints","num_variables","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":[[0,"fastcrypto_zkp"],[88,"fastcrypto_zkp::bls12381"],[130,"fastcrypto_zkp::bls12381::api"],[132,"fastcrypto_zkp::bls12381::conversions"],[153,"fastcrypto_zkp::bls12381::verifier"],[179,"fastcrypto_zkp::bn254"],[220,"fastcrypto_zkp::bn254::api"],[224,"fastcrypto_zkp::bn254::poseidon"],[229,"fastcrypto_zkp::bn254::utils"],[249,"fastcrypto_zkp::bn254::verifier"],[276,"fastcrypto_zkp::bn254::zk_login"],[516,"fastcrypto_zkp::bn254::zk_login_api"],[556,"fastcrypto_zkp::circom"],[560,"fastcrypto_zkp::dummy_circuits"],[591,"dyn_clone::sealed"],[592,"bitvec::slice"],[593,"bitvec::order"],[594,"byte_slice_cast"],[595,"core::result"],[596,"byte_slice_cast"],[597,"subtle"],[598,"core::iter::traits::collect"],[599,"core::fmt"],[600,"core::fmt"],[601,"core::borrow"],[602,"core::iter::traits::iterator"],[603,"rand_core"],[604,"bitvec::ptr::span"],[605,"core::any"],[606,"fastcrypto::error"],[607,"ark_bls12_381::curves"],[608,"ark_groth16::data_structures"],[609,"ark_groth16::data_structures"],[610,"fastcrypto::error"],[611,"blst"],[612,"ark_bls12_381::fields::fq2"],[613,"blst"],[614,"blst"],[615,"blst"],[616,"blst"],[617,"blst"],[618,"alloc::string"],[619,"ark_serialize::error"],[620,"ark_std::io"],[621,"ark_serialize"],[622,"ark_serialize"],[623,"core::hash"],[624,"core::marker"],[625,"core::hash"],[626,"schemars::schema"],[627,"serde::ser"],[628,"ark_std::io"],[629,"im::hash::map"],[630,"ark_bn254::curves"],[631,"ark_bn254::curves"],[632,"ark_ff::fields::prime"],[633,"core::fmt"],[634,"ark_relations::r1cs::error"]],"d":["Definition of the BN254 prime field.","","","","","","","","","","","","","","","","Groth16 verifier over the BLS12-381 elliptic curve …","Groth16 verifier over the BN254 elliptic curve …","","","","","","","","","","","","","","","","","Simple circuits used in benchmarks and demos","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","Computes a uniformly random element using rejection …","","","","","","","","","","","","","","","","","","","","","","A field element in the BLS12-381 construction. Thin …","A Groth16 proof in the BLS12-381 construction. Thin …","A Groth16 verifying key in the BLS12-381 construction. …","","API that takes in serialized inputs","","","","","","","","","Conversions between arkworks <-> blst","Deserialize a serialized Groth16 proof using arkworks’ …","Deserialize a serialized Groth16 verifying key in …","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","Groth16 SNARK verifier","","","","Deserialize bytes as an Arkwork representation of a …","Verify Groth16 proof using the serialized form of the four …","","G1 affine point compressed size.","Size of scalar elements.","Convert an Arkworks BLS12-381 target field element to a …","Convert an Arkworks BLS12-381 quadratic extension field …","Convert an Arkworks BLS12-381 degree-6 extension field …","Convert an Arkworks BLS12-381 prime field element to a …","Convert an Arkworks BLS12-381 scalar field element to a …","This deserializes an Arkworks G1Affine point from a Zcash …","Convert an Arkworks BLS12-381 affine G1 point to a blst …","This serializes an Arkworks G1Affine point into a Zcash …","This deserializes an Arkworks G2Affine point from a Zcash …","Convert an Arkworks BLS12-381 affine G2 point to a blst …","This serializes an Arkworks G2Affine point into a Zcash …","Convert a blst target field element to an Arkworks …","Convert a blst quadratic extension field element to an …","Convert a blst degree-6 extension field element to an …","Convert a blst prime field element to an Arkworks …","Convert a blst scalar field element to an Arkworks …","Convert a blst affine G1 point to an Arkworks BLS12-381 …","Convert a blst affine G2 point to an Arkworks BLS12-381 …","This is a helper function to store a pre-processed version …","","The element e(alpha * G, beta * H) in E::GT.","","","","","The element - delta * H in E::G2, for use in pairings.","Deserialize the prepared verifying key from the serialized …","","","","","","Takes an input ark_groth16::VerifyingKey vk and returns a …","Returns the argument unchanged.","The element - gamma * H in E::G2, for use in pairings.","Calls U::from(self).","Serialize the prepared verifying key to its vectors form.","","","","","Returns the validity of the Groth16 proof passed as …","The element vk.gamma_abc_g1, aka the …","","A field element in the BN254 construction. Thin wrapper …","A Groth16 proof in the BN254 construction. Thin wrapper …","A Groth16 verifying key in the BN254 construction. Thin …","API that takes in serialized inputs","","","","","","","Deserialize a serialized Groth16 proof using arkworks’ …","Deserialize a serialized Groth16 verifying key in …","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Poseidon hash function over BN254","","","","","","","","","","Zk login utils","Groth16 SNARK verifier","","","","Zk login structs and utilities","Zk login entrypoints","Size of scalars in the BN254 construction.","Deserialize bytes as an Arkwork representation of a …","Verify proof with a given verifying key in [struct …","Verify Groth16 proof using the serialized form of the …","The output of the Poseidon hash function is a field …","The degree of the Merkle tree used to hash multiple …","Poseidon hash function over BN254. The input vector cannot …","Calculate the poseidon hash of an array of inputs. Each …","Calculate the poseidon hash of the field element inputs. …","A response struct for the salt server.","Convert a big int string to a big endian bytearray.","","","","","Returns the argument unchanged.","Calculate the Sui address based on address seed and …","Calculate the nonce for the given parameters. Nonce is …","Return the OIDC URL for the given parameters. Crucially …","Call the prover backend to get the zkLogin inputs based on …","Call the salt server for the given jwt_token and return …","Return the token exchange URL for the given auth code.","Calculate the Sui address based on address seed and …","Calls U::from(self).","Given a 33-byte public key bytes (flag || pk_bytes), …","","","","","This is a helper function to store a pre-processed version …","","The element e(alpha * G, beta * H) in E::GT.","","","","","The element - delta * H in E::G2, for use in pairings.","Deserialize the prepared verifying key from the serialized …","","","","","","Takes an input ark_groth16::VerifyingKey vk and returns a …","Returns the argument unchanged.","","The element - gamma * H in E::G2, for use in pairings.","Calls U::from(self).","Serialize the prepared verifying key to its vectors form.","","","","","Verify Groth16 proof using the prepared verifying key (see …","The element vk.gamma_abc_g1, aka the …","","See …","","","Deserializer in little endian format. This trait can be …","","Serializer in little endian format. This trait can be …","","A claim consists of value and index_mod_4.","See …","See …","Struct that contains info for a JWK. A list of them for …","Reader struct to parse all fields in a JWK from JSON.","A structed of parsed JWT details, consists of kid, header, …","Key to identify a JWK, consists of iss and kid.","See …","Supported OIDC providers.","The provider config consists of iss string and jwk …","See https://slack.com/.well-known/openid-configuration","Types that can be converted to a vector of F elements. …","See …","All inputs required for the zk login proof verification …","The reader struct for the proving service response.","The struct for zk login proof.","","","","","","","","","Algorithm parameter, …","Convert the Circom G1/G2/GT to arkworks G1/G2/GT","","","","","","","","","","","","","","","","","","","","","Calculate the poseidon hash from selected fields from …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The general deserialize method that takes in customization …","RSA public exponent, …","","","","","","","","","","","","","","","","","","","","","Fetch JWKs from the given provider and return a list of …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the OIDCProvider for the given iss string.","Parse the proving service response and pass in the address …","Parse the proof from a json string.","Parse JWK from the reader struct.","Initialize ZkLoginInputs from the","","Get the address seed string.","Returns the provider config consisting of iss and jwk …","","","","Get the parsed iss string.","Get the parsed kid string.","Get the zk login proof.","","","","Pads a stream of bytes and maps it to a field element","Initialize JWTDetails by parsing header_base64 and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","iss string that identifies the OIDC provider.","iss string that identifies the OIDC provider.","","","","","The JWK url string for the given provider.","kid string that identifies the JWK.","Key type parameter, …","RSA modulus, …","Create a new JwkId.","Create a new provider config.","Read in the Claim and header string. Parse and validate …","Parse the JWK bytes received from the given provider and …","","","","","","","","","","","","","","","","The general serialize method that takes in customization …","","Convert a bigint string to a field element.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Deserializer in little endian format. This trait can be …","","Serializer in little endian format. This trait can be …","","Use the secure global verifying key derived from ceremony.","Use the insecure global verifying key.","Types that can be converted to a vector of F elements. …","Enum to specify the environment to use for verifying keys.","","","","","","","","","","","","The general deserialize method that takes in customization …","","Returns the argument unchanged.","Calls U::from(self).","","","The general serialize method that takes in customization …","","","","","","","","Entry point for the ZkLogin API.","Verify that the given parameters (name, value, aud, iss …","Verify that the given parameters (address_seed and iss) …","Verify a proof against its public inputs using the fixed …","","","","","","A dummy circuit that checks an addition constraint between …","A circuit that checks a parametrized number of R1CS …","","the first input to the circuit","the second input to the circuit","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Create a new instance of the Fibonacci circuit. We have to …","the number of constraints to the circuit","The number of variables to the circuit","","","","","","","","",""],"i":[0,0,8,3,3,3,3,3,8,8,8,8,8,8,8,8,0,0,8,3,8,3,0,8,3,8,3,3,3,8,3,8,3,3,0,8,8,8,3,8,8,8,3,3,3,8,3,8,8,8,3,3,3,3,8,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,3,3,8,8,8,3,8,3,8,3,8,3,0,0,0,28,0,28,29,31,28,29,31,28,28,0,29,31,28,29,31,28,28,29,29,31,31,28,29,31,28,28,29,31,28,29,31,28,29,31,0,28,29,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,0,0,0,0,55,53,54,55,53,54,53,54,55,53,54,55,55,53,53,54,54,55,53,54,0,55,53,54,55,53,54,55,53,54,0,0,55,53,54,0,0,0,0,0,0,0,0,0,0,0,0,0,60,60,60,60,60,0,0,0,0,0,0,0,60,0,60,60,60,60,0,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,58,63,0,0,0,0,0,0,0,63,63,0,0,0,0,63,0,0,63,0,63,0,0,0,67,63,68,69,70,66,64,65,68,65,67,80,63,68,73,69,70,66,64,65,67,80,63,68,73,69,70,66,64,65,66,67,63,68,69,70,66,64,65,67,63,68,69,70,66,64,65,67,68,71,70,67,68,73,69,66,64,65,74,74,74,74,74,68,67,63,68,69,70,67,67,67,63,63,63,68,68,68,69,69,69,70,70,70,0,67,80,63,68,73,69,70,66,64,65,67,80,63,68,73,69,70,66,64,65,63,66,65,68,66,63,66,63,67,63,68,66,66,66,67,63,68,0,66,67,80,63,68,73,69,70,66,64,65,67,80,69,66,64,65,80,67,68,68,67,80,70,0,67,68,69,66,64,65,67,68,73,69,66,64,65,71,71,71,71,0,89,67,63,68,69,70,66,64,65,63,67,80,63,68,73,69,70,66,64,65,67,80,63,68,73,69,70,66,64,65,67,80,63,68,73,69,70,66,64,65,71,67,80,63,68,73,69,70,66,64,65,0,0,0,0,0,0,91,91,0,0,91,91,91,91,91,71,91,74,74,74,74,74,91,91,91,71,71,71,71,89,91,91,91,91,71,0,0,0,0,91,0,0,0,0,0,0,97,97,97,97,101,97,101,97,97,97,101,97,101,97,101,97,101,101,97,97,97,97,101,97,101,97,101,97,101],"f":[0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[3,3],3],[[3,3],3],[[3,3],2],[[3,3],2],[-1,[[4,[-2,-3]]],[],[],5],[-1,[[7,[6]]],[]],[8,[[7,[6]]]],[-1,[[4,[-2,-3]]],[],[],5],[-1,[[7,[6]]],[]],[-1,[[10,[[7,[-2]],9]]],[],11],[8,[[7,[6]]]],[-1,[[10,[[7,[-2]],9]]],[],11],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[8,8],[3,3],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[3,3],12],[[3,3,13],3],[[8,8],13],[[3,3],13],[[],8],[[],3],[3,3],0,[-1,-2,[],[[15,[14]]]],[-1,-2,[],[[15,[14]]]],[[8,8],16],[[3,3],16],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[8,17],18],[[3,17],18],[3,8],[3,8],[-1,-1,[]],[19,3],[-1,-1,[]],[8,[[20,[3]]]],[8,[[21,[3]]]],[-1,-2,[],[]],[-1,-2,[],[]],[3,[[20,[3]]]],[3,13],[3,16],[[3,3],3],[[3,3],3],[[3,3],2],[[3,3],2],[3,3],[[3,3],[[21,[12]]]],[-2,3,[[22,[3]]],[[24,[],[[23,[-1]]]]]],[-1,3,25],[3,[[20,[3]]]],[[3,3],[[2,[13,3]]]],[3,3],[[3,3],3],[[3,3],3],[[3,3],2],[[3,3],2],[-2,3,[[22,[3]]],[[24,[],[[23,[-1]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[3,8],[-1,[[10,[[4,[-2,-3]],[26,[-2]]]]],[],[],5],[-1,[[10,[[4,[-2,-3]],[26,[-2]]]]],[],[],5],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[-1,1],2,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[28,28],[[-1,-2],2,[],[]],0,[[[7,[6]]],[[30,[29]]]],[[[7,[6]]],[[30,[31]]]],[[28,17],18],[[29,17],18],[[31,17],18],[-1,-1,[]],[32,28],[-1,-1,[]],[[[34,[33]]],29],[[[35,[33]]],31],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[7,[6]]],[[10,[[36,[[36,[6]]]],37]]]],[[[7,[6]],[7,[6]],[7,[6]],[7,[6]],[7,[6]],[7,[6]]],[[10,[16,37]]]],0,0,0,[38,39],[40,41],[42,43],[44,45],[32,46],[[[47,[6]]],[[21,[48]]]],[48,49],[48,[[47,[6]]]],[[[47,[6]]],[[21,[50]]]],[50,51],[50,[[47,[6]]]],[39,38],[41,40],[43,42],[45,44],[46,32],[49,48],[51,50],0,[[-1,1],2,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[52,52],[[-1,-2],2,[],[]],0,[[[36,[-1]]],[[10,[52,37]]],[[22,[[7,[6]]]]]],[[52,52],16],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[52,17],18],[31,52],[-1,-1,[]],0,[-1,-2,[],[]],[52,[[10,[[36,[[36,[6]]]],37]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[[52,[7,[28]],29],[[10,[16,37]]]],0,[-1,-2,[],[]],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[7,[6]]],[[30,[53]]]],[[[7,[6]]],[[30,[54]]]],[[55,17],18],[[53,17],18],[[54,17],18],[-1,-1,[]],[56,55],[[[34,[57]]],53],[-1,-1,[]],[[[35,[57]]],54],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,[[[7,[6]]],[[10,[[36,[[36,[6]]]],37]]]],[[58,[7,[6]],[7,[6]]],[[10,[16,37]]]],[[[7,[6]],[7,[6]],[7,[6]],[7,[6]],[7,[6]],[7,[6]]],[[10,[16,37]]]],0,0,[[[36,[56]]],[[10,[56,37]]]],[[[36,[[36,[6]]]]],[[10,[[47,[6]],37]]]],[[[36,[56]]],[[10,[56,37]]]],0,[59,[[10,[[36,[6]],37]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[10,[60]]],61],[[60,17],18],[-1,-1,[]],[[59,59,59,59],[[10,[62,37]]]],[[[7,[6]],19,59],[[10,[62,37]]]],[[63,[7,[6]],19,59,59,59],[[10,[62,37]]]],[[59,19,59,59,59,59],[[10,[64,37]]]],[[59,59],[[10,[62,37]]]],[[63,59,59,59,59],[[10,[62,37]]]],[[59,59],[[10,[[47,[6]],37]]]],[-1,-2,[],[]],[[[7,[6]]],[[10,[[2,[56,56]],37]]]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[-1,-2,[],[]],0,[[-1,1],2,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[58,58],[[-1,-2],2,[],[]],0,[[[36,[-1]]],[[10,[58,37]]],[[22,[[7,[6]]]]]],[[58,58],16],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[58,17],18],[54,58],[-1,-1,[]],[[[35,[57]]],58],0,[-1,-2,[],[]],[58,[[10,[[36,[[36,[6]]]],37]]]],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[[58,[7,[55]],53],[[10,[16,37]]]],0,[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],0,[65,[[10,[[34,[57]],37]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[66,[7,[6]],[7,[6]],19],[[10,[56,37]]]],[67,67],[63,63],[68,68],[69,69],[70,70],[66,66],[64,64],[65,65],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[67,67],12],[[68,68],12],[71,72],[[],70],[-1,[[10,[67]]],61],[-1,[[10,[68]]],61],[-1,[[10,[73]]],61],[-1,[[10,[69]]],61],[-1,[[10,[66]]],61],[-1,[[10,[64]]],61],[-1,[[10,[65]]],61],[-1,[[10,[74,75]]],76],[-1,[[10,[74,75]]],76],[-1,[[10,[74,75]]],76],[-1,[[10,[74,75]]],76],[[-1,77,78],[[10,[74,75]]],76],0,[[67,67],16],[[63,63],16],[[68,68],16],[[69,69],16],[[70,70],16],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[-1,-2],16,[],[]],[[63,79],[[10,[[36,[[2,[67,68]]]],37]]]],[[67,17],18],[[80,17],18],[[63,17],18],[[68,17],18],[[73,17],18],[[69,17],18],[[70,17],18],[[66,17],18],[[64,17],18],[[65,17],18],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[59,[[10,[63,37]]]],[[59,59],[[10,[66,37]]]],[59,[[10,[65,37]]]],[73,[[30,[68]]]],[[64,59],[[10,[66,37]]]],[59,[[10,[63,-1]]],[]],[66,59],[63,80],[[-1,-2],19,[81,82],83],[[-1,-2],19,[81,82],83],[[-1,-2],19,[81,82],83],[66,59],[66,59],[66,65],[[67,-1],2,84],[[63,-1],2,84],[[68,-1],2,84],[[59,6],[[10,[56,37]]]],[66,[[10,[66,37]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,[85,86],[85,86],[85,86],[85,86],0,0,0,0,[[62,62],67],[[59,59],80],[[59,69],[[10,[70,37]]]],[[[7,[6]],63],[[10,[[36,[[2,[67,68]]]],37]]]],[[67,67],[[21,[12]]]],[[68,68],[[21,[12]]]],[[],62],[[],62],[[],62],[[],62],[[67,-1],10,87],[[68,-1],10,87],[[73,-1],10,87],[[69,-1],10,87],[[66,-1],10,87],[[64,-1],10,87],[[65,-1],10,87],[[71,-1],[[10,[2,75]]],88],[[71,-1],[[10,[2,75]]],88],[[71,-1,77],[[10,[2,75]]],88],[[71,77],72],[59,[[10,[56,37]]]],[89,[[21,[[36,[-1]]]]],90],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[63,62],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[-1,27,[]],[71,72],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[-1,-2,[],[]],[-1,-2,[],[]],[91,91],[[-1,-2],2,[],[]],[71,72],[[],91],[-1,[[10,[74,75]]],76],[-1,[[10,[74,75]]],76],[-1,[[10,[74,75]]],76],[-1,[[10,[74,75]]],76],[[-1,77,78],[[10,[74,75]]],76],[[91,17],18],[-1,-1,[]],[-1,-2,[],[]],[[71,-1],[[10,[2,75]]],88],[[71,-1],[[10,[2,75]]],88],[[71,-1,77],[[10,[2,75]]],88],[[71,77],72],[89,[[21,[[36,[-1]]]]],90],[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[71,72],[[66,19,[7,[6]],[92,[67,68]],91],[[10,[2,37]]]],[[[7,[6]],59,59,59,59,59],[[30,[2]]]],[[[7,[6]],59,59],[[30,[2]]]],[[91,[34,[57]],[7,[56]]],[[10,[16,37]]]],[-1,-2,[],[]],0,0,[93,[[10,[94,37]]]],[95,[[10,[96,37]]]],0,0,[[-1,1],2,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[97,[-1]]],[[97,[-1]]],[98,99]],[[-1,-2],2,[],[]],[[[97,[-1]],17],18,[100,99]],[[[101,[-1]],17],18,[100,99]],[-1,-1,[]],[-1,-1,[]],[[[97,[-1]],[102,[-1]]],[[10,[2,103]]],99],[[[101,[-1]],[102,[-1]]],[[10,[2,103]]],99],[-1,-2,[],[]],[-1,-2,[],[]],[[72,-1,-1],[[101,[-1]]],99],0,0,[-1,-2,[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,[[10,[-2]]],[],[]],[-1,27,[]],[-1,27,[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[5,"Private",591],[1,"tuple"],[5,"Fr",0],[5,"BitSlice",592],[10,"BitOrder",593],[1,"u8"],[1,"slice"],[5,"FrRepr",0],[6,"Error",594],[6,"Result",595],[10,"FromByteSlice",594],[6,"Ordering",596],[5,"Choice",597],[1,"char"],[10,"FromIterator",598],[1,"bool"],[5,"Formatter",599],[8,"Result",599],[1,"u64"],[5,"CtOption",597],[6,"Option",600],[10,"Borrow",601],[17,"Item"],[10,"Iterator",602],[10,"RngCore",603],[6,"BitSpanError",604],[5,"TypeId",605],[5,"FieldElement",88],[5,"Proof",88],[8,"FastCryptoResult",606],[5,"VerifyingKey",88],[8,"BlsFr",132],[8,"Bls12_381",607],[5,"Proof",608],[5,"VerifyingKey",608],[5,"Vec",609],[6,"FastCryptoError",606],[8,"Fq12",610],[5,"blst_fp12",611],[8,"Fq2",612],[5,"blst_fp2",611],[8,"Fq6",613],[5,"blst_fp6",611],[8,"Fq",614],[5,"blst_fp",611],[5,"blst_fr",611],[1,"array"],[8,"G1Affine",615],[5,"blst_p1_affine",611],[8,"G2Affine",616],[5,"blst_p2_affine",611],[5,"PreparedVerifyingKey",153],[5,"Proof",179],[5,"VerifyingKey",179],[5,"FieldElement",179],[8,"Bn254Fr",516],[8,"Bn254",516],[5,"PreparedVerifyingKey",249],[1,"str"],[5,"GetSaltResponse",229],[10,"Deserializer",617],[5,"String",618],[6,"OIDCProvider",276],[5,"ZkLoginInputsReader",276],[5,"ZkLoginProof",276],[5,"ZkLoginInputs",276],[5,"JwkId",276],[5,"JWK",276],[5,"Claim",276],[5,"JWTDetails",276],[10,"CanonicalSerialize",516],[1,"usize"],[5,"JWKReader",276],[10,"CanonicalDeserialize",516],[6,"SerializationError",619],[10,"Read",620],[6,"Compress",621],[6,"Validate",621],[5,"Client",622],[5,"ProviderConfig",276],[10,"Hash",623],[10,"Sized",624],[10,"BuildHasher",623],[10,"Hasher",623],[5,"SchemaGenerator",625],[6,"Schema",626],[10,"Serializer",627],[10,"Write",620],[10,"ToConstraintField",516],[10,"Field",628],[6,"ZkLoginEnv",516],[5,"HashMap",629],[8,"CircomG1",556],[8,"G1Affine",630],[8,"CircomG2",556],[8,"G2Affine",630],[5,"DummyCircuit",560],[10,"Clone",631],[10,"PrimeField",632],[10,"Debug",599],[5,"Fibonacci",560],[6,"ConstraintSystemRef",633],[6,"SynthesisError",634]],"b":[[4,"impl-Add%3C%26Fr%3E-for-Fr"],[5,"impl-Add-for-Fr"],[6,"impl-AddAssign-for-Fr"],[7,"impl-AddAssign%3C%26Fr%3E-for-Fr"],[47,"impl-From%3C%26Fr%3E-for-FrRepr"],[48,"impl-From%3CFr%3E-for-FrRepr"],[59,"impl-Mul%3C%26Fr%3E-for-Fr"],[60,"impl-Mul-for-Fr"],[61,"impl-MulAssign-for-Fr"],[62,"impl-MulAssign%3C%26Fr%3E-for-Fr"],[70,"impl-Sub%3C%26Fr%3E-for-Fr"],[71,"impl-Sub-for-Fr"],[72,"impl-SubAssign-for-Fr"],[73,"impl-SubAssign%3C%26Fr%3E-for-Fr"],[263,"impl-From%3C%26VerifyingKey%3E-for-PreparedVerifyingKey"],[265,"impl-From%3C%26VerifyingKey%3CBn%3CConfig%3E%3E%3E-for-PreparedVerifyingKey"]]},\ "sigs_cli":{"doc":"","t":"PPGPPFPPPPPGFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNHOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["BLS12381MinPk","BLS12381MinSig","Command","Ed25519","Keygen","KeygenArguments","Secp256k1","Secp256k1Recoverable","Secp256r1","Secp256r1Recoverable","Sign","SignatureScheme","SigningArguments","VerifiyingArguments","Verify","__clone_box","__clone_box","__clone_box","augment_args","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","command","command","command","command","command_for_update","command_for_update","command_for_update","command_for_update","execute","from","from","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_str","group_id","group_id","group_id","has_subcommand","into","into","into","into","into","main","msg","msg","public_key","scheme","scheme","scheme","secret_key","seed","signature","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip"],"q":[[0,"sigs_cli"],[115,"dyn_clone::sealed"],[116,"clap::builder::command"],[117,"fastcrypto::error"],[118,"core::result"],[119,"clap::parser::matches::arg_matches"],[120,"clap"],[121,"clap::util::id"],[122,"core::option"],[123,"core::any"]],"d":["","","","","Generate a keypair using the signature scheme with a …","","","","","","Sign a message using a secret key using the signature …","","","","Verify the signature against the message and public key …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","The raw message to be signed.","The raw message signed.","Public key to verify the signature.","Name of the signature scheme.","Name of the signature scheme.","Name of the signature scheme.","Hex encoded secret key string used to sign.","Hex encoded 32-byte seed for deterministic key generation. …","Hex encoded signature to be verified.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[13,13,0,13,7,0,13,13,13,13,7,0,0,0,7,4,5,6,4,5,6,4,5,6,7,7,13,7,4,5,6,13,7,4,5,6,4,5,6,4,5,6,7,4,5,6,7,4,5,6,0,13,7,4,5,6,7,4,5,6,7,4,5,6,13,4,5,6,7,13,7,4,5,6,0,5,6,6,4,5,6,5,4,6,4,5,6,13,7,4,5,6,13,7,4,5,6,13,7,4,5,6,7,4,5,6,7,4,5,6,13,7,4,5,6],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[-1,1],2,[]],[[-1,1],2,[]],[[-1,1],2,[]],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[3,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,4],[5,5],[6,6],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[[],3],[7,[[9,[2,8]]]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[10,[[9,[7,11]]]],[10,[[9,[4,11]]]],[10,[[9,[5,11]]]],[10,[[9,[6,11]]]],[10,[[9,[7,11]]]],[10,[[9,[4,11]]]],[10,[[9,[5,11]]]],[10,[[9,[6,11]]]],[12,[[9,[13,-1]]],[]],[[],[[15,[14]]]],[[],[[15,[14]]]],[[],[[15,[14]]]],[12,16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],2],0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,[[9,[-2]]],[],[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[-1,17,[]],[[7,10],[[9,[2,11]]]],[[4,10],[[9,[2,11]]]],[[5,10],[[9,[2,11]]]],[[6,10],[[9,[2,11]]]],[[7,10],[[9,[2,11]]]],[[4,10],[[9,[2,11]]]],[[5,10],[[9,[2,11]]]],[[6,10],[[9,[2,11]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]]],"c":[],"p":[[5,"Private",115],[1,"tuple"],[5,"Command",116],[5,"KeygenArguments",0],[5,"SigningArguments",0],[5,"VerifiyingArguments",0],[6,"Command",0],[6,"FastCryptoError",117],[6,"Result",118],[5,"ArgMatches",119],[8,"Error",120],[1,"str"],[6,"SignatureScheme",0],[5,"Id",121],[6,"Option",122],[1,"bool"],[5,"TypeId",123]],"b":[]},\ diff --git a/docs/src/fastcrypto_tbls/polynomial.rs.html b/docs/src/fastcrypto_tbls/polynomial.rs.html index f036508581..6dc8c3063c 100644 --- a/docs/src/fastcrypto_tbls/polynomial.rs.html +++ b/docs/src/fastcrypto_tbls/polynomial.rs.html @@ -179,6 +179,16 @@ 179 180 181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191
// Copyright (c) 2022, Mysten Labs, Inc.
 // SPDX-License-Identifier: Apache-2.0
 //
@@ -191,6 +201,7 @@
 use fastcrypto::groups::{GroupElement, MultiScalarMul, Scalar};
 use fastcrypto::traits::AllowedRng;
 use serde::{Deserialize, Serialize};
+use std::borrow::Borrow;
 use std::collections::HashSet;
 
 /// Types
@@ -262,21 +273,24 @@
     // Expects exactly t unique shares.
     fn get_lagrange_coefficients_for_c0(
         t: u32,
-        shares: &[Eval<C>],
+        mut shares: impl Iterator<Item = impl Borrow<Eval<C>>>,
     ) -> FastCryptoResult<Vec<C::ScalarType>> {
-        if shares.len() != t as usize {
+        let mut ids_set = HashSet::new();
+        let (shares_size_lower, shares_size_upper) = shares.size_hint();
+        let indices = shares.try_fold(
+            Vec::with_capacity(shares_size_upper.unwrap_or(shares_size_lower)),
+            |mut vec, s| {
+                // Check for duplicates.
+                if !ids_set.insert(s.borrow().index) {
+                    return Err(FastCryptoError::InvalidInput); // expected unique ids
+                }
+                vec.push(C::ScalarType::from(s.borrow().index.get() as u64));
+                Ok(vec)
+            },
+        )?;
+        if indices.len() != t as usize {
             return Err(FastCryptoError::InvalidInput);
         }
-        // Check for duplicates.
-        let mut ids_set = HashSet::new();
-        if !shares.iter().map(|s| &s.index).all(|id| ids_set.insert(id)) {
-            return Err(FastCryptoError::InvalidInput); // expected unique ids
-        }
-
-        let indices = shares
-            .iter()
-            .map(|s| C::ScalarType::from(s.index.get() as u64))
-            .collect::<Vec<_>>();
 
         let full_numerator = indices
             .iter()
@@ -294,13 +308,16 @@
     }
 
     /// Given exactly `t` polynomial evaluations, it will recover the polynomial's constant term.
-    pub fn recover_c0(t: u32, shares: &[Eval<C>]) -> Result<C, FastCryptoError> {
-        let coeffs = Self::get_lagrange_coefficients_for_c0(t, shares)?;
-        let plain_shares = shares.iter().map(|s| s.value).collect::<Vec<_>>();
+    pub fn recover_c0(
+        t: u32,
+        shares: impl Iterator<Item = impl Borrow<Eval<C>>> + Clone,
+    ) -> Result<C, FastCryptoError> {
+        let coeffs = Self::get_lagrange_coefficients_for_c0(t, shares.clone())?;
+        let plain_shares = shares.map(|s| s.borrow().value);
         let res = coeffs
             .iter()
-            .zip(plain_shares.iter())
-            .fold(C::zero(), |acc, (c, s)| acc + (*s * *c));
+            .zip(plain_shares)
+            .fold(C::zero(), |acc, (c, s)| acc + (s * *c));
         Ok(res)
     }
 
@@ -353,9 +370,12 @@
 impl<C: GroupElement + MultiScalarMul> Poly<C> {
     /// Given exactly `t` polynomial evaluations, it will recover the polynomial's
     /// constant term.
-    pub fn recover_c0_msm(t: u32, shares: &[Eval<C>]) -> Result<C, FastCryptoError> {
-        let coeffs = Self::get_lagrange_coefficients_for_c0(t, shares)?;
-        let plain_shares = shares.iter().map(|s| s.value).collect::<Vec<_>>();
+    pub fn recover_c0_msm(
+        t: u32,
+        shares: impl Iterator<Item = impl Borrow<Eval<C>>> + Clone,
+    ) -> Result<C, FastCryptoError> {
+        let coeffs = Self::get_lagrange_coefficients_for_c0(t, shares.clone())?;
+        let plain_shares = shares.map(|s| s.borrow().value).collect::<Vec<_>>();
         let res = C::multi_scalar_mul(&coeffs, &plain_shares).expect("sizes match");
         Ok(res)
     }
diff --git a/docs/src/fastcrypto_tbls/tbls.rs.html b/docs/src/fastcrypto_tbls/tbls.rs.html
index 072b9a24de..804f456bc1 100644
--- a/docs/src/fastcrypto_tbls/tbls.rs.html
+++ b/docs/src/fastcrypto_tbls/tbls.rs.html
@@ -105,14 +105,15 @@
 105
 106
 107
-108
 

// Copyright (c) 2022, Mysten Labs, Inc.
 // SPDX-License-Identifier: Apache-2.0
 //
 // Some of the code below is based on code from https://github.com/celo-org/celo-threshold-bls-rs,
 // modified for our needs.
 
-use crate::dl_verification::{batch_coefficients, get_random_scalars};
+use std::borrow::Borrow;
+
+use crate::dl_verification::{batch_coefficients, get_random_scalars};
 use crate::polynomial::Poly;
 use crate::types::IndexedValue;
 use fastcrypto::error::{FastCryptoError, FastCryptoResult};
@@ -137,20 +138,22 @@
 
     /// Sign a message using the private share/partial key.
     fn partial_sign(share: &Share<Self::Private>, msg: &[u8]) -> PartialSignature<Self::Signature> {
-        Self::partial_sign_batch(&[share.clone()], msg)[0].clone()
+        Self::partial_sign_batch(std::iter::once(share), msg)[0].clone()
     }
 
     /// Sign a message using one of more private share/partial keys.
     fn partial_sign_batch(
-        shares: &[Share<Self::Private>],
+        shares: impl Iterator<Item = impl Borrow<Share<Self::Private>>>,
         msg: &[u8],
     ) -> Vec<PartialSignature<Self::Signature>> {
         let h = Self::Signature::hash_to_group_element(msg);
         shares
-            .iter()
-            .map(|share| PartialSignature {
-                index: share.index,
-                value: h * share.value,
+            .map(|share| {
+                let share = share.borrow();
+                PartialSignature {
+                    index: share.index,
+                    value: h * share.value,
+                }
             })
             .collect()
     }
@@ -171,26 +174,24 @@
     fn partial_verify_batch<R: AllowedRng>(
         vss_pk: &Poly<Self::Public>,
         msg: &[u8],
-        partial_sigs: &[PartialSignature<Self::Signature>],
+        partial_sigs: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>>,
         rng: &mut R,
     ) -> FastCryptoResult<()> {
         assert!(vss_pk.degree() > 0 || !msg.is_empty());
-        if partial_sigs.is_empty() {
+        let (evals_as_scalars, points): (Vec<_>, Vec<_>) = partial_sigs
+            .map(|sig| {
+                let sig = sig.borrow();
+                (Self::Private::from(sig.index.get().into()), sig.value)
+            })
+            .unzip();
+        if points.is_empty() {
             return Ok(());
         }
-        let rs = get_random_scalars::<Self::Private, R>(partial_sigs.len() as u32, rng);
-        let evals_as_scalars = partial_sigs
-            .iter()
-            .map(|e| Self::Private::from(e.index.get().into()))
-            .collect::<Vec<_>>();
+        let rs = get_random_scalars::<Self::Private, R>(points.len() as u32, rng);
         // TODO: should we cache it instead? that would replace t-wide msm with w-wide msm.
         let coeffs = batch_coefficients(&rs, &evals_as_scalars, vss_pk.degree());
         let pk = Self::Public::multi_scalar_mul(&coeffs, vss_pk.as_vec()).expect("sizes match");
-        let aggregated_sig = Self::Signature::multi_scalar_mul(
-            &rs,
-            &partial_sigs.iter().map(|s| s.value).collect::<Vec<_>>(),
-        )
-        .expect("sizes match");
+        let aggregated_sig = Self::Signature::multi_scalar_mul(&rs, &points).expect("sizes match");
 
         Self::verify(&pk, msg, &aggregated_sig)
     }
@@ -198,20 +199,17 @@
     /// Interpolate partial signatures to recover the full signature.
     fn aggregate(
         threshold: u32,
-        partials: &[PartialSignature<Self::Signature>],
+        partials: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>> + Clone,
     ) -> FastCryptoResult<Self::Signature> {
         let unique_partials = partials
-            .iter()
-            .unique_by(|p| p.index)
-            .take(threshold as usize)
-            .cloned()
-            .collect::<Vec<_>>();
-        if unique_partials.len() != threshold as usize {
+            .unique_by(|p| p.borrow().index)
+            .take(threshold as usize);
+        if unique_partials.clone().count() != threshold as usize {
             return Err(FastCryptoError::NotEnoughInputs);
         }
         // No conversion is required since PartialSignature<S> and Eval<S> are different aliases to
         // IndexedValue<S>.
-        Poly::<Self::Signature>::recover_c0_msm(threshold, &unique_partials)
+        Poly::<Self::Signature>::recover_c0_msm(threshold, unique_partials)
     }
 }
 
\ No newline at end of file diff --git a/docs/type.impl/fastcrypto_tbls/polynomial/struct.Poly.js b/docs/type.impl/fastcrypto_tbls/polynomial/struct.Poly.js index 84b2ae2164..66e17dc930 100644 --- a/docs/type.impl/fastcrypto_tbls/polynomial/struct.Poly.js +++ b/docs/type.impl/fastcrypto_tbls/polynomial/struct.Poly.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"fastcrypto_tbls":[["
source§

impl<C> Poly<C>

Vector related operations.

\n
source

pub fn degree(&self) -> u32

Returns the degree of the polynomial

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: GroupElement> Poly<C>

GroupElement operations.

\n
source

pub fn zero() -> Self

Returns a polynomial with the zero element.

\n
source

pub fn add(&mut self, other: &Self)

Performs polynomial addition in place.

\n
source

pub fn eval(&self, i: ShareIndex) -> Eval<C>

Evaluates the polynomial at the specified value.

\n
source

pub fn recover_c0(t: u32, shares: &[Eval<C>]) -> Result<C, FastCryptoError>

Given exactly t polynomial evaluations, it will recover the polynomial’s constant term.

\n
source

pub fn verify_share(\n &self,\n idx: ShareIndex,\n share: &C::ScalarType\n) -> FastCryptoResult<()>

Checks if a given share is valid.

\n
source

pub fn c0(&self) -> &C

Return the constant term of the polynomial.

\n
source

pub fn as_vec(&self) -> &Vec<C>

Returns the coefficients of the polynomial.

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Scalar> Poly<C>

Scalar operations.

\n
source

pub fn rand<R: AllowedRng>(degree: u32, rng: &mut R) -> Self

Returns a new polynomial of the given degree where each coefficients is\nsampled at random from the given RNG.\nIn the context of secret sharing, the threshold is the degree + 1.

\n
source

pub fn commit<P: GroupElement<ScalarType = C>>(&self) -> Poly<P>

Commits the scalar polynomial to the group and returns a polynomial over\nthe group.

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: GroupElement + MultiScalarMul> Poly<C>

source

pub fn recover_c0_msm(t: u32, shares: &[Eval<C>]) -> Result<C, FastCryptoError>

Given exactly t polynomial evaluations, it will recover the polynomial’s\nconstant term.

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> StructuralEq for Poly<C>

","StructuralEq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> From<Vec<C>> for Poly<C>

source§

fn from(c: Vec<C>) -> Self

Converts to this type from the input type.
","From>","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> StructuralPartialEq for Poly<C>

","StructuralPartialEq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<'de, C> Deserialize<'de> for Poly<C>
where\n C: Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where\n __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Clone> Clone for Poly<C>

source§

fn clone(&self) -> Poly<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Debug> Debug for Poly<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: PartialEq> PartialEq for Poly<C>

source§

fn eq(&self, other: &Poly<C>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Eq> Eq for Poly<C>

","Eq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> Serialize for Poly<C>
where\n C: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where\n __S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"]] +"fastcrypto_tbls":[["
source§

impl<C> Poly<C>

Vector related operations.

\n
source

pub fn degree(&self) -> u32

Returns the degree of the polynomial

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: GroupElement> Poly<C>

GroupElement operations.

\n
source

pub fn zero() -> Self

Returns a polynomial with the zero element.

\n
source

pub fn add(&mut self, other: &Self)

Performs polynomial addition in place.

\n
source

pub fn eval(&self, i: ShareIndex) -> Eval<C>

Evaluates the polynomial at the specified value.

\n
source

pub fn recover_c0(\n t: u32,\n shares: impl Iterator<Item = impl Borrow<Eval<C>>> + Clone\n) -> Result<C, FastCryptoError>

Given exactly t polynomial evaluations, it will recover the polynomial’s constant term.

\n
source

pub fn verify_share(\n &self,\n idx: ShareIndex,\n share: &C::ScalarType\n) -> FastCryptoResult<()>

Checks if a given share is valid.

\n
source

pub fn c0(&self) -> &C

Return the constant term of the polynomial.

\n
source

pub fn as_vec(&self) -> &Vec<C>

Returns the coefficients of the polynomial.

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Scalar> Poly<C>

Scalar operations.

\n
source

pub fn rand<R: AllowedRng>(degree: u32, rng: &mut R) -> Self

Returns a new polynomial of the given degree where each coefficients is\nsampled at random from the given RNG.\nIn the context of secret sharing, the threshold is the degree + 1.

\n
source

pub fn commit<P: GroupElement<ScalarType = C>>(&self) -> Poly<P>

Commits the scalar polynomial to the group and returns a polynomial over\nthe group.

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: GroupElement + MultiScalarMul> Poly<C>

source

pub fn recover_c0_msm(\n t: u32,\n shares: impl Iterator<Item = impl Borrow<Eval<C>>> + Clone\n) -> Result<C, FastCryptoError>

Given exactly t polynomial evaluations, it will recover the polynomial’s\nconstant term.

\n
",0,"fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> StructuralEq for Poly<C>

","StructuralEq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> From<Vec<C>> for Poly<C>

source§

fn from(c: Vec<C>) -> Self

Converts to this type from the input type.
","From>","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> StructuralPartialEq for Poly<C>

","StructuralPartialEq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<'de, C> Deserialize<'de> for Poly<C>
where\n C: Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where\n __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Clone> Clone for Poly<C>

source§

fn clone(&self) -> Poly<C>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
","Clone","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Debug> Debug for Poly<C>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
","Debug","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: PartialEq> PartialEq for Poly<C>

source§

fn eq(&self, other: &Poly<C>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C: Eq> Eq for Poly<C>

","Eq","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"],["
source§

impl<C> Serialize for Poly<C>
where\n C: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where\n __S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","fastcrypto_tbls::polynomial::PrivatePoly","fastcrypto_tbls::polynomial::PublicPoly"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/type.impl/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.js b/docs/type.impl/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.js index 6a70a7b8d5..055e20074f 100644 --- a/docs/type.impl/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.js +++ b/docs/type.impl/fastcrypto_tbls/types/struct.ThresholdBls12381MinSig.js @@ -1,3 +1,3 @@ (function() {var type_impls = { -"fastcrypto_tbls":[["
source§

impl ThresholdBls for ThresholdBls12381MinSig

§

type Private = Scalar

§

type Public = G2Element

Public represents the group over which the public keys are represented.
§

type Signature = G1Element

Signature represents the group over which the signatures are represented.
source§

fn verify(\n pk: &Self::Public,\n msg: &[u8],\n sig: &Self::Signature\n) -> FastCryptoResult<()>

Verify a signature on a given message. This is standard BLS signature verification\nover the used curve construction.
source§

fn partial_sign(\n share: &Share<Self::Private>,\n msg: &[u8]\n) -> PartialSignature<Self::Signature>

Sign a message using the private share/partial key.
source§

fn partial_sign_batch(\n shares: &[Share<Self::Private>],\n msg: &[u8]\n) -> Vec<PartialSignature<Self::Signature>>

Sign a message using one of more private share/partial keys.
source§

fn partial_verify(\n vss_pk: &Poly<Self::Public>,\n msg: &[u8],\n partial_sig: &PartialSignature<Self::Signature>\n) -> FastCryptoResult<()>

Verify a signature done by a partial key holder.
source§

fn partial_verify_batch<R: AllowedRng>(\n vss_pk: &Poly<Self::Public>,\n msg: &[u8],\n partial_sigs: &[PartialSignature<Self::Signature>],\n rng: &mut R\n) -> FastCryptoResult<()>

Verify a set of signatures done by a partial key holder.\nRandomly check if \\sum r_i sig_i is a valid signature with public key \\sum r_i p(i) G\nwhere r_i are random scalars, and p(i) are points on the polynomial.
source§

fn aggregate(\n threshold: u32,\n partials: &[PartialSignature<Self::Signature>]\n) -> FastCryptoResult<Self::Signature>

Interpolate partial signatures to recover the full signature.
","ThresholdBls","fastcrypto_tbls::types::PrivateBlsKey","fastcrypto_tbls::types::PublicBlsKey","fastcrypto_tbls::types::Signature"]] +"fastcrypto_tbls":[["
source§

impl ThresholdBls for ThresholdBls12381MinSig

§

type Private = Scalar

§

type Public = G2Element

Public represents the group over which the public keys are represented.
§

type Signature = G1Element

Signature represents the group over which the signatures are represented.
source§

fn verify(\n pk: &Self::Public,\n msg: &[u8],\n sig: &Self::Signature\n) -> FastCryptoResult<()>

Verify a signature on a given message. This is standard BLS signature verification\nover the used curve construction.
source§

fn partial_sign(\n share: &Share<Self::Private>,\n msg: &[u8]\n) -> PartialSignature<Self::Signature>

Sign a message using the private share/partial key.
source§

fn partial_sign_batch(\n shares: impl Iterator<Item = impl Borrow<Share<Self::Private>>>,\n msg: &[u8]\n) -> Vec<PartialSignature<Self::Signature>>

Sign a message using one of more private share/partial keys.
source§

fn partial_verify(\n vss_pk: &Poly<Self::Public>,\n msg: &[u8],\n partial_sig: &PartialSignature<Self::Signature>\n) -> FastCryptoResult<()>

Verify a signature done by a partial key holder.
source§

fn partial_verify_batch<R: AllowedRng>(\n vss_pk: &Poly<Self::Public>,\n msg: &[u8],\n partial_sigs: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>>,\n rng: &mut R\n) -> FastCryptoResult<()>

Verify a set of signatures done by a partial key holder.\nRandomly check if \\sum r_i sig_i is a valid signature with public key \\sum r_i p(i) G\nwhere r_i are random scalars, and p(i) are points on the polynomial.
source§

fn aggregate(\n threshold: u32,\n partials: impl Iterator<Item = impl Borrow<PartialSignature<Self::Signature>>> + Clone\n) -> FastCryptoResult<Self::Signature>

Interpolate partial signatures to recover the full signature.
","ThresholdBls","fastcrypto_tbls::types::PrivateBlsKey","fastcrypto_tbls::types::PublicBlsKey","fastcrypto_tbls::types::Signature"]] };if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file