aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2017-09-24 17:19:09 -0400
committerJack Lloyd <[email protected]>2017-09-24 17:56:10 -0400
commit0272dce7955951de74189568c43123b386445531 (patch)
treec89bdf47f1f1d7dda29ac3d53a72dfa8ce418231
parentf53db790a5a2a7ffb770199bcf42fcdcf948e737 (diff)
Better tests for SIV
Correct errors in the AEAD tests that assumed process/update always return something - that isn't true for SIV Minor optimizations in CMAC and CTR to cache the block size instead of making a zillion virtual calls for it. Generalize SIV slightly to where it could support a non-128 bit cipher, but don't pull the trigger on it since I can't find any implementations to crosscheck with.
-rw-r--r--doc/manual/symmetric_crypto.rst2
-rw-r--r--src/lib/mac/cmac/cmac.cpp10
-rw-r--r--src/lib/mac/cmac/cmac.h3
-rw-r--r--src/lib/modes/aead/siv/siv.cpp50
-rw-r--r--src/lib/modes/aead/siv/siv.h5
-rw-r--r--src/lib/stream/ctr/ctr.cpp25
-rw-r--r--src/lib/stream/ctr/ctr.h1
-rw-r--r--src/tests/data/aead/siv.vec1601
-rw-r--r--src/tests/test_aead.cpp42
9 files changed, 1687 insertions, 52 deletions
diff --git a/doc/manual/symmetric_crypto.rst b/doc/manual/symmetric_crypto.rst
index fb29c9c9f..dd4c8f4e8 100644
--- a/doc/manual/symmetric_crypto.rst
+++ b/doc/manual/symmetric_crypto.rst
@@ -284,7 +284,7 @@ using :cpp:class:`AEAD_Filter` (a subclass of :cpp:class:`Keyed_Filter` which
will be returned by :cpp:func:`get_cipher` if the named cipher is an AEAD mode).
AEAD modes currently available include GCM, OCB, EAX, SIV and CCM. All
-support a 128-bit block cipher such as AES. EAX and SIV also support
+support a 128-bit block cipher such as AES. EAX and OCB also support
256 and 512 bit block ciphers.
.. cpp:class:: AEAD_Mode
diff --git a/src/lib/mac/cmac/cmac.cpp b/src/lib/mac/cmac/cmac.cpp
index 665bfe3c0..9e0a01853 100644
--- a/src/lib/mac/cmac/cmac.cpp
+++ b/src/lib/mac/cmac/cmac.cpp
@@ -116,13 +116,15 @@ MessageAuthenticationCode* CMAC::clone() const
/*
* CMAC Constructor
*/
-CMAC::CMAC(BlockCipher* cipher) : m_cipher(cipher)
+CMAC::CMAC(BlockCipher* cipher) :
+ m_cipher(cipher),
+ m_block_size(m_cipher->block_size())
{
- if(m_cipher->block_size() != 8 && m_cipher->block_size() != 16 &&
- m_cipher->block_size() != 32 && m_cipher->block_size() != 64)
+ if(m_block_size != 8 && m_block_size != 16 &&
+ m_block_size != 32 && m_block_size != 64)
{
throw Invalid_Argument("CMAC cannot use the " +
- std::to_string(m_cipher->block_size() * 8) +
+ std::to_string(m_block_size * 8) +
" bit cipher " + m_cipher->name());
}
diff --git a/src/lib/mac/cmac/cmac.h b/src/lib/mac/cmac/cmac.h
index 7c81272e8..9867c7d0e 100644
--- a/src/lib/mac/cmac/cmac.h
+++ b/src/lib/mac/cmac/cmac.h
@@ -20,7 +20,7 @@ class BOTAN_PUBLIC_API(2,0) CMAC final : public MessageAuthenticationCode
{
public:
std::string name() const override;
- size_t output_length() const override { return m_cipher->block_size(); }
+ size_t output_length() const override { return m_block_size; }
MessageAuthenticationCode* clone() const override;
void clear() override;
@@ -50,6 +50,7 @@ class BOTAN_PUBLIC_API(2,0) CMAC final : public MessageAuthenticationCode
std::unique_ptr<BlockCipher> m_cipher;
secure_vector<uint8_t> m_buffer, m_state, m_B, m_P;
+ const size_t m_block_size;
size_t m_position;
};
diff --git a/src/lib/modes/aead/siv/siv.cpp b/src/lib/modes/aead/siv/siv.cpp
index 1ddfd4d88..8b2cc4ef0 100644
--- a/src/lib/modes/aead/siv/siv.cpp
+++ b/src/lib/modes/aead/siv/siv.cpp
@@ -1,6 +1,6 @@
/*
* SIV Mode Encryption
-* (C) 2013 Jack Lloyd
+* (C) 2013,2017 Jack Lloyd
* (C) 2016 Daniel Neus, Rohde & Schwarz Cybersecurity
*
* Botan is released under the Simplified BSD License (see license.txt)
@@ -17,7 +17,8 @@ namespace Botan {
SIV_Mode::SIV_Mode(BlockCipher* cipher) :
m_name(cipher->name() + "/SIV"),
m_ctr(new CTR_BE(cipher->clone())),
- m_cmac(new CMAC(cipher))
+ m_mac(new CMAC(cipher)),
+ m_bs(cipher->block_size())
{
if(cipher->block_size() != 16)
throw Invalid_Argument("SIV requires a 128 bit block cipher");
@@ -31,7 +32,7 @@ SIV_Mode::~SIV_Mode()
void SIV_Mode::clear()
{
m_ctr->clear();
- m_cmac->clear();
+ m_mac->clear();
reset();
}
@@ -65,23 +66,27 @@ size_t SIV_Mode::update_granularity() const
Key_Length_Specification SIV_Mode::key_spec() const
{
- return m_cmac->key_spec().multiple(2);
+ return m_mac->key_spec().multiple(2);
}
void SIV_Mode::key_schedule(const uint8_t key[], size_t length)
{
const size_t keylen = length / 2;
- m_cmac->set_key(key, keylen);
+ m_mac->set_key(key, keylen);
m_ctr->set_key(key + keylen, keylen);
m_ad_macs.clear();
}
void SIV_Mode::set_associated_data_n(size_t n, const uint8_t ad[], size_t length)
{
+ const size_t max_ads = block_size() * 8 - 2;
+ if(n > max_ads)
+ throw Invalid_Argument(name() + " allows no more than " + std::to_string(max_ads) + " ADs");
+
if(n >= m_ad_macs.size())
m_ad_macs.resize(n+1);
- m_ad_macs[n] = m_cmac->process(ad, length);
+ m_ad_macs[n] = m_mac->process(ad, length);
}
void SIV_Mode::start_msg(const uint8_t nonce[], size_t nonce_len)
@@ -90,7 +95,7 @@ void SIV_Mode::start_msg(const uint8_t nonce[], size_t nonce_len)
throw Invalid_IV_Length(name(), nonce_len);
if(nonce_len)
- m_nonce = m_cmac->process(nonce, nonce_len);
+ m_nonce = m_mac->process(nonce, nonce_len);
else
m_nonce.clear();
@@ -106,9 +111,9 @@ size_t SIV_Mode::process(uint8_t buf[], size_t sz)
secure_vector<uint8_t> SIV_Mode::S2V(const uint8_t* text, size_t text_len)
{
- const uint8_t zero[16] = { 0 };
+ const std::vector<uint8_t> zeros(block_size());
- secure_vector<uint8_t> V = m_cmac->process(zero, 16);
+ secure_vector<uint8_t> V = m_mac->process(zeros.data(), zeros.size());
for(size_t i = 0; i != m_ad_macs.size(); ++i)
{
@@ -122,25 +127,25 @@ secure_vector<uint8_t> SIV_Mode::S2V(const uint8_t* text, size_t text_len)
V ^= m_nonce;
}
- if(text_len < 16)
+ if(text_len < block_size())
{
poly_double_n(V.data(), V.size());
xor_buf(V.data(), text, text_len);
V[text_len] ^= 0x80;
- return m_cmac->process(V);
+ return m_mac->process(V);
}
- m_cmac->update(text, text_len - 16);
- xor_buf(V.data(), &text[text_len - 16], 16);
- m_cmac->update(V);
+ m_mac->update(text, text_len - block_size());
+ xor_buf(V.data(), &text[text_len - block_size()], block_size());
+ m_mac->update(V);
- return m_cmac->final();
+ return m_mac->final();
}
void SIV_Mode::set_ctr_iv(secure_vector<uint8_t> V)
{
- V[8] &= 0x7F;
- V[12] &= 0x7F;
+ V[m_bs-8] &= 0x7F;
+ V[m_bs-4] &= 0x7F;
ctr().set_iv(V.data(), V.size());
}
@@ -150,8 +155,9 @@ void SIV_Encryption::finish(secure_vector<uint8_t>& buffer, size_t offset)
BOTAN_ASSERT(buffer.size() >= offset, "Offset is sane");
buffer.insert(buffer.begin() + offset, msg_buf().begin(), msg_buf().end());
+ msg_buf().clear();
- secure_vector<uint8_t> V = S2V(buffer.data() + offset, buffer.size() - offset);
+ const secure_vector<uint8_t> V = S2V(buffer.data() + offset, buffer.size() - offset);
buffer.insert(buffer.begin() + offset, V.begin(), V.end());
@@ -164,12 +170,14 @@ void SIV_Decryption::finish(secure_vector<uint8_t>& buffer, size_t offset)
BOTAN_ASSERT(buffer.size() >= offset, "Offset is sane");
buffer.insert(buffer.begin() + offset, msg_buf().begin(), msg_buf().end());
+ msg_buf().clear();
const size_t sz = buffer.size() - offset;
BOTAN_ASSERT(sz >= tag_size(), "We have the tag");
- secure_vector<uint8_t> V(buffer.data() + offset, buffer.data() + offset + 16);
+ secure_vector<uint8_t> V(buffer.data() + offset,
+ buffer.data() + offset + block_size());
set_ctr_iv(V);
@@ -177,9 +185,9 @@ void SIV_Decryption::finish(secure_vector<uint8_t>& buffer, size_t offset)
buffer.data() + offset,
buffer.size() - offset - V.size());
- secure_vector<uint8_t> T = S2V(buffer.data() + offset, buffer.size() - offset - V.size());
+ const secure_vector<uint8_t> T = S2V(buffer.data() + offset, buffer.size() - offset - V.size());
- if(T != V)
+ if(!constant_time_compare(T.data(), V.data(), T.size()))
throw Integrity_Failure("SIV tag check failed");
buffer.resize(buffer.size() - tag_size());
diff --git a/src/lib/modes/aead/siv/siv.h b/src/lib/modes/aead/siv/siv.h
index 255e4a277..098aa1f38 100644
--- a/src/lib/modes/aead/siv/siv.h
+++ b/src/lib/modes/aead/siv/siv.h
@@ -57,6 +57,8 @@ class BOTAN_PUBLIC_API(2,0) SIV_Mode : public AEAD_Mode
~SIV_Mode();
+ size_t block_size() const { return m_bs; }
+
StreamCipher& ctr() { return *m_ctr; }
void set_ctr_iv(secure_vector<uint8_t> V);
@@ -71,9 +73,10 @@ class BOTAN_PUBLIC_API(2,0) SIV_Mode : public AEAD_Mode
const std::string m_name;
std::unique_ptr<StreamCipher> m_ctr;
- std::unique_ptr<MessageAuthenticationCode> m_cmac;
+ std::unique_ptr<MessageAuthenticationCode> m_mac;
secure_vector<uint8_t> m_nonce, m_msg_buf;
std::vector<secure_vector<uint8_t>> m_ad_macs;
+ const size_t m_bs;
};
/**
diff --git a/src/lib/stream/ctr/ctr.cpp b/src/lib/stream/ctr/ctr.cpp
index 9ab1a38c2..e81373a82 100644
--- a/src/lib/stream/ctr/ctr.cpp
+++ b/src/lib/stream/ctr/ctr.cpp
@@ -14,7 +14,8 @@ CTR_BE::CTR_BE(BlockCipher* ciph) :
m_counter(m_cipher->parallel_bytes()),
m_pad(m_counter.size()),
m_iv(m_cipher->block_size()),
- m_ctr_size(m_cipher->block_size()),
+ m_block_size(m_cipher->block_size()),
+ m_ctr_size(m_block_size),
m_pad_pos(0)
{
}
@@ -24,11 +25,11 @@ CTR_BE::CTR_BE(BlockCipher* cipher, size_t ctr_size) :
m_counter(m_cipher->parallel_bytes()),
m_pad(m_counter.size()),
m_iv(m_cipher->block_size()),
+ m_block_size(m_cipher->block_size()),
m_ctr_size(ctr_size),
m_pad_pos(0)
{
- //BOTAN_CHECK_ARG(m_ctr_size > 0 && m_ctr_size <= cipher->block_size(), "Invalid CTR size");
- if(m_ctr_size == 0 || m_ctr_size > m_cipher->block_size())
+ if(m_ctr_size == 0 || m_ctr_size > m_block_size)
throw Invalid_Argument("Invalid CTR-BE counter size");
}
@@ -84,8 +85,7 @@ void CTR_BE::set_iv(const uint8_t iv[], size_t iv_len)
*/
void CTR_BE::increment_counter()
{
- const size_t bs = m_cipher->block_size();
- const size_t n_wide = m_counter.size() / bs;
+ const size_t n_wide = m_counter.size() / m_block_size;
add_counter(n_wide);
@@ -95,8 +95,7 @@ void CTR_BE::increment_counter()
void CTR_BE::add_counter(const uint64_t counter)
{
- const size_t bs = m_cipher->block_size();
- const size_t n_wide = m_counter.size() / bs;
+ const size_t n_wide = m_counter.size() / m_block_size;
for(size_t i = 0; i != n_wide; ++i)
{
@@ -104,7 +103,7 @@ void CTR_BE::add_counter(const uint64_t counter)
uint16_t carry = static_cast<uint8_t>(local_counter);
for(size_t j = 0; (carry || local_counter) && j != m_ctr_size; ++j)
{
- const size_t off = i*bs + (bs-1-j);
+ const size_t off = i*m_block_size + (m_block_size-1-j);
const uint16_t cnt = static_cast<uint16_t>(m_counter[off]) + carry;
m_counter[off] = static_cast<uint8_t>(cnt);
local_counter = (local_counter >> 8);
@@ -115,8 +114,7 @@ void CTR_BE::add_counter(const uint64_t counter)
void CTR_BE::seek(uint64_t offset)
{
- const size_t bs = m_cipher->block_size();
- const size_t n_wide = m_counter.size() / bs;
+ const size_t n_wide = m_counter.size() / m_block_size;
const uint64_t base_counter = n_wide * (offset / m_counter.size());
zeroise(m_counter);
@@ -125,10 +123,13 @@ void CTR_BE::seek(uint64_t offset)
// Set m_counter blocks to IV, IV + 1, ... IV + n
for(size_t i = 1; i != n_wide; ++i)
{
- buffer_insert(m_counter, i*bs, &m_counter[(i-1)*bs], bs);
+ buffer_insert(m_counter,
+ i*m_block_size,
+ &m_counter[(i-1)*m_block_size],
+ m_block_size);
for(size_t j = 0; j != m_ctr_size; ++j)
- if(++m_counter[i*bs + (bs - 1 - j)])
+ if(++m_counter[i*m_block_size + (m_block_size - 1 - j)])
break;
}
diff --git a/src/lib/stream/ctr/ctr.h b/src/lib/stream/ctr/ctr.h
index e7b88bf5e..e174848b8 100644
--- a/src/lib/stream/ctr/ctr.h
+++ b/src/lib/stream/ctr/ctr.h
@@ -54,6 +54,7 @@ class BOTAN_PUBLIC_API(2,0) CTR_BE final : public StreamCipher
std::unique_ptr<BlockCipher> m_cipher;
secure_vector<uint8_t> m_counter, m_pad;
std::vector<uint8_t> m_iv;
+ const size_t m_block_size;
size_t m_ctr_size;
size_t m_pad_pos;
};
diff --git a/src/tests/data/aead/siv.vec b/src/tests/data/aead/siv.vec
index 7e527eedc..17e2b1660 100644
--- a/src/tests/data/aead/siv.vec
+++ b/src/tests/data/aead/siv.vec
@@ -10,3 +10,1604 @@ Key = 7F7E7D7C7B7A79787776757473727170404142434445464748494A4B4C4D4E4F
AD = 00112233445566778899AABBCCDDEEFFDEADDADADEADDADAFFEEDDCCBBAA99887766554433221100
Nonce = 09F911029D74E35BD84156C5635688C1
Out = E21A9D0FE3BD3ED189C71F29B24C39E1E40B9BAB82D428D0A9B392F13EA14C9B4433F393595A8E031F032350F50D2B21825B3EE64958103BD8445C3F48E5CF
+
+# From https://github.com/cryptomator/siv-mode
+Key = 077840b2b53b2a15e284e6cbf1b8b0eeb0aa55951c34cf252e7f9f55194270a4
+In =
+AD = b52b167e9be05ee0197d7ab0ca6b2f6f0d1fad747db4f39822652ec26947a92d480437aaa6cbebf5f9f1006afeb13ee820f6df2b80196cd8f091b11ccdb097ae25a23f8c3293c7fb8dbfdf080881a41871e9f61ad7ef4060fc65c2ba5147
+Out = 8ce27d70831bfecf17fb82e39f88ade7
+
+Key = 2a83f610a1d177ec2e008980dc02a66eeb75af6cba44a4e09f3d93ea1fa28867
+In =
+AD =
+Out = 6bc5ca863229667518a9abbd5ae6c1d5
+
+Key = f6de9819311bd3de0bd198709dea9fdfb82e8044e400132a90ffe9a9de814475
+In =
+AD = 7bd36f2409fcd00f5ccd9af2e3f57645f7c53f39f7adcbf07a0e43307e55a2534749482020276c8a204422cd26bf7e8988380d94ff12c518fd202c2a1b00b3
+Out = 4c0ec2cc6159b117db986d9aa5b4a011
+
+Key = 3ed3da92fe8355679addb974419e1289bdd4f0ddc3b95d17c9a9adf9cab54d4f
+In =
+AD =
+Out = 348e2f4f8ffb946e05db7c3b5c72ccd0
+
+Key = 90e590aeca1970edd19fe50fa691ae12342c497a22c24faa9e87192e3400fbce
+In = 44
+AD = 2ddf87ac975d0c
+Out = 7b0ddd88743943c644c1d1a218a31edf2e
+
+Key = 668c74965b2f699d9b7f86cf13fe6db832ab907530a426e67e780312898a3b2f
+In = 05
+AD =
+Out = df6c2c988b4e2f83a849e8b7b8fa2fdf46
+
+Key = b42b6f969e9f73142da7cc1143d3854b991a74492f7c0e7eb1a53cd74b26c0b8
+In = 00
+AD = 83f9ae87b265edfcaf24ff9a560941070b49d315f174eee47344678455d62abac4170eb213ef05463d9645f4dbdf52741d497b587ca9bbf1fd0174eae980fba94c
+Out = 3f1d60e9b114093b2da1a8bba50a62746b
+
+Key = b1df5c321f8628e05fa1a450f39a485997afdb90fc497b0cdf5c25979413392f
+In = 00
+AD =
+Out = 554230a62e6605ceec9774210c3f5af5d5
+
+Key = f5a7423c21928efb878fcc87786a5554f0ec314d94096be6bac6e56dfe496510
+In = cc59
+AD = 491453bd8efdb5fd83147b64af0821fd9debe9956505ec0e6c3b10a710e70ab20d2cd121557480f59ff73f5d4d1b04e6a18f49c7840b2bfb70cb567b7ce330897c0c861722e584764d84dd93c420da3b
+Out = 1ad8a93cc79cebd8f661d71f20b45daf6181
+
+Key = 07ff843948e8470a0022dd26aa2184bdfed07836ebcc019b3cb9a5d9e8eb482a
+In = 88e2
+AD =
+Out = 58c97cfdd7def06e43cdb568af8c7057c8f1
+
+Key = c5a907b45c33c2072e62f6d8104689f8701474b4eb42e0a2c04f65c761fd06bf
+In = 0000
+AD = a94163cf131a4da611091ce5b521d3016f846e33608df1ab07bfb00d9fa80eb12801933cbf463c66b8a13c7dac1912858b7c070e516346ed48bd3f01b273460ee85da529d3eb1e81b293a37710d0e303a7461d30479aa27dd7d044f1edc0
+Out = d6286dac2dd70e54846fd38680e77221a1be
+
+Key = f3c0bcfcc397a9beb07df81e970480409809d6f7580a3d85ae4485768c6de7e9
+In = 0000
+AD =
+Out = bd7755e9b5f4b83a36ab6936d6377cb88125
+
+Key = adb49b3c2d525b6f822c0d4434c595b5502846aa9da58f1d293f81e7357ded99
+In = 1646f8
+AD = 719cc011f3f1b641cc
+Out = b203bffeaa99474de66e07c85ee3ed2337b86b
+
+Key = de92a0d3dc2906a7a486c224b28507f69a11a211da12e74a2c2153da6a378a3c
+In = f58bc0
+AD =
+Out = 21775a807524f4fb96cae236b93e3a70e6fe2c
+
+Key = 84c5a03d8ef3cb07574f0bbd6fd75556a7f4d4c9d8a41d4e2ec4dcaadee27e6a
+In = 000000
+AD = f0fd345e1b7161b76ae168c9b2c84ca7a067dcf9da1e524a9bfd888103a18e6df20de3e575fdbaf97e0701f5a3485a9ae4f9d577086dbf39139e73ab3a4c11bfa6d93e5f13ffdaaf3d64e4d28d0f2eeef4c973b42d68b277ffe6a8a922d312116a2c02a444d2baca2d169f4a1f501fb9972d3a2df900656626
+Out = 107364cb3ad60732793e0ea4c74088b268b7d9
+
+Key = d380b4fe512c6d283623e1459d598ac7a67e1cae82c98aa2ff570468cf448161
+In = 000000
+AD =
+Out = ad5f1eaef6cd62254150c636746b8039a97ce8
+
+Key = c5525bea46dbbbe0874b2fe7b17e64fbba6cd933a07e069e0cf2c9a100e571ea
+In = db529bec
+AD = 4e209733ff39680099f638f3e830eb660efd93aa2cfc048cfa1bdf4f34cfcaad0514ca330e1214c143203b4d44da411e963660efb527657573eed82ede2f26d0ab116e267504642410fbd513ca3465b7c6c020602279e8cdea
+Out = a6be9795b564883f3600dcfe1dd2bc3f65a23aef
+
+Key = 1bfeb4db0fe5fd4d4b0f334589bf6573c2803573df3c2c8a6c4088a862b733b7
+In = 756a798c
+AD =
+Out = 0cf6be7b226426148e9f0b7cf8dcf436e8837f35
+
+Key = aee94dbe6a43581a14595d6a030873dd29146caf451b9f75aaeef6d2f9f61b49
+In = 00000000
+AD = ced111f8cd63042e632707a72be66c01c1b856e4c368837d962158bb954ca92d2593762dc6fdbc7dc8b40eec7323a84edd15a958d8ede4a63c89da2d889c6b9a3e8b6c0ed9e47fa2add5010deac690c47e4f83dc9d971c
+Out = 6ff63fd1cf82e323e29f0d584afba33cc7d7521a
+
+Key = c377e79039d83f65d050e7f76f27d8dead996cac60c9ba696f358ec0633436a5
+In = 00000000
+AD =
+Out = 6878a2399e5fa6c932dc7a3e813449ae06107462
+
+Key = 8a750bc6ceb9b89af01052e400adb97bed540e2975054429ee945cc7a2189b16
+In = 659989efb5
+AD = 4c5908d71bd6482c23238c2eeb9cab255d4940018b92ba10236d78033bc19d1f0f6e4f6c9c2d32e7cab57f9aaadddc92b3f78467a989361c446bd3464b06dbff1ec8f56c1700a1e988633d4dbf927496
+Out = ca50eccf7041f6522b30f4dca8551335975770a29e
+
+Key = 53dd5718694f878691d09cbe7ee4c3472745c84bc24ace61ad04f1173dedbf5a
+In = ac19873de0
+AD =
+Out = 8bcccfc5dbbae3e77eb12503722034654e91673611
+
+Key = de26f1fe80600ecb5a7de8e6d6bb82ed8bdf01127b0116f80b7b7e96b35a4574
+In = 0000000000
+AD = ae1ebcbfe6391535f96064a5b9e69aedc9a5d01c5a2e36072210974d6ab6e10df1167db228a6d04a30b657481e1bbe85de4e119bdf21b78fb67ba74c366077434c5ef2c647ca9815a6eec52ac20881aeb135bcc7cdee7d9cbd013f7dbc5f36f7dd71c582767bb1
+Out = 022cec55f38a1f69f1f43e24c41401cef4758697f1
+
+Key = 7aa08f0e3807c6bdc7a784d8380f8a9fcc76ae381a5582114c1de68a1d35ea61
+In = 0000000000
+AD =
+Out = dc75cbd0bc637f0a210acca882466f6569cc996f94
+
+Key = ad3e4b638a543b3a870304808494c4ae6fe4925dc1287dd55eeb097ec713c2a1
+In = 300e34e28e09
+AD = 6a6300d4f03398313b8fffd4f79ee8
+Out = 2da060f68f5c06823c7cf7a513f706892c7e55dcebac
+
+Key = 805efe50b125df39c01cdac30a2b9ba7e10fb376d5bbd6a729cf9df17e613bcb
+In = 2b244129fdcc
+AD =
+Out = 8c8ae391ca7bf493403916778eefd28e2a6901425530
+
+Key = cdc7805e78839a94d5e4b823dfd0909953ccf9ada875e3cc97d230b1c29da7e9
+In = 000000000000
+AD = a9a381fce743501fb7b3f9eee7b54a92fb47f0835c2030c5ba60063de085a966cf9911125bd75e8ab5
+Out = f7d538abd6cef62e28d8b0761d646e703356ac71634a
+
+Key = 0f222933406d2139fa732d31c9cfaffdeece34962b252b8e6c1c89d4142adab6
+In = 000000000000
+AD =
+Out = 5c429bd4fb488b176c7ffe8875eee0666cc87130482d
+
+Key = 0ff4e31c704fcdb6c959d2b4868e24eeb54eab20cf36d849a2918e50e66d23b7
+In = ddd1bb20e38b99
+AD = bf030625b8da742c2496e22c85a957cc838fbd8b8a663efd784fe49a0c4080ead7c8cb12e1853e9aa2642ce671f709e80bd5d9dc7681a81437e3bd010f50ba54b3d80c81c547b1e9a2235d0a28764296119550e17ecbb06336779671515ef2973f8e80dbd2feef64a1c47041aaf068
+Out = f346e974cdfedc5c01252e8b350e8201cb8db6cfccd17a
+
+Key = 98c10d72f213d26de01962a653ad5cc11253d093ed92d5d1451008b4777914b0
+In = caae3fd4102744
+AD =
+Out = 11ecf3ba9325da04a600d0150b8651eced70558e2c3f23
+
+Key = fff38d3970b02cdd15ae316c10db6a64873b54d6c21cbf5a10e1f2d262e85cd3
+In = 00000000000000
+AD = c338b78304897beb106773f9abd3dc2c7e64fd8b6c0246e5d4a62753011f7472548c04c198a40bf1c8d246edbb6afb4a3632199363f7a144faecaf9536
+Out = 49cab926a87de9b6f23cf6e70e6621f15e6b1d5830f01e
+
+Key = ef0668f115f1ee9bbd33c3c134401118563e71b714d9b339b0a64b799ad6887b
+In = 00000000000000
+AD =
+Out = e1a146e8cc5e1f6dda4efd60d81ebdde045591c15b0fdd
+
+Key = 8e6ebacaf43a20126289ce28f79ee39fafab5093c0afd6ec2a1e266049551d84
+In = 9d5420248e4f77fb
+AD = ee9da13d2453edca0398ee1708a5a34f431f3a325cb1907ba92e72
+Out = 6bfa01832815976fdd98584284b07941e2bdd90100c05c0f
+
+Key = b275e224f4fdd4bcf3d7443e3aed0a2485a29f2451805b89154d321cc28efa69
+In = a99cbaf35421d347
+AD =
+Out = 18d21616e7e711a4b7d2f728ea02a5ad8764e6d83b0fabf0
+
+Key = c1eafe8cdd7e42b2c075efef05dab5d3cc9714fda3daf0510c09e0dfa478dfd9
+In = 0000000000000000
+AD = 89dfb83a9a71bd9f65c2ba61ebf674467c9dd52fdedda8c1342a1eb6d31a33ed7a61723ca1ec231ef9e73bd5bfdd6d9037ed25c63c576641f957cf74a29dcbfa82c5bfdc28906e339b0416097c68f367039495eb2407ccd7067b5ccfb7208a9f088b19b6f1aedb15a554acc170a0fa96b6
+Out = a3d4e366b05d628d481dea81cc09dde32606fab8a9b89b3b
+
+Key = f2495a67f2584bebf4444519641778b592f9f8fcafbc3c89655dc47987e0d713
+In = 0000000000000000
+AD =
+Out = e2f5ccacb39f2a67c60d8586620e9780f28bf96eed10dd93
+
+Key = e68a4fb89d0bb2f173eb04a24c5aac5ee442b942f979453c5d25e4366c3c3063
+In = 762fe3f634ed787506
+AD = bbc508dbc040ff7a8e507ca46e383bc16267522fdeb74fcbc4335e9b8295a9f2f2ede228d71b939dac62709d639cc881047212d1a5db308b6015cd80cff1ce
+Out = 55a4e519157e2bc7da5e969d1e93b77e97f5c228d772d2b1ef
+
+Key = 5701c2553891cac4483b04201fd55b6a07e93a3428102bfbead26a48e3952a6f
+In = 63b6167a55f4ed19c9
+AD =
+Out = 022e1a22550c5a0162afdb4070a379d951452fdca846643162
+
+Key = f0616e02dcde0ffa7c607bfaedfe4ed894789a4faa60b761e73a45baaacb7bfa
+In = 000000000000000000
+AD = 4e76b2d3761386572c65c596e8bbc696c754f63d377fd157ff6d0c4d677f7c543ee47040830ffd60d6bfa4ba641bb04bf81303306bcc4dc79654b1abe579f759dc417482
+Out = 8de138226a301abfef9e84f756d9625a453b0aefec2f66d079
+
+Key = 958817f13af78f02b5361b1a2a8dfa67134394141fcfdd479dbe29b4dcbe15ba
+In = 000000000000000000
+AD =
+Out = 5d09835294927a348488bc9f456e64b94663c8c63815dce026
+
+Key = ea90bcf27772d6bb9badd8a454d8ecd516c92112cc020c5db3e9ea253e3157a8
+In = c28abe57a422e442763c
+AD = 4a6a667d76f13fd3470e61c8c78cc72ff7e970208467584b74f40c03286f8023f481abecab5e6c5fea3512f37dfa769660fc47536e9f72796b0fb6e2d8e3c550171cc8413c97839341ed83fdf8a6098045210aedee2c0f0594256b
+Out = 33f119a20a115706c8437e186fd3167126d0290e4255c5810c84
+
+Key = e5487555cbf18aea4c647c643414b2b343a9269e42b4ae97a7cfbb35848f2967
+In = 53e73d5024b09ca6d668
+AD =
+Out = 568baf261c4f80c438c8cb0b21a3fd6d87a46107ddc945dca1de
+
+Key = 0e846753100c81465f9f88931560feac7a93ab36812cab41351597ec1c203767
+In = 00000000000000000000
+AD = 7e54c85f25f8c0c359c62984a64e3fc84726fdf7b0d9342cbe6f60996d095b48193eecb7ad
+Out = bb4c40db761fde5063459462d571a41beb52b4068001afc6ba28
+
+Key = 772a7312fd59375b8770bc8019e60e6825bc7cba1229d6527dc6a59de422d645
+In = 00000000000000000000
+AD =
+Out = 7222d2338b9fa86d501e819691b3ca9bc0aff931a0d20deb907e
+
+Key = 9cc5c48a3e40f0cd85ace3728db4af9423a7b19ed1fc4bc11d6fcd8a9202fad6
+In = 9e0cc57c9018b4f6f07a14
+AD = 455fd8764aafa3cab20c006996f0967af32a827cb06970aba55c0ae76a
+Out = 6b5811a28cea70b80987044297a4e5e36e1aeb142c03ba70a6f2c9
+
+Key = 4c09acdb4f66a876a31927a60b6954d8d55faa5276486bf12c26350dd6a3e238
+In = 71fd2b4536991ced2bb4c6
+AD =
+Out = 3ac42a83168ea129012cb77ca407a203584f2a03e28d882e03102f
+
+Key = a53b9935be5cf9ae17bea2f639c4367a96b1d041ed10c9223f7295d438aae68d
+In = 0000000000000000000000
+AD = f0e2ba0b8a3333fb9ff16795949e4d914d8dab3a56d70931e7265125363fceb9b254343c5f260fb52507f17fac130a9ca8029fd61d872d700223dca640dd43369c3c239a36922d1ecb772a585fcc40081c47907a5bdeb13040ffe82755c40b86d60606e24f4212ac8522fce822
+Out = 0e3cd88184ecdff997ebf61cfce574c2b00fc5bd28d8705e172ba3
+
+Key = 91da30b613b7b318af729239ab2cfab93b3f05227a479e99b141b0ec6151a311
+In = 0000000000000000000000
+AD =
+Out = 10a715668301a4bb7ca65daba7c3098231c284b26bbdd43b342ef3
+
+Key = f8dc379eb99238083678117b47228e489e3e66c272e8f6b40a5463b7d46eb5d7
+In = 6038a1b269118025d2b6f8b3
+AD = 13733e7928d33e7574d63ea60fab052637329a333c65f51670771d4af82009f8c7f7df14834512cd6cf8ebb8
+Out = f383b639ab86d83e7c4c22735eabace9d1831a87674aa3f9eb051444
+
+Key = 80aa88f87aee22acb67cdc7879668e8940d542ad73f0686360ddb2bd85e43324
+In = 11a85a4fe22000e6afc53ec6
+AD =
+Out = 5cf457434ae0693c932fe89585b20bcb57e2821a4e241a69d57ad22b
+
+Key = f7363511fee916eabcaac70da3e6e6b8ecefcf12dc451d9767b99644a8fdab58
+In = 000000000000000000000000
+AD = c2eda7f937f5f77308b9003e54e748856119c26c85bbe358b0457ef6997145e0d3e201c15157a728ad26a49f9b64e476b0274f0769bbcb22d862a1747f1212249edeaaddaab56c0bd2f90d53
+Out = bbaa569b8a9119eedc9a1cd0070dc730fcb7702a473bdf47884f19b3
+
+Key = bf6ec75e73ff7cc5cc27a274c9bd32651efbe02cfcebbadbb0d4ab47745e8d8b
+In = 000000000000000000000000
+AD =
+Out = ff4247a9b083e6b16f7861783f4729bcc03a5a030f69e47a6084a409
+
+Key = 0c4a18c514baca5076ce6192425b5c093bc9607e69fd3a9c0af51e668266dc28
+In = cfe11509f58c6b0dcc35b02027
+AD = e0e96b09951a0be2b09307e6125dbc53
+Out = 31548c2b246c5fb429d281a7503bbb99bfb9060451d8f5c67710326063
+
+Key = d519e6a2668ddcb229825545d9f0888046a6792096e8485002946aca37947f34
+In = b48167a3ee604ffb7178fdf428
+AD =
+Out = 1b2a65f4846f2b4510f5a99af7992112ce61ed26fb580879cf8dbfba59
+
+Key = e2571898fa9c97c4b8983438baa15c5e700c8828bf4a084ed0feeddb8b4a15dc
+In = 00000000000000000000000000
+AD = 5561ea83100d34ee
+Out = d9cd7f6fe8ae45a369bb222c1e74c718b4a9a5a0e54d357875ceeb93f9
+
+Key = d48d0b202c012fef715812c706d31df0b4c1840a296a33316ad5fa7283d5327f
+In = 00000000000000000000000000
+AD =
+Out = 4d58b82d5b83c449e7300460df6ea43e6c90eeea5b2aec2b3e718a6fea
+
+Key = 8eb2f6bb5eb93bdd79a6ee1829c59fe96c99694933a3ac7c0d04280a48e8a92c
+In = fb0dc347d2202462abd4e202eb2f
+AD = 7f48b7458d43b88b18a2628377ed79b4e487b42911e7403f77e3134643d61c816d41141f6f5519bd60e80712d661613afb1e1c3427ca15c5f83eade49c74af6773199082cd7465f36ba5
+Out = 0584af8bc8a0143dcb8cfbd7309b106bbb30f8ac7dc10b32c8d48db8fb08
+
+Key = eca020f8487aa4a9b0917f28e3d95cdf2b7efeab3259958c647a5e9a4887f724
+In = d2e5e04b54b2cbb2cea36b432fa8
+AD =
+Out = a706df116f6d8bb9e3d11fbc04799d607277516da6d82ef3562079ca92ec
+
+Key = d0311453221a0e741afba7bce64364f54a7416613db23637d8850b9ba2625977
+In = 0000000000000000000000000000
+AD = feeca874054aabcde323d98197839fb7e18914274d305067a26a1996f3ab1b048791078324a97d020354fae3e43e4cbbc149323e19f6a19fc237
+Out = 1dccd7cab6f1e938cda649ed049650a56ac16a808284c22c1f8d1b030e8d
+
+Key = 6be26f217018c2595cdb443a0d9f01a6558277bd97bf0760cf610ec23b06a548
+In = 0000000000000000000000000000
+AD =
+Out = ed0cb9c444fd821b7806b2d7c119d1a1e33f16708ab4246898b0d1b9de71
+
+Key = 7beef734c23ed81b70f5e5c086d70888e66cc37f37f09268c4db84a588228d90
+In = c602c53c841b2b91d3a9876cc2ebe9
+AD = b903ab9ef3e96daf4f4dde5d94a2123b20d1952f27ee1be665a2f4a5823fa6bb6e91eecc72961e8e307baec5de85cc63090c49b7dc6da7f6e2f6d74969a5eb7475
+Out = 5ff6ce10e48606e7ca2e2ef7c8d40650e05f96367fe25677ff97363018d297
+
+Key = 865c6b7ee544992e3bf3137c61a0ecc396c9f65e4f87c69cb89ebc1c69a12d42
+In = 9cd1b59510f43bb0cb9dff4cb209f6
+AD =
+Out = 450505f87def1f5692de72c2810215f0a6c9eaca0c93e1619b15ee0b2adbab
+
+Key = 2c41cb78a17e8ad22a16969bb1b464fe5c2db1f6c80f669d8f3e3a6da08b5b88
+In = 000000000000000000000000000000
+AD = 8ba874c08d11390c6b42251c3b4c76128e9580f584aea5eed9aa9cf3f1e3b4c641b94b1eda5d3bb81d8058daab20e8c5dce85b33e5363e78fbeccdb1784749a7c1027825a8746b0944b114b28762a517cdedb9b6caf35c
+Out = 03e565e319330f0a8aa86188e857d37cfc3c34af4ae47d6466753aa299f046
+
+Key = cd9b2d07f7660fba31e500bccefaa6eb79e2afdae80c32e20c0635d49a25c23e
+In = 000000000000000000000000000000
+AD =
+Out = ccf2fa5d0b62ab9e3f0404d07b8547a526cdb6206a3250a35dd4fd475a7ec0
+
+Key = 1332e570e504718b31e9a66db815dbcc3e4e40d459b268afe29036c8c22e705d
+In = 0b0ebdbad90c49f269a6416e52d80e99
+AD = 2c7b04f503ea8e8b1cf0f4f8a07fb1cab41449a65808434ff318b7f8e48c828fd8db59edef534cae21e55c0f5216adfddbf6c3d3e73acb21efc21b9ae36418554f949911715f4d855feccadd2333db1bf1b0c18030d63375ac59de3457bcfbdf460a60dfd86a36aa
+Out = 7bce44b86bd000c8af1d2ed7bf237a3093c5ec5536fee79b874ad5b38f868b36
+
+Key = 97ef57d4e2e92f14df7331fba3d9f35887dde7ad8691fb80176858d659201427
+In = 7573974d6fa765bcd0e6232c240e827e
+AD =
+Out = 6860a9c7bf4a6b219244d7a8eaa1f50c6f979382cde68de60ab2ad0953606485
+
+Key = 041f906d92f669c31ad0dc76992a5a579092d00cf0736ba56c58291dd93c7abe
+In = 00000000000000000000000000000000
+AD = 91fbbc94ca09f0a232f6eacbb6eee0021bb35e6ac13cfa32043132e21b55a15db7806894a03c27c8983de163aa24208a56c0906ff6311eed5f99c85c27673a9ba5672e
+Out = 983285752cffc22e4002bb937e36f2e664bedc5850d11490fe6484bde94c52a9
+
+Key = 3dc9801c56c83dfd66c856d6ee0a5fdf3ebb579e72d1d4bcf0bf57edd2554526
+In = 00000000000000000000000000000000
+AD =
+Out = cf5c840022deee6c38191765e41934db58b3f401813587dbe663b7cd83315822
+
+Key = 11512beac4cb2ad793807a5f5229db434091cf78060134f489e13186b3ca4c26
+In = 98a6b95f5d4361b920c934875180337f49
+AD = f35d228923bc3d223c2f557f647c302b41cc5ae658bcf748efad4ab3b0ad1ef3c2e3d8546fb9d0fb43748472517f468fc9d911553946124853cf26d8faff9d603efdaf05dc7c412088eb37045cc992e104e509935653aaa0fb2dc6645ccb7fb75d53c34be9cfc30f59c184a3706298f057eb5d10898268
+Out = 3b3e570962870292533712fdc3261ef90a422b55b51a165935d85bfe59498f8300
+
+Key = 6416b2fa44bad38695c3f70099c11c154742b10792b73578da67dda0845159c0
+In = b0a1a3680f00f6cf421cf20923a5c3ff6b
+AD =
+Out = 66731536386ae49bdf7c6ec44e3719efd044ada662f9511cbf4d3a1fc893366a51
+
+Key = 93ed0067b392727f39909ff0626774da345a8a801797f1b492230940729da5dc
+In = 0000000000000000000000000000000000
+AD = c6df4df0d1ff63d5712f24071ce42d8c623de2843e54ab6f87dfbbd3693cf1d7a10d1b4bdb6910b7529640e2e64cc044fb7d4cb852e71940d8336842ae87b47fe098a78bb30bacaf
+Out = 398f4897850eaaace7b55782fc7ccd7427d2778a73a6f0abf7f86c06200b776eee
+
+Key = a4f8f515a97c2211729c4c21ec3d8f106339b5abb2e4fefe54a312fea0a2a2ca
+In = 0000000000000000000000000000000000
+AD =
+Out = f2b1d9a72b6eae5394c7b3f5b1147a25e00a86bee14e5d858367d5493b4289cc96
+
+Key = 5a7d9f4b26c3a18aab8744a2825073d1cf167e71ab87be43fe352de455d24866
+In = f286f9d4c797addc73968e5c898e9d34374b
+AD = aa60eabf1f161e78f11c621168ec5b59f50cc007e270179e5ad426f632687a388eecb734672539fa174c310dda17b1f4fe23b02a885754500e17b4aed24f461e2f362b3da5d0a599d1f872a846cc6014fb78a4ef704d9f9e68cd520a060f85ba0396abcb93c888b0
+Out = 1d28dd76d975803f0366f89f390602304905d6baf7f46aed6136268dea4339491718
+
+Key = 8a69175ee846c5f60584bccdaa5c82e61d3294b296c40a342244b7faaf94144a
+In = f9e409d8f1916c1483db1b426b1b17ceab43
+AD =
+Out = 214a668650943d5cde1667dce674b4cde29a51f203c197b106583e289ace27abd5ae
+
+Key = 33f04dd077783410a157a4939733c4168553f91adc419517111da3ee77ee4fb1
+In = 000000000000000000000000000000000000
+AD = 67878e8002e0198a7a8bdc182e64e2de41b928ecfaa14c003c19c7d8e3a2e1c4104ce7037bb4d5532ac0585b4876f8b977398a8e26242c114c993fac79ed9d064aa7e8e84194ff9e759a7fd5f07fcf8be78364ea254d4ff8
+Out = 32635e0e5003e7ac2832b9d2da720fe11a5aac1fca184fae7421c2ec4897ae61c5aa
+
+Key = ef5058a402e5a7032c464c4c43554fe7b58f3929a5564819744aae68072c3075
+In = 000000000000000000000000000000000000
+AD =
+Out = f33b064a85e9afca3e70b8705a83d55634c8bd36095ebc7723cf0149de1c8fa9a4d9
+
+Key = f28cf68dd75717a4c81df586da9cceadc57375d5ce6dba7e599b474e67f44c48
+In = b65e0483cb1334d5b413bb35d84c3f5642b8d3
+AD = 3d64e1db3d82c9bb75d60ca4e4aa70272a31249be14cee10213fd30808a114216bdd0f6ca18e17f1427c5e292c372e0339bfd585a744581ee90d967adb8f3f7c4d
+Out = c8f8d6d25a652c405191ccd017cec230caabbcd2a84abf6c96204ce166cb934182d42b
+
+Key = f58c7cbf65083fdace237be03e592bcdf0ad1c8ce2f3f125e76348f25edac759
+In = 6a7cbe09cd0c6727d65be9f1734b41bb85a8a2
+AD =
+Out = a8b4d670a13f53dba6c8ea739f3cfc407118f0096ced91d173fdc04561cfce975250f5
+
+Key = c5cc8a2498340c923bb83fe663aeb808b5bb7ca1bb4ee29f13183d3e479d9b9b
+In = 00000000000000000000000000000000000000
+AD = 8a
+Out = fb20c5519b3badc3223846777fa0ce7e7c367e21ff9e6f5263107601e35fa4bedef988
+
+Key = 71b0bf051f81731a580af78c7a383091eb35691dac7e54192fd1a625b4405429
+In = 00000000000000000000000000000000000000
+AD =
+Out = 566798a46bb4f765461407e33b6170cce397b1bd8a3ff192f03245f2f38f1cf25bcb43
+
+Key = e6d96b545e4cfcb0e75a7194ad5c385cbb7a0fbee58af02f0291b858ec3d84c4
+In = e1c2fd6449f6672b723d1ba9742a946f1ecee114
+AD = 078be68a9bfd74ba
+Out = e6aa5800986e8fcc7d072af79e42e08d19220951dc8fcfcc17ef05a89f8fc59b7484874b
+
+Key = 3c1e4fb7f589e59cf288ad50276fe30ce818694145b87af76afd76ae5a7e9fa8
+In = 4a4eac5bd893fed6add39927b0654a62a937f8c7
+AD =
+Out = bc560ce312a801452ce320879b652d61391ca8ca2e39fc48841d6508607d0846b53cfbb5
+
+Key = c28ee2dc5368ecd33e83e1e5af771e79176e00400e1d43ec8884529c54d75bf3
+In = 0000000000000000000000000000000000000000
+AD = 30ad64ebedc802ab3d89567b2b7724d8736d0cbd4dcd69c41dc7be26647448f4e32ae84f8bce281b7a867059b8848dad3a7e57d2a1a2384fc74eff94622c91f07b3370efb8ab09dcb6503ce857bc18d1b7711aa74ecfe92e7683a41836873d6d3b46a0df46f3e06c881fd7f4
+Out = c22a2175ef3f7d9c482403f713917884b8adb08bc25ac521401e317367243960de28b0e6
+
+Key = b658317f129504032b1e8b80c1d19c9b957574c3ab4dbd89aca603090883f742
+In = 0000000000000000000000000000000000000000
+AD =
+Out = f5debf80fa92f562a1fea908907b6d5fef77ee9397e3eba2ea7fd35272e8b06fa8e02864
+
+Key = 6f772452487f44da8afe3ccf8482c078a2dae540a5159f7f7ceb6d98b24510f2
+In = 7c64b221a291bcff3c7ddf2e2cd84cf688adde78d1
+AD = 9a6cbf2658fbac9b77b81c3bc1d5736d09430d47bbe3278ad50e3b12e58bb14f38f32d983667adb3
+Out = e599694eac218a477378a3a38b10227502fe5e3a1a53ee228810713b195a2d0d65e9ae9fcc
+
+Key = 2ee6d8415b5f53bf070809d42c3a949bdf0be625db034d20b17999047f75305e
+In = 191aa532d7d49345a9394d769e3a943e22a4201fd7
+AD =
+Out = e763392b4c4f1c691ba92014106635a666b4c36bb9c85dded87a00718992ded044f06f3ca5
+
+Key = e5a1e5240704c6bc9695a13e07b5069e0f4977cd30414cac375713439ecd6704
+In = 000000000000000000000000000000000000000000
+AD = f6b5afbc99b3e1b82da0a2aa7df31d74072431cc03cdd88ada9a82b9c21a4bc875dace122bfce60cf54efa5c8addba7b47b0e704ee766d4b8f4254ce38de358248ea6244e2
+Out = 97d69eeb15fbcd4ce6732c5f7da6671f2090e774703c38d6d0dd46ef1fcc48d5eb72346707
+
+Key = 660b5a0ffb0616b526540682df68916f29a648a05559a60cd263b3ea7d7a0426
+In = 000000000000000000000000000000000000000000
+AD =
+Out = f3f99d7c16457229d9a3fed57a906ce6697b3ee6c2dd3c4bce669e4143af6b2aadbf67c23a
+
+Key = fdf3f7da61767354c050727e816eb6a34535339bc4c54f8c279b4e85f082304f
+In = 7f4b0c3b1de3fa347e11418d33ab85dbac4c5eab9a5a
+AD = c7beebb3d70dc6035525418581f8915697a7fd3222363881b86c0d47815f445970d4b1590e99c15c72fc376695e0a3cba1031b3c10d3625b3ea2a819ddee43dfb3c00bc21c3e4950bd124bb19c7a8e0d9d76cebf98a1c4ce49883ee486
+Out = 75a92553cf435213e25ae4e9fd5d9e578681f0e59708bc4b31b26c3093dc9e8e02321d5d551b
+
+Key = 7721bedd07c7d12a6354a9576970bb9d334dca98dfa88785ab2665230916f62a
+In = 329acc7dcc41371593cddaa15ee342e94987995cd7be
+AD =
+Out = a18aa3b7aa22303a118616939f7e642914e0f9feda14b7d178dd32fe6a3b4551cbd14432cc2f
+
+Key = e628d931a1a359ac35bf88a2b9548ea228a7ea2466d784eee8d4e8f36b3aada1
+In = 00000000000000000000000000000000000000000000
+AD = 2ed2b3342d4ccff0113ab84a26c6f03aacdf978fb9f4fe6d47c7e5fa5bc04ca74b6e96e69a4a7d441ff260a6bdd7c7e77f86f7a83c4989
+Out = 24f08f3b76bd5f57daffeb62ed05eb854542ea8f1426cb30e502db5eb13e60e917850b24ee03
+
+Key = 1bd96e93a58ebc718f4c700d59c28620bacda1a9a68655957ac6b83f583eb878
+In = 00000000000000000000000000000000000000000000
+AD =
+Out = 03b8bee3553b1bdf2b8f400924b6e8713ac583b55da81a593e075702941f57b52c87c9043f5c
+
+Key = ed9468b2a3a19dafa9234968c8872ddcfe1486bde74e5b00b990774c10c60597
+In = e8b46274555696946ef14c297a9f0a63c8dc2c9322abde
+AD = 098e77a0f74989dd26416e8986fd62f406407fb5c330a4f3b361c050eab4892bf8681dfb57
+Out = fe5f2b3e91dbee72ccb5ab096efa2df7aeb31939bd0b5dd41bd3b0fe24bedda8feb670a88d28d4
+
+Key = 451eacb363f2e94263103dc209c602616110a31e97655e7d81553f36f980afd0
+In = ae369989fed5024871cd1593687a9294157beb6c4add25
+AD =
+Out = 7c7df53823f708f10c3e5f0ef5423f2cd754ac456276ab2cd64f7bfdd5835abad3ba48b087b59b
+
+Key = 98afcbdb4deee55425861446956bf79cf59ceff2ae8851de4bb76266b3c34350
+In = 0000000000000000000000000000000000000000000000
+AD = b0c98ee2f1621ba4ae6bf268d2be1e00a9c6ccfdf7cd9ab8c903e813
+Out = 2191a595d2f4ede7762834cf46912e3710ffbd4423ad5ca1bee1d2ecc6f185e8c921cdfdae23c6
+
+Key = 94fccd80afc2ffc31fec33db42d9052e5cf4a2d27bc61725faac15dd57622432
+In = 0000000000000000000000000000000000000000000000
+AD =
+Out = 7d9ebf99f2cd371c5b5977c2fe03a6138ee55d801505b090a6118c70a3e6bd892b9c10e6df14a5
+
+Key = 0c6ce6f783826608745a0960b71d96a2d234fa8d0f8eed7b63e2be3ceb74b735
+In = 0c81291f224273a2781199ab0c27f089dc0bb523cf3693c0
+AD = 7f65a4d2d2b051
+Out = 79a5a08b9eff8d9219ab06174ad1004c03ce29df2f11ca69f76a0e8d8f0239c49130a28920e7e51c
+
+Key = f71410a45a128a19fc34301dcd310d50638d3c3c18ff1dbc217b84d25fc5edd1
+In = eaddf7cb85eec008651474d2b8d9c3a1e06c8087dba51712
+AD =
+Out = fd7a9d4768b6079ece4196286c1aea4cc6f426559e92b6b9ea88df09e4d4a820105feee4e7f776dc
+
+Key = 0efcc476fec062a956cea1e3fad45ff241e8378801f7035ca61d81dd6034ee7c
+In = 000000000000000000000000000000000000000000000000
+AD = e5c04fc80d8b99a2358d2eb32c3bda69b381aa75
+Out = d3c1f05742765a42b098f1f6a3b4562dc8acb23c265c6c40ee575c7fa41ef9f6e738b313452ad03f
+
+Key = 918f4e48f8721e2ad7bb9e3f53bb85d537457467af9c02e16bf652e70b0db6a6
+In = 000000000000000000000000000000000000000000000000
+AD =
+Out = 51ed8a7bae16b68f6d9ffe744e05ff0146d769bd7d74c302f3cb715265081369749f7c35927efbe4
+
+Key = dd7cea110f3b0d0409e2d7654930f38ad8535924d13ccf664e7f73670a83b78a
+In = 9ae84f00c0d6a646abda8c23b8da3ea66f5f53bba5b796b281
+AD = 96e48a9bdeadd27d697609d024b88f5daedf750f247902d5e4efb3ec4b9832f3ba6fc1ebe82db14f3afe2c464ec8237da7a5a0dabcf5c3bead3d7b3b4f6a720b41994ea5b1c470ce307822a0366271e43294533f89531d41f7
+Out = 928b481f2fa372fd53df3b0e89c0fd1194f936c8b2bd01e95619ca64e47d5c81b60f7841d7dd763d4d
+
+Key = b7e3c65765b04cf027a8095b4a4544a82781783b4042bc5518f488aa3c4b20a9
+In = 862b5bc3d1acc35fd66b5db4b2be1cc02f1ab63891bdbc66a3
+AD =
+Out = 217798451aba67c4c45a4e71f834c52efa807f0ca9fe3f0c602ecb83e2ce9a1e8fa3313b3cfa0ad04f
+
+Key = 76619109ed42ef8f76e790b59ab23509536e4a4762de274296b18d85efd70f84
+In = 00000000000000000000000000000000000000000000000000
+AD = c2486941760e86e86c4790b78013da8720c38e301d2eb0283d67bc343934988d2c552534f5246089429c23f4eb3b400375610cc4ef53be499406e2ca945fab484c8daad61e734f347cfeb685ada9ac43e0a608
+Out = 6209d29854b0c441c433075f903d344e1aded94f75dd832a0e7b02fa66e714e0ce421c200b38876513
+
+Key = d58a6ebc766571a792f0c7b6859b3ace10b87b20db911f3fee10ca4da427137f
+In = 00000000000000000000000000000000000000000000000000
+AD =
+Out = c3040641906bb4958c5cfeb8366921d0a4efc3f206c910a3dce8e37652e437f7cc49d58367e614d886
+
+Key = 686b0b3153ed53513a36d1a6130ebbdef1da694d0aec50204fc22fe134c03e6c
+In = e59d7b15d39ec6aefb8405951c5a49c388357397f1cca83fa89e
+AD = ccf35570f4f8b2029abefc6125c3017b090929d98c629f4498c636aed3ef76afb0fe978807a911bc30130637b19962cd754734d587d9d26701b0bfb7d9ab3cdf7e9512fb2860bff0ba8caa909cfc4674f2d8d1fec7eaa96ad1340426df13c4777fd12aa6108bef225ef5b1710d4e14f17e9584c43a44094f3e82f368b83f1c73
+Out = 7ce309f64264a27fa2742ef0a8eb8cf2c8848f5e495770e4681340e47d60831009ea0d431cadaccd5439
+
+Key = a5902c1fb4eeab2d9b58f2a2a4283d48a9a9c611f8bd21c991af90e4b9ea4992
+In = 3a86d8eb2ed0de830e5013e5c5a06ff5306fc41f45fc4565ec36
+AD =
+Out = 773c0a1310bd0ed1c1ec8dd71a749e08bf2c3c149ed4b58a4e016f5477d57c87532cded8b6c7574ae49c
+
+Key = be6df50aebfffabce4a14fbb7b164de00c3fc4f2abf3d000be7421d36c66a102
+In = 0000000000000000000000000000000000000000000000000000
+AD = 84e9fec2e90826c111c2c4fdf42d7bbf718e25c5edcdbdd965f5432fe5b82d93f7b198f8f86bd99421ad796e9c9fa27b910660d70d50c5d5cef5b7990954fd2a2bf9163abd55434ae58f02bfaebba72debb8d9a793f44d994cab53dbe56a32e1564b443a7294011ca4bbf4
+Out = 311875ae9e294980b550fd00e9b1533cf40abbdcabc45f49027f1b0f2cf2b1b6fee22e5c1e8d69b6ef6a
+
+Key = 3208f38da325845aabbb4a6d7fd5248e1ac5647ca12aa2477e1669b99bce2d86
+In = 0000000000000000000000000000000000000000000000000000
+AD =
+Out = e549dbc72ecb7076643710d536b46d3dbdff9936224489a0a9b56813c761179b7d72292a3b07d2c93334
+
+Key = 8d62430aa04ae93cdd433ce89b770ca7b8dffb2b035e7eb71dbc23ab650bb4b8
+In = 81184d57081e0fdd0c73ba83ec0020a53e687b56ecc472a932a429
+AD = d7c28da6a6
+Out = 50afb028a6ea650faf0cc0581e1a9dafcaa0b0214944b22be8741103a318abbd78fa21a4382ee9b83b5a65
+
+Key = bc5395d0001b35317c3a87a8c5a0136062012ffaf9aad93168cdbef57e546a8d
+In = 63f72319b3b860e29b3bea0783d6dedb0cb6cbf31f6771e78ca81b
+AD =
+Out = 4a56cbe93ddb9dd899cb527e9bc9487ca2745de6661445239657a7d5e22c667fe63c5671214944faa258f4
+
+Key = 8d2790d82d82701427df0a28926815c6aef3f3d4a3bb2e08b00e166f0f26f370
+In = 000000000000000000000000000000000000000000000000000000
+AD = d7d0f3e450ea534c87f9dd1e09ad90ec6de17c77a66e0e785fe5df0819e9f8972f1f886dabee9a0ff5640e146b09d8f47bae929941543193b04f7516b70f2bd2088f5179abb8add2270b0fc5ef
+Out = 2c841a5b52198ea29ff9e07ae700198592e5cb08f495c37f3aa0f936f01c89be112f44f265cdb4dde17b84
+
+Key = dac39e41330b14740b57e55b5773c6ebcac4799f91c2a8a401bd5171c6db1b46
+In = 000000000000000000000000000000000000000000000000000000
+AD =
+Out = 2fe37b2230c315183056bb76fcc23e47f24e326dfa7f6fecdbca90b1700462dcb83d08b75037ea52ab24f0
+
+Key = fa8bdf49c812242bbb6c2683b580c85c6e68b55d2d36f3895a305e49f0b37527
+In = 83fe22121d9a2e6ee6f8c394e61820fa0628643b3b6d41c98befca43
+AD = 56f4642982b0337edca5e8bcca483ed63b798c843559b2b35fe6fa65e95c9de0b953734e202836cea6d0509e42a58fdd65df60e53ad2b8afbeb4e29793f9dbed19faaf9af4e0fef4b173558e21d30431f15552263036a0f8dc
+Out = 7e51778c06ca9cf3cd5e8cc87873da6b21d6d18324537f53d1540524ff291b5e17890072cb0f6a4d0229f3eb
+
+Key = e051434de9a7b6f17460f87bd7019363555c07b59380877fc4aba280088b7eba
+In = 6be9ebc2ca6a7369076238468ff15e9282fc8524bc8eaef0831d417e
+AD =
+Out = 8617c93f7eaf3c6f5e43b2cc84f34d627551342ea40536d0c71647ec59386bc49da3435c160b53983fd234c4
+
+Key = 649fbede450f010c0cf6761aa28f75237c41fe86d9baac8443a9aef66e7b6516
+In = 00000000000000000000000000000000000000000000000000000000
+AD = 0f520241daf5bfc7696cd3c654a7fac30c3430b85ec3f9dfe209c612251d21dc18f4bc61109968360f8bfd784b86dc0acb3a997756abaf7249fa77d964087eabb9f9da670b65b9739a9a387477b33f8dce6c01238e40c043e366f24524456ac635
+Out = fa3d045b4af7f6d256d5c2bf41c91dcadedf270a0abffed6ec202d2c8013c5c060bce90a24128f1c69455555
+
+Key = fd9a71ebeb5fcc583458893d08ec568774e292eb9c1c629b6cee7be0d77bc576
+In = 00000000000000000000000000000000000000000000000000000000
+AD =
+Out = 0ec4378b62c67c4dd43057a6153b0caf23f3beb16ae86cf1254f1f3528f0e01f8b6a42da5662254d25204a3e
+
+Key = 80d960ff623917305b38f3a579befdb18118ae3830d94233118ec8587bf93469
+In = 10a91eb2c1998dd908dbe564dbc885c710e2c84d6d38a4910c7df84b5b
+AD = 289db332ec471a06de30fd731cf8346f7dc0bce5b60c6301e2aeafcb43829a9337929cee3565f80256dabb86b006e7433f9ac36f5d3bbdc6879f92d5ae27bb2a0fede6bd57bd3f47a4eec22c1bc294ceb9cecf1e0e08f7609c01d249fed8fecf6a67bc8ca989de064d44b754646114e2f548ce546a9e19
+Out = 02f1266302cdb39d845857325a4b2ab58689df39ff3cd08c1c070d5aa27ed04de5bff73ad90ff4285a29375361
+
+Key = e6ee858a2cb66a0bcd215a9e0777a79b785cfc72747354798a6f190426ff4b6d
+In = 372d1727afb651c8ae29d64c402e5573a77ea70eb814f15fa9c0fa489d
+AD =
+Out = 1c756f7fcdaa8d065e21d372d746b79ae2ab97322d7bb05bf42950ce3f377654e4d76b6a795ba698f6f0cafc42
+
+Key = 40938baaf70b242555cf21f73ed0160e52800545ce65cdfb3b054cb1868d554a
+In = 0000000000000000000000000000000000000000000000000000000000
+AD = ee2edf39810115a3fc78f5d8c82453843ea5f9257c31d4141dc0e9f7ccf02b12b6dbc16178fe07396e8b1fa6fa134e2b6375c8b2acee2faa5de038c56729fe48fbe1b0851345f626fd6c38b19cb77e0c58e6f9ead4cc981c50f13d67d9e67281a1
+Out = 8937a547469c0156fbee4292cb65f96c838159ff01b612ce36ba62acddae9338fdbcd860352ca0b9d8a6c743e7
+
+Key = 5f27fecf6b9280be6dc841cb07a6dd19d006498b69e0e7f14ff40d7fa3ef8209
+In = 0000000000000000000000000000000000000000000000000000000000
+AD =
+Out = f772ce7826c1efc063f3d0243e7b322516dc58b4458ba8e8a50c7df381351f8fde19d7983410eae215ba236a9f
+
+Key = ecd5a478ad0632dde11902b5e59d9322f0cecee23c0aca9b82b4a88b9b0b3169
+In = 359e686366c4acaf1bf2352fe34243018135f946201c7f2722677ea2f381
+AD = 554e1940d032c428f19c311aaeca9113e098c6b4c1b8cc4d487eeff7129002cd82e6230b8873be19fd4a07b54a38f7b68d0421b95ca65112bb1d3c50944872f006
+Out = 3364fefedbbad4f29cd296e3b02a7de6372c67eb1bb4e45d6f60890ea575072cf157e04937b94f8227d4cef0423a
+
+Key = 35c83b377ce0eb7108a1c4bec7ae8b4212127e0c5f093adf90123a058ba599bd
+In = 2f4696ddd30c720919cfd28a669b6e25a2e0bfe0cd8ef6dace62cc19dc3b
+AD =
+Out = d110dc379184b6194bb7a856fff76da0c001758a89c37e96ddccb3166d523a00b687a06eafb8bd7e192387a1c68b
+
+Key = 8a2b8b90e3a1213d2727cee663e6c1c8bda76718868ba6c72b9043b439557fe8
+In = 000000000000000000000000000000000000000000000000000000000000
+AD = 64620b35f42e1f3a9d5eb6766f85895a93a468a3370d34116909e55a158734530b27a39d89b40078df3ec5dbce25ca72408d965a0c8e54a0a8d1d3dcc88ce05e06e5738c5471d9c076d55747a9e4687558f1a2b35d707cc11c96cdc7892686f66d5ca293a70489972fcb1f9d429daf410089ab6f44c6db08276811e5ed0d
+Out = 3e0e9d890c68ad67e855b75046c95bbe82fcbd89211deb945526061f04bfe4886a65b48619e35d2f040198f177e8
+
+Key = 38420325b0e7a28223455afa86da8838bf4feabf882879296ebb5ceefdb529e2
+In = 000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = d8fb79a60076f667ff4300eb8e176c91e9f33a9e25a0f4d7dc2da8bfd44fe6c74dd87a43ab171b81af33bd365c88
+
+Key = 86ba8a0080debf869b6ac3d9fb7cc77f4c1bf46df5e03ac63dccd80ac0025548
+In = 1a7e15382b881598407226f0f542af82bafd974aa8ad0cfd34d680c6a22956
+AD = 0f70754dd550c4fc6db17e0a60ae8ea943d103645b3090826894cb41e701a936304815a1ac6d43a36f3defb86c8657b0c0e5e143a29054047bee115504f29cbb8c85899894d39b3273045f95776242e50d0dce77707de7217b00f23150075a1121414a68bb5fbceaa10855d194a58a978c
+Out = 4d0d71daace5dad243dff1f5153b3784b704c45d730ca47b13bab64de63ec369d2257d75ceaf63586a22149c442841
+
+Key = 7dc4d7766da60a4c0ff0b8de134d69b57173e1d2c7900556c4b079cc744dcf9f
+In = 0500bd905f99c2a3128b8fe79d83633a0712668e6095b61fbdb0fd091ed560
+AD =
+Out = 30627b9c43ca7aa2f481138020d1d3cbb4feed98b3aef476b3960bec5fed9398e32872f377c55dd541194c699374cc
+
+Key = cfedca9d9e0abab2203c4fdfaa5485281a175d7e142985742b48bf8d187b371b
+In = 00000000000000000000000000000000000000000000000000000000000000
+AD = 1bb536bd6cb9065730ac2ed9b1362bc23da318ae689a15f4713ddf81f240e96ab1edf5555d1b66ab083815c1c3435a2ad93e8a293c783f7f1b45a788d8247984faef9217e9b39aef9141ba8479c7edfbe02c83b22ac3ed4caa215991214b3023847539f60999d84870b76833f66e03e6e7eff7475718fc25b62d
+Out = ac512b2d4b167060d66f58157cc4f56a2af643f968392658f54dd56e8605ba294ee6e4f443297a309bb3d06d0cb040
+
+Key = 32a29981cd5edc2c18a2a9bea02e3c867a39330e40e12ae239c3ed46bf4ec9ee
+In = 00000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 8f67ad486836c24196b2e594fc5df01cdd8e6bffed934439b5b4443149348491f53e5f895fd01dfaa8e3447e6156e3
+
+Key = 174ab86e3788aa8a5c165f9f1ab9da3358fe408e711d84ed010804ba231a9eac
+In = e1f1e5e2b17120b361ff5d3ad405872c08ed7fb0fb941279ff315747244caf2e
+AD = 3c332780d08449682822eecdcb2f72fadccc124441521874cbc034538f3b9bdcb915a14233050ef44befbbc8287f62e2a3670af418bf89fb0cc8ef1496917ecae72d47ce0a8e1691dd7c5b12c79b0ca55abc251f0c85978e8957148e833a67b456fbb0116d209db1faa0e063f8d6beb7485b85c00a5da24bc83f
+Out = a4c127e5e01ab509190bc65ca50ec19c831205dfd8a6508d63374c0afd8b7cbf81e64885f5a47d118f763aec58434465
+
+Key = 084d81c092ff274295cdf3ee342e49423db91ef5c1ea775896bcaa21bd196a67
+In = c1c698d6f52dcd31424650d75dbdea3bc3b4f5da0d6d202cc2b7f2f0cf496883
+AD =
+Out = c5b1db16d5ca683b0bef0960f0bdeb986677940d0d74d52ad0a69336ae99e0bc0a0a287066d0d65e5b532a8f7032bbed
+
+Key = d4e0aeaa5b28d34034961b6d5fbb752f6b2beecda15245c1f144d0ab34b2728e
+In = 0000000000000000000000000000000000000000000000000000000000000000
+AD = 487fb1ed5758f56eaf8454926decc7af752ea7942b78284944335024fbff5c9305c8e86dceac093bb37a4fd7bd976c2baba0a8971d51bcbbbd98468c65946babceef397d129a08576a381cb22d39b3f5a371e6086e97f7da90c6d21d45fbf97e493193ba4399150eea0d27cbf02ae899f5f2a78dd617d9684a0461e05e
+Out = da52333334d4c3b639f663506eaf98a7085385359f5376826ab2e7695c19ef034150ccef0ff77fe4f08684f81833fc95
+
+Key = df5de3c85d4e4da5b2def73ae0e02a9fd5b1396501a1e8eb3c490805445f0840
+In = 0000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 1a604a88162912179b50eb845fb1fcc11b2b585973b8bcafc7f0b8b68afe37c313e4e1e9335b475d30896684ce827d6b
+
+Key = 889642e685982c689adbf0765b418cb94043995c0abea9427f23f75bc2e8b018
+In = 0ad2606258f81ba90ec0c3ed63a41b258f4c92c07ec007b2f140e42a85214ac849847dab815a7be983
+AD = 9c1ba744ae4e04b7fcdbf7125d026b57264694ef891d602c454ce559fb81eac295a9f6b58244be9de5788e73f1b2fef60c088698e351fba2745a8210a8adf8bcacbb404f42bef27791e725ec8cb00345431965168b3a2bc6b6
+Out = 7b07945433ea7a03a7898321c55e39466c62854c4ebe14b1a0c23e6314c95b3f327dfcff58197d68ff4f122119695dee5a1ae163f5ae1b1f64
+
+Key = a68d2908f1d8f21da5f216f2d3c940e4f49b4f3f3b3f60a6464a06b4100b3309
+In = 082410ef8ac43c3e1b03e9e4403bafab909578d689a74b9d0bb667b0303c31f985782442accd2ee13e
+AD =
+Out = 8bcf121f875c8518bfb740593f400534d8ac3832541148c3fa14bae55597fc136f16acb6998e1dfae7bc2e6e0443187321bd37ab9dc694bfc9
+
+Key = ea7a344c67ea52ce97fe72331f9efa472c371b1fa5f9e188a5ad30d93538931c
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 31d27b8d77964320fdc22f20f6816e67b23e48fa2ccd3ad7bab6dca44e96684128e450d95547a1862d6f991dcad5d7fa785ec98701407dc551bd64b348c65f162cf798bb8ad2eb54f86fb7e282970d69fae61667e686
+Out = 3522318a55fa0e723b6481f31a6d82b58dc7b048de2fc9d472c81b7d06d0fd2b954a9563c232bf794099c80f3845830bab62d2ceb7e7f88cf1
+
+Key = 046bc3100a4c5d6a3cc4bb1a11d5b6c9aced967f2c8f5be0507b22c3a9c3fda3
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 363eea87c5abffe0edfcb6fc640acc5c55d52352b56d61913d117be94a37fd9b332d45070dd78e365ec437c531eb3b7210d8f70984b45d6c3a
+
+Key = 405256c0ce8b8e48bd6d06e5965fd412fd2b94dbdf7a8f143018c50cf0ca73d2
+In = 200ce690e867e396917fa51561356ff1a1fa010e020d3d728ddf294994c204631290d334f7e4327c6bdc757125f290ae6cde52717cf24a99c157
+AD = c914df3be84b473ec04bdb11abc9e72ab1c6128a3a945fa22d9871c36ec5dbafeaf3497afbca623b2ce146e37d33b513d529e35dca544053dbfde13e47030da94168edcf098f45f7436d623ecbaa
+Out = 54579439f0b97e2f5bb4a9d4e7cc136a3fd1ff599859354f4a1da6cf9cd119bed268ada554c9ed98c08f0ee35343e2c4aa288c5fb83d15c6933ef270acaa03173f9322071098f238ed03
+
+Key = d1c9acdfee471802cdffb954f5d319274aebb1302d46f4c0d337a53a9f13ae7f
+In = ac42ae0a5e604c9970b3085c7b40396720ba8f8f8a6c30bf0443302c0ad8020a795b9163159672c958f99210344fcdcdadca27797d7ae9a05c20
+AD =
+Out = 6ba8d1ca7f6728429033701a3d334e51a089a62992dc79eb1531e8795a56d3af7deb864a7a23030ff82cdb328c599ce7efc077fdcfaf8d0d2d6d4fb640d2c4aff3441a06ac6972b9f229
+
+Key = 8293df5f80053d71236c9c175564fd8d9323a2269697d00636fb01f0d6ec3c70
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 12fb3edabf9369575535e0f045d06ab834876dea5f3c38057b
+Out = 977eeb750e904dc9f7a9f71d45afbbbf8db8b5e3a97571d330ddc183038e88570f4602bf8c1b484985f7ce67244d5b0b701886463f7a7d623d645eb99c3411db6bccf9d9e823286d40d5
+
+Key = 180f20e72e61f970a51e2d39c7a12c4de0544d64961540b0893ab0e58108581f
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 2d127f83066613713df6d42e3ecc091385a41c8c73b280ed687ed7c41f586ae6388aed2461c8fa73496bd3aaa79a6abb49b67beed7a231624d4fe65f99a02f2437ab0adbe36037097ac7
+
+Key = 3cd197347e7bfc9b9593a4dcef96b0e2961ee45f4d8dfe3e88bfdbb7f7b31184
+In = 025d2afc6cbd4f12f6fe93872330e6a108bab538932bcf0620288a04c93805fb24c77dd3fa3f356285be19528f164bd978d70f1912dbbedff9f5025825a8960321dcd8
+AD = 8e69b7cf1dd9a0483eda3e09748d0214c60415da856a541c4292ae9cdf28e28e1055bce444595416ec4ac1590ebf48da922651f4048ce872742b211c6ce1b44c98ea85957987c100f4cd8d53232510612040a412aaf8
+Out = 4df0749e5b5f585c4e66931567d1cbe6d65ded512a8cfa46e51aa29f6b38157970c56da8583ec41b73313e082feea4549501dae9010bdddfc590ecbc1b7f48d22fda13a6bd03e0e63ac92e65b4b6a7dbc1402a
+
+Key = 43d50650889f04f0153001453f2357ad4f4e26dd20b6e1ce6164868f8552992d
+In = 45e8e85db0b3def4a3c25d4e196635db0256c40552b7d411582834e03fcba7dbafa9dc389ea7dc1db297ac90e198cfc7158bb21f9f0849cc3f4687f8df752509bd2669
+AD =
+Out = 273dac227d733585a792074a2c2bb7fcc672f1200d0693b93d27c087d6209b07a42981fa61534bb222e4393a55785590a1d0e625dea1e8aadb45068be9eea263dc2dbd25a877dc5e749ba393a919ad5324c899
+
+Key = db801143c9b6842a0ff67317b02a0adf829b7e83a7d6942ab4c8213ca19c98ed
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 1e7287392dbad162a8f63def1f5d21562e6d591882ca44ae96206c7e30d6496c4d83954e63beb2b34de78e6cd72dabe4224588017a4a719b68893ef988210778d726c19256d0b0b8346f866f064a7f170748bdab
+Out = 9e6610f4604b40abcbe3119fbeedcd22a256c0feedc179cd573a96b8d5402cd432f6ffa20d22e14256f3e5823ba2f74c788bf20c4e33a74f2cd1dcc99e4a03906570fea574464f0682114d0c7bd507697ae9cc
+
+Key = 81515ed397503948464f6bb72d5223d5e3131efc1169f602433012b6bf2fbafb
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 104d859207075c8e7b3690c5b583f58c9db3e9ac0153fc9a4c062cd5189bea26cc9c91a9825adef4330171a83920b4e38ee3105fda1037a7a305a59c1f6b5011774a1f705d0a6dfb3049d24b5319a0103c66de
+
+Key = c7e4ee9ad1b66fbeb2019fa4f5cab7dd41e6bf1d03204c641a601c1649054c95
+In = 0d3576d4881733dadea4716a7e751746df91c85ff0fde43dfbb0fae8a8c0af02fc82c558830f2ba0b8718bf1f2309f8a5e65505c92100c26688315f0a2dbe96c814abf8c37ce5024d317648d761899b65e77e3b7ebce63dd23e195e2cb13ae281eff90a76092540da72fa2418c6d6b55e4170bfa4ec644a1a020a68332099e
+AD = 36a0ec9a9b4e952dce62d191
+Out = 225a64712e4de5488190b3c87fc26f6b6d50ce2cf6de86016733f47f0260c6efe12e743f73b68af3be5f42379622d97f346504b273c16c9f12ffb6a76b60870ce8dbfe1f04bafbffd444e3162d8436efcf5473912d8d181a1ab7039cc9cd2944a2749807930a686ed02385ef095b82d9517b61c171da85d152f03a66edcacc80a16f4ea21e7931418ebbc67b9eb05a
+
+Key = 156c09e93e69c63d6be43b7d1d6924e6a9343f06861f6e007594cf172ad0c8ba
+In = ecf12d0e20d1597e58904cba452d9a5f5d6b53d2921432920894a728ae607dc2e0e8ee9254bf8ebfabb5f2ffc44fb1f2e2688bb0c9a70bc9292c45976bcb598df548fc4fccba27b10e25095348fff8ea8c6e135f27f3f2a642211deb6d2c93f68c33de5ec95ca6fcca8a81a79984ca5608652eb2472afcfbeab8de2463ceab
+AD =
+Out = c9abaec08eb2b1e0076285c32f50148a5910750e4d99e7c40b82ce41af5a7d8ab6788699eb6e26293d99caff04a36818ebc983a495064e4425ca301dbd9027253bdb6d59933309412ecac92f3ea81fa220046035bf1970c085c8e592814545aeda8c620b2e62109dd4828c83e7c85b6f5bad4c32cbb7d07b7d3c4869200854bbd9e012aaabc2f25ae52baec905f79c
+
+Key = fa3a8036617c6a5329f9fa884b5ffd3bf989f9f42a93cc9515af1dee50436d9f
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 21c0393a0f51ea82eaa6ff1f43f814920d27616643424d723e3dd61da1e09bfd73449bcdecaf2080e59b6b60c84cfd23cb6ed5c3e98f25a6789c62f3cab0664eda10715dde3af6a4
+Out = c3661e79268650b4a367dc21911764b8bf174a55b47c51a965bb367388e61c2da7b47999e4c1f86aef067799cc4840e84d7817a31284692c6373a3e9a1d1674f934259ee639885c38ddedfc3193316d286099557c881d049f3175264c37e6f29ae4ac2ebea9fcbe719750d67bdda7582fa8e41d71f224c2470e8ef9a5efad7d28874f7d4f0ee9daf62633f5c3a3e7b
+
+Key = fbd8043b98ed1807eafc689f7357cd4b060eccdb2a22d631d058c8f9dadc7357
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 3e9537b0ad349d0a321a5cdd4fb0dae7e1a075dc1567930e0125370d94b971cd2e0943e630d4dc070ca22aa537c920aa160cba3a1b549e056b2a3b9a280a999baac26d3a4e7a08288cfd3c1c3d9c9bdd766fced4f8b25e3c88761bc3b8f56bdc7eee79c6ac68a1e2a1fd1191e289d78830e8c06357a179e35342605996d6aa527a658d8d5119958157b02396601d74
+
+Key = 434c85555be8ceda389ed5556e81d24323efaa23d17ab75fa16eb353697d994f
+In = 89d29e7c6d108d76ca429289110c97e9d943af2ce9ddce0632f71bcfc1a3d208fc6c5c0fbb616a013d08ef90b46aa943169c7b39b01d7e0fc6e435c009e0543c562c619c5c0032c2831bf0b5c1b262c6def58d6311d5b44acef5a9d0a1d08dcc7dc4c7622883f22eb45884e59a325763822364f849d445a931a2b8fb85df151c
+AD = 4d7fe42839f2024f30573f25acfd2d0937ea73d23bf7df7612ba5761811a796fc3
+Out = 81cc795631d620b994451309020237424e4c287a366d1004610a86b9e59c124af6c40b14c06004bdb244e9261d060006505da4c386ecea4559013c0daaf5d95b96713ae61e7d2fc2e7ae8708c55e655423301dcd4619380949732845ce7f9dc0c4201fcdd7492995746974c52f31bd910c41f5b5de247dd579c6f3374d7257dcb8791a7f1d55f65ae6017edef830b7c5
+
+Key = 833c0aa14ea306e3ddeedf53458e1930e3de15888ad97d86340468024b50a17f
+In = 8a402c1c60eb513405f2db261dcd14ddedceb4b293baf421736744684e6719b7debfd79bb5ccb4788309e23ed7d04caf3b33e414dce42f8f78638d98ab0c079e3084641465639868e9e72b0695c2386f6dfe912c312e150a637fc76605e7591e7b6a05bbf2e97abc4cab8673c7582402ba6808264398ee42a38526c3a450ef40
+AD =
+Out = 41d9e89f0412395ea8106214c7bc289d72a4b0c4eb4a4c6970457e2b1c323d3755705b9403e4999270f88e78bb93f59ed72967d90d900e9e215b4ac6b3a9189edd3f27e8db65de0efc63f5382ced2ed117b527138f9fcaed60228174185a0d7591680d6eeeba419fc01f9536372b809c681ffe47a617acdfdef6fa0b09512acb04afd4471ccb6db74e3bd7810c007898
+
+Key = 3af760f5faead996b0aee156ee31190d7ac7c44bceaf28cb5f76f7a9f25f7da3
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 8990484d014445bb0e2dd46fe1a22f49f1c7277ce21979eae3f214e43d613e533761d620245449f6ff9a533405f741965079297a825b83a2647962cde09e7129ea8526e9c1604a40944707dac495f3e4bb5ca1fee3ed08e4
+Out = 047a33c362413c408f304577147d8b4ec730d345401b0eee98ed801b7f21ab1ac47c78a9b5234b6c5d73ebf430b52b5307d61dfc83fa191c3a98d847bdf4d3c194aa499897dba94f3d98eb8c7ac6b0895affa2b58363728e637c27247322bcf2d94aa8668c80f2562e7602fc12bc7e5408ef13a362422ab2c75ecd38d17c6b8d70d4157d348c411ac4eda744c7dd81c7
+
+Key = df2ebfe892af268cf8297731d0f3a871b47d99bbd223e56f7d43ab77e53bfc70
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = bca4a13771dc08e860362826a1fe04bae8738788a036d5299cb1c7e0cdb506cf946aea82028cdd69bdb52d8bff22034d8c1da1f2089c1434f3dd13ae69cb14afbf5cecc6cca877b4fedc232cfa16f9aeae770369659ac42063e11953d7f1720198079e9c073f3510211f7f52968bd3b8cbdd9b04d50a4c09fa7e6390217343383b27e08d1b2f761514c7f48372c56ddb
+
+Key = 1ad4bc6fdc6cd17bae301ae6248f082546cadfb2fb0572c235b32e3758b15d63
+In = 0138bec5913107428dfc583820dd554e7905852f863fbfd89cac5fbc1a7c3044f3757e5b395706a04242306db184897fc7736cb5237991bad1a511f3d0e7b30f7bd898ff73f6d6bbfe1b2ee81b27e64077dceef28b7f82f5baaf1b9e6f6074bbfd0c4912714b5daf837a00654d2fdca52f5e9a005351e585ecff3714ee511820c6
+AD = cd6e3a4ae9be0616
+Out = b7a5e19e50092c6272bb31dad0edebe56e3018888519da1e6e4075f9b24ea0af3351dc8208e4006fd6a2f984737b863309581f4f625cf678e59bbab62fee8fdcceb368d57b1e1adea28e740b14c5bfc01efa6271b2b40d86d4d5eaba0d82a2b991ff9b6d10cc997ce4a7cfa65def527cf00af14859454c2985e157666f9adebeac4d9649042b2e525c2ed10322d5c2a6b1
+
+Key = c6ce04d95a0912184c921a04299b49da6db105611e323751de08456a35cab10f
+In = bfb465b4a7a5e6e5eadff12bc70b872236f859a4cd24a9c71c0d60ae33e263d4d74554fabcfeffc8cf8e2e6d6371a74bba35f49e6d451098e7c1ff1ac5f26c3abcf3a2c71d36f60f7ddad5c171c22630c7851015001e2f57fba8a9d6133a45b8f3657d67a61d07f83f9eb9276191847f2198053c67859d2d85acaf7408a18de6f3
+AD =
+Out = 133777378e8f32f2f92f0d5d1feec6971aad1a6394984c8462e884b9f46087451c3c9caf6bf0c45945215499d734cbe5de83ca5ef31b5e56df3c693878efaf0c0b71fd3a5cd1ac871c2a89972772da941ccb989b6bfa8e0b19c1e909e6ea1afb146e5b87150573d10457270aeff5c791edb21458d615d58d9c628d5dbacb0c2dbb1ee44064be2f95017f54021f3f908399
+
+Key = 9c604940b90a7ced55156e3e4e56e89ce6875ab5d2fd2fddd3e1fcc67ea9b7ec
+In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 116c4094a028e15001fb6bb58aa6d597044b345e16cd67dc7d1717d7ee1ef76a8039b0ec96e7e63357dbc9
+Out = 365f4ca0e9250a2d034aa09406a4d8a0e17fd7411a7a69e67be11403f0e5be3e249046dc24c4b3c4b7ca7f293d40cc7741678dee8fe558826c5b99512a65fb51fa73ce77588c65bfe94146ceb5988fb1c30bf867160050d33933ed12954762c9e9067c154e20837b2a3675f66759b8ba076a58e0ec13449256e1a49037d6f07bbc06288413f47898ab68cbb70ce1cc44ab
+
+Key = 4f010f246e8c8cdb94d47cb18c9a2979b98b7c633baa1879a07b9c74659d14d0
+In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 42024a641c8ddf270ffc946c5b3777dfe11a4499979e95b48d3c685e12fba4f25d1a2923258d660c880ff872bd400b0aec66a0c8ac05db3cfb1bd4321e9e04dffaa4d0c24de7094d320a7b3327dc0732d71e45459930abbbb9f9c5d0272ab6e767afd6c0e046470a14a13801f0cf549d485a1a763403b8cdde6876eb200d2b2d73ff9d361d8966ae750af35d98ad68dd91
+
+Key = 7725251c9398f4ba564b0b7968abbb58594acae53153cd8b7ec5f93118da5c80
+In = 4998cdfe80f5bf1db4a74c91dbff699841101528a614b34c2227a10298b4dc24db83e513bdd73729a14fa8075cac637e1a726c066e4335b51bf6241f438a92e89d8e055deb441f0c1e81cd2a2a819cbac050a3ea53f7d0630ba0b3895928d4bf951a8f3227a69b650b8fcf5f054f8f7e50aff9ddc1ebe857b4000bf47aa00ec117074587bd9fea467d46e5524bf5bc1459dac65a979784f2fec1e441ba30f1129d1b26c5c14618ee83bc5eb67d0eeda6c9c097e56b344c89da8ceac1a0f5a120ce4d340abb078153486828ac8587be432a0fef02a49987e117cb16d90e7501db913795788a15744ea80dcf019a91bf8835014fa46fa53d39760504e99cc98ab616c55023de144deedee060a6e4909cbb367dd1098746b48cfecb3cb54458b16bf9cb6a6fc05c01545b7036d00fd5ece327ac45e55d4a4a3564cda939cbf757880b197aca2843fe5f5c25c36067cb415ca000be01bd8c707b31327854fb12c4d55eaa07793849f4d3e77460f79bc2bbfdda1e95fdce47f7cf05ef634cf965b18ce10f704f40aa8133f684bd0513382f855bd666af3484a0fc128332f33843b33760339eb7680f3e51639e13ab97feab967c2da75025449764bffc2fa6182410a95bfe9a49a692b469738a2a90f79a393e5ef6e6eca05a55ed709c5b9715e3a42dc692b9841f344e098699ada8127e5cec9a168a37
+AD = 273d6e9e8ba30cc0326b26fa446c03f368d7ef41d1efa8c949693e63da76
+Out = e5de1700c062194724e454c98361d70b05efea469c0eecbb2c6c3b7c94f5c28e39da5c0688c7f0199b39d1e68b60eb8a96216cc0547972164880098b07e6daf532376bab67db3f92dd1cfdef76320e607d4149a7cdfc5b5c6915baba0e91a6a2c838c047ec85c6568f2df3f460cbcd4dddf0e84d5d14163f593bd46f237cb86e8fb9a6662ae889312f25dd00097eab16eac1f601a2b3a34a190d3c43b8f2b29f86797e462983f146b9f1a7eecfe333c55f597ea5653fc4364dfa6841368b36d8f5ca55990f82f5a7dfe37b79fef5e012798ec78427c615aef1e4bd59bd88a34a5776d3c919a9aac697ac27c789728046558dcc15f88b90e684a54c428f008038f0dba5f5e688593445dd5a4d97b7b532f62659ad441a448a6806fd9abdd8954d1f345f9698826fff7a8a9cbc4783014d91c787d8d0c8cc3fa54726afc3aa6a4b6f23fdeefaac4cf2ab32ee29d7477db0eff5cdce6069a2c80fbbba130004c579109a40dce31aa1387404b1e1286be5f76d2d5fa9d9812f7e70b7a6bf7e8f7582b2977a14cd8f75e0eedee630e8ffc7e1afbef1b9098a7c69adca41ad59c86fe3e8a71174bd4f6cd5f8fdc0ed168d3b6ee803e4c092da572c97635036479448c7f8e6fb5cdd0f44ac1c3dcc64f568a27e345d5eb985bd981527616f2a53f828388ba1085eb28f44d4fe81482c74a3511d3e962152b80d06e8256d8b0bf5e52f1f8a65b375
+
+Key = 9ef28c781455554f1a5ab62206ad79d8e35880fa06c6c0c646467cde3769c7e3
+In = 3405fb827096c3ec2e8489bf3365146c6446e38e41a7b0798ee2b790713c399bfeeddb97d02769fc972cb05e5b8bb5e5dced9fc1861aec3b516b877c894b293ebd2a7558254ad2e467b27457894bb54758b44351b20e2707b5cbe6498306e8f2255e01954567affe562dbee94c07ac9b31c7989dcf622bc3b01ea0c3289f2135967ad65a7f5fd3dc45003b528ef4e1e2198696390698d06bacbfba698877b501ac843fe7a02ec1889a560940a5ad777acec65e551c487dedb2abe10a29c7120c95a8258b23856322cf4ab31a99ff9d9782de9fa64131e847b3303f5bfd1ebb08b06f8604d4499e81f31a723b9364c7d3dfa418c65bf89dfcab87ff56a5b48a68858c88fa7382e9cb856a5b898586dcf329b042751b6914789f3b139c4a3368d4afd1c46000bba9e2d0e22ee740b1254b0ab50e44afb98f00473c4b0f5390b28d61fd73e36e2b8d8052e986ed56f243654b0a9a10420e20d6c0a0efc8dd0d1f53f8176380efbedb81f17038261532356220d0ab4e69090733c456c6dd5f2cfb5ac84969db669c47d983ab4200cbd0f00496ea05213c03ecfa28fbd76d068d4e69b3234ff467c89ecd70ee1daff0a9928a0a91da0c1392492780d69865ccea439c006b460320465f9c6f91b3ce6b5fed749626a157f501d28c5b7b668c1e51b7f1ef52339310e51e3253b7c495bf41d2303385d9be
+AD =
+Out = 31b0a9c77bef65be47d34eb2ab365504e5b27ac2962aa960c327018b4dbfac25855c0c53c76070bf0e7e0f12827b40840cb782182a3ffee098e130ab73286b5788e47fb638d249ba60ee16be847f81590577ce95250e284b7850f3b146e88c510a83fb7da7f2648fa6f5d2de9b36abb9725b5ef2cb0178218f5ccf26ca21df8406920705588d8809d6cf0fc5eebab90cebef9f658f2366ed4c0d7a15821f93830e92a1ca07c09e021b27664ab885b338f39a1eb5f6892381b87b59b6a8504df30fad8bfb0bfc64a8ac199a32a6a54fb4392663be05d0adc44e8e981f1e27853af334ef2d741c5d924e4b14812f7e21c27334cfaa10ddbf020729c3a87939cd0d996ab29ec40d01376e0be436d3d33618a5b40efe28147e618c20cf432eb29d2c559dca0e9c9f559a69752dd38a78e9b20ca40e63faa306d19a64841b99c0a35c4524eb90e385df6e99f2d15d1257bf64cbf176ce55eec833a49541693abfcc083a6312b9767d3098f1680e2165fa244ad48347c4f35c2871fa2ccfccc3538a9d2c29912f4a4f9557445dce0d50e6e8a565f73ecd0fe831f6b513374fe7ae07c8cd9af5bd36575ef8faf69fd1fa17c73fa995ca92353cfe458051982a2a54f550326b8d625b05a5f44a0ba5408ea812c2352174afae4d5a4a3c83cb79e53eedcae34bab5e6eee7dca609d19922be759d3032c3dad813eeab027a5474e38cd5f5def38a7a8
+
+Key = af5e5f0dcbacc81c9012d87a5e76911d7199196af14932e9f4c196760f667a38
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 7e4dcafad811e55e8cd60631140bd0827de6fe570ee4937e9d6a57cfa33db56c661341dd62e886077fd6baf4abc2629370c44ef28d7bb25dd992f0929bf0fd7e89d9627575bf73a01e3beac5279b6940d38a122a4e5c6ca86db17fa80f7aebc1d6d365
+Out = bf74515fcaa2495b2d28f7bf167e3e6c0874e1a17c5abda17aa92a81ca4c76666e47c6236e84d2d4c385b4c44316f9a78fb6d04e1bb261b4907bf2ad188e3e240309957a928d712a631f217633f95b05eb01e1ceb97aa94d858338eadd45aa229f4157ec04f14bd55067f4c7fd96cf1b0c21f195340ecfec886b3e90d09b723daa85f87d64ffee6944be9050859080d39cc662e9686aceda2852c6a07b5056c27e6c29aa7be3ded681b01cf5bf65672f10128981dd219d41fcc2a6d13eb2539d7e8eb12837e6e81d056d7c31923fce59ecc7c4314f5bf9b36fee800782d39dd25efb166eb558249838881769b481e3a223bb0cae47764f43d426311e36debcfba0fec5f158e2d30dc44bb571b19bb1cb483ff7bfc235985350f5343427270b0236d3e626db84b4ea1f823e85f3efdae0d00e4d472a5d398adaf1ba315b8fda8d51e780a1413d8667792c302f42ff4cf735d76878616765f88f4613ce1664efcdd95039a6207b27ca8672b8f0031dd29a5036134889cf2a23a985f95ad1367f98362112794352c87badf7b355ef54c793c487379d6d859045190c5e1493a8f4298e4e38952d1c4bddc51e15f95c4ca884a0882f67bd1ef89e61e22bb8dc25e6bd792d8644c5f82c0eab59cda10085ccbdcac60e217ef464498fab2c4384a7cef4208ab1fb3461d9f7fb486a4b722d0d391e07a29d6333749949995460d17e8cc056fb4284
+
+Key = f2f28e0c9fe3df1bebcf3279fa5fdf191451adb6ec8443910399dc86293b1abe
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 52cf38f618a54180802fc03935196b97aa3aa09c90acc6155fe8c68aec9a7b2bb8b5eb5d334f2efc82840a29178008b80dc07a9fff386cf87cbef5ffec0aa3d0bcbb20a6b5d2bca861f28d6a9afff941fad51c59d12400f2d46e7c359b482a58b452a93fdfc7176357373230c7256575ba25e249c9c4b49b1d9f4b81156094cfddca3c1ecdf0c84715d5d128bec78e5bb3295ec6a37bce2973939c39a83aa7908bfcfafe2a755647ab2b4103afb0fe03f619aa9098aa146817d59197b1e545835b0bd8c7ee7035ed5e7284325bc794dfa51e87cf0c7a60f88c8112ed8131fb29f9779f1e38afc3d8788febf1010212c2feffa64dba4e0e91975cfef56b903e945e604c4aff07be49dd0fdfe0f8ef6203df7b43b673d6a4d0917ed41386555858445208d1697f6b123215dd309a33e4c18c1a41302ef4c0a7f2baf18f6a8c43b7aa65bba7a65f4df3c57db31fed822e60fd3e1023e74471887c631246599a33290420413c826f7e640497eae3d2fe82fcd4d1f755af712cb6b6c4f1bfec7899c17870d01de083d1175427fcc41d8734a7bece4ae5d8ef4e3817d7943579b8d41f0361e9f04e94fe45d81cf500e7fdb6069b766fe07fbc9e108c84b6cc725173f732ec2cc873bcbd2883b498852b751dd760ee117fed8ef3dfd3ac90269e2e06d52a7a745facbf2794dae71326dcf93f970daccb636e18a73cf32e3eb89181c45d7c88bfb0
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In =
+AD = 2e5a70a6a8ecb71d0800ef2cf71dcaf578392fd231112a9157d69dcca3308799b76fd6774bb66e7c3c72356cf04dca502c138a80c27033e8cbf69bf7ec10c1fc13668d1a3da85f6afaa460d3d0c97a510deeb10f11d8ad28
+Out = 17b27289e28df81853929c3bc392b409
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In =
+AD =
+Out = ee1b98fdad31f877c8542eb56cf30fe5
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In =
+AD = daa9ced777c3b7da11244067ab556c1df0a3e8738ded04becec78a37336f6128210f57261080649b1c688a3350d7f8c29ab87650b960da5d7d781199de
+Out = d7b205e17d5de42a49528d40b61dbf7b
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In =
+AD =
+Out = ee1b98fdad31f877c8542eb56cf30fe5
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 90
+AD = 461d68956cd1d2b2f02e3288e81fef24cecd7ecbef8c432215ee64e55480bd41feb5e3fd850a487f4a3ece09ab4b282f29902870ce8bd30a56f2fe9e35ee22b06196ba484e88c612ee9c32a91712056b607e2b022891265b9dc9af3279b4ad
+Out = 750dc9eced5b04bb933c30f106c20c839a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = bb
+AD =
+Out = c1aac99e9fbbdff8fbd2d8374a287fcdf1
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00
+AD = 7c53aca36855625c8aeb92ab91414d0c6700d7de46f21dc342f8a40e34066153eb501286f79eb00120a53117ed3cc3863aea5f765c302fe8f28db1c877
+Out = 25e938f4f1f43c08f1c17d8ac36a454584
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00
+AD =
+Out = f519ba1df2eb36d3b01f7634d185e39e2a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 7cc3
+AD = 95899da598cbc1bebeb906c222b6dd91063f4f357cec435a6d0bb1d5376bebd291501cc34f29599b5f99aeb7e51c576bd8
+Out = b3fb35990c09c50ae9aa9b1574209d977ed9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 99d1
+AD =
+Out = 88250983b6292d4f63566f2f5c350b1def18
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000
+AD = be71e0e019b5ba2fc6f7766eda7d27ff91b4d351f7
+Out = 10b1c0fb8d0cad950b9d534b344ce0d8a30c
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000
+AD =
+Out = b24924356abeb32c9df1e42b9f727f216985
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 20db8a
+AD = 526fdc742005fbb916aedbe417cce3b0e4e977e8c868a3a91243a95f089a3aefda22cf005db42031dac732650ca08a
+Out = d34bfabb3afc6513234630aff7b90facaa8498
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 81357e
+AD =
+Out = 49edfdb6c3106a612d46b865b2a9c673874b33
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000
+AD = ed9c4044f49ee0b68fd795f87adf1666ccc06d5a2d8030b002b3139a2b75725af48f0b9717205ec6c641f4a6f86b33c2b253723d1d4bfe3900480d3e113f764683e909fd442e16d437811cb9b6419e34c5ddbe48c4df9d1b835ea14bfb446be7c8a5258867a07c7736778b31eb54d98a0b4f8d13a208cd044bcf44
+Out = 770268cf8fcfcfb1ff0a82702b064ea3e01c6e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000
+AD =
+Out = b8336acadf0d89f857934ef081b161c5c5855e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = e6ac4758
+AD = 0d87c21d4ecd25915155ba33a7374621e9339f76524913aa1a8409209f8f52a95255c67f70a7205ce34e7a06f65091e11f5ba29ed280934c25d916f35df4b8c7be568392f33fbea08d24b86e4cd17d6f93d51d6dc3cfb35e9150e7ec31ac1c3b23e4215194ee80586b089746cc8fe4943e97a3ec47
+Out = 41ba14bbdc59001f84d93bf20bd60fac0f5cfcad
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 82eb82c9
+AD =
+Out = 43a437b859e3a1c49bdf2e70513ba99fe0f096ce
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000
+AD = 30c43d1301c2d94813479ea81cfc780481cfbcaf7cf4dae7bddf45523a8bab7bb3b160112116c96ad37f03624fde2b71cb6a1bd23611d3b501f6907b20d9bc1dfafd5ea8ebb56b033b2ad1bb0880d9ad508b40602086ce2da7aef3cbb98a930de7cd01fc9a430cf0a25d71783fbafe9741529ba011f336852eea
+Out = f64dd8a54131e150860afd5b60db6161fc3359b2
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000
+AD =
+Out = 565a322bda1b1aa89fff5fdca8a17600c7a83c1a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 8f249b3072
+AD = c7512fef2cd7ab23a4d3
+Out = ebe8bf22cfe058f558c32a1a234d75981ef2512bbf
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 89c2138a77
+AD =
+Out = e3b2d3f854acad96696b25b4646ad3919d42b513db
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000
+AD = 387d8ee4645fe01276a9e1ee11d3dd76694615cf7dc9cccc8c26
+Out = 8be5f96be52b3011aefe8ab723999775a46251da24
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000
+AD =
+Out = 33e307650e16183c8bcca11069486e47f1d1be1ba9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = f75275730adc
+AD = 6fe44b8e2fae0e566b
+Out = c1cb5b0984bd518862e84692795ad5161b67d12d7b8b
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = d8f57d6deaf1
+AD =
+Out = 0fdb0a9526241e71b0746dc80f3ccdb5d0037eb25d05
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000
+AD = 7ab362a2b4cfe34c0e193aee6c51238f006c2544442e36807620d8689898126f62be221cc4898af1ff7b8778a0d9224f376a4d3decb44861fcca2ddc363cd2c4da2465c5cca64c35ef6c2f5686a6e2e87b947b8ee23b5e4e3f
+Out = 3771b12ab8d6ee65d64b4a7ceaeea8b93fd3dc3ec0f7
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000
+AD =
+Out = 23ae68a0c153bf48b2b9a81f41ba838c8d197f9a4979
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 07731b850ef9f5
+AD = b33d55bc346354cbc6ebf5fa9e3532b84ff1b117e554da9c67de2c8d13fbabeb3ef13b80d14fae6828bb33c074cdc4f2beeb611f426f8f9232bcaca3c55ef69a6052caa38fce567a7090346997609522194da2c2293458192b60d18254b3f3c018
+Out = 3277ce8a7d68681c99f79bd0e7977413f2d03f4c2f794d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0bc2d9550abf2a
+AD =
+Out = f1a2db230218a253b12f8b43081fdacd685ed7da1b3a8e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000
+AD = ecc37490f1eb4b
+Out = a0c5b2334fc2d70b9c76fd2324b009923ba6e572ec6547
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000
+AD =
+Out = 364ed6e0c46d4066c2167bfb22ba0e9778d0ed8fbae1e6
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = ec6fecf19e60c464
+AD = 3071bc0d7fdb958b24f7c5048861c4291f035ccd28e0919260dcb302a4e1bd25591723deee824bc0edd005ebce911ae27180f6d47f2fdc230dddbf2e69a2c287e26f4af24b07b3cd0a9bf866e63965a055d16ed4a53f
+Out = 5ab90833a2359ae556d0ab29e227d92c51e403196ad8178a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = a853e553a55cb004
+AD =
+Out = 156e6d4a703801c05f1e38cb86ebb42994588039e75ae48a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000
+AD = 6c3e175e2e31c969abcc85d90240c6d1be85992dc2a09b7310a8ed2072390bdbab66d02905c37d198546e076f9059b0d4611f61d2966
+Out = a1c68175460698d5d08b32187889be7971b7a4933d10f4aa
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000
+AD =
+Out = 9f1c3b43b1e626ed72d07f87c965f7c404f1c257cf01cf6b
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 3c104d840fef141099
+AD = e14e92becba6ef2d428763072c5ace
+Out = bb04e3e4889495f11080a86dfdebb717da5539d93caee011fc
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 6395689ab9ce0f6f35
+AD =
+Out = fe8285c1f834d0b98e6d642ace061c1c781c61f0372a2840fb
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000
+AD = 5941cada3c0c2da651a2e7dacff68203b8cd4bc0f1871f26d6fa4a2858ec7141760a2614b1715a0491a4e68ef963d46b0cad7936069cc15f0c54
+Out = 7c269c81aadf19870e7112e829e20c1b9db60ffc7a6d15afd5
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000
+AD =
+Out = 043afce9abe9eb34c111fb8ab888e8d4df9ef9864ab8b08893
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = ab8f64693a65424a46a2
+AD = 682b468f4789ba38fe369063dc1462f727fdcb5822fcd9851436516712ec3cf6cea1ae9c
+Out = 6a4d755071cca9f91ffc5e0a517148e67d766d6ad4cb55159f45
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 467470a349668c2d4413
+AD =
+Out = d6a365a1fba6ec34bb8c83be5adc2d6ce9b69a3f10775dc3228e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000
+AD = 2a54351aaea6347c5244342b406ae991f12f62aaec8470e1308cbe85e95e00ba083da2aeaa5d5276f483ed61bdddb0ba8c93890c2f525723d4b6b2b13c2e3b3f06134cf403ba10ff3b08d948ed3fae053fe4741f0ed1df3247744fe29d437450a4546e1f51477dade930f794
+Out = 97e826bb5e6b9e0247690ee539373b45a9df0a53548fd3af58e5
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000
+AD =
+Out = 4123906131524a843adf7ffca281356635b4d86d71654e647b10
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 1fa855132237b0e2feb97d
+AD = 3dcf1be149dc2269cbac1834b675113e60c552502ca1a4d4fcdf05cf5b6487cc4885992abab3d14362db8d66a4f4ce92ddd42e0c260e4dc13e44d2976ad080f57e7ca1ef59c49253fc799c54ee38a4563758f541c8fe3617b1efc18133a90e924e86cf74b22ec3f24b2b7e6c71bbb35a
+Out = 8056cf443f731ca9e1a8e8ef3f00e2fb8b0aeb8237330dfda333ce
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 08db36ce9672437c49c17a
+AD =
+Out = 1e069c53ff034611ec8fe9c8dd7c3a4ae53680f9359c4994b9dc48
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000
+AD = ad8a2c8e27d4ca78f7ffc8e1969670dfc479edd1554904b642f770198b330c5dbc1f51ea21800c544f14cf43b09637914a3ef771baa67ddd83fc716602a32e3df4b6b2fd07845570cea8cfc731c359155148ab053038e5f418c102fbe10ee1c7efaffdb3a703879cf04944e38b2a6d948f58f2d13d24794e5e
+Out = d4c19df611054b7f07e9fbd9c2b9fc6889a549a5582b32e5932681
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000
+AD =
+Out = 97d0f09d3b833874c467ac303b9e9eb97145dc98f13908705ac002
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 109ff82aee39518d99ea038b
+AD = 5a9b79efb4147edb70cbe487ab96d427267aa195cca2747a5daadd9551e7cf766d7825dd5d62438b1667d859b155e8fa65cf1375a43540f5eb62cc5ea9760f6d6ef81fe6e2983748222c813354fef953eb65025d12240f
+Out = 6a1fae294becb1dca7ebd395a598f26005b675684fd54c57f8debaf4
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 7b551fa9f64a2126cf290681
+AD =
+Out = eccb5e827b40cd21c57c2f24633e77ef31312331d1cf0c15cda21363
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000
+AD = d77b75e22ad63ec52ca5f7a8f11c259ed236f2e5b6604c3a5aebd6ba801e1027fc41a1a18b3b3b8389e60f05e575cb277baf644624bfc2c9b3affc629900f4bced808be3f44c9b5138137bfefb3f31fa7565457adb34c7b271c8b1ba6c8690c5e8167831d2df51878d3c91f82715ace822b49be94b9b875f3f80d3d68b826e
+Out = 4c7c7f3a2b95d7942299d813b683a5ab25ab8fcee440a439f757a75d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000
+AD =
+Out = ee338cfac02cd0e01a546b1a5d3626b0055e5afe276023970e8e4c3e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0155d3e8d8df3c923daeddb77a
+AD = ebd0349c80c6a7c9312761bfc5b1a5f59721f627978cfaa8e38dc8ebdb36855318bf2eed8a20799e0d5df1c832c00add568db207b2c177bede142ea05ea222a25c611ac4f35116df5c038977b2f3380b5449af10991c54637cee98157407bb278cde3c8efe3ff776945d794ba728
+Out = 8d036f6a79d52924fe9732abddcaa94764a4187774ce3d145e52e024ec
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 7a9d8c29ecdda11cd04dc9f0a2
+AD =
+Out = d1ec6207cf2fa4750166343b4ea4a86a2217d290591fa234bd1de2c51d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000
+AD = 31c1c2f6c88e666dd86aafd18a646016ec828126c2c68b7e
+Out = 47fb9bf3cce64bcb61f1fd38d3c29798bdd7961b74c2e50936db2112f3
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000
+AD =
+Out = b033db4414155c2b9c7559e95cb5334b5b6c04f439528cb2c569e045db
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 542c57c51f94aecc4fe1144f6eaf
+AD = ef31c72da9705760d143ed3322f3588f12ed2bd35186b57d413d71ba86a406650e4ca36031d6
+Out = 0d5f9392276343641c1383e3094a0822d101eda1c7a5a07a0351d7e75cbc
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 1c313de2e4034f8502314e0cff99
+AD =
+Out = aaca1199633b118445364e5f64598e081a1ba256b3ef403291a691c8eb60
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000
+AD = 5e44a5295f06341d8a181a9f68b0a32f672218728e43a7e5724b1bf19d31b50a8f16a4
+Out = 32f2777a406778303b64621a3f5f0a32c494da63df87f7f14efb9cedac7e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000
+AD =
+Out = 7971d7180d2c46d503aaa45cb50b5b10595aeed9049d1183b89c9796a4b0
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 233539c9c0ca3a546679f4bf232857
+AD = be57f1bf056e137693d35b4978348816ba3f8bfd92df1e53b0d27dd3f941fb2ddf6f9432e7d2d37ccceebda4ca598440962e2daf843c20750ce502669f0ade6bd10512d2492c005611dde448e13dd31eff6b4339621b7d257d578a8a6ff17ee8c11ba1e6ffaeb3
+Out = 04517a4a4b07e7ff6a200aad1a6302ede5296cafd37d0a09be9db5d3b8c902
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = cc20ee3fcc61504b611fa309fb78f5
+AD =
+Out = 9c996cf4b3bc29cd933cd435a3e4a928250fc06b3ae7a94d1566e15e7cfd70
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000
+AD = 619eb9c1dbb5b6b52dd12a8e4e0110ebc95561c2a40f2feeddb67c7f8e5a2d007d067d186e8a71ac621e6df7211fb2f0322325a411f6822782b09ee74868fc3ee5a04e1a988406c8683a027233df855826425476f0cf275738f18595a7f9cf3d80db083a6c786e363d608b671d75f051d9fc7366ca412f36306b4741
+Out = d1e7b067a1c2188791ef3f999defb7285ce8ea0a350263e84510b295f2625e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000
+AD =
+Out = b02ca6a8deff93be60f6fb52ceb2c1f2265290cbd8cdd13915918ec0038721
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = a590d92075d1909cc3fcf63e4efb2651
+AD = 75daf9733097260b277938ae357199c637113868f3f946955be86d14dd2255830279b67cd453a8e012f41929a202b8d8804d73fa499795d0d166a728e5bb1b1985b7646f8093bdaf284e5a2684163f457b8551714c0b44f538
+Out = a6198bb5586cab246c4d567c1e404386f00fedc5057326f83bc8dfaa03d5309c
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 7628d4142eb29cccbd286f554d193d8c
+AD =
+Out = 1424b1f1ff59f1c65c7194e52bc1260e387421748292c010f9aba35d0834d19c
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000
+AD = 81a17ee4d4
+Out = 5916639a8ac9226c1839273920aaddc846f4eae11f2b2927dfd4d444562e837a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000
+AD =
+Out = 2a2e03aae454403c077aa1911209c45c7ceaca88a5c316a7ba43e3beb5dce0df
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = b736c28145dc632dc13ce972a5b45a2818
+AD = 5f11292faaacded8653586d7d5d6d78ca61e7a89159436e535ab2cafce18c8cfd7b68d583d
+Out = 98a5ba7547c0d4fa1ce54e459110a0cf80c76976730d2b89739501629b5deee217
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0e3b182ceb0712a51853806193f3fc44f7
+AD =
+Out = b3677e7e89f54f3e048e2d14c7a5dacda653dcc08d6c06fe269548649528e95e50
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000
+AD = 6afa7cab3f525e9d8667bc79dfe55fb61025a689f47cdeb0d487fe93ddab14c4ba900ec8721fe1016533e71de35ab64ba1558d94fe581b2568bc9b4ed35e0946d85caa778b5ecee4932f0fb619c00488a897873589c4d4bdb3488027503d5e
+Out = 9118b97a9f8a71c262cc10d3ea988d20ddba7190f7e3423fa0d1f816e81a469b8d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000
+AD =
+Out = c909f2761580bf8aa49324dff16daa2be073e356de24238a2fc756cda4833f9c17
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = ee9101a1f375bd65d5a8bf3d716dacdc9bb3
+AD = fe2f9ac991a2394e3761953d554dded796e277f6a03086ab5374b44741297512b47482e156e228064c6d3953fbba61114c51e47f15655d57b90e87d2cef51903ba
+Out = 033207686a7d32938a11c0eae52c09845a785dec9bd136ba06504bcefd1629fd30a7
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 395576db664ff9afc39ca0ecec3f59c4bbe8
+AD =
+Out = e7350af3e2aeb6e22f4176ffa6984586d5a58ae24dce982a8f04bf56551223ab88ce
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000
+AD = 34c9a66a
+Out = ba079f2428d9fbc654c1fad5d16c16bf7e80e7c9428c0a8c6f62445efdcd6ffcbe08
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000
+AD =
+Out = 7a9737f3b6ec0e09c2b6727ffa52174a3f9fb63fcfe6bfe6d4f73a7e9f1c44272b8f
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = f5eba7381f628d315949a9db9a528e6d4155a4
+AD = 2bf73ff26ed1273015
+Out = 96a550d75c9af495714a9644251e8e7dc641c4a08363f7b0367526fdee93ecffec6cf6
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 2cf39d1aaaaf04adf2fd8b9e046e896cd994e6
+AD =
+Out = d53ff0c83731eafedcc99b0744679d3490420643e9fd8fe107da723743f396f3c12c30
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000
+AD = 0c052a2bc4e2de22f221efe052eee21cd8a071ef17805b36f776d7
+Out = 4962f5a8d1dc55f01716c20979631ee75e92846cc5cc300f31a1babdccf6dce26e9b5d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000
+AD =
+Out = 7c1f0b9abf452a9713680f7869292578e2f6bb679fca350022fe961cbecd314caa76c7
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = d93510cc7d670e31108ae62b09e1e349c711b10f
+AD = de581b358522ff65aeb1442bead83282754c974a0a2bddf6f61086a3c16a5ac8d6845a58fb6dec84344088b913966ab06dc404a1b5e5a4f7918167c8d6c0b4b0f22608ba6712b0e34b8aed3d0daf6b0d3760cdbe694343d16a8812d23af9194ba35fd067f976f3402529d95e514e74a949a7cb124e8f8e1bb3fd
+Out = a342b152e31d78e4dba9f9db6258b1388c73f62706af656a2d91b67496056207db089731
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = ed0ac2d939bac78a669f55414ca83a5fbb8e68f1
+AD =
+Out = 86b2d758f8c96285c1814d8017a28b80bc50a134fe22254f63be1c11ad2ed7f57b4dd8bb
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000
+AD = 9771b4364480fe968228537d67b9e393a6887d7ee39ecda2e7b229bd1df3c882b7c79d5e5810cf0476903a94c913af0457bbd591e2c6192dd8614062e7c5f0fa437a35f0ce18a63617956315b0e1af1af0a7e926f237f08f327f424a97562290d47f99fcdf
+Out = 3f8bea955bc638b91cf98a3d4c8ed0d0601c255bfaeede4d3463679a8d0ee3612272eb5f
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000
+AD =
+Out = 827fd06d9024c509b0e76716a1c95c31d8f50e87b367ae8e9e947dbd05a756e53cab0438
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = c89e97610220506aff0e304f64277c361ba6f7642a
+AD = 56ab3da4279823a2a1bc1b4ce4be6de7a38732edd374b4490dc4eb8a6ff51842838d16363c3628cfc6b36ecdfe47942975384aa98ebac182ec52abcdf8e6b069963c397b7be82674f6c6455b31ebae3e89b388d2c25bba994dba03b9b61511a57b5d22d9017036e258bef4ed25933480befe25bbe260686e
+Out = 81a5324a31176cafde98785c2fbfd1962e33312145c93599563c79dbfacae683c52a1fc4a6
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 84066473e59c2098106e0799992be7e0cabc33f27a
+AD =
+Out = c9f0cd003b921d181e26823c96cd9cc9989b75a9536db23f13c3f75a50130b8c8a696abadd
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000
+AD = 2120eeb3627a6a28693c05130b8bb1b299dfd5ff07bfc673688d7fd43c27910efe761aa972c1c359958af2448036f6bf09aec7e679b238ce9f7ff69a6fced12ba99caf2e3cbd5a0e2a1ca592b5a286a2a4aa0d974925c31c717d3468b785109e5d6b2b9b436e5571db9c27aebef0ffa24fbee426a700dd99efa96e22
+Out = 9cba0fc14449889560fce977ba420215f7547e40ea34aa6d16f35f9934eaacb3175e34d055
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000
+AD =
+Out = a6258b24c81bdec38605185f52f675ee21cf11f1cc590fe9705c3ff40332dd05bed47a72b8
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 65b664a27c77417677368c5a6a64c82e6280c192c18a
+AD = 4a369e36800b359fe7aed86a0b68ffc2a793ffd7ce3d06e0f8351eabe8d4f0ae44561c45e81d1702df558f2fa5d753467247c28cdf07f8f02763efb307d899c84004b547f53bc5f9248d84bdee19945d6576acfbf79bbdcb72
+Out = 581586a1199a83a18e2892ec5d120b4aa00b0d0ab0b1e811e02354d1f33c8cbb6de870677465
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 407e4acdb72aede4c3ed2c476ff0162a7f47df123b92
+AD =
+Out = 043c60cf0f66bc43beb8d1e994577b372dcce5cd17db5954f134b54b3021da61f05c053a02e3
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000
+AD = f0e9f902844026b8f5e012e1888879b0c0fc3e891b19e0cdfe1469eaa7944f77118166f583d126ad458c31599e48b90a0ab1232f96e2d5a848365303a418db61ab9b33687e76c1aa81dc0b3f98386f6b9b1120856cbebc6e93791b67
+Out = 8564f6d807f4f1f1e42f78f2984904027ac320141a4a7cac2fa21e00a3cf978df15d10a3e220
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000
+AD =
+Out = 93c6eaa5680d0e138b60a16ce35dd1d9a4daf84499b217ee864967c59c1f08cd54c08a8bbc1f
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 97f68059a51d0f3499134418e6414f66c5013a12cd99d1
+AD = 733cf1ae95bfeccdd05efbe586db78f83c0499320ea45c4bde1573f30ef369ab898487677c048c5eb06ff73b6c9fa61d25fa698b41fa9c97d89e808ca2405c741518ef1c38d5b85abb9e360c1dff5030a7b7c645c69a703a289141fc99210c3c50b5a60e
+Out = d0443df06fb0ce83e780b582bfe57111c6ffa776a40ab71c2052cd5118ed4c5b58dbb015be17a1
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 3c5cfe5c557dc2452a7ca6b811df717cd3c69ce55a917b
+AD =
+Out = 4492071279f10b09bc184115b210b6e1a95beac5ed1bac619bdeed8e05e09afe972b014a5700f9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000
+AD = 673ae78c08450e24a53401a9c9e44d011a2373a52b3f7f9f9bc15a1286fa914e8977d9cb7642220633a6b077107d8c5ff65f68f54aa87195090c335de1de5ed9f9ef2049063a7b6cc00d35d543cfd26c21
+Out = b8d86471f2ec54f9fbe9533476d8986d9d2c78fb6a05502d3684c783f907cb2b3a958144e346e9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000
+AD =
+Out = 03893fce373042d5901b1f85d165b7e897a7315750387a9d5743d46fb6e6a127b2c627be044c95
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 78b183164c2d5d730741dc9c9778bb007fe1ced1a07bd75a
+AD = 5f2ef61db20cbef6df35d0922f1326638d778ffbb8faa74e61
+Out = 9a50fcb81bfda4c5f2861d4a49ab6ab68287315486472ceba7a130e9c394116b6adba6aeccb0eb8b
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = c2bbb93c6100252f6e3f0135136b945191c622c88ac9c4c3
+AD =
+Out = c0563135b4a4cb08caed32eb1e1b527b509b8c78f8d57344c73c66dfd592acb3f88cea26c6466b8b
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000
+AD = 059e75d48508d92f018d2accf9525fbd83fa46fabc6e16e02536e51e34c56aa20ad0846c4bd7504027b7392766873503b4b27ceda22beac8ae1af040c41aecba6820101c9776d81f0dc40f2b1f1afd27f95b5fba1fadd995f5e63e6dd2ebe472e2f1f5079dd64280f92d32947bbb98a0f5
+Out = 0c9278674fa87496e596114e0bc3ad6d911b2800a5d0bd1ae2af6b29cf36a8da06361f7e868b038f
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000
+AD =
+Out = 14abdda0a8dec6c8c9275bc5ff959b51b6428d1ac5a4b2a9a369acd40d576ab669c0cf7d06594d16
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = cb8a942c0498078ba0f945f4bc3f75b6193e2d917e38e4638c
+AD = 60fd29cdfb0d0949b9a25725872e83024dc5935f700cf3b7ec5a43eced958b2fa9a6b9838abb193681fb7a16f0def7aa137a7d215cf522c5091c607671335a48f0007cdd57857261b72ce61acc12f12f7db2e8c882a6ca4716746eec4ebf24384dd1fd36cdfc65d0181c8b0efce42de6bc5a
+Out = fbe1e45dd0d08cf077ac9d80fb6bf5bb9d62bbfcf352425a26b2d6a82bdee193c4f95341be35f9e044
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = de9f494b71401fd6d5774cc5b293af1f55c0241cca89eec86f
+AD =
+Out = 75e0d1e12227a34caeee8603af1b9b442bd6ded60a18f892d15db4ad0dc1ee086f7d2085c24fe8fd69
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000
+AD = 23ce5d0e684274eb32d5c3e371
+Out = 7f1a5dd82686612da4d44dd82ff1616aa7adbcbc31e24033d9f53853c23af34b3f9ceccf20c890fa37
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000
+AD =
+Out = d1252b1394750132fc04c72fd72920ec674fccc90b06a4833526fb32f56f308029c9edb986499ed3df
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = e6b18d44a5c218fe630cd30983caac118759af04c8362c451049
+AD = 1d29308b0ba07747ce4f3e0abf19d9c697fb645a
+Out = 6305c9a24126230b9b3853f6b840883a07c898dcb4534e3e9fb6e348eb5f4b145e0d4a8d3a3186af502a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 1b6883a80446c9341999b37d012b67467100b2dacab7e53b578d
+AD =
+Out = 6b15641e90f68da0aa508f0832b5618bd7f1417d84723df5f5efa111b3b03f0f1cbf435468e38ba28fe9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000
+AD = 68a21932646476fe44f9a3f03b558b5a969314f0776ce55b5cc7cbc88412079d740480bfe3c12867a10a23dd85a8426084f08f9a01
+Out = 78c2d2b1a1565174f1fe045f5f72ddbb735ba576904c7dc603036f19097e1f875f1cf769fd5a90aeff9d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000
+AD =
+Out = 674b05cda8c9a87f3bf955db859d443d1f42d802b6e8a5562309f972088871b917273617c90fc6c0dcc8
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 051bd54668d70c3e71ae2012424ef406a8ee0c8f9080de75efbe5a
+AD = cc52b72477cc5f8c4b2a5b0d284c3f07dfeabb7c71ad9c5390eb1796b00b5a9093ff43ba7639718913c23267a6dc034fb224b7ac7cbe8d3b6edc27422c5e8968432cdf04be652d653072886838018089a8bfd02c2cc8c6373970004dfe6d510dfa9e3e801086cc54c8e4d562e9
+Out = 1c48e6848eb1348b8252d0c21b6ce3b4f43afe9138f22c97470dc1782429df8ecef82fe853042313bc15bc
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 7985e6b74ab80cfdd72610ed41e3d44a7d31890cd1cab6d62ec812
+AD =
+Out = 732bb56e802c2556192a1375cda5a229b0529fdcc5016f61d58693200deb19830b8182a5fc68f6d2d88265
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000000000
+AD = d55230248e31d1e005c11c91
+Out = bc2aa63c4e3fd03f9695eab908d7e99f639f3efb823cd45c30333440db56ab4eaa861b0464810b128e4662
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000000000
+AD =
+Out = 1e1cd902885af9124cfcf7c883520dbfa35af121d3ca37d0be9b2484bcd8a2d214657d2b859ce227ed3923
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 2b69ed39b768a7fd9924ba88a29cdc93d36558edcb9481b263846863
+AD = fac71fe34360f4b399f5559efdde4823420655df721916eedcb4f576184fb9579a41aad362942c5f3623903a11071920533bc84c053630b10af0d55c1fe1795583813521b9a80ba3ef065952b5404254192f1f96b6c93122a47c90334e837815d6d6acf63f87c0cac841c3757ef02465592a9f16dd
+Out = d630df1da4062ec15a5cb611a30bb1a1fcccc656acc86f1818eee5954a417c26fdbec9a18403b2488c7e2979
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 824f50def6038b743ba90eb3d7d1c0cee31459b1b78a6e02a5ed3886
+AD =
+Out = 55777c533a1d9634168ba3ffad07a475eff4832ee851a065a38913c5b2e58a9acd480efe2d0d00c542b748d0
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000
+AD = 030323ec
+Out = 78691927148913c69269bb132432ae3338c5a007b129b9cc055c97aa6abfdb2d1e391ad01e1c0cd7875d5baa
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000
+AD =
+Out = c144c2617a46523c07f28402537cf3a5dcc9aaa67c00370df546207b0c6f8aebc0c40099c203b36488e25bf9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 59949b993e6e994f1c6d97fb3a02de8e50c11c69fab1ac158f9d391632
+AD = 7ab7abdca535bb24302ee26bdf5f47373dbfa87933f4e4c1ec86e3764f358cbe849eda054506cb521f3db4ac956d57a2bd54143c7d9044f46f5f33f94478909f412f290b8a2b63ddde546ec7b6c1635b693c1eac6d5590803d07304645253f3441805c
+Out = 844c9358fcc5f4a6ad67718129eaf7278f12c07baf4597ae7f9792db6ab38603b1090b00d55f92f2fe817ca3a3
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 4f877a4ada8c7f8754ef7f0d069fc07d6476f693eb7fe66f6bb2111597
+AD =
+Out = 7363b0dbbc1b0d78ea2703d2889493a89e588a5de86eb2de9d88ba077b7daa6c712eaf1f6962936bca2e62719f
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000
+AD = a7146044fdb0b9327db53bacaaa7b3bd6ce0c14f8addec19c83962f73a44092852495dbad404237df3231d4d74e1e6d390f42424d249d3e00ef69095005a172f544cb071b32409f54e077f2a00a3fc
+Out = 4dd348e79865b718dc4e4c72007aeb5ded09132483e262000739520871a9f16621af4eb73e6f32eacc7e6183d8
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 5bf3e4d7724bef9bb211a5e4dea1ded847d3b6e6a3be0f7d045948500f7ccadf1778cff6e56f2b2981654764b9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = df5ab290235c1c2daa4672c598f102a3209aad63170762c01d214a8ccd96
+AD = 7094007e46c8c4e7db078844e0514ae8dd4c2cc35526c108466949aeeaf39a0d801ad952c84c8451efb8ee8cc6eb5a25731bef409ac6355774d7eb5d55dd92d0f549
+Out = 1831eaa4d2a92ba63e8e78203d17726c35bb399cd50510fd9264d712c27a6661e6de5a2fb86d4aa36ea8f00b958d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 1118cbc205f006d681ef35c39f51e170c4152724906d8785161eb9b85af8
+AD =
+Out = 38e6a7ddaf40d20fd5e82c7e1750fd887bb41aa229e313c2ff468af012ae49a5f763c1e9959b2896994832e07820
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000000000000000
+AD = c8d3256b6129b336921e781b8272ca9ad98f3418fbddedca386410f029a06a045635cedd12e7e31edd586f7d46b3052a0b165c67109a885ca991d80659fe4fe7d9deb4c2473b481a0b1aaa372caf139f96bc303ab79015fabd0754
+Out = 95e340010bdd85c46f47c54fa103ee105679d9abcb771f8e32d1f11a08776f49f61758facee61314b3b7cd851cc9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = f680302aff045e6f5644a45e0b1bece2407a9ff3caa73efb8f61f78fe89887ef4606a9305a3dcbce1a7f403dead2
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = e9cc97ed7d90e36b4f2ffe6bebc0ce276cd2fdc65159db3e9ee47be193af75
+AD = e1cb47300c3953d9871e8076e323195b682d0574056f360778ef40bb678536baf4c4660da51a20f2
+Out = 757083b5a89f02b8f20e5f0f37d9dab6a1f4d0d4e671b2b4803ed3a583178e669d6142baf516d915836dc499275ca3
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = ff4ef63f4c1c5d0ca8c48f3b14e9b2eee664167fab75e944abffdc5d0dcf02
+AD =
+Out = 8b51df083c4622839ac6abb7504c0614854520ea4ec022363f75444349b46f534f427d7df3235b4b826db2d5d0cb76
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000
+AD = 36ad4fdfc48f6f2f8624a3735d684eafbdd7b06f2a66d02ac7cfc6a9a4090cc63636ff3fb6bcee743ba7db12a7644296dd9227dc3f725206388cae62bfd84c39ec627f9bb3e16843f0e1a99901e287e3875414cf263a69b540c78504c0c8199e0c18e78bc1e18656fc03a13a3dc5347e39ac1e8f67d5d97b24f65bf05c
+Out = 744150e39a35305968a3281d1b057f60eeefe592036aa184fb38906a45411320d24bb8975bac9c9cb4ba75ac741da5
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 10c1596974402f9b278dcb8b07b958bb24d1ecfc49922e31f9808e08a9f55a5c78bac460657ad6a37a55c646c070ca
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = fdaa00a8ca3852e5546e0d75b0f77772c44574a39833cbff9971a49b089895e3
+AD = c5728a2151b084946fc5e1ae813b7e3a7314108e501bd9e6c1c1d010cc3c87e0ebd602
+Out = fe9ef538e78575cb1fad1654fc7b8a7cc19ca367bfff710134b3a9ebed56d15d3a1d0d3bc2c3ded367d33b6fdbf556b9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 2928f557e0cb71887838af23a32bc40695e78587f03cebaef2b91f5dced5bcdd
+AD =
+Out = d71792341c72a080c9ad934aa81ceba8db417275f567740065cc446cbd09116e5ab7467f02cd941c97193522a177477d
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000
+AD = 9df02ef62c5930694f2a41acb9ade6be4b5985b8366cd9293f18251aeb25da398550cee7bea4b5fec54f357bbc5861f82e090346fb5dbcf5a87e6fc52a01f971ceb29a5e82a9a330ff28a61de612e37c906ff986025af770d4e20e05decb89d1
+Out = 0de07361a256b0bb985f90bf797694ab34d6dbfab49767ce5fa6ef413c57e90eb72ea2e942622702ca4f6a7ead3a9951
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 96001b90dd3dfe179101ec6f0af315c6f60b76737e4ef8223ce5fe8b5e2f3927a7f0c2994a59c4a7c8cc52cb2533ca94
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 20095a02679f7c6600bd6b637ec8bb2cf39be19fa4f8b4354bbd1961313bb45701e355f96b50f5175b
+AD = 183956575f1ecac55c6317f2459dce118d75c09b713ca5f4733e0b082f8f0e23825b36ec
+Out = abe3b27dc91149089f31f176683ffe9a4acd8ec471f1ab68beda0d5baa8905c496dc2841f784aed141d4bb3a7d2f535339255bc1d6bbfd5a13
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 93c592eb42e9f93deaa5a6eea71563ef614060bacdbcba17c3c07f2f523a8a4bb9c4a298e0d5d36498
+AD =
+Out = cc88df76bec8fc260740dd42bf025ebe60adfefb411dea80ef555d2f65a26579a7f571d5e2c4c99447bf57528de69bdad01c1529e35212201e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 9ebe6da370aaeb3d3f2edbf3670937a675ff2cbc96d38eabb97826a461cc9bac5122662b7b86fcea
+Out = 2b0a563c48b4b18991d91071546016227888fde93606661c1b0566c15ab3a3dcb9c0ae004a8fb1958a137faf50c1b3a45f8a9c296d0bcdb6f0
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = a5b7814b8713407a2fd4b52cfe86f2f576d515d1b41ae1217bea8de784238e4cee2a9183bac61d419a680ca23021cd12f93cf11268685bc1d4
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 2c07ddcc39467adfa8534f6d0ac72e10464dd2e8f8fda33895cf7b549a24019d5d2dc34a6d7135df9501ae58e1e42bb4f31b64a56f651ccb3bf8
+AD = c2a9d256fb47a70c7309a36309e1a7b6cf07641d468d630a54db88a81ce9f4e136cfff8cb845605d445e8fcf45779973cb9d794973624edefc075e4e42c252db85fcf5f19635cd803578c1e6c2c795ca9f929e2d9a4c629b55d24b219786114a22e2a5fa5cad588c174397fb3490f2ae2fd6884e8b93d7690b
+Out = 486d60b1dea0e54373274b3ee765e23ace961cb1c6f633c7f23460c0fc76d8d9e9472c3d9681449d5eafc5f938641b8d33e3e5d79f0dbae269000e9591868bfb163aab404b3dbbc62f88
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 16e83d690c573e9b2a9d55fd9226cd944b6ca4334a8328645e08a8b961df3725b8b5fb25a408cbf0182f7f085a721fb1a2eabab2f3e039941a4b
+AD =
+Out = c993b5c3295b8d22d8a0491a75482f620195e75fd7d2266df9e2b86a0c3f7e93357443c3a0599a9f3cd1bc7b4c636138badbdfe109aba8d5a40b2615df592b0084c7d9709f504423443b
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 944827d218cd1bcf8392b88eada9484ffa19a56d28e7a598882a009bf51a19e1b9806899b4299f186f950b8a888bfae9
+Out = 795ae837b976d3b31ec2ee73d28a02bf15485d66b2e364482a452c61e63c4f3ec6f4d65b46a022bb090267f300edf6bc5a3befa99caf49b404a8cf9bd908d0b7a91fd3b19f3c666f7269
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 368f8f148b9a0596cbc77ae68bff43b8feeba808102d512c7cb9256f2cfc685d5b13d859d7c9f358c45173b9e77520ca07c63c6dddd9b2827b582f5ad5dcb60dfcba129622ee031a798e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = a9b123974f61233d4843f83293720174d7ec68c263944d6db04397b08368ad037ee1ee27a9d181660eeb9fecf622c58b2c7280d5caf2114e75e8953a6790a2cc38f88c
+AD = 9a909bf238625b5b76245b5b01e9e2ff81ac63955d3829e18828850427c30bb3b5e21b7be96ead497e3684144c5cac827b53bae9919eeeb323166fa3d3a70e202c650c3c549ae731ff5e9b395762b098f06db3a9293a292c11e886ecdd7d49f862b258633df47aa6ac8d87977415f7657c30f11941f7d11e609b9c5406
+Out = 8bc4e164642ba58398bf7b6d17c0022b9a078478117b32b42a7161a24bbc4f2fc99553b1787948968b2d7a8ae96d69dfa55e83337ec0d9e1112e6f4fb5b7ef1c1ecc2332a03601ceaddec61d75d483aaa9ce94
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0850f4075a1dbd3d7eac2ffa6877c54105592204b6e944b81bd877830c4856a5f1538f56d6f798c556f8c66701faa5ef1a6179621270bed2afc7f18e4a64935524d177
+AD =
+Out = 9c4cc9b7438635f9c9949fca74942f6c404037c016b145d61589d0b1e01d1e3cae3a5fad56ec0072d5c22a5ab611788c47c897cc5d7ee3783edc9b01664a43f3187958afbbaf509e66b88f6db87c72186650b6
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 08f59dfc5e970314cc746cb395887639e35e26334b377f96acd856e51a9772c57ea54a348dacd6802259e31b28d965ec1e0f9356d2a15115bb6792c0bd309645e612b9fc0dfa3922
+Out = b18fa7573707b8daeb7a7c885335a7312ea8b104344f20b11b390d168114bb93583b505b2c896b4a06c85cdf8d78ed67a8d9fe8b2216a285bec7f34e851d7437464a1cc771564f23a7a20902093ae4ad61c759
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 1a5a3fb0c685132d36ee99efb042e625919b8be7d819815f7c92f8502cdf4224b266114ca417d198c42faa4db02ce5915e488f624cd39e69d7e1ff1dbd0de1a741d152241d59c831c18e39887bb63b8d76d2b9
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = c9b440c32f5d8bd7d711143b31feda81c435db8e270f9091529956b95d89425a17943a94a6f51284bc6788df7bd9f0e34b3fbabf666e30003e0fdb1b8fb88b4154ee513831416393cb7ac31a8dda182cc297fd18f423773032b3235d4c0319e4ea2ea642b13b3467209cc2ece0c88228df727ed8fcb9a9658ae575ad24e658
+AD = ab0a8d517404ce5d67b5910c3b4dc6550904460dabf0b3b934e57291402a0c7ba03e01a35c7484473f0fcca05e748be817305dbb72bb41b4be8034aa3f9aea4c94ed88fe31a711681bd4e8fafaf097d44cb2e66d04cc2d4855d2d50cc6b1619fe9b72656ebb42de3598c7e3e047082
+Out = eef9458a4e9de4ea2314d033b6182e173f7b8b154895ff7443b15074a957caffcd3c9046ef661709621c8c67a18ab9987e3d3f48ed80343c6dce7689028fd4e7eabad6c812f36dbd5bdae0df4434de8dc264fe341ce6f3c1673050d11bd22b9da078cf2d56100584065194aebfc8240bf9fea9523cd80976fc0f301cb36aa3ebf1fc400f543011d627b8d68a516ef4
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 02a02d2fdc1c86599bbd1ce6acfc8b7ca01293a04f91290238862dba848303b7c53a3a97d80d70c3c91e17247f5b10ec6cbb27b1a55817e91828bb15e775d0ad491cce284799ff24b1b3abf368ea7c13e014a80025244a14ca63f8faf174bca3749ee3b5446eb8653d59ab5b26a5e406b16fa92a976f96599958b19bfe4c6e
+AD =
+Out = 7dfb78f7c411b49b3ea01a1521cd8c1b97ce23b4c84ff5b1bca20848b994af57f22bd611b9c1c4c4af508600f1e239ada7dac77f9fd945c379b229d3e0ef3a899e01b7a553c6a717b4f23b8b2d7c534a89722432a3836d6410bed35430318278fd14e8d2ae03346f234416def23f7920756eb0a241821682fa17261cf9af901df97ab8721f88f5af3d95f8cf4cd06a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 0e28e33835
+Out = 52a18edce9756ddfb1336902e6e95fe6174ae5ff608188e73b0bda2469ae4829d71ee80379767efa3b0d41864fcc4222051dbdfe86fdfc85e2db617da85c136f3c6d1141bd212ba2dc99356ca7c6e8a31ad200f4304f217cabe261a755c973ee04d8cbc11977407e221f4baaaffd4d6b3481396ffde26bdb87395527561d0089448cdfcd420b0ca07fa92087588e38
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = f2fc14a55ab0434210f547c5ba813aa02661f1929a05a86389502599d2289afddf25051c7d8de8cbd70643e25af918829c840bcfb650f57976045a54e04cfefccbe3ddd4a6e8f936b548f18d323265fd4e5550f643e4d0f40816872a1fb199eaa872770dd246e5b2d434576a0e0e72e243c5004f5d2a8b22d7f60e77cba7ca512e2c7a8445b00ad13ac28d4cad8896
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = fd88748f21fef131de9c066f0ee295e6b606e09060f0171cc1f78b920fd8f2b30a7f6c85997fb58fa8a2825c575d5ec16a9f8871bc4d3016c4cbc13a06696ffcc30e24a8c6094cd8c54f1ea89708b8916be799712f02bed5e259ec48b30b57ab5ace2bfe08242529eb94a2cb9d765f155b41235244f7c0a737b5c4bc49420615
+AD = a0ed6c4b632ae1e37c19d25ffd99
+Out = 62c5b4b0d27647dd707b041044079901851a03afd727aa82c59c2c1fc244c0e4c3618f6770a43f29295551534861f00b40260b2383f5f6a0504c69c70aca5d6957b2e2d8e6db3b5251fd7e62307e7cb7499721b73dc1fc881a411ce3fd0b627d2b6becee2c0248b15f50c9a014dddbd6d4ecad5a3881f1743e46b27e3dfe7f209aa12f58f16b75a81c48dd4b240d3805
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = bdea85f8b440ebc3be68e48f8c7dd1d07f87586fce03bb46f3b877f32c9bbc6bfc8e577c80741f8dcfd3a1f880e90281827abe448bf79364139fd2097b61e3ea7e283789132e30446a0c25551a74dcad0bbdb70a65fcd7fde9d168538da31821630004b75ecdff745df187a610c91324d020cf67bdd111d073e0c9d0f0e40994
+AD =
+Out = d3a5d5da10726a1d06b54b6d742ccbfc3fecd1c4da5ab06b70f0adbefe2244d3d6487f0dea913d691725fbe8a5073d0a3c14c6b526cf9dfed7d32f399bc3d1f07e4586ec4e12bb5a787e79884d04d550b582abad788d935fe8b8a92312845a8fe9624328872a4ef63ece44a11a4ae2db6af83def27fa64593f2d9215d1e07503c02381d57ac59c48f9d6289b3f35972a
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 9c7127afe1118a4171078d8a46d0b025226c213c6862ef00c3607daad69d53fb397011a5bdb58f4ec6b4bd36e6a58671936560eef0464ab8ce5ae8251481fc1aee8107dd0974b43810c7e05a6444ad42bbf476fb087125aa59ef60142da3986e47baf7c33404f5080649232a51d01ee9656d72468ba210b561f400eff4
+Out = 0e6bd934c3eaa9f28a5a4c2c47055862c4bfc18387918a525ef03746c227e5e87635a364599e8ebba3e3faa409cf7b3794b3791a41c5aca23420ee458014b99b718d31881e648cb978282d621e2ffeb6f93c98ff90bd3c6f4f35dbfce64c89a3a09e4ce871b8959ff0f9f0afb519d2c7a5c35b70f75f768b260ddab75b20cf0559f391020cc26e2596d1268b512f0dc2
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = f79f42a9fa03bcc361bf40faa0de0c78a9b3b162df0ce4358d0e53f30ed3f79f44fc465a70956f0dca63a629cb8a46b946a51cae11f7b14e98b9ce64f4e025b160bff6eff7ad0b67c1fdf25b4e4473de499b72780b7c9c23e41ff6969ede7c9815cb953ba2b4871bd4911283b5b65777d3e70e0d7be6dfa1c015fe3ccac425cb37d82f97f9a622bbaaf28b1c7746d795
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 2481c77ee75b0f6feec7acfc682ef5511a4a0bcd3759f16e987d18191e668b8827de030a81e54530f1caee7a59c553ffe15bf3bd872149de8edc40960fa22da01a04f07d3f793b25aea437f7a0379368beb47629249a1af8a488200607ba85d14f81d1bff983398873f2d238321ffded24426c23e0bf7736aa8b3d38f458612ca5
+AD = 39642807b94d71d6ea8ac15075ef06f693cc559cbbfd25205bc5bc6cd754203c8d459cb181ee6b05d6c524e0b38391800340112101486b0ad5278106d318e248f32e003954206bf57f09e320ba1f92c566b9a292c5c3699f9f875154f890e322f778465bbc4e1ed3b081174f5907359a3963be5a6ea6dc3a81
+Out = d1054ceb271e577afba3b3b6ada6c8bce51bc2072ab5afae5b1e5346d24e939b2a933fa19319fb54ebb907942cf04afbb463f62f9db6a8ee09fe7b45383b1f06ee09ed1a5dd443f9405eb76512be543e8c228ca00579887cec286c6eb1a2c53aa662dc90f8ff65bb5929710a01c1220949419bb34c9f4c2039804872e13042b15028fdcdf40f0c45d2d478ac9f1ef5386f
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = e42215ab78c73ba5a9d065cc38e4213fbe5db079f8270c1e665b0cd3e0696260866dd6f1aa23ff941c2fb71e2598532e6baddc946856f4c7564d1f7ed6c086bde2fd2e96cf5ad85a0691d995fd39bba03f4b8d28c50a3b4883bf27dda3225600d405a3aacd7c3a1dbb21f61d8dd20421fa1a4cc438323d032fd1c01fe02d5493a7
+AD =
+Out = 927da42b99ba1a58e55e618769046262d5637b63bf5c442a0f8b74b01faf865af1fd3231c933395e00837835ae63e0291d831d97297b42d12d33a30509f6a46d8c78457e60064235aa40aa4f041181fb4360c376b6ef3d4f2dc33b195ee863ff8cca2cc44e9584ab3001e001550ea6cc5dc6adcec6247c5a6e88de99f54466097cc1b7177ad347c28360d53bf0281c585e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 7beced47cdf1b3f60a41b9e02879f458246019849f31471541fb864838b8803859fd5307da7afa0eb68b16d7db75c4e1da25c33dd6fda748af73e8b15bfd343b6af154fd471d8811a92fe5bbf7440eaafc6f759ed19c62
+Out = 9562a96b1ce77635288a54460a6c458fb2d7fdf9b7ae5d2d8ecc721e30abb9df458c36dc187d9caa127661d4ad03d6e77774724d72f8dd2ac9991c6cc727ee4722d3b55117307b79d1dcdda14adb8f87a48ed783fb967eb2706a221a6ccdaac9d509712dda504ec757944b8ef39bb52cac813bb1687f6d67991d888bc297559dc7d0039f15f62b1f0b75f8f12b3c531a8e
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = 39bd5e0787359f8ef8f648e745f8fb40ddcb9d4ee834040e250ad02f0194c97d50587b0dd9c2d1eb7afd1a3fbb62e20c1de15d61e8a28274eb3430f13f782d7c1d7f5e562fa36cfa7fcef283b275962446f3e78f5ebcde3cb7dc7a1d3d67ce2d4f514af1c252b650a3f8527d7dbb315c407df6986ca633f6c3e2fc493c4482cc5894e8a114e98ef5466a3cc2776ca93581
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0b8319b9e572fe01fa943fe28c84c7ccdd44bd94a84fe18060803b2a8685c398798893e32a84ca5081e7664f4ca59e590ea76514a706f0f83a55a509d62cdc0008433a7fc242c49c84d551f7f34b4985f1c4643da155e48d9acdfe954206696e90c918f64081471a47f9590c2a33f1463d8e42bbba22e5b726e55556eebef39e77433fa100c59d42d29bf264089a1983b82fc9de246cf6a821382943797bc1bb3bf22b570d4072053bbb4786811b2f7fc11db077b3b135a249d810aaaaed1d8e9ba4a222fac8a5b3804608e2b32a589e7b23c5a18af24b73c9a38a72f87717b3f9f6b5e07501d45f0732e093529f5dd2ee64c324ca9a30746e7d4afda9571eb09acbd920262239954b4279336ea9bda5c3d827793ec1b6c72da590a68a98cafea7d81596a12e3e7ca5dcd58294440da9c041dcc5252706eccf5b36bf5c684530b53257ddde1de98b5f8e43be8d71c18686190fdc8f2ee9f9a912b31000573d701ea09054d1f297daedb80e2471a45a0ae9d901e047a4b200c399c28b1e26aad15b2089cbed4f1e2369bb9e7c452b04fc0b2cd50d9aefb16bbede335ae1a37047b7e1ed9b74270672a613e7a79a2cfae1845e38eb41b3263c6cc8dcb2516d2358ddad0f33f2b549991f90a83843cc5197096db29a9fd9fe39c1e4a0502fb3ca31f6e2b25db27b67de5ed8fc30cec280557afdc25a
+AD = 512271d122064188c0dfe7275d7e88b3894d4b72a2a605b1c87b4081b2db991dc362
+Out = bbce6dc2b57a227c59d869f184f8db82fd6ab9d498c83daf13ccf21b0e36cc76e51cebb02f81f23e45b797d3acb63385f9df34a4e6c7802f67dc08e108678327d8848f274ff87c125fa8b8eafd3c89bcd3321fceaf6679876147b18362042c577de83ca2baeef31cad58067c1a2c881627cdacb365061c156f57ca46e6e32dfef569a37f2694bad21232147d048b5b0bfaf16fdfbca7759ed5fb04ecf23c3ec7e335618d15e25bd23f6933945646c3a31851d1ae8fca9710d78ca8751272987876eb5ef59c156cf3b9eb36019a4fd5c2306f7cc5d81da50b2eed5ce977f342a24476614471049d97cc787a9f924d4a0641a8a21244c12935796a908362985d9195ec78bff45e08948e72d62e6e28b676cc4473bdd3d1a34cbcc6f6a3c0e8bb005fc16ed233af6e8e5e2bab83a78b21c3e1a4eabde7c845b24a8ab94ce03bc0ef039341719745ea8ebb9c0cace4a8c3a7e2370ffd4b0ca71a91531feabddbab60804cecce9d27b08632c72400dfeb34c3c9ce4e7076214be4b1120acd23cd6ce4d7dcc1e516edcd1eba21ca9e1b6812baa8520aca007b685cc10424f4642a9cc35039a6650c8b66e495eb172f49da25dc32d0730649a6030337e8e56d57dbc07ec34226127a716ed5efd2e99bd79ecb60207fd7e2c1afa7750921aef59ea987ba4ea7dfbf5f81c8a3cddc9ce33cc2ad31add6a37e98e8f6f5985233491dfa084de07f9704
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = aa8ae4033331e588f3485a54c45e9974b0b37db047a9323a4aac0e4e6408e46741b6d2c82ca767d49d7c2c67f7054f75b82317cede56db93520fe880f537fc4934329500a85049866cfc4d3ebaca85119359a66036764f8b52f5fbac7ec0118f20e341c90717572867e231951991cae941ac100d98873c71b24f202514f4d8610b2762cfe4e4afc7104b605fd6d750162ca492917b5d378932a7bd997c5c7b1756bac1893efc5b06af9323fa492c920dababe18bdaa5625f4c2b5c80aa35ee97ecf115e0dee31f592618035fcb81a5778bcb799ea35260457d267555f2b48515115b720d2dac10de30681e2579daf4329364bcef3ad026546eb098abf9a8fd44a0bd4531e4267b54838ab087bbc0c408dfce7ae1215bd00e8cff6acde63b5fd3145b996e1adde0904462ce683f784c901903edbc16fb4c5d9d2d95c05b51ebc4ca3036b2861fd9352e3108d093b62f3a09d9947fde33a890ecdd21a9b9517bbc982aa3e2cbe1ff5d21402f91fa56f37a4c9169a6a7511a7996a67b86483df2c51c4a957d3ad112f9750eae33896b389dc38b3f72cf0b00023ad677e9b999281cd3b263b8b1bb1289056e353829c44e3a16c47bf9a3559413b02675c70eb638d38424080c5a601bbcf76b0eae4019255e37ee1437ef12e6ec21626cd112cc81b4e12a1f2c2d1f859c314bcb1b389c911f47287cd2
+AD =
+Out = 487f01cfa3d5f89d931a6fabfa0004a3eb9aa89571218b4f05547bca4975d2ed4e052c68a6be6294576ce3a4daeb7da3dccfd09a25977bb73e58d4f9aaf74ca16806e944a9933b170234cb14650b3a01f912645650e78c967b6638123f32e0677b1a9f8a584f00365629833e4e1aafb39c71018f087fef7845c0929ebc3287154d0de45e367e41aba95af97e0775ae068f3981b127e628b12ba7d2bcfb492a2c4072ca8a096cd82ccb6c382f969fc4b577de8b6b58557b12ae39bca25072b7c3658296066d1682781497ec54e21292fd7bf6782651c7a08cbd1c2240ad49a709bb06691457c3b4a2f4a9c01767bb9dbfad196d49da24af7d90ac123ae729807b2c39b23ac23922db94c29f1ba3c946ec635d362bdc1bb4f2f242e8f8dadbc8d1a0ae7de6bcb41b9572dddd0c456157c7a114b9820f85f6170d6de0253fcfea72f6a2dcfc45ccf672c38797534b935d0cd4140e3bc38185538ff4c279837f5ef133773f50cc18c25d95c435cfa33c5154c544b8c92c4ba07733c3d126d666a24bc70ddd51ba9991cfc6bea0aeea7e16dfe53d4236a8fcaddb1a9d9c96441a606ab4a1de5e5042353eec9c1295e9ae6af95e33905d8b60d0229dab397854829dd08aceae67f852bef9ea9667e8f0cca46d09f570312f5f89b5d039510411e5dc3fa7c21dd83e9f09c6b9fbfde89b4b9ec4689df60640165655d4301b54db6b72f1ac3d6df2
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD = 71fa2bf044e5137e12b56c15170cafb41474669a312384506ebc168a5ec1e0f7e181e0c32190e28094cb0c31f6c66aa92e894281156c4fe442539e145885a6c7910837c7ae82b81cd321d06e7a1b7518ca3bea4f5b78d3a1f4e2
+Out = 0dc601fda3d2134d7aa1e4de99b5abae326abb7a37f869da472b05ce19a7768a6f6d28c6aafae49b83f5211c099427c2c0f62b86408ed48790ca5c76eca3904cbc1ea0d659dbc56b893d512dd26ccc08be669e998c3d651842144b01edd1a863a630237e2289ab87874b61bc3f49acde9fb3c55ae1c01cf7e8173436a09d003a95d5b97eaa6cf84407ac84c991484674dd4b74f0bbadaeb23dd03916c6ef842561f3a9548b5ff4c1cec32fa5c97edae472cd74a1ae9da6de4d5bbf3cfd8d3e65514b3bfcc7ce306d1be59992d7f02c78c51dbc7faff1a8047e1beda14de1437a39139524aae5907491dc617251871ac31421d6b01bd4777c4ca301c701b74497eefa5c2b2f9f5344a40bca8e72ea1cbc31806070b448f1880cdcf7014acaff376bf53fc5e70d23dcaad7a868fcdb1749b9a8c3cd52da78b60a5f95937fb83e02715f8123db5b2ab7d7dd0ab7e40676869ab513ad7f9bb187755496338caf7544f19cd2cc173456a109959180be1088805172676d7c2f12cfeb5abd849600a90cdf2a0e9a3375b71791798f31629c961188b686feb267a9da9f93ebc62acbfad984725abaf7118cff121767a621631782cf4d33829e943a01357c0b81c996e9e5f42598be2cba064014d520b80339eccdb6e4d118103bf2fbdf1741a9da7093a63076c69bd024832438c52dbbd787d3d4ec7135513d5db308e2febe4d2c5034ba2d0d59f7
+
+Key = 0000000000000000000000000000000000000000000000000000000000000000
+In = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+AD =
+Out = bfbcd051847e44a333cf11c7442f4d8fb2b8d5404165d1daafb0bb20ebb2b018dd7f18deb8c00b2a71327154618270deaf1ad19c7650006245f23dee23827de5a7969792849cc4479f5173fa1afaa6cdf52daea152896888cf16c5b8d92b3c318cf14f3f24a0d3271bd77af5d23eac9422a2ff9ac29d2036a772ff1753e229c4c380ef4c8408d7691d3d989d5e1b2359524e06cb918f3576d8f05d11b0c6c6039a57d7504265462feb6f9b7f7a2ad75b0f7c0bb7c90d101559ba6d6c3cda1c1400d7ff53f00d3cce4f65d95000580d984ab4f0460578a8727661128feda752227daf7455e3f90d4fefcb61e7124e7a8d3ac985c45f6fead5858402c69cd49bcd1c45300a1eecd1abf4cf428fcc60df11049a663fa7d6e899746ace3ade2ef8d08b083685f00d2d7b752e9d33deb91143deee0d13301fc894a01838c8c5b11ab8ac0713bbfbcdcbb24873a8e02b2872848195cd932da570bc45236410deebdcca7f95ac5d468a9242b89b98a676e177871a3d92fe21845f9a9aa9c3a0ba284f4b8135a8d15cdecdc40756f2d601c8db3a0721ed95b26c30be520ebe6f3063bc2d8fe456c70910fba7f0de240c312f17a085f80cf33e7675fb705e4e88b04399616d22862e8caf42e37e6e8486973fe4898abcc33aeea93f8e666f5931d849abad129c4d5b084ff26e7cf311a01994c5ada270217f3db586f8521ca083b5774e9e67a0b7e9
diff --git a/src/tests/test_aead.cpp b/src/tests/test_aead.cpp
index e59c35a11..7dc64e400 100644
--- a/src/tests/test_aead.cpp
+++ b/src/tests/test_aead.cpp
@@ -64,7 +64,7 @@ class AEAD_Tests final : public Text_Based_Test
{
// test finish() with full input
enc->finish(buf);
- result.test_eq("encrypt", buf, expected);
+ result.test_eq("encrypt full", buf, expected);
// additionally test update() if possible
const size_t update_granularity = enc->update_granularity();
@@ -89,7 +89,7 @@ class AEAD_Tests final : public Text_Based_Test
p += update_granularity;
input_length -= update_granularity;
buffer_insert(ciphertext, 0 + offset, block);
- offset += update_granularity;
+ offset += block.size();
}
// encrypt remaining bytes
@@ -97,7 +97,7 @@ class AEAD_Tests final : public Text_Based_Test
enc->finish(block);
buffer_insert(ciphertext, 0 + offset, block);
- result.test_eq("encrypt", ciphertext, expected);
+ result.test_eq("encrypt update", ciphertext, expected);
}
// additionally test process() if possible
@@ -118,10 +118,19 @@ class AEAD_Tests final : public Text_Based_Test
const size_t bytes_written = enc->process(buf.data(), bytes_to_process);
- result.test_eq("correct number of bytes processed", bytes_written, bytes_to_process);
+ if(bytes_written == 0)
+ {
+ // SIV case
+ buf.erase(buf.begin(), buf.begin() + bytes_to_process);
+ enc->finish(buf);
+ }
+ else
+ {
+ result.test_eq("correct number of bytes processed", bytes_written, bytes_to_process);
+ enc->finish(buf, bytes_written);
+ }
- enc->finish(buf, bytes_to_process);
- result.test_eq("encrypt", buf, expected);
+ result.test_eq("encrypt process", buf, expected);
}
}
return result;
@@ -159,7 +168,7 @@ class AEAD_Tests final : public Text_Based_Test
// test finish() with full input
dec->finish(buf);
- result.test_eq("decrypt", buf, expected);
+ result.test_eq("decrypt full", buf, expected);
// additionally test update() if possible
const size_t update_granularity = dec->update_granularity();
@@ -184,7 +193,7 @@ class AEAD_Tests final : public Text_Based_Test
p += update_granularity;
input_length -= update_granularity;
buffer_insert(plaintext, 0 + offset, block);
- offset += update_granularity;
+ offset += block.size();
}
// decrypt remaining bytes
@@ -192,7 +201,7 @@ class AEAD_Tests final : public Text_Based_Test
dec->finish(block);
buffer_insert(plaintext, 0 + offset, block);
- result.test_eq("decrypt", plaintext, expected);
+ result.test_eq("decrypt update", plaintext, expected);
}
// additionally test process() if possible
@@ -213,10 +222,19 @@ class AEAD_Tests final : public Text_Based_Test
const size_t bytes_written = dec->process(buf.data(), bytes_to_process);
- result.test_eq("correct number of bytes processed", bytes_written, bytes_to_process);
+ if(bytes_written == 0)
+ {
+ // SIV case
+ buf.erase(buf.begin(), buf.begin() + bytes_to_process);
+ dec->finish(buf);
+ }
+ else
+ {
+ result.test_eq("correct number of bytes processed", bytes_written, bytes_to_process);
+ dec->finish(buf, bytes_to_process);
+ }
- dec->finish(buf, bytes_to_process);
- result.test_eq("decrypt", buf, expected);
+ result.test_eq("decrypt process", buf, expected);
}
}