jpeg: Move component esp_jpeg from BSP and add test.
This commit is contained in:
parent
b901876ea1
commit
26147cf7ac
|
@ -15,6 +15,6 @@ jobs:
|
|||
- name: Upload components to component service
|
||||
uses: espressif/upload-components-ci-action@v1
|
||||
with:
|
||||
directories: "bdc_motor;cbor;jsmn;led_strip;libsodium;pid_ctrl;qrcode;nghttp;sh2lib;expat;esp_encrypted_img;coap;pcap;json_generator;json_parser;usb/usb_host_cdc_acm;usb/usb_host_msc;usb/usb_host_uvc;esp_serial_slave_link"
|
||||
directories: "bdc_motor;cbor;jsmn;led_strip;libsodium;pid_ctrl;qrcode;nghttp;sh2lib;expat;esp_encrypted_img;coap;pcap;json_generator;json_parser;usb/usb_host_cdc_acm;usb/usb_host_msc;usb/usb_host_uvc;esp_serial_slave_link;esp_jpeg"
|
||||
namespace: "espressif"
|
||||
api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
set(sources "jpeg_decoder.c")
|
||||
set(includes "include")
|
||||
|
||||
# Compile only when cannot use ROM code
|
||||
if(NOT CONFIG_JD_USE_ROM)
|
||||
list(APPEND sources "tjpgd/tjpgd.c")
|
||||
list(APPEND includes "tjpgd")
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS ${sources} INCLUDE_DIRS ${includes})
|
|
@ -0,0 +1,69 @@
|
|||
menu "JPEG Decoder"
|
||||
|
||||
config JD_USE_ROM
|
||||
bool "Use TinyJPG Decoder from ROM"
|
||||
depends on (!IDF_TARGET_ESP32S2 && !IDF_TARGET_ESP32C2)
|
||||
default y
|
||||
help
|
||||
By default, Espressif SoCs use TJpg decoder implemented in ROM code.
|
||||
If this feature is disabled, new configuration of TJpg decoder can be used.
|
||||
Refer to REAME.md for more details.
|
||||
|
||||
config JD_SZBUF
|
||||
int "Size of stream input buffer"
|
||||
depends on !JD_USE_ROM
|
||||
default 512
|
||||
|
||||
config JD_FORMAT
|
||||
int
|
||||
depends on !JD_USE_ROM
|
||||
default 0 if JD_FORMAT_RGB888
|
||||
default 1 if JD_FORMAT_RGB565
|
||||
|
||||
choice
|
||||
prompt "Output pixel format"
|
||||
depends on !JD_USE_ROM
|
||||
default JD_FORMAT_RGB888
|
||||
help
|
||||
Output format is selected at runtime.
|
||||
|
||||
config JD_FORMAT_RGB888
|
||||
bool "Support RGB565 and RGB888 output (16-bit/pix and 24-bit/pix)"
|
||||
config JD_FORMAT_RGB565
|
||||
bool "Support RGB565 output (16-bit/pix)"
|
||||
endchoice
|
||||
|
||||
config JD_USE_SCALE
|
||||
bool "Enable descaling"
|
||||
depends on !JD_USE_ROM
|
||||
default y
|
||||
help
|
||||
If scaling is enabled, size of output image can be lowered during decoding.
|
||||
|
||||
config JD_TBLCLIP
|
||||
bool "Use table conversion for saturation arithmetic"
|
||||
depends on !JD_USE_ROM
|
||||
default y
|
||||
help
|
||||
Use table conversion for saturation arithmetic. A bit faster, but increases 1 KB of code size.
|
||||
|
||||
config JD_FASTDECODE
|
||||
int
|
||||
depends on !JD_USE_ROM
|
||||
default 0 if JD_FASTDECODE_BASIC
|
||||
default 1 if JD_FASTDECODE_32BIT
|
||||
default 2 if JD_FASTDECODE_TABLE
|
||||
|
||||
choice
|
||||
prompt "Optimization level"
|
||||
depends on !JD_USE_ROM
|
||||
default JD_FASTDECODE_32BIT
|
||||
|
||||
config JD_FASTDECODE_BASIC
|
||||
bool "Basic optimization. Suitable for 8/16-bit MCUs"
|
||||
config JD_FASTDECODE_32BIT
|
||||
bool "+ 32-bit barrel shifter. Suitable for 32-bit MCUs"
|
||||
config JD_FASTDECODE_TABLE
|
||||
bool "+ Table conversion for huffman decoding (wants 6 << HUFF_BIT bytes of RAM)"
|
||||
endchoice
|
||||
endmenu
|
|
@ -0,0 +1,103 @@
|
|||
# JPEG Decoder: TJpgDec - Tiny JPEG Decompressor
|
||||
|
||||
TJpgDec is a generic JPEG image decompressor that is highly optimized for small embedded systems. It works with very low memory consumption.
|
||||
|
||||
Some microcontrollers have TJpg decoder in ROM, it is used, if there is. [^1] Using ROM code can be disabled in menuconfig.
|
||||
|
||||
[^1]: **_NOTE:_** When the ROM decoder is used, the configuration can't be changed. The configuration is fixed.
|
||||
|
||||
## Features
|
||||
|
||||
**Compilation configuration:**
|
||||
- Size of stream input buffer (default 512)
|
||||
- Output pixel format (default RGB888): RGB888/RGB565
|
||||
- Switches output descaling feature (default enabled)
|
||||
- Use table conversion for saturation arithmetic (default enabled)
|
||||
- Three optimization levels (default basic): 8/16-bit MCUs, 32-bit MCUs, Table conversion for huffman decoding
|
||||
|
||||
**Runtime configuration:**
|
||||
- Pixel Format: RGB888, RGB565
|
||||
- Scaling Ratio: 1/1, 1/2, 1/4 or 1/8 Selectable on Decompression
|
||||
- Allow swap the first and the last byte of the color
|
||||
|
||||
## TJpgDec in ROM
|
||||
|
||||
Some microcontrollers have TJpg decoder in ROM. It is used as default, but it can be disabled in menuconfig. Then there will be used code saved in this component.
|
||||
|
||||
### List of MCUs, which have TJpgDec in ROM
|
||||
- ESP32
|
||||
- ESP32-S3
|
||||
- ESP32-C2
|
||||
- ESP32-C3
|
||||
- ESP32-H2
|
||||
|
||||
### Fixed compilation configuration of the ROM code
|
||||
- Stream input buffer: 512
|
||||
- Output pixel format: RGB888
|
||||
- Descaling feature for output: Enabled
|
||||
- Table for saturation: Enabled
|
||||
- Optimization level: Basic (JD_FASTDECODE = 0)
|
||||
|
||||
### Pros and cons using ROM code
|
||||
|
||||
**Advantages:**
|
||||
- Save 5k of the flash memory (in the same configuration)
|
||||
|
||||
**Disadvantages:**
|
||||
- Cannot be changed compilation configuration
|
||||
- Some configuration can be faster in some cases
|
||||
|
||||
## Speed comparison
|
||||
|
||||
In this table are examples of speed decoding JPEG image with this configuration:
|
||||
* Image size: 320 x 180 px
|
||||
* Output format: RGB565
|
||||
* CPU: ESP32-S3
|
||||
* CPU frequency: 240 MHz
|
||||
* SPI mode: DIO
|
||||
* Internal RAM used
|
||||
* Measured in 1000 retries
|
||||
|
||||
| ROM used | JD_SZBUF | JD_FORMAT | JD_USE_SCALE | JD_TBLCLIP | JD_FASTDECODE | RAM buffer | Flash size | Approx. time |
|
||||
| :------: | :------: | :-------: | :----------: | :--------: | :-----------: | :--------: | :--------: | :----------: |
|
||||
| YES | 512 | RGB888 | 1 | 1 | 0 | 3.1 kB | 0 kB | 52 ms |
|
||||
| NO | 512 | RGB888 | 1 | 1 | 0 | 3.1 kB | 5 kB | 50 ms |
|
||||
| NO | 512 | RGB888 | 1 | 0 | 0 | 3.1 kB | 4 kB | 68 ms |
|
||||
| NO | 512 | RGB888 | 1 | 1 | 1 | 3.1 kB | 5 kB | 50 ms |
|
||||
| NO | 512 | RGB888 | 1 | 0 | 1 | 3.1 kB | 4 kB | 62 ms |
|
||||
| NO | 512 | RGB888 | 1 | 1 | 2 | 65.5 kB | 5.5 kB | 46 ms |
|
||||
| NO | 512 | RGB888 | 1 | 0 | 2 | 65.5 kB | 4.5 kB | 59 ms |
|
||||
| NO | 512 | RGB565 | 1 | 1 | 0 | 5 kB | 5 kB | 60 ms |
|
||||
| NO | 512 | RGB565 | 1 | 1 | 1 | 5 kB | 5 kB | 59 ms |
|
||||
| NO | 512 | RGB565 | 1 | 1 | 2 | 65.5 kB | 5.5 kB | 56 ms |
|
||||
|
||||
## Add to project
|
||||
|
||||
Packages from this repository are uploaded to [Espressif's component service](https://components.espressif.com/).
|
||||
You can add them to your project via `idf.py add-dependancy`, e.g.
|
||||
```
|
||||
idf.py add-dependency esp_jpeg==1.0.0
|
||||
```
|
||||
|
||||
Alternatively, you can create `idf_component.yml`. More is in [Espressif's documentation](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html).
|
||||
|
||||
## Example use
|
||||
|
||||
Here is example of usage. This calling is **blocking**.
|
||||
|
||||
```
|
||||
esp_jpeg_image_cfg_t jpeg_cfg = {
|
||||
.indata = (uint8_t *)jpeg_img_buf,
|
||||
.indata_size = jpeg_img_buf_size,
|
||||
.outbuf = out_img_buf,
|
||||
.outbuf_size = out_img_buf_size,
|
||||
.out_format = JPEG_IMAGE_OUT_FORMAT_RGB565,
|
||||
.out_scale = JPEG_IMAGE_SCALE_0,
|
||||
.flags = {
|
||||
.swap_color_bytes = 1,
|
||||
}
|
||||
};
|
||||
esp_jpeg_image_output_t outimg;
|
||||
|
||||
esp_jpeg_decode(&jpeg_cfg, &outimg);
|
||||
```
|
|
@ -0,0 +1,5 @@
|
|||
version: "1.0.3"
|
||||
description: "JPEG Decoder: TJpgDec"
|
||||
url: https://github.com/espressif/idf-extra-components/tree/master/esp_jpeg/
|
||||
dependencies:
|
||||
idf: ">=4.4"
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "esp_err.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Scale of output image
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
JPEG_IMAGE_SCALE_0 = 0, /*!< No scale */
|
||||
JPEG_IMAGE_SCALE_1_2, /*!< Scale 1:2 */
|
||||
JPEG_IMAGE_SCALE_1_4, /*!< Scale 1:4 */
|
||||
JPEG_IMAGE_SCALE_1_8, /*!< Scale 1:8 */
|
||||
} esp_jpeg_image_scale_t;
|
||||
|
||||
/**
|
||||
* @brief Format of output image
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
JPEG_IMAGE_FORMAT_RGB888 = 0, /*!< Format RGB888 */
|
||||
JPEG_IMAGE_FORMAT_RGB565, /*!< Format RGB565 */
|
||||
} esp_jpeg_image_format_t;
|
||||
|
||||
/**
|
||||
* @brief JPEG Configuration Type
|
||||
*
|
||||
*/
|
||||
typedef struct esp_jpeg_image_cfg_s {
|
||||
uint8_t *indata; /*!< Input JPEG image */
|
||||
uint32_t indata_size; /*!< Size of input image */
|
||||
uint8_t *outbuf; /*!< Output buffer */
|
||||
uint32_t outbuf_size; /*!< Output buffer size */
|
||||
esp_jpeg_image_format_t out_format; /*!< Output image format */
|
||||
esp_jpeg_image_scale_t out_scale; /*!< Output scale */
|
||||
|
||||
struct {
|
||||
uint8_t swap_color_bytes: 1; /*!< Swap first and last color bytes */
|
||||
} flags;
|
||||
|
||||
struct {
|
||||
uint32_t read; /*!< Internal count of read bytes */
|
||||
} priv;
|
||||
} esp_jpeg_image_cfg_t;
|
||||
|
||||
/**
|
||||
* @brief JPEG output info
|
||||
*
|
||||
*/
|
||||
typedef struct esp_jpeg_image_output_s {
|
||||
uint16_t width; /*!< Width of the output image */
|
||||
uint16_t height; /*!< Height of the output image */
|
||||
} esp_jpeg_image_output_t;
|
||||
|
||||
/**
|
||||
* @brief Decode JPEG image
|
||||
*
|
||||
* @note This function is blocking.
|
||||
*
|
||||
* @param cfg: Configuration structure
|
||||
* @param img: Output image info
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK on success
|
||||
* - ESP_ERR_NO_MEM if there is no memory for allocating main structure
|
||||
* - ESP_FAIL if there is an error in decoding JPEG
|
||||
*/
|
||||
esp_err_t esp_jpeg_decode(esp_jpeg_image_cfg_t *cfg, esp_jpeg_image_output_t *img);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,228 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "esp_system.h"
|
||||
#include "esp_rom_caps.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
#include "esp_check.h"
|
||||
#include "jpeg_decoder.h"
|
||||
|
||||
#if CONFIG_JD_USE_ROM
|
||||
/* When supported in ROM, use ROM functions */
|
||||
#if defined(ESP_ROM_HAS_JPEG_DECODE)
|
||||
#include "rom/tjpgd.h"
|
||||
#else
|
||||
#error Using JPEG decoder from ROM is not supported for selected target. Please select external code in menuconfig.
|
||||
#endif
|
||||
|
||||
/* The ROM code of TJPGD is older and has different return type in decode callback */
|
||||
typedef unsigned int jpeg_decode_out_t;
|
||||
#else
|
||||
/* When Tiny JPG Decoder is not in ROM or selected external code */
|
||||
#include "tjpgd.h"
|
||||
|
||||
/* The TJPGD outside the ROM code is newer and has different return type in decode callback */
|
||||
typedef int jpeg_decode_out_t;
|
||||
#endif
|
||||
|
||||
static const char *TAG = "JPEG";
|
||||
|
||||
#define LOBYTE(u16) ((uint8_t)(((uint16_t)(u16)) & 0xff))
|
||||
#define HIBYTE(u16) ((uint8_t)((((uint16_t)(u16))>>8) & 0xff))
|
||||
|
||||
#if defined(JD_FASTDECODE) && (JD_FASTDECODE == 2)
|
||||
#define JPEG_WORK_BUF_SIZE 65472
|
||||
#else
|
||||
#define JPEG_WORK_BUF_SIZE 3100 /* Recommended buffer size; Independent on the size of the image */
|
||||
#endif
|
||||
|
||||
/* If not set JD_FORMAT, it is set in ROM to RGB888, otherwise, it can be set in config */
|
||||
#ifndef JD_FORMAT
|
||||
#define JD_FORMAT 0
|
||||
#endif
|
||||
|
||||
/* Output color bytes from tjpgd (depends on JD_FORMAT) */
|
||||
#if (JD_FORMAT==0)
|
||||
#define ESP_JPEG_COLOR_BYTES 3
|
||||
#elif (JD_FORMAT==1)
|
||||
#define ESP_JPEG_COLOR_BYTES 2
|
||||
#elif (JD_FORMAT==2)
|
||||
#error Grayscale image output format is not supported
|
||||
#define ESP_JPEG_COLOR_BYTES 1
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
* Function definitions
|
||||
*******************************************************************************/
|
||||
static uint8_t jpeg_get_div_by_scale(esp_jpeg_image_scale_t scale);
|
||||
static uint8_t jpeg_get_color_bytes(esp_jpeg_image_format_t format);
|
||||
|
||||
static unsigned int jpeg_decode_in_cb(JDEC *jd, uint8_t *buff, unsigned int nbyte);
|
||||
static jpeg_decode_out_t jpeg_decode_out_cb(JDEC *jd, void *bitmap, JRECT *rect);
|
||||
/*******************************************************************************
|
||||
* Public API functions
|
||||
*******************************************************************************/
|
||||
|
||||
esp_err_t esp_jpeg_decode(esp_jpeg_image_cfg_t *cfg, esp_jpeg_image_output_t *img)
|
||||
{
|
||||
esp_err_t ret = ESP_OK;
|
||||
uint8_t *workbuf = NULL;
|
||||
JRESULT res;
|
||||
JDEC JDEC;
|
||||
|
||||
assert(cfg != NULL);
|
||||
assert(img != NULL);
|
||||
|
||||
workbuf = heap_caps_malloc(JPEG_WORK_BUF_SIZE, MALLOC_CAP_DEFAULT);
|
||||
ESP_GOTO_ON_FALSE(workbuf, ESP_ERR_NO_MEM, err, TAG, "no mem for JPEG work buffer");
|
||||
|
||||
cfg->priv.read = 0;
|
||||
|
||||
/* Prepare image */
|
||||
res = jd_prepare(&JDEC, jpeg_decode_in_cb, workbuf, JPEG_WORK_BUF_SIZE, cfg);
|
||||
ESP_GOTO_ON_FALSE((res == JDR_OK), ESP_FAIL, err, TAG, "Error in preparing JPEG image!");
|
||||
|
||||
uint8_t scale_div = jpeg_get_div_by_scale(cfg->out_scale);
|
||||
uint8_t out_color_bytes = jpeg_get_color_bytes(cfg->out_format);
|
||||
|
||||
/* Size of output image */
|
||||
uint32_t outsize = (JDEC.height / scale_div) * (JDEC.width / scale_div) * out_color_bytes;
|
||||
ESP_GOTO_ON_FALSE((outsize <= cfg->outbuf_size), ESP_ERR_NO_MEM, err, TAG, "Not enough size in output buffer!");
|
||||
|
||||
/* Size of output image */
|
||||
img->height = JDEC.height / scale_div;
|
||||
img->width = JDEC.width / scale_div;
|
||||
|
||||
/* Decode JPEG */
|
||||
res = jd_decomp(&JDEC, jpeg_decode_out_cb, cfg->out_scale);
|
||||
ESP_GOTO_ON_FALSE((res == JDR_OK), ESP_FAIL, err, TAG, "Error in decoding JPEG image!");
|
||||
|
||||
err:
|
||||
if (workbuf) {
|
||||
free(workbuf);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Private API functions
|
||||
*******************************************************************************/
|
||||
|
||||
static unsigned int jpeg_decode_in_cb(JDEC *dec, uint8_t *buff, unsigned int nbyte)
|
||||
{
|
||||
assert(dec != NULL);
|
||||
|
||||
uint32_t to_read = nbyte;
|
||||
esp_jpeg_image_cfg_t *cfg = (esp_jpeg_image_cfg_t *)dec->device;
|
||||
assert(cfg != NULL);
|
||||
|
||||
if (buff) {
|
||||
if (cfg->priv.read + to_read > cfg->indata_size) {
|
||||
to_read = cfg->indata_size - cfg->priv.read;
|
||||
}
|
||||
|
||||
/* Copy data from JPEG image */
|
||||
memcpy(buff, &cfg->indata[cfg->priv.read], to_read);
|
||||
cfg->priv.read += to_read;
|
||||
} else if (buff == NULL) {
|
||||
/* Skip data */
|
||||
cfg->priv.read += to_read;
|
||||
}
|
||||
|
||||
return to_read;
|
||||
}
|
||||
|
||||
static jpeg_decode_out_t jpeg_decode_out_cb(JDEC *dec, void *bitmap, JRECT *rect)
|
||||
{
|
||||
uint16_t color = 0;
|
||||
assert(dec != NULL);
|
||||
|
||||
esp_jpeg_image_cfg_t *cfg = (esp_jpeg_image_cfg_t *)dec->device;
|
||||
assert(cfg != NULL);
|
||||
assert(bitmap != NULL);
|
||||
assert(rect != NULL);
|
||||
|
||||
uint8_t scale_div = jpeg_get_div_by_scale(cfg->out_scale);
|
||||
uint8_t out_color_bytes = jpeg_get_color_bytes(cfg->out_format);
|
||||
|
||||
/* Copy decoded image data to output buffer */
|
||||
uint8_t *in = (uint8_t *)bitmap;
|
||||
uint32_t line = dec->width / scale_div;
|
||||
uint8_t *dst = (uint8_t *)cfg->outbuf;
|
||||
for (int y = rect->top; y <= rect->bottom; y++) {
|
||||
for (int x = rect->left; x <= rect->right; x++) {
|
||||
if ( (JD_FORMAT == 0 && cfg->out_format == JPEG_IMAGE_FORMAT_RGB888) ||
|
||||
(JD_FORMAT == 1 && cfg->out_format == JPEG_IMAGE_FORMAT_RGB565) ) {
|
||||
/* Output image format is same as set in TJPGD */
|
||||
for (int b = 0; b < ESP_JPEG_COLOR_BYTES; b++) {
|
||||
if (JD_FORMAT == 1 && cfg->flags.swap_color_bytes) {
|
||||
dst[(y * line * out_color_bytes) + x * out_color_bytes + b] = in[out_color_bytes - b - 1];
|
||||
} else {
|
||||
dst[(y * line * out_color_bytes) + x * out_color_bytes + b] = in[b];
|
||||
}
|
||||
}
|
||||
} else if (JD_FORMAT == 0 && cfg->out_format == JPEG_IMAGE_FORMAT_RGB565) {
|
||||
/* Output image format is not same as set in TJPGD */
|
||||
/* We need to convert the 3 bytes in `in` to a rgb565 value */
|
||||
color = ((in[0] & 0xF8) << 8);
|
||||
color |= ((in[1] & 0xFC) << 3);
|
||||
color |= (in[2] >> 3);
|
||||
|
||||
if (cfg->flags.swap_color_bytes) {
|
||||
dst[(y * line * out_color_bytes) + (x * out_color_bytes)] = HIBYTE(color);
|
||||
dst[(y * line * out_color_bytes) + (x * out_color_bytes) + 1] = LOBYTE(color);
|
||||
} else {
|
||||
dst[(y * line * out_color_bytes) + (x * out_color_bytes) + 1] = HIBYTE(color);
|
||||
dst[(y * line * out_color_bytes) + (x * out_color_bytes)] = LOBYTE(color);
|
||||
}
|
||||
} else {
|
||||
ESP_LOGE(TAG, "Selected output format is not supported!");
|
||||
assert(0);
|
||||
}
|
||||
in += ESP_JPEG_COLOR_BYTES;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static uint8_t jpeg_get_div_by_scale(esp_jpeg_image_scale_t scale)
|
||||
{
|
||||
switch (scale) {
|
||||
/* Not scaled */
|
||||
case JPEG_IMAGE_SCALE_0:
|
||||
return 1;
|
||||
/* Scaled 1:2 */
|
||||
case JPEG_IMAGE_SCALE_1_2:
|
||||
return 2;
|
||||
/* Scaled 1:4 */
|
||||
case JPEG_IMAGE_SCALE_1_4:
|
||||
return 4;
|
||||
/* Scaled 1:8 */
|
||||
case JPEG_IMAGE_SCALE_1_8:
|
||||
return 8;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static uint8_t jpeg_get_color_bytes(esp_jpeg_image_format_t format)
|
||||
{
|
||||
switch (format) {
|
||||
/* RGB888 (24-bit/pix) */
|
||||
case JPEG_IMAGE_FORMAT_RGB888:
|
||||
return 3;
|
||||
/* RGB565 (16-bit/pix) */
|
||||
case JPEG_IMAGE_FORMAT_RGB565:
|
||||
return 2;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,4 @@
|
|||
idf_component_register(SRCS "tjpgd_test.c"
|
||||
INCLUDE_DIRS "."
|
||||
REQUIRES "unity")
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 7.4 KiB |
|
@ -0,0 +1,634 @@
|
|||
unsigned char logo_jpg[] = {
|
||||
0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01,
|
||||
0x01, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0xff, 0xe2, 0x0c, 0x58,
|
||||
0x49, 0x43, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x00,
|
||||
0x01, 0x01, 0x00, 0x00, 0x0c, 0x48, 0x4c, 0x69, 0x6e, 0x6f, 0x02, 0x10,
|
||||
0x00, 0x00, 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59,
|
||||
0x5a, 0x20, 0x07, 0xce, 0x00, 0x02, 0x00, 0x09, 0x00, 0x06, 0x00, 0x31,
|
||||
0x00, 0x00, 0x61, 0x63, 0x73, 0x70, 0x4d, 0x53, 0x46, 0x54, 0x00, 0x00,
|
||||
0x00, 0x00, 0x49, 0x45, 0x43, 0x20, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xf6, 0xd6, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x2d, 0x48, 0x50,
|
||||
0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x63, 0x70, 0x72, 0x74, 0x00, 0x00, 0x01, 0x50, 0x00, 0x00,
|
||||
0x00, 0x33, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x01, 0x84, 0x00, 0x00,
|
||||
0x00, 0x6c, 0x77, 0x74, 0x70, 0x74, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x14, 0x62, 0x6b, 0x70, 0x74, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00,
|
||||
0x00, 0x14, 0x72, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00,
|
||||
0x00, 0x14, 0x67, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x2c, 0x00, 0x00,
|
||||
0x00, 0x14, 0x62, 0x58, 0x59, 0x5a, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00,
|
||||
0x00, 0x14, 0x64, 0x6d, 0x6e, 0x64, 0x00, 0x00, 0x02, 0x54, 0x00, 0x00,
|
||||
0x00, 0x70, 0x64, 0x6d, 0x64, 0x64, 0x00, 0x00, 0x02, 0xc4, 0x00, 0x00,
|
||||
0x00, 0x88, 0x76, 0x75, 0x65, 0x64, 0x00, 0x00, 0x03, 0x4c, 0x00, 0x00,
|
||||
0x00, 0x86, 0x76, 0x69, 0x65, 0x77, 0x00, 0x00, 0x03, 0xd4, 0x00, 0x00,
|
||||
0x00, 0x24, 0x6c, 0x75, 0x6d, 0x69, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00,
|
||||
0x00, 0x14, 0x6d, 0x65, 0x61, 0x73, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00,
|
||||
0x00, 0x24, 0x74, 0x65, 0x63, 0x68, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00,
|
||||
0x00, 0x0c, 0x72, 0x54, 0x52, 0x43, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00,
|
||||
0x08, 0x0c, 0x67, 0x54, 0x52, 0x43, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00,
|
||||
0x08, 0x0c, 0x62, 0x54, 0x52, 0x43, 0x00, 0x00, 0x04, 0x3c, 0x00, 0x00,
|
||||
0x08, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x00, 0x43, 0x6f,
|
||||
0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20,
|
||||
0x31, 0x39, 0x39, 0x38, 0x20, 0x48, 0x65, 0x77, 0x6c, 0x65, 0x74, 0x74,
|
||||
0x2d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x72, 0x64, 0x20, 0x43, 0x6f, 0x6d,
|
||||
0x70, 0x61, 0x6e, 0x79, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x73, 0x52, 0x47, 0x42, 0x20, 0x49,
|
||||
0x45, 0x43, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x73,
|
||||
0x52, 0x47, 0x42, 0x20, 0x49, 0x45, 0x43, 0x36, 0x31, 0x39, 0x36, 0x36,
|
||||
0x2d, 0x32, 0x2e, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xf3, 0x51, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
|
||||
0x16, 0xcc, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x59,
|
||||
0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xa2, 0x00, 0x00,
|
||||
0x38, 0xf5, 0x00, 0x00, 0x03, 0x90, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x62, 0x99, 0x00, 0x00, 0xb7, 0x85, 0x00, 0x00,
|
||||
0x18, 0xda, 0x58, 0x59, 0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x24, 0xa0, 0x00, 0x00, 0x0f, 0x84, 0x00, 0x00, 0xb6, 0xcf, 0x64, 0x65,
|
||||
0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x49, 0x45,
|
||||
0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
|
||||
0x2e, 0x69, 0x65, 0x63, 0x2e, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x49, 0x45, 0x43, 0x20, 0x68,
|
||||
0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x69, 0x65,
|
||||
0x63, 0x2e, 0x63, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x2e, 0x49, 0x45, 0x43, 0x20, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d,
|
||||
0x32, 0x2e, 0x31, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20,
|
||||
0x52, 0x47, 0x42, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x73,
|
||||
0x70, 0x61, 0x63, 0x65, 0x20, 0x2d, 0x20, 0x73, 0x52, 0x47, 0x42, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x49,
|
||||
0x45, 0x43, 0x20, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31,
|
||||
0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x52, 0x47, 0x42,
|
||||
0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x75, 0x72, 0x20, 0x73, 0x70, 0x61, 0x63,
|
||||
0x65, 0x20, 0x2d, 0x20, 0x73, 0x52, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x63, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
|
||||
0x6e, 0x63, 0x65, 0x20, 0x56, 0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x20,
|
||||
0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e,
|
||||
0x20, 0x49, 0x45, 0x43, 0x36, 0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e,
|
||||
0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x2c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x56,
|
||||
0x69, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x43, 0x6f, 0x6e, 0x64, 0x69,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x49, 0x45, 0x43, 0x36,
|
||||
0x31, 0x39, 0x36, 0x36, 0x2d, 0x32, 0x2e, 0x31, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x69,
|
||||
0x65, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xa4, 0xfe, 0x00, 0x14,
|
||||
0x5f, 0x2e, 0x00, 0x10, 0xcf, 0x14, 0x00, 0x03, 0xed, 0xcc, 0x00, 0x04,
|
||||
0x13, 0x0b, 0x00, 0x03, 0x5c, 0x9e, 0x00, 0x00, 0x00, 0x01, 0x58, 0x59,
|
||||
0x5a, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x09, 0x56, 0x00, 0x50,
|
||||
0x00, 0x00, 0x00, 0x57, 0x1f, 0xe7, 0x6d, 0x65, 0x61, 0x73, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x8f, 0x00, 0x00, 0x00, 0x02, 0x73, 0x69, 0x67, 0x20, 0x00, 0x00,
|
||||
0x00, 0x00, 0x43, 0x52, 0x54, 0x20, 0x63, 0x75, 0x72, 0x76, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a,
|
||||
0x00, 0x0f, 0x00, 0x14, 0x00, 0x19, 0x00, 0x1e, 0x00, 0x23, 0x00, 0x28,
|
||||
0x00, 0x2d, 0x00, 0x32, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x40, 0x00, 0x45,
|
||||
0x00, 0x4a, 0x00, 0x4f, 0x00, 0x54, 0x00, 0x59, 0x00, 0x5e, 0x00, 0x63,
|
||||
0x00, 0x68, 0x00, 0x6d, 0x00, 0x72, 0x00, 0x77, 0x00, 0x7c, 0x00, 0x81,
|
||||
0x00, 0x86, 0x00, 0x8b, 0x00, 0x90, 0x00, 0x95, 0x00, 0x9a, 0x00, 0x9f,
|
||||
0x00, 0xa4, 0x00, 0xa9, 0x00, 0xae, 0x00, 0xb2, 0x00, 0xb7, 0x00, 0xbc,
|
||||
0x00, 0xc1, 0x00, 0xc6, 0x00, 0xcb, 0x00, 0xd0, 0x00, 0xd5, 0x00, 0xdb,
|
||||
0x00, 0xe0, 0x00, 0xe5, 0x00, 0xeb, 0x00, 0xf0, 0x00, 0xf6, 0x00, 0xfb,
|
||||
0x01, 0x01, 0x01, 0x07, 0x01, 0x0d, 0x01, 0x13, 0x01, 0x19, 0x01, 0x1f,
|
||||
0x01, 0x25, 0x01, 0x2b, 0x01, 0x32, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x45,
|
||||
0x01, 0x4c, 0x01, 0x52, 0x01, 0x59, 0x01, 0x60, 0x01, 0x67, 0x01, 0x6e,
|
||||
0x01, 0x75, 0x01, 0x7c, 0x01, 0x83, 0x01, 0x8b, 0x01, 0x92, 0x01, 0x9a,
|
||||
0x01, 0xa1, 0x01, 0xa9, 0x01, 0xb1, 0x01, 0xb9, 0x01, 0xc1, 0x01, 0xc9,
|
||||
0x01, 0xd1, 0x01, 0xd9, 0x01, 0xe1, 0x01, 0xe9, 0x01, 0xf2, 0x01, 0xfa,
|
||||
0x02, 0x03, 0x02, 0x0c, 0x02, 0x14, 0x02, 0x1d, 0x02, 0x26, 0x02, 0x2f,
|
||||
0x02, 0x38, 0x02, 0x41, 0x02, 0x4b, 0x02, 0x54, 0x02, 0x5d, 0x02, 0x67,
|
||||
0x02, 0x71, 0x02, 0x7a, 0x02, 0x84, 0x02, 0x8e, 0x02, 0x98, 0x02, 0xa2,
|
||||
0x02, 0xac, 0x02, 0xb6, 0x02, 0xc1, 0x02, 0xcb, 0x02, 0xd5, 0x02, 0xe0,
|
||||
0x02, 0xeb, 0x02, 0xf5, 0x03, 0x00, 0x03, 0x0b, 0x03, 0x16, 0x03, 0x21,
|
||||
0x03, 0x2d, 0x03, 0x38, 0x03, 0x43, 0x03, 0x4f, 0x03, 0x5a, 0x03, 0x66,
|
||||
0x03, 0x72, 0x03, 0x7e, 0x03, 0x8a, 0x03, 0x96, 0x03, 0xa2, 0x03, 0xae,
|
||||
0x03, 0xba, 0x03, 0xc7, 0x03, 0xd3, 0x03, 0xe0, 0x03, 0xec, 0x03, 0xf9,
|
||||
0x04, 0x06, 0x04, 0x13, 0x04, 0x20, 0x04, 0x2d, 0x04, 0x3b, 0x04, 0x48,
|
||||
0x04, 0x55, 0x04, 0x63, 0x04, 0x71, 0x04, 0x7e, 0x04, 0x8c, 0x04, 0x9a,
|
||||
0x04, 0xa8, 0x04, 0xb6, 0x04, 0xc4, 0x04, 0xd3, 0x04, 0xe1, 0x04, 0xf0,
|
||||
0x04, 0xfe, 0x05, 0x0d, 0x05, 0x1c, 0x05, 0x2b, 0x05, 0x3a, 0x05, 0x49,
|
||||
0x05, 0x58, 0x05, 0x67, 0x05, 0x77, 0x05, 0x86, 0x05, 0x96, 0x05, 0xa6,
|
||||
0x05, 0xb5, 0x05, 0xc5, 0x05, 0xd5, 0x05, 0xe5, 0x05, 0xf6, 0x06, 0x06,
|
||||
0x06, 0x16, 0x06, 0x27, 0x06, 0x37, 0x06, 0x48, 0x06, 0x59, 0x06, 0x6a,
|
||||
0x06, 0x7b, 0x06, 0x8c, 0x06, 0x9d, 0x06, 0xaf, 0x06, 0xc0, 0x06, 0xd1,
|
||||
0x06, 0xe3, 0x06, 0xf5, 0x07, 0x07, 0x07, 0x19, 0x07, 0x2b, 0x07, 0x3d,
|
||||
0x07, 0x4f, 0x07, 0x61, 0x07, 0x74, 0x07, 0x86, 0x07, 0x99, 0x07, 0xac,
|
||||
0x07, 0xbf, 0x07, 0xd2, 0x07, 0xe5, 0x07, 0xf8, 0x08, 0x0b, 0x08, 0x1f,
|
||||
0x08, 0x32, 0x08, 0x46, 0x08, 0x5a, 0x08, 0x6e, 0x08, 0x82, 0x08, 0x96,
|
||||
0x08, 0xaa, 0x08, 0xbe, 0x08, 0xd2, 0x08, 0xe7, 0x08, 0xfb, 0x09, 0x10,
|
||||
0x09, 0x25, 0x09, 0x3a, 0x09, 0x4f, 0x09, 0x64, 0x09, 0x79, 0x09, 0x8f,
|
||||
0x09, 0xa4, 0x09, 0xba, 0x09, 0xcf, 0x09, 0xe5, 0x09, 0xfb, 0x0a, 0x11,
|
||||
0x0a, 0x27, 0x0a, 0x3d, 0x0a, 0x54, 0x0a, 0x6a, 0x0a, 0x81, 0x0a, 0x98,
|
||||
0x0a, 0xae, 0x0a, 0xc5, 0x0a, 0xdc, 0x0a, 0xf3, 0x0b, 0x0b, 0x0b, 0x22,
|
||||
0x0b, 0x39, 0x0b, 0x51, 0x0b, 0x69, 0x0b, 0x80, 0x0b, 0x98, 0x0b, 0xb0,
|
||||
0x0b, 0xc8, 0x0b, 0xe1, 0x0b, 0xf9, 0x0c, 0x12, 0x0c, 0x2a, 0x0c, 0x43,
|
||||
0x0c, 0x5c, 0x0c, 0x75, 0x0c, 0x8e, 0x0c, 0xa7, 0x0c, 0xc0, 0x0c, 0xd9,
|
||||
0x0c, 0xf3, 0x0d, 0x0d, 0x0d, 0x26, 0x0d, 0x40, 0x0d, 0x5a, 0x0d, 0x74,
|
||||
0x0d, 0x8e, 0x0d, 0xa9, 0x0d, 0xc3, 0x0d, 0xde, 0x0d, 0xf8, 0x0e, 0x13,
|
||||
0x0e, 0x2e, 0x0e, 0x49, 0x0e, 0x64, 0x0e, 0x7f, 0x0e, 0x9b, 0x0e, 0xb6,
|
||||
0x0e, 0xd2, 0x0e, 0xee, 0x0f, 0x09, 0x0f, 0x25, 0x0f, 0x41, 0x0f, 0x5e,
|
||||
0x0f, 0x7a, 0x0f, 0x96, 0x0f, 0xb3, 0x0f, 0xcf, 0x0f, 0xec, 0x10, 0x09,
|
||||
0x10, 0x26, 0x10, 0x43, 0x10, 0x61, 0x10, 0x7e, 0x10, 0x9b, 0x10, 0xb9,
|
||||
0x10, 0xd7, 0x10, 0xf5, 0x11, 0x13, 0x11, 0x31, 0x11, 0x4f, 0x11, 0x6d,
|
||||
0x11, 0x8c, 0x11, 0xaa, 0x11, 0xc9, 0x11, 0xe8, 0x12, 0x07, 0x12, 0x26,
|
||||
0x12, 0x45, 0x12, 0x64, 0x12, 0x84, 0x12, 0xa3, 0x12, 0xc3, 0x12, 0xe3,
|
||||
0x13, 0x03, 0x13, 0x23, 0x13, 0x43, 0x13, 0x63, 0x13, 0x83, 0x13, 0xa4,
|
||||
0x13, 0xc5, 0x13, 0xe5, 0x14, 0x06, 0x14, 0x27, 0x14, 0x49, 0x14, 0x6a,
|
||||
0x14, 0x8b, 0x14, 0xad, 0x14, 0xce, 0x14, 0xf0, 0x15, 0x12, 0x15, 0x34,
|
||||
0x15, 0x56, 0x15, 0x78, 0x15, 0x9b, 0x15, 0xbd, 0x15, 0xe0, 0x16, 0x03,
|
||||
0x16, 0x26, 0x16, 0x49, 0x16, 0x6c, 0x16, 0x8f, 0x16, 0xb2, 0x16, 0xd6,
|
||||
0x16, 0xfa, 0x17, 0x1d, 0x17, 0x41, 0x17, 0x65, 0x17, 0x89, 0x17, 0xae,
|
||||
0x17, 0xd2, 0x17, 0xf7, 0x18, 0x1b, 0x18, 0x40, 0x18, 0x65, 0x18, 0x8a,
|
||||
0x18, 0xaf, 0x18, 0xd5, 0x18, 0xfa, 0x19, 0x20, 0x19, 0x45, 0x19, 0x6b,
|
||||
0x19, 0x91, 0x19, 0xb7, 0x19, 0xdd, 0x1a, 0x04, 0x1a, 0x2a, 0x1a, 0x51,
|
||||
0x1a, 0x77, 0x1a, 0x9e, 0x1a, 0xc5, 0x1a, 0xec, 0x1b, 0x14, 0x1b, 0x3b,
|
||||
0x1b, 0x63, 0x1b, 0x8a, 0x1b, 0xb2, 0x1b, 0xda, 0x1c, 0x02, 0x1c, 0x2a,
|
||||
0x1c, 0x52, 0x1c, 0x7b, 0x1c, 0xa3, 0x1c, 0xcc, 0x1c, 0xf5, 0x1d, 0x1e,
|
||||
0x1d, 0x47, 0x1d, 0x70, 0x1d, 0x99, 0x1d, 0xc3, 0x1d, 0xec, 0x1e, 0x16,
|
||||
0x1e, 0x40, 0x1e, 0x6a, 0x1e, 0x94, 0x1e, 0xbe, 0x1e, 0xe9, 0x1f, 0x13,
|
||||
0x1f, 0x3e, 0x1f, 0x69, 0x1f, 0x94, 0x1f, 0xbf, 0x1f, 0xea, 0x20, 0x15,
|
||||
0x20, 0x41, 0x20, 0x6c, 0x20, 0x98, 0x20, 0xc4, 0x20, 0xf0, 0x21, 0x1c,
|
||||
0x21, 0x48, 0x21, 0x75, 0x21, 0xa1, 0x21, 0xce, 0x21, 0xfb, 0x22, 0x27,
|
||||
0x22, 0x55, 0x22, 0x82, 0x22, 0xaf, 0x22, 0xdd, 0x23, 0x0a, 0x23, 0x38,
|
||||
0x23, 0x66, 0x23, 0x94, 0x23, 0xc2, 0x23, 0xf0, 0x24, 0x1f, 0x24, 0x4d,
|
||||
0x24, 0x7c, 0x24, 0xab, 0x24, 0xda, 0x25, 0x09, 0x25, 0x38, 0x25, 0x68,
|
||||
0x25, 0x97, 0x25, 0xc7, 0x25, 0xf7, 0x26, 0x27, 0x26, 0x57, 0x26, 0x87,
|
||||
0x26, 0xb7, 0x26, 0xe8, 0x27, 0x18, 0x27, 0x49, 0x27, 0x7a, 0x27, 0xab,
|
||||
0x27, 0xdc, 0x28, 0x0d, 0x28, 0x3f, 0x28, 0x71, 0x28, 0xa2, 0x28, 0xd4,
|
||||
0x29, 0x06, 0x29, 0x38, 0x29, 0x6b, 0x29, 0x9d, 0x29, 0xd0, 0x2a, 0x02,
|
||||
0x2a, 0x35, 0x2a, 0x68, 0x2a, 0x9b, 0x2a, 0xcf, 0x2b, 0x02, 0x2b, 0x36,
|
||||
0x2b, 0x69, 0x2b, 0x9d, 0x2b, 0xd1, 0x2c, 0x05, 0x2c, 0x39, 0x2c, 0x6e,
|
||||
0x2c, 0xa2, 0x2c, 0xd7, 0x2d, 0x0c, 0x2d, 0x41, 0x2d, 0x76, 0x2d, 0xab,
|
||||
0x2d, 0xe1, 0x2e, 0x16, 0x2e, 0x4c, 0x2e, 0x82, 0x2e, 0xb7, 0x2e, 0xee,
|
||||
0x2f, 0x24, 0x2f, 0x5a, 0x2f, 0x91, 0x2f, 0xc7, 0x2f, 0xfe, 0x30, 0x35,
|
||||
0x30, 0x6c, 0x30, 0xa4, 0x30, 0xdb, 0x31, 0x12, 0x31, 0x4a, 0x31, 0x82,
|
||||
0x31, 0xba, 0x31, 0xf2, 0x32, 0x2a, 0x32, 0x63, 0x32, 0x9b, 0x32, 0xd4,
|
||||
0x33, 0x0d, 0x33, 0x46, 0x33, 0x7f, 0x33, 0xb8, 0x33, 0xf1, 0x34, 0x2b,
|
||||
0x34, 0x65, 0x34, 0x9e, 0x34, 0xd8, 0x35, 0x13, 0x35, 0x4d, 0x35, 0x87,
|
||||
0x35, 0xc2, 0x35, 0xfd, 0x36, 0x37, 0x36, 0x72, 0x36, 0xae, 0x36, 0xe9,
|
||||
0x37, 0x24, 0x37, 0x60, 0x37, 0x9c, 0x37, 0xd7, 0x38, 0x14, 0x38, 0x50,
|
||||
0x38, 0x8c, 0x38, 0xc8, 0x39, 0x05, 0x39, 0x42, 0x39, 0x7f, 0x39, 0xbc,
|
||||
0x39, 0xf9, 0x3a, 0x36, 0x3a, 0x74, 0x3a, 0xb2, 0x3a, 0xef, 0x3b, 0x2d,
|
||||
0x3b, 0x6b, 0x3b, 0xaa, 0x3b, 0xe8, 0x3c, 0x27, 0x3c, 0x65, 0x3c, 0xa4,
|
||||
0x3c, 0xe3, 0x3d, 0x22, 0x3d, 0x61, 0x3d, 0xa1, 0x3d, 0xe0, 0x3e, 0x20,
|
||||
0x3e, 0x60, 0x3e, 0xa0, 0x3e, 0xe0, 0x3f, 0x21, 0x3f, 0x61, 0x3f, 0xa2,
|
||||
0x3f, 0xe2, 0x40, 0x23, 0x40, 0x64, 0x40, 0xa6, 0x40, 0xe7, 0x41, 0x29,
|
||||
0x41, 0x6a, 0x41, 0xac, 0x41, 0xee, 0x42, 0x30, 0x42, 0x72, 0x42, 0xb5,
|
||||
0x42, 0xf7, 0x43, 0x3a, 0x43, 0x7d, 0x43, 0xc0, 0x44, 0x03, 0x44, 0x47,
|
||||
0x44, 0x8a, 0x44, 0xce, 0x45, 0x12, 0x45, 0x55, 0x45, 0x9a, 0x45, 0xde,
|
||||
0x46, 0x22, 0x46, 0x67, 0x46, 0xab, 0x46, 0xf0, 0x47, 0x35, 0x47, 0x7b,
|
||||
0x47, 0xc0, 0x48, 0x05, 0x48, 0x4b, 0x48, 0x91, 0x48, 0xd7, 0x49, 0x1d,
|
||||
0x49, 0x63, 0x49, 0xa9, 0x49, 0xf0, 0x4a, 0x37, 0x4a, 0x7d, 0x4a, 0xc4,
|
||||
0x4b, 0x0c, 0x4b, 0x53, 0x4b, 0x9a, 0x4b, 0xe2, 0x4c, 0x2a, 0x4c, 0x72,
|
||||
0x4c, 0xba, 0x4d, 0x02, 0x4d, 0x4a, 0x4d, 0x93, 0x4d, 0xdc, 0x4e, 0x25,
|
||||
0x4e, 0x6e, 0x4e, 0xb7, 0x4f, 0x00, 0x4f, 0x49, 0x4f, 0x93, 0x4f, 0xdd,
|
||||
0x50, 0x27, 0x50, 0x71, 0x50, 0xbb, 0x51, 0x06, 0x51, 0x50, 0x51, 0x9b,
|
||||
0x51, 0xe6, 0x52, 0x31, 0x52, 0x7c, 0x52, 0xc7, 0x53, 0x13, 0x53, 0x5f,
|
||||
0x53, 0xaa, 0x53, 0xf6, 0x54, 0x42, 0x54, 0x8f, 0x54, 0xdb, 0x55, 0x28,
|
||||
0x55, 0x75, 0x55, 0xc2, 0x56, 0x0f, 0x56, 0x5c, 0x56, 0xa9, 0x56, 0xf7,
|
||||
0x57, 0x44, 0x57, 0x92, 0x57, 0xe0, 0x58, 0x2f, 0x58, 0x7d, 0x58, 0xcb,
|
||||
0x59, 0x1a, 0x59, 0x69, 0x59, 0xb8, 0x5a, 0x07, 0x5a, 0x56, 0x5a, 0xa6,
|
||||
0x5a, 0xf5, 0x5b, 0x45, 0x5b, 0x95, 0x5b, 0xe5, 0x5c, 0x35, 0x5c, 0x86,
|
||||
0x5c, 0xd6, 0x5d, 0x27, 0x5d, 0x78, 0x5d, 0xc9, 0x5e, 0x1a, 0x5e, 0x6c,
|
||||
0x5e, 0xbd, 0x5f, 0x0f, 0x5f, 0x61, 0x5f, 0xb3, 0x60, 0x05, 0x60, 0x57,
|
||||
0x60, 0xaa, 0x60, 0xfc, 0x61, 0x4f, 0x61, 0xa2, 0x61, 0xf5, 0x62, 0x49,
|
||||
0x62, 0x9c, 0x62, 0xf0, 0x63, 0x43, 0x63, 0x97, 0x63, 0xeb, 0x64, 0x40,
|
||||
0x64, 0x94, 0x64, 0xe9, 0x65, 0x3d, 0x65, 0x92, 0x65, 0xe7, 0x66, 0x3d,
|
||||
0x66, 0x92, 0x66, 0xe8, 0x67, 0x3d, 0x67, 0x93, 0x67, 0xe9, 0x68, 0x3f,
|
||||
0x68, 0x96, 0x68, 0xec, 0x69, 0x43, 0x69, 0x9a, 0x69, 0xf1, 0x6a, 0x48,
|
||||
0x6a, 0x9f, 0x6a, 0xf7, 0x6b, 0x4f, 0x6b, 0xa7, 0x6b, 0xff, 0x6c, 0x57,
|
||||
0x6c, 0xaf, 0x6d, 0x08, 0x6d, 0x60, 0x6d, 0xb9, 0x6e, 0x12, 0x6e, 0x6b,
|
||||
0x6e, 0xc4, 0x6f, 0x1e, 0x6f, 0x78, 0x6f, 0xd1, 0x70, 0x2b, 0x70, 0x86,
|
||||
0x70, 0xe0, 0x71, 0x3a, 0x71, 0x95, 0x71, 0xf0, 0x72, 0x4b, 0x72, 0xa6,
|
||||
0x73, 0x01, 0x73, 0x5d, 0x73, 0xb8, 0x74, 0x14, 0x74, 0x70, 0x74, 0xcc,
|
||||
0x75, 0x28, 0x75, 0x85, 0x75, 0xe1, 0x76, 0x3e, 0x76, 0x9b, 0x76, 0xf8,
|
||||
0x77, 0x56, 0x77, 0xb3, 0x78, 0x11, 0x78, 0x6e, 0x78, 0xcc, 0x79, 0x2a,
|
||||
0x79, 0x89, 0x79, 0xe7, 0x7a, 0x46, 0x7a, 0xa5, 0x7b, 0x04, 0x7b, 0x63,
|
||||
0x7b, 0xc2, 0x7c, 0x21, 0x7c, 0x81, 0x7c, 0xe1, 0x7d, 0x41, 0x7d, 0xa1,
|
||||
0x7e, 0x01, 0x7e, 0x62, 0x7e, 0xc2, 0x7f, 0x23, 0x7f, 0x84, 0x7f, 0xe5,
|
||||
0x80, 0x47, 0x80, 0xa8, 0x81, 0x0a, 0x81, 0x6b, 0x81, 0xcd, 0x82, 0x30,
|
||||
0x82, 0x92, 0x82, 0xf4, 0x83, 0x57, 0x83, 0xba, 0x84, 0x1d, 0x84, 0x80,
|
||||
0x84, 0xe3, 0x85, 0x47, 0x85, 0xab, 0x86, 0x0e, 0x86, 0x72, 0x86, 0xd7,
|
||||
0x87, 0x3b, 0x87, 0x9f, 0x88, 0x04, 0x88, 0x69, 0x88, 0xce, 0x89, 0x33,
|
||||
0x89, 0x99, 0x89, 0xfe, 0x8a, 0x64, 0x8a, 0xca, 0x8b, 0x30, 0x8b, 0x96,
|
||||
0x8b, 0xfc, 0x8c, 0x63, 0x8c, 0xca, 0x8d, 0x31, 0x8d, 0x98, 0x8d, 0xff,
|
||||
0x8e, 0x66, 0x8e, 0xce, 0x8f, 0x36, 0x8f, 0x9e, 0x90, 0x06, 0x90, 0x6e,
|
||||
0x90, 0xd6, 0x91, 0x3f, 0x91, 0xa8, 0x92, 0x11, 0x92, 0x7a, 0x92, 0xe3,
|
||||
0x93, 0x4d, 0x93, 0xb6, 0x94, 0x20, 0x94, 0x8a, 0x94, 0xf4, 0x95, 0x5f,
|
||||
0x95, 0xc9, 0x96, 0x34, 0x96, 0x9f, 0x97, 0x0a, 0x97, 0x75, 0x97, 0xe0,
|
||||
0x98, 0x4c, 0x98, 0xb8, 0x99, 0x24, 0x99, 0x90, 0x99, 0xfc, 0x9a, 0x68,
|
||||
0x9a, 0xd5, 0x9b, 0x42, 0x9b, 0xaf, 0x9c, 0x1c, 0x9c, 0x89, 0x9c, 0xf7,
|
||||
0x9d, 0x64, 0x9d, 0xd2, 0x9e, 0x40, 0x9e, 0xae, 0x9f, 0x1d, 0x9f, 0x8b,
|
||||
0x9f, 0xfa, 0xa0, 0x69, 0xa0, 0xd8, 0xa1, 0x47, 0xa1, 0xb6, 0xa2, 0x26,
|
||||
0xa2, 0x96, 0xa3, 0x06, 0xa3, 0x76, 0xa3, 0xe6, 0xa4, 0x56, 0xa4, 0xc7,
|
||||
0xa5, 0x38, 0xa5, 0xa9, 0xa6, 0x1a, 0xa6, 0x8b, 0xa6, 0xfd, 0xa7, 0x6e,
|
||||
0xa7, 0xe0, 0xa8, 0x52, 0xa8, 0xc4, 0xa9, 0x37, 0xa9, 0xa9, 0xaa, 0x1c,
|
||||
0xaa, 0x8f, 0xab, 0x02, 0xab, 0x75, 0xab, 0xe9, 0xac, 0x5c, 0xac, 0xd0,
|
||||
0xad, 0x44, 0xad, 0xb8, 0xae, 0x2d, 0xae, 0xa1, 0xaf, 0x16, 0xaf, 0x8b,
|
||||
0xb0, 0x00, 0xb0, 0x75, 0xb0, 0xea, 0xb1, 0x60, 0xb1, 0xd6, 0xb2, 0x4b,
|
||||
0xb2, 0xc2, 0xb3, 0x38, 0xb3, 0xae, 0xb4, 0x25, 0xb4, 0x9c, 0xb5, 0x13,
|
||||
0xb5, 0x8a, 0xb6, 0x01, 0xb6, 0x79, 0xb6, 0xf0, 0xb7, 0x68, 0xb7, 0xe0,
|
||||
0xb8, 0x59, 0xb8, 0xd1, 0xb9, 0x4a, 0xb9, 0xc2, 0xba, 0x3b, 0xba, 0xb5,
|
||||
0xbb, 0x2e, 0xbb, 0xa7, 0xbc, 0x21, 0xbc, 0x9b, 0xbd, 0x15, 0xbd, 0x8f,
|
||||
0xbe, 0x0a, 0xbe, 0x84, 0xbe, 0xff, 0xbf, 0x7a, 0xbf, 0xf5, 0xc0, 0x70,
|
||||
0xc0, 0xec, 0xc1, 0x67, 0xc1, 0xe3, 0xc2, 0x5f, 0xc2, 0xdb, 0xc3, 0x58,
|
||||
0xc3, 0xd4, 0xc4, 0x51, 0xc4, 0xce, 0xc5, 0x4b, 0xc5, 0xc8, 0xc6, 0x46,
|
||||
0xc6, 0xc3, 0xc7, 0x41, 0xc7, 0xbf, 0xc8, 0x3d, 0xc8, 0xbc, 0xc9, 0x3a,
|
||||
0xc9, 0xb9, 0xca, 0x38, 0xca, 0xb7, 0xcb, 0x36, 0xcb, 0xb6, 0xcc, 0x35,
|
||||
0xcc, 0xb5, 0xcd, 0x35, 0xcd, 0xb5, 0xce, 0x36, 0xce, 0xb6, 0xcf, 0x37,
|
||||
0xcf, 0xb8, 0xd0, 0x39, 0xd0, 0xba, 0xd1, 0x3c, 0xd1, 0xbe, 0xd2, 0x3f,
|
||||
0xd2, 0xc1, 0xd3, 0x44, 0xd3, 0xc6, 0xd4, 0x49, 0xd4, 0xcb, 0xd5, 0x4e,
|
||||
0xd5, 0xd1, 0xd6, 0x55, 0xd6, 0xd8, 0xd7, 0x5c, 0xd7, 0xe0, 0xd8, 0x64,
|
||||
0xd8, 0xe8, 0xd9, 0x6c, 0xd9, 0xf1, 0xda, 0x76, 0xda, 0xfb, 0xdb, 0x80,
|
||||
0xdc, 0x05, 0xdc, 0x8a, 0xdd, 0x10, 0xdd, 0x96, 0xde, 0x1c, 0xde, 0xa2,
|
||||
0xdf, 0x29, 0xdf, 0xaf, 0xe0, 0x36, 0xe0, 0xbd, 0xe1, 0x44, 0xe1, 0xcc,
|
||||
0xe2, 0x53, 0xe2, 0xdb, 0xe3, 0x63, 0xe3, 0xeb, 0xe4, 0x73, 0xe4, 0xfc,
|
||||
0xe5, 0x84, 0xe6, 0x0d, 0xe6, 0x96, 0xe7, 0x1f, 0xe7, 0xa9, 0xe8, 0x32,
|
||||
0xe8, 0xbc, 0xe9, 0x46, 0xe9, 0xd0, 0xea, 0x5b, 0xea, 0xe5, 0xeb, 0x70,
|
||||
0xeb, 0xfb, 0xec, 0x86, 0xed, 0x11, 0xed, 0x9c, 0xee, 0x28, 0xee, 0xb4,
|
||||
0xef, 0x40, 0xef, 0xcc, 0xf0, 0x58, 0xf0, 0xe5, 0xf1, 0x72, 0xf1, 0xff,
|
||||
0xf2, 0x8c, 0xf3, 0x19, 0xf3, 0xa7, 0xf4, 0x34, 0xf4, 0xc2, 0xf5, 0x50,
|
||||
0xf5, 0xde, 0xf6, 0x6d, 0xf6, 0xfb, 0xf7, 0x8a, 0xf8, 0x19, 0xf8, 0xa8,
|
||||
0xf9, 0x38, 0xf9, 0xc7, 0xfa, 0x57, 0xfa, 0xe7, 0xfb, 0x77, 0xfc, 0x07,
|
||||
0xfc, 0x98, 0xfd, 0x29, 0xfd, 0xba, 0xfe, 0x4b, 0xfe, 0xdc, 0xff, 0x6d,
|
||||
0xff, 0xff, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x02, 0x02, 0x03, 0x04, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x02, 0x03, 0x05, 0x05, 0x04, 0x04, 0x05, 0x04, 0x04, 0x04, 0x04, 0xff,
|
||||
0xdb, 0x00, 0x43, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01,
|
||||
0x01, 0x02, 0x04, 0x03, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xff, 0xc0, 0x00, 0x11,
|
||||
0x08, 0x00, 0x2e, 0x00, 0x2e, 0x03, 0x01, 0x11, 0x00, 0x02, 0x11, 0x01,
|
||||
0x03, 0x11, 0x01, 0xff, 0xc4, 0x00, 0x1c, 0x00, 0x00, 0x01, 0x04, 0x03,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x05, 0x07, 0x08, 0x0a, 0x01, 0x02, 0x06, 0x03, 0xff, 0xc4, 0x00,
|
||||
0x31, 0x10, 0x00, 0x00, 0x06, 0x02, 0x01, 0x03, 0x03, 0x03, 0x03, 0x02,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
|
||||
0x07, 0x08, 0x11, 0x00, 0x09, 0x12, 0x13, 0x14, 0x21, 0x22, 0x31, 0x41,
|
||||
0x15, 0x23, 0x32, 0x16, 0x19, 0x35, 0x42, 0x52, 0x61, 0x74, 0x91, 0xb3,
|
||||
0xff, 0xc4, 0x00, 0x1e, 0x01, 0x00, 0x02, 0x01, 0x04, 0x03, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x05,
|
||||
0x01, 0x04, 0x06, 0x09, 0x02, 0x03, 0x0a, 0x00, 0xff, 0xc4, 0x00, 0x39,
|
||||
0x11, 0x00, 0x02, 0x01, 0x03, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x07,
|
||||
0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x11, 0x06,
|
||||
0x12, 0x21, 0x00, 0x07, 0x31, 0x08, 0x13, 0x22, 0x32, 0x41, 0x51, 0x14,
|
||||
0x23, 0x61, 0x15, 0x42, 0x62, 0x81, 0xb1, 0x09, 0x17, 0x18, 0x24, 0x33,
|
||||
0x34, 0x71, 0x52, 0x72, 0x91, 0xa1, 0xd1, 0xff, 0xda, 0x00, 0x0c, 0x03,
|
||||
0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0x1c, 0x6e, 0xdd,
|
||||
0xae, 0x9a, 0xce, 0x4c, 0x77, 0x6b, 0x11, 0x34, 0x94, 0x39, 0x8e, 0xa2,
|
||||
0x8e, 0x4c, 0x05, 0x21, 0x4a, 0x22, 0x22, 0x63, 0x18, 0x47, 0xec, 0x00,
|
||||
0x1c, 0x88, 0x88, 0xfe, 0x3e, 0x7a, 0xd4, 0xdb, 0x33, 0xef, 0x20, 0x13,
|
||||
0xe7, 0xaf, 0x5e, 0x50, 0xc3, 0x1b, 0xa2, 0x05, 0x40, 0x49, 0x03, 0x80,
|
||||
0x07, 0x93, 0xf6, 0x03, 0xff, 0x00, 0x40, 0x74, 0xb3, 0x53, 0xae, 0x5e,
|
||||
0x6f, 0xd6, 0xa8, 0x5a, 0x1d, 0x0e, 0xb1, 0x71, 0xba, 0xde, 0xec, 0x6e,
|
||||
0x45, 0xa4, 0x05, 0x26, 0xb1, 0x0c, 0xee, 0x5e, 0xd7, 0x2c, 0xa1, 0x4b,
|
||||
0xe6, 0x72, 0xa4, 0xc4, 0x85, 0xf5, 0x40, 0x0a, 0x41, 0x03, 0x98, 0xe7,
|
||||
0x02, 0x90, 0x85, 0x10, 0x31, 0x8c, 0x50, 0x10, 0x11, 0xbd, 0xa0, 0xb6,
|
||||
0xdd, 0x2e, 0x95, 0x8b, 0x41, 0x6e, 0x85, 0xe4, 0x99, 0x8e, 0x02, 0xa8,
|
||||
0x2c, 0xc7, 0xf9, 0x0c, 0x9f, 0xb9, 0xe3, 0xe8, 0x09, 0xf0, 0x0f, 0x51,
|
||||
0xf7, 0x9b, 0xae, 0x9e, 0xd3, 0x76, 0x79, 0xf5, 0x1e, 0xa2, 0xab, 0x82,
|
||||
0x96, 0xdd, 0x00, 0xdd, 0x25, 0x44, 0xd2, 0x22, 0x42, 0x80, 0x9c, 0x02,
|
||||
0x64, 0x27, 0x6e, 0x49, 0xe0, 0x00, 0x4b, 0x31, 0xc8, 0x00, 0x90, 0x47,
|
||||
0x4e, 0x93, 0x0c, 0x13, 0x90, 0x22, 0x32, 0x9d, 0x73, 0x16, 0x67, 0xb7,
|
||||
0x32, 0x7a, 0x87, 0xfd, 0x40, 0xba, 0xed, 0x57, 0xc8, 0x3b, 0x23, 0x4e,
|
||||
0xb0, 0x54, 0x68, 0xd0, 0x0a, 0x22, 0x82, 0x8a, 0xa6, 0x47, 0x0b, 0x15,
|
||||
0xb8, 0x8a, 0x82, 0xb9, 0xc8, 0x54, 0x08, 0x64, 0x44, 0x48, 0x53, 0x28,
|
||||
0x06, 0x50, 0xe4, 0x21, 0x4c, 0x60, 0xc8, 0x68, 0xf4, 0x7d, 0xdc, 0x5e,
|
||||
0x21, 0xb5, 0x5f, 0xc1, 0xa2, 0x57, 0x24, 0x6f, 0x9d, 0x64, 0x40, 0x30,
|
||||
0x09, 0xe7, 0xe0, 0x2d, 0x83, 0x8c, 0x67, 0x6e, 0x39, 0x04, 0x90, 0x32,
|
||||
0x46, 0x1d, 0x55, 0xdc, 0x7d, 0x33, 0x59, 0xa3, 0xaa, 0xb5, 0x87, 0x6e,
|
||||
0x55, 0x35, 0x27, 0xb2, 0x14, 0x8a, 0x6b, 0x54, 0xf4, 0xd3, 0xd4, 0x48,
|
||||
0x19, 0x82, 0x92, 0xa0, 0xc9, 0x85, 0xd8, 0x0e, 0xf6, 0x0c, 0x03, 0x10,
|
||||
0x36, 0xa2, 0xb3, 0x90, 0x3a, 0x20, 0x39, 0x0f, 0xb2, 0xae, 0xf0, 0x56,
|
||||
0x29, 0x6d, 0x72, 0x36, 0x28, 0x96, 0xc3, 0xbb, 0x51, 0x48, 0x7b, 0x1a,
|
||||
0x33, 0x0c, 0xa5, 0x30, 0x3e, 0x41, 0x33, 0x99, 0x49, 0x66, 0xc0, 0x26,
|
||||
0x0f, 0x52, 0x39, 0xab, 0xd2, 0x24, 0x83, 0xde, 0x7c, 0x47, 0x80, 0x6a,
|
||||
0xe9, 0x43, 0x1b, 0x81, 0x02, 0x94, 0xc3, 0xf1, 0xd1, 0x06, 0xe5, 0xd8,
|
||||
0x5d, 0x69, 0x05, 0x17, 0xed, 0x2b, 0x3c, 0xb0, 0xd6, 0x40, 0x40, 0x2a,
|
||||
0x61, 0x93, 0x71, 0x23, 0x3c, 0x91, 0xb8, 0x20, 0x60, 0x07, 0x20, 0x26,
|
||||
0xe2, 0x7c, 0x01, 0x9e, 0x96, 0xbd, 0x33, 0xeb, 0xe3, 0xd3, 0xed, 0xda,
|
||||
0xfc, 0xfa, 0x5b, 0x59, 0x43, 0x5d, 0xa7, 0xee, 0x0a, 0xfb, 0x19, 0x2e,
|
||||
0x34, 0xc0, 0x22, 0x3f, 0x1c, 0x4a, 0xf0, 0xb3, 0xbc, 0x3e, 0x79, 0x32,
|
||||
0x42, 0xa0, 0x79, 0x24, 0x0e, 0x7a, 0x13, 0x32, 0x4d, 0xe7, 0x61, 0x25,
|
||||
0xa5, 0xab, 0xf3, 0xec, 0x67, 0x6b, 0xd6, 0x2a, 0xfc, 0x82, 0x91, 0x36,
|
||||
0x0a, 0xe5, 0x81, 0x8b, 0x98, 0x3b, 0x04, 0x03, 0xb4, 0x87, 0x85, 0x1b,
|
||||
0x3d, 0x64, 0xb9, 0x48, 0xb2, 0x0a, 0x94, 0x7e, 0xe4, 0x50, 0xa0, 0x3c,
|
||||
0x70, 0x21, 0xc8, 0x08, 0x08, 0x85, 0xaa, 0xa9, 0xeb, 0x68, 0x67, 0x6a,
|
||||
0x5a, 0xd4, 0x68, 0xe5, 0x5f, 0x2a, 0xc0, 0x86, 0x07, 0xec, 0x41, 0xe4,
|
||||
0x11, 0xe0, 0x8f, 0x20, 0xe4, 0x1e, 0x41, 0xe9, 0xd0, 0xa4, 0x96, 0xdd,
|
||||
0x71, 0xa2, 0x86, 0xe7, 0x6d, 0x92, 0x39, 0xa9, 0x66, 0x50, 0xf1, 0x4b,
|
||||
0x13, 0x24, 0x91, 0x48, 0x87, 0xc3, 0xc7, 0x22, 0x12, 0x8e, 0xa7, 0xee,
|
||||
0xa4, 0xfd, 0x8f, 0x3c, 0x74, 0xa3, 0x5e, 0x5d, 0xc2, 0x8f, 0xd4, 0x29,
|
||||
0x9c, 0xba, 0x00, 0xf6, 0x67, 0x37, 0xd0, 0xe9, 0x44, 0x87, 0xf9, 0xa5,
|
||||
0xf9, 0x01, 0x01, 0xfc, 0xfd, 0xba, 0xa5, 0x33, 0x31, 0x97, 0x19, 0x3e,
|
||||
0x0f, 0xd4, 0xfd, 0xc7, 0x56, 0xf7, 0x24, 0x8d, 0x29, 0xc1, 0x08, 0x3e,
|
||||
0x61, 0xe4, 0x03, 0xf4, 0x3f, 0x71, 0xd4, 0xaf, 0xd4, 0x1c, 0x73, 0x8e,
|
||||
0x9d, 0xcb, 0xe6, 0x7d, 0x9c, 0xcf, 0x30, 0x49, 0xd9, 0xb5, 0xeb, 0x4e,
|
||||
0x2a, 0x6d, 0xf2, 0x55, 0xb6, 0x9a, 0xe8, 0xe5, 0x49, 0x86, 0x5c, 0xb7,
|
||||
0x49, 0xbe, 0x33, 0x0a, 0x15, 0x29, 0x73, 0x9b, 0x90, 0xf6, 0xef, 0xa4,
|
||||
0x13, 0x33, 0x87, 0x60, 0x24, 0x50, 0xbe, 0xdd, 0x88, 0x11, 0x42, 0x0a,
|
||||
0x6b, 0x1f, 0xa2, 0x1f, 0x6f, 0x6c, 0xd4, 0x13, 0x4f, 0x5b, 0xaa, 0x6f,
|
||||
0x51, 0xfb, 0x94, 0x54, 0x2a, 0x1c, 0xc6, 0x79, 0x12, 0xca, 0xe7, 0x6c,
|
||||
0x31, 0x37, 0x04, 0x85, 0x77, 0xe5, 0x8e, 0xd6, 0x1b, 0x12, 0x40, 0x47,
|
||||
0x82, 0x02, 0xfd, 0xef, 0xd5, 0x3a, 0xa2, 0x0a, 0x1b, 0x0f, 0x69, 0x7b,
|
||||
0x73, 0x52, 0x60, 0xd4, 0xda, 0x9a, 0x67, 0xa4, 0x82, 0x71, 0x92, 0xd4,
|
||||
0x54, 0x50, 0xc7, 0xee, 0x5c, 0xab, 0xd4, 0x0c, 0x7e, 0x64, 0x30, 0x10,
|
||||
0x90, 0x61, 0x95, 0xbd, 0xd9, 0x37, 0x23, 0x07, 0x41, 0xd1, 0x7a, 0xed,
|
||||
0xc9, 0x96, 0xfb, 0x81, 0x63, 0x9b, 0x76, 0xc3, 0x6d, 0xe6, 0x44, 0xed,
|
||||
0xf1, 0x98, 0x76, 0x4a, 0xd5, 0xb5, 0x4f, 0x20, 0xe7, 0x8d, 0x93, 0x62,
|
||||
0x1c, 0x41, 0xe2, 0xb9, 0x88, 0x78, 0xd6, 0x08, 0x39, 0x21, 0x58, 0x42,
|
||||
0x46, 0xc9, 0x01, 0x5f, 0xab, 0x14, 0xa2, 0x4a, 0x47, 0x11, 0xba, 0x64,
|
||||
0x2a, 0x65, 0x14, 0xa2, 0x9b, 0x09, 0x85, 0x51, 0x02, 0x9c, 0x0e, 0x3d,
|
||||
0xb9, 0xba, 0xeb, 0xfa, 0x3a, 0xeb, 0x8e, 0xae, 0xb9, 0x58, 0xa4, 0xa9,
|
||||
0x7a, 0xd2, 0x84, 0x49, 0x91, 0x1b, 0xaa, 0xae, 0xee, 0x15, 0x4a, 0x92,
|
||||
0xca, 0xc0, 0xa6, 0x36, 0x9d, 0xb8, 0x45, 0xc1, 0x23, 0x18, 0x48, 0xbd,
|
||||
0x52, 0xe8, 0xaf, 0x4d, 0x5a, 0xa2, 0xc9, 0xa6, 0x7b, 0x23, 0xa5, 0xfb,
|
||||
0x99, 0x45, 0x63, 0xa3, 0xd3, 0xcb, 0x51, 0x1f, 0xe1, 0x1c, 0x54, 0x56,
|
||||
0x24, 0x92, 0xc8, 0xc8, 0x4c, 0x95, 0x13, 0x41, 0x98, 0x16, 0xa5, 0x58,
|
||||
0x4a, 0x65, 0x66, 0x2c, 0x77, 0xcd, 0x20, 0x50, 0x83, 0x2a, 0x4a, 0xdd,
|
||||
0x7f, 0xb9, 0xe6, 0xa0, 0x66, 0x09, 0x84, 0xb5, 0xef, 0x6d, 0xb1, 0x8d,
|
||||
0xe7, 0x59, 0x6e, 0x96, 0xd1, 0xfd, 0x38, 0x31, 0x5e, 0xe9, 0xe2, 0xe4,
|
||||
0xa0, 0x29, 0x76, 0xd5, 0x04, 0xe0, 0x90, 0x24, 0xd2, 0x59, 0x70, 0x5a,
|
||||
0x25, 0xc1, 0x4d, 0xea, 0x90, 0x08, 0x2b, 0x28, 0x97, 0x98, 0xa8, 0x00,
|
||||
0x50, 0x11, 0xf8, 0xe8, 0xb1, 0x07, 0x71, 0x74, 0x9d, 0xe6, 0x4f, 0xd8,
|
||||
0x3a, 0xa6, 0x99, 0xe9, 0x64, 0x7e, 0x3d, 0xaa, 0xc8, 0xb6, 0xa3, 0xfd,
|
||||
0x0e, 0x0b, 0x65, 0x4a, 0xf3, 0x80, 0x5c, 0x28, 0x39, 0xe3, 0x39, 0x19,
|
||||
0x4d, 0x2e, 0x5e, 0x92, 0x3b, 0xdf, 0xa1, 0xe8, 0x4f, 0x73, 0x3b, 0x2b,
|
||||
0x77, 0xa7, 0xbe, 0xd0, 0x53, 0x7c, 0x5f, 0x8c, 0xb0, 0xd6, 0x19, 0x67,
|
||||
0x84, 0x60, 0xb6, 0x5e, 0x14, 0xf6, 0xea, 0x50, 0x8d, 0xa7, 0x70, 0x45,
|
||||
0x7d, 0xa0, 0x65, 0x88, 0x1c, 0xf4, 0xdd, 0x64, 0x1d, 0x15, 0xcc, 0x3a,
|
||||
0x43, 0x2d, 0x35, 0xb0, 0xbd, 0xad, 0x64, 0x9c, 0x23, 0x09, 0xe6, 0x13,
|
||||
0xd9, 0x4b, 0x42, 0x6d, 0x13, 0x2b, 0xc9, 0x61, 0x9c, 0xb4, 0xd0, 0x82,
|
||||
0x2a, 0xbc, 0x5a, 0x9e, 0xa2, 0xa7, 0x39, 0xe1, 0x66, 0x4c, 0x4e, 0x45,
|
||||
0x1f, 0x44, 0x45, 0x25, 0x4d, 0xe0, 0x42, 0xf0, 0x42, 0xfb, 0x65, 0xec,
|
||||
0x6b, 0xf4, 0x6d, 0xd7, 0x48, 0x4a, 0xd7, 0xee, 0xdc, 0xb9, 0xf6, 0xf3,
|
||||
0xba, 0x5a, 0x36, 0x25, 0xa3, 0x94, 0x7d, 0x4c, 0x79, 0x24, 0xab, 0xe3,
|
||||
0xc0, 0x07, 0xec, 0x14, 0x80, 0x3d, 0xb7, 0xc9, 0xb4, 0xc7, 0xa8, 0x6d,
|
||||
0x0f, 0xea, 0x02, 0x8a, 0x9f, 0xb6, 0x1e, 0xaf, 0x61, 0x06, 0x7e, 0x63,
|
||||
0xa4, 0xd4, 0x70, 0xa2, 0xa5, 0x75, 0x13, 0x9c, 0x04, 0x5a, 0xd0, 0xa1,
|
||||
0x56, 0xae, 0x94, 0x1f, 0x9f, 0x70, 0xdc, 0xa3, 0x2c, 0x72, 0xe7, 0xde,
|
||||
0x8a, 0x3c, 0x6e, 0x06, 0x0a, 0xc0, 0xfd, 0xdf, 0xb5, 0x11, 0xde, 0xe4,
|
||||
0x6b, 0x14, 0x1a, 0x90, 0x7b, 0x49, 0x8a, 0xa2, 0x5d, 0xb1, 0x98, 0xac,
|
||||
0x3f, 0x62, 0x10, 0xf7, 0xf7, 0xcf, 0x21, 0x12, 0xf5, 0x26, 0xb1, 0xb5,
|
||||
0xc1, 0xa8, 0x07, 0x91, 0x9f, 0x22, 0x5f, 0x21, 0x8e, 0x5d, 0x42, 0x89,
|
||||
0x88, 0xa9, 0x9b, 0x89, 0x0e, 0x0d, 0xdc, 0x28, 0x06, 0xc5, 0x75, 0xc6,
|
||||
0x9c, 0xb0, 0xf7, 0x73, 0x48, 0x3e, 0xa8, 0xb1, 0x47, 0xb6, 0xe5, 0x00,
|
||||
0x39, 0x5c, 0x7e, 0x66, 0x54, 0x65, 0xa1, 0x70, 0x3e, 0x66, 0xc7, 0x31,
|
||||
0x93, 0xe7, 0x81, 0x95, 0x0d, 0x95, 0x28, 0x76, 0x3b, 0xb8, 0xbd, 0xc6,
|
||||
0xf4, 0x45, 0xde, 0xc4, 0xec, 0x5f, 0x76, 0xaa, 0x44, 0xda, 0x3e, 0xe2,
|
||||
0xe8, 0xd1, 0xcc, 0xad, 0xee, 0x53, 0x2a, 0x4e, 0x71, 0x05, 0xd6, 0x89,
|
||||
0xc9, 0xc0, 0x85, 0x8f, 0x15, 0x48, 0xa4, 0x06, 0x41, 0x20, 0x65, 0x33,
|
||||
0x44, 0x98, 0xa9, 0xed, 0x49, 0xc2, 0x4e, 0xdc, 0x91, 0xca, 0x22, 0x61,
|
||||
0x49, 0xc4, 0x68, 0xac, 0x9f, 0x99, 0x05, 0x33, 0xf0, 0x63, 0x22, 0x20,
|
||||
0x06, 0x28, 0xfc, 0x80, 0xfc, 0xfc, 0x80, 0xfc, 0x80, 0xf2, 0x1d, 0x25,
|
||||
0x74, 0xc0, 0xac, 0xe5, 0x4f, 0x90, 0x0f, 0xeb, 0xf5, 0x1d, 0x6e, 0x82,
|
||||
0xf3, 0x1b, 0xc3, 0x11, 0x89, 0xfe, 0x65, 0x7c, 0x1f, 0xe4, 0x1b, 0xff,
|
||||
0x00, 0x23, 0xf5, 0xe8, 0xe4, 0x76, 0xe3, 0xa4, 0xd1, 0x6d, 0x38, 0xb7,
|
||||
0x4d, 0xe8, 0x77, 0x68, 0xa8, 0x97, 0x95, 0x8c, 0xe3, 0xdd, 0x46, 0xcb,
|
||||
0x66, 0xbe, 0x92, 0x58, 0xa0, 0x78, 0xeb, 0x31, 0xb1, 0xbe, 0x33, 0x5d,
|
||||
0xdd, 0x52, 0x11, 0xf2, 0x46, 0xfd, 0xb5, 0xd0, 0x3c, 0x92, 0x89, 0xac,
|
||||
0x0d, 0x95, 0x03, 0x11, 0x55, 0x38, 0x28, 0x94, 0xc0, 0x3c, 0x0b, 0x27,
|
||||
0xda, 0xda, 0x0a, 0x2a, 0x9b, 0x1d, 0xa2, 0xdf, 0x70, 0x50, 0x62, 0x9e,
|
||||
0xe5, 0x23, 0xb1, 0x3e, 0x0f, 0xb1, 0x4e, 0x1a, 0x28, 0xdb, 0xe8, 0xca,
|
||||
0xcf, 0x23, 0x7c, 0x24, 0x1c, 0x96, 0xc1, 0xeb, 0x5e, 0x7e, 0xa9, 0xef,
|
||||
0xda, 0x86, 0xcf, 0xac, 0x75, 0xd6, 0xa2, 0xb0, 0x4c, 0xe9, 0x57, 0x6a,
|
||||
0xd1, 0xf4, 0x90, 0xd3, 0x6c, 0xf9, 0xa2, 0xfd, 0xa9, 0x76, 0x54, 0xad,
|
||||
0xa8, 0x8c, 0x8f, 0x89, 0x24, 0x14, 0xe0, 0xa9, 0x91, 0x08, 0x64, 0x5c,
|
||||
0x90, 0x41, 0x19, 0x16, 0x66, 0xda, 0xcc, 0xeb, 0xb4, 0x98, 0x59, 0xf5,
|
||||
0x2d, 0xe6, 0x05, 0xd3, 0x59, 0x5d, 0xab, 0xaa, 0x48, 0x36, 0x7a, 0xe3,
|
||||
0x21, 0x3d, 0xae, 0xe6, 0x18, 0x6c, 0x7d, 0x67, 0xa7, 0x9d, 0x13, 0x20,
|
||||
0x0c, 0xd1, 0x67, 0x16, 0xf5, 0x33, 0x1d, 0xf0, 0xae, 0x53, 0xb8, 0x38,
|
||||
0x99, 0x23, 0x00, 0x17, 0xdb, 0x81, 0x04, 0x39, 0x39, 0x47, 0xa6, 0x73,
|
||||
0x54, 0x5f, 0x35, 0x35, 0x9a, 0x48, 0x5a, 0xc5, 0x68, 0x35, 0xb1, 0x1c,
|
||||
0xfb, 0x84, 0x4c, 0xb1, 0x94, 0xc7, 0x8c, 0x29, 0x56, 0x67, 0xcf, 0xf0,
|
||||
0x83, 0xf6, 0xe3, 0xcf, 0x5a, 0x97, 0xec, 0xd7, 0x6e, 0xbb, 0x3f, 0xaf,
|
||||
0xa9, 0xae, 0x10, 0xf7, 0x1f, 0x5d, 0xa6, 0x9f, 0xad, 0x43, 0x18, 0xa6,
|
||||
0x59, 0x68, 0x67, 0xaa, 0x8a, 0x70, 0xc1, 0xb7, 0xb3, 0xcd, 0x0b, 0x05,
|
||||
0x87, 0x61, 0x0a, 0x30, 0xe3, 0x9d, 0xdb, 0x81, 0xc2, 0x9e, 0x98, 0x0c,
|
||||
0x73, 0xb4, 0x5a, 0x6d, 0xdc, 0x99, 0x9d, 0xbf, 0x55, 0xb3, 0x9e, 0x22,
|
||||
0x95, 0xab, 0xe5, 0x88, 0xa6, 0x2a, 0x39, 0xbb, 0xea, 0x9e, 0xcf, 0x52,
|
||||
0xbf, 0xa6, 0x72, 0x2c, 0x72, 0x69, 0x7d, 0x2a, 0x49, 0x42, 0x98, 0xc3,
|
||||
0xfb, 0xe5, 0x4c, 0x40, 0x4e, 0x47, 0xb1, 0x8b, 0x15, 0x74, 0x8a, 0x05,
|
||||
0x50, 0x41, 0x20, 0x12, 0x98, 0x61, 0x2d, 0xfa, 0x97, 0x49, 0xf7, 0x05,
|
||||
0x24, 0xd3, 0x97, 0x9a, 0x53, 0x1d, 0x48, 0xf9, 0xa9, 0xea, 0x13, 0x6c,
|
||||
0x83, 0xf8, 0x90, 0xf9, 0xc8, 0x1c, 0x82, 0xa5, 0x64, 0x51, 0x86, 0x21,
|
||||
0x7a, 0x25, 0x6a, 0x9e, 0xd0, 0xf7, 0xd3, 0xd2, 0xac, 0xf4, 0x5d, 0xe0,
|
||||
0xed, 0xed, 0xed, 0x2a, 0x2c, 0xb2, 0x30, 0x10, 0x5e, 0x2d, 0x33, 0xfb,
|
||||
0xb4, 0xac, 0x5b, 0x91, 0x14, 0xe0, 0x7c, 0x85, 0xbc, 0x34, 0x33, 0xa1,
|
||||
0x89, 0xce, 0x53, 0x2e, 0x43, 0x00, 0xc5, 0x61, 0xe9, 0x9c, 0x8b, 0xda,
|
||||
0xe7, 0x61, 0xb1, 0xce, 0xa7, 0xe5, 0x0b, 0xb4, 0xfe, 0x47, 0xd1, 0x6d,
|
||||
0x89, 0x9f, 0x3d, 0x53, 0x53, 0x32, 0xad, 0xd6, 0x40, 0xd2, 0x76, 0xcc,
|
||||
0x03, 0x6a, 0x30, 0x7a, 0x8d, 0xb1, 0xcc, 0xeb, 0xf3, 0x7c, 0xac, 0xc1,
|
||||
0xe1, 0x79, 0x2c, 0x62, 0xe7, 0xe0, 0x4a, 0x62, 0x81, 0x0a, 0x50, 0x21,
|
||||
0x17, 0x14, 0x61, 0x2d, 0x73, 0xd7, 0x76, 0xda, 0xfd, 0x4f, 0xa6, 0x2e,
|
||||
0x12, 0x34, 0xb6, 0x6a, 0xa3, 0xb2, 0x9a, 0x46, 0xe4, 0xc3, 0x27, 0xd2,
|
||||
0x17, 0x3f, 0xf4, 0x9e, 0x02, 0xf1, 0x8e, 0x41, 0x50, 0x14, 0x49, 0xb4,
|
||||
0x87, 0xae, 0x28, 0x34, 0xbf, 0xab, 0xee, 0xd8, 0xdd, 0x3b, 0xcb, 0xa4,
|
||||
0x68, 0x23, 0xa1, 0xee, 0x1d, 0x96, 0x31, 0x35, 0xe6, 0x8e, 0x9d, 0x76,
|
||||
0xc3, 0x72, 0xa3, 0x1c, 0x3d, 0xd2, 0x9e, 0x31, 0xf2, 0xcd, 0x11, 0xe6,
|
||||
0xad, 0x06, 0x72, 0x32, 0xcc, 0x77, 0xb4, 0x42, 0x45, 0x8d, 0x8b, 0x88,
|
||||
0x0e, 0xdf, 0xfb, 0xd3, 0x8b, 0xf7, 0x22, 0x98, 0x51, 0x86, 0xd7, 0xcd,
|
||||
0xc5, 0xb8, 0xc7, 0x6b, 0xde, 0xe4, 0xd5, 0x99, 0x94, 0x1b, 0x57, 0xa1,
|
||||
0xed, 0x0f, 0x45, 0x42, 0x53, 0x32, 0x08, 0xa2, 0x50, 0xf1, 0x4d, 0x61,
|
||||
0x5c, 0x55, 0x68, 0xf9, 0x7e, 0x00, 0xa2, 0x45, 0x14, 0x31, 0xbc, 0xd6,
|
||||
0x74, 0x63, 0xf5, 0xcb, 0x50, 0x42, 0x34, 0x26, 0xb5, 0xa6, 0xd5, 0x94,
|
||||
0x63, 0x6d, 0x05, 0x7b, 0x88, 0x2a, 0xd4, 0x70, 0xa2, 0x43, 0x93, 0x1c,
|
||||
0xde, 0x70, 0x3f, 0x79, 0x9d, 0x88, 0xe3, 0x0f, 0xe5, 0xe6, 0xcf, 0x56,
|
||||
0x3d, 0xae, 0xae, 0xff, 0x00, 0x12, 0x9e, 0x9e, 0x6e, 0xfd, 0x8d, 0xbf,
|
||||
0x7e, 0x6e, 0xa6, 0xd3, 0x30, 0x4b, 0x73, 0xb1, 0xcc, 0xdc, 0xca, 0xf4,
|
||||
0x91, 0xe0, 0xd7, 0x5b, 0x72, 0x79, 0x65, 0xd9, 0xb6, 0x4a, 0x74, 0xc9,
|
||||
0x3b, 0x82, 0xa8, 0xdb, 0x14, 0x01, 0x7a, 0xa9, 0xa6, 0xca, 0x53, 0x61,
|
||||
0x31, 0xd6, 0xe4, 0x6d, 0x65, 0x06, 0xb2, 0x44, 0x93, 0xad, 0xd4, 0xb3,
|
||||
0xcd, 0xbe, 0x32, 0x05, 0x24, 0x04, 0xa6, 0x41, 0x06, 0xa7, 0x9a, 0x3b,
|
||||
0xb4, 0x91, 0x20, 0x97, 0xe9, 0xf1, 0x48, 0x1c, 0xfa, 0x40, 0x01, 0xf6,
|
||||
0xf4, 0xf8, 0xf8, 0xe3, 0x8e, 0x93, 0x0d, 0x65, 0x43, 0x15, 0xbb, 0x5b,
|
||||
0xdc, 0xe8, 0xe9, 0xc8, 0xf6, 0xd2, 0x69, 0x42, 0x81, 0x8c, 0x05, 0x12,
|
||||
0x10, 0xa3, 0x8f, 0xb0, 0x00, 0x75, 0xba, 0x6e, 0xd4, 0x5f, 0x6e, 0x1a,
|
||||
0x9f, 0xb1, 0x9a, 0x37, 0x51, 0xdd, 0x89, 0x35, 0x55, 0x36, 0xda, 0x17,
|
||||
0x90, 0x9c, 0xe4, 0xb8, 0xa7, 0x08, 0xcc, 0x73, 0xce, 0x5b, 0x6e, 0xee,
|
||||
0x7c, 0xe7, 0x3f, 0x5e, 0x9f, 0x5c, 0x41, 0x2b, 0x3b, 0x7e, 0xd0, 0x5d,
|
||||
0x88, 0xa2, 0x52, 0x25, 0x5f, 0x43, 0x65, 0xcd, 0x33, 0xd8, 0xea, 0xfe,
|
||||
0xfa, 0x63, 0xf7, 0xd5, 0xb7, 0x0e, 0x1a, 0x5d, 0x9a, 0x57, 0x9d, 0x34,
|
||||
0x2d, 0x5e, 0xd9, 0x25, 0x16, 0xaa, 0x40, 0x22, 0x51, 0x85, 0x70, 0x84,
|
||||
0x64, 0xaa, 0xa7, 0x1f, 0xe0, 0x51, 0x20, 0x8f, 0x20, 0x22, 0x03, 0x97,
|
||||
0x69, 0x9a, 0x9a, 0xaa, 0xfe, 0xde, 0xd7, 0xdb, 0xed, 0x4e, 0x56, 0xb6,
|
||||
0x82, 0xa1, 0x2b, 0x53, 0x1f, 0x3b, 0x21, 0x1e, 0xd4, 0x9b, 0x79, 0xca,
|
||||
0xac, 0x67, 0xd9, 0x76, 0x6e, 0x36, 0xf2, 0xc0, 0xf1, 0xd0, 0xe7, 0x5c,
|
||||
0xd1, 0x5b, 0xb4, 0xdf, 0xa9, 0x2d, 0x31, 0xa8, 0xf5, 0x04, 0x2b, 0x2d,
|
||||
0x97, 0x53, 0xda, 0xaa, 0x74, 0xe5, 0x4a, 0xca, 0x15, 0xa9, 0xcd, 0x52,
|
||||
0x39, 0xac, 0xa3, 0x8a, 0x60, 0xde, 0x7f, 0x16, 0x8d, 0x2d, 0x32, 0x0f,
|
||||
0xde, 0x3b, 0x87, 0x07, 0x07, 0xa2, 0xbb, 0x82, 0x7b, 0xd2, 0xef, 0xfc,
|
||||
0x26, 0x15, 0x8c, 0xcd, 0x79, 0xa7, 0x48, 0x24, 0x33, 0x66, 0xbf, 0x56,
|
||||
0xcc, 0x2c, 0x6e, 0x1b, 0x29, 0x8e, 0x90, 0x75, 0x8f, 0x82, 0x4d, 0x04,
|
||||
0x16, 0x16, 0xae, 0x64, 0xc1, 0x8a, 0x89, 0x2c, 0xc5, 0x4f, 0x49, 0x5e,
|
||||
0x48, 0xab, 0x86, 0xfe, 0x83, 0x11, 0x51, 0x33, 0x97, 0xd4, 0x6f, 0xf3,
|
||||
0xe0, 0x63, 0xd3, 0x7d, 0xe6, 0xd7, 0x22, 0xc0, 0x97, 0xcb, 0xe5, 0x99,
|
||||
0xa6, 0xa3, 0x53, 0x86, 0x9d, 0x15, 0x93, 0x20, 0x70, 0x5f, 0xe5, 0x64,
|
||||
0x38, 0x3c, 0x36, 0xd0, 0xab, 0xbb, 0x2b, 0xf0, 0x9e, 0x93, 0x3e, 0xe3,
|
||||
0x7a, 0x09, 0xf4, 0xd5, 0x70, 0xd7, 0xd3, 0x68, 0x2d, 0x05, 0xdc, 0x05,
|
||||
0xb5, 0x6a, 0x59, 0xfe, 0x28, 0x2d, 0x55, 0x45, 0x2a, 0x76, 0x33, 0x2e,
|
||||
0xf4, 0x8b, 0xdc, 0x0d, 0x1c, 0xcb, 0xb9, 0x79, 0x44, 0x7f, 0x72, 0xa3,
|
||||
0x69, 0x0d, 0xb6, 0x4e, 0x37, 0x12, 0x8d, 0xbb, 0xc5, 0xf8, 0xdf, 0xb8,
|
||||
0x56, 0xa0, 0x52, 0xb7, 0x27, 0x58, 0xa6, 0xd4, 0x89, 0xce, 0xd8, 0xd2,
|
||||
0xa0, 0x7c, 0xf3, 0xa9, 0xb9, 0xa6, 0x29, 0xb7, 0xe9, 0x17, 0x58, 0x77,
|
||||
0xf1, 0x40, 0xab, 0xc7, 0x35, 0x99, 0x01, 0x00, 0x13, 0x19, 0x07, 0x4a,
|
||||
0x36, 0x77, 0x1c, 0xe9, 0x82, 0xc2, 0x74, 0x93, 0x73, 0xc9, 0x84, 0xa6,
|
||||
0x02, 0x18, 0xa7, 0x25, 0x6a, 0xba, 0x0b, 0x7e, 0xbb, 0xd2, 0x31, 0xea,
|
||||
0xed, 0x38, 0xe5, 0x6b, 0x21, 0x43, 0x35, 0x3c, 0xab, 0x8d, 0xe0, 0xa6,
|
||||
0x4b, 0x44, 0x7c, 0x8c, 0xe5, 0x59, 0x70, 0x49, 0x55, 0x90, 0x67, 0x90,
|
||||
0x18, 0x32, 0xa1, 0xd9, 0x4d, 0x5b, 0xaa, 0xbd, 0x33, 0x77, 0xba, 0xbf,
|
||||
0xb1, 0x3d, 0xdb, 0x80, 0x49, 0xa7, 0x6b, 0xa7, 0x16, 0xeb, 0xcd, 0x03,
|
||||
0x9d, 0xf4, 0xef, 0x1c, 0xd8, 0x44, 0xab, 0x8f, 0xc0, 0x0f, 0x1a, 0xba,
|
||||
0x4f, 0x14, 0xc9, 0xb5, 0xda, 0x1e, 0x01, 0x52, 0xca, 0x57, 0x39, 0x89,
|
||||
0xc4, 0x3f, 0x73, 0x5e, 0xd0, 0x72, 0x19, 0x19, 0x28, 0xf4, 0x62, 0x2d,
|
||||
0x19, 0x03, 0x01, 0x06, 0x65, 0xa9, 0x99, 0x98, 0x98, 0x8b, 0x53, 0x2f,
|
||||
0x15, 0x74, 0x95, 0x7e, 0x5f, 0xd3, 0xd7, 0x01, 0xf5, 0x13, 0xf4, 0xa5,
|
||||
0x22, 0xdd, 0x34, 0x05, 0x4a, 0x20, 0x71, 0x41, 0x63, 0x80, 0xff, 0x00,
|
||||
0x23, 0x07, 0x5c, 0x6f, 0x2d, 0x17, 0x70, 0xfb, 0x4e, 0xf7, 0x17, 0x41,
|
||||
0xef, 0x34, 0x26, 0x50, 0x17, 0xf7, 0x67, 0x87, 0x3b, 0x82, 0x13, 0xc8,
|
||||
0x05, 0xd1, 0xa3, 0xcf, 0x9d, 0x8c, 0x73, 0xe4, 0xf5, 0xf6, 0x87, 0x8a,
|
||||
0xb7, 0xd2, 0x77, 0xad, 0xc8, 0xf4, 0xb3, 0x4a, 0x64, 0xa3, 0xa4, 0xb9,
|
||||
0x7e, 0x06, 0x6d, 0xc0, 0x11, 0x3d, 0xbe, 0xb0, 0x88, 0xff, 0x00, 0x35,
|
||||
0x48, 0xda, 0xc5, 0xa9, 0xa6, 0x49, 0x4a, 0x91, 0xb4, 0x48, 0xaa, 0x47,
|
||||
0x80, 0x7a, 0x48, 0xcc, 0x76, 0x98, 0x8d, 0xdc, 0xec, 0x8f, 0x64, 0xc9,
|
||||
0x37, 0x99, 0x18, 0xa8, 0x87, 0xb7, 0xcd, 0x42, 0x4b, 0x26, 0x4a, 0x4e,
|
||||
0x4c, 0xb9, 0x49, 0xab, 0x18, 0xbb, 0x3d, 0x79, 0x92, 0x72, 0x62, 0xe0,
|
||||
0xab, 0x08, 0x00, 0x26, 0x3f, 0xab, 0x44, 0x89, 0x48, 0x21, 0xc0, 0xfe,
|
||||
0xe0, 0x14, 0x3e, 0xfc, 0x75, 0xd1, 0x7c, 0x9e, 0x3d, 0x5d, 0xd9, 0x89,
|
||||
0xab, 0x6e, 0x25, 0x4b, 0xb5, 0x2f, 0xb8, 0xc4, 0xf0, 0x0c, 0xb0, 0x8d,
|
||||
0xc7, 0xfe, 0x03, 0x4a, 0x98, 0x03, 0xec, 0x71, 0xce, 0x71, 0xd5, 0xf6,
|
||||
0x84, 0xb4, 0xd6, 0xf6, 0x07, 0xfb, 0x40, 0x29, 0x34, 0xb6, 0x9d, 0x89,
|
||||
0xe4, 0x8e, 0x92, 0xf6, 0x69, 0x12, 0x34, 0x04, 0xb3, 0xd1, 0xd5, 0x48,
|
||||
0x61, 0x0a, 0x54, 0x64, 0xb7, 0xf9, 0x59, 0xb2, 0xd9, 0xc8, 0xe0, 0x9e,
|
||||
0xa9, 0x27, 0x51, 0x50, 0x55, 0x70, 0x9a, 0xa2, 0x45, 0x13, 0x15, 0x63,
|
||||
0x05, 0x53, 0x26, 0xb0, 0x88, 0xac, 0x41, 0x39, 0x91, 0x30, 0x81, 0xc4,
|
||||
0x7e, 0x7c, 0xb9, 0x11, 0xe4, 0x47, 0xe7, 0x9e, 0x79, 0xe9, 0x00, 0xa6,
|
||||
0x18, 0x98, 0xe7, 0xec, 0x7c, 0x7f, 0xc8, 0xeb, 0xd0, 0x15, 0xe9, 0x76,
|
||||
0x46, 0x53, 0x20, 0xe1, 0xf1, 0x91, 0xe3, 0x80, 0xc3, 0x8f, 0xd3, 0xed,
|
||||
0xfa, 0x74, 0xe7, 0x60, 0xcc, 0xe3, 0x75, 0xd6, 0xec, 0xcf, 0x59, 0xcc,
|
||||
0xd4, 0x14, 0x22, 0xe4, 0xe6, 0x2b, 0x0e, 0x9d, 0xb0, 0x99, 0xa9, 0xd8,
|
||||
0x52, 0x2b, 0xaa, 0x9e, 0x45, 0x82, 0x91, 0x48, 0xed, 0x26, 0xeb, 0x53,
|
||||
0x28, 0x18, 0xa6, 0x2a, 0x8c, 0xa4, 0x5b, 0x1c, 0xe9, 0x1b, 0xc8, 0xa6,
|
||||
0xf4, 0xd4, 0x2a, 0x0b, 0x14, 0x3c, 0x92, 0x2f, 0x53, 0xba, 0x63, 0x52,
|
||||
0x55, 0xe9, 0x5b, 0xe4, 0x77, 0x6a, 0x50, 0x18, 0x02, 0x43, 0xa3, 0x72,
|
||||
0xb2, 0x23, 0x02, 0xae, 0x8e, 0xa7, 0x86, 0x56, 0x52, 0x41, 0x07, 0xef,
|
||||
0x91, 0x86, 0xc3, 0x0c, 0x43, 0xb8, 0x7d, 0xbd, 0xb0, 0x77, 0x57, 0x42,
|
||||
0x55, 0xe8, 0x4d, 0x48, 0xcf, 0x1c, 0x13, 0x84, 0x68, 0xe6, 0x88, 0xe2,
|
||||
0x6a, 0x5a, 0x88, 0x88, 0x7a, 0x7a, 0xb8, 0x18, 0x10, 0x56, 0x58, 0x24,
|
||||
0x01, 0x86, 0x08, 0xde, 0xa5, 0xe3, 0x3f, 0x0b, 0x9e, 0xac, 0xbf, 0x6b,
|
||||
0xdf, 0xf8, 0x6f, 0xed, 0x9f, 0x31, 0x5a, 0xd1, 0x3d, 0x76, 0xb2, 0x66,
|
||||
0x2c, 0x73, 0x1d, 0x87, 0x9e, 0xe1, 0xdb, 0x04, 0x3a, 0x73, 0x68, 0x4f,
|
||||
0xdc, 0xb5, 0x45, 0x07, 0xec, 0x97, 0x66, 0x76, 0x37, 0x4a, 0x92, 0x65,
|
||||
0x3c, 0xa3, 0xb6, 0xcd, 0x1a, 0x2a, 0xeb, 0xda, 0xca, 0xb4, 0x2a, 0xec,
|
||||
0x9d, 0xa6, 0xd0, 0x86, 0x5d, 0xc2, 0x7f, 0x59, 0xce, 0xda, 0x56, 0x6b,
|
||||
0xa8, 0xa5, 0xed, 0xac, 0x94, 0xba, 0x1e, 0x81, 0xaa, 0xa9, 0x8c, 0x2d,
|
||||
0x11, 0xf8, 0xc3, 0x3d, 0x38, 0x70, 0x54, 0x89, 0x63, 0x20, 0xbb, 0x05,
|
||||
0x05, 0xb6, 0xc9, 0x82, 0x8c, 0x14, 0xfb, 0x8c, 0x08, 0x20, 0xea, 0x76,
|
||||
0xcd, 0xe9, 0xaa, 0xb8, 0x7a, 0xb0, 0x82, 0xef, 0xea, 0x23, 0x53, 0xc5,
|
||||
0x6c, 0xba, 0x3d, 0x74, 0x75, 0xd1, 0x3f, 0xb6, 0xd1, 0x53, 0xde, 0x5a,
|
||||
0x39, 0x16, 0x41, 0x25, 0x05, 0x69, 0x2b, 0x4d, 0x14, 0x92, 0xca, 0xa8,
|
||||
0x26, 0xa6, 0x94, 0xc7, 0x3c, 0x2d, 0x21, 0x58, 0xa2, 0x6f, 0x84, 0x2b,
|
||||
0xd3, 0xdb, 0x5f, 0x35, 0xeb, 0x7e, 0xb5, 0xf6, 0x87, 0x88, 0x97, 0x6d,
|
||||
0x9e, 0xf1, 0xed, 0xf1, 0x7c, 0x61, 0x8a, 0x6c, 0xd9, 0x13, 0x22, 0xc4,
|
||||
0x30, 0xb2, 0x24, 0x69, 0xda, 0xcc, 0xc4, 0x8a, 0xaf, 0xe5, 0x14, 0xad,
|
||||
0x2d, 0x14, 0xb0, 0x95, 0xe2, 0x4e, 0x51, 0x59, 0xd2, 0x2c, 0x0a, 0x45,
|
||||
0x12, 0x0f, 0x70, 0xb7, 0xd6, 0x97, 0x9a, 0x6b, 0x26, 0x63, 0x4d, 0x76,
|
||||
0xf6, 0xf7, 0xa7, 0xf4, 0xf7, 0x6a, 0x04, 0xc2, 0xba, 0x39, 0x5e, 0x38,
|
||||
0xa4, 0x95, 0xd4, 0x30, 0x0c, 0xae, 0xe5, 0x9c, 0x47, 0xb0, 0x90, 0x43,
|
||||
0x65, 0x95, 0x06, 0x46, 0x1d, 0x8e, 0xe5, 0xca, 0xb0, 0x3d, 0x60, 0x3e,
|
||||
0xaa, 0xf4, 0x0f, 0x74, 0xfb, 0xaf, 0xeb, 0x6e, 0x6a, 0x29, 0x34, 0xdd,
|
||||
0x4d, 0x22, 0x57, 0xd6, 0x52, 0x52, 0xd2, 0xc8, 0xd1, 0x37, 0xb7, 0x34,
|
||||
0x11, 0x2c, 0x70, 0x8a, 0xa5, 0x99, 0x73, 0x13, 0x46, 0xc8, 0x8d, 0x39,
|
||||
0x2a, 0xe7, 0xda, 0x4f, 0x82, 0x4d, 0xaf, 0x1b, 0x01, 0xc5, 0xe8, 0xd6,
|
||||
0xd4, 0x6a, 0xfe, 0xb7, 0x76, 0x79, 0xc7, 0x70, 0x37, 0x5d, 0x84, 0xc4,
|
||||
0xc7, 0xbc, 0xa3, 0x8a, 0x6d, 0x48, 0x2b, 0x8f, 0x98, 0xdc, 0xda, 0x49,
|
||||
0x5e, 0x97, 0xb1, 0xce, 0x38, 0x9a, 0x94, 0x46, 0xb0, 0xda, 0x05, 0x33,
|
||||
0x19, 0xf9, 0xde, 0x90, 0xf2, 0x2d, 0xdb, 0x19, 0xba, 0x68, 0x9b, 0xc4,
|
||||
0xe2, 0x3f, 0x22, 0x4e, 0x0e, 0x36, 0x3a, 0x1b, 0x52, 0x69, 0x7d, 0x3d,
|
||||
0xda, 0x48, 0xe8, 0x9a, 0xe3, 0x13, 0xcc, 0x23, 0x9c, 0x84, 0x12, 0x06,
|
||||
0x90, 0xb4, 0x8d, 0x23, 0xaa, 0x6c, 0xce, 0xfd, 0xd8, 0x75, 0x07, 0x8c,
|
||||
0x0c, 0xe7, 0x38, 0xe7, 0xa9, 0xef, 0x50, 0xbd, 0x9f, 0xee, 0xf7, 0x75,
|
||||
0x3d, 0x71, 0x5c, 0xee, 0x76, 0x2d, 0x33, 0x5a, 0x2d, 0xe6, 0xb2, 0x8c,
|
||||
0x8a, 0x96, 0x81, 0xd6, 0x9c, 0x52, 0xd3, 0xa4, 0x10, 0xb5, 0x5b, 0x54,
|
||||
0xb0, 0x10, 0x88, 0x48, 0x89, 0xa4, 0x12, 0x19, 0x06, 0x57, 0xf8, 0xb2,
|
||||
0x3a, 0x05, 0x77, 0x94, 0x77, 0x2b, 0x1f, 0xf6, 0xf5, 0xa9, 0x62, 0x3d,
|
||||
0xa6, 0xce, 0x6a, 0x60, 0xfc, 0x5a, 0xa3, 0x38, 0x77, 0x5a, 0xe9, 0xa5,
|
||||
0x93, 0xf5, 0x16, 0xa8, 0xe5, 0xfc, 0xd8, 0x8b, 0x79, 0x5f, 0x74, 0xf5,
|
||||
0xfc, 0xca, 0x2d, 0x48, 0x49, 0x18, 0x98, 0x36, 0x2b, 0x19, 0xc3, 0xd4,
|
||||
0x55, 0x9d, 0x30, 0x91, 0xcb, 0x86, 0x88, 0x90, 0x5b, 0x97, 0x86, 0xe2,
|
||||
0x60, 0x65, 0xf2, 0x3d, 0x67, 0x6c, 0xd0, 0x0d, 0x6e, 0xd4, 0xd7, 0x3f,
|
||||
0xc3, 0x52, 0x96, 0x06, 0x9e, 0x91, 0x91, 0x7d, 0xc9, 0x94, 0xb9, 0x62,
|
||||
0x5b, 0x68, 0x12, 0x22, 0x29, 0x2c, 0xca, 0x65, 0xc8, 0x2c, 0xa3, 0x6a,
|
||||
0xe4, 0x23, 0x8d, 0x88, 0xe9, 0xd7, 0xec, 0x56, 0xa5, 0xf5, 0x33, 0x59,
|
||||
0xad, 0x3b, 0x3f, 0xa7, 0x45, 0xd6, 0xee, 0x1a, 0x75, 0xba, 0x5f, 0xa2,
|
||||
0x9d, 0xcd, 0x0d, 0xbd, 0x9a, 0x1d, 0x91, 0xc7, 0x03, 0x48, 0x5a, 0x0a,
|
||||
0xaa, 0xc9, 0x94, 0x24, 0x2e, 0xb4, 0x60, 0x34, 0x51, 0x3b, 0x37, 0xb8,
|
||||
0x7f, 0x34, 0x01, 0xf1, 0x5b, 0xff, 0x00, 0x11, 0x53, 0xfe, 0x11, 0xff,
|
||||
0x00, 0xf4, 0x4b, 0xa0, 0xad, 0x2f, 0xfa, 0xbf, 0xc8, 0xff, 0x00, 0x51,
|
||||
0xd3, 0x39, 0x74, 0xff, 0x00, 0x6c, 0x3f, 0xee, 0x1f, 0xd0, 0xf5, 0x87,
|
||||
0x30, 0x8f, 0x3d, 0xc2, 0xfe, 0x47, 0x6c, 0x06, 0x15, 0x8c, 0x26, 0x02,
|
||||
0xa8, 0x73, 0x14, 0x07, 0x91, 0xf8, 0x01, 0xf1, 0x0e, 0x7f, 0xeb, 0xaa,
|
||||
0xb4, 0x0d, 0xb8, 0xe4, 0xf5, 0x58, 0x6b, 0xa1, 0x31, 0x29, 0x50, 0x71,
|
||||
0x81, 0xf4, 0x1f, 0xfd, 0xeb, 0xa7, 0xa0, 0x59, 0x72, 0x56, 0x26, 0xb8,
|
||||
0xc6, 0xe4, 0x3c, 0x53, 0x7e, 0xb2, 0xe3, 0x3b, 0xf4, 0x3a, 0x66, 0x42,
|
||||
0x36, 0xe3, 0x46, 0x9f, 0x71, 0x5e, 0x9f, 0x41, 0x23, 0xf2, 0x0a, 0x37,
|
||||
0x3a, 0xa9, 0x87, 0x0b, 0x20, 0xa0, 0x09, 0x80, 0xed, 0x97, 0x2a, 0x88,
|
||||
0x9c, 0x0c, 0x20, 0x64, 0xcd, 0xcf, 0x52, 0x56, 0x8b, 0x9d, 0xda, 0xc3,
|
||||
0x5a, 0xb7, 0x0b, 0x45, 0x43, 0x45, 0x32, 0xf8, 0x65, 0x25, 0x4f, 0x38,
|
||||
0xc8, 0xe0, 0x8e, 0x0e, 0x00, 0x23, 0xea, 0x38, 0x3c, 0x75, 0x13, 0xa9,
|
||||
0x6c, 0xfa, 0x57, 0x5a, 0x58, 0xe5, 0xd3, 0x1a, 0xca, 0xdb, 0x15, 0x7d,
|
||||
0xb6, 0x52, 0x0b, 0xc1, 0x51, 0x1a, 0xcb, 0x19, 0x61, 0xe1, 0x82, 0xb7,
|
||||
0x28, 0xeb, 0xe5, 0x64, 0x42, 0xae, 0xa4, 0x0d, 0xac, 0x3a, 0x99, 0x6e,
|
||||
0xf7, 0xc2, 0xff, 0x00, 0x72, 0x59, 0xd4, 0x9e, 0x7d, 0xd5, 0xfd, 0x0e,
|
||||
0xd9, 0xbb, 0x5b, 0xd5, 0x81, 0x67, 0x99, 0x17, 0x29, 0x6b, 0xab, 0x7a,
|
||||
0xfe, 0x4e, 0x92, 0x31, 0x43, 0xf9, 0x3d, 0x99, 0x84, 0x59, 0x97, 0xb8,
|
||||
0x30, 0xf2, 0x22, 0x22, 0xa2, 0x3f, 0x71, 0x11, 0xfb, 0x88, 0xf2, 0x41,
|
||||
0xfe, 0xf4, 0xae, 0x95, 0x23, 0x37, 0xab, 0x6d, 0x15, 0x54, 0xad, 0xcb,
|
||||
0xcb, 0x24, 0x01, 0x64, 0x63, 0xf7, 0x2d, 0x09, 0x8b, 0x3f, 0xae, 0xec,
|
||||
0x9f, 0xd7, 0xa0, 0x44, 0x5e, 0x9c, 0x34, 0xd5, 0x8d, 0x12, 0x97, 0xb6,
|
||||
0xfa, 0xbb, 0x51, 0xd8, 0x68, 0xd0, 0x61, 0x69, 0x68, 0xee, 0x8d, 0x2d,
|
||||
0x22, 0x0f, 0xb4, 0x70, 0x56, 0x25, 0x46, 0xc0, 0x3c, 0x0d, 0xaf, 0xe3,
|
||||
0x8e, 0xb5, 0x2e, 0xfc, 0x65, 0xfa, 0xa0, 0xfa, 0xda, 0xf3, 0x83, 0xb4,
|
||||
0xc7, 0x51, 0xa5, 0xce, 0xc9, 0x68, 0xe5, 0x6e, 0xda, 0xff, 0x00, 0xaf,
|
||||
0x2c, 0x10, 0xca, 0x7e, 0x8a, 0xe4, 0x14, 0xd4, 0x2a, 0x56, 0x69, 0x63,
|
||||
0x3e, 0x72, 0x90, 0xf8, 0x88, 0x80, 0x19, 0x12, 0x90, 0x4b, 0xf7, 0x28,
|
||||
0x94, 0xdf, 0x3d, 0x51, 0xbb, 0xa7, 0x7b, 0x80, 0x03, 0x64, 0xa1, 0xa3,
|
||||
0xa2, 0x90, 0x64, 0x09, 0x20, 0x80, 0x7b, 0x9b, 0x4f, 0xcc, 0x37, 0xc9,
|
||||
0xee, 0x38, 0xcf, 0x8c, 0xab, 0x29, 0x1e, 0x47, 0x23, 0xaa, 0x9f, 0x4d,
|
||||
0x7a, 0x22, 0xf1, 0x94, 0xee, 0x66, 0xa1, 0xbf, 0x6a, 0x38, 0x37, 0x2b,
|
||||
0x8a, 0x7b, 0x9d, 0xd2, 0x43, 0x47, 0xb9, 0x4e, 0x46, 0x69, 0x29, 0x45,
|
||||
0x3c, 0x6c, 0x33, 0xc9, 0x0c, 0x58, 0x1f, 0x0d, 0x91, 0xc7, 0x50, 0x82,
|
||||
0xc6, 0xbd, 0xbe, 0xe7, 0x64, 0x9a, 0xba, 0x5d, 0xad, 0x33, 0x57, 0x5b,
|
||||
0x9d, 0x95, 0xd7, 0xbe, 0xb1, 0xdc, 0x2d, 0xf3, 0xae, 0xec, 0x96, 0x79,
|
||||
0xd5, 0xbf, 0xd6, 0xe9, 0xf2, 0xe2, 0x75, 0x4f, 0xc7, 0xf9, 0x4a, 0x26,
|
||||
0xf1, 0x20, 0x0f, 0x05, 0x29, 0x43, 0xe3, 0xa1, 0xc5, 0xc2, 0xaa, 0xe1,
|
||||
0x75, 0xaa, 0x6a, 0xdb, 0x94, 0xed, 0x2c, 0xac, 0x72, 0x59, 0x89, 0x62,
|
||||
0x4f, 0xdc, 0x93, 0xc9, 0x38, 0x03, 0x93, 0xc9, 0xc0, 0xcf, 0x4c, 0x15,
|
||||
0xaa, 0x0b, 0x25, 0x86, 0xd5, 0x4f, 0x61, 0xb0, 0x51, 0xc7, 0x4b, 0x41,
|
||||
0x00, 0xdb, 0x14, 0x10, 0x46, 0x91, 0x43, 0x1a, 0xfd, 0x92, 0x34, 0xc2,
|
||||
0x8f, 0xd4, 0xe3, 0x27, 0xcb, 0x12, 0x79, 0xeb, 0xd6, 0xbd, 0x0a, 0xfc,
|
||||
0x24, 0x0f, 0xe9, 0x0b, 0x43, 0x9b, 0xd9, 0x9f, 0x90, 0x51, 0x73, 0xa6,
|
||||
0x5e, 0x3c, 0xd2, 0xfc, 0x81, 0x07, 0xfd, 0xbf, 0x1d, 0x74, 0xd3, 0x40,
|
||||
0xfe, 0xef, 0xc3, 0x8f, 0x07, 0xfa, 0x8e, 0xb8, 0xdc, 0xeb, 0xa9, 0xc5,
|
||||
0x30, 0xdf, 0xbb, 0x1b, 0x87, 0x80, 0x0f, 0xd0, 0xfe, 0xa3, 0xaf, 0xff,
|
||||
0xd9
|
||||
};
|
||||
unsigned int logo_jpg_len = 7561;
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "sdkconfig.h"
|
||||
#include "unity.h"
|
||||
|
||||
|
||||
#include "../include/jpeg_decoder.h"
|
||||
#include "test_logo_jpg.h"
|
||||
#include "test_logo_rgb888.h"
|
||||
|
||||
#define TESTW 46
|
||||
#define TESTH 46
|
||||
|
||||
TEST_CASE("Test JPEG decompression library", "[esp_jpeg]")
|
||||
{
|
||||
char aapix[] = " .:;+=xX$$";
|
||||
unsigned char *decoded, *p, *o;
|
||||
int x, y, v;
|
||||
int decoded_outsize = TESTW * TESTH * 3;
|
||||
|
||||
decoded = malloc(decoded_outsize);
|
||||
for (x = 0; x < decoded_outsize; x += 2) {
|
||||
decoded[x] = 0;
|
||||
decoded[x + 1] = 0xff;
|
||||
}
|
||||
|
||||
/* JPEG decode */
|
||||
esp_jpeg_image_cfg_t jpeg_cfg = {
|
||||
.indata = (uint8_t *)logo_jpg,
|
||||
.indata_size = sizeof(logo_jpg),
|
||||
.outbuf = decoded,
|
||||
.outbuf_size = decoded_outsize,
|
||||
.out_format = JPEG_IMAGE_FORMAT_RGB888,
|
||||
.out_scale = JPEG_IMAGE_SCALE_0,
|
||||
.flags = {
|
||||
.swap_color_bytes = 0,
|
||||
}
|
||||
};
|
||||
esp_jpeg_image_output_t outimg;
|
||||
esp_err_t err = esp_jpeg_decode(&jpeg_cfg, &outimg);
|
||||
TEST_ASSERT_EQUAL(err, ESP_OK);
|
||||
|
||||
/* Decoded image size */
|
||||
TEST_ASSERT_EQUAL(outimg.width, TESTW);
|
||||
TEST_ASSERT_EQUAL(outimg.height, TESTH);
|
||||
|
||||
p = decoded;
|
||||
o = logo_rgb888;
|
||||
for (x = 0; x < outimg.width * outimg.height; x++) {
|
||||
/* The color can be +- 2 */
|
||||
TEST_ASSERT(p[0] >= (o[0] - 2) && p[0] <= (o[0] + 2));
|
||||
TEST_ASSERT(p[1] >= (o[1] - 2) && p[1] <= (o[1] + 2));
|
||||
TEST_ASSERT(p[2] >= (o[2] - 2) && p[2] <= (o[2] + 2));
|
||||
|
||||
p += 3;
|
||||
o += 3;
|
||||
}
|
||||
|
||||
p = decoded + 2;
|
||||
for (y = 0; y < outimg.width; y++) {
|
||||
for (x = 0; x < outimg.height; x++) {
|
||||
v = ((*p) * (sizeof(aapix) - 2) * 2) / 256;
|
||||
printf("%c%c", aapix[v / 2], aapix[(v + 1) / 2]);
|
||||
p += 3;
|
||||
}
|
||||
printf("%c%c", ' ', '\n');
|
||||
}
|
||||
|
||||
|
||||
free(decoded);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,102 @@
|
|||
/*----------------------------------------------------------------------------/
|
||||
/ TJpgDec - Tiny JPEG Decompressor R0.03 include file (C)ChaN, 2021
|
||||
/----------------------------------------------------------------------------*/
|
||||
#ifndef DEF_TJPGDEC
|
||||
#define DEF_TJPGDEC
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "tjpgdcnf.h"
|
||||
#include <string.h>
|
||||
|
||||
#if defined(_WIN32) /* VC++ or some compiler without stdint.h */
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned long uint32_t;
|
||||
typedef long int32_t;
|
||||
#else /* Embedded platform */
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#if JD_FASTDECODE >= 1
|
||||
typedef int16_t jd_yuv_t;
|
||||
#else
|
||||
typedef uint8_t jd_yuv_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* Error code */
|
||||
typedef enum {
|
||||
JDR_OK = 0, /* 0: Succeeded */
|
||||
JDR_INTR, /* 1: Interrupted by output function */
|
||||
JDR_INP, /* 2: Device error or wrong termination of input stream */
|
||||
JDR_MEM1, /* 3: Insufficient memory pool for the image */
|
||||
JDR_MEM2, /* 4: Insufficient stream input buffer */
|
||||
JDR_PAR, /* 5: Parameter error */
|
||||
JDR_FMT1, /* 6: Data format error (may be broken data) */
|
||||
JDR_FMT2, /* 7: Right format but not supported */
|
||||
JDR_FMT3 /* 8: Not supported JPEG standard */
|
||||
} JRESULT;
|
||||
|
||||
|
||||
|
||||
/* Rectangular region in the output image */
|
||||
typedef struct {
|
||||
uint16_t left; /* Left end */
|
||||
uint16_t right; /* Right end */
|
||||
uint16_t top; /* Top end */
|
||||
uint16_t bottom; /* Bottom end */
|
||||
} JRECT;
|
||||
|
||||
|
||||
|
||||
/* Decompressor object structure */
|
||||
typedef struct JDEC JDEC;
|
||||
struct JDEC {
|
||||
size_t dctr; /* Number of bytes available in the input buffer */
|
||||
uint8_t *dptr; /* Current data read ptr */
|
||||
uint8_t *inbuf; /* Bit stream input buffer */
|
||||
uint8_t dbit; /* Number of bits availavble in wreg or reading bit mask */
|
||||
uint8_t scale; /* Output scaling ratio */
|
||||
uint8_t msx, msy; /* MCU size in unit of block (width, height) */
|
||||
uint8_t qtid[3]; /* Quantization table ID of each component, Y, Cb, Cr */
|
||||
uint8_t ncomp; /* Number of color components 1:grayscale, 3:color */
|
||||
int16_t dcv[3]; /* Previous DC element of each component */
|
||||
uint16_t nrst; /* Restart inverval */
|
||||
uint16_t width, height; /* Size of the input image (pixel) */
|
||||
uint8_t *huffbits[2][2]; /* Huffman bit distribution tables [id][dcac] */
|
||||
uint16_t *huffcode[2][2]; /* Huffman code word tables [id][dcac] */
|
||||
uint8_t *huffdata[2][2]; /* Huffman decoded data tables [id][dcac] */
|
||||
int32_t *qttbl[4]; /* Dequantizer tables [id] */
|
||||
#if JD_FASTDECODE >= 1
|
||||
uint32_t wreg; /* Working shift register */
|
||||
uint8_t marker; /* Detected marker (0:None) */
|
||||
#if JD_FASTDECODE == 2
|
||||
uint8_t longofs[2][2]; /* Table offset of long code [id][dcac] */
|
||||
uint16_t *hufflut_ac[2]; /* Fast huffman decode tables for AC short code [id] */
|
||||
uint8_t *hufflut_dc[2]; /* Fast huffman decode tables for DC short code [id] */
|
||||
#endif
|
||||
#endif
|
||||
void *workbuf; /* Working buffer for IDCT and RGB output */
|
||||
jd_yuv_t *mcubuf; /* Working buffer for the MCU */
|
||||
void *pool; /* Pointer to available memory pool */
|
||||
size_t sz_pool; /* Size of momory pool (bytes available) */
|
||||
size_t (*infunc)(JDEC *, uint8_t *, size_t); /* Pointer to jpeg stream input function */
|
||||
void *device; /* Pointer to I/O device identifiler for the session */
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* TJpgDec API functions */
|
||||
JRESULT jd_prepare (JDEC *jd, size_t (*infunc)(JDEC *, uint8_t *, size_t), void *pool, size_t sz_pool, void *dev);
|
||||
JRESULT jd_decomp (JDEC *jd, int (*outfunc)(JDEC *, void *, JRECT *), uint8_t scale);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _TJPGDEC */
|
|
@ -0,0 +1,35 @@
|
|||
/*----------------------------------------------*/
|
||||
/* TJpgDec System Configurations R0.03 */
|
||||
/*----------------------------------------------*/
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#define JD_SZBUF CONFIG_JD_SZBUF
|
||||
/* Specifies size of stream input buffer */
|
||||
|
||||
#define JD_FORMAT CONFIG_JD_FORMAT
|
||||
/* Specifies output pixel format.
|
||||
/ 0: RGB888 (24-bit/pix)
|
||||
/ 1: RGB565 (16-bit/pix)
|
||||
/ 2: Grayscale (8-bit/pix)
|
||||
*/
|
||||
|
||||
#define JD_USE_SCALE CONFIG_JD_USE_SCALE
|
||||
/* Switches output descaling feature.
|
||||
/ 0: Disable
|
||||
/ 1: Enable
|
||||
*/
|
||||
|
||||
#define JD_TBLCLIP CONFIG_JD_TBLCLIP
|
||||
/* Use table conversion for saturation arithmetic. A bit faster, but increases 1 KB of code size.
|
||||
/ 0: Disable
|
||||
/ 1: Enable
|
||||
*/
|
||||
|
||||
#define JD_FASTDECODE CONFIG_JD_FASTDECODE
|
||||
/* Optimization level
|
||||
/ 0: Basic optimization. Suitable for 8/16-bit MCUs.
|
||||
/ 1: + 32-bit barrel shifter. Suitable for 32-bit MCUs.
|
||||
/ 2: + Table conversion for huffman decoding (wants 6 << HUFF_BIT bytes of RAM)
|
||||
*/
|
||||
|
|
@ -9,7 +9,7 @@ set(EXTRA_COMPONENT_DIRS ../libsodium ../expat ../cbor ../jsmn ../qrcode ../coap
|
|||
|
||||
# 2. Add here if the component is compatible with IDF >= v4.4
|
||||
if("${IDF_VERSION_MAJOR}.${IDF_VERSION_MINOR}" VERSION_GREATER_EQUAL "4.4")
|
||||
list(APPEND EXTRA_COMPONENT_DIRS ../pid_ctrl ../esp_encrypted_img ../pcap)
|
||||
list(APPEND EXTRA_COMPONENT_DIRS ../pid_ctrl ../esp_encrypted_img ../pcap ../esp_jpeg)
|
||||
endif()
|
||||
|
||||
# 3. Add here if the component is compatible with IDF >= v5.0
|
||||
|
|
Loading…
Reference in New Issue