fixes for reward delay

This commit is contained in:
Richard Holland
2023-09-13 17:56:56 +00:00
parent a70461f4d5
commit 9bcf186aa2
4 changed files with 355 additions and 298 deletions

View File

@@ -1,7 +1,6 @@
#include "hookapi.h" #include "hookapi.h"
//#define REWARD_DELAY 2600000LL #define DEFAULT_REWARD_DELAY 6199553087261802496ULL
#define REWARD_DELAY 5LL #define DEFAULT_REWARD_RATE 6038156834009797973ULL
#define REWARD_MULTIPLIER_XFL 6038156834009797973ULL
//0.00333333333f //0.00333333333f
#define L1SEATS 20U #define L1SEATS 20U
@@ -117,6 +116,25 @@ int64_t hook(uint32_t r)
if (BUFFER_EQUAL_20(hook_acc, otxn_acc)) if (BUFFER_EQUAL_20(hook_acc, otxn_acc))
accept(SBUF("Reward: Passing outgoing txn"), __LINE__); accept(SBUF("Reward: Passing outgoing txn"), __LINE__);
// the default rate and delay are used if somehow the keys are missing from hook state (graceful failure)
int64_t xfl_rr = DEFAULT_REWARD_RATE;
int64_t xfl_rd = DEFAULT_REWARD_DELAY;
// load state if it exists (which it should)
state(&xfl_rr, 8, "RR", 2);
state(&xfl_rd, 8, "RD", 2);
// if either of these is 0 that's disabled
if (xfl_rr <= 0 || xfl_rd <= 0 )
rollback(SBUF("Reward: Rewards are disabled by governance."), __LINE__);
int64_t required_delay = float_int(xfl_rd, 0, 0);
if (required_delay < 0 || float_sign(xfl_rr) != 0 ||
float_compare(xfl_rr, float_one(), COMPARE_GREATER) ||
float_compare(xfl_rd, float_one(), COMPARE_GREATER))
rollback(SBUF("Reward: Rewards incorrectly configured by governance or unrecoverable error."), __LINE__);
// get the account root keylet // get the account root keylet
uint8_t kl[34]; uint8_t kl[34];
util_keylet(SBUF(kl), KEYLET_ACCOUNT, SBUF(otxn_acc), 0,0,0,0); util_keylet(SBUF(kl), KEYLET_ACCOUNT, SBUF(otxn_acc), 0,0,0,0);
@@ -137,10 +155,12 @@ int64_t hook(uint32_t r)
int64_t time = slot(0,0,6); int64_t time = slot(0,0,6);
int64_t time_elapsed = ledger_last_time() - time; int64_t time_elapsed = ledger_last_time() - time;
if (time_elapsed < REWARD_DELAY)
if (time_elapsed < required_delay)
{ {
//2 600 000 //2 600 000
time_elapsed = REWARD_DELAY - time_elapsed; time_elapsed = required_delay - time_elapsed;
msg_buf[14] += (time_elapsed / 1000000) % 10; msg_buf[14] += (time_elapsed / 1000000) % 10;
msg_buf[15] += (time_elapsed / 100000) % 10; msg_buf[15] += (time_elapsed / 100000) % 10;
msg_buf[16] += (time_elapsed / 10000) % 10; msg_buf[16] += (time_elapsed / 10000) % 10;
@@ -191,20 +211,6 @@ int64_t hook(uint32_t r)
if (DEBUG) if (DEBUG)
TRACEVAR(accumulator); TRACEVAR(accumulator);
// reward hook shares the same namespace as governance hook, so we can request the RR key directly
uint8_t key[2] = {'R', 'R'};
// mr = monthly reward rate
int64_t xfl_mr =
state(0,0, SBUF(key));
if (xfl_mr <= 0 || // invalid xfl
float_compare(xfl_mr, 0, COMPARE_LESS) || // negative xfl
float_compare(xfl_mr, float_one(), COMPARE_GREATER)) // greater than 100%
xfl_mr = REWARD_MULTIPLIER_XFL;
{
ASSERT(xfl_mr > 0);
}
int64_t xfl_accum = float_set(0, accumulator); int64_t xfl_accum = float_set(0, accumulator);
ASSERT(xfl_accum > 0); ASSERT(xfl_accum > 0);
@@ -213,7 +219,7 @@ int64_t hook(uint32_t r)
ASSERT(xfl_elapsed > 0); ASSERT(xfl_elapsed > 0);
int64_t xfl_reward = float_divide(xfl_accum, xfl_elapsed); int64_t xfl_reward = float_divide(xfl_accum, xfl_elapsed);
xfl_reward = float_multiply(xfl_mr, xfl_reward); xfl_reward = float_multiply(xfl_rr, xfl_reward);
if (DEBUG) if (DEBUG)
TRACEVAR(xfl_reward); TRACEVAR(xfl_reward);

View File

@@ -864,285 +864,313 @@ static const std::vector<uint8_t> GovernanceHook =
static const std::vector<uint8_t> RewardHook = static const std::vector<uint8_t> RewardHook =
{ {
0x00U,0x61U,0x73U,0x6DU,0x01U,0x00U,0x00U,0x00U,0x01U,0x5CU, 0x00U,0x61U,0x73U,0x6DU,0x01U,0x00U,0x00U,0x00U,0x01U,0x61U,
0x0DU,0x60U,0x01U,0x7FU,0x01U,0x7EU,0x60U,0x02U,0x7FU,0x7FU, 0x0EU,0x60U,0x01U,0x7FU,0x01U,0x7EU,0x60U,0x02U,0x7FU,0x7FU,
0x01U,0x7FU,0x60U,0x00U,0x01U,0x7EU,0x60U,0x03U,0x7FU,0x7FU, 0x01U,0x7FU,0x60U,0x00U,0x01U,0x7EU,0x60U,0x03U,0x7FU,0x7FU,
0x7EU,0x01U,0x7EU,0x60U,0x03U,0x7FU,0x7FU,0x7FU,0x01U,0x7EU, 0x7EU,0x01U,0x7EU,0x60U,0x03U,0x7FU,0x7FU,0x7FU,0x01U,0x7EU,
0x60U,0x02U,0x7FU,0x7FU,0x01U,0x7EU,0x60U,0x09U,0x7FU,0x7FU, 0x60U,0x02U,0x7FU,0x7FU,0x01U,0x7EU,0x60U,0x04U,0x7FU,0x7FU,
0x7FU,0x7FU,0x7FU,0x7FU,0x7FU,0x7FU,0x7FU,0x01U,0x7EU,0x60U, 0x7FU,0x7FU,0x01U,0x7EU,0x60U,0x03U,0x7EU,0x7FU,0x7FU,0x01U,
0x04U,0x7FU,0x7FU,0x7FU,0x7FU,0x01U,0x7EU,0x60U,0x03U,0x7EU, 0x7EU,0x60U,0x01U,0x7EU,0x01U,0x7EU,0x60U,0x03U,0x7EU,0x7EU,
0x7EU,0x7FU,0x01U,0x7EU,0x60U,0x02U,0x7FU,0x7EU,0x01U,0x7EU, 0x7FU,0x01U,0x7EU,0x60U,0x09U,0x7FU,0x7FU,0x7FU,0x7FU,0x7FU,
0x60U,0x02U,0x7EU,0x7EU,0x01U,0x7EU,0x60U,0x03U,0x7EU,0x7FU, 0x7FU,0x7FU,0x7FU,0x7FU,0x01U,0x7EU,0x60U,0x02U,0x7FU,0x7EU,
0x7FU,0x01U,0x7EU,0x60U,0x05U,0x7FU,0x7FU,0x7FU,0x7FU,0x7FU, 0x01U,0x7EU,0x60U,0x02U,0x7EU,0x7EU,0x01U,0x7EU,0x60U,0x05U,
0x01U,0x7EU,0x02U,0xCDU,0x03U,0x1CU,0x03U,0x65U,0x6EU,0x76U, 0x7FU,0x7FU,0x7FU,0x7FU,0x7FU,0x01U,0x7EU,0x02U,0xDEU,0x03U,
0x0CU,0x65U,0x74U,0x78U,0x6EU,0x5FU,0x72U,0x65U,0x73U,0x65U, 0x1DU,0x03U,0x65U,0x6EU,0x76U,0x0CU,0x65U,0x74U,0x78U,0x6EU,
0x72U,0x76U,0x65U,0x00U,0x00U,0x03U,0x65U,0x6EU,0x76U,0x02U, 0x5FU,0x72U,0x65U,0x73U,0x65U,0x72U,0x76U,0x65U,0x00U,0x00U,
0x5FU,0x67U,0x00U,0x01U,0x03U,0x65U,0x6EU,0x76U,0x09U,0x6FU, 0x03U,0x65U,0x6EU,0x76U,0x02U,0x5FU,0x67U,0x00U,0x01U,0x03U,
0x74U,0x78U,0x6EU,0x5FU,0x74U,0x79U,0x70U,0x65U,0x00U,0x02U, 0x65U,0x6EU,0x76U,0x09U,0x6FU,0x74U,0x78U,0x6EU,0x5FU,0x74U,
0x03U,0x65U,0x6EU,0x76U,0x06U,0x61U,0x63U,0x63U,0x65U,0x70U, 0x79U,0x70U,0x65U,0x00U,0x02U,0x03U,0x65U,0x6EU,0x76U,0x06U,
0x74U,0x00U,0x03U,0x03U,0x65U,0x6EU,0x76U,0x0AU,0x6FU,0x74U, 0x61U,0x63U,0x63U,0x65U,0x70U,0x74U,0x00U,0x03U,0x03U,0x65U,
0x78U,0x6EU,0x5FU,0x66U,0x69U,0x65U,0x6CU,0x64U,0x00U,0x04U, 0x6EU,0x76U,0x0AU,0x6FU,0x74U,0x78U,0x6EU,0x5FU,0x66U,0x69U,
0x03U,0x65U,0x6EU,0x76U,0x0CU,0x68U,0x6FU,0x6FU,0x6BU,0x5FU, 0x65U,0x6CU,0x64U,0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x0CU,
0x61U,0x63U,0x63U,0x6FU,0x75U,0x6EU,0x74U,0x00U,0x05U,0x03U, 0x68U,0x6FU,0x6FU,0x6BU,0x5FU,0x61U,0x63U,0x63U,0x6FU,0x75U,
0x65U,0x6EU,0x76U,0x0BU,0x75U,0x74U,0x69U,0x6CU,0x5FU,0x6BU, 0x6EU,0x74U,0x00U,0x05U,0x03U,0x65U,0x6EU,0x76U,0x05U,0x73U,
0x65U,0x79U,0x6CU,0x65U,0x74U,0x00U,0x06U,0x03U,0x65U,0x6EU, 0x74U,0x61U,0x74U,0x65U,0x00U,0x06U,0x03U,0x65U,0x6EU,0x76U,
0x76U,0x08U,0x73U,0x6CU,0x6FU,0x74U,0x5FU,0x73U,0x65U,0x74U,
0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x0DU,0x73U,0x6CU,0x6FU,
0x74U,0x5FU,0x73U,0x75U,0x62U,0x66U,0x69U,0x65U,0x6CU,0x64U,
0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x04U,0x73U,0x6CU,0x6FU,
0x74U,0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x10U,0x6CU,0x65U,
0x64U,0x67U,0x65U,0x72U,0x5FU,0x6CU,0x61U,0x73U,0x74U,0x5FU,
0x74U,0x69U,0x6DU,0x65U,0x00U,0x02U,0x03U,0x65U,0x6EU,0x76U,
0x08U,0x72U,0x6FU,0x6CU,0x6CU,0x62U,0x61U,0x63U,0x6BU,0x00U, 0x08U,0x72U,0x6FU,0x6CU,0x6CU,0x62U,0x61U,0x63U,0x6BU,0x00U,
0x03U,0x03U,0x65U,0x6EU,0x76U,0x09U,0x74U,0x72U,0x61U,0x63U, 0x03U,0x03U,0x65U,0x6EU,0x76U,0x09U,0x66U,0x6CU,0x6FU,0x61U,
0x65U,0x5FU,0x6EU,0x75U,0x6DU,0x00U,0x03U,0x03U,0x65U,0x6EU, 0x74U,0x5FU,0x69U,0x6EU,0x74U,0x00U,0x07U,0x03U,0x65U,0x6EU,
0x76U,0x0AU,0x6CU,0x65U,0x64U,0x67U,0x65U,0x72U,0x5FU,0x73U, 0x76U,0x0AU,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x73U,0x69U,
0x65U,0x71U,0x00U,0x02U,0x03U,0x65U,0x6EU,0x76U,0x05U,0x73U, 0x67U,0x6EU,0x00U,0x08U,0x03U,0x65U,0x6EU,0x76U,0x09U,0x66U,
0x74U,0x61U,0x74U,0x65U,0x00U,0x07U,0x03U,0x65U,0x6EU,0x76U, 0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x6FU,0x6EU,0x65U,0x00U,0x02U,
0x0DU,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x63U,0x6FU,0x6DU, 0x03U,0x65U,0x6EU,0x76U,0x0DU,0x66U,0x6CU,0x6FU,0x61U,0x74U,
0x70U,0x61U,0x72U,0x65U,0x00U,0x08U,0x03U,0x65U,0x6EU,0x76U, 0x5FU,0x63U,0x6FU,0x6DU,0x70U,0x61U,0x72U,0x65U,0x00U,0x09U,
0x09U,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x6FU,0x6EU,0x65U, 0x03U,0x65U,0x6EU,0x76U,0x0BU,0x75U,0x74U,0x69U,0x6CU,0x5FU,
0x00U,0x02U,0x03U,0x65U,0x6EU,0x76U,0x09U,0x66U,0x6CU,0x6FU, 0x6BU,0x65U,0x79U,0x6CU,0x65U,0x74U,0x00U,0x0AU,0x03U,0x65U,
0x61U,0x74U,0x5FU,0x73U,0x65U,0x74U,0x00U,0x09U,0x03U,0x65U, 0x6EU,0x76U,0x08U,0x73U,0x6CU,0x6FU,0x74U,0x5FU,0x73U,0x65U,
0x6EU,0x76U,0x0CU,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x64U, 0x74U,0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x0DU,0x73U,0x6CU,
0x69U,0x76U,0x69U,0x64U,0x65U,0x00U,0x0AU,0x03U,0x65U,0x6EU, 0x6FU,0x74U,0x5FU,0x73U,0x75U,0x62U,0x66U,0x69U,0x65U,0x6CU,
0x76U,0x0EU,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x6DU,0x75U, 0x64U,0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x04U,0x73U,0x6CU,
0x6CU,0x74U,0x69U,0x70U,0x6CU,0x79U,0x00U,0x0AU,0x03U,0x65U, 0x6FU,0x74U,0x00U,0x04U,0x03U,0x65U,0x6EU,0x76U,0x10U,0x6CU,
0x6EU,0x76U,0x09U,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x69U, 0x65U,0x64U,0x67U,0x65U,0x72U,0x5FU,0x6CU,0x61U,0x73U,0x74U,
0x6EU,0x74U,0x00U,0x0BU,0x03U,0x65U,0x6EU,0x76U,0x09U,0x6FU, 0x5FU,0x74U,0x69U,0x6DU,0x65U,0x00U,0x02U,0x03U,0x65U,0x6EU,
0x74U,0x78U,0x6EU,0x5FU,0x73U,0x6CU,0x6FU,0x74U,0x00U,0x00U, 0x76U,0x09U,0x74U,0x72U,0x61U,0x63U,0x65U,0x5FU,0x6EU,0x75U,
0x03U,0x65U,0x6EU,0x76U,0x0AU,0x73U,0x6CU,0x6FU,0x74U,0x5FU, 0x6DU,0x00U,0x03U,0x03U,0x65U,0x6EU,0x76U,0x0AU,0x6CU,0x65U,
0x66U,0x6CU,0x6FU,0x61U,0x74U,0x00U,0x00U,0x03U,0x65U,0x6EU, 0x64U,0x67U,0x65U,0x72U,0x5FU,0x73U,0x65U,0x71U,0x00U,0x02U,
0x76U,0x0AU,0x73U,0x6CU,0x6FU,0x74U,0x5FU,0x63U,0x6FU,0x75U, 0x03U,0x65U,0x6EU,0x76U,0x09U,0x66U,0x6CU,0x6FU,0x61U,0x74U,
0x6EU,0x74U,0x00U,0x00U,0x03U,0x65U,0x6EU,0x76U,0x05U,0x74U, 0x5FU,0x73U,0x65U,0x74U,0x00U,0x0BU,0x03U,0x65U,0x6EU,0x76U,
0x72U,0x61U,0x63U,0x65U,0x00U,0x0CU,0x03U,0x65U,0x6EU,0x76U, 0x0CU,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x64U,0x69U,0x76U,
0x0CU,0x65U,0x74U,0x78U,0x6EU,0x5FU,0x64U,0x65U,0x74U,0x61U, 0x69U,0x64U,0x65U,0x00U,0x0CU,0x03U,0x65U,0x6EU,0x76U,0x0EU,
0x69U,0x6CU,0x73U,0x00U,0x05U,0x03U,0x65U,0x6EU,0x76U,0x0DU, 0x66U,0x6CU,0x6FU,0x61U,0x74U,0x5FU,0x6DU,0x75U,0x6CU,0x74U,
0x65U,0x74U,0x78U,0x6EU,0x5FU,0x66U,0x65U,0x65U,0x5FU,0x62U, 0x69U,0x70U,0x6CU,0x79U,0x00U,0x0CU,0x03U,0x65U,0x6EU,0x76U,
0x61U,0x73U,0x65U,0x00U,0x05U,0x03U,0x65U,0x6EU,0x76U,0x04U, 0x09U,0x6FU,0x74U,0x78U,0x6EU,0x5FU,0x73U,0x6CU,0x6FU,0x74U,
0x65U,0x6DU,0x69U,0x74U,0x00U,0x07U,0x03U,0x02U,0x01U,0x00U, 0x00U,0x00U,0x03U,0x65U,0x6EU,0x76U,0x0AU,0x73U,0x6CU,0x6FU,
0x05U,0x03U,0x01U,0x00U,0x02U,0x06U,0x08U,0x01U,0x7FU,0x01U, 0x74U,0x5FU,0x66U,0x6CU,0x6FU,0x61U,0x74U,0x00U,0x00U,0x03U,
0x41U,0xA0U,0x92U,0x04U,0x0BU,0x07U,0x08U,0x01U,0x04U,0x68U, 0x65U,0x6EU,0x76U,0x0AU,0x73U,0x6CU,0x6FU,0x74U,0x5FU,0x63U,
0x6FU,0x6FU,0x6BU,0x00U,0x1CU,0x0AU,0xD0U,0x8DU,0x00U,0x01U, 0x6FU,0x75U,0x6EU,0x74U,0x00U,0x00U,0x03U,0x65U,0x6EU,0x76U,
0xCCU,0x8DU,0x00U,0x02U,0x02U,0x7FU,0x06U,0x7EU,0x23U,0x00U, 0x05U,0x74U,0x72U,0x61U,0x63U,0x65U,0x00U,0x0DU,0x03U,0x65U,
0x41U,0xE0U,0x3EU,0x6BU,0x22U,0x00U,0x24U,0x00U,0x41U,0x01U, 0x6EU,0x76U,0x0CU,0x65U,0x74U,0x78U,0x6EU,0x5FU,0x64U,0x65U,
0x10U,0x00U,0x1AU,0x41U,0x01U,0x41U,0x01U,0x10U,0x01U,0x1AU, 0x74U,0x61U,0x69U,0x6CU,0x73U,0x00U,0x05U,0x03U,0x65U,0x6EU,
0x10U,0x02U,0x42U,0xE2U,0x00U,0x52U,0x04U,0x40U,0x41U,0x9EU, 0x76U,0x0DU,0x65U,0x74U,0x78U,0x6EU,0x5FU,0x66U,0x65U,0x65U,
0x10U,0x41U,0x1EU,0x42U,0xEAU,0x00U,0x10U,0x03U,0x1AU,0x0BU, 0x5FU,0x62U,0x61U,0x73U,0x65U,0x00U,0x05U,0x03U,0x65U,0x6EU,
0x20U,0x00U,0x41U,0xC0U,0x3EU,0x6AU,0x41U,0x14U,0x41U,0x81U, 0x76U,0x04U,0x65U,0x6DU,0x69U,0x74U,0x00U,0x06U,0x03U,0x02U,
0x80U,0x20U,0x10U,0x04U,0x1AU,0x20U,0x00U,0x41U,0xA0U,0x3EU, 0x01U,0x00U,0x05U,0x03U,0x01U,0x00U,0x02U,0x06U,0x08U,0x01U,
0x6AU,0x41U,0x14U,0x10U,0x05U,0x1AU,0x20U,0x00U,0x29U,0x03U, 0x7FU,0x01U,0x41U,0xA0U,0x93U,0x04U,0x0BU,0x07U,0x08U,0x01U,
0xA0U,0x3EU,0x20U,0x00U,0x29U,0x03U,0xC0U,0x3EU,0x51U,0x04U, 0x04U,0x68U,0x6FU,0x6FU,0x6BU,0x00U,0x1DU,0x0AU,0xCDU,0x8EU,
0x40U,0x02U,0x40U,0x20U,0x00U,0x28U,0x02U,0xB0U,0x3EU,0x20U, 0x00U,0x01U,0xC9U,0x8EU,0x00U,0x02U,0x02U,0x7FU,0x06U,0x7EU,
0x00U,0x28U,0x02U,0xD0U,0x3EU,0x47U,0x20U,0x00U,0x29U,0x03U, 0x23U,0x00U,0x41U,0xE0U,0x3EU,0x6BU,0x22U,0x00U,0x24U,0x00U,
0xA8U,0x3EU,0x20U,0x00U,0x29U,0x03U,0xC8U,0x3EU,0x52U,0x72U, 0x41U,0x01U,0x10U,0x00U,0x1AU,0x41U,0x01U,0x41U,0x01U,0x10U,
0x0DU,0x00U,0x41U,0xBCU,0x10U,0x41U,0x1DU,0x42U,0xF6U,0x00U, 0x01U,0x1AU,0x10U,0x02U,0x42U,0xE2U,0x00U,0x52U,0x04U,0x40U,
0x10U,0x03U,0x1AU,0x0BU,0x0BU,0x20U,0x00U,0x41U,0xF0U,0x3DU, 0x41U,0x9EU,0x10U,0x41U,0x1EU,0x42U,0xE9U,0x00U,0x10U,0x03U,
0x6AU,0x22U,0x02U,0x41U,0x22U,0x41U,0x03U,0x20U,0x00U,0x41U, 0x1AU,0x0BU,0x20U,0x00U,0x41U,0xC0U,0x3EU,0x6AU,0x41U,0x14U,
0xC0U,0x3EU,0x6AU,0x41U,0x14U,0x41U,0x00U,0x41U,0x00U,0x41U, 0x41U,0x81U,0x80U,0x20U,0x10U,0x04U,0x1AU,0x20U,0x00U,0x41U,
0x00U,0x41U,0x00U,0x10U,0x06U,0x1AU,0x20U,0x02U,0x41U,0x22U, 0xA0U,0x3EU,0x6AU,0x41U,0x14U,0x10U,0x05U,0x1AU,0x20U,0x00U,
0x41U,0x01U,0x10U,0x07U,0x1AU,0x41U,0x01U,0x41U,0xE4U,0x80U, 0x29U,0x03U,0xA0U,0x3EU,0x20U,0x00U,0x29U,0x03U,0xC0U,0x3EU,
0x0CU,0x41U,0x02U,0x10U,0x08U,0x42U,0x02U,0x52U,0x04U,0x40U, 0x51U,0x04U,0x40U,0x02U,0x40U,0x20U,0x00U,0x28U,0x02U,0xB0U,
0x41U,0xD9U,0x10U,0x41U,0x21U,0x42U,0x81U,0x01U,0x10U,0x03U, 0x3EU,0x20U,0x00U,0x28U,0x02U,0xD0U,0x3EU,0x47U,0x20U,0x00U,
0x1AU,0x0BU,0x41U,0x01U,0x41U,0xE3U,0x80U,0x08U,0x41U,0x03U, 0x29U,0x03U,0xA8U,0x3EU,0x20U,0x00U,0x29U,0x03U,0xC8U,0x3EU,
0x10U,0x08U,0x1AU,0x41U,0x01U,0x41U,0xE4U,0x80U,0x08U,0x41U, 0x52U,0x72U,0x0DU,0x00U,0x41U,0xBCU,0x10U,0x41U,0x1DU,0x42U,
0x04U,0x10U,0x08U,0x1AU,0x41U,0x01U,0x41U,0x82U,0x80U,0x18U, 0xF5U,0x00U,0x10U,0x03U,0x1AU,0x0BU,0x0BU,0x20U,0x00U,0x42U,
0x41U,0x05U,0x10U,0x08U,0x1AU,0x41U,0x01U,0x41U,0xE2U,0x80U, 0xD5U,0xAAU,0x81U,0xAAU,0xE2U,0xF4U,0xF5U,0xE5U,0xD3U,0x00U,
0x08U,0x41U,0x06U,0x10U,0x08U,0x1AU,0x41U,0x00U,0x41U,0x00U, 0x37U,0x03U,0x98U,0x3EU,0x20U,0x00U,0x42U,0x80U,0x80U,0xAAU,
0x41U,0x06U,0x10U,0x09U,0x21U,0x03U,0x10U,0x0AU,0x20U,0x03U, 0xE3U,0xFAU,0x95U,0xCFU,0x84U,0xD6U,0x00U,0x37U,0x03U,0x90U,
0x7DU,0x22U,0x03U,0x42U,0x04U,0x57U,0x04U,0x40U,0x41U,0x8EU, 0x3EU,0x20U,0x00U,0x41U,0x98U,0x3EU,0x6AU,0x41U,0x08U,0x41U,
0x10U,0x41U,0x8EU,0x10U,0x2DU,0x00U,0x00U,0x42U,0x05U,0x20U, 0xD9U,0x10U,0x41U,0x02U,0x10U,0x06U,0x1AU,0x20U,0x00U,0x41U,
0x03U,0x7DU,0x22U,0x03U,0x42U,0xC0U,0x84U,0x3DU,0x7FU,0x42U, 0x90U,0x3EU,0x6AU,0x41U,0x08U,0x41U,0xDCU,0x10U,0x41U,0x02U,
0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x8FU,0x10U, 0x10U,0x06U,0x1AU,0x02U,0x40U,0x20U,0x00U,0x29U,0x03U,0x98U,
0x41U,0x8FU,0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,0x42U,0xA0U, 0x3EU,0x42U,0x01U,0x59U,0x04U,0x40U,0x20U,0x00U,0x29U,0x03U,
0x8DU,0x06U,0x7FU,0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U, 0x90U,0x3EU,0x22U,0x03U,0x42U,0x00U,0x55U,0x0DU,0x01U,0x0BU,
0x00U,0x41U,0x90U,0x10U,0x41U,0x90U,0x10U,0x2DU,0x00U,0x00U, 0x41U,0xDFU,0x10U,0x41U,0x2CU,0x42U,0x81U,0x01U,0x10U,0x07U,
0x20U,0x03U,0x42U,0x90U,0xCEU,0x00U,0x7FU,0x42U,0x0AU,0x81U, 0x1AU,0x20U,0x00U,0x29U,0x03U,0x90U,0x3EU,0x21U,0x03U,0x0BU,
0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x91U,0x10U,0x41U,0x91U, 0x02U,0x40U,0x20U,0x03U,0x41U,0x00U,0x41U,0x00U,0x10U,0x08U,
0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,0x42U,0xE8U,0x07U,0x7FU, 0x22U,0x03U,0x42U,0x00U,0x59U,0x04U,0x40U,0x02U,0x40U,0x20U,
0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x92U, 0x00U,0x29U,0x03U,0x98U,0x3EU,0x10U,0x09U,0x42U,0x00U,0x52U,
0x10U,0x41U,0x92U,0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,0x42U, 0x0DU,0x00U,0x20U,0x00U,0x29U,0x03U,0x98U,0x3EU,0x10U,0x0AU,
0xE4U,0x00U,0x7FU,0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U, 0x41U,0x04U,0x10U,0x0BU,0x42U,0x00U,0x52U,0x0DU,0x00U,0x20U,
0x00U,0x41U,0x93U,0x10U,0x41U,0x93U,0x10U,0x2DU,0x00U,0x00U, 0x00U,0x29U,0x03U,0x90U,0x3EU,0x10U,0x0AU,0x41U,0x04U,0x10U,
0x20U,0x03U,0x42U,0x0AU,0x7FU,0x22U,0x04U,0x42U,0x0AU,0x81U, 0x0BU,0x50U,0x0DU,0x02U,0x0BU,0x0BU,0x41U,0x8BU,0x11U,0x41U,
0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x94U,0x10U,0x41U,0x94U, 0xCDU,0x00U,0x42U,0x88U,0x01U,0x10U,0x07U,0x1AU,0x0BU,0x20U,
0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,0x20U,0x04U,0x42U,0x0AU, 0x00U,0x41U,0xE0U,0x3DU,0x6AU,0x22U,0x02U,0x41U,0x22U,0x41U,
0x7EU,0x7DU,0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x80U,0x10U, 0x03U,0x20U,0x00U,0x41U,0xC0U,0x3EU,0x6AU,0x41U,0x14U,0x41U,
0x41U,0x1EU,0x42U,0x98U,0x01U,0x10U,0x0BU,0x1AU,0x0BU,0x41U, 0x00U,0x41U,0x00U,0x41U,0x00U,0x41U,0x00U,0x10U,0x0CU,0x1AU,
0x00U,0x41U,0x00U,0x41U,0x02U,0x10U,0x09U,0x21U,0x03U,0x41U, 0x20U,0x02U,0x41U,0x22U,0x41U,0x01U,0x10U,0x0DU,0x1AU,0x41U,
0x00U,0x41U,0x00U,0x41U,0x03U,0x10U,0x09U,0x21U,0x04U,0x41U, 0x01U,0x41U,0xE4U,0x80U,0x0CU,0x41U,0x02U,0x10U,0x0EU,0x42U,
0x00U,0x41U,0x00U,0x41U,0x04U,0x10U,0x09U,0x21U,0x05U,0x41U, 0x02U,0x52U,0x04U,0x40U,0x41U,0xD8U,0x11U,0x41U,0x21U,0x42U,
0x00U,0x41U,0x00U,0x41U,0x05U,0x10U,0x09U,0x21U,0x06U,0x41U, 0x93U,0x01U,0x10U,0x03U,0x1AU,0x0BU,0x41U,0x01U,0x41U,0xE3U,
0xFAU,0x10U,0x41U,0x0BU,0x20U,0x03U,0x10U,0x0CU,0x1AU,0x41U, 0x80U,0x08U,0x41U,0x03U,0x10U,0x0EU,0x1AU,0x41U,0x01U,0x41U,
0x86U,0x11U,0x41U,0x05U,0x20U,0x04U,0x10U,0x0CU,0x1AU,0x41U, 0xE4U,0x80U,0x08U,0x41U,0x04U,0x10U,0x0EU,0x1AU,0x41U,0x01U,
0x8CU,0x11U,0x41U,0x04U,0x20U,0x05U,0x10U,0x0CU,0x1AU,0x20U, 0x41U,0x82U,0x80U,0x18U,0x41U,0x05U,0x10U,0x0EU,0x1AU,0x41U,
0x04U,0x42U,0x01U,0x59U,0x41U,0x00U,0x20U,0x05U,0x42U,0x00U, 0x01U,0x41U,0xE2U,0x80U,0x08U,0x41U,0x06U,0x10U,0x0EU,0x1AU,
0x55U,0x1BU,0x45U,0x04U,0x40U,0x41U,0x91U,0x11U,0x41U,0x1BU, 0x41U,0x00U,0x41U,0x00U,0x41U,0x06U,0x10U,0x0FU,0x21U,0x04U,
0x42U,0xA7U,0x01U,0x10U,0x0BU,0x1AU,0x0BU,0x10U,0x0DU,0x20U, 0x10U,0x10U,0x20U,0x04U,0x7DU,0x22U,0x04U,0x20U,0x03U,0x53U,
0x04U,0x7DU,0x22U,0x04U,0x42U,0x00U,0x57U,0x04U,0x40U,0x41U, 0x04U,0x40U,0x41U,0x8EU,0x10U,0x41U,0x8EU,0x10U,0x2DU,0x00U,
0x91U,0x11U,0x41U,0x1BU,0x42U,0xAFU,0x01U,0x10U,0x0BU,0x1AU, 0x00U,0x20U,0x03U,0x20U,0x04U,0x7DU,0x22U,0x03U,0x42U,0xC0U,
0x0BU,0x10U,0x0DU,0x21U,0x07U,0x41U,0xACU,0x11U,0x41U,0x03U, 0x84U,0x3DU,0x7FU,0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U,
0x20U,0x06U,0x42U,0xC0U,0xFFU,0xFFU,0xFFU,0xFFU,0xFFU,0xFFU, 0x00U,0x41U,0x8FU,0x10U,0x41U,0x8FU,0x10U,0x2DU,0x00U,0x00U,
0xFFU,0x1FU,0x83U,0x22U,0x06U,0x42U,0xC0U,0x84U,0x3DU,0x80U, 0x20U,0x03U,0x42U,0xA0U,0x8DU,0x06U,0x7FU,0x42U,0x0AU,0x81U,
0x22U,0x08U,0x10U,0x0CU,0x1AU,0x41U,0xFAU,0x10U,0x41U,0x0BU, 0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x90U,0x10U,0x41U,0x90U,
0x20U,0x03U,0x10U,0x0CU,0x1AU,0x41U,0xFAU,0x10U,0x41U,0x0BU, 0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,0x42U,0x90U,0xCEU,0x00U,
0x20U,0x03U,0x20U,0x07U,0x20U,0x05U,0x7DU,0x22U,0x05U,0x20U, 0x7FU,0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,
0x08U,0x7EU,0x42U,0x00U,0x20U,0x05U,0x42U,0x00U,0x55U,0x1BU, 0x91U,0x10U,0x41U,0x91U,0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,
0x42U,0x00U,0x20U,0x06U,0x42U,0xBFU,0x84U,0x3DU,0x56U,0x1BU, 0x42U,0xE8U,0x07U,0x7FU,0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,
0x7CU,0x22U,0x05U,0x10U,0x0CU,0x1AU,0x20U,0x00U,0x41U,0xD2U, 0x00U,0x00U,0x41U,0x92U,0x10U,0x41U,0x92U,0x10U,0x2DU,0x00U,
0xA4U,0x01U,0x3BU,0x01U,0xEEU,0x3DU,0x02U,0x40U,0x41U,0x00U, 0x00U,0x20U,0x03U,0x42U,0xE4U,0x00U,0x7FU,0x42U,0x0AU,0x81U,
0x41U,0x00U,0x20U,0x00U,0x41U,0xEEU,0x3DU,0x6AU,0x41U,0x02U, 0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,0x93U,0x10U,0x41U,0x93U,
0x10U,0x0EU,0x22U,0x03U,0x42U,0x01U,0x59U,0x04U,0x40U,0x02U, 0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,0x42U,0x0AU,0x7FU,0x22U,
0x40U,0x20U,0x03U,0x42U,0x00U,0x41U,0x02U,0x10U,0x0FU,0x42U, 0x04U,0x42U,0x0AU,0x81U,0xA7U,0x6AU,0x3AU,0x00U,0x00U,0x41U,
0x00U,0x52U,0x0DU,0x00U,0x20U,0x03U,0x10U,0x10U,0x41U,0x04U, 0x94U,0x10U,0x41U,0x94U,0x10U,0x2DU,0x00U,0x00U,0x20U,0x03U,
0x10U,0x0FU,0x50U,0x0DU,0x02U,0x0BU,0x0BU,0x42U,0xD5U,0xAAU, 0x20U,0x04U,0x42U,0x0AU,0x7EU,0x7DU,0xA7U,0x6AU,0x3AU,0x00U,
0x81U,0xAAU,0xE2U,0xF4U,0xF5U,0xE5U,0xD3U,0x00U,0x21U,0x03U, 0x00U,0x41U,0x80U,0x10U,0x41U,0x1EU,0x42U,0xACU,0x01U,0x10U,
0x0BU,0x41U,0x00U,0x20U,0x05U,0x10U,0x11U,0x22U,0x05U,0x42U, 0x07U,0x1AU,0x0BU,0x41U,0x00U,0x41U,0x00U,0x41U,0x02U,0x10U,
0x00U,0x57U,0x04U,0x40U,0x41U,0x91U,0x11U,0x41U,0x1BU,0x42U, 0x0FU,0x21U,0x03U,0x41U,0x00U,0x41U,0x00U,0x41U,0x03U,0x10U,
0xD2U,0x01U,0x10U,0x0BU,0x1AU,0x0BU,0x41U,0x00U,0x20U,0x04U, 0x0FU,0x21U,0x04U,0x41U,0x00U,0x41U,0x00U,0x41U,0x04U,0x10U,
0x10U,0x11U,0x22U,0x04U,0x42U,0x00U,0x57U,0x04U,0x40U,0x41U, 0x0FU,0x21U,0x05U,0x41U,0x00U,0x41U,0x00U,0x41U,0x05U,0x10U,
0x91U,0x11U,0x41U,0x1BU,0x42U,0xD5U,0x01U,0x10U,0x0BU,0x1AU, 0x0FU,0x21U,0x06U,0x41U,0xF9U,0x11U,0x41U,0x0BU,0x20U,0x03U,
0x0BU,0x41U,0xB0U,0x11U,0x41U,0x0AU,0x20U,0x03U,0x20U,0x05U, 0x10U,0x11U,0x1AU,0x41U,0x85U,0x12U,0x41U,0x05U,0x20U,0x04U,
0x20U,0x04U,0x10U,0x12U,0x10U,0x13U,0x22U,0x03U,0x10U,0x0CU, 0x10U,0x11U,0x1AU,0x41U,0x8BU,0x12U,0x41U,0x04U,0x20U,0x05U,
0x1AU,0x20U,0x03U,0x41U,0x06U,0x41U,0x01U,0x10U,0x14U,0x21U, 0x10U,0x11U,0x1AU,0x20U,0x04U,0x42U,0x01U,0x59U,0x41U,0x00U,
0x03U,0x41U,0x01U,0x10U,0x15U,0x1AU,0x41U,0x01U,0x41U,0x88U, 0x20U,0x05U,0x42U,0x00U,0x55U,0x1BU,0x45U,0x04U,0x40U,0x41U,
0x80U,0x18U,0x41U,0x02U,0x10U,0x08U,0x1AU,0x20U,0x03U,0x42U, 0x90U,0x12U,0x41U,0x1BU,0x42U,0xBBU,0x01U,0x10U,0x07U,0x1AU,
0x14U,0x80U,0x21U,0x04U,0x41U,0x02U,0x10U,0x16U,0x22U,0x05U, 0x0BU,0x10U,0x12U,0x20U,0x04U,0x7DU,0x22U,0x04U,0x42U,0x00U,
0x42U,0x01U,0x59U,0x04U,0x40U,0x20U,0x05U,0x41U,0x06U,0x41U, 0x57U,0x04U,0x40U,0x41U,0x90U,0x12U,0x41U,0x1BU,0x42U,0xC3U,
0x01U,0x10U,0x14U,0x20U,0x03U,0x7CU,0x21U,0x03U,0x0BU,0x41U, 0x01U,0x10U,0x07U,0x1AU,0x0BU,0x10U,0x12U,0x21U,0x07U,0x41U,
0xAAU,0x0FU,0x20U,0x03U,0x3CU,0x00U,0x00U,0x41U,0xA9U,0x0FU, 0xABU,0x12U,0x41U,0x03U,0x20U,0x06U,0x42U,0xC0U,0xFFU,0xFFU,
0x20U,0x03U,0x42U,0x08U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA8U, 0xFFU,0xFFU,0xFFU,0xFFU,0xFFU,0x1FU,0x83U,0x22U,0x06U,0x42U,
0x0FU,0x20U,0x03U,0x42U,0x10U,0x88U,0x3CU,0x00U,0x00U,0x41U, 0xC0U,0x84U,0x3DU,0x80U,0x22U,0x08U,0x10U,0x11U,0x1AU,0x41U,
0xA7U,0x0FU,0x20U,0x03U,0x42U,0x18U,0x88U,0x3CU,0x00U,0x00U, 0xF9U,0x11U,0x41U,0x0BU,0x20U,0x03U,0x10U,0x11U,0x1AU,0x41U,
0x41U,0xA6U,0x0FU,0x20U,0x03U,0x42U,0x20U,0x88U,0x3CU,0x00U, 0xF9U,0x11U,0x41U,0x0BU,0x20U,0x03U,0x20U,0x07U,0x20U,0x05U,
0x00U,0x41U,0xA5U,0x0FU,0x20U,0x03U,0x42U,0x28U,0x88U,0x3CU, 0x7DU,0x22U,0x05U,0x20U,0x08U,0x7EU,0x42U,0x00U,0x20U,0x05U,
0x00U,0x00U,0x41U,0xA4U,0x0FU,0x20U,0x03U,0x42U,0x30U,0x88U, 0x42U,0x00U,0x55U,0x1BU,0x42U,0x00U,0x20U,0x06U,0x42U,0xBFU,
0x3CU,0x00U,0x00U,0x41U,0xA3U,0x0FU,0x20U,0x03U,0x42U,0x38U, 0x84U,0x3DU,0x56U,0x1BU,0x7CU,0x22U,0x03U,0x10U,0x11U,0x1AU,
0x88U,0xA7U,0x41U,0x3FU,0x71U,0x41U,0xC0U,0x00U,0x72U,0x3AU, 0x41U,0x00U,0x20U,0x03U,0x10U,0x13U,0x22U,0x03U,0x42U,0x00U,
0x00U,0x00U,0x41U,0xF1U,0x09U,0x41U,0xC0U,0x0FU,0x29U,0x03U, 0x57U,0x04U,0x40U,0x41U,0x90U,0x12U,0x41U,0x1BU,0x42U,0xD8U,
0x00U,0x37U,0x03U,0x00U,0x41U,0xD9U,0x09U,0x41U,0xA8U,0x0FU, 0x01U,0x10U,0x07U,0x1AU,0x0BU,0x41U,0x00U,0x20U,0x04U,0x10U,
0x29U,0x03U,0x00U,0x37U,0x03U,0x00U,0x41U,0xD1U,0x09U,0x41U, 0x13U,0x22U,0x04U,0x42U,0x00U,0x57U,0x04U,0x40U,0x41U,0x90U,
0xA0U,0x0FU,0x29U,0x03U,0x00U,0x37U,0x03U,0x00U,0x41U,0xDEU, 0x12U,0x41U,0x1BU,0x42U,0xDBU,0x01U,0x10U,0x07U,0x1AU,0x0BU,
0x09U,0x41U,0x14U,0x41U,0x81U,0x80U,0x20U,0x10U,0x04U,0x1AU, 0x20U,0x03U,0x20U,0x04U,0x10U,0x14U,0x21U,0x03U,0x41U,0xAFU,
0x41U,0xAAU,0x0FU,0x20U,0x04U,0x3CU,0x00U,0x00U,0x41U,0xA9U, 0x12U,0x41U,0x0AU,0x20U,0x00U,0x29U,0x03U,0x98U,0x3EU,0x20U,
0x0FU,0x20U,0x04U,0x42U,0x08U,0x88U,0x3CU,0x00U,0x00U,0x41U, 0x03U,0x10U,0x15U,0x22U,0x03U,0x10U,0x11U,0x1AU,0x20U,0x03U,
0xA8U,0x0FU,0x20U,0x04U,0x42U,0x10U,0x88U,0x3CU,0x00U,0x00U, 0x41U,0x06U,0x41U,0x01U,0x10U,0x08U,0x21U,0x03U,0x41U,0x01U,
0x41U,0xA7U,0x0FU,0x20U,0x04U,0x42U,0x18U,0x88U,0x3CU,0x00U, 0x10U,0x16U,0x1AU,0x41U,0x01U,0x41U,0x88U,0x80U,0x18U,0x41U,
0x00U,0x41U,0xA6U,0x0FU,0x20U,0x04U,0x42U,0x20U,0x88U,0x3CU, 0x02U,0x10U,0x0EU,0x1AU,0x20U,0x03U,0x42U,0x14U,0x80U,0x21U,
0x00U,0x00U,0x41U,0xA5U,0x0FU,0x20U,0x04U,0x42U,0x28U,0x88U, 0x04U,0x41U,0x02U,0x10U,0x17U,0x22U,0x05U,0x42U,0x01U,0x59U,
0x3CU,0x00U,0x00U,0x41U,0xA4U,0x0FU,0x20U,0x04U,0x42U,0x30U, 0x04U,0x40U,0x20U,0x05U,0x41U,0x06U,0x41U,0x01U,0x10U,0x08U,
0x88U,0x3CU,0x00U,0x00U,0x41U,0xA3U,0x0FU,0x20U,0x04U,0x42U, 0x20U,0x03U,0x7CU,0x21U,0x03U,0x0BU,0x41U,0xAAU,0x0FU,0x20U,
0x38U,0x88U,0xA7U,0x41U,0xC0U,0x00U,0x72U,0x3AU,0x00U,0x00U, 0x03U,0x3CU,0x00U,0x00U,0x41U,0xA9U,0x0FU,0x20U,0x03U,0x42U,
0x41U,0xF3U,0x09U,0x21U,0x01U,0x41U,0xD0U,0x0FU,0x41U,0x22U, 0x08U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA8U,0x0FU,0x20U,0x03U,
0x41U,0x01U,0x10U,0x07U,0x42U,0x01U,0x51U,0x04U,0x40U,0x02U, 0x42U,0x10U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA7U,0x0FU,0x20U,
0x40U,0x41U,0x01U,0x41U,0xDFU,0x80U,0x3CU,0x41U,0x01U,0x10U, 0x03U,0x42U,0x18U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA6U,0x0FU,
0x08U,0x42U,0x01U,0x52U,0x0DU,0x00U,0x20U,0x00U,0x41U,0x30U, 0x20U,0x03U,0x42U,0x20U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA5U,
0x6AU,0x41U,0x84U,0x3CU,0x41U,0x01U,0x10U,0x09U,0x42U,0x01U, 0x0FU,0x20U,0x03U,0x42U,0x28U,0x88U,0x3CU,0x00U,0x00U,0x41U,
0x53U,0x0DU,0x00U,0x20U,0x00U,0x41U,0x00U,0x3AU,0x00U,0x00U, 0xA4U,0x0FU,0x20U,0x03U,0x42U,0x30U,0x88U,0x3CU,0x00U,0x00U,
0x41U,0x01U,0x10U,0x17U,0x22U,0x03U,0x42U,0x80U,0x01U,0x20U, 0x41U,0xA3U,0x0FU,0x20U,0x03U,0x42U,0x38U,0x88U,0xA7U,0x41U,
0x03U,0x42U,0x80U,0x01U,0x54U,0x1BU,0x21U,0x04U,0x20U,0x00U, 0x3FU,0x71U,0x41U,0xC0U,0x00U,0x72U,0x3AU,0x00U,0x00U,0x41U,
0x41U,0xD7U,0x00U,0x6AU,0x21U,0x01U,0x42U,0x00U,0x21U,0x03U, 0xF1U,0x09U,0x41U,0xC0U,0x0FU,0x29U,0x03U,0x00U,0x37U,0x03U,
0x03U,0x40U,0x41U,0x94U,0x82U,0x80U,0x80U,0x78U,0x41U,0x81U, 0x00U,0x41U,0xD9U,0x09U,0x41U,0xA8U,0x0FU,0x29U,0x03U,0x00U,
0x01U,0x10U,0x01U,0x1AU,0x20U,0x03U,0x20U,0x04U,0x5AU,0x45U, 0x37U,0x03U,0x00U,0x41U,0xD1U,0x09U,0x41U,0xA0U,0x0FU,0x29U,
0x04U,0x40U,0x41U,0xBBU,0x11U,0x41U,0x04U,0x20U,0x01U,0x41U, 0x03U,0x00U,0x37U,0x03U,0x00U,0x41U,0xDEU,0x09U,0x41U,0x14U,
0x14U,0x41U,0x01U,0x10U,0x18U,0x1AU,0x20U,0x00U,0x41U,0x01U, 0x41U,0x81U,0x80U,0x20U,0x10U,0x04U,0x1AU,0x41U,0xAAU,0x0FU,
0x20U,0x01U,0x41U,0x14U,0x10U,0x0EU,0x42U,0x01U,0x51U,0x04U, 0x20U,0x04U,0x3CU,0x00U,0x00U,0x41U,0xA9U,0x0FU,0x20U,0x04U,
0x40U,0x02U,0x40U,0x20U,0x00U,0x2DU,0x00U,0x00U,0x22U,0x02U, 0x42U,0x08U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA8U,0x0FU,0x20U,
0x41U,0x14U,0x4BU,0x0DU,0x00U,0x20U,0x00U,0x41U,0xC0U,0x3CU, 0x04U,0x42U,0x10U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA7U,0x0FU,
0x6AU,0x20U,0x02U,0x41U,0x03U,0x74U,0x6AU,0x42U,0x01U,0x37U, 0x20U,0x04U,0x42U,0x18U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xA6U,
0x03U,0x00U,0x0BU,0x0BU,0x20U,0x01U,0x41U,0x3CU,0x6AU,0x21U, 0x0FU,0x20U,0x04U,0x42U,0x20U,0x88U,0x3CU,0x00U,0x00U,0x41U,
0x01U,0x20U,0x03U,0x42U,0x01U,0x7CU,0x21U,0x03U,0x0CU,0x01U, 0xA5U,0x0FU,0x20U,0x04U,0x42U,0x28U,0x88U,0x3CU,0x00U,0x00U,
0x0BU,0x0BU,0x41U,0xF3U,0x09U,0x21U,0x01U,0x41U,0x00U,0x21U, 0x41U,0xA4U,0x0FU,0x20U,0x04U,0x42U,0x30U,0x88U,0x3CU,0x00U,
0x02U,0x03U,0x40U,0x41U,0x9FU,0x82U,0x80U,0x80U,0x78U,0x41U, 0x00U,0x41U,0xA3U,0x0FU,0x20U,0x04U,0x42U,0x38U,0x88U,0xA7U,
0x15U,0x10U,0x01U,0x1AU,0x20U,0x00U,0x20U,0x02U,0x3AU,0x00U, 0x41U,0xC0U,0x00U,0x72U,0x3AU,0x00U,0x00U,0x41U,0xF3U,0x09U,
0x2FU,0x20U,0x02U,0x41U,0xFFU,0x01U,0x71U,0x41U,0x13U,0x4BU, 0x21U,0x01U,0x41U,0xD0U,0x0FU,0x41U,0x22U,0x41U,0x01U,0x10U,
0x20U,0x01U,0x41U,0x9BU,0x0FU,0x4FU,0x72U,0x0DU,0x01U,0x20U, 0x0DU,0x42U,0x01U,0x51U,0x04U,0x40U,0x02U,0x40U,0x41U,0x01U,
0x00U,0x41U,0xC0U,0x3CU,0x6AU,0x20U,0x00U,0x2DU,0x00U,0x2FU, 0x41U,0xDFU,0x80U,0x3CU,0x41U,0x01U,0x10U,0x0EU,0x42U,0x01U,
0x22U,0x02U,0x41U,0x03U,0x74U,0x6AU,0x29U,0x03U,0x00U,0x50U, 0x52U,0x0DU,0x00U,0x20U,0x00U,0x41U,0x30U,0x6AU,0x41U,0x84U,
0x45U,0x04U,0x40U,0x20U,0x01U,0x41U,0xA0U,0x0FU,0x29U,0x03U, 0x3CU,0x41U,0x01U,0x10U,0x0FU,0x42U,0x01U,0x53U,0x0DU,0x00U,
0x00U,0x37U,0x03U,0x00U,0x20U,0x01U,0x41U,0xA8U,0x0FU,0x29U, 0x20U,0x00U,0x41U,0x00U,0x3AU,0x00U,0x00U,0x41U,0x01U,0x10U,
0x03U,0x00U,0x37U,0x03U,0x08U,0x20U,0x01U,0x41U,0xC0U,0x0FU, 0x18U,0x22U,0x03U,0x42U,0x80U,0x01U,0x20U,0x03U,0x42U,0x80U,
0x29U,0x03U,0x00U,0x37U,0x03U,0x20U,0x20U,0x01U,0x41U,0x22U, 0x01U,0x54U,0x1BU,0x21U,0x04U,0x20U,0x00U,0x41U,0xD7U,0x00U,
0x6AU,0x20U,0x01U,0x20U,0x01U,0x41U,0x0DU,0x6AU,0x41U,0x14U, 0x6AU,0x21U,0x01U,0x42U,0x00U,0x21U,0x03U,0x03U,0x40U,0x41U,
0x20U,0x00U,0x41U,0x2FU,0x6AU,0x41U,0x01U,0x10U,0x0EU,0x42U, 0x9AU,0x82U,0x80U,0x80U,0x78U,0x41U,0x81U,0x01U,0x10U,0x01U,
0x14U,0x51U,0x1BU,0x21U,0x01U,0x20U,0x00U,0x2DU,0x00U,0x2FU, 0x1AU,0x20U,0x03U,0x20U,0x04U,0x5AU,0x45U,0x04U,0x40U,0x41U,
0x21U,0x02U,0x0BU,0x20U,0x02U,0x41U,0x01U,0x6AU,0x21U,0x02U, 0xBAU,0x12U,0x41U,0x04U,0x20U,0x01U,0x41U,0x14U,0x41U,0x01U,
0x0CU,0x00U,0x0BU,0x00U,0x0BU,0x0BU,0x20U,0x01U,0x41U,0xF1U, 0x10U,0x19U,0x1AU,0x20U,0x00U,0x41U,0x01U,0x20U,0x01U,0x41U,
0x01U,0x3AU,0x00U,0x00U,0x41U,0xDBU,0x08U,0x41U,0xF4U,0x00U, 0x14U,0x10U,0x06U,0x42U,0x01U,0x51U,0x04U,0x40U,0x02U,0x40U,
0x10U,0x19U,0x1AU,0x41U,0x9AU,0x08U,0x41U,0x80U,0x08U,0x20U, 0x20U,0x00U,0x2DU,0x00U,0x00U,0x22U,0x02U,0x41U,0x14U,0x4BU,
0x01U,0x41U,0xFFU,0x07U,0x6BU,0x22U,0x02U,0x10U,0x1AU,0x22U, 0x0DU,0x00U,0x20U,0x00U,0x41U,0xC0U,0x3CU,0x6AU,0x20U,0x02U,
0x03U,0x42U,0x38U,0x86U,0x20U,0x03U,0x42U,0x38U,0x88U,0x42U, 0x41U,0x03U,0x74U,0x6AU,0x42U,0x01U,0x37U,0x03U,0x00U,0x0BU,
0x3FU,0x83U,0x84U,0x20U,0x03U,0x42U,0x28U,0x86U,0x42U,0x80U, 0x0BU,0x20U,0x01U,0x41U,0x3CU,0x6AU,0x21U,0x01U,0x20U,0x03U,
0x80U,0x80U,0x80U,0x80U,0x80U,0xC0U,0xFFU,0x00U,0x83U,0x84U, 0x42U,0x01U,0x7CU,0x21U,0x03U,0x0CU,0x01U,0x0BU,0x0BU,0x41U,
0x20U,0x03U,0x42U,0x18U,0x86U,0x42U,0x80U,0x80U,0x80U,0x80U, 0xF3U,0x09U,0x21U,0x01U,0x41U,0x00U,0x21U,0x02U,0x03U,0x40U,
0x80U,0xE0U,0x3FU,0x83U,0x84U,0x20U,0x03U,0x42U,0x08U,0x86U, 0x41U,0xA5U,0x82U,0x80U,0x80U,0x78U,0x41U,0x15U,0x10U,0x01U,
0x42U,0x80U,0x80U,0x80U,0x80U,0xF0U,0x1FU,0x83U,0x84U,0x20U, 0x1AU,0x20U,0x00U,0x20U,0x02U,0x3AU,0x00U,0x2FU,0x20U,0x02U,
0x03U,0x42U,0x08U,0x88U,0x42U,0x80U,0x80U,0x80U,0xF8U,0x0FU, 0x41U,0xFFU,0x01U,0x71U,0x41U,0x13U,0x4BU,0x20U,0x01U,0x41U,
0x83U,0x84U,0x20U,0x03U,0x42U,0x18U,0x88U,0x42U,0x80U,0x80U, 0x9BU,0x0FU,0x4FU,0x72U,0x0DU,0x01U,0x20U,0x00U,0x41U,0xC0U,
0xFCU,0x07U,0x83U,0x84U,0x20U,0x03U,0x42U,0x28U,0x88U,0x42U, 0x3CU,0x6AU,0x20U,0x00U,0x2DU,0x00U,0x2FU,0x22U,0x02U,0x41U,
0x80U,0xFEU,0x03U,0x83U,0x84U,0x42U,0xC0U,0x00U,0x84U,0x37U, 0x03U,0x74U,0x6AU,0x29U,0x03U,0x00U,0x50U,0x45U,0x04U,0x40U,
0x03U,0x00U,0x41U,0x98U,0x08U,0x10U,0x0DU,0x22U,0x04U,0x42U, 0x20U,0x01U,0x41U,0xA0U,0x0FU,0x29U,0x03U,0x00U,0x37U,0x03U,
0x05U,0x7CU,0x22U,0x03U,0x3CU,0x00U,0x00U,0x41U,0x92U,0x08U, 0x00U,0x20U,0x01U,0x41U,0xA8U,0x0FU,0x29U,0x03U,0x00U,0x37U,
0x20U,0x04U,0x42U,0x01U,0x7CU,0x22U,0x04U,0x3CU,0x00U,0x00U, 0x03U,0x08U,0x20U,0x01U,0x41U,0xC0U,0x0FU,0x29U,0x03U,0x00U,
0x41U,0x97U,0x08U,0x20U,0x03U,0x42U,0x08U,0x88U,0x3CU,0x00U, 0x37U,0x03U,0x20U,0x20U,0x01U,0x41U,0x22U,0x6AU,0x20U,0x01U,
0x00U,0x41U,0x96U,0x08U,0x20U,0x03U,0x42U,0x10U,0x88U,0x3CU, 0x20U,0x01U,0x41U,0x0DU,0x6AU,0x41U,0x14U,0x20U,0x00U,0x41U,
0x00U,0x00U,0x41U,0x95U,0x08U,0x20U,0x03U,0x42U,0x18U,0x88U, 0x2FU,0x6AU,0x41U,0x01U,0x10U,0x06U,0x42U,0x14U,0x51U,0x1BU,
0x3CU,0x00U,0x00U,0x41U,0x91U,0x08U,0x20U,0x04U,0x42U,0x08U, 0x21U,0x01U,0x20U,0x00U,0x2DU,0x00U,0x2FU,0x21U,0x02U,0x0BU,
0x88U,0x3CU,0x00U,0x00U,0x41U,0x90U,0x08U,0x20U,0x04U,0x42U, 0x20U,0x02U,0x41U,0x01U,0x6AU,0x21U,0x02U,0x0CU,0x00U,0x0BU,
0x10U,0x88U,0x3CU,0x00U,0x00U,0x41U,0x8FU,0x08U,0x20U,0x04U, 0x00U,0x0BU,0x0BU,0x20U,0x01U,0x41U,0xF1U,0x01U,0x3AU,0x00U,
0x42U,0x18U,0x88U,0x3CU,0x00U,0x00U,0x41U,0xBFU,0x11U,0x41U, 0x00U,0x41U,0xDBU,0x08U,0x41U,0xF4U,0x00U,0x10U,0x1AU,0x1AU,
0x06U,0x41U,0x80U,0x08U,0x20U,0x02U,0x41U,0x01U,0x10U,0x18U, 0x41U,0x9AU,0x08U,0x41U,0x80U,0x08U,0x20U,0x01U,0x41U,0xFFU,
0x1AU,0x41U,0xC5U,0x11U,0x41U,0x0BU,0x20U,0x00U,0x41U,0x20U, 0x07U,0x6BU,0x22U,0x02U,0x10U,0x1BU,0x22U,0x03U,0x42U,0x38U,
0x41U,0x80U,0x08U,0x20U,0x02U,0x10U,0x1BU,0x22U,0x03U,0x10U, 0x86U,0x20U,0x03U,0x42U,0x38U,0x88U,0x42U,0x3FU,0x83U,0x84U,
0x0CU,0x1AU,0x20U,0x03U,0x42U,0x7FU,0x57U,0x04U,0x40U,0x41U, 0x20U,0x03U,0x42U,0x28U,0x86U,0x42U,0x80U,0x80U,0x80U,0x80U,
0xD1U,0x11U,0x41U,0x1EU,0x42U,0xCFU,0x02U,0x10U,0x0BU,0x1AU, 0x80U,0x80U,0xC0U,0xFFU,0x00U,0x83U,0x84U,0x20U,0x03U,0x42U,
0x0BU,0x41U,0xEFU,0x11U,0x41U,0x29U,0x42U,0xD2U,0x02U,0x10U, 0x18U,0x86U,0x42U,0x80U,0x80U,0x80U,0x80U,0x80U,0xE0U,0x3FU,
0x03U,0x1AU,0x20U,0x00U,0x41U,0xE0U,0x3EU,0x6AU,0x24U,0x00U, 0x83U,0x84U,0x20U,0x03U,0x42U,0x08U,0x86U,0x42U,0x80U,0x80U,
0x20U,0x03U,0x0BU,0x0BU,0xBCU,0x03U,0x07U,0x00U,0x41U,0x80U, 0x80U,0x80U,0xF0U,0x1FU,0x83U,0x84U,0x20U,0x03U,0x42U,0x08U,
0x08U,0x0BU,0x24U,0x12U,0x00U,0x60U,0x22U,0x80U,0x00U,0x00U, 0x88U,0x42U,0x80U,0x80U,0x80U,0xF8U,0x0FU,0x83U,0x84U,0x20U,
0x00U,0x24U,0x00U,0x00U,0x00U,0x00U,0x20U,0x1AU,0x00U,0x00U, 0x03U,0x42U,0x18U,0x88U,0x42U,0x80U,0x80U,0xFCU,0x07U,0x83U,
0x00U,0x00U,0x20U,0x1BU,0x00U,0x00U,0x00U,0x00U,0x68U,0x40U, 0x84U,0x20U,0x03U,0x42U,0x28U,0x88U,0x42U,0x80U,0xFEU,0x03U,
0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x73U,0x21U,0x00U, 0x83U,0x84U,0x42U,0xC0U,0x00U,0x84U,0x37U,0x03U,0x00U,0x41U,
0x41U,0xC5U,0x08U,0x0BU,0x16U,0x81U,0x14U,0xB5U,0xF7U,0x62U, 0x98U,0x08U,0x10U,0x12U,0x22U,0x04U,0x42U,0x05U,0x7CU,0x22U,
0x79U,0x8AU,0x53U,0xD5U,0x43U,0xA0U,0x14U,0xCAU,0xF8U,0xB2U, 0x03U,0x3CU,0x00U,0x00U,0x41U,0x92U,0x08U,0x20U,0x04U,0x42U,
0x97U,0xCFU,0xF8U,0xF2U,0xF9U,0x37U,0xE8U,0x00U,0x41U,0xCFU, 0x01U,0x7CU,0x22U,0x04U,0x3CU,0x00U,0x00U,0x41U,0x97U,0x08U,
0x09U,0x0BU,0x02U,0xF0U,0x60U,0x00U,0x41U,0xA0U,0x0FU,0x0BU, 0x20U,0x03U,0x42U,0x08U,0x88U,0x3CU,0x00U,0x00U,0x41U,0x96U,
0x0DU,0xE0U,0x60U,0x61U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U, 0x08U,0x20U,0x03U,0x42U,0x10U,0x88U,0x3CU,0x00U,0x00U,0x41U,
0x00U,0x00U,0x83U,0x14U,0x00U,0x41U,0xC1U,0x0FU,0x0BU,0x31U, 0x95U,0x08U,0x20U,0x03U,0x42U,0x18U,0x88U,0x3CU,0x00U,0x00U,
0xE1U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x4DU,0x43U,0x00U, 0x41U,0x91U,0x08U,0x20U,0x04U,0x42U,0x08U,0x88U,0x3CU,0x00U,
0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x61U,0xE3U,0x2EU, 0x00U,0x41U,0x90U,0x08U,0x20U,0x04U,0x42U,0x10U,0x88U,0x3CU,
0x7AU,0x24U,0xA2U,0x38U,0xF1U,0xC6U,0x19U,0xD5U,0xF9U,0xDDU, 0x00U,0x00U,0x41U,0x8FU,0x08U,0x20U,0x04U,0x42U,0x18U,0x88U,
0xCCU,0x41U,0xA9U,0x4BU,0x33U,0xB6U,0x6CU,0x01U,0x63U,0xF7U, 0x3CU,0x00U,0x00U,0x41U,0xBEU,0x12U,0x41U,0x06U,0x41U,0x80U,
0xEFU,0xCCU,0x8AU,0x19U,0xC9U,0xFDU,0x6FU,0x28U,0xDCU,0x00U, 0x08U,0x20U,0x02U,0x41U,0x01U,0x10U,0x19U,0x1AU,0x41U,0xC4U,
0x41U,0x80U,0x10U,0x0BU,0x1DU,0x59U,0x6FU,0x75U,0x20U,0x6DU, 0x12U,0x41U,0x0BU,0x20U,0x00U,0x41U,0x20U,0x41U,0x80U,0x08U,
0x75U,0x73U,0x74U,0x20U,0x77U,0x61U,0x69U,0x74U,0x20U,0x30U, 0x20U,0x02U,0x10U,0x1CU,0x22U,0x03U,0x10U,0x11U,0x1AU,0x20U,
0x30U,0x30U,0x30U,0x30U,0x30U,0x30U,0x20U,0x73U,0x65U,0x63U, 0x03U,0x42U,0x7FU,0x57U,0x04U,0x40U,0x41U,0xD0U,0x12U,0x41U,
0x6FU,0x6EU,0x64U,0x73U,0x00U,0x41U,0x9EU,0x10U,0x0BU,0xF9U, 0x1EU,0x42U,0xD5U,0x02U,0x10U,0x07U,0x1AU,0x0BU,0x41U,0xEEU,
0x01U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x50U, 0x12U,0x41U,0x29U,0x42U,0xD8U,0x02U,0x10U,0x03U,0x1AU,0x20U,
0x61U,0x73U,0x73U,0x69U,0x6EU,0x67U,0x20U,0x6EU,0x6FU,0x6EU, 0x00U,0x41U,0xE0U,0x3EU,0x6AU,0x24U,0x00U,0x20U,0x03U,0x0BU,
0x2DU,0x63U,0x6CU,0x61U,0x69U,0x6DU,0x20U,0x74U,0x78U,0x6EU, 0x0BU,0xBBU,0x04U,0x07U,0x00U,0x41U,0x80U,0x08U,0x0BU,0x24U,
0x00U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x50U, 0x12U,0x00U,0x60U,0x22U,0x80U,0x00U,0x00U,0x00U,0x24U,0x00U,
0x61U,0x73U,0x73U,0x69U,0x6EU,0x67U,0x20U,0x6FU,0x75U,0x74U, 0x00U,0x00U,0x00U,0x20U,0x1AU,0x00U,0x00U,0x00U,0x00U,0x20U,
0x67U,0x6FU,0x69U,0x6EU,0x67U,0x20U,0x74U,0x78U,0x6EU,0x00U, 0x1BU,0x00U,0x00U,0x00U,0x00U,0x68U,0x40U,0x00U,0x00U,0x00U,
0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x50U,0x61U, 0x00U,0x00U,0x00U,0x00U,0x73U,0x21U,0x00U,0x41U,0xC5U,0x08U,
0x73U,0x73U,0x69U,0x6EU,0x67U,0x20U,0x72U,0x65U,0x77U,0x61U, 0x0BU,0x16U,0x81U,0x14U,0xB5U,0xF7U,0x62U,0x79U,0x8AU,0x53U,
0x72U,0x64U,0x20U,0x73U,0x65U,0x74U,0x75U,0x70U,0x20U,0x74U, 0xD5U,0x43U,0xA0U,0x14U,0xCAU,0xF8U,0xB2U,0x97U,0xCFU,0xF8U,
0x78U,0x6EU,0x00U,0x61U,0x63U,0x63U,0x75U,0x6DU,0x75U,0x6CU, 0xF2U,0xF9U,0x37U,0xE8U,0x00U,0x41U,0xCFU,0x09U,0x0BU,0x02U,
0x61U,0x74U,0x6FU,0x72U,0x00U,0x66U,0x69U,0x72U,0x73U,0x74U, 0xF0U,0x60U,0x00U,0x41U,0xA0U,0x0FU,0x0BU,0x0DU,0xE0U,0x60U,
0x00U,0x6CU,0x61U,0x73U,0x74U,0x00U,0x52U,0x65U,0x77U,0x61U, 0x61U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x00U,0x83U,
0x72U,0x64U,0x3AU,0x20U,0x41U,0x73U,0x73U,0x65U,0x72U,0x74U, 0x14U,0x00U,0x41U,0xC1U,0x0FU,0x0BU,0x31U,0xE1U,0x00U,0x00U,
0x69U,0x6FU,0x6EU,0x20U,0x66U,0x61U,0x69U,0x6CU,0x75U,0x72U, 0x00U,0x00U,0x00U,0x00U,0x4DU,0x43U,0x00U,0x00U,0x00U,0x00U,
0x65U,0x2EU,0x00U,0x62U,0x61U,0x6CU,0x00U,0x78U,0x66U,0x6CU, 0x00U,0x00U,0x00U,0x00U,0x61U,0xE3U,0x2EU,0x7AU,0x24U,0xA2U,
0x5FU,0x72U,0x65U,0x77U,0x61U,0x72U,0x64U,0x00U,0x61U,0x76U, 0x38U,0xF1U,0xC6U,0x19U,0xD5U,0xF9U,0xDDU,0xCCU,0x41U,0xA9U,
0x3AU,0x00U,0x65U,0x6DU,0x69U,0x74U,0x3AU,0x00U,0x65U,0x6DU, 0x4BU,0x33U,0xB6U,0x6CU,0x01U,0x63U,0xF7U,0xEFU,0xCCU,0x8AU,
0x69U,0x74U,0x5FU,0x72U,0x65U,0x73U,0x75U,0x6CU,0x74U,0x00U, 0x19U,0xC9U,0xFDU,0x6FU,0x28U,0xDCU,0x00U,0x41U,0x80U,0x10U,
0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x45U,0x6DU, 0x0BU,0x1DU,0x59U,0x6FU,0x75U,0x20U,0x6DU,0x75U,0x73U,0x74U,
0x69U,0x74U,0x20U,0x6CU,0x6FU,0x6FU,0x70U,0x62U,0x61U,0x63U, 0x20U,0x77U,0x61U,0x69U,0x74U,0x20U,0x30U,0x30U,0x30U,0x30U,
0x6BU,0x20U,0x66U,0x61U,0x69U,0x6CU,0x65U,0x64U,0x2EU,0x00U, 0x30U,0x30U,0x30U,0x20U,0x73U,0x65U,0x63U,0x6FU,0x6EU,0x64U,
0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x45U,0x6DU, 0x73U,0x00U,0x41U,0x9EU,0x10U,0x0BU,0xF8U,0x02U,0x52U,0x65U,
0x69U,0x74U,0x74U,0x65U,0x64U,0x20U,0x72U,0x65U,0x77U,0x61U, 0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x50U,0x61U,0x73U,0x73U,
0x72U,0x64U,0x20U,0x74U,0x78U,0x6EU,0x20U,0x73U,0x75U,0x63U, 0x69U,0x6EU,0x67U,0x20U,0x6EU,0x6FU,0x6EU,0x2DU,0x63U,0x6CU,
0x63U,0x65U,0x73U,0x73U,0x66U,0x75U,0x6CU,0x6CU,0x79U,0x2EU 0x61U,0x69U,0x6DU,0x20U,0x74U,0x78U,0x6EU,0x00U,0x52U,0x65U,
0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x50U,0x61U,0x73U,0x73U,
0x69U,0x6EU,0x67U,0x20U,0x6FU,0x75U,0x74U,0x67U,0x6FU,0x69U,
0x6EU,0x67U,0x20U,0x74U,0x78U,0x6EU,0x00U,0x52U,0x52U,0x00U,
0x52U,0x44U,0x00U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,
0x20U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x73U,0x20U,0x61U,
0x72U,0x65U,0x20U,0x64U,0x69U,0x73U,0x61U,0x62U,0x6CU,0x65U,
0x64U,0x20U,0x62U,0x79U,0x20U,0x67U,0x6FU,0x76U,0x65U,0x72U,
0x6EU,0x61U,0x6EU,0x63U,0x65U,0x2EU,0x00U,0x52U,0x65U,0x77U,
0x61U,0x72U,0x64U,0x3AU,0x20U,0x52U,0x65U,0x77U,0x61U,0x72U,
0x64U,0x73U,0x20U,0x69U,0x6EU,0x63U,0x6FU,0x72U,0x72U,0x65U,
0x63U,0x74U,0x6CU,0x79U,0x20U,0x63U,0x6FU,0x6EU,0x66U,0x69U,
0x67U,0x75U,0x72U,0x65U,0x64U,0x20U,0x62U,0x79U,0x20U,0x67U,
0x6FU,0x76U,0x65U,0x72U,0x6EU,0x61U,0x6EU,0x63U,0x65U,0x20U,
0x6FU,0x72U,0x20U,0x75U,0x6EU,0x72U,0x65U,0x63U,0x6FU,0x76U,
0x65U,0x72U,0x61U,0x62U,0x6CU,0x65U,0x20U,0x65U,0x72U,0x72U,
0x6FU,0x72U,0x2EU,0x00U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,
0x3AU,0x20U,0x50U,0x61U,0x73U,0x73U,0x69U,0x6EU,0x67U,0x20U,
0x72U,0x65U,0x77U,0x61U,0x72U,0x64U,0x20U,0x73U,0x65U,0x74U,
0x75U,0x70U,0x20U,0x74U,0x78U,0x6EU,0x00U,0x61U,0x63U,0x63U,
0x75U,0x6DU,0x75U,0x6CU,0x61U,0x74U,0x6FU,0x72U,0x00U,0x66U,
0x69U,0x72U,0x73U,0x74U,0x00U,0x6CU,0x61U,0x73U,0x74U,0x00U,
0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,0x3AU,0x20U,0x41U,0x73U,
0x73U,0x65U,0x72U,0x74U,0x69U,0x6FU,0x6EU,0x20U,0x66U,0x61U,
0x69U,0x6CU,0x75U,0x72U,0x65U,0x2EU,0x00U,0x62U,0x61U,0x6CU,
0x00U,0x78U,0x66U,0x6CU,0x5FU,0x72U,0x65U,0x77U,0x61U,0x72U,
0x64U,0x00U,0x61U,0x76U,0x3AU,0x00U,0x65U,0x6DU,0x69U,0x74U,
0x3AU,0x00U,0x65U,0x6DU,0x69U,0x74U,0x5FU,0x72U,0x65U,0x73U,
0x75U,0x6CU,0x74U,0x00U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,
0x3AU,0x20U,0x45U,0x6DU,0x69U,0x74U,0x20U,0x6CU,0x6FU,0x6FU,
0x70U,0x62U,0x61U,0x63U,0x6BU,0x20U,0x66U,0x61U,0x69U,0x6CU,
0x65U,0x64U,0x2EU,0x00U,0x52U,0x65U,0x77U,0x61U,0x72U,0x64U,
0x3AU,0x20U,0x45U,0x6DU,0x69U,0x74U,0x74U,0x65U,0x64U,0x20U,
0x72U,0x65U,0x77U,0x61U,0x72U,0x64U,0x20U,0x74U,0x78U,0x6EU,
0x20U,0x73U,0x75U,0x63U,0x63U,0x65U,0x73U,0x73U,0x66U,0x75U,
0x6CU,0x6CU,0x79U,0x2EU
}; };
#endif // XAHAU_GENESIS_HOOKS #endif // XAHAU_GENESIS_HOOKS

View File

@@ -45,8 +45,9 @@ namespace XahauGenesis
// 1.003274 -xfl-> 6089869970204910592 -le-> 0x00E461EE78908354 // 1.003274 -xfl-> 6089869970204910592 -le-> 0x00E461EE78908354
{{'I', 'R', 'R'}, {0x00U, 0xE4U, 0x61U, 0xEEU, 0x78U, 0x90U, 0x83U, 0x54U}}, {{'I', 'R', 'R'}, {0x00U, 0xE4U, 0x61U, 0xEEU, 0x78U, 0x90U, 0x83U, 0x54U}},
// initial reward delay is 365*24*60*60/12 = 2628000 = 0x2819A0 -LEu64-> A019280000000000 // initial reward delay is xfl le -> 00806AACAF3C0956 -> 2600000 dec
{{'I', 'R', 'D'}, {0xA0U, 0x19U, 0x28U, 0x00U, 0x00U, 0x00U, 0x00U, 0x00U}} {{'I', 'R', 'D'}, {0x00U, 0x80U, 0x6AU, 0xACU, 0xAFU, 0x3CU, 0x09U, 0x56U}}
}; };
// For the Reward Hook: HookOn is set to ttCLAIM_REWARD only // For the Reward Hook: HookOn is set to ttCLAIM_REWARD only

View File

@@ -609,6 +609,28 @@ struct XahauGenesis_test : public beast::unit_test::suite
std::vector<uint8_t> const null_data {0,0,0,0,0,0,0,0}; std::vector<uint8_t> const null_data {0,0,0,0,0,0,0,0};
doL1Vote(__LINE__, david, 'R', 'R', null_data, vote_data, false); doL1Vote(__LINE__, david, 'R', 'R', null_data, vote_data, false);
} }
// 100% vote for a different reward delay
{
// this will be the new reward delay
std::vector<uint8_t> vote_data {0x00U,0x80U,0xC6U,0xA4U,0x7EU,0x8DU,0x03U,0x55U};
// this is the default reward delay
std::vector<uint8_t> const original_data {0x00U,0x80U,0x6AU,0xACU,0xAFU,0x3CU,0x09U,0x56U};
doL1Vote(__LINE__, edward, 'R', 'D', vote_data, original_data, false);
doL1Vote(__LINE__, david, 'R', 'D', vote_data, original_data, false);
doL1Vote(__LINE__, carol, 'R', 'D', vote_data, original_data, false);
doL1Vote(__LINE__, bob, 'R', 'D', vote_data, original_data, false);
doL1Vote(__LINE__, alice, 'R', 'D', vote_data, original_data, true);
// reverting a vote should not undo the action
doL1Vote(__LINE__, david, 'R', 'D', original_data, vote_data, false);
// submitting a null vote should delete the vote, and should not undo the action
std::vector<uint8_t> const null_data {0,0,0,0,0,0,0,0};
doL1Vote(__LINE__, alice, 'R', 'D', null_data, vote_data, false);
}
uint8_t const member_count_key[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'M','C'}; uint8_t const member_count_key[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,'M','C'};