HTTP response with a large byte array from PSRAM using ESPAsyncWebServer.h

Hello,
I'm actually trying to send a jpg image that is stored in PSRAM of an ESP32-Cam unit as a byte array.

  server.on("/saved-photo", HTTP_GET, [](AsyncWebServerRequest* request) {
    if (fileSize <= 0) request->send(200, "text/html", "nothing here yet");

    else {
      AsyncWebServerResponse* response = request->beginChunkedResponse("image/jpg", [](uint8_t* buffer, size_t maxLen, size_t index) -> size_t {
        size_t len = 0;
        for (int i = 0; i < (int)maxLen; i++) {
          if (((int)index + i) > fileSize) 
          {
            buffer[i] = fileArray[index + i];
            len++;
          }
          else break;
        }
        return len;
      });
      request->send(response);
      //request->send_P(200, "image/jpg", fileArray, fileSize);
    }
  });

It can be easily sent with send_P, but that uses PROGMEM and might wear out flash memory - the image is received via ESP-Now and updated every couple of seconds. I would rather avoid that, that's why I'm not using PROGMEM or SPIFFS. The images are usually around 60kb, so I don't want to load them into heap memory either.

Obviously, I cannot get it to work. The image is never displayed on the webpage.


Can someone shed some light on the matter? Thank you.

Complete sketch:

#include "Arduino.h"
#include "soc/soc.h"          
#include "soc/rtc_cntl_reg.h"
#include "driver/rtc_io.h"

#include <esp_now.h>
#include <esp_wifi.h>
#define CHANNEL 1

#include <ESPAsyncWebServer.h>
#include <WiFiClient.h>
#include "Arduino.h"


#define FILE_MAX_SIZE 150000

uint8_t* fileArray;  
//uint8_t fileArray[FILE_MAX_SIZE];
uint8_t* tempfileArray;  
//uint8_t tempfileArray[FILE_MAX_SIZE];

uint16_t tempfileSize = 0;
uint16_t fileSize = 0;

const char* ssid = "***";
const char* password = "***";

AsyncWebServer server(80);

AsyncEventSource events("/events");


int currentTransmitCurrentPosition = 0;
int currentTransmitTotalPackages = 0;

byte showImage = 0;



bool debug = false;


const char index_html[] = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    body { text-align:center; }
    .vert { margin-bottom: 10%; }
    .hori{ margin-bottom: 0%; }
  </style>
</head>
<body>
  <div id="container">
    <h2>ESP32-CAM Last Photo</h2>
    <p>It might take more than 5 seconds to capture a photo.</p>
    <p>
      <button onclick="rotatePhoto();">ROTATE</button>
      
      <button onclick="location.reload();">REFRESH PAGE</button>
    </p>
  </div>
  <div><img src="saved-photo" id="photo" width="70%"></div>
</body>
<script>
/*
setInterval(function() {
    const Http = new XMLHttpRequest();
    const url=  window.location.origin + "/saved-photo";
    Http.open("GET", url);
    Http.send();
    var myImageElement = document.getElementById("photo");
    myImageElement.src = "saved-photo";
}, 2000);
*/

  if (!!window.EventSource) {
    var source = new EventSource('/events');
    
    source.addEventListener('open', function(e) {
      console.log("Events Connected");
    }, false);
    source.addEventListener('error', function(e) {
      if (e.target.readyState != EventSource.OPEN) {
        console.log("Events Disconnected");
      }
    }, false);
    
    source.addEventListener('message', function(e) {
      console.log("message", e.data);
    }, false);
    
    source.addEventListener('update_photo', function(e) {
      console.log("update_photo", "!");
      const Http = new XMLHttpRequest();
      const url=  window.location.origin + "/saved-photo";
      Http.open("GET", url);
      Http.send();
      var myImageElement = document.getElementById("photo");
      myImageElement.src = "saved-photo"; 
    }, false);
  }
  var deg = 0;
  function capturePhoto() {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', "/capture", true);
    xhr.send();
  }
  function rotatePhoto() {
    var img = document.getElementById("photo");
    deg += 90;
    if(isOdd(deg/90)){ document.getElementById("container").className = "vert"; }
    else{ document.getElementById("container").className = "hori"; }
    img.style.transform = "rotate(" + deg + "deg)";
  }
  function isOdd(n) { return Math.abs(n % 2) == 1; }
</script>
</html>)rawliteral";




void setup() {
  Serial.begin(115200);
  while (!Serial) delay(1);
  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
  Serial.println("ESPNow/Basic/Slave Example");
  pinMode(2, OUTPUT);  //onboard LED

  fileArray = (uint8_t*)ps_malloc(FILE_MAX_SIZE * sizeof(uint8_t));
  tempfileArray = (uint8_t*)ps_malloc(FILE_MAX_SIZE * sizeof(uint8_t));

  WiFi.mode(WIFI_AP_STA);
  esp_wifi_set_ps(WIFI_PS_NONE);

  Serial.print("AP MAC: ");
  Serial.println(WiFi.softAPmacAddress());

  InitESPNow();

  WiFi.begin(ssid, password);
  Serial.println("Setting as a Wi-Fi Station..");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("Station IP Address: ");
  Serial.println(WiFi.localIP());
  Serial.print("Wi-Fi Channel: ");
  Serial.println(WiFi.channel());


  server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) {
    request->send(200, "text/html", index_html);
  });


  server.on("/saved-photo", HTTP_GET, [](AsyncWebServerRequest* request) {
    if (fileSize <= 0) request->send(200, "text/html", "nothing here yet");

    else {
      AsyncWebServerResponse* response = request->beginChunkedResponse("image/jpg", [](uint8_t* buffer, size_t maxLen, size_t index) -> size_t {
        size_t len = 0;
        for (int i = 0; i < (int)maxLen; i++) {
          if (((int)index + i) > fileSize) 
          {
            buffer[i] = fileArray[index + i];
            len++;
          }
          else break;
        }
        return len;
      });
      request->send(response);
      //request->send_P(200, "image/jpg", fileArray, fileSize);
    }
  });

  events.onConnect([](AsyncEventSourceClient* client) {
    if (client->lastId()) Serial.printf("Client reconnected! Last message ID that it got is: %u\n", client->lastId());
    else Serial.println("Client connected for the first time!");
    client->send("hello!", NULL, millis(), 10000);
  });
  server.addHandler(&events);

  server.begin();
  Serial.printf("Total heap: %d\n", ESP.getHeapSize());
  Serial.printf("Free heap: %d\n", ESP.getFreeHeap());
  Serial.printf("Total PSRAM: %d\n", ESP.getPsramSize());
  Serial.printf("Free PSRAM: %d\n", ESP.getFreePsram());
}


int dis_count = 0;
void loop() {
  if (WiFi.status() != WL_CONNECTED) {
    WiFi.disconnect(true);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
      dis_count++;
      if (dis_count > 20) {
        Serial.println();
        Serial.println("(FAILURE) Connection timeout - Restarting ESP");
        delay(1000);
        ESP.restart();
      }
    }
    Serial.println("Station IP Address: ");
    Serial.println(WiFi.localIP());
    Serial.print("Wi-Fi Channel: ");
    Serial.println(WiFi.channel());
  }
  dis_count = 0;


  if (showImage) {
    //memcpy(&fileArray, tempfileArray, tempfileSize);
    for (int i = 0; i < FILE_MAX_SIZE; i++) {
      fileArray[i] = tempfileArray[i];
    }
    fileSize = tempfileSize;
    Serial.printf("Total heap: %d\n", ESP.getHeapSize());
    Serial.printf("Free heap: %d\n", ESP.getFreeHeap());
    Serial.printf("Total PSRAM: %d\n", ESP.getPsramSize());
    Serial.printf("Free PSRAM: %d\n", ESP.getFreePsram());

    delay(100);
    showImage = 0;

    events.send("ping", NULL, millis());
    events.send("1", "update_photo", millis());
  }
}


int writePos = 0;
int expectedFileSize;

void OnDataRecv(const uint8_t* mac_addr, const uint8_t* data, int data_len) {
  //blinkLED();
  switch (data[0]) {
    case 0x01:
      Serial.println("ESP-Now: Start of new file transmit");
      currentTransmitCurrentPosition = 0;
      currentTransmitTotalPackages = data[1];
      expectedFileSize = (int(data[2]) * 240) + int(data[3]);
      Serial.println("ESP-Now: currentTransmitTotalPackages = " + String(currentTransmitTotalPackages));
      Serial.println("ESP-Now: expected file size = " + String(expectedFileSize));
      digitalWrite(2, !digitalRead(2));
      writePos = 0;
      break;
    case 0x02:
      //Serial.println("chunk of file transmit");
      currentTransmitCurrentPosition = data[1];
      //Serial.println("chunk NUMBER = " + String(currentTransmitCurrentPosition));
      for (int i = 2; i < data_len; i++) {
        tempfileArray[writePos] = data[i];
        writePos++;
      }
      digitalWrite(2, !digitalRead(2));
      if (currentTransmitCurrentPosition == currentTransmitTotalPackages) {
        tempfileSize = writePos;
        Serial.print("ESP-Now: File Size: ");
        Serial.println(tempfileSize);
        digitalWrite(2, LOW);
        if (tempfileSize != expectedFileSize) {
          Serial.println("ESP-Now: corrupted data, removing received data");
          break;
        }
        Serial.println("ESP-Now: File transfer complete");
        showImage = 1;
        //esp_now_deinit();
      }

      break;
  }
}



void InitESPNow() {
  //WiFi.disconnect();
  if (esp_now_init() == ESP_OK) {
    Serial.println("ESPNow Init Success");
    esp_now_register_recv_cb(OnDataRecv);
  } else {
    Serial.println("ESPNow Init Failed");
    ESP.restart();
  }
}


void blinkLED() {
  digitalWrite(2, HIGH);
  delay(50);
  digitalWrite(2, LOW);
  delay(50);
  digitalWrite(2, HIGH);
  delay(50);
  digitalWrite(2, LOW);
}

probably won't help you with your issue. I FTP the images from the esp32cam to my website for display.

#include "sdkconfig.h" // used for log printing
#include "esp_system.h"
#include "freertos/FreeRTOS.h" //freeRTOS items to be used
#include "freertos/task.h"
#include "certs.h"
#include "esp_camera.h"
#include "soc/soc.h"           // Disable brownout problems
#include "soc/rtc_cntl_reg.h"  // Disable brownout problems
#include "driver/rtc_io.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include "ESP32_FTPClient.h"
//
WiFiClient wifiClient; // do the WiFi instantiation thing
ESP32_FTPClient ftp (ftp_server, ftp_user, ftp_pass, 5000, 2);
////
void IRAM_ATTR WiFiEvent(WiFiEvent_t event)
{
  switch (event) {
    case SYSTEM_EVENT_STA_CONNECTED:
      log_i("Connected to WiFi access point");
      break;
    case SYSTEM_EVENT_STA_DISCONNECTED:
      log_i("Disconnected from WiFi access point");
      break;
    case SYSTEM_EVENT_AP_STADISCONNECTED:
      log_i("WiFi client disconnected");
      break;
    default: break;
  }
} // void IRAM_ATTR WiFiEvent(WiFiEvent_t event)
////
void setup()
{
  WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
  ////
  if ( configInitCamera() )
  {
    xTaskCreatePinnedToCore( capturePhoto_sendFTP, "capturePhoto_sendFTP", 20000, NULL, 3, NULL, 1 );
  } else {
    log_i( "camera failed to initilize. Quitting programed operations." );
  }
} // void setup()
////
void capturePhoto_sendFTP( void *pvParameters )
{
  TickType_t xLastWakeTime    = xTaskGetTickCount();
  const TickType_t xFrequency = 100; //delay for mS
  for (;;)
  {
    log_i( "tick");
    if ( WiFi.status() == WL_CONNECTED )
    {
      camera_fb_t * fb = NULL; // pointer
      fb = esp_camera_fb_get();
      if (!fb)
      {
        log_i( "Camera capture failed" );
      } else {
        ftp.OpenConnection(); // try open FTP
        if ( ftp.isConnected() )
        {
          //try send file ftp
          ftp.ChangeWorkDir( ftp_path );
          // Delete existing file, create the new file, and send the image to the file
          ftp.DeleteFile( ftp_file_name );
          ftp.InitFile( ftp_file_type ); //"Type I"
          ftp.NewFile( ftp_file_name );
          ftp.WriteData( (unsigned char *)fb->buf, fb->len );
          ftp.CloseFile();
          ftp.CloseConnection();
        }
        esp_camera_fb_return(fb); //return the frame buffer back to the driver for reuse
      }
    } else {
      log_i( "In capturePhoto_sendFTP found WiFi not connected ");
      connectToWiFi();
    }
    xLastWakeTime = xTaskGetTickCount();
    vTaskDelayUntil( &xLastWakeTime, xFrequency );
  }
  vTaskDelete( NULL );
} //void capturePhoto_sendFTP( void *pvParameters )
////
void configureCameraSettings()
{
  sensor_t * s = esp_camera_sensor_get(); //see certs.h for more info
  s->set_brightness(s, -1);     // -2 to 2 **************************
  s->set_contrast(s, 0);       // -2 to 2
  s->set_saturation(s, 0);     // -2 to 2
  s->set_special_effect(s, 0); // 0 to 6 (0 - No Effect, 1 - Negative, 2 - Grayscale, 3 - Red Tint, 4 - Green Tint, 5 - Blue Tint, 6 - Sepia)
  s->set_whitebal(s, 1);       // 0 = disable , 1 = enable
  s->set_awb_gain(s, 1);       // 0 = disable , 1 = enable
  s->set_wb_mode(s, 0);        // 0 to 4 - if awb_gain enabled (0 - Auto, 1 - Sunny, 2 - Cloudy, 3 - Office, 4 - Home)
  s->set_exposure_ctrl(s, 1);  // 0 = disable , 1 = enable
  s->set_aec2(s, 0);           // 0 = disable , 1 = enable
  s->set_ae_level(s, 0);       // -2 to 2
  s->set_aec_value(s, 300);    // 0 to 1200
  s->set_gain_ctrl(s, 1);      // 0 = disable , 1 = enable
  s->set_agc_gain(s, 0);       // 0 to 30
  s->set_gainceiling(s, (gainceiling_t)0);  // 0 to 6
  s->set_bpc(s, 0);            // 0 = disable , 1 = enable
  s->set_wpc(s, 1);            // 0 = disable , 1 = enable
  s->set_raw_gma(s, 1);        // 0 = disable , 1 = enable
  s->set_lenc(s, 1);           // 0 = disable , 1 = enable
  s->set_hmirror(s, 0);        // 0 = disable , 1 = enable
  s->set_vflip(s, 0);          // 0 = disable , 1 = enable
  s->set_dcw(s, 1);            // 0 = disable , 1 = enable
  s->set_colorbar(s, 0);       // 0 = disable , 1 = enable
} //void configureCameraSettings()
////
bool configInitCamera()
{
  camera_config_t config = {}; // Stores the camera configuration parameters
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer   = LEDC_TIMER_0;
  config.pin_d0       = GPIO_NUM_5; //Y2
  config.pin_d1       = GPIO_NUM_18; //Y3
  config.pin_d2       = GPIO_NUM_19; //Y4
  config.pin_d3       = GPIO_NUM_21; //Y5
  config.pin_d4       = GPIO_NUM_36; //Y6
  config.pin_d5       = GPIO_NUM_39; //Y7
  config.pin_d6       = GPIO_NUM_34; //Y8
  config.pin_d7       = GPIO_NUM_35; // Y9
  config.pin_xclk     = GPIO_NUM_0; //XCLK
  config.pin_pclk     = GPIO_NUM_22; //PCLK
  config.pin_vsync    = GPIO_NUM_25; //VSSYNC
  config.pin_href     = GPIO_NUM_23; // HREF
  config.pin_sscb_sda = GPIO_NUM_26; //SIOD
  config.pin_sscb_scl = GPIO_NUM_27; //SIOC
  config.pin_pwdn     = GPIO_NUM_32; //PWDN
  config.pin_reset    = -1; //RESET
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG; //assuming default is has PSRAM
  config.frame_size = FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
  config.jpeg_quality = 10; //0-63 lower number means higher quality
  config.fb_count = 2;
  // Initialize the Camera
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    log_i("Camera init failed with error 0x%x", err);
    return false;
  } else {
    configureCameraSettings();
    return true;
  }
} //void configInitCamera()
////
void connectToWiFi()
{
  int TryCount = 0;
  while ( WiFi.status() != WL_CONNECTED )
  {
    TryCount++;
    WiFi.disconnect();
    WiFi.begin( SSID, PASSWORD );
    vTaskDelay( 4000 );
    if ( TryCount == 10 )
    {
      ESP.restart();
    }
  }
  WiFi.onEvent( WiFiEvent );
}
////
void loop() {}

might work for you or not.

I would explore a bit more deeply how you handle the chunked response and how it’s being called as some folks experienced issues

Thanks for the suggestions. Using an FTP is not an option, as my intention is to imitate camera feed, which requires the images to be refreshed at max every couple of seconds. I suspect using a third party ftp service would lenghthen the refresh cycle and might also prohibit such frequent updates to one file.

@J-M-L I would gladly avoid using chunked response and feed the whole array directly to one reaponse, but the library doesn't support that. Or does it? Stream it somehow maybe?

const TickType_t xFrequency = 100; //delay for mS I'm using a refresh time of 100 milli seconds you can change the refresh time to 1000 or 2000 or 1000000 to get longer times.

My web site alreayd comes with its own FTP server.

@Idahowalker I was thinking about what you wrote... Maybe using something free as royalwebhosting is not a bad idea... It would take the load of operating a server and website from the ESP. Apart from the event when a new file is uploaded - would have to figure out how to do that...

Anyway, that's a fallback, not an actual solution to the specific problem from this thread.

I mean double check exactly how you handle the chunked response.

here is an example that should work

jpgdemo.ino file

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include "html.h"

AsyncWebServer server(80);

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}


void getImage(AsyncWebServerRequest *request) {
  const size_t imageSize = sizeof jpg;
  AsyncWebServerResponse *response = request->beginChunkedResponse("image/jpg", [](uint8_t *buffer, size_t maxLen, size_t alreadySent) -> size_t {
    if (imageSize - alreadySent >= maxLen) {
      memcpy(buffer, jpg + alreadySent, maxLen);
      return maxLen;
    } else {  // last chunk and then 0
      memcpy(buffer, jpg + alreadySent, imageSize - alreadySent);
      return imageSize - alreadySent; 
    }
  });
  request->send(response);
}


void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.printf("WiFi Failed!\n");
    return;
  }

  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
    AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", index_html);
    request->send(response);
  });
  server.on("/image.jpg", HTTP_GET, getImage);
  server.onNotFound(notFound);
  server.begin();
}

void loop() {}

and put this looooong file into a separate tab html.h

const char index_html[] PROGMEM = R"rawliteral(
<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>JPEG TEST</title>
</head>
<body>
<img src="image.jpg">
</body>
</html>
)rawliteral";


const uint8_t jpg[] = {
  0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x48,
  0x00, 0x48, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x59, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x6F, 0x75,
  0x72, 0x63, 0x65, 0x3A, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x63, 0x6F, 0x6D,
  0x6D, 0x6F, 0x6E, 0x73, 0x2E, 0x77, 0x69, 0x6B, 0x69, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x2E, 0x6F,
  0x72, 0x67, 0x2F, 0x77, 0x69, 0x6B, 0x69, 0x2F, 0x46, 0x69, 0x6C, 0x65, 0x3A, 0x54, 0x6F, 0x75,
  0x72, 0x5F, 0x65, 0x69, 0x66, 0x66, 0x65, 0x6C, 0x5F, 0x70, 0x61, 0x72, 0x69, 0x73, 0x2D, 0x65,
  0x69, 0x66, 0x66, 0x65, 0x6C, 0x5F, 0x74, 0x6F, 0x77, 0x65, 0x72, 0x2E, 0x6A, 0x70, 0x67, 0xFF,
  0xDB, 0x00, 0x43, 0x00, 0x06, 0x04, 0x05, 0x06, 0x05, 0x04, 0x06, 0x06, 0x05, 0x06, 0x07, 0x07,
  0x06, 0x08, 0x0A, 0x10, 0x0A, 0x0A, 0x09, 0x09, 0x0A, 0x14, 0x0E, 0x0F, 0x0C, 0x10, 0x17, 0x14,
  0x18, 0x18, 0x17, 0x14, 0x16, 0x16, 0x1A, 0x1D, 0x25, 0x1F, 0x1A, 0x1B, 0x23, 0x1C, 0x16, 0x16,
  0x20, 0x2C, 0x20, 0x23, 0x26, 0x27, 0x29, 0x2A, 0x29, 0x19, 0x1F, 0x2D, 0x30, 0x2D, 0x28, 0x30,
  0x25, 0x28, 0x29, 0x28, 0xFF, 0xDB, 0x00, 0x43, 0x01, 0x07, 0x07, 0x07, 0x0A, 0x08, 0x0A, 0x13,
  0x0A, 0x0A, 0x13, 0x28, 0x1A, 0x16, 0x1A, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
  0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
  0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
  0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0xD5,
  0x01, 0x40, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xFF, 0xC4, 0x00, 0x1C,
  0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0xFF, 0xC4, 0x00, 0x3C, 0x10, 0x00,
  0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x04, 0x04, 0x04, 0x05, 0x03, 0x05, 0x01, 0x00, 0x00, 0x01,
  0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x06, 0x31, 0x13, 0x41, 0x51, 0x61, 0x07, 0x22,
  0x71, 0x81, 0x14, 0x23, 0x32, 0x91, 0x15, 0x42, 0xA1, 0xB1, 0x24, 0x33, 0x52, 0x62, 0x72, 0x16,
  0xC1, 0xD1, 0x08, 0x34, 0x82, 0xE1, 0xF0, 0xF1, 0xFF, 0xC4, 0x00, 0x1B, 0x01, 0x00, 0x01, 0x05,
  0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,
  0x03, 0x04, 0x05, 0x06, 0x07, 0xFF, 0xC4, 0x00, 0x35, 0x11, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03,
  0x02, 0x03, 0x07, 0x03, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x11, 0x03, 0x04,
  0x12, 0x21, 0x05, 0x31, 0x41, 0x13, 0x51, 0x91, 0xA1, 0xF0, 0x06, 0x14, 0x22, 0x32, 0x61, 0x81,
  0xB1, 0x23, 0x71, 0xC1, 0x42, 0xD1, 0xE1, 0x15, 0x52, 0x62, 0xB2, 0xF1, 0xFF, 0xDA, 0x00, 0x0C,
  0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00, 0xE2, 0x62, 0x95, 0x8A, 0x40, 0x34,
  0xA0, 0x6B, 0xD1, 0x4E, 0x68, 0x3C, 0x51, 0xE2, 0x8B, 0x34, 0x79, 0xA4, 0x00, 0x62, 0x8B, 0x1E,
  0xD4, 0x79, 0xA1, 0x48, 0x42, 0x71, 0x43, 0x6D, 0x2A, 0x85, 0x1B, 0x10, 0x8C, 0x50, 0xC5, 0x2E,
  0x88, 0x8A, 0x56, 0x2B, 0x11, 0x43, 0x14, 0xBC, 0x50, 0xC5, 0x10, 0xD8, 0x8C, 0x51, 0xE0, 0xD2,
  0xB1, 0x42, 0x90, 0x2C, 0x46, 0x0D, 0x0C, 0x52, 0xF1, 0x43, 0x14, 0x85, 0x62, 0x31, 0x43, 0x14,
  0xBC, 0x51, 0x62, 0x90, 0x6C, 0x46, 0x28, 0xF1, 0x4A, 0xC5, 0x0A, 0x42, 0xB1, 0x38, 0xA1, 0x8A,
  0x55, 0x0A, 0x42, 0xB1, 0x38, 0xA3, 0xC5, 0x28, 0x51, 0xD0, 0x05, 0x88, 0xC5, 0x1E, 0x28, 0xE8,
  0xE9, 0x58, 0xAC, 0x4E, 0x28, 0xF1, 0x4A, 0xC5, 0x0C, 0x50, 0xB1, 0x05, 0x8A, 0x18, 0xA3, 0xC5,
  0x0F, 0xA5, 0x20, 0x03, 0x68, 0x34, 0x92, 0xA2, 0x97, 0x9F, 0xA5, 0x0E, 0xF4, 0x82, 0x37, 0x8A,
  0x18, 0xA7, 0x0A, 0xF9, 0xD2, 0x48, 0xC5, 0x2B, 0x10, 0x9C, 0x51, 0xE2, 0x8E, 0x85, 0x20, 0x02,
  0x81, 0xA3, 0xA2, 0xA4, 0x21, 0x2C, 0x69, 0x07, 0xED, 0x4B, 0x22, 0x93, 0x8A, 0x43, 0x90, 0x9C,
  0xD2, 0x81, 0xA2, 0xA2, 0xA4, 0x11, 0x59, 0xA3, 0xCD, 0x23, 0x34, 0x33, 0x48, 0x54, 0x38, 0x0D,
  0x1E, 0x69, 0xAC, 0xD1, 0xE6, 0x90, 0xA8, 0x73, 0x34, 0x33, 0x4D, 0xE6, 0x8F, 0x34, 0x81, 0x42,
  0xE8, 0xE9, 0x19, 0xA3, 0xCD, 0x20, 0x50, 0x74, 0x28, 0x66, 0x8E, 0x90, 0x82, 0xA3, 0xA2, 0xA1,
  0x48, 0x01, 0xD0, 0xA2, 0xA1, 0x48, 0x41, 0xD0, 0xA2, 0xA1, 0x9A, 0x42, 0x0E, 0x86, 0x28, 0xB3,
  0x46, 0x0D, 0x20, 0x80, 0x8A, 0x18, 0xA1, 0xBA, 0x86, 0x69, 0x08, 0x18, 0xA1, 0x8A, 0x30, 0xD4,
  0x61, 0xA8, 0x58, 0xA8, 0x2C, 0x51, 0x85, 0xF3, 0xA3, 0x04, 0x52, 0x86, 0x28, 0x58, 0x54, 0x42,
  0x0B, 0x57, 0x16, 0x88, 0x4F, 0x4B, 0x6A, 0x9F, 0x27, 0x2B, 0x73, 0x6E, 0x77, 0x78, 0x60, 0xF0,
  0x43, 0x67, 0xE6, 0xC7, 0x1E, 0x5C, 0x55, 0x62, 0x0C, 0x9E, 0x4E, 0x2B, 0xAC, 0x74, 0x5F, 0x4A,
  0xE9, 0x97, 0x3F, 0x0E, 0x75, 0xC9, 0x75, 0x5D, 0x7A, 0xCE, 0xCA, 0x69, 0xFC, 0x29, 0x92, 0x12,
  0xAC, 0xCF, 0x16, 0xD2, 0x48, 0x2E, 0x98, 0xDC, 0x41, 0x1C, 0xFC, 0xB9, 0xF9, 0x4E, 0x6B, 0x3B,
  0xA9, 0x6B, 0x31, 0xE9, 0xB1, 0xA9, 0xE4, 0xF7, 0x5F, 0x26, 0x9B, 0xF8, 0x24, 0xD9, 0x7F, 0x47,
  0xA6, 0x96, 0x59, 0x3D, 0xBE, 0xCF, 0xE6, 0xA9, 0x7C, 0xCE, 0x46, 0xCB, 0x8E, 0x29, 0x24, 0x54,
  0xED, 0x42, 0xD2, 0x7B, 0x3B, 0xB9, 0xAD, 0xEE, 0xA3, 0x68, 0xA7, 0x89, 0x8A, 0x49, 0x1B, 0x0C,
  0x15, 0x60, 0x79, 0x04, 0x7A, 0xD4, 0x32, 0x39, 0xAB, 0xF1, 0x9A, 0x92, 0xB4, 0x53, 0x9E, 0x37,
  0x07, 0x4C, 0x46, 0x28, 0xD4, 0x51, 0xE3, 0xD6, 0x8F, 0xCE, 0x9D, 0x63, 0x2A, 0x80, 0x79, 0x14,
  0x45, 0x68, 0xF3, 0xCD, 0x18, 0x3C, 0x50, 0xBA, 0x0D, 0x26, 0x36, 0x56, 0x80, 0x14, 0xE9, 0x19,
  0xF4, 0xA4, 0xF1, 0x4B, 0x70, 0x9C, 0x44, 0x62, 0x8F, 0x14, 0xBE, 0x28, 0x52, 0xDC, 0x0D, 0xA3,
  0x65, 0x69, 0x25, 0x69, 0xEE, 0xC2, 0x8F, 0xCF, 0x14, 0x37, 0x0E, 0x51, 0x21, 0xD0, 0xA4, 0xE6,
  0x8F, 0x34, 0x6C, 0x41, 0xD1, 0x62, 0x85, 0x0A, 0x56, 0x20, 0x50, 0xA1, 0x42, 0x9D, 0x62, 0x05,
  0x01, 0x45, 0x47, 0x4A, 0xC4, 0x1D, 0x0C, 0xD0, 0x14, 0x31, 0x48, 0x41, 0xE6, 0x86, 0xEA, 0x2A,
  0x18, 0xA4, 0x01, 0x41, 0xA8, 0xF3, 0x48, 0xA3, 0xA4, 0x2A, 0x17, 0x9A, 0x14, 0x81, 0x47, 0x48,
  0x02, 0xA8, 0x52, 0x72, 0x68, 0xE9, 0x08, 0x3A, 0x18, 0xA2, 0xCD, 0x1E, 0x69, 0x58, 0x82, 0xC5,
  0x02, 0x28, 0xF3, 0x43, 0x34, 0x2C, 0x34, 0x17, 0x34, 0x7E, 0x74, 0x06, 0x28, 0xC5, 0x2D, 0xC2,
  0x48, 0x20, 0x4D, 0x29, 0x68, 0xC0, 0xED, 0x4A, 0x0B, 0x9A, 0x6B, 0x90, 0xE5, 0x16, 0x2A, 0x11,
  0xB9, 0xBB, 0x57, 0x4F, 0xD1, 0x74, 0x3D, 0x57, 0x57, 0xD2, 0x6D, 0xA7, 0xD0, 0xFF, 0x00, 0x12,
  0xEA, 0x8C, 0xAA, 0x8F, 0x34, 0xCD, 0x1C, 0x6F, 0x2B, 0x20, 0x59, 0x00, 0x3B, 0x86, 0x3E, 0x45,
  0x2B, 0x9C, 0xE3, 0x0A, 0x38, 0xAE, 0x67, 0x1A, 0xE0, 0xF1, 0xFB, 0xD7, 0xA5, 0x3E, 0x05, 0xC4,
  0x1F, 0xA1, 0x6C, 0xE4, 0x94, 0xB0, 0x23, 0x53, 0x95, 0x15, 0x83, 0x01, 0x8C, 0xC6, 0x41, 0xED,
  0xCF, 0xDB, 0xEF, 0x5C, 0x57, 0xDB, 0x79, 0xE4, 0x86, 0x86, 0x39, 0x71, 0x3E, 0x54, 0x97, 0x9A,
  0x5D, 0x9F, 0x73, 0xA0, 0xE8, 0x92, 0x58, 0xE7, 0x2D, 0xCA, 0xF8, 0x3C, 0xFB, 0xD4, 0x91, 0x43,
  0x06, 0xB3, 0x75, 0x15, 0xB7, 0x89, 0xE1, 0xC4, 0xC1, 0x0F, 0x88, 0x72, 0xDB, 0xC2, 0x80, 0xF9,
  0xFF, 0x00, 0xE4, 0x1A, 0xAA, 0x09, 0xAB, 0xFE, 0xAF, 0xB5, 0xFC, 0x37, 0x52, 0xEA, 0xD0, 0xE7,
  0x22, 0x3B, 0xB9, 0x94, 0x1C, 0xE7, 0x23, 0x79, 0xC1, 0xCF, 0xD2, 0xA8, 0x18, 0x57, 0x51, 0xA0,
  0x69, 0xE9, 0xB1, 0xD3, 0xBF, 0xC2, 0xB9, 0xF7, 0xE1, 0x19, 0x9A, 0xD8, 0xBF, 0x5A, 0x7C, 0x79,
  0x7F, 0xC8, 0x5B, 0xA8, 0xB3, 0x43, 0x1E, 0xB4, 0x59, 0xAB, 0x85, 0x26, 0x85, 0xD0, 0x06, 0x91,
  0x9A, 0x30, 0xD4, 0xAC, 0x54, 0x2F, 0x3C, 0x51, 0x51, 0x67, 0x14, 0xAC, 0x8C, 0x79, 0x50, 0xB0,
  0xED, 0x08, 0x51, 0x9C, 0xD1, 0xE7, 0xF7, 0xA3, 0xA1, 0xB8, 0x2A, 0x02, 0x79, 0xA0, 0x33, 0xE9,
  0x46, 0x68, 0x87, 0x14, 0x37, 0x0E, 0x51, 0x21, 0x66, 0x86, 0x69, 0x1B, 0xA8, 0xF3, 0x4F, 0x23,
  0xA1, 0x59, 0xA1, 0x49, 0xA3, 0xA2, 0x20, 0xE8, 0x51, 0x50, 0xA2, 0x20, 0xE8, 0x66, 0x85, 0x01,
  0x48, 0x01, 0x8A, 0x50, 0x14, 0x8A, 0x3A, 0x36, 0x21, 0x54, 0x74, 0x9A, 0x3C, 0xD0, 0xB1, 0x0A,
  0xC5, 0x0C, 0x51, 0x03, 0x4A, 0xDD, 0x4D, 0xB6, 0x15, 0x10, 0xB1, 0xFB, 0xD0, 0xA5, 0x03, 0x9A,
  0xB2, 0x5D, 0x1A, 0xF1, 0xEC, 0x1A, 0xEC, 0x47, 0xF9, 0x2B, 0xCE, 0x69, 0xB2, 0xCB, 0x18, 0xFE,
  0x67, 0x43, 0xE3, 0x86, 0x53, 0xFC, 0xA5, 0x5D, 0x1D, 0x1E, 0x28, 0xA9, 0xFB, 0x86, 0x6D, 0x00,
  0xA1, 0x8A, 0x3A, 0x3A, 0x1B, 0x82, 0xA0, 0xC4, 0xD0, 0x00, 0x51, 0x9C, 0x1A, 0x18, 0x14, 0x37,
  0x07, 0x63, 0x0C, 0x62, 0x94, 0xB8, 0xA4, 0x8A, 0x31, 0x4D, 0x6C, 0x72, 0x8D, 0x0E, 0x02, 0x29,
  0x63, 0x14, 0xD0, 0xA5, 0xA9, 0xF7, 0xA6, 0xB6, 0x49, 0x14, 0x3E, 0x80, 0x12, 0x01, 0xAF, 0x49,
  0x7C, 0x0E, 0xB7, 0x43, 0xD0, 0x16, 0xCF, 0x96, 0xCF, 0xF1, 0x27, 0x6C, 0x03, 0xB3, 0xD0, 0x77,
  0xF4, 0xE7, 0xBF, 0x91, 0xE2, 0xBC, 0xD9, 0x17, 0xEA, 0x15, 0xE9, 0x2F, 0x82, 0xF1, 0xCF, 0x1F,
  0xC3, 0xAB, 0x37, 0x1B, 0x84, 0x47, 0x50, 0x77, 0x39, 0x73, 0x82, 0x37, 0xA8, 0xCF, 0x19, 0xE0,
  0x7A, 0x79, 0xD7, 0x11, 0xF6, 0xEE, 0x49, 0x74, 0xD4, 0xDA, 0xBF, 0xC4, 0xBF, 0x86, 0x6D, 0x74,
  0xB5, 0xFD, 0x47, 0x47, 0x1E, 0xF8, 0xB1, 0x6A, 0x2D, 0x7E, 0x20, 0x6B, 0xB1, 0x0D, 0xF8, 0x13,
  0xEE, 0xCB, 0x10, 0x49, 0xCA, 0xA9, 0xCF, 0xDC, 0x9A, 0xC5, 0xB8, 0x15, 0xD2, 0xBE, 0x3B, 0xD9,
  0x1B, 0x3F, 0x88, 0x37, 0x67, 0x08, 0x04, 0xD0, 0xC7, 0x28, 0xD9, 0xD8, 0xE7, 0x23, 0xFE, 0xD5,
  0xCD, 0x18, 0xF3, 0x5B, 0xFD, 0x0B, 0x37, 0xA9, 0xD3, 0xF0, 0x4B, 0xFF, 0x00, 0x18, 0xFF, 0x00,
  0x08, 0xAB, 0xAF, 0x87, 0xF5, 0xA4, 0x36, 0xCB, 0x48, 0x22, 0x9C, 0x34, 0x93, 0x5B, 0x2A, 0x46,
  0x6C, 0xA0, 0x37, 0x83, 0x42, 0x97, 0x8A, 0x49, 0xFA, 0x51, 0xDC, 0x37, 0x60, 0x3C, 0xA8, 0xA8,
  0xE8, 0xA9, 0x6E, 0x06, 0xC1, 0x40, 0xD2, 0x81, 0xA4, 0x0A, 0x59, 0xA0, 0xD8, 0xE5, 0x16, 0x85,
  0x67, 0x8A, 0x2C, 0xD2, 0x47, 0x14, 0x79, 0xA6, 0xD8, 0xF4, 0x99, 0x06, 0x85, 0x6B, 0xFA, 0x2F,
  0x4B, 0x8E, 0x52, 0xD7, 0x17, 0x08, 0x18, 0x91, 0x85, 0x04, 0x76, 0xF7, 0xAA, 0xFE, 0xAC, 0xD3,
  0x13, 0x4F, 0xBB, 0x4F, 0x0C, 0x00, 0x8E, 0x3C, 0xA9, 0x91, 0xD5, 0xC2, 0x59, 0x9E, 0x1F, 0x21,
  0x96, 0x9A, 0x51, 0xC4, 0xB2, 0x94, 0x34, 0x28, 0x51, 0xF1, 0x56, 0x8A, 0xC1, 0x0E, 0xF4, 0x74,
  0x58, 0xA3, 0xA4, 0x20, 0x0A, 0x5C, 0x6A, 0xCE, 0xC1, 0x50, 0x12, 0x4D, 0x22, 0xB6, 0x1D, 0x15,
  0xA4, 0xFE, 0x2F, 0xF3, 0x1C, 0x77, 0x61, 0x50, 0xE7, 0xCC, 0xB0, 0x41, 0xCE, 0x44, 0xD8, 0x30,
  0xBC, 0xD3, 0xDA, 0x8C, 0x93, 0x82, 0x8E, 0x55, 0xB8, 0x61, 0xC1, 0xA2, 0xEF, 0x5A, 0x6E, 0xBF,
  0xD3, 0x52, 0xC3, 0x56, 0x0D, 0x0A, 0xE1, 0x24, 0x5C, 0x9F, 0xAD, 0x66, 0x28, 0xE1, 0xCC, 0xB2,
  0xC1, 0x4D, 0x79, 0x1B, 0x9B, 0x13, 0xC5, 0x37, 0x07, 0xE0, 0x50, 0xA1, 0x44, 0x0D, 0x1E, 0x6A,
  0x5B, 0x22, 0x00, 0xA1, 0x43, 0x34, 0x74, 0x04, 0x4C, 0xD2, 0xAD, 0x8D, 0xD5, 0xF4, 0x51, 0x81,
  0x90, 0x4F, 0x35, 0xD8, 0x52, 0xC5, 0x13, 0x40, 0x92, 0x0D, 0xA3, 0x06, 0x33, 0xC7, 0xDA, 0xB9,
  0xD7, 0x45, 0x5B, 0x6F, 0xBE, 0x57, 0x23, 0x38, 0xAE, 0xA2, 0x1B, 0x75, 0xA4, 0x83, 0xCB, 0x69,
  0xAE, 0x6F, 0xAB, 0xE6, 0x6F, 0x24, 0x62, 0xBC, 0x1B, 0xDD, 0x3F, 0x16, 0xDC, 0x76, 0xFC, 0x9C,
  0x3A, 0xED, 0x3C, 0x1B, 0x89, 0x17, 0xD1, 0x8D, 0x30, 0x1B, 0xDA, 0xAC, 0x75, 0xC4, 0xDB, 0x7F,
  0x2F, 0x1F, 0xCC, 0x6A, 0xBA, 0xBA, 0x0C, 0x6F, 0x74, 0x53, 0x31, 0xF2, 0xB7, 0x19, 0xB4, 0x0D,
  0xD4, 0x7B, 0xE9, 0x38, 0xA0, 0x69, 0xF4, 0x88, 0xF7, 0xB1, 0x5B, 0x85, 0x0C, 0xD2, 0x71, 0x45,
  0x42, 0x83, 0xB9, 0x8E, 0x03, 0x46, 0x0F, 0x14, 0xD8, 0x34, 0x62, 0x9A, 0xD0, 0xE5, 0x21, 0xCC,
  0xD2, 0xC1, 0xE2, 0x9A, 0x06, 0x96, 0xA6, 0x9A, 0xD1, 0x24, 0x64, 0x48, 0x88, 0xF2, 0x38, 0xAF,
  0x4D, 0xFC, 0x2C, 0xC0, 0xF8, 0x49, 0x60, 0x22, 0x86, 0xE0, 0xC8, 0x6E, 0x19, 0xFE, 0x46, 0x1F,
  0x31, 0x13, 0xA8, 0xCF, 0x27, 0x8C, 0x77, 0xC7, 0x19, 0xC1, 0xE2, 0xBC, 0xC5, 0x17, 0xEA, 0x15,
  0xE9, 0x0F, 0x87, 0x56, 0xE8, 0x3E, 0x12, 0xE9, 0xD3, 0x78, 0x53, 0xB6, 0xD9, 0x24, 0x72, 0xC5,
  0x5C, 0x85, 0x26, 0x60, 0x06, 0xD0, 0x30, 0x08, 0xE0, 0x67, 0xEF, 0xCF, 0x7A, 0xE1, 0x7E, 0xDE,
  0xBA, 0xE9, 0xD1, 0x49, 0x77, 0x92, 0xFE, 0x19, 0xBD, 0xD2, 0x16, 0xEC, 0xBC, 0x99, 0x8F, 0xFD,
  0x4B, 0x44, 0x17, 0xA9, 0xB4, 0xB9, 0x82, 0xE1, 0xA5, 0xB3, 0x3B, 0x98, 0x76, 0x6C, 0x30, 0xC1,
  0xFE, 0xB5, 0xC5, 0x9C, 0xF7, 0xAE, 0xE1, 0xFF, 0x00, 0xA8, 0x9B, 0x42, 0x87, 0x45, 0xB9, 0x7B,
  0x66, 0x8A, 0x42, 0x65, 0x89, 0x8E, 0x72, 0xAD, 0xD8, 0xE4, 0x72, 0x7D, 0x3C, 0xF9, 0xAE, 0x1F,
  0x20, 0xE6, 0xB5, 0x3E, 0xC9, 0xE4, 0xF5, 0x3A, 0x5E, 0x26, 0xFB, 0xF3, 0xFF, 0x00, 0xB3, 0x2B,
  0xF5, 0x15, 0xB7, 0x27, 0x1E, 0xCB, 0xF8, 0x1B, 0x26, 0x92, 0x4D, 0x19, 0xA4, 0xE2, 0xBA, 0x53,
  0x29, 0xC8, 0x3C, 0xD1, 0x51, 0x50, 0x3E, 0x94, 0x40, 0xD8, 0x59, 0xA2, 0xCD, 0x06, 0xA4, 0x8A,
  0x40, 0xB1, 0x60, 0xF7, 0xA5, 0x83, 0x91, 0x49, 0x14, 0xA1, 0xDE, 0x9A, 0xC7, 0x2B, 0x06, 0x79,
  0xA1, 0x44, 0x69, 0x4A, 0x3B, 0x50, 0xA1, 0xC9, 0x9D, 0x0B, 0xA6, 0xE2, 0x11, 0x59, 0x83, 0xDB,
  0x8A, 0xA9, 0xEB, 0xA4, 0x12, 0x5B, 0xC6, 0xDE, 0x6B, 0x5A, 0x2B, 0x24, 0xF0, 0xAD, 0x42, 0xF6,
  0xC2, 0x8A, 0xCE, 0xF5, 0x53, 0x6F, 0x83, 0x15, 0x81, 0xA7, 0x9B, 0x7A, 0x9D, 0xFF, 0x00, 0xA9,
  0xAF, 0x9A, 0x2B, 0xD1, 0x71, 0x30, 0xC6, 0x86, 0x68, 0x98, 0x61, 0x88, 0xA2, 0xAE, 0x96, 0xCC,
  0x0A, 0x15, 0x9A, 0x3C, 0xD3, 0x7C, 0xD1, 0x82, 0x69, 0x6E, 0x62, 0xDB, 0x63, 0xF1, 0x26, 0xF7,
  0x03, 0xDE, 0xBA, 0xB7, 0x47, 0xC0, 0x20, 0xB3, 0x51, 0x8C, 0x71, 0x5C, 0xD7, 0x44, 0x87, 0x7D,
  0xD2, 0xE7, 0x24, 0x67, 0x3C, 0xD7, 0x56, 0xD1, 0x97, 0xC3, 0xB7, 0x1E, 0xC2, 0xB1, 0x7A, 0xB6,
  0x6B, 0x8A, 0x81, 0xAD, 0xD3, 0xF1, 0x6D, 0xB9, 0x19, 0x8F, 0x89, 0x40, 0x48, 0xD1, 0x37, 0x98,
  0xAC, 0x15, 0x6E, 0xBA, 0xE1, 0xBC, 0x48, 0xC1, 0xAC, 0x21, 0xFA, 0xD5, 0xAE, 0x9D, 0x2A, 0xC0,
  0x91, 0x5F, 0x5D, 0x0B, 0xCB, 0x68, 0x14, 0x74, 0x9C, 0xFB, 0xD1, 0x8A, 0xBF, 0x65, 0x2D, 0x81,
  0x8A, 0x71, 0x06, 0x4D, 0x35, 0xCD, 0x49, 0xB5, 0x5C, 0xB8, 0x14, 0xD7, 0x2A, 0x1D, 0x18, 0x5B,
  0xA3, 0x75, 0xD1, 0x70, 0xEC, 0x42, 0xF8, 0xAD, 0xAC, 0x07, 0x30, 0xC8, 0x3F, 0xDA, 0x6B, 0x31,
  0xD3, 0x51, 0xF8, 0x76, 0x63, 0xDE, 0xB4, 0x96, 0xA7, 0x29, 0x27, 0xD0, 0xD7, 0x27, 0xAD, 0x9E,
  0xFC, 0x8D, 0x9D, 0x16, 0x08, 0xED, 0x82, 0x47, 0x2A, 0xEA, 0x44, 0xC5, 0xFC, 0x9F, 0x5A, 0xA3,
  0xF3, 0xAD, 0x27, 0x55, 0x26, 0x2F, 0x1C, 0xD6, 0x6D, 0xBB, 0x9A, 0xE9, 0x74, 0xB3, 0xBC, 0x68,
  0xC4, 0xD5, 0x63, 0xFE, 0xA3, 0x0E, 0x85, 0x20, 0x1C, 0x52, 0xE0, 0x8D, 0xA7, 0x99, 0x23, 0x88,
  0x65, 0xDD, 0x82, 0x81, 0xEE, 0x6A, 0xC6, 0xEA, 0x2B, 0x28, 0x5F, 0x60, 0xA8, 0x55, 0xDF, 0x54,
  0x68, 0x2F, 0xA2, 0x49, 0x6E, 0xAC, 0xDB, 0x84, 0x89, 0x9C, 0xFB, 0xF9, 0xD5, 0x16, 0x69, 0xB8,
  0xF3, 0x47, 0x2C, 0x54, 0xA3, 0xD8, 0x39, 0x30, 0xCB, 0x1C, 0xB6, 0xCB, 0xB8, 0xAA, 0x14, 0x9C,
  0xD1, 0xEE, 0xA7, 0xD8, 0xCA, 0x16, 0x29, 0x6B, 0xDE, 0x9B, 0x07, 0x8A, 0x5A, 0x9A, 0x6B, 0x64,
  0x89, 0x12, 0x62, 0x1F, 0x30, 0xFA, 0xD7, 0xA5, 0x3A, 0x4E, 0xEE, 0x4B, 0x2F, 0x83, 0xBA, 0x58,
  0x8A, 0xE8, 0x8B, 0x8F, 0xC2, 0x39, 0x58, 0x8A, 0xA9, 0x5C, 0x34, 0xAD, 0xF3, 0x30, 0xEE, 0x7B,
  0x1A, 0xF3, 0x54, 0x4D, 0x83, 0x5E, 0x9F, 0xD3, 0xD9, 0x2C, 0xFE, 0x18, 0x68, 0x10, 0x4B, 0x6D,
  0x02, 0x5A, 0x3D, 0xA4, 0x4D, 0x23, 0xB4, 0x88, 0xB2, 0x21, 0x21, 0x98, 0xB8, 0x18, 0x39, 0x03,
  0x86, 0xFB, 0xF6, 0xEF, 0x5C, 0x07, 0xDB, 0xE9, 0xAF, 0xBA, 0x63, 0x83, 0xF3, 0x2F, 0x8D, 0x27,
  0xFE, 0xE7, 0x45, 0xD1, 0x63, 0x79, 0x39, 0xFD, 0x0C, 0xF7, 0xC7, 0x59, 0xA0, 0xBE, 0xE8, 0xEB,
  0x29, 0xE0, 0x95, 0xF7, 0x5B, 0xDF, 0x6D, 0x30, 0xB6, 0x0E, 0xC2, 0xCB, 0xFC, 0xA4, 0x01, 0x91,
  0x8E, 0x7C, 0xFB, 0xD7, 0x01, 0x90, 0x73, 0xEB, 0x5E, 0x8E, 0xF8, 0x83, 0x34, 0xBA, 0xCF, 0xC1,
  0x99, 0x2E, 0xF1, 0x04, 0xB0, 0x45, 0x1C, 0x13, 0x26, 0xD7, 0x2C, 0xD1, 0x36, 0x40, 0x23, 0xB6,
  0x30, 0x33, 0x8E, 0x39, 0xF5, 0xAF, 0x38, 0x4C, 0xDC, 0xD5, 0xAF, 0xB0, 0xF9, 0x54, 0xBA, 0x7B,
  0x85, 0xFE, 0x59, 0x57, 0xCA, 0x2F, 0xC7, 0xEA, 0xC8, 0xFA, 0xBC, 0x76, 0xE4, 0xFA, 0xF7, 0x63,
  0x59, 0xC1, 0xA3, 0x0C, 0xA7, 0xD8, 0xD2, 0x09, 0xA4, 0x13, 0x5D, 0xA5, 0x26, 0x62, 0x39, 0x31,
  0xEC, 0xAB, 0x77, 0xE0, 0xFA, 0xD1, 0x34, 0x7D, 0xB9, 0xFA, 0x1A, 0x66, 0x8D, 0x64, 0x2B, 0xF4,
  0xA5, 0x5E, 0xC0, 0xBB, 0xEE, 0x38, 0xD1, 0x90, 0x70, 0x7F, 0x7A, 0x6C, 0xA9, 0x07, 0xB7, 0x6A,
  0x71, 0x26, 0xC0, 0xC3, 0x0C, 0x83, 0x46, 0xCE, 0xA7, 0xE9, 0x4D, 0xBA, 0x1D, 0xB5, 0x31, 0x2B,
  0xEC, 0x29, 0x6A, 0xB4, 0x8C, 0xE0, 0xFA, 0x8A, 0x9B, 0x12, 0xA9, 0x5D, 0xC0, 0x64, 0x53, 0x65,
  0x2A, 0x1F, 0x08, 0xD8, 0xEE, 0x9D, 0xA5, 0xCD, 0xA8, 0xCB, 0xB2, 0x26, 0x44, 0xEE, 0x72, 0xC7,
  0x14, 0xBB, 0xCD, 0x22, 0x6B, 0x59, 0x44, 0x7B, 0x96, 0x52, 0x7C, 0xD0, 0xE6, 0x90, 0xB2, 0xED,
  0x18, 0x8F, 0x8C, 0xD0, 0x96, 0x67, 0x38, 0x25, 0xCF, 0x1D, 0xB9, 0xA8, 0x37, 0x64, 0xDD, 0xDF,
  0x82, 0xC6, 0xC8, 0x6D, 0xED, 0xC9, 0xD0, 0xB3, 0xB6, 0x07, 0x3F, 0x6A, 0xC9, 0x6B, 0xD2, 0x6F,
  0x47, 0xAD, 0x4D, 0xCB, 0x6C, 0xB2, 0x27, 0xEA, 0x6B, 0x19, 0xAB, 0x3E, 0x55, 0xAB, 0x1F, 0x46,
  0xBF, 0x1D, 0x97, 0xF3, 0xFE, 0x5A, 0x33, 0x13, 0x7E, 0xB3, 0x4D, 0x13, 0x8F, 0x22, 0x69, 0xD9,
  0xCF, 0xCD, 0x4C, 0xE4, 0x57, 0x45, 0x19, 0x70, 0x62, 0x4A, 0x3C, 0x8A, 0xCD, 0x29, 0x4E, 0x4D,
  0x37, 0x9A, 0x7A, 0x11, 0x92, 0x28, 0xB9, 0x02, 0x30, 0x6D, 0x9A, 0x3E, 0x99, 0x87, 0x33, 0xA9,
  0xC5, 0x74, 0x6B, 0x7F, 0xCB, 0xB6, 0x73, 0xE8, 0xB5, 0x8A, 0xE9, 0x68, 0xBE, 0x65, 0x38, 0xAD,
  0x94, 0xCD, 0xB2, 0xC6, 0x53, 0xDB, 0xCA, 0xB9, 0xBD, 0x7C, 0xF7, 0xE4, 0xA3, 0x73, 0x4F, 0x1D,
  0xB0, 0x31, 0xDD, 0x58, 0xDB, 0xA0, 0xAC, 0x4B, 0x1E, 0x6B, 0x61, 0xD4, 0xAD, 0x98, 0x2B, 0x1A,
  0xE7, 0xE6, 0x35, 0xAF, 0xA1, 0xE3, 0x1D, 0x19, 0xDA, 0xCB, 0xDC, 0x1E, 0xEA, 0x50, 0x6A, 0x6A,
  0x82, 0x91, 0x9A, 0xBA, 0x54, 0x4D, 0x8E, 0x86, 0x35, 0x63, 0xA6, 0xC6, 0x5E, 0x45, 0x20, 0x1C,
  0x03, 0xC9, 0xAA, 0xE5, 0x5D, 0xC4, 0x57, 0x40, 0xE9, 0xFD, 0x35, 0x53, 0xA6, 0xA4, 0x95, 0xD7,
  0xF3, 0x1D, 0x83, 0x03, 0x55, 0x35, 0x59, 0xD6, 0x28, 0x5F, 0xB9, 0x6F, 0x4D, 0x8D, 0xCE, 0x5F,
  0xD8, 0xBA, 0xD2, 0x87, 0x87, 0x6A, 0x83, 0xDA, 0xAE, 0x2C, 0x5B, 0x21, 0xFF, 0x00, 0xE2, 0x6A,
  0xA2, 0x03, 0xB6, 0x05, 0x1E, 0xD5, 0x67, 0xA6, 0xB6, 0x43, 0xFD, 0x0D, 0x73, 0x59, 0x79, 0xB6,
  0x6C, 0xC7, 0xD8, 0xC0, 0x75, 0x60, 0xFC, 0xE6, 0x3E, 0xF5, 0x93, 0x76, 0xE4, 0xE6, 0xB6, 0x1D,
  0x50, 0x32, 0xED, 0xF5, 0xAC, 0x6C, 0xDC, 0x37, 0x15, 0xD1, 0xE8, 0x9B, 0xF4, 0xD1, 0x8F, 0xAB,
  0xFC, 0xC1, 0x67, 0x9A, 0xD0, 0xF4, 0x4D, 0xB8, 0x9F, 0x5D, 0xB7, 0x2C, 0x32, 0xA8, 0x77, 0x56,
  0x6B, 0x26, 0xB6, 0x9F, 0x0F, 0xE3, 0xC5, 0xD3, 0xC9, 0xE8, 0xB4, 0xFD, 0x64, 0xDC, 0x30, 0xC9,
  0x91, 0xE9, 0x62, 0xA5, 0x95, 0x17, 0xFF, 0x00, 0x15, 0x23, 0x0D, 0x63, 0x67, 0x27, 0xA6, 0x46,
  0x6B, 0x98, 0xE7, 0xD6, 0xBA, 0xAF, 0xC4, 0x51, 0xBF, 0x44, 0x8B, 0xCF, 0x6E, 0x0D, 0x72, 0x66,
  0x3C, 0xD5, 0x6E, 0x93, 0x2B, 0xC1, 0x5E, 0xCC, 0x97, 0xA8, 0x46, 0xB2, 0x58, 0xE6, 0x68, 0xC1,
  0xCF, 0x7A, 0x6B, 0x77, 0x6A, 0x52, 0x92, 0x6B, 0x4E, 0xCA, 0x2A, 0x23, 0xA9, 0xDF, 0xBD, 0x3D,
  0xB4, 0x00, 0x39, 0xFD, 0xEA, 0x30, 0x6C, 0x52, 0xC3, 0xF1, 0xDE, 0x98, 0xD9, 0x24, 0x62, 0x89,
  0x48, 0xC2, 0xBD, 0x57, 0xAE, 0xD9, 0xDB, 0x59, 0x74, 0xFE, 0x97, 0x62, 0xF7, 0x17, 0x0F, 0x77,
  0x6D, 0x0C, 0x10, 0xBC, 0x06, 0x46, 0x11, 0xC8, 0x23, 0x8B, 0x90, 0x70, 0x36, 0x8E, 0x0E, 0x49,
  0xCF, 0x90, 0xF5, 0xAF, 0x2E, 0xE8, 0x56, 0x76, 0xF7, 0xD7, 0x44, 0x5F, 0x5E, 0xC5, 0x65, 0x67,
  0x18, 0x06, 0x69, 0x9C, 0xE4, 0xA8, 0x39, 0x03, 0x6A, 0x8E, 0x58, 0xE7, 0x03, 0xEE, 0x39, 0x19,
  0x15, 0xAE, 0x3A, 0x97, 0x49, 0x98, 0xD7, 0xFE, 0xA8, 0xBD, 0xBF, 0xD5, 0x63, 0xB7, 0x0D, 0x6E,
  0xAF, 0x1D, 0xD4, 0x8F, 0x2B, 0x0F, 0xD2, 0xB2, 0x2C, 0x65, 0x42, 0x02, 0xA0, 0x70, 0x09, 0x20,
  0xF9, 0xFB, 0xF0, 0x7F, 0x6B, 0xA1, 0x1D, 0x66, 0x4C, 0x78, 0x14, 0xAB, 0x6D, 0xDD, 0x2B, 0xEF,
  0x55, 0xF5, 0x68, 0xE8, 0xFA, 0x44, 0x5E, 0x38, 0xBC, 0xAD, 0x71, 0xFC, 0x9D, 0x5E, 0xDA, 0x4D,
  0x1A, 0xEF, 0xE1, 0xAD, 0xFD, 0xB5, 0xBC, 0xB3, 0xA3, 0xFE, 0x1A, 0x78, 0x23, 0x79, 0x64, 0x95,
  0x94, 0x30, 0x7E, 0x23, 0x65, 0xFD, 0x0A, 0x77, 0x48, 0xA0, 0x67, 0x93, 0xC7, 0x7C, 0x57, 0x9C,
  0x1D, 0x86, 0x05, 0x5B, 0xDD, 0xFF, 0x00, 0xD2, 0xF2, 0x6D, 0xFE, 0x11, 0x36, 0xAF, 0x66, 0x8C,
  0x70, 0xD8, 0x76, 0x66, 0x90, 0x63, 0x00, 0x34, 0x7B, 0x4A, 0x82, 0x48, 0xDD, 0x80, 0x48, 0xE7,
  0x1C, 0xE2, 0xA3, 0x6B, 0x56, 0x76, 0xD0, 0x3A, 0x5C, 0x69, 0xB3, 0xB4, 0xDA, 0x6D, 0xCC, 0x92,
  0x8B, 0x76, 0x71, 0xF3, 0xE1, 0x18, 0x02, 0x1B, 0x80, 0x33, 0xC8, 0xED, 0xFB, 0x0A, 0x97, 0xEC,
  0xAA, 0xC7, 0xA4, 0x94, 0xF4, 0xEE, 0x4D, 0xB9, 0x72, 0xAD, 0x57, 0x6B, 0xBF, 0x97, 0xF0, 0x0E,
  0xAD, 0x19, 0x64, 0x8A, 0xCA, 0x97, 0x1C, 0xDF, 0x37, 0xDE, 0x8A, 0xC2, 0x69, 0x26, 0x81, 0xA2,
  0xEF, 0x5D, 0xBA, 0x67, 0x3A, 0xD3, 0x06, 0x7E, 0xF4, 0x9A, 0x5F, 0xDE, 0x92, 0x68, 0xD8, 0x36,
  0x83, 0xBF, 0x9D, 0x0F, 0x3A, 0x14, 0x0F, 0xD3, 0x8A, 0x16, 0x1A, 0x14, 0xA6, 0xA6, 0x5A, 0x4B,
  0xB4, 0xFA, 0x8A, 0x86, 0xB4, 0xE2, 0xB6, 0x31, 0xCF, 0x35, 0x1C, 0xB9, 0xE0, 0x7C, 0x78, 0xE4,
  0xB0, 0x76, 0x50, 0x72, 0xBD, 0x8D, 0x35, 0x90, 0xF9, 0x1E, 0x74, 0x94, 0x24, 0x8A, 0x49, 0x62,
  0xAC, 0x0D, 0x44, 0x89, 0xCE, 0x87, 0xAB, 0x36, 0xCB, 0x15, 0x1E, 0xA2, 0xB1, 0x7A, 0x8B, 0x64,
  0x1A, 0xD7, 0x75, 0x0B, 0x6D, 0x86, 0x34, 0x1E, 0x95, 0x90, 0xBB, 0xC1, 0x0D, 0xBB, 0x3E, 0xD5,
  0x97, 0xA3, 0xED, 0x65, 0xDC, 0xFE, 0xC5, 0x04, 0xE3, 0xE6, 0xA8, 0xE4, 0x54, 0xE9, 0x62, 0x24,
  0x93, 0x95, 0xFD, 0xEA, 0x3B, 0x46, 0x41, 0xC1, 0xFE, 0x86, 0xB6, 0xE3, 0x24, 0x65, 0x4E, 0x0E,
  0xC6, 0x40, 0xA9, 0x56, 0xAA, 0x4B, 0x8A, 0x6B, 0x6F, 0x35, 0x3F, 0x4F, 0x8F, 0x74, 0x82, 0x86,
  0x49, 0x52, 0x1D, 0x8A, 0x3C, 0x9B, 0x4E, 0x9B, 0x8F, 0x6A, 0xAF, 0x15, 0x7F, 0xAB, 0x31, 0x8F,
  0x4D, 0x5F, 0xF5, 0x34, 0x83, 0x1E, 0xF5, 0x57, 0xA0, 0x47, 0x80, 0x95, 0x69, 0xAF, 0x60, 0x5A,
  0x43, 0xEB, 0x93, 0x5C, 0xD6, 0x57, 0xBB, 0x29, 0xB3, 0x15, 0x50, 0x31, 0x3D, 0x42, 0x73, 0x11,
  0xAC, 0x83, 0x13, 0xB8, 0xD6, 0xB7, 0x5B, 0xE6, 0x2A, 0xCA, 0x48, 0xB8, 0x63, 0xCD, 0x6E, 0x68,
  0xFF, 0x00, 0x21, 0x99, 0xAA, 0x7C, 0x84, 0xA6, 0x81, 0xE0, 0xD1, 0x0E, 0x3C, 0xE9, 0x4A, 0xBB,
  0x8F, 0xB5, 0x5B, 0x2A, 0xA9, 0x22, 0x55, 0x92, 0x78, 0x92, 0xA8, 0xF7, 0xAE, 0xB3, 0x0C, 0x42,
  0x2D, 0x16, 0x38, 0x87, 0x1F, 0x20, 0xAE, 0x6F, 0xA0, 0x5B, 0x89, 0x2F, 0x23, 0x1D, 0xF9, 0xAE,
  0x9F, 0x3F, 0x16, 0xA1, 0x47, 0xA6, 0x2B, 0x0F, 0xA9, 0x64, 0xB9, 0x46, 0x26, 0xB6, 0x92, 0x35,
  0x16, 0xC8, 0x59, 0xC2, 0x8A, 0xB1, 0xD2, 0x8E, 0x55, 0xFE, 0x87, 0xFB, 0x55, 0x5B, 0x1E, 0x2A,
  0xCB, 0x48, 0x3C, 0x49, 0xF4, 0x3F, 0xDA, 0xB3, 0xF2, 0x7E, 0x52, 0xDC, 0x7B, 0x98, 0xAE, 0xA3,
  0x3F, 0x3B, 0xFD, 0x6B, 0x1D, 0x73, 0x8D, 0xC6, 0xB6, 0x1D, 0x43, 0xCC, 0x92, 0x7D, 0x6B, 0x23,
  0x32, 0xFC, 0xE6, 0xB7, 0xF4, 0x4E, 0xA0, 0x65, 0xEA, 0x95, 0xB2, 0x3A, 0xF2, 0x6B, 0x7D, 0xD1,
  0x09, 0xB2, 0x16, 0x6C, 0x77, 0xAC, 0x32, 0xAE, 0x58, 0x7A, 0xD7, 0x40, 0xE9, 0x45, 0xD9, 0x68,
  0x3D, 0xE9, 0xBD, 0x46, 0x7F, 0xD2, 0xA1, 0x68, 0xA1, 0x53, 0xB2, 0xE3, 0xAE, 0x86, 0xED, 0x24,
  0x0F, 0x45, 0x15, 0xC8, 0xE4, 0x18, 0x73, 0x5D, 0x77, 0xAD, 0x79, 0xD3, 0xF1, 0xFE, 0xC1, 0xFD,
  0xAB, 0x91, 0x4F, 0x90, 0xE7, 0xEB, 0x51, 0x74, 0x99, 0x7F, 0x4D, 0xA1, 0xDD, 0x42, 0x37, 0x24,
  0xC4, 0x8A, 0x5A, 0x9A, 0x67, 0x26, 0x94, 0x0D, 0x6A, 0xB6, 0x67, 0x24, 0x3C, 0x68, 0xD6, 0x9B,
  0x04, 0x90, 0x29, 0x6B, 0x4D, 0x6C, 0x96, 0x31, 0xB3, 0x57, 0xF0, 0xEB, 0x4E, 0x9E, 0xFF, 0x00,
  0xA8, 0xD5, 0xA1, 0x68, 0x95, 0x6D, 0x20, 0x92, 0xE6, 0x43, 0x2F, 0xE9, 0x20, 0x0C, 0x00, 0x7D,
  0x49, 0x66, 0x5C, 0x01, 0x9E, 0x40, 0xE2, 0xA3, 0xF5, 0x36, 0x93, 0x7F, 0x0C, 0xF1, 0xC9, 0x73,
  0x24, 0x1B, 0xDF, 0x97, 0xF0, 0xDC, 0x96, 0x52, 0xC3, 0x23, 0x3C, 0x70, 0x71, 0xDC, 0x7E, 0xF5,
  0xD3, 0xBE, 0x02, 0xE8, 0x91, 0x9D, 0x13, 0x56, 0xD5, 0xE4, 0x00, 0xBD, 0xC4, 0xA2, 0xC9, 0x49,
  0x60, 0x04, 0x68, 0x8A, 0x1D, 0x9F, 0x1D, 0xF3, 0x96, 0x00, 0x63, 0xD2, 0xB2, 0xFF, 0x00, 0x14,
  0xE4, 0xB7, 0x69, 0x6F, 0x5E, 0xDA, 0x16, 0xB7, 0x6F, 0x1A, 0x38, 0x99, 0x59, 0xC3, 0x16, 0x65,
  0x27, 0x3C, 0x8E, 0xC7, 0xBE, 0x7D, 0xEB, 0xCD, 0x7A, 0x86, 0xB2, 0x5A, 0xDE, 0xBC, 0xF4, 0xB0,
  0xAA, 0x49, 0x46, 0xFB, 0xFF, 0x00, 0x7F, 0x9B, 0x7F, 0x03, 0xAB, 0xD1, 0x41, 0x61, 0xD0, 0xB9,
  0x4B, 0xF5, 0x66, 0x57, 0xA7, 0x6D, 0x75, 0x1F, 0xE2, 0x7F, 0xE1, 0xAE, 0x7C, 0x39, 0xCE, 0x1B,
  0x3B, 0xFE, 0x67, 0xF2, 0xEE, 0x7C, 0xFF, 0x00, 0xFC, 0x28, 0xBA, 0xA2, 0xCA, 0xF3, 0x4C, 0xD4,
  0x7F, 0x03, 0x7B, 0x36, 0xF0, 0x80, 0xCB, 0x1A, 0xAB, 0x92, 0xAA, 0x1C, 0x92, 0x70, 0x3C, 0x89,
  0x23, 0x9F, 0x3E, 0xD9, 0xA9, 0x1F, 0x0F, 0x65, 0x2B, 0xD5, 0xB6, 0x4A, 0xC0, 0x48, 0xD2, 0x86,
  0x89, 0x03, 0xB1, 0xC6, 0xE6, 0x1C, 0x7F, 0x6A, 0xE9, 0x5F, 0x1F, 0x34, 0x04, 0x83, 0x4B, 0xD1,
  0x35, 0x68, 0xD4, 0x06, 0x6F, 0xF0, 0xEE, 0x79, 0x5C, 0xAE, 0xDD, 0xC0, 0xED, 0x23, 0x39, 0xF7,
  0xFD, 0xEA, 0xCE, 0x1C, 0xAF, 0xA5, 0xF5, 0xCC, 0x7A, 0x5C, 0x94, 0xD4, 0xE3, 0xDE, 0xAB, 0x9E,
  0x6B, 0xE6, 0xAB, 0xF7, 0x23, 0xCD, 0x28, 0xEA, 0xF4, 0x4E, 0x51, 0xB4, 0xD3, 0xED, 0x7E, 0xDD,
  0xFE, 0x5C, 0x9C, 0x50, 0xB1, 0xF3, 0x19, 0x14, 0x44, 0x8A, 0x26, 0xE0, 0xD2, 0x0E, 0x0D, 0x77,
  0xE9, 0xA3, 0x9B, 0x69, 0x87, 0x93, 0xE5, 0x47, 0x9F, 0x3A, 0x48, 0xF6, 0xA3, 0x41, 0x9E, 0x33,
  0xC5, 0x2B, 0x05, 0x0A, 0xCF, 0x14, 0x17, 0x9E, 0x3F, 0x6A, 0x35, 0x18, 0x61, 0x9F, 0xD8, 0xD3,
  0x80, 0x29, 0x3F, 0xA0, 0x53, 0x5C, 0x87, 0x28, 0x8D, 0xAE, 0x69, 0x4B, 0x92, 0x46, 0x2A, 0x6A,
  0x5B, 0x47, 0x22, 0x07, 0xDC, 0xEB, 0x9E, 0x0F, 0x19, 0xA9, 0x30, 0xE9, 0xBB, 0xDC, 0x6C, 0x94,
  0x60, 0xF9, 0xB2, 0x90, 0x2A, 0x27, 0x99, 0x2E, 0xE3, 0xD6, 0x26, 0x45, 0x84, 0x1E, 0x07, 0x6A,
  0x5B, 0xAE, 0xEA, 0xB5, 0x7D, 0x12, 0x74, 0x5F, 0x96, 0x48, 0x58, 0x9F, 0x25, 0x6E, 0x6A, 0x65,
  0xA7, 0x4B, 0x6A, 0x93, 0xA1, 0x68, 0xE0, 0x56, 0x27, 0xF4, 0x82, 0xE0, 0x54, 0x0F, 0x51, 0x05,
  0xCD, 0x93, 0x2C, 0x52, 0x7E, 0x0B, 0x0E, 0xA6, 0x7F, 0xCE, 0x03, 0xD1, 0x6B, 0x27, 0x74, 0xDC,
  0x1A, 0xD0, 0xF5, 0x04, 0xCA, 0xD7, 0xD2, 0x26, 0x7B, 0x9C, 0x56, 0x66, 0xE4, 0xF7, 0xAA, 0x9A,
  0x46, 0xB6, 0xA2, 0x7C, 0xDD, 0xCA, 0xF9, 0x89, 0xCF, 0x14, 0xD1, 0x2E, 0x3B, 0xB1, 0xCF, 0xD6,
  0xA5, 0x98, 0x58, 0xDB, 0xB5, 0xC1, 0x1F, 0x20, 0x6D, 0xA3, 0xDC, 0xD4, 0x52, 0x09, 0xE4, 0x8A,
  0xD4, 0x8C, 0xD1, 0x42, 0x51, 0x68, 0x38, 0xD9, 0xF3, 0xC3, 0x1F, 0xDE, 0xAD, 0x34, 0xD4, 0x2D,
  0x22, 0x9A, 0xAD, 0x8C, 0x64, 0xE2, 0xAE, 0xF4, 0x94, 0xCB, 0x8A, 0x8F, 0x34, 0xD2, 0x8B, 0x24,
  0xC3, 0x16, 0xD9, 0xB4, 0xD1, 0x13, 0x0A, 0x2A, 0x4F, 0x51, 0x1F, 0xF0, 0xF0, 0x8A, 0x2D, 0x25,
  0x71, 0x18, 0xA1, 0xD4, 0x9F, 0xE5, 0xC7, 0xEC, 0x2B, 0x02, 0xEF, 0x29, 0xA6, 0xD7, 0xE1, 0x31,
  0x3A, 0xC6, 0x4C, 0x66, 0xB3, 0x12, 0x8F, 0x98, 0xD6, 0x9F, 0x55, 0xE6, 0x3A, 0xCE, 0xCA, 0x01,
  0x35, 0xBD, 0xA5, 0x95, 0x44, 0xCC, 0xD4, 0x2B, 0x64, 0x6F, 0x3A, 0x71, 0x29, 0x7B, 0x30, 0x39,
  0xEF, 0x4B, 0x85, 0x39, 0xAB, 0x4E, 0x6A, 0x8A, 0xD1, 0x87, 0x26, 0x9B, 0xA4, 0xA1, 0xDD, 0x76,
  0x84, 0x8E, 0xDC, 0xD6, 0xF2, 0x7F, 0xF2, 0x45, 0x65, 0x7A, 0x46, 0x20, 0x09, 0x6F, 0x6A, 0xD5,
  0x5C, 0x67, 0xC2, 0x1F, 0x4A, 0xE6, 0xF5, 0x93, 0xDD, 0x94, 0xDA, 0xC1, 0x1A, 0x81, 0x5A, 0xE6,
  0xAC, 0x74, 0x63, 0xC4, 0x9F, 0x43, 0xFD, 0xAA, 0xAE, 0x53, 0xC9, 0xF3, 0xAB, 0x2D, 0x14, 0xE5,
  0x65, 0xCF, 0xFA, 0x4F, 0xF6, 0xA8, 0x66, 0xFF, 0x00, 0x09, 0x24, 0x7B, 0x98, 0xED, 0x7F, 0xFC,
  0xC9, 0x3E, 0xB5, 0x94, 0xB8, 0x1F, 0x39, 0xAD, 0x5E, 0xB7, 0x83, 0x23, 0xF6, 0xAC, 0xBC, 0xD8,
  0xDC, 0x6B, 0x6F, 0x49, 0x2A, 0x89, 0x9D, 0xA8, 0x56, 0xC6, 0xAD, 0xD4, 0xB4, 0x83, 0x35, 0xD0,
  0xFA, 0x7D, 0x76, 0xDA, 0xA5, 0x60, 0xED, 0x0F, 0xE6, 0x0C, 0x63, 0xBD, 0x6F, 0xF4, 0x7E, 0x20,
  0x8C, 0x54, 0x5D, 0x42, 0x77, 0x14, 0x87, 0xE9, 0x23, 0x45, 0x8F, 0x59, 0xFF, 0x00, 0xED, 0x08,
  0xFF, 0x00, 0x60, 0xFE, 0xD5, 0xC8, 0xEE, 0x78, 0x94, 0xF1, 0x5D, 0x73, 0xAC, 0x39, 0x80, 0xFF,
  0x00, 0xC4, 0x7F, 0x6A, 0xE4, 0xD7, 0x7F, 0xE6, 0xB7, 0xD6, 0x9B, 0xD2, 0xA5, 0x50, 0x0E, 0xB9,
  0x5B, 0x22, 0xE3, 0x9A, 0x30, 0x3C, 0xA8, 0xC5, 0x2C, 0x01, 0x5A, 0xCE, 0x46, 0x72, 0x88, 0x40,
  0x1A, 0x71, 0x01, 0xCF, 0x00, 0x9F, 0xB5, 0x05, 0xFA, 0x56, 0x93, 0xA7, 0x2F, 0x22, 0x1A, 0x45,
  0xF6, 0x9A, 0xF7, 0x17, 0x76, 0xF2, 0x5C, 0xCF, 0x1C, 0xC6, 0x4B, 0x7B, 0x63, 0x31, 0x54, 0x40,
  0x73, 0x8C, 0x32, 0x90, 0x72, 0x7E, 0x9C, 0x62, 0xA8, 0x6B, 0xF5, 0x8F, 0x49, 0x82, 0x59, 0xB6,
  0xEE, 0xAA, 0xE3, 0xFB, 0xB4, 0xBD, 0x9F, 0x6E, 0xFD, 0x8B, 0x9A, 0x4D, 0x3A, 0xCD, 0x91, 0x63,
  0x6E, 0xAC, 0xED, 0xDF, 0x08, 0x75, 0x8B, 0x08, 0x3A, 0x2A, 0x0F, 0xE1, 0xB7, 0xF3, 0x46, 0x2C,
  0x6C, 0xD9, 0xEE, 0xA0, 0x4B, 0x76, 0x05, 0xAE, 0x09, 0x67, 0x76, 0x90, 0x85, 0x27, 0x00, 0x6C,
  0x55, 0x39, 0xE6, 0xB9, 0x27, 0xC4, 0x3D, 0x5E, 0x3D, 0x5A, 0xD6, 0x0B, 0xB4, 0x56, 0x5F, 0xC5,
  0x5C, 0xB5, 0xC0, 0x12, 0x47, 0xB2, 0x40, 0xBE, 0x18, 0x3F, 0x37, 0x9F, 0x79, 0x33, 0x9F, 0x3C,
  0xE6, 0xAB, 0xFA, 0x9B, 0x5C, 0xD2, 0xEF, 0x2D, 0x6F, 0x62, 0xD2, 0xED, 0xB5, 0xAB, 0x3B, 0xBB,
  0x89, 0xBE, 0x59, 0xE5, 0x9C, 0x9F, 0xCB, 0xDC, 0xC4, 0xA1, 0x40, 0x79, 0xF2, 0x1D, 0xEA, 0x3C,
  0x7D, 0x4F, 0xB2, 0x09, 0xE0, 0x8B, 0x4A, 0x85, 0xA3, 0x78, 0x55, 0x52, 0x59, 0x51, 0x9D, 0x99,
  0xD4, 0x26, 0x4B, 0xF3, 0xC8, 0x3B, 0x5F, 0x8F, 0x2C, 0xD7, 0x9D, 0x74, 0xEC, 0x2F, 0x16, 0xB9,
  0xF5, 0x09, 0xC5, 0xDB, 0x77, 0x4E, 0xBC, 0xF7, 0xED, 0xFA, 0xBB, 0xF7, 0xE2, 0x8E, 0x97, 0x3A,
  0x87, 0xA4, 0xF0, 0x41, 0xF7, 0x5D, 0xFE, 0xBE, 0xB9, 0x2A, 0xF4, 0x6D, 0x41, 0xB4, 0xBD, 0x5A,
  0xCE, 0xF9, 0x37, 0xEE, 0xB7, 0x95, 0x65, 0xC2, 0x64, 0x12, 0x01, 0xE7, 0x1F, 0x6C, 0xF3, 0x5E,
  0x97, 0xD6, 0x75, 0x5D, 0x3B, 0xAD, 0xBE, 0x16, 0xEA, 0x36, 0xFA, 0x75, 0xCC, 0x97, 0xB7, 0x2B,
  0x0B, 0x39, 0x4F, 0x0C, 0xAC, 0x88, 0xC3, 0x0C, 0x33, 0xBB, 0xB7, 0x3F, 0x6E, 0x7B, 0xD7, 0x9D,
  0x6E, 0xFA, 0xA6, 0x66, 0x57, 0x41, 0xA7, 0x24, 0x30, 0xC9, 0x6E, 0xD0, 0x91, 0x16, 0xE8, 0xD9,
  0x5C, 0x83, 0xF3, 0xA9, 0xCF, 0x03, 0x3B, 0x7E, 0x43, 0x91, 0xDE, 0xAE, 0xFA, 0x5F, 0xAD, 0xA3,
  0xD3, 0x62, 0xB4, 0xB7, 0x82, 0xCF, 0x50, 0xD8, 0xB1, 0x98, 0x6E, 0x44, 0x72, 0x87, 0x33, 0xAB,
  0x38, 0x66, 0xFD, 0x40, 0xED, 0xED, 0xD8, 0x73, 0x81, 0xDE, 0xAC, 0x75, 0xFD, 0xFA, 0xFC, 0x98,
  0xF5, 0x38, 0xA1, 0x53, 0x87, 0x67, 0x7E, 0xCE, 0xD5, 0xF6, 0xEC, 0xD7, 0xCC, 0x87, 0x43, 0x8B,
  0x1E, 0x28, 0xBC, 0x73, 0x97, 0x17, 0x7F, 0x5F, 0x5E, 0x0C, 0x94, 0xD1, 0x4A, 0xA8, 0x1D, 0xE3,
  0x91, 0x51, 0xB8, 0x52, 0xC8, 0x40, 0x3F, 0xBD, 0x47, 0x35, 0xAF, 0xD6, 0xEE, 0x42, 0xE8, 0xB6,
  0x76, 0x4A, 0x75, 0x89, 0x33, 0x39, 0xBD, 0x46, 0xD4, 0x42, 0x80, 0x55, 0xD3, 0x69, 0xD8, 0x07,
  0x96, 0x47, 0x27, 0xD6, 0xA8, 0x99, 0x23, 0x70, 0x37, 0xC6, 0x01, 0xF6, 0xAE, 0xDB, 0xA7, 0x6B,
  0xDE, 0xAB, 0x02, 0xCB, 0x28, 0xD5, 0xDF, 0xC9, 0xD1, 0x8D, 0xAB, 0xD2, 0xAC, 0x59, 0x1C, 0x22,
  0xEC, 0xAD, 0x1D, 0xE9, 0x6A, 0x3D, 0x6A, 0x63, 0xDB, 0xC4, 0xC3, 0xE5, 0x04, 0x1A, 0x52, 0x5B,
  0xA6, 0xDC, 0x90, 0x58, 0x8F, 0xB5, 0x5D, 0x79, 0x62, 0x56, 0x58, 0x99, 0x1C, 0xA6, 0x54, 0x38,
  0xFA, 0x1A, 0x03, 0xE9, 0x56, 0xBA, 0x74, 0x11, 0x99, 0x0A, 0x15, 0x5D, 0xAD, 0xC1, 0x2C, 0x7B,
  0x7B, 0xD3, 0xED, 0xA7, 0xC8, 0x26, 0x68, 0xCD, 0xA9, 0x67, 0x43, 0x82, 0x15, 0x73, 0xFD, 0xAA,
  0x27, 0xA8, 0x8A, 0x74, 0xC9, 0x3D, 0x17, 0xDC, 0x81, 0xA7, 0xBA, 0x99, 0x7C, 0x17, 0x00, 0x2C,
  0x9C, 0x67, 0x3D, 0x8F, 0x91, 0xA9, 0x49, 0x75, 0x2D, 0xA4, 0x8E, 0x8F, 0x1E, 0xD3, 0x19, 0xDA,
  0x73, 0xEB, 0x4E, 0xB5, 0x89, 0xF1, 0x52, 0x17, 0xB7, 0x68, 0xE4, 0x7F, 0xF5, 0x21, 0x5C, 0x7D,
  0xCD, 0x6C, 0x6E, 0x7A, 0x4E, 0xEB, 0xA8, 0x74, 0x0B, 0x6D, 0x53, 0x44, 0xB7, 0x9A, 0xEA, 0xE2,
  0x19, 0x56, 0xCE, 0xE2, 0x28, 0x86, 0x58, 0x93, 0xFA, 0x24, 0xC7, 0xA1, 0xEC, 0x6A, 0xB6, 0x5D,
  0x4E, 0x38, 0xB5, 0xBB, 0xB3, 0x26, 0x86, 0x19, 0x34, 0xFD, 0xD1, 0x8E, 0xB7, 0xBD, 0x9E, 0xF2,
  0x66, 0x66, 0xE2, 0x28, 0xD7, 0x74, 0x8F, 0x9E, 0xC2, 0x89, 0xF5, 0x5B, 0xD7, 0x72, 0x61, 0x99,
  0xA3, 0x5E, 0xC0, 0x06, 0x3C, 0x0A, 0xBE, 0xEB, 0x0D, 0x23, 0xFE, 0x9F, 0xD9, 0xA0, 0xC3, 0xBA,
  0x4B, 0x88, 0x7E, 0x7B, 0xD9, 0x50, 0x64, 0x34, 0xB8, 0xE5, 0x41, 0xF4, 0x5E, 0xDF, 0x5C, 0xD6,
  0x30, 0x96, 0x46, 0x1B, 0x4B, 0x53, 0xB0, 0xCE, 0x39, 0x96, 0xF8, 0xAE, 0x3C, 0x7F, 0xBF, 0xEE,
  0x09, 0xC5, 0xC3, 0xF0, 0xB6, 0x59, 0xEB, 0xD2, 0x6E, 0xB9, 0x95, 0xB3, 0x8C, 0x92, 0x73, 0xE9,
  0x52, 0x2C, 0xFA, 0x73, 0x53, 0xD7, 0x6D, 0x61, 0x9F, 0x48, 0xB6, 0x7B, 0x85, 0x2F, 0xE0, 0x5C,
  0x3A, 0x9F, 0x96, 0x06, 0x03, 0x76, 0xF7, 0x3E, 0x4B, 0xB4, 0x13, 0x9F, 0x63, 0x4D, 0x6A, 0x73,
  0x35, 0xAD, 0xC0, 0x77, 0x9C, 0xAB, 0x6E, 0xCE, 0xD5, 0x00, 0x91, 0xFD, 0x2B, 0xA8, 0x74, 0x4F,
  0xC5, 0x09, 0xB4, 0x8D, 0x20, 0x68, 0xAB, 0x69, 0x0B, 0x49, 0x77, 0x95, 0x96, 0x5D, 0x8A, 0x5A,
  0x20, 0xCA, 0x42, 0xE7, 0x8C, 0x39, 0x1F, 0xA8, 0x83, 0xC6, 0x38, 0xAE, 0x6B, 0x26, 0xA3, 0x26,
  0x34, 0xBD, 0x33, 0x45, 0x63, 0x8C, 0xBB, 0x9C, 0xBF, 0xAB, 0xAD, 0xD3, 0x4F, 0xD0, 0xAC, 0x20,
  0x84, 0xE5, 0x37, 0x31, 0x04, 0x90, 0x0B, 0x7F, 0xBB, 0xEF, 0x58, 0x55, 0xBF, 0x72, 0xC2, 0x36,
  0x01, 0x72, 0x78, 0x39, 0xAE, 0x9D, 0xF1, 0x42, 0x7B, 0xCB, 0x8B, 0x74, 0x79, 0x91, 0x5A, 0x28,
  0x8E, 0x1D, 0xC4, 0x2A, 0x17, 0x3E, 0x9C, 0x0C, 0x73, 0x5C, 0xA0, 0xCC, 0xE6, 0xE0, 0x3F, 0xC9,
  0x9C, 0xFF, 0x00, 0xA7, 0x15, 0x67, 0x1E, 0xAB, 0x22, 0x8D, 0x26, 0x56, 0xCB, 0x8E, 0x2E, 0x45,
  0xE5, 0x8B, 0x33, 0x1C, 0x37, 0x7F, 0x23, 0x5A, 0x8D, 0x20, 0x64, 0xA3, 0x01, 0xC1, 0xF4, 0xF5,
  0xAC, 0xC5, 0xA3, 0xF2, 0xA3, 0x2A, 0x3B, 0x64, 0xED, 0xCD, 0x76, 0x1F, 0x83, 0xDD, 0x21, 0x07,
  0x52, 0xCF, 0x3A, 0x5D, 0xEA, 0x16, 0xF6, 0xD6, 0xE2, 0x3C, 0x96, 0xE4, 0x32, 0xB6, 0x78, 0x20,
  0x10, 0x01, 0xF3, 0x07, 0x9F, 0x3A, 0x9B, 0x2F, 0x51, 0xAC, 0x69, 0x5F, 0x21, 0xC7, 0xA7, 0xFC,
  0x4D, 0x83, 0x4D, 0x18, 0x89, 0x49, 0x1D, 0xE9, 0x9E, 0xA4, 0x3C, 0x0F, 0x6A, 0xD0, 0xEA, 0xB6,
  0x30, 0xD9, 0x6A, 0xF3, 0x5B, 0x5A, 0xCF, 0x0C, 0xB0, 0xC5, 0x21, 0x8D, 0x36, 0x92, 0x78, 0x07,
  0x1C, 0xE4, 0x0E, 0x6B, 0x35, 0xD4, 0xCC, 0xEA, 0x09, 0x0A, 0xAD, 0x8F, 0x5C, 0xD5, 0x6C, 0x79,
  0x95, 0xA9, 0xB2, 0x79, 0x41, 0xD5, 0x23, 0x27, 0x7B, 0x1B, 0x48, 0x44, 0x6A, 0x32, 0xCF, 0xFA,
  0x07, 0xA9, 0xF2, 0x1F, 0xF6, 0xAA, 0x15, 0xB6, 0x62, 0xAF, 0x3B, 0x2B, 0x08, 0x90, 0xED, 0xC9,
  0xF3, 0x6F, 0x4A, 0xDB, 0x68, 0x7A, 0x75, 0xC6, 0xB1, 0x74, 0x2D, 0xED, 0xEC, 0x92, 0xE2, 0x61,
  0xF9, 0x88, 0x80, 0xC8, 0xA5, 0xB6, 0xE0, 0xB0, 0x05, 0x79, 0xCE, 0x39, 0xFB, 0x1A, 0x9D, 0xF1,
  0xB7, 0x52, 0xD1, 0xEE, 0x35, 0x71, 0x6B, 0xA1, 0x69, 0x4B, 0x6B, 0x0D, 0xBA, 0xB2, 0x4C, 0xA2,
  0x46, 0x42, 0x27, 0xDC, 0x4C, 0x99, 0x51, 0xC6, 0x7E, 0x61, 0xCF, 0xB1, 0xF4, 0xAB, 0xB0, 0xEA,
  0xD0, 0xC7, 0x25, 0x8D, 0x26, 0x54, 0xC9, 0xA6, 0x93, 0xE4, 0xE6, 0x85, 0x73, 0xCE, 0xDE, 0x3D,
  0x69, 0xD8, 0x23, 0xF9, 0xC5, 0x3F, 0xD3, 0x1D, 0x35, 0xAA, 0xF5, 0x1C, 0xD3, 0x5B, 0xE9, 0x1A,
  0x7D, 0xD4, 0xEF, 0x18, 0x12, 0x37, 0x86, 0x0B, 0x05, 0x52, 0x40, 0xDC, 0x49, 0x1D, 0x81, 0x20,
  0xFD, 0x33, 0x4D, 0xA5, 0x8D, 0xE4, 0x53, 0xDC, 0xA4, 0xA8, 0xEB, 0x05, 0xB3, 0x6C, 0x76, 0x61,
  0x82, 0xCF, 0x9E, 0x00, 0xFA, 0xE3, 0xF6, 0xA9, 0xFF, 0x00, 0xEA, 0xF8, 0xDB, 0x71, 0xF2, 0x44,
  0xB4, 0xAE, 0xEC, 0xDF, 0x74, 0xB4, 0x5E, 0x1D, 0xB1, 0x3F, 0x28, 0x24, 0x77, 0x3E, 0x55, 0x7B,
  0x77, 0xFA, 0x3B, 0x96, 0x38, 0x15, 0x4B, 0xD3, 0x09, 0x34, 0xB0, 0x28, 0x20, 0xB4, 0x8C, 0x70,
  0x00, 0x1E, 0x7F, 0x41, 0x57, 0x9A, 0xBC, 0x6F, 0x02, 0x95, 0x9D, 0x19, 0x5B, 0x03, 0xE5, 0x20,
  0xAD, 0x66, 0xE4, 0xCE, 0xA5, 0x3B, 0x2F, 0xC6, 0x14, 0xA8, 0xA4, 0x9D, 0xB0, 0x7B, 0xFE, 0xD5,
  0x63, 0xA1, 0xB6, 0x63, 0x9F, 0xFE, 0x27, 0xFB, 0x1A, 0xCD, 0xDD, 0x4F, 0xB0, 0x8D, 0x99, 0x04,
  0x67, 0x39, 0x39, 0x06, 0xAD, 0xBA, 0x62, 0x56, 0x92, 0x1B, 0xC6, 0x3D, 0xC2, 0x1F, 0xEC, 0x68,
  0xBC, 0xC9, 0xC6, 0x84, 0xA1, 0x4C, 0xCE, 0x6B, 0x39, 0x69, 0x1E, 0xB3, 0x53, 0xA1, 0x0C, 0x7F,
  0xB5, 0x59, 0xEA, 0x57, 0xBB, 0x6E, 0xBF, 0x38, 0xBB, 0x43, 0x9F, 0x9D, 0x54, 0x80, 0x48, 0xF6,
  0x27, 0x8A, 0x81, 0xD4, 0xFD, 0x45, 0x37, 0x50, 0xEB, 0x93, 0x5E, 0x2A, 0x3A, 0x4D, 0x30, 0x50,
  0x43, 0xEC, 0xCB, 0x15, 0x50, 0xA3, 0x01, 0x40, 0x03, 0x85, 0x1F, 0xDE, 0xAF, 0x61, 0xEA, 0x0B,
  0x1B, 0x49, 0xAE, 0x29, 0xF3, 0xF0, 0xAE, 0x3E, 0x3F, 0x0F, 0xD4, 0xAB, 0x93, 0x06, 0xE4, 0xDD,
  0xF2, 0x1D, 0x82, 0x6E, 0x99, 0x7E, 0xB5, 0xD0, 0x34, 0xB5, 0xDA, 0x91, 0x8F, 0xA5, 0x73, 0xCD,
  0x1E, 0x59, 0x8D, 0xD2, 0xC5, 0x24, 0x63, 0xC4, 0xC6, 0xE2, 0x32, 0x01, 0x1E, 0xD5, 0xD9, 0xBA,
  0x63, 0xA5, 0x75, 0x2D, 0x53, 0x47, 0x97, 0x53, 0xB7, 0x87, 0x36, 0xB6, 0xBF, 0xE6, 0x36, 0xE1,
  0xCE, 0x06, 0x78, 0x1E, 0x75, 0x1E, 0xB3, 0x5D, 0x8A, 0x49, 0x3B, 0x24, 0xD3, 0xE0, 0x92, 0x2A,
  0xBA, 0xC0, 0x7E, 0x53, 0x7F, 0xC4, 0x7F, 0x6A, 0xE4, 0xF7, 0x88, 0x7C, 0x63, 0xF5, 0xAE, 0xB1,
  0xD6, 0x2C, 0x17, 0xC4, 0x0D, 0xF2, 0x9C, 0x0E, 0x08, 0xF6, 0xAE, 0x4F, 0x7B, 0x34, 0x6B, 0x33,
  0x65, 0xD4, 0x73, 0xDE, 0xA7, 0xE9, 0xB9, 0xA3, 0x18, 0xF2, 0xC8, 0xF5, 0x70, 0x6D, 0x8C, 0x6C,
  0x34, 0xB8, 0xE3, 0xCF, 0x99, 0xA6, 0x8D, 0xCA, 0x67, 0xE5, 0x21, 0x88, 0xE0, 0xF3, 0xC0, 0xA9,
  0xE9, 0x09, 0x31, 0x89, 0x13, 0x25, 0x06, 0x37, 0x11, 0xFC, 0xB5, 0x79, 0xEB, 0xB1, 0x6E, 0xD9,
  0xBB, 0x92, 0xAC, 0x74, 0xF2, 0xAD, 0xD5, 0xC0, 0xA8, 0x1B, 0x0A, 0x41, 0xED, 0xE7, 0x5D, 0x93,
  0xA4, 0x3A, 0x03, 0x50, 0xB2, 0xE9, 0xEB, 0x8B, 0x8B, 0x99, 0xE3, 0xB1, 0xBE, 0xB8, 0xDA, 0xCF,
  0x17, 0x89, 0xB5, 0xA3, 0x41, 0xCA, 0x86, 0xF9, 0x4F, 0x6C, 0x64, 0x8C, 0xF0, 0x4F, 0x3E, 0x62,
  0xB3, 0xFF, 0x00, 0x06, 0x3A, 0x42, 0x4E, 0xA3, 0xEA, 0x58, 0xEF, 0x25, 0x8F, 0x3A, 0x76, 0x9C,
  0xE9, 0x3C, 0xAA, 0x63, 0xDC, 0x26, 0x7C, 0xE5, 0x62, 0xE7, 0x8E, 0x71, 0x93, 0x9F, 0x21, 0xEF,
  0x5D, 0xAF, 0xE2, 0xB5, 0xCD, 0xF7, 0x83, 0x16, 0x93, 0xA3, 0x19, 0x64, 0xBA, 0xD4, 0x99, 0x6D,
  0xE3, 0xDA, 0x55, 0x91, 0x10, 0x9F, 0x9D, 0x8F, 0x03, 0x69, 0x3D, 0xB2, 0x49, 0xFD, 0xEB, 0x84,
  0xFB, 0x59, 0xD5, 0xE7, 0x39, 0x2D, 0x0E, 0x06, 0x97, 0x29, 0xCA, 0xFE, 0x29, 0x7E, 0xC9, 0x5B,
  0xFD, 0x8D, 0xAE, 0x99, 0x89, 0x42, 0x6A, 0x6D, 0x72, 0x79, 0xD2, 0xF2, 0xCE, 0x7D, 0x4E, 0xF6,
  0x71, 0x6E, 0x64, 0x95, 0xE0, 0x7D, 0x91, 0x2C, 0x40, 0xB0, 0xDA, 0x38, 0x2C, 0x18, 0xF9, 0x60,
  0x6E, 0xEC, 0x38, 0xE7, 0xE9, 0x09, 0xB4, 0xDB, 0x8B, 0x65, 0x24, 0x5D, 0x5A, 0x22, 0xA6, 0x09,
  0x32, 0x39, 0x6C, 0x79, 0x7F, 0x20, 0x61, 0xFF, 0x00, 0xEE, 0xDC, 0xD7, 0x40, 0xBD, 0x8F, 0x4F,
  0xE8, 0xE7, 0xB9, 0x4B, 0xA8, 0x1A, 0xEE, 0x5B, 0x79, 0x5A, 0x3B, 0x74, 0x0E, 0x14, 0x5C, 0xBE,
  0x39, 0x27, 0xD1, 0x54, 0x11, 0xEB, 0xB4, 0xF0, 0x06, 0xEE, 0xD4, 0x9A, 0x16, 0x93, 0xAF, 0xF5,
  0xCD, 0xCE, 0xAB, 0x0C, 0x56, 0x87, 0xF1, 0x37, 0x11, 0x87, 0x88, 0x46, 0x9B, 0x22, 0x5C, 0x30,
  0xC8, 0xCF, 0xA7, 0xD4, 0xFA, 0xD4, 0x1A, 0x28, 0x64, 0xCF, 0x0F, 0x53, 0x88, 0xE2, 0x54, 0xAD,
  0xF9, 0xE5, 0x2E, 0x17, 0x9A, 0xEE, 0xCD, 0x0C, 0xF9, 0x21, 0x07, 0x5D, 0xE5, 0xDF, 0xFC, 0xF2,
  0xCC, 0xDC, 0x3A, 0x57, 0xE2, 0x8C, 0xAF, 0xF8, 0xDB, 0x47, 0x56, 0x3C, 0x8F, 0x14, 0xC6, 0x39,
  0xE0, 0x72, 0xE1, 0x71, 0xF4, 0xE4, 0xD3, 0x7F, 0xC2, 0xE4, 0xD3, 0xAF, 0x2D, 0x9A, 0xE1, 0xCD,
  0xBA, 0xC8, 0xE2, 0x39, 0x52, 0x71, 0xB3, 0xC3, 0x07, 0x80, 0xD9, 0xC1, 0x18, 0xEF, 0xC8, 0xE7,
  0xCE, 0xB4, 0x73, 0xD9, 0xDC, 0xF4, 0xF4, 0x37, 0x5A, 0x54, 0x91, 0x62, 0x78, 0x66, 0x28, 0xC2,
  0x48, 0x55, 0xBE, 0x6E, 0x37, 0x10, 0x09, 0xCF, 0xA8, 0xED, 0x8E, 0xE4, 0x1E, 0x2B, 0x39, 0x67,
  0x78, 0xD0, 0xCD, 0x2C, 0x17, 0xC8, 0xF2, 0xE9, 0xE1, 0xD9, 0x5C, 0x2E, 0x03, 0x46, 0xA4, 0x9F,
  0xD3, 0x9E, 0x39, 0xF4, 0x3C, 0x1F, 0xEB, 0x5A, 0x11, 0xD1, 0xE4, 0xC9, 0x2C, 0x91, 0xC5, 0x25,
  0x28, 0xC6, 0xBC, 0x24, 0xDA, 0x6A, 0xFE, 0xBF, 0x92, 0xAF, 0xDE, 0x20, 0x94, 0x5C, 0xD5, 0x37,
  0x7E, 0x6E, 0xA9, 0x9D, 0x77, 0x58, 0xE8, 0x2B, 0xFE, 0xA4, 0xE8, 0xB4, 0x93, 0x4F, 0x99, 0x6E,
  0xEF, 0xAC, 0xD3, 0x74, 0x31, 0x02, 0x33, 0x2A, 0x83, 0xD8, 0x37, 0x86, 0xA7, 0x38, 0xCF, 0x19,
  0xC1, 0xC5, 0x70, 0xE9, 0x7C, 0x48, 0xD8, 0x86, 0x52, 0xA4, 0x1C, 0x10, 0x7C, 0x8D, 0x7A, 0x7F,
  0xE0, 0x26, 0xB2, 0xB7, 0xFA, 0x44, 0xB6, 0x6D, 0x71, 0x34, 0xB3, 0x59, 0x65, 0x1D, 0xF2, 0x36,
  0x3A, 0x1E, 0x51, 0x80, 0x23, 0x39, 0xC0, 0xC7, 0x7E, 0xE0, 0xF1, 0x5C, 0xBF, 0xE2, 0xCF, 0x42,
  0x5D, 0xE9, 0xFD, 0x5B, 0x77, 0x36, 0x9F, 0x11, 0xFC, 0x0D, 0xC1, 0x79, 0xF0, 0xC5, 0x57, 0xC3,
  0xC0, 0x04, 0xF2, 0x4E, 0x0E, 0x72, 0x48, 0xFB, 0x8F, 0x2A, 0xA9, 0xF6, 0x67, 0xA9, 0x4F, 0x4B,
  0x9A, 0x7A, 0x0D, 0x4F, 0x0A, 0xDD, 0x78, 0xA7, 0xE5, 0x7E, 0xEB, 0x95, 0xDB, 0xC9, 0x17, 0x51,
  0x82, 0xCA, 0xDE, 0x48, 0xF8, 0xAF, 0x87, 0xFC, 0x1C, 0xC0, 0x49, 0xF2, 0x02, 0x55, 0x81, 0xF6,
  0xA7, 0x61, 0xDC, 0xB2, 0x85, 0x60, 0x76, 0xB7, 0x04, 0xFB, 0x7A, 0xD5, 0x82, 0x69, 0x77, 0x29,
  0x6C, 0x66, 0x91, 0x40, 0x26, 0x51, 0x08, 0x50, 0x41, 0x1C, 0xE7, 0xE6, 0x04, 0x71, 0x80, 0x70,
  0x3B, 0xD4, 0xA8, 0xB4, 0xAD, 0x40, 0x43, 0x38, 0x36, 0x70, 0xCD, 0x35, 0xB1, 0xE5, 0x11, 0xD6,
  0x42, 0xCB, 0xE7, 0xC2, 0x93, 0xDB, 0x20, 0xFD, 0x0D, 0x76, 0xB2, 0xD5, 0x62, 0x8F, 0xFA, 0x97,
  0xC4, 0xCB, 0x58, 0xA4, 0xFC, 0x11, 0x2D, 0xED, 0xD8, 0x4C, 0xD1, 0xBB, 0x6D, 0xC1, 0xF3, 0xEC,
  0x47, 0x91, 0xAD, 0x54, 0xF6, 0x17, 0x13, 0xF4, 0xFF, 0x00, 0xF1, 0x7B, 0x76, 0xDC, 0xF6, 0x0C,
  0x21, 0xBA, 0xDA, 0x33, 0x90, 0x7F, 0x44, 0x9F, 0x4F, 0xE5, 0x3E, 0xE0, 0x56, 0xDB, 0xA2, 0xBA,
  0x3B, 0x5B, 0xBA, 0xD1, 0xED, 0xEE, 0x07, 0x4F, 0x5B, 0x0B, 0x85, 0x91, 0x17, 0xFC, 0x62, 0x15,
  0x46, 0x85, 0xBF, 0x9F, 0x39, 0xFE, 0x4E, 0x72, 0x3B, 0xE0, 0x8A, 0xD8, 0xFC, 0x3C, 0xD7, 0x3A,
  0x78, 0x5E, 0x6A, 0xC6, 0x6D, 0x0A, 0x2D, 0x37, 0x4F, 0x89, 0x56, 0xD4, 0xDC, 0x33, 0x39, 0x4B,
  0x82, 0xEF, 0xC2, 0xF8, 0x4D, 0x9E, 0x4E, 0x37, 0x1F, 0x41, 0x8A, 0xCC, 0xCD, 0xAF, 0x4D, 0xF1,
  0xE3, 0xEB, 0xE7, 0xF5, 0xD8, 0xB3, 0x0C, 0x5B, 0x57, 0xB9, 0xCA, 0x64, 0xD6, 0x35, 0x6E, 0x9E,
  0xD3, 0x2C, 0xA1, 0xD4, 0x27, 0x59, 0x2F, 0x6F, 0x54, 0x4C, 0x2D, 0xEE, 0x10, 0x30, 0x82, 0x13,
  0xFA, 0x77, 0x03, 0xD8, 0xB7, 0x7F, 0xA6, 0x3D, 0x6B, 0xAD, 0xFC, 0x36, 0xEB, 0xCB, 0x5D, 0x37,
  0xA7, 0xE2, 0x9B, 0xA8, 0xAD, 0xEC, 0x6C, 0x26, 0xBC, 0x9C, 0xA4, 0x09, 0x69, 0x08, 0x46, 0x74,
  0x51, 0xCB, 0xB8, 0x1E, 0x59, 0xE0, 0x1A, 0xCD, 0xFC, 0x45, 0x8F, 0xA5, 0x75, 0x3E, 0xAB, 0xBC,
  0x37, 0x11, 0xDF, 0xAD, 0xE9, 0x22, 0x43, 0x28, 0x91, 0x0A, 0xC8, 0x85, 0x01, 0x56, 0x4D, 0xDD,
  0xC1, 0x1E, 0x5E, 0x55, 0x1F, 0xA8, 0x34, 0xAE, 0x9A, 0x93, 0xA2, 0xD3, 0x5B, 0x5D, 0x42, 0xE6,
  0x1D, 0x4C, 0x2C, 0x76, 0x7E, 0x14, 0x91, 0x6E, 0x68, 0xD7, 0x27, 0x68, 0xF0, 0xD4, 0x9D, 0xA4,
  0xAE, 0x39, 0xCF, 0x23, 0x9E, 0xE6, 0xAA, 0xE4, 0xC9, 0x09, 0x46, 0x32, 0xAA, 0x6F, 0xCA, 0xAF,
  0x82, 0xFA, 0xBF, 0xD0, 0x7B, 0x8B, 0xED, 0x2E, 0xC3, 0x3F, 0x11, 0x35, 0xBD, 0x0A, 0x5D, 0x7E,
  0xF2, 0xD2, 0xEB, 0x43, 0xB3, 0x47, 0x32, 0x33, 0xAD, 0xCA, 0x3B, 0x1F, 0x15, 0x48, 0xC8, 0x7E,
  0x08, 0xEE, 0x0D, 0x72, 0xAD, 0x44, 0xE9, 0xC2, 0xE4, 0xAC, 0x16, 0x91, 0x78, 0x60, 0x67, 0x74,
  0x6E, 0xDD, 0xBE, 0xF5, 0xA4, 0xD7, 0x74, 0x9D, 0xDA, 0x0D, 0x9E, 0xA9, 0x71, 0x15, 0xCB, 0xD9,
  0xC6, 0x81, 0x6D, 0x67, 0x74, 0x65, 0xF1, 0xC1, 0xCE, 0x23, 0xE4, 0x77, 0x52, 0xAD, 0x9F, 0x41,
  0x8F, 0x5A, 0xC6, 0x4C, 0xF6, 0xFB, 0x77, 0x32, 0x36, 0x4E, 0x72, 0x37, 0x1C, 0x93, 0x57, 0x30,
  0x67, 0xC5, 0x8E, 0x09, 0x6E, 0xE5, 0x7F, 0x7F, 0xF7, 0x19, 0x34, 0xE5, 0xD9, 0x70, 0x3B, 0xAC,
  0xDA, 0x87, 0x99, 0x26, 0x8A, 0x3B, 0x80, 0x42, 0x97, 0x20, 0xC4, 0x40, 0xDD, 0x9E, 0x06, 0x7C,
  0xC6, 0x3C, 0xEA, 0xDF, 0xA3, 0x2E, 0x5F, 0x4F, 0x4B, 0xC8, 0x52, 0x2B, 0x4B, 0x93, 0x76, 0x8A,
  0xAD, 0x35, 0xD5, 0xBE, 0xD9, 0x23, 0xCE, 0x0B, 0x6C, 0xE4, 0xE0, 0x86, 0xC8, 0xCF, 0x98, 0xE7,
  0x8C, 0xE2, 0xA9, 0xEC, 0xF5, 0xCD, 0x66, 0xCF, 0xF2, 0xAD, 0x26, 0x89, 0x23, 0xED, 0x8D, 0xF9,
  0xE3, 0xF7, 0xAB, 0xDD, 0x3F, 0x54, 0xD4, 0x2E, 0x65, 0x12, 0x5C, 0xF8, 0x6E, 0xE4, 0x05, 0xC8,
  0x3E, 0x5F, 0xBD, 0x65, 0x3C, 0x7B, 0xB8, 0x7C, 0xA2, 0xCA, 0x92, 0xBB, 0x44, 0x3E, 0xB6, 0xEA,
  0xED, 0x40, 0x69, 0x72, 0x68, 0xE9, 0x34, 0x89, 0xA6, 0xB4, 0x9E, 0x29, 0x81, 0x08, 0x21, 0x5F,
  0xFD, 0x59, 0x23, 0x27, 0x8E, 0x2B, 0x9A, 0x5C, 0x3D, 0x91, 0xD4, 0xA6, 0x6B, 0x3B, 0x69, 0xCD,
  0x9B, 0x37, 0xE4, 0xAD, 0xCC, 0x80, 0xB8, 0x1F, 0xEE, 0x2A, 0x00, 0x27, 0xBF, 0x60, 0x05, 0x74,
  0x9E, 0xA4, 0xEA, 0x3B, 0xBB, 0x77, 0x58, 0xCE, 0x8F, 0xA6, 0xDC, 0xAF, 0x27, 0x32, 0x44, 0x09,
  0xAC, 0xE5, 0xC6, 0xBB, 0x0D, 0xC2, 0x10, 0xFD, 0x25, 0x61, 0x1B, 0x9C, 0x0D, 0xF0, 0x82, 0x0F,
  0xEC, 0x72, 0x28, 0xA4, 0xD3, 0xE2, 0x3F, 0x32, 0x29, 0x45, 0x5D, 0xDF, 0xC8, 0xB9, 0xD3, 0x6E,
  0xB4, 0xFD, 0x43, 0xA6, 0x2C, 0x34, 0xFB, 0x7D, 0x1A, 0xD2, 0x1D, 0x42, 0xD8, 0x49, 0x2B, 0x5F,
  0x24, 0xBE, 0x1F, 0x89, 0x1A, 0xF2, 0xC1, 0x83, 0x1C, 0x31, 0xE4, 0x01, 0xE7, 0xE4, 0x01, 0xCD,
  0x69, 0x3A, 0x5E, 0x10, 0xBA, 0x55, 0xE4, 0xDE, 0x2C, 0x91, 0x14, 0x28, 0x14, 0x2C, 0x7B, 0xBC,
  0x47, 0x63, 0x80, 0xA4, 0xE4, 0x60, 0x63, 0x27, 0x38, 0x3C, 0xD6, 0x63, 0x42, 0xBA, 0xB3, 0x43,
  0x04, 0xB1, 0xDB, 0xCD, 0x6B, 0x32, 0xA0, 0xDC, 0x22, 0x90, 0xF3, 0xCF, 0x3C, 0x11, 0x81, 0x9F,
  0x6A, 0xD4, 0x5A, 0x5D, 0x2E, 0xD2, 0x62, 0x7B, 0xA0, 0x1C, 0x80, 0xDB, 0xD9, 0x5F, 0x3C, 0xE7,
  0xD3, 0xD6, 0xA2, 0x86, 0x27, 0x1B, 0x5E, 0xE5, 0x87, 0x37, 0x2A, 0x66, 0x86, 0xD1, 0xBC, 0x57,
  0xF1, 0x65, 0xDC, 0xCD, 0x21, 0xC6, 0x49, 0xC6, 0x4F, 0x99, 0xA9, 0x9F, 0x10, 0x6F, 0x74, 0x8B,
  0xE8, 0x2D, 0x63, 0xD2, 0xED, 0xDA, 0xD8, 0x43, 0x07, 0xCE, 0x73, 0xCB, 0xC8, 0x31, 0x92, 0x7E,
  0xA0, 0xD5, 0x4E, 0x9D, 0x3A, 0xBC, 0xAC, 0x30, 0xCC, 0x48, 0x24, 0xEE, 0x18, 0xFE, 0xD5, 0x77,
  0xFC, 0x53, 0xA1, 0x66, 0x8C, 0xAE, 0xB3, 0xA7, 0xEA, 0x76, 0xCE, 0xAB, 0xDE, 0xDE, 0xE5, 0xDC,
  0x3B, 0x0C, 0x7B, 0x64, 0x67, 0x9F, 0x3A, 0x7E, 0x4C, 0x3B, 0xA9, 0xDB, 0xE0, 0x1E, 0xAE, 0xDE,
  0x2A, 0xC8, 0x9D, 0x0B, 0xAA, 0x5C, 0x74, 0xBB, 0x3D, 0xF2, 0xFE, 0x2A, 0x49, 0xA5, 0x89, 0xE3,
  0xB5, 0x8F, 0x70, 0x00, 0xC9, 0x8E, 0x49, 0xC8, 0x39, 0x03, 0x9E, 0xDF, 0xF6, 0xAA, 0x99, 0x21,
  0x7E, 0xA6, 0xEA, 0x49, 0x2E, 0x6F, 0xA5, 0x9A, 0x5B, 0x39, 0x2E, 0x23, 0x92, 0xE0, 0x83, 0x11,
  0xDA, 0xAE, 0x4E, 0xFC, 0x10, 0xA0, 0xE0, 0x0F, 0x97, 0x9E, 0x7D, 0xEB, 0x51, 0x6F, 0xAA, 0xFC,
  0x37, 0xB3, 0xD3, 0x6E, 0x23, 0x7D, 0x57, 0x74, 0xD7, 0x6A, 0xAB, 0x68, 0x8F, 0x6D, 0x72, 0x0D,
  0xA9, 0xC1, 0x57, 0x60, 0x58, 0xB7, 0x24, 0x12, 0x32, 0xB8, 0xCF, 0xA5, 0x72, 0x7B, 0xAD, 0x43,
  0x41, 0x6D, 0x32, 0xF2, 0xCA, 0xC7, 0x51, 0x48, 0x05, 0xDC, 0xBE, 0x23, 0xC6, 0x2E, 0x42, 0x82,
  0x9E, 0x4A, 0x4B, 0x63, 0x3E, 0x59, 0x1E, 0xBE, 0xB5, 0x47, 0x51, 0xA6, 0xC8, 0xD3, 0xDB, 0x2A,
  0x6D, 0xFC, 0x3D, 0xDF, 0xC0, 0x97, 0x1E, 0x68, 0x5F, 0x31, 0xED, 0xF3, 0x37, 0xFA, 0xB5, 0xA9,
  0xE8, 0x5B, 0xE9, 0x25, 0xE9, 0xA9, 0xEF, 0x5A, 0xD3, 0x52, 0xB6, 0x84, 0xE9, 0xEE, 0xB7, 0x06,
  0x30, 0x62, 0x21, 0x58, 0xF8, 0x98, 0xC6, 0xE2, 0xC0, 0xF9, 0x60, 0x8E, 0x7C, 0xAA, 0x4F, 0xC4,
  0x5B, 0xED, 0x37, 0x53, 0xB0, 0xD3, 0xB4, 0xFD, 0x3B, 0x49, 0x53, 0x2D, 0x90, 0x54, 0x96, 0x48,
  0xEE, 0x99, 0xBC, 0x46, 0x31, 0x2E, 0xD7, 0xDC, 0xAC, 0x77, 0x70, 0x31, 0x96, 0xCB, 0x0C, 0x63,
  0xD4, 0x55, 0x77, 0x4E, 0xE8, 0xD1, 0x6B, 0xFA, 0x5D, 0xBD, 0x8E, 0x8F, 0x75, 0x16, 0xA3, 0x7B,
  0x63, 0x72, 0xA5, 0x84, 0x77, 0x0D, 0x20, 0xF0, 0xF6, 0x0C, 0x2A, 0x67, 0x20, 0x61, 0x46, 0x38,
  0x04, 0x7C, 0xD8, 0xAB, 0x5B, 0x3E, 0x82, 0xBE, 0x7D, 0x4B, 0x4A, 0xD1, 0xEE, 0xE6, 0xBC, 0x16,
  0xD2, 0x86, 0x0D, 0x2C, 0x30, 0xC8, 0xC6, 0x02, 0x48, 0x1B, 0x5D, 0x88, 0x00, 0xE0, 0x8F, 0x53,
  0x81, 0xDA, 0x9D, 0xE9, 0xD4, 0xB7, 0x43, 0xDF, 0xCF, 0x2C, 0x52, 0x70, 0x69, 0x5F, 0x7F, 0x24,
  0x4D, 0x06, 0xD9, 0x74, 0xA9, 0xA3, 0x95, 0x2E, 0x26, 0x46, 0x89, 0x55, 0xE3, 0x78, 0x80, 0x62,
  0x24, 0xC0, 0x38, 0xC6, 0xEE, 0xC0, 0xE7, 0x9C, 0xF9, 0x76, 0xAB, 0x3D, 0x7D, 0xB5, 0x6E, 0xA0,
  0xBA, 0xB4, 0x97, 0x51, 0xF1, 0xE6, 0x92, 0xE9, 0x76, 0xC2, 0xCA, 0x81, 0x99, 0x82, 0x92, 0x38,
  0x03, 0x1E, 0x79, 0xFB, 0xD4, 0x9E, 0xB4, 0xE9, 0x87, 0xE9, 0x9B, 0x8B, 0x18, 0x56, 0xE8, 0xDC,
  0xDB, 0xB2, 0xB2, 0x24, 0xBE, 0x11, 0x8C, 0xE5, 0x1B, 0x04, 0x1E, 0x4E, 0x4E, 0x4F, 0x7A, 0xAE,
  0xD3, 0xB5, 0x4B, 0xDB, 0x2D, 0x4B, 0xF1, 0xD6, 0x2C, 0x89, 0x3D, 0xB8, 0xDC, 0xBC, 0x85, 0x53,
  0x81, 0x8C, 0x90, 0x7B, 0xFD, 0x3C, 0xCD, 0x5B, 0xF4, 0xE6, 0x95, 0xBE, 0xE4, 0x5B, 0xA3, 0x2E,
  0x51, 0x93, 0xB9, 0xD0, 0x26, 0x6B, 0xFB, 0xAB, 0x26, 0x59, 0x96, 0xF2, 0x18, 0x5A, 0x51, 0x17,
  0x87, 0x92, 0x4A, 0x8C, 0x95, 0x6E, 0x46, 0xD0, 0x17, 0x24, 0x9E, 0x71, 0x8C, 0x54, 0xDD, 0x1F,
  0x4F, 0x16, 0x31, 0x5C, 0x22, 0xCF, 0x1C, 0xCD, 0x25, 0xB0, 0x94, 0xF8, 0x6C, 0xA4, 0x26, 0xE5,
  0x3F, 0x29, 0x20, 0x9E, 0x47, 0x9F, 0x62, 0x2A, 0x57, 0x51, 0xC7, 0xAA, 0xEA, 0xD3, 0xBE, 0xA7,
  0x7D, 0x6D, 0x73, 0x2C, 0xF7, 0x0F, 0xE2, 0x2B, 0x6E, 0x4F, 0x0A, 0x40, 0x0F, 0xCC, 0x07, 0x9E,
  0x3E, 0xFE, 0x74, 0x34, 0xBB, 0x33, 0x1C, 0xFA, 0x8B, 0x38, 0xB7, 0x8D, 0x66, 0x5D, 0xC2, 0x38,
  0x9F, 0xE4, 0x4D, 0xCB, 0x9D, 0xA3, 0x3D, 0x80, 0xCE, 0x3D, 0xBD, 0xE9, 0x41, 0xCD, 0xBE, 0x45,
  0x25, 0x54, 0x8E, 0x6F, 0xAD, 0xE8, 0x97, 0xBF, 0x84, 0xFC, 0x7A, 0xC3, 0x33, 0x5A, 0x49, 0x31,
  0x82, 0x39, 0x55, 0x3E, 0x47, 0x90, 0x0C, 0x95, 0x07, 0xD4, 0x0F, 0x6A, 0x3E, 0x99, 0x37, 0xDD,
  0x3B, 0xAE, 0x68, 0xDA, 0x96, 0x99, 0x71, 0x6D, 0x3D, 0xF2, 0x3E, 0xE6, 0x80, 0xC5, 0x91, 0x11,
  0x27, 0x68, 0x57, 0x2E, 0x30, 0x77, 0x02, 0x7B, 0x76, 0xF5, 0xAD, 0xD3, 0x68, 0x97, 0x6B, 0x26,
  0x9C, 0x6C, 0xA6, 0xB6, 0xBB, 0xB1, 0x67, 0x32, 0xB5, 0xAB, 0xDC, 0xA0, 0x8E, 0x36, 0xDD, 0x86,
  0x1C, 0xBF, 0xCD, 0x91, 0x8C, 0xB0, 0x1D, 0xB1, 0x50, 0xA7, 0xE9, 0x09, 0x66, 0xD5, 0xAE, 0x23,
  0x68, 0x9C, 0x40, 0x09, 0xF0, 0xA4, 0x59, 0x0E, 0x0A, 0x87, 0x19, 0x6C, 0x72, 0x71, 0xB4, 0x31,
  0xE4, 0x67, 0x14, 0xD9, 0x4A, 0x6F, 0x8F, 0x04, 0x49, 0x27, 0xDD, 0x14, 0x5D, 0x4B, 0x06, 0xB1,
  0x79, 0xD4, 0xA7, 0x51, 0xD5, 0xA4, 0xF1, 0x35, 0x1B, 0xE8, 0xC5, 0xD4, 0xA8, 0xB0, 0x78, 0x6A,
  0x8A, 0x78, 0x52, 0xA7, 0x18, 0x65, 0x65, 0x00, 0x82, 0x3D, 0xFD, 0x2B, 0x59, 0xD3, 0xB7, 0xD7,
  0x56, 0xBA, 0x7C, 0x96, 0x30, 0x2B, 0x78, 0x57, 0x4D, 0x16, 0xEC, 0x12, 0x39, 0x0C, 0x72, 0x31,
  0xD8, 0xE7, 0x34, 0xF7, 0x52, 0xE9, 0xF0, 0x6A, 0x1A, 0xBD, 0xD4, 0x71, 0xEA, 0x17, 0x93, 0x88,
  0x2F, 0x1A, 0x0B, 0x49, 0x66, 0x98, 0xCB, 0x17, 0xE1, 0x15, 0x37, 0x2A, 0xA9, 0xC6, 0x73, 0x9F,
  0x95, 0x7D, 0x72, 0x33, 0xE6, 0x6A, 0xFF, 0x00, 0x40, 0x9E, 0xD7, 0x48, 0xB3, 0xD4, 0xEC, 0xE7,
  0xD1, 0xD9, 0x66, 0xB9, 0x75, 0xFC, 0x3C, 0x92, 0xBE, 0x64, 0xB7, 0x1C, 0x10, 0x77, 0x0C, 0x72,
  0x73, 0x8C, 0x8C, 0x53, 0x1D, 0xCA, 0x35, 0x25, 0x74, 0x4B, 0x8F, 0xF0, 0xFE, 0x55, 0x46, 0x4B,
  0xAD, 0x50, 0x87, 0xB8, 0x75, 0xD8, 0xCA, 0x84, 0x0D, 0xBB, 0x80, 0x3D, 0xBD, 0x3B, 0xE3, 0xDE,
  0xB1, 0x3A, 0x8F, 0x45, 0x5F, 0x43, 0xA2, 0xA6, 0xA5, 0x25, 0xFE, 0x9D, 0x1C, 0x97, 0x13, 0x14,
  0x8E, 0xDC, 0xCC, 0x39, 0x50, 0x01, 0xDF, 0xBC, 0x1D, 0xBE, 0x63, 0x8A, 0xEB, 0xDD, 0x4B, 0xD3,
  0xDA, 0x6E, 0xA5, 0xD3, 0x9A, 0x95, 0xF4, 0x77, 0xB2, 0x26, 0xA1, 0x6A, 0xEA, 0x65, 0xB7, 0x31,
  0xEE, 0x57, 0x56, 0x3B, 0x54, 0x29, 0xCE, 0x72, 0x0F, 0x7F, 0xA8, 0xAB, 0x3E, 0xB2, 0xD2, 0x34,
  0x2D, 0x47, 0xA6, 0x27, 0xB2, 0x89, 0xED, 0x53, 0xC2, 0x44, 0x54, 0x3E, 0x22, 0xBA, 0xC3, 0x86,
  0x04, 0xB2, 0xA8, 0xF3, 0x00, 0x35, 0x1C, 0x99, 0x67, 0x06, 0x94, 0x7C, 0xFE, 0x81, 0x51, 0x8C,
  0x93, 0x72, 0xF0, 0x71, 0xDD, 0x1F, 0xE1, 0xAE, 0xBB, 0xA8, 0x69, 0x96, 0xFA, 0xBA, 0x5B, 0x34,
  0xBA, 0x6B, 0x38, 0x82, 0x56, 0x42, 0xA5, 0xFC, 0x42, 0x40, 0x18, 0x01, 0x8F, 0x1C, 0xE7, 0x27,
  0x1F, 0xA7, 0xCB, 0x22, 0xB4, 0x23, 0xE1, 0x3F, 0x54, 0xE9, 0xB1, 0x5D, 0x45, 0x21, 0xB6, 0x12,
  0x44, 0x56, 0x1D, 0x40, 0x09, 0x80, 0x0B, 0xE2, 0x11, 0xE1, 0xE3, 0x38, 0x0C, 0x3E, 0x61, 0xC8,
  0xED, 0xCF, 0x6C, 0x72, 0x88, 0xF4, 0xBB, 0x3D, 0x3B, 0x59, 0x3A, 0x7D, 0x86, 0xB9, 0xE2, 0xE8,
  0x09, 0xBA, 0x68, 0xDB, 0xF0, 0xE6, 0x42, 0x24, 0x1F, 0x34, 0x6E, 0xD1, 0x83, 0x86, 0x60, 0x71,
  0xCF, 0x90, 0xCF, 0xAD, 0x5D, 0x74, 0x8D, 0xCE, 0xA9, 0x71, 0x71, 0x2D, 0xCE, 0xA1, 0xA2, 0xC5,
  0xA8, 0xD8, 0xB6, 0xD9, 0x2F, 0x2F, 0x26, 0xB4, 0x33, 0xCD, 0x24, 0x63, 0xE5, 0x12, 0x2E, 0xE6,
  0x05, 0x88, 0xF9, 0x79, 0xC9, 0xC6, 0xD1, 0xCF, 0x15, 0x16, 0x67, 0x9E, 0xB7, 0x77, 0xAF, 0xAF,
  0x6F, 0xED, 0xF5, 0xDA, 0x3C, 0x4A, 0x32, 0x95, 0x29, 0x55, 0xFB, 0x9D, 0x03, 0xE1, 0xE7, 0x4D,
  0x6A, 0x1D, 0x2F, 0xD3, 0xD7, 0x96, 0x4D, 0x35, 0x82, 0xCD, 0xB9, 0x9A, 0x7F, 0x12, 0x75, 0x7D,
  0xF7, 0x49, 0x1E, 0xE9, 0x58, 0x72, 0x38, 0x00, 0xA8, 0x03, 0x8F, 0x3C, 0x8C, 0x1C, 0xD6, 0xBF,
  0xA4, 0xB4, 0x7D, 0x62, 0x29, 0xEF, 0xAF, 0xAF, 0x6E, 0x74, 0xAB, 0xCD, 0x4A, 0x74, 0xC0, 0xD9,
  0x31, 0x31, 0xC4, 0x54, 0x7C, 0xA9, 0xB5, 0x70, 0x31, 0xE7, 0xC0, 0x18, 0x24, 0xF7, 0xAE, 0x1B,
  0xA7, 0xDA, 0x49, 0x69, 0xF1, 0x12, 0xD7, 0xF1, 0x3A, 0x02, 0x46, 0xA6, 0x64, 0x71, 0xF8, 0xA0,
  0xD6, 0xB1, 0xC7, 0x0A, 0xB1, 0x0B, 0x23, 0x46, 0x58, 0x85, 0xDB, 0xC9, 0x18, 0x38, 0xE0, 0x7B,
  0x57, 0x65, 0xD4, 0xED, 0xF4, 0xE3, 0x7E, 0xB7, 0x36, 0xFA, 0xE7, 0xE0, 0x74, 0xEC, 0x2C, 0xB1,
  0xC7, 0x6A, 0xAF, 0x2C, 0x87, 0x00, 0xAE, 0x4B, 0x28, 0xC8, 0xF9, 0x98, 0xFF, 0x00, 0x31, 0xC9,
  0x35, 0x9E, 0xFA, 0x6C, 0x37, 0x4B, 0x24, 0xF9, 0x72, 0xF7, 0xFA, 0xFF, 0x00, 0xE7, 0x82, 0xDC,
  0xA5, 0x91, 0xBF, 0x4D, 0x2F, 0x82, 0xBB, 0xFF, 0x00, 0x27, 0x38, 0x93, 0xA4, 0x3A, 0xAB, 0xA8,
  0x75, 0x1B, 0xB5, 0xB5, 0x8B, 0x49, 0xBD, 0x5D, 0x3A, 0x46, 0x43, 0xB9, 0xD5, 0xBC, 0x5D, 0xCC,
  0x24, 0x25, 0x41, 0xE0, 0x02, 0xC4, 0xE3, 0xCB, 0xE5, 0xE7, 0x19, 0xC5, 0x5C, 0xDA, 0x74, 0x17,
  0x52, 0x74, 0xA3, 0x5B, 0xEB, 0x88, 0xDA, 0x5C, 0x37, 0x11, 0xBA, 0x1F, 0x0A, 0xD9, 0x4E, 0xE5,
  0x56, 0x21, 0x9D, 0x72, 0x00, 0xE3, 0x8C, 0x56, 0x8E, 0x17, 0xE9, 0xFE, 0x98, 0xB3, 0xB8, 0xBD,
  0xD3, 0x6F, 0xF5, 0x58, 0x6E, 0xA1, 0x88, 0x3C, 0xE6, 0x69, 0x46, 0x65, 0x18, 0xDA, 0x84, 0xA7,
  0x66, 0x19, 0x3C, 0x01, 0x8E, 0x7D, 0x6A, 0x8B, 0xFE, 0xB1, 0xD2, 0xB5, 0x8D, 0x3B, 0x58, 0x0E,
  0x6F, 0x6C, 0xED, 0xAD, 0x47, 0x8F, 0x2C, 0x93, 0x2E, 0xE5, 0x24, 0x93, 0x19, 0x01, 0x4E, 0x48,
  0xF9, 0x88, 0xFA, 0x6E, 0xC5, 0x58, 0x56, 0xB1, 0xFA, 0x31, 0xBE, 0x3D, 0xAE, 0xBF, 0x8F, 0xA6,
  0x37, 0xD1, 0xC9, 0xBF, 0xD4, 0x95, 0x2F, 0xEF, 0xDC, 0x81, 0x3F, 0xC3, 0x95, 0xBE, 0x3F, 0xC4,
  0xF5, 0x7E, 0xA5, 0x8E, 0xDF, 0xF1, 0x2E, 0xC2, 0x59, 0x23, 0xB8, 0x28, 0x01, 0x3C, 0x76, 0x3C,
  0xEE, 0x2C, 0x57, 0x3D, 0xB8, 0x63, 0x4C, 0x6A, 0xBA, 0x17, 0x4D, 0x5B, 0xDB, 0xC3, 0xD3, 0x86,
  0x7B, 0x3B, 0x7B, 0xC8, 0xDD, 0x62, 0x9E, 0xFE, 0x5B, 0x95, 0x6D, 0xE4, 0x90, 0x77, 0x64, 0x9C,
  0x00, 0xB9, 0x03, 0x91, 0x57, 0x9D, 0x27, 0xD3, 0xB6, 0x9D, 0x43, 0xAB, 0xDC, 0xDF, 0x68, 0x2D,
  0x14, 0x7A, 0x75, 0xB9, 0x8D, 0xDE, 0xFA, 0x42, 0xE1, 0x8B, 0x85, 0x3D, 0xA3, 0x20, 0x0E, 0x07,
  0x1F, 0xFF, 0x00, 0x6A, 0x86, 0xF7, 0xF8, 0x25, 0x97, 0x5B, 0x5E, 0x3F, 0x52, 0x68, 0x51, 0xDE,
  0xDB, 0x06, 0x74, 0x92, 0x78, 0x25, 0x91, 0xF3, 0x0F, 0xE9, 0x54, 0x09, 0xB0, 0x72, 0x48, 0x0C,
  0x79, 0xF2, 0x35, 0x24, 0x16, 0x46, 0xD3, 0xE5, 0x7F, 0xC7, 0xF8, 0x1B, 0x2A, 0xB6, 0x9B, 0x4F,
  0xFE, 0x4C, 0x36, 0x8B, 0x2C, 0xFA, 0x7F, 0x51, 0xDB, 0x8E, 0x91, 0x7D, 0x42, 0xDE, 0xE5, 0xA4,
  0x31, 0x05, 0xBA, 0x54, 0xDB, 0x74, 0x8C, 0xFB, 0x31, 0x1E, 0xC5, 0x23, 0x39, 0x3B, 0x86, 0x7E,
  0xD5, 0xD6, 0xBA, 0xFF, 0x00, 0xA7, 0xB5, 0x9E, 0xA8, 0xE9, 0xEB, 0x7D, 0x12, 0x6D, 0x15, 0xA6,
  0x95, 0x31, 0x23, 0xDF, 0x9B, 0x52, 0x1A, 0x42, 0xBC, 0x20, 0x6C, 0xE3, 0x9E, 0x49, 0xC8, 0xE3,
  0xD8, 0x56, 0x2F, 0xAB, 0xBA, 0xDE, 0xDA, 0xD2, 0x29, 0xEC, 0xFF, 0x00, 0xE9, 0x4D, 0x31, 0x2D,
  0x27, 0x0C, 0xF1, 0xB4, 0x62, 0x44, 0x9A, 0x12, 0x1B, 0xF2, 0xDD, 0x88, 0x03, 0x0C, 0x01, 0x56,
  0xE3, 0x20, 0xD4, 0x3B, 0x7F, 0x8A, 0x3A, 0xBD, 0xD7, 0x4F, 0xFF, 0x00, 0x0A, 0x8A, 0x1B, 0x35,
  0x5C, 0x99, 0x96, 0x63, 0x34, 0x8B, 0x31, 0x2A, 0x79, 0xF9, 0xB3, 0xDF, 0x9A, 0x58, 0xF4, 0xEB,
  0x24, 0xBD, 0x7C, 0xB1, 0x6A, 0x5E, 0xFC, 0x73, 0x5D, 0xBC, 0x31, 0xB9, 0x65, 0x49, 0x46, 0x0D,
  0x52, 0xFA, 0xF7, 0x39, 0x80, 0xD3, 0x24, 0xB4, 0xD4, 0xAF, 0x6C, 0x2E, 0xF6, 0xDB, 0xBD, 0xA4,
  0x8F, 0x0C, 0xCB, 0x2F, 0x8C, 0xAA, 0x8C, 0xA4, 0xFC, 0xA7, 0x68, 0x38, 0xE4, 0x7A, 0x57, 0x75,
  0xF8, 0x7F, 0xD0, 0x5A, 0x45, 0x86, 0x95, 0xA5, 0xF5, 0x7E, 0xA5, 0x79, 0x6D, 0x2F, 0xE1, 0x40,
  0xDC, 0x61, 0xBC, 0x71, 0x14, 0x91, 0x67, 0x6E, 0xF6, 0xDE, 0xA3, 0x24, 0x29, 0x64, 0x2B, 0x8E,
  0x48, 0x03, 0x23, 0x15, 0xCA, 0xF5, 0x1D, 0x1E, 0x7B, 0xDF, 0xC6, 0x4F, 0x0D, 0x8D, 0x94, 0x28,
  0xA1, 0x2E, 0x9E, 0x5F, 0xC6, 0xC8, 0xD2, 0xCB, 0xB9, 0x46, 0x71, 0xBB, 0x39, 0x23, 0x39, 0x23,
  0x3D, 0xFD, 0x6A, 0x6E, 0x9D, 0x7B, 0x71, 0x70, 0x22, 0x82, 0x2B, 0x88, 0x61, 0xB3, 0x68, 0x44,
  0x12, 0x42, 0xEE, 0x08, 0xF0, 0xFB, 0xEC, 0x6F, 0x7D, 0xDF, 0x31, 0xFF, 0x00, 0x70, 0x15, 0x63,
  0x34, 0x64, 0xDD, 0xA7, 0x64, 0x6A, 0x51, 0x6B, 0x6A, 0x3B, 0xC5, 0xDE, 0xAB, 0x07, 0x4D, 0x09,
  0xEE, 0x3A, 0x76, 0x6B, 0xC4, 0xB2, 0x02, 0xDD, 0x16, 0x09, 0x25, 0x49, 0x23, 0x11, 0x2A, 0x90,
  0x16, 0x25, 0x2D, 0xB8, 0x64, 0x92, 0x59, 0xB9, 0x39, 0xC7, 0x95, 0x72, 0x1E, 0xA7, 0xEB, 0x0B,
  0xF9, 0xB5, 0xB8, 0xD6, 0xEB, 0x52, 0xBA, 0x9E, 0xC6, 0xD7, 0x0D, 0x05, 0xC3, 0xB0, 0x1E, 0x3E,
  0x18, 0x12, 0x58, 0x71, 0x96, 0xF2, 0xFB, 0x52, 0x6D, 0x7A, 0x7A, 0xF5, 0xB4, 0x57, 0xB9, 0x97,
  0x57, 0xB4, 0xCF, 0x8D, 0xB5, 0x64, 0x8E, 0x61, 0xBC, 0x6E, 0x60, 0xAC, 0x4A, 0x1C, 0x64, 0x63,
  0xFB, 0x55, 0xC1, 0xE8, 0xBD, 0x69, 0x34, 0xBB, 0xCD, 0x3E, 0xD3, 0x56, 0xD3, 0x2E, 0x7F, 0x13,
  0x1A, 0xAB, 0x5B, 0x26, 0x03, 0xCA, 0x0B, 0x8D, 0x83, 0x2C, 0xB8, 0x04, 0x31, 0x07, 0xB8, 0xE6,
  0x99, 0x1C, 0x72, 0x4D, 0xBE, 0xEB, 0xEB, 0xC0, 0x77, 0xC7, 0x84, 0xBB, 0x99, 0x5E, 0xB3, 0xD7,
  0x0F, 0x52, 0xD9, 0xCD, 0x7F, 0x6F, 0x0D, 0xA5, 0x88, 0xD3, 0xC4, 0x67, 0xF0, 0xC9, 0x70, 0x32,
  0xC8, 0xC3, 0x05, 0x51, 0x58, 0xEE, 0x60, 0x1B, 0x71, 0xE0, 0x60, 0x06, 0xC5, 0x64, 0xB4, 0xFB,
  0x9D, 0x5E, 0x4B, 0x59, 0x6E, 0x56, 0x57, 0xF0, 0x8D, 0xDA, 0x09, 0x48, 0x9B, 0x05, 0x77, 0x26,
  0x33, 0x8C, 0xE4, 0x0C, 0x0E, 0xFD, 0xAB, 0x51, 0x3F, 0x48, 0x5C, 0xEA, 0x1A, 0xDD, 0xBD, 0x96,
  0x95, 0x68, 0x0D, 0xDC, 0xAC, 0x8A, 0x89, 0x14, 0xA0, 0x06, 0x71, 0x12, 0xB3, 0xA1, 0x39, 0xC7,
  0x7D, 0xDE, 0x7E, 0xB5, 0x5D, 0x7B, 0xA3, 0x5D, 0xD8, 0x49, 0x7D, 0x6A, 0xF7, 0x97, 0x1E, 0x24,
  0x24, 0xF8, 0x9F, 0x92, 0x06, 0xDD, 0x92, 0x6D, 0x65, 0xCF, 0x9E, 0x4F, 0xF4, 0x06, 0xA5, 0x71,
  0xF4, 0xFF, 0x00, 0x0C, 0x6B, 0xEA, 0x80, 0x9C, 0x65, 0xDE, 0xC9, 0xF2, 0x7C, 0x43, 0xD7, 0x6F,
  0x7A, 0x7A, 0x1E, 0x9F, 0x4B, 0x89, 0x85, 0xBD, 0xB3, 0x81, 0x6E, 0x64, 0x7C, 0xBC, 0x98, 0xCF,
  0x32, 0x33, 0x72, 0x43, 0x12, 0xDD, 0xFB, 0x70, 0x2A, 0xBE, 0xD6, 0xD6, 0xE7, 0x5B, 0xBB, 0xB0,
  0xB6, 0xB4, 0xB3, 0x9A, 0xE2, 0xF6, 0x76, 0x0A, 0x89, 0x6F, 0x16, 0xE2, 0xDC, 0xF3, 0x93, 0x8E,
  0x31, 0xE7, 0x91, 0x8C, 0x79, 0xD6, 0xB7, 0xA6, 0x7A, 0x8F, 0x55, 0xB6, 0xEA, 0x98, 0x3A, 0x83,
  0x5D, 0x4B, 0x7B, 0xE1, 0x7A, 0xAA, 0x97, 0x51, 0xFE, 0x1E, 0x1F, 0xF2, 0x0E, 0xD5, 0xDE, 0xAB,
  0xB7, 0xCC, 0x00, 0x07, 0xD0, 0xE7, 0xB9, 0xAF, 0x41, 0xF4, 0xEC, 0x56, 0x1A, 0xBE, 0x9F, 0x73,
  0x71, 0xA1, 0xC1, 0x15, 0xBD, 0xBC, 0xCD, 0xE1, 0x4B, 0xFE, 0x02, 0x34, 0x32, 0xE4, 0x03, 0xCE,
  0x08, 0xC8, 0xC1, 0xC7, 0xEF, 0x55, 0xB2, 0x4D, 0xA9, 0x6C, 0x48, 0x6A, 0x49, 0x46, 0xD9, 0xE2,
  0x25, 0x8C, 0x89, 0x72, 0x4F, 0x1E, 0xE6, 0xB5, 0x7A, 0x22, 0xE1, 0x93, 0xCC, 0x8E, 0x71, 0x59,
  0xD1, 0x31, 0x8E, 0x4D, 0xEA, 0xB1, 0x6E, 0x07, 0x82, 0x56, 0xAC, 0x75, 0x5E, 0xA8, 0xD5, 0xB5,
  0x39, 0x23, 0x6B, 0xDB, 0x88, 0x64, 0x68, 0xD0, 0x46, 0xA5, 0x62, 0x54, 0xC2, 0x8E, 0xC3, 0x81,
  0x5B, 0x12, 0x8D, 0x32, 0x38, 0xB4, 0x8A, 0x9E, 0xB5, 0x62, 0x6F, 0x70, 0x09, 0x18, 0x15, 0x9B,
  0x4D, 0xFF, 0x00, 0xEA, 0x6F, 0xDE, 0xB4, 0x13, 0x96, 0xB9, 0x7D, 0xD3, 0x2E, 0xE6, 0xFA, 0xE6,
  0x9A, 0x16, 0x91, 0xE7, 0x98, 0x7F, 0xA0, 0xFF, 0x00, 0xCD, 0x39, 0x46, 0x0F, 0xFD, 0x44, 0x52,
  0x8C, 0x9B, 0xBA, 0x18, 0xB2, 0xDF, 0xB9, 0x7E, 0x63, 0x9C, 0xD6, 0xE7, 0x46, 0xB7, 0x9C, 0xC6,
  0x19, 0xB2, 0xA3, 0xDE, 0xA8, 0xB4, 0xF8, 0x23, 0xB7, 0x95, 0x64, 0x8F, 0x1B, 0xFD, 0xE2, 0x27,
  0x15, 0xA6, 0xB7, 0xD5, 0x19, 0x22, 0xDA, 0xC2, 0x02, 0xDF, 0xEA, 0x00, 0x8F, 0xE9, 0x4D, 0x70,
  0x5E, 0x1A, 0x25, 0x82, 0xAE, 0xE6, 0x83, 0x46, 0x46, 0x0F, 0x2B, 0x12, 0x4E, 0x16, 0xB3, 0xFA,
  0xCC, 0xB3, 0x22, 0xB1, 0x57, 0x61, 0xEF, 0x57, 0x1A, 0x45, 0xF6, 0xFD, 0x3B, 0x50, 0xB9, 0x6D,
  0xB8, 0x88, 0x63, 0x8F, 0xA5, 0x67, 0x6F, 0x2F, 0xFC, 0x74, 0xE1, 0x33, 0xF4, 0x34, 0xB6, 0xB6,
  0x39, 0xB3, 0x2F, 0xA8, 0xEA, 0x77, 0x7B, 0x89, 0xF1, 0x9B, 0x8E, 0xD9, 0x00, 0xE3, 0xF7, 0xAA,
  0xE8, 0xAF, 0x35, 0x0B, 0xCB, 0xB5, 0x8A, 0xDD, 0x44, 0xD2, 0x39, 0xE1, 0x04, 0x2A, 0x4F, 0xF6,
  0xAB, 0x8B, 0xCD, 0x35, 0xEF, 0x09, 0x11, 0xAB, 0xAB, 0x9E, 0xC0, 0xAF, 0x07, 0xEF, 0x9A, 0x7E,
  0xC3, 0x51, 0x83, 0x42, 0xB4, 0x92, 0x2B, 0x0B, 0x67, 0x37, 0x8C, 0x70, 0x65, 0x99, 0x7B, 0xFB,
  0x9C, 0x7F, 0x41, 0xDA, 0x97, 0xA1, 0x27, 0xD9, 0x59, 0x0B, 0x7C, 0xF2, 0xCB, 0x7D, 0x23, 0x41,
  0xD4, 0x6D, 0x95, 0x6E, 0x35, 0x3D, 0x52, 0x1B, 0x22, 0xC3, 0xF4, 0xC2, 0x8B, 0xBC, 0x8F, 0xAD,
  0x68, 0x34, 0xFB, 0x97, 0xB0, 0x6C, 0x58, 0x6A, 0xB7, 0xCA, 0x7D, 0x56, 0x77, 0x5F, 0xEC, 0x6B,
  0x9C, 0x7E, 0x3A, 0xE2, 0xEA, 0x63, 0x2D, 0xD5, 0xD6, 0x58, 0x9E, 0x4B, 0xB6, 0x2B, 0x4B, 0xA2,
  0x4D, 0x6E, 0x4A, 0xEE, 0xBA, 0x84, 0x9F, 0x4D, 0xE2, 0xA3, 0x7A, 0x79, 0xC5, 0xDB, 0x8F, 0xC8,
  0x9A, 0x39, 0x13, 0xE1, 0x3F, 0x99, 0xB7, 0x7B, 0xEB, 0xDB, 0xE9, 0x61, 0xFC, 0x65, 0xD4, 0xF7,
  0x25, 0x78, 0x53, 0x34, 0x8C, 0xE4, 0x0F, 0x41, 0x93, 0x56, 0x5A, 0x7E, 0xA7, 0x75, 0xA3, 0x99,
  0x9E, 0x2B, 0xB9, 0x2D, 0xD6, 0x51, 0xB6, 0x44, 0x8D, 0xB1, 0xBD, 0x7D, 0x0D, 0x55, 0xE9, 0xEF,
  0x10, 0x03, 0x63, 0x46, 0xC4, 0xF9, 0x86, 0x14, 0xBB, 0xAB, 0x6F, 0x1D, 0x70, 0x87, 0x74, 0x8C,
  0x70, 0x07, 0xA9, 0xA0, 0xED, 0xF7, 0x24, 0xE0, 0x4E, 0xA9, 0xAA, 0xDA, 0xEA, 0x53, 0x99, 0xAF,
  0x21, 0x8A, 0xE2, 0x5C, 0x7E, 0xB9, 0x10, 0x12, 0x7D, 0xCE, 0x3C, 0xFD, 0xEA, 0xDF, 0x49, 0xBF,
  0xBA, 0x4B, 0x5F, 0x9D, 0xF6, 0xC5, 0x18, 0xDE, 0x91, 0x28, 0x19, 0x18, 0x5F, 0x7F, 0xA0, 0xE2,
  0xB3, 0x97, 0xBA, 0x69, 0xB1, 0xBB, 0x64, 0x95, 0xD1, 0x5A, 0x36, 0xC1, 0xF2, 0xC1, 0x1D, 0xC7,
  0x9D, 0x5B, 0x69, 0x1B, 0x4C, 0x37, 0x07, 0xC4, 0x56, 0x3B, 0x0E, 0x4E, 0xEC, 0xF9, 0x1A, 0x1E,
  0x9B, 0xEE, 0x2D, 0xC0, 0xBA, 0xEA, 0xAD, 0x62, 0x53, 0x95, 0xB6, 0x42, 0xBE, 0x5F, 0x96, 0x3F,
  0xF1, 0x53, 0xF4, 0x4E, 0xA0, 0xD6, 0xB5, 0x3B, 0x83, 0x65, 0x06, 0x99, 0x15, 0xCC, 0xD3, 0x1D,
  0xFE, 0x1A, 0xC0, 0x37, 0x12, 0xB9, 0x3B, 0xBE, 0xC3, 0x3E, 0xDC, 0x9A, 0xA7, 0x4B, 0x98, 0x20,
  0x4D, 0xF2, 0xDC, 0xDB, 0x84, 0x1F, 0xCC, 0xD2, 0x00, 0x2A, 0x56, 0x85, 0xD6, 0x96, 0xBA, 0x46,
  0xA5, 0xF8, 0x8B, 0x4D, 0x42, 0xDE, 0xDE, 0xE0, 0x29, 0x41, 0x29, 0x4D, 0xC3, 0x07, 0xCB, 0x9E,
  0x29, 0x92, 0xD3, 0xAA, 0x0F, 0xAA, 0xEB, 0x82, 0xD3, 0x52, 0xD4, 0x24, 0x9E, 0xEA, 0x18, 0xDE,
  0xC9, 0x6C, 0x2E, 0x6C, 0xCB, 0x46, 0xE2, 0x14, 0xDA, 0x58, 0xE7, 0x90, 0xE0, 0xF0, 0x70, 0x72,
  0x2A, 0x6F, 0xE2, 0xA4, 0xD4, 0x26, 0x9A, 0xFA, 0xEA, 0xDA, 0x59, 0x3C, 0x3C, 0xA3, 0x49, 0x10,
  0xDA, 0xA8, 0x1B, 0x01, 0x14, 0xF7, 0x18, 0x18, 0x00, 0x7B, 0x0A, 0xCD, 0xDC, 0xF5, 0x04, 0x17,
  0x5A, 0x8C, 0xD7, 0x62, 0x4B, 0x1B, 0x89, 0xA7, 0x72, 0xF2, 0x3A, 0x48, 0x46, 0x58, 0xF7, 0x38,
  0xEC, 0x2B, 0xA1, 0xE8, 0x17, 0x72, 0x9E, 0x8A, 0xBD, 0x44, 0xD4, 0x74, 0x68, 0xA1, 0x98, 0x12,
  0xD6, 0xCD, 0xF3, 0x4A, 0xE7, 0xC8, 0x03, 0xBB, 0xBF, 0x1C, 0x70, 0x7B, 0x54, 0x39, 0x31, 0x46,
  0x09, 0x59, 0x24, 0x26, 0xDA, 0xB3, 0x33, 0x79, 0xAA, 0xD9, 0x5A, 0x9C, 0x4F, 0x1D, 0xC6, 0xF5,
  0xE0, 0xB0, 0x44, 0x23, 0x3E, 0xDC, 0x66, 0xA0, 0x5E, 0x6A, 0xD6, 0x93, 0x24, 0x9B, 0x2E, 0xAE,
  0xAD, 0x4C, 0x83, 0x0C, 0x6E, 0x2D, 0x41, 0x8D, 0xBC, 0xB0, 0xC7, 0x1D, 0xBC, 0xAA, 0xB3, 0xA9,
  0xF5, 0x28, 0xAD, 0x45, 0xE7, 0xE2, 0x2D, 0xDE, 0x54, 0x8F, 0xF9, 0x55, 0x86, 0x49, 0xC0, 0xFD,
  0xAB, 0x0D, 0xD7, 0x57, 0x77, 0x1A, 0x76, 0x95, 0x13, 0x59, 0xCF, 0xB9, 0x6E, 0x88, 0x30, 0xC8,
  0x0E, 0x48, 0x51, 0xF3, 0x1C, 0x8F, 0xDA, 0xA4, 0xFB, 0xAC, 0x64, 0xED, 0xB6, 0x07, 0x9D, 0xC5,
  0x76, 0x3A, 0x5F, 0x4E, 0x6B, 0x7A, 0x6E, 0x96, 0x6E, 0x62, 0xEA, 0x9E, 0x9B, 0xB6, 0x98, 0x10,
  0xDE, 0x0D, 0xE4, 0x7A, 0x7B, 0x4B, 0x10, 0x7D, 0x99, 0x55, 0xCA, 0x77, 0xCF, 0x7F, 0x5C, 0x0A,
  0x75, 0xFE, 0x31, 0xE9, 0x5A, 0x5D, 0xD4, 0x09, 0x0C, 0x11, 0x43, 0x6F, 0x6C, 0xEA, 0xA6, 0x0D,
  0x93, 0x24, 0x4A, 0xFD, 0xFF, 0x00, 0xCB, 0x6F, 0xD2, 0x72, 0x4F, 0x7E, 0xDD, 0xEB, 0x92, 0xD8,
  0xFC, 0x40, 0xB9, 0xD3, 0x35, 0x9E, 0x94, 0x96, 0x31, 0x3C, 0xFA, 0x76, 0x9F, 0x29, 0xBD, 0x96,
  0xC9, 0x5F, 0x62, 0xCA, 0xF2, 0x7C, 0xA4, 0x7D, 0x94, 0x63, 0x27, 0xB7, 0x35, 0x9D, 0xD4, 0xBA,
  0x8B, 0x54, 0xD6, 0x3F, 0x89, 0xA6, 0xAB, 0x72, 0xE1, 0x75, 0x1B, 0xFF, 0x00, 0xE2, 0x73, 0x84,
  0x8C, 0x65, 0xA6, 0xC1, 0x03, 0x93, 0xD9, 0x40, 0x63, 0x81, 0x4A, 0x5A, 0x57, 0xDA, 0xF8, 0x5E,
  0x48, 0x56, 0xA6, 0x9D, 0xD5, 0x9D, 0xF7, 0x55, 0xF8, 0xC9, 0xA1, 0x6B, 0x13, 0xDD, 0xCC, 0x34,
  0xDD, 0x32, 0x46, 0x2C, 0x54, 0xFE, 0x39, 0x1A, 0x60, 0x58, 0x2E, 0x01, 0x5C, 0x8E, 0xDD, 0xB8,
  0xE3, 0xB5, 0x56, 0xE9, 0x7F, 0x10, 0x20, 0x7B, 0x08, 0x20, 0x59, 0xAC, 0xC9, 0xB5, 0x8D, 0x4E,
  0x52, 0xDC, 0x9F, 0x95, 0x78, 0xCB, 0x8C, 0x60, 0x83, 0x9F, 0xDF, 0x15, 0xC5, 0x24, 0xD4, 0x11,
  0xBF, 0x12, 0xC9, 0x65, 0x6C, 0x26, 0xB9, 0x63, 0x24, 0xB7, 0x12, 0x0D, 0xCE, 0x58, 0xF2, 0x48,
  0x1C, 0x2A, 0xE4, 0x9F, 0x21, 0xC5, 0x47, 0x41, 0x1B, 0x42, 0xCE, 0xD2, 0xA0, 0x65, 0x3C, 0x2B,
  0x2B, 0x16, 0x6F, 0x70, 0x40, 0xC7, 0xEE, 0x45, 0x52, 0xCB, 0xA5, 0x52, 0x77, 0xBA, 0xCB, 0x51,
  0xEA, 0x4E, 0x31, 0xD9, 0x18, 0xAA, 0xFD, 0xFF, 0x00, 0xCB, 0x3D, 0x0B, 0x65, 0xD5, 0x7D, 0x25,
  0x72, 0x64, 0x12, 0xDA, 0x74, 0xFA, 0xBB, 0x8F, 0x99, 0x9A, 0xD4, 0x83, 0xF7, 0xE3, 0xBD, 0x43,
  0xEA, 0xED, 0x6F, 0xA7, 0xC7, 0x46, 0x6B, 0x70, 0xE9, 0x5F, 0xC0, 0xD9, 0xE6, 0x85, 0x14, 0x2D,
  0xBA, 0xB4, 0x6C, 0x0F, 0x88, 0xB8, 0x23, 0xBE, 0xE3, 0xDF, 0x8E, 0x2B, 0x82, 0x78, 0x8A, 0x0E,
  0x5B, 0x61, 0x1E, 0x84, 0xD5, 0x95, 0xB5, 0x84, 0xCB, 0x0A, 0xDE, 0x5E, 0x6D, 0xB1, 0xB2, 0x61,
  0xB9, 0x25, 0x95, 0x46, 0xE9, 0x46, 0x71, 0xF9, 0x48, 0x70, 0x64, 0x3F, 0x4C, 0x0F, 0x52, 0x29,
  0x8B, 0x4D, 0x25, 0x25, 0x2D, 0xEF, 0xE4, 0x47, 0xF7, 0xDD, 0xC9, 0xC7, 0x6F, 0xCD, 0x9D, 0x0B,
  0xA2, 0xBA, 0x8E, 0x4D, 0x2B, 0x44, 0xBC, 0xB1, 0xB6, 0xB8, 0x82, 0xDF, 0xF1, 0x12, 0x07, 0x98,
  0x97, 0x21, 0x99, 0xB1, 0xC6, 0x31, 0xDF, 0x6F, 0xBF, 0x9D, 0x58, 0x6A, 0x7F, 0x11, 0x05, 0xAD,
  0xB4, 0x91, 0x09, 0x21, 0x69, 0x5E, 0xD9, 0x87, 0x33, 0xCE, 0x30, 0xDC, 0x72, 0x08, 0x6E, 0xFC,
  0x70, 0x3D, 0x0D, 0x72, 0x44, 0x57, 0xBC, 0x76, 0xB7, 0xD3, 0xED, 0x86, 0x48, 0xC3, 0xDC, 0x4E,
  0x03, 0x38, 0x1E, 0xDE, 0x4B, 0xF6, 0xE7, 0xDE, 0xAF, 0x34, 0xAD, 0x3B, 0xF0, 0x8E, 0xF2, 0xCC,
  0xCF, 0x3D, 0xC1, 0x39, 0xF1, 0x18, 0xE7, 0x1F, 0x41, 0xE5, 0x56, 0xBE, 0xED, 0xBA, 0x6E, 0x72,
  0x7D, 0xFC, 0x07, 0x1E, 0xA1, 0xA8, 0xA8, 0xC6, 0x3F, 0xB9, 0xB5, 0xB6, 0xF8, 0x93, 0x0E, 0xB8,
  0xF6, 0xF6, 0x97, 0xDA, 0x55, 0xAD, 0xBF, 0xF8, 0x77, 0x61, 0x73, 0x77, 0x7B, 0x70, 0x91, 0x17,
  0xF9, 0x46, 0x58, 0x8E, 0x42, 0x9C, 0x7B, 0xF3, 0x8A, 0xB1, 0xB2, 0xEA, 0x6D, 0x2A, 0x36, 0x99,
  0x2F, 0x34, 0xDB, 0x49, 0x20, 0x10, 0x96, 0x37, 0x76, 0x77, 0x8E, 0xF1, 0xA4, 0xBB, 0xF9, 0x40,
  0x5C, 0x67, 0x91, 0xB4, 0xE4, 0x79, 0xE7, 0x35, 0x8B, 0x8A, 0x65, 0x45, 0x8D, 0x24, 0x9A, 0x60,
  0x15, 0x4C, 0x60, 0xEE, 0xC9, 0x50, 0x7D, 0x2B, 0x15, 0x3B, 0xC9, 0x6F, 0xA8, 0x5C, 0x26, 0xFC,
  0xCB, 0x1C, 0x87, 0xE6, 0xDA, 0x3B, 0xF7, 0x1F, 0xF9, 0xA9, 0xE3, 0x89, 0xF2, 0xA2, 0xDA, 0xFD,
  0xD8, 0xCC, 0x99, 0x1F, 0x0D, 0xA4, 0xFF, 0x00, 0x64, 0x76, 0x3B, 0xBD, 0x57, 0xA6, 0xA4, 0x73,
  0xBB, 0x46, 0x91, 0xB7, 0xF9, 0x8B, 0xB9, 0x32, 0x4F, 0x9F, 0xB5, 0x55, 0x58, 0x6B, 0x7D, 0x24,
  0xBA, 0x9C, 0x50, 0xBE, 0x87, 0x79, 0x0D, 0x98, 0x0C, 0x2E, 0x8C, 0x53, 0x16, 0x60, 0x87, 0xCD,
  0x77, 0x67, 0xE6, 0x1C, 0x9F, 0x7E, 0x2B, 0x1B, 0x15, 0xC4, 0xE3, 0xE6, 0xCB, 0x30, 0xFF, 0x00,
  0x95, 0x5A, 0x5A, 0x5C, 0x36, 0xDC, 0x34, 0x40, 0xE7, 0x92, 0x41, 0x20, 0xD4, 0x5E, 0x83, 0x8F,
  0x76, 0xDF, 0xEE, 0x3F, 0xD4, 0xBE, 0xC9, 0x2F, 0xD8, 0x7A, 0xE7, 0xAA, 0x7A, 0x73, 0xC0, 0xBB,
  0xB7, 0x8E, 0xC2, 0xE4, 0x39, 0x52, 0xB1, 0x37, 0xE2, 0x88, 0xF9, 0x77, 0x92, 0xB8, 0x18, 0xE0,
  0xE3, 0x15, 0x7D, 0xA4, 0x75, 0xB6, 0x8B, 0x15, 0xCE, 0xFB, 0x38, 0xAE, 0x1F, 0xF3, 0x55, 0x44,
  0x45, 0x83, 0x80, 0x33, 0x91, 0xC1, 0x53, 0xCF, 0x02, 0xA9, 0x1E, 0xD6, 0x3B, 0x84, 0x23, 0xC3,
  0xF9, 0x5B, 0x82, 0x03, 0x77, 0xFA, 0xF3, 0x4A, 0x8A, 0xC6, 0x48, 0x49, 0xF0, 0x22, 0x8C, 0x7A,
  0x83, 0x12, 0x8F, 0xEA, 0x39, 0xA7, 0x5C, 0x52, 0x1A, 0xD3, 0xBE, 0x0D, 0xE7, 0xC3, 0x7F, 0x8B,
  0x3A, 0x2E, 0x83, 0xA3, 0x24, 0x1A, 0xAC, 0x91, 0x89, 0xA0, 0x62, 0x63, 0x56, 0xB3, 0x53, 0xB4,
  0xF6, 0xFD, 0x4B, 0x18, 0x20, 0xE0, 0x01, 0x9E, 0x73, 0x9A, 0xC9, 0x75, 0xD7, 0x5A, 0xE9, 0xFD,
  0x5D, 0xAD, 0xFE, 0x25, 0xC6, 0x9B, 0xA7, 0x40, 0x61, 0x09, 0x12, 0xC3, 0x0E, 0x79, 0xCE, 0x4F,
  0x8B, 0x9C, 0x67, 0xB9, 0xC6, 0x3D, 0xBD, 0xEB, 0x37, 0x3E, 0x83, 0x0E, 0xDF, 0xCC, 0xD3, 0x23,
  0x91, 0x89, 0x24, 0xB2, 0xCD, 0x24, 0x64, 0xF3, 0xF7, 0xCD, 0x55, 0xCD, 0xA0, 0xDA, 0x64, 0xAB,
  0x41, 0xA9, 0x43, 0xE9, 0xB5, 0x84, 0x80, 0x7F, 0x5C, 0xFF, 0x00, 0x4A, 0x3B, 0x54, 0x9F, 0x24,
  0x7F, 0x8A, 0x3D, 0x90, 0xFD, 0x8D, 0xD5, 0xA0, 0xBB, 0xB2, 0xF1, 0x2F, 0x2D, 0xAD, 0xE2, 0xDB,
  0x99, 0xE4, 0xD8, 0x0B, 0xA9, 0x0D, 0xC0, 0x03, 0xCF, 0x8C, 0x1E, 0x6B, 0xA1, 0xE9, 0x9F, 0x10,
  0x56, 0xD2, 0x27, 0x84, 0x75, 0x66, 0xAE, 0x23, 0x6C, 0xAF, 0x87, 0x01, 0x8A, 0x30, 0x46, 0x31,
  0x93, 0x8C, 0x63, 0x80, 0x39, 0x19, 0x35, 0xC9, 0x66, 0xD1, 0xA0, 0x39, 0x69, 0x35, 0x0F, 0x01,
  0xF3, 0x80, 0x25, 0x85, 0x94, 0x63, 0xCB, 0x96, 0x03, 0x9A, 0x25, 0xE9, 0xB9, 0xA6, 0x3F, 0xE1,
  0xAE, 0xED, 0xE6, 0x1E, 0xAB, 0x9E, 0x69, 0x65, 0xD3, 0xC2, 0x6E, 0xD8, 0xD8, 0xCE, 0x4B, 0xC1,
  0x3E, 0x6D, 0x51, 0x9F, 0xCD, 0x6A, 0x04, 0xD3, 0x4B, 0x23, 0x70, 0x46, 0x3E, 0x95, 0x22, 0x0B,
  0x78, 0xA4, 0x3F, 0x25, 0xCA, 0x30, 0xFF, 0x00, 0x4E, 0x41, 0xA9, 0xD3, 0x69, 0xB6, 0xC2, 0x00,
  0xD0, 0xCA, 0xAC, 0x71, 0xC9, 0xC6, 0xDC, 0x1F, 0x4E, 0x09, 0xAD, 0xF7, 0x25, 0xD8, 0xA3, 0xB2,
  0x4C, 0xA6, 0x4D, 0xF9, 0xEE, 0x6A, 0x44, 0x29, 0x2B, 0x1F, 0x94, 0xB5, 0x34, 0xD0, 0x5C, 0x06,
  0xF9, 0x1A, 0x32, 0x3E, 0xF4, 0xE4, 0x5F, 0x8C, 0x4E, 0x46, 0xC2, 0x7D, 0x8D, 0x17, 0x8D, 0x3F,
  0x03, 0x55, 0xA2, 0xEE, 0xC6, 0xD6, 0xF1, 0xF1, 0x8C, 0xFD, 0xEA, 0xCF, 0xF0, 0x97, 0x78, 0xC1,
  0x28, 0x38, 0xCF, 0x26, 0xA9, 0x2D, 0xAF, 0xEF, 0x50, 0x00, 0x61, 0x3F, 0x50, 0x6A, 0x4F, 0xE3,
  0xAE, 0x0F, 0x2F, 0x0B, 0x0F, 0x2E, 0x45, 0x46, 0xF1, 0xE3, 0x5E, 0x09, 0x54, 0xA4, 0x4A, 0x1A,
  0xB4, 0xD6, 0x6F, 0x2E, 0x88, 0x21, 0x8D, 0xCD, 0xE2, 0xEF, 0x33, 0xEF, 0xE1, 0x47, 0xD3, 0xCF,
  0xB7, 0xF5, 0xA0, 0x34, 0xE9, 0xC8, 0xC0, 0x58, 0xCF, 0xD0, 0xE2, 0xA0, 0xB3, 0x1C, 0x09, 0x8D,
  0xBA, 0x8F, 0x2D, 0xD8, 0x19, 0xFE, 0xF4, 0xDA, 0x6B, 0x2C, 0xB2, 0x3A, 0xAC, 0xA4, 0x37, 0x98,
  0x35, 0x12, 0xC7, 0x07, 0xDC, 0x73, 0x9B, 0x44, 0xCB, 0x8B, 0x49, 0xD1, 0x4E, 0xE8, 0xB8, 0xF2,
  0xE6, 0xAB, 0xDD, 0xDA, 0x29, 0x01, 0x26, 0x65, 0xC0, 0xC7, 0x0D, 0x4A, 0x9B, 0x52, 0x96, 0x55,
  0xFD, 0x6D, 0xCF, 0x9E, 0x6A, 0x11, 0x2E, 0xE7, 0xE6, 0x72, 0x69, 0x3D, 0x34, 0x1F, 0x61, 0xBE,
  0xB3, 0x44, 0xA3, 0x72, 0xB9, 0xC7, 0x88, 0x31, 0xE8, 0xC8, 0x0F, 0xF5, 0xC5, 0x39, 0x1C, 0x8B,
  0xBC, 0x15, 0x29, 0x9F, 0x5D, 0xB8, 0xA8, 0x89, 0x6D, 0xBC, 0x1D, 0xA4, 0x13, 0x8E, 0x32, 0x6A,
  0xEB, 0x4D, 0xD2, 0x22, 0x99, 0x51, 0x9A, 0x45, 0x19, 0x19, 0xA6, 0xFD, 0xD9, 0xAE, 0xD2, 0x0A,
  0xCA, 0xDF, 0x82, 0xC6, 0xC6, 0x62, 0x30, 0x57, 0x61, 0x3F, 0x5A, 0xB4, 0x86, 0x44, 0x31, 0x6E,
  0x75, 0x01, 0x81, 0xE3, 0xE6, 0xC7, 0xF6, 0xA3, 0xB3, 0xD1, 0x2D, 0xC2, 0x8F, 0xCD, 0xA7, 0xE6,
  0xD3, 0xAD, 0xE3, 0x53, 0xF9, 0xAF, 0xF6, 0xA8, 0xA5, 0x82, 0x5F, 0xF7, 0x13, 0xC7, 0x27, 0xE8,
  0x45, 0xFE, 0x28, 0x2D, 0x99, 0xB2, 0xA2, 0x54, 0x65, 0xFD, 0x3B, 0xBF, 0x9B, 0xD4, 0x93, 0xCD,
  0x59, 0xF4, 0xCD, 0xEB, 0x5C, 0xD8, 0x6A, 0xF2, 0x61, 0x53, 0x64, 0x67, 0x68, 0x5F, 0x2F, 0x95,
  0xAA, 0x86, 0x78, 0x6C, 0xD5, 0xB0, 0xF2, 0x48, 0x3E, 0xD5, 0x5F, 0x3F, 0x50, 0x36, 0x8B, 0x3C,
  0x76, 0x7A, 0x7A, 0x45, 0x3C, 0x57, 0xD9, 0x49, 0x5E, 0x4C, 0x82, 0x9F, 0xCB, 0xC6, 0x3C, 0xF0,
  0xC4, 0xD2, 0xF4, 0xD4, 0x21, 0x5D, 0xC1, 0xBE, 0xE5, 0x64, 0x39, 0x2E, 0x2E, 0x24, 0xC1, 0x95,
  0xF7, 0x1E, 0xFC, 0xD1, 0xC5, 0x7B, 0x24, 0x44, 0x12, 0x8A, 0xFF, 0x00, 0x5A, 0x91, 0x2C, 0x11,
  0x00, 0x3C, 0x39, 0x55, 0x87, 0x60, 0x6A, 0x04, 0xC8, 0x10, 0x9E, 0x01, 0xFB, 0xD5, 0xAB, 0x8B,
  0x2B, 0xBB, 0x45, 0xF5, 0xA7, 0x54, 0xA4, 0x00, 0x06, 0xB5, 0x4F, 0xB5, 0x2E, 0xEB, 0xA8, 0xCD,
  0xF5, 0xAC, 0xF1, 0x45, 0x1F, 0x80, 0x64, 0x52, 0x82, 0x45, 0x8C, 0x6F, 0x5C, 0xF9, 0x83, 0x59,
  0x85, 0x91, 0x54, 0xFE, 0x83, 0xF6, 0x34, 0xFC, 0x53, 0x20, 0x3F, 0xA5, 0xF3, 0x4D, 0x94, 0x50,
  0xF8, 0xCD, 0x9A, 0x8B, 0x4E, 0xA0, 0x5B, 0x6B, 0x18, 0xAD, 0xE7, 0x80, 0x5C, 0xB2, 0x28, 0x53,
  0x2C, 0x83, 0xE6, 0x6F, 0x52, 0x4F, 0x99, 0xAA, 0xFD, 0x47, 0x53, 0xB1, 0xB8, 0xCE, 0xDB, 0x24,
  0x53, 0xF6, 0xAA, 0x5B, 0x8B, 0x94, 0xC7, 0x3B, 0x87, 0xD4, 0x55, 0x55, 0xCD, 0xEA, 0xA9, 0xC2,
  0x64, 0x93, 0xED, 0x4A, 0x18, 0x53, 0x14, 0xB2, 0x32, 0xCE, 0x73, 0x68, 0xC7, 0x2D, 0x18, 0x51,
  0xE5, 0xC5, 0x45, 0x58, 0xE2, 0x9D, 0xC2, 0xDA, 0xC5, 0x1B, 0xE7, 0xCF, 0x34, 0x8D, 0x36, 0xCA,
  0x6B, 0xD6, 0x0F, 0x39, 0x60, 0x99, 0xEC, 0x54, 0xF3, 0xFF, 0x00, 0x6A, 0xD2, 0x59, 0xD8, 0xA5,
  0xB0, 0x1B, 0x49, 0x38, 0xED, 0xE5, 0x8A, 0x39, 0x36, 0x43, 0x8F, 0x23, 0xA1, 0x17, 0x2E, 0x58,
  0xC6, 0x9B, 0xA4, 0x42, 0x8C, 0xAF, 0x28, 0x0C, 0xDD, 0xF1, 0x8A, 0xD0, 0x2B, 0x44, 0xB1, 0xE3,
  0x6A, 0x63, 0xDD, 0x45, 0x44, 0x66, 0x54, 0x5D, 0xCC, 0x40, 0x02, 0xA8, 0xAF, 0xFA, 0x89, 0x19,
  0xC4, 0x7A, 0x6A, 0x78, 0xEE, 0x3B, 0xB9, 0x18, 0x45, 0xF7, 0xF7, 0xAC, 0xFC, 0xB3, 0xF1, 0xE4,
  0xB5, 0x16, 0xA2, 0x8B, 0x8D, 0x75, 0xFC, 0x3D, 0x12, 0xE2, 0x68, 0xBC, 0x18, 0x24, 0x89, 0xD2,
  0x45, 0x97, 0xC3, 0x18, 0x52, 0x18, 0x63, 0x3C, 0x73, 0xF4, 0xF3, 0xAC, 0x7C, 0x16, 0xB3, 0xEA,
  0x57, 0x5F, 0x8B, 0xBE, 0xB8, 0x96, 0x42, 0xEA, 0x0B, 0x49, 0x23, 0x12, 0xEF, 0xED, 0xEC, 0x3D,
  0xBC, 0xAA, 0x52, 0x3D, 0xCC, 0xEF, 0xE2, 0x5E, 0x4C, 0xD2, 0xB7, 0x92, 0x9F, 0xD0, 0xBF, 0xFC,
  0x6A, 0x48, 0x2D, 0x81, 0xCE, 0x40, 0xED, 0xED, 0x50, 0xE3, 0xC6, 0xFB, 0xCB, 0xB8, 0xA6, 0x94,
  0xDD, 0x93, 0xAD, 0xBC, 0x3B, 0x75, 0x09, 0x12, 0x2A, 0xAF, 0xB1, 0xA9, 0x29, 0x73, 0x8F, 0xE5,
  0xCF, 0xDE, 0xAA, 0xD7, 0x3E, 0xBF, 0xD6, 0x9E, 0x40, 0x4F, 0xAF, 0xEF, 0x52, 0xED, 0x0A, 0x65,
  0x9C, 0x73, 0x21, 0x39, 0x2B, 0xFD, 0x6A, 0x0E, 0xB7, 0x67, 0x1C, 0xB1, 0x8B, 0xA8, 0xD4, 0x17,
  0x51, 0x86, 0x3D, 0xF8, 0xFF, 0x00, 0xEA, 0x8D, 0x50, 0xFA, 0xD4, 0x88, 0xF2, 0x17, 0x6F, 0x0C,
  0x0F, 0xB6, 0x68, 0x25, 0x4F, 0x81, 0x3E, 0x51, 0x4B, 0x01, 0xEC, 0x54, 0xD5, 0xA5, 0xAA, 0x86,
  0x23, 0x24, 0x67, 0xEA, 0x2A, 0xAD, 0x95, 0xAD, 0x6E, 0x59, 0x0A, 0x15, 0x5C, 0xE5, 0x41, 0x19,
  0xE2, 0xA5, 0xC7, 0x32, 0x8F, 0x23, 0xFB, 0x51, 0x6A, 0xC0, 0x8B, 0xB8, 0xD1, 0xD0, 0xAE, 0x54,
  0x32, 0x9E, 0xFC, 0x0C, 0xE2, 0xA5, 0x44, 0xF8, 0x3F, 0x21, 0x56, 0xF3, 0xC1, 0xC8, 0xC5, 0x55,
  0xDA, 0x5E, 0xA0, 0xC2, 0xB3, 0x10, 0x7D, 0xEA, 0xD2, 0x3F, 0x0E, 0x6C, 0x32, 0x6D, 0x1E, 0xA7,
  0x8A, 0xAD, 0x38, 0xFB, 0x92, 0xA1, 0xFD, 0xC4, 0x8C, 0x14, 0x60, 0x7C, 0xF9, 0xCD, 0x22, 0x55,
  0x57, 0x03, 0x83, 0x91, 0xEB, 0x4B, 0x13, 0xF8, 0x40, 0xAC, 0x80, 0x76, 0xF2, 0xE0, 0xD1, 0x3B,
  0x86, 0x50, 0x53, 0x93, 0xE8, 0x2A, 0x2D, 0xA3, 0xC6, 0xA4, 0xB4, 0x90, 0xC6, 0x59, 0x17, 0x72,
  0xE3, 0xC9, 0xAA, 0xA6, 0xEB, 0x4E, 0x85, 0x9B, 0x74, 0xD6, 0x68, 0x4F, 0xAB, 0x46, 0x32, 0x3E,
  0xF8, 0xCD, 0x5E, 0x83, 0x85, 0xE4, 0x71, 0x8F, 0xDA, 0x9B, 0xFC, 0x46, 0x31, 0xDC, 0x7D, 0xF3,
  0x49, 0x36, 0x80, 0xD2, 0x67, 0x1F, 0x61, 0x9E, 0xF8, 0x3F, 0x6A, 0x4B, 0xC8, 0xAC, 0xC6, 0x48,
  0x63, 0x58, 0x94, 0xF6, 0x41, 0x93, 0x8F, 0xB9, 0xE4, 0xD0, 0xA1, 0x5B, 0x89, 0x2B, 0x32, 0xC4,
  0xA4, 0xEE, 0xAD, 0xC1, 0x20, 0xE7, 0xC8, 0x9A, 0x7A, 0x3B, 0xD9, 0xCB, 0x10, 0x25, 0x7E, 0x3D,
  0xF3, 0x42, 0x85, 0x1E, 0xC0, 0x44, 0xC8, 0xF5, 0x3B, 0xA4, 0xE7, 0x72, 0x37, 0xB1, 0x41, 0x52,
  0x93, 0xA8, 0x2E, 0x13, 0x86, 0x86, 0x03, 0xEE, 0x01, 0x07, 0xFB, 0xD0, 0xA1, 0x4D, 0x6D, 0x8F,
  0xBA, 0x26, 0xDB, 0xF5, 0x27, 0x8A, 0xA2, 0x27, 0xB4, 0x5E, 0xF9, 0xCE, 0xFF, 0x00, 0xFE, 0xAA,
  0x46, 0x56, 0xE4, 0x6E, 0x28, 0xA3, 0x3E, 0x44, 0x66, 0x85, 0x0A, 0x50, 0x6D, 0x12, 0x35, 0x6B,
  0x92, 0x2C, 0xF6, 0xB0, 0xF6, 0x31, 0x27, 0xD8, 0x62, 0x98, 0x92, 0xC6, 0x14, 0x23, 0x6E, 0xF5,
  0xFF, 0x00, 0x8B, 0x11, 0x42, 0x85, 0x5B, 0x8B, 0x7C, 0x10, 0xB4, 0x85, 0x2D, 0xBB, 0x07, 0x3B,
  0x6E, 0x26, 0x1F, 0xFC, 0xB3, 0x53, 0x2C, 0xE3, 0xB8, 0x4C, 0x05, 0xBA, 0x7C, 0x7B, 0xA8, 0xA1,
  0x42, 0x94, 0xBB, 0x06, 0x31, 0x56, 0x58, 0xA4, 0xF7, 0x6B, 0x26, 0xC5, 0xBA, 0x61, 0xC6, 0x73,
  0x8A, 0x44, 0xDA, 0xBD, 0xE4, 0x43, 0xE6, 0x93, 0x7F, 0xF4, 0xA1, 0x42, 0xAB, 0x26, 0xDB, 0x24,
  0x71, 0x44, 0x57, 0xD4, 0x25, 0x9C, 0xE5, 0xBB, 0x8A, 0x41, 0x50, 0xE7, 0x73, 0x00, 0x48, 0xE4,
  0x1C, 0x50, 0xA1, 0x4F, 0x71, 0x44, 0x2C, 0x61, 0x83, 0x6E, 0xE1, 0xCF, 0x07, 0x34, 0x4D, 0x23,
  0x0C, 0x96, 0x62, 0xDF, 0x5A, 0x14, 0x28, 0xD2, 0x5D, 0x86, 0x8C, 0xAC, 0x85, 0xA4, 0xF4, 0x1E,
  0x94, 0xF3, 0x4C, 0xC8, 0xBC, 0x50, 0xA1, 0x45, 0x08, 0x06, 0x3D, 0xE3, 0xE7, 0x62, 0x73, 0xF6,
  0xC5, 0x5A, 0xD8, 0x69, 0xB6, 0x7B, 0x4B, 0x88, 0x06, 0xEF, 0x52, 0x49, 0xA1, 0x42, 0x99, 0x26,
  0xEA, 0xCB, 0x11, 0x48, 0xB3, 0x86, 0x35, 0x58, 0xC2, 0xA6, 0x55, 0x7D, 0x33, 0x9A, 0x5B, 0xB6,
  0xC8, 0xD9, 0x88, 0xC8, 0x03, 0x38, 0xED, 0x42, 0x85, 0x41, 0x2F, 0x24, 0xA8, 0xC2, 0x5E, 0x6A,
  0x13, 0xEB, 0x17, 0xDB, 0x5D, 0xDA, 0x28, 0x41, 0xC0, 0x8D, 0x0F, 0x18, 0xF7, 0xF5, 0x35, 0x36,
  0xDE, 0x14, 0x89, 0x00, 0x8D, 0x70, 0x01, 0xA1, 0x42, 0xAB, 0x43, 0x9E, 0x58, 0xCC, 0x5C, 0xAD,
  0xCF, 0xB9, 0x25, 0x78, 0x14, 0xEA, 0xFA, 0xF1, 0x42, 0x85, 0x48, 0x4A, 0x2C, 0x1C, 0x1A, 0x5A,
  0xB7, 0xB0, 0xA1, 0x42, 0x80, 0x51, 0x2A, 0x1C, 0x12, 0x31, 0x91, 0xF7, 0xA7, 0xD1, 0xCA, 0xCB,
  0x91, 0xE5, 0x42, 0x85, 0x31, 0x8E, 0x1B, 0xD7, 0xE2, 0x57, 0xB3, 0x12, 0xF6, 0x64, 0xE4, 0x7F,
  0xE2, 0xA8, 0xA3, 0x90, 0x8A, 0x14, 0x28, 0xC4, 0x6B, 0xEE, 0x48, 0x8E, 0x77, 0x00, 0x60, 0xE0,
  0x54, 0xFB, 0x59, 0xDD, 0x7E, 0x6C, 0xF2, 0x28, 0x50, 0xA0, 0xD2, 0x0C, 0x4B, 0x98, 0xAE, 0x64,
  0x75, 0x2A, 0x42, 0x15, 0x1E, 0x58, 0x3F, 0xF9, 0xA6, 0x1D, 0xF8, 0x5C, 0x0C, 0x67, 0x8C, 0x64,
  0xF1, 0x42, 0x85, 0x43, 0x48, 0x7D, 0x8D, 0x49, 0x7D, 0xE0, 0x10, 0xAD, 0x19, 0x6D, 0xC7, 0x82,
  0xAE, 0x54, 0x8A, 0x41, 0xBB, 0x25, 0x58, 0x90, 0xE7, 0x07, 0xFD, 0x74, 0x28, 0x51, 0xDA, 0xA8,
  0x16, 0xCF, 0xFF, 0xD9
};

compile, Upload, open the Serial monitor and grab the IP and connect to that IP from a computer on the same subnet. You should see the image appear

PS/ image courtesy of wikimedia

@J-M-L It worked. I changed the response code to this:

  server.on("/saved-photo", HTTP_GET, [](AsyncWebServerRequest* request) {
    if (fileSize <= 0) request->send(200, "text/html", "nothing here yet");
    else {
      AsyncWebServerResponse* response = request->beginChunkedResponse("image/jpg", [](uint8_t* buffer, size_t maxLen, size_t alreadySent) -> size_t {
        if (size_t(fileSize) - alreadySent >= maxLen) {
          //memcpy(buffer, jpg + alreadySent, maxLen);
          for (size_t i = 0; i < maxLen; i++) {  //jpg buffer allocated in PSRAM - cannot use memcpy; have to "manually" iterate through that buffer
            buffer[i] = fileArray[alreadySent + i];
          }
          return maxLen;
        } else {  // last chunk and then 0
          //memcpy(buffer, jpg + alreadySent, imageSize - alreadySent);
          for (size_t i = 0; i < (size_t(fileSize) - alreadySent); i++) {
            buffer[i] = fileArray[alreadySent + i];
          }
          return size_t(fileSize) - alreadySent;
        }
      });
      request->send(response);
    }
  });

Apparently I forgot to return 0 on the last loop in my previous code. :man_facepalming: Stupid mistake...

However, I'm getting crashes left and right now when I'm on the site.

20:53:41.442 -> ***ERROR*** A stack overflow in task loopTask has been detected.
20:53:41.442 -> 
20:53:41.442 -> 
20:53:41.442 -> Backtrace:0x400837d1:0x3ffb26200x4008ca79:0x3ffb2640 0x4008fca9:0x3ffb2660 0x4008e77d:0x3ffb26e0 0x4008cb88:0x3ffb2710 0x4008cb38:0x00000000  |<-CORRUPTED
20:53:41.442 -> 
20:53:41.442 -> 
20:53:41.442 -> 
20:53:41.442 -> 
20:53:41.442 -> Backtrace:0x40090cad:0x3ffae1400x400e64b9:0x3ffae170 0x40083871:0x3ffae1c0 0x4008599c:0x3ffae1e0 0x40090cad:0x3ffae2a0 0x400e64b9:0x3ffae2d0 0x40083871:0x3ffae320 0x4008599c:0x3ffae340 0x40090cad:0x3ffae400 0x400e64b9:0x3ffae430 0x40083871:0x3ffae480 0x4008599c:0x3ffae4a0 0x40090cad:0x3ffae560 0x400e64b9:0x3ffae590 0x40083871:0x3ffae5e0 0x4008599c:0x3ffae600 0x40090cad:0x3ffae6c0 0x400e64b9:0x3ffae6f0 0x40083871:0x3ffae740 0x4008599c:0x3ffae760 0x40090cad:0x3ffae820 0x400e64b9:0x3ffae850 0x40083871:0x3ffae8a0 0x4008599c:0x3ffae8c0 0x40090cad:0x3ffae980 0x400e64b9:0x3ffae9b0 0x40083871:0x3ffaea00 0x4008599c:0x3ffaea20 0x40090cad:0x3ffaeae0 0x400e64b9:0x3ffaeb10 0x40083871:0x3ffaeb60 0x4008599c:0x3ffaeb80 0x40090cad:0x3ffaec40 0x400e64b9:0x3ffaec70 0x40083871:0x3ffaecc0 0x4008599c:0x3ffaece0 0x40090cad:0x3ffaeda0 0x400e64b9:0x3ffaedd0 0x40083871:0x3ffaee20 0x4008599c:0x3ffaee40 0x40090cad:0x3ffaef00 0x400e64b9:0x3ffaef30 0x40083871:0x3ffaef80 0x4008599c:0x3ffaefa0 0x40090cad:0x3ffaf060 0x400e64b9:0x3ffaf090 0x40083871:0x3ffaf0e0 0x4008599c:0x3ffaf100 0x40090cad:0x3ffaf1c0 0x400e64b9:0x3ffaf1f0 0x40083871:0x3ffaf240 0x4008599c:0x3ffaf260 0x40090cad:0x3ffaf320 0x400e64b9:0x3ffaf350 0x40083871:0x3ffaf3a0 0x4008599c:0x3ffaf3c0 0x40090cad:0x3ffaf480 0x400e64b9:0x3ffaf4b0 0x40083871:0x3ffaf500 0x4008599c:0x3ffaf520 0x40090cad:0x3ffaf5e0 0x400e64b9:0x3ffaf610 0x40083871:0x3ffaf660 0x4008599c:0x3ffaf680 0x40090cad:0x3ffaf740 0x400e64b9:0x3ffaf770 0x40083871:0x3ffaf7c0 0x4008599c:0x3ffaf7e0 0x40090cad:0x3ffaf8a0 0x400e64b9:0x3ffaf8d0 0x40083871:0x3ffaf920 0x4008599c:0x3ffaf940 0x40090cad:0x3ffafa00 0x400e64b9:0x3ffafa30 0x40083871:0x3ffafa80 0x4008599c:0x3ffafaa0 0x40090cad:0x3ffafb60 0x400e64b9:0x3ffafb90 0x40083871:0x3ffafbe0 0x4008599c:0x3ffafc00 0x40090cad:0x3ffafcc0 0x400e64b9:0x3ffafcf0 0x40083871:0x3ffafd40 0x4008599c:0x3ffafd60 0x40090cad:0x3ffafe20 0x400e64b9:0x3ffafe50 0x40083871:0x3ffafea0 0x4008599c:0x3ffafec0 0x40090cad:0x3ffaff80 0x400e64b9:0x3ffaffb0 0x40083871:0x3ffb0000 0x4008599c:0x3ffb0020 0x40090cad:0x3ffb00e0 0x400e64b9:0x3ffb0110 0x40083871:0x3ffb0160 0x4008599c:0x3ffb0180 0x40090cad:0x3ffb0240 0x400e64b9:0x3ffb0270 0x40083871:0x3ffb02c0 0x4008599c:0x3ffb02e0 0x40090cad:0x3ffb03a0  |<-CONTINUES
20:53:41.624 -> 
20:53:41.624 -> 
20:53:41.624 -> 
20:53:41.624 -> 
20:53:41.624 -> ELF file SHA256: 0000000000000000
20:53:41.624 -> 
20:53:41.624 -> Rebooting...

or

20:56:28.592 -> ***ERROR*** A stack overflow in task tiT has been detected.
20:56:28.592 -> 
20:56:28.592 -> 
20:56:28.592 -> Backtrace:0x400837d1:0x3ffb2ee00x4008ca79:0x3ffb2f00 0x4008fca9:0x3ffb2f20 0x4008e77d:0x3ffb2fa0 0x4008cb88:0x3ffb2fd0 0x4008cb38:0x007bf0c8  |<-CORRUPTED
20:56:28.592 -> 
20:56:28.592 -> 
20:56:28.592 -> 
20:56:28.592 -> 
20:56:28.592 -> ELF file SHA256: 0000000000000000
20:56:28.592 -> 
20:56:28.592 -> Rebooting...

Also, if I declare the index_html this way:

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
...

Does it use up a flash read write cycle each time the board boots, or just when the code is uploaded with IDE?

why don't you use memcpy()? (declare fileSize with type size_t)

server.on("/saved-photo", HTTP_GET, [](AsyncWebServerRequest* request) {
  if (fileSize == 0) request->send(200, "text/html", "nothing here yet");
  else {
    AsyncWebServerResponse* response = request->beginChunkedResponse("image/jpg", [](uint8_t* buffer, size_t maxLen, size_t alreadySent) -> size_t {
      if (fileSize - alreadySent >= maxLen) {
        memcpy(buffer, fileArray + alreadySent, maxLen);
        return maxLen;
      } else {  // last chunk and then 0
        memcpy(buffer, fileArray + alreadySent, fileSize - alreadySent);
        return fileSize - alreadySent;
      }
    });
    request->send(response);
  }
});

also you don't seem to send encompassing html

This will be stored in flash, so written once to flash when you upload the code and then it's read from the flash memory directly so you save RAM.

reading from flash does not create a meaningful wear if that's your worry.

the raw literal format lets you type the content without worrying about escaping double quotes, typing \n for new lines etc. it's really just copy/paste from your HTML template

In the index_html? Some unclosed div?

I thought it wasn't working if you addressed memory from PSRAM. Seems to work just fine, so thank you.

Not sure I understand

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.