162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Topro TP6800/6810 webcam driver. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr) 662306a36Sopenharmony_ci * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se) 762306a36Sopenharmony_ci * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com) 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "gspca.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ciMODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver"); 1562306a36Sopenharmony_ciMODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, Anders Blomdell <anders.blomdell@control.lth.se>"); 1662306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistatic int force_sensor = -1; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci/* JPEG header */ 2162306a36Sopenharmony_cistatic const u8 jpeg_head[] = { 2262306a36Sopenharmony_ci 0xff, 0xd8, /* jpeg */ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci/* quantization table quality 50% */ 2562306a36Sopenharmony_ci 0xff, 0xdb, 0x00, 0x84, /* DQT */ 2662306a36Sopenharmony_ci0, 2762306a36Sopenharmony_ci#define JPEG_QT0_OFFSET 7 2862306a36Sopenharmony_ci 0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e, 2962306a36Sopenharmony_ci 0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28, 3062306a36Sopenharmony_ci 0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25, 3162306a36Sopenharmony_ci 0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33, 3262306a36Sopenharmony_ci 0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44, 3362306a36Sopenharmony_ci 0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57, 3462306a36Sopenharmony_ci 0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71, 3562306a36Sopenharmony_ci 0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63, 3662306a36Sopenharmony_ci1, 3762306a36Sopenharmony_ci#define JPEG_QT1_OFFSET 72 3862306a36Sopenharmony_ci 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a, 3962306a36Sopenharmony_ci 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63, 4062306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 4162306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 4262306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 4362306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 4462306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 4562306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci /* Define Huffman table (thanks to Thomas Kaiser) */ 4862306a36Sopenharmony_ci 0xff, 0xc4, 0x01, 0x5e, 4962306a36Sopenharmony_ci 0x00, 0x00, 0x02, 0x03, 5062306a36Sopenharmony_ci 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 5162306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 5262306a36Sopenharmony_ci 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 5362306a36Sopenharmony_ci 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 5462306a36Sopenharmony_ci 0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 5562306a36Sopenharmony_ci 0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21, 5662306a36Sopenharmony_ci 0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32, 5762306a36Sopenharmony_ci 0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52, 5862306a36Sopenharmony_ci 0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1, 5962306a36Sopenharmony_ci 0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2, 6062306a36Sopenharmony_ci 0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25, 6162306a36Sopenharmony_ci 0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44, 6262306a36Sopenharmony_ci 0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57, 6362306a36Sopenharmony_ci 0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73, 6462306a36Sopenharmony_ci 0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85, 6562306a36Sopenharmony_ci 0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97, 6662306a36Sopenharmony_ci 0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 6762306a36Sopenharmony_ci 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 6862306a36Sopenharmony_ci 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 6962306a36Sopenharmony_ci 0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 7062306a36Sopenharmony_ci 0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 7162306a36Sopenharmony_ci 0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 7262306a36Sopenharmony_ci 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 7362306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 7462306a36Sopenharmony_ci 0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02, 7562306a36Sopenharmony_ci 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 7662306a36Sopenharmony_ci 0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01, 7762306a36Sopenharmony_ci 0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13, 7862306a36Sopenharmony_ci 0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14, 7962306a36Sopenharmony_ci 0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1, 8062306a36Sopenharmony_ci 0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43, 8162306a36Sopenharmony_ci 0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82, 8262306a36Sopenharmony_ci 0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28, 8362306a36Sopenharmony_ci 0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47, 8462306a36Sopenharmony_ci 0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64, 8562306a36Sopenharmony_ci 0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76, 8662306a36Sopenharmony_ci 0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 8762306a36Sopenharmony_ci 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3, 8862306a36Sopenharmony_ci 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4, 8962306a36Sopenharmony_ci 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5, 9062306a36Sopenharmony_ci 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 9162306a36Sopenharmony_ci 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 9262306a36Sopenharmony_ci 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 9362306a36Sopenharmony_ci 0xff, 0xc0, 0x00, 0x11, /* SOF0 (start of frame 0 */ 9462306a36Sopenharmony_ci 0x08, /* data precision */ 9562306a36Sopenharmony_ci#define JPEG_HEIGHT_OFFSET 493 9662306a36Sopenharmony_ci 0x01, 0xe0, /* height */ 9762306a36Sopenharmony_ci 0x02, 0x80, /* width */ 9862306a36Sopenharmony_ci 0x03, /* component number */ 9962306a36Sopenharmony_ci 0x01, 10062306a36Sopenharmony_ci 0x21, /* samples Y = jpeg 422 */ 10162306a36Sopenharmony_ci 0x00, /* quant Y */ 10262306a36Sopenharmony_ci 0x02, 0x11, 0x01, /* samples CbCr - quant CbCr */ 10362306a36Sopenharmony_ci 0x03, 0x11, 0x01, 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci 0xff, 0xda, 0x00, 0x0c, /* SOS (start of scan) */ 10662306a36Sopenharmony_ci 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00 10762306a36Sopenharmony_ci#define JPEG_HDR_SZ 521 10862306a36Sopenharmony_ci}; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_cistruct sd { 11162306a36Sopenharmony_ci struct gspca_dev gspca_dev; /* !! must be the first item */ 11262306a36Sopenharmony_ci struct v4l2_ctrl *jpegqual; 11362306a36Sopenharmony_ci struct v4l2_ctrl *sharpness; 11462306a36Sopenharmony_ci struct v4l2_ctrl *gamma; 11562306a36Sopenharmony_ci struct v4l2_ctrl *blue; 11662306a36Sopenharmony_ci struct v4l2_ctrl *red; 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci u8 framerate; 11962306a36Sopenharmony_ci u8 quality; /* webcam current JPEG quality (0..16) */ 12062306a36Sopenharmony_ci s8 ag_cnt; /* autogain / start counter for tp6810 */ 12162306a36Sopenharmony_ci#define AG_CNT_START 13 /* check gain every N frames */ 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci u8 bridge; 12462306a36Sopenharmony_ci u8 sensor; 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci u8 jpeg_hdr[JPEG_HDR_SZ]; 12762306a36Sopenharmony_ci}; 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_cienum bridges { 13062306a36Sopenharmony_ci BRIDGE_TP6800, 13162306a36Sopenharmony_ci BRIDGE_TP6810, 13262306a36Sopenharmony_ci}; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_cienum sensors { 13562306a36Sopenharmony_ci SENSOR_CX0342, 13662306a36Sopenharmony_ci SENSOR_SOI763A, /* ~= ov7630 / ov7648 */ 13762306a36Sopenharmony_ci NSENSORS 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cistatic const struct v4l2_pix_format vga_mode[] = { 14162306a36Sopenharmony_ci {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, 14262306a36Sopenharmony_ci .bytesperline = 320, 14362306a36Sopenharmony_ci .sizeimage = 320 * 240 * 4 / 8 + 590, 14462306a36Sopenharmony_ci .colorspace = V4L2_COLORSPACE_JPEG}, 14562306a36Sopenharmony_ci {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE, 14662306a36Sopenharmony_ci .bytesperline = 640, 14762306a36Sopenharmony_ci .sizeimage = 640 * 480 * 3 / 8 + 590, 14862306a36Sopenharmony_ci .colorspace = V4L2_COLORSPACE_JPEG} 14962306a36Sopenharmony_ci}; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci/* 15262306a36Sopenharmony_ci * JPEG quality 15362306a36Sopenharmony_ci * index: webcam compression 15462306a36Sopenharmony_ci * value: JPEG quality in % 15562306a36Sopenharmony_ci */ 15662306a36Sopenharmony_cistatic const u8 jpeg_q[17] = { 15762306a36Sopenharmony_ci 88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94 15862306a36Sopenharmony_ci}; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci#define BULK_OUT_SIZE 0x20 16162306a36Sopenharmony_ci#if BULK_OUT_SIZE > USB_BUF_SZ 16262306a36Sopenharmony_ci#error "USB buffer too small" 16362306a36Sopenharmony_ci#endif 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci#define DEFAULT_FRAME_RATE 30 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_cistatic const u8 rates[] = {30, 20, 15, 10, 7, 5}; 16862306a36Sopenharmony_cistatic const struct framerates framerates[] = { 16962306a36Sopenharmony_ci { 17062306a36Sopenharmony_ci .rates = rates, 17162306a36Sopenharmony_ci .nrates = ARRAY_SIZE(rates) 17262306a36Sopenharmony_ci }, 17362306a36Sopenharmony_ci { 17462306a36Sopenharmony_ci .rates = rates, 17562306a36Sopenharmony_ci .nrates = ARRAY_SIZE(rates) 17662306a36Sopenharmony_ci } 17762306a36Sopenharmony_ci}; 17862306a36Sopenharmony_cistatic const u8 rates_6810[] = {30, 15, 10, 7, 5}; 17962306a36Sopenharmony_cistatic const struct framerates framerates_6810[] = { 18062306a36Sopenharmony_ci { 18162306a36Sopenharmony_ci .rates = rates_6810, 18262306a36Sopenharmony_ci .nrates = ARRAY_SIZE(rates_6810) 18362306a36Sopenharmony_ci }, 18462306a36Sopenharmony_ci { 18562306a36Sopenharmony_ci .rates = rates_6810, 18662306a36Sopenharmony_ci .nrates = ARRAY_SIZE(rates_6810) 18762306a36Sopenharmony_ci } 18862306a36Sopenharmony_ci}; 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci/* 19162306a36Sopenharmony_ci * webcam quality in % 19262306a36Sopenharmony_ci * the last value is the ultra fine quality 19362306a36Sopenharmony_ci */ 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci/* TP6800 register offsets */ 19662306a36Sopenharmony_ci#define TP6800_R10_SIF_TYPE 0x10 19762306a36Sopenharmony_ci#define TP6800_R11_SIF_CONTROL 0x11 19862306a36Sopenharmony_ci#define TP6800_R12_SIF_ADDR_S 0x12 19962306a36Sopenharmony_ci#define TP6800_R13_SIF_TX_DATA 0x13 20062306a36Sopenharmony_ci#define TP6800_R14_SIF_RX_DATA 0x14 20162306a36Sopenharmony_ci#define TP6800_R15_GPIO_PU 0x15 20262306a36Sopenharmony_ci#define TP6800_R16_GPIO_PD 0x16 20362306a36Sopenharmony_ci#define TP6800_R17_GPIO_IO 0x17 20462306a36Sopenharmony_ci#define TP6800_R18_GPIO_DATA 0x18 20562306a36Sopenharmony_ci#define TP6800_R19_SIF_ADDR_S2 0x19 20662306a36Sopenharmony_ci#define TP6800_R1A_SIF_TX_DATA2 0x1a 20762306a36Sopenharmony_ci#define TP6800_R1B_SIF_RX_DATA2 0x1b 20862306a36Sopenharmony_ci#define TP6800_R21_ENDP_1_CTL 0x21 20962306a36Sopenharmony_ci#define TP6800_R2F_TIMING_CFG 0x2f 21062306a36Sopenharmony_ci#define TP6800_R30_SENSOR_CFG 0x30 21162306a36Sopenharmony_ci#define TP6800_R31_PIXEL_START 0x31 21262306a36Sopenharmony_ci#define TP6800_R32_PIXEL_END_L 0x32 21362306a36Sopenharmony_ci#define TP6800_R33_PIXEL_END_H 0x33 21462306a36Sopenharmony_ci#define TP6800_R34_LINE_START 0x34 21562306a36Sopenharmony_ci#define TP6800_R35_LINE_END_L 0x35 21662306a36Sopenharmony_ci#define TP6800_R36_LINE_END_H 0x36 21762306a36Sopenharmony_ci#define TP6800_R37_FRONT_DARK_ST 0x37 21862306a36Sopenharmony_ci#define TP6800_R38_FRONT_DARK_END 0x38 21962306a36Sopenharmony_ci#define TP6800_R39_REAR_DARK_ST_L 0x39 22062306a36Sopenharmony_ci#define TP6800_R3A_REAR_DARK_ST_H 0x3a 22162306a36Sopenharmony_ci#define TP6800_R3B_REAR_DARK_END_L 0x3b 22262306a36Sopenharmony_ci#define TP6800_R3C_REAR_DARK_END_H 0x3c 22362306a36Sopenharmony_ci#define TP6800_R3D_HORIZ_DARK_LINE_L 0x3d 22462306a36Sopenharmony_ci#define TP6800_R3E_HORIZ_DARK_LINE_H 0x3e 22562306a36Sopenharmony_ci#define TP6800_R3F_FRAME_RATE 0x3f 22662306a36Sopenharmony_ci#define TP6800_R50 0x50 22762306a36Sopenharmony_ci#define TP6800_R51 0x51 22862306a36Sopenharmony_ci#define TP6800_R52 0x52 22962306a36Sopenharmony_ci#define TP6800_R53 0x53 23062306a36Sopenharmony_ci#define TP6800_R54_DARK_CFG 0x54 23162306a36Sopenharmony_ci#define TP6800_R55_GAMMA_R 0x55 23262306a36Sopenharmony_ci#define TP6800_R56_GAMMA_G 0x56 23362306a36Sopenharmony_ci#define TP6800_R57_GAMMA_B 0x57 23462306a36Sopenharmony_ci#define TP6800_R5C_EDGE_THRLD 0x5c 23562306a36Sopenharmony_ci#define TP6800_R5D_DEMOSAIC_CFG 0x5d 23662306a36Sopenharmony_ci#define TP6800_R78_FORMAT 0x78 23762306a36Sopenharmony_ci#define TP6800_R79_QUALITY 0x79 23862306a36Sopenharmony_ci#define TP6800_R7A_BLK_THRLD 0x7a 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci/* CX0342 register offsets */ 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci#define CX0342_SENSOR_ID 0x00 24362306a36Sopenharmony_ci#define CX0342_VERSION_NO 0x01 24462306a36Sopenharmony_ci#define CX0342_ORG_X_L 0x02 24562306a36Sopenharmony_ci#define CX0342_ORG_X_H 0x03 24662306a36Sopenharmony_ci#define CX0342_ORG_Y_L 0x04 24762306a36Sopenharmony_ci#define CX0342_ORG_Y_H 0x05 24862306a36Sopenharmony_ci#define CX0342_STOP_X_L 0x06 24962306a36Sopenharmony_ci#define CX0342_STOP_X_H 0x07 25062306a36Sopenharmony_ci#define CX0342_STOP_Y_L 0x08 25162306a36Sopenharmony_ci#define CX0342_STOP_Y_H 0x09 25262306a36Sopenharmony_ci#define CX0342_FRAME_WIDTH_L 0x0a 25362306a36Sopenharmony_ci#define CX0342_FRAME_WIDTH_H 0x0b 25462306a36Sopenharmony_ci#define CX0342_FRAME_HEIGH_L 0x0c 25562306a36Sopenharmony_ci#define CX0342_FRAME_HEIGH_H 0x0d 25662306a36Sopenharmony_ci#define CX0342_EXPO_LINE_L 0x10 25762306a36Sopenharmony_ci#define CX0342_EXPO_LINE_H 0x11 25862306a36Sopenharmony_ci#define CX0342_EXPO_CLK_L 0x12 25962306a36Sopenharmony_ci#define CX0342_EXPO_CLK_H 0x13 26062306a36Sopenharmony_ci#define CX0342_RAW_GRGAIN_L 0x14 26162306a36Sopenharmony_ci#define CX0342_RAW_GRGAIN_H 0x15 26262306a36Sopenharmony_ci#define CX0342_RAW_GBGAIN_L 0x16 26362306a36Sopenharmony_ci#define CX0342_RAW_GBGAIN_H 0x17 26462306a36Sopenharmony_ci#define CX0342_RAW_RGAIN_L 0x18 26562306a36Sopenharmony_ci#define CX0342_RAW_RGAIN_H 0x19 26662306a36Sopenharmony_ci#define CX0342_RAW_BGAIN_L 0x1a 26762306a36Sopenharmony_ci#define CX0342_RAW_BGAIN_H 0x1b 26862306a36Sopenharmony_ci#define CX0342_GLOBAL_GAIN 0x1c 26962306a36Sopenharmony_ci#define CX0342_SYS_CTRL_0 0x20 27062306a36Sopenharmony_ci#define CX0342_SYS_CTRL_1 0x21 27162306a36Sopenharmony_ci#define CX0342_SYS_CTRL_2 0x22 27262306a36Sopenharmony_ci#define CX0342_BYPASS_MODE 0x23 27362306a36Sopenharmony_ci#define CX0342_SYS_CTRL_3 0x24 27462306a36Sopenharmony_ci#define CX0342_TIMING_EN 0x25 27562306a36Sopenharmony_ci#define CX0342_OUTPUT_CTRL 0x26 27662306a36Sopenharmony_ci#define CX0342_AUTO_ADC_CALIB 0x27 27762306a36Sopenharmony_ci#define CX0342_SYS_CTRL_4 0x28 27862306a36Sopenharmony_ci#define CX0342_ADCGN 0x30 27962306a36Sopenharmony_ci#define CX0342_SLPCR 0x31 28062306a36Sopenharmony_ci#define CX0342_SLPFN_LO 0x32 28162306a36Sopenharmony_ci#define CX0342_ADC_CTL 0x33 28262306a36Sopenharmony_ci#define CX0342_LVRST_BLBIAS 0x34 28362306a36Sopenharmony_ci#define CX0342_VTHSEL 0x35 28462306a36Sopenharmony_ci#define CX0342_RAMP_RIV 0x36 28562306a36Sopenharmony_ci#define CX0342_LDOSEL 0x37 28662306a36Sopenharmony_ci#define CX0342_CLOCK_GEN 0x40 28762306a36Sopenharmony_ci#define CX0342_SOFT_RESET 0x41 28862306a36Sopenharmony_ci#define CX0342_PLL 0x42 28962306a36Sopenharmony_ci#define CX0342_DR_ENH_PULSE_OFFSET_L 0x43 29062306a36Sopenharmony_ci#define CX0342_DR_ENH_PULSE_OFFSET_H 0x44 29162306a36Sopenharmony_ci#define CX0342_DR_ENH_PULSE_POS_L 0x45 29262306a36Sopenharmony_ci#define CX0342_DR_ENH_PULSE_POS_H 0x46 29362306a36Sopenharmony_ci#define CX0342_DR_ENH_PULSE_WIDTH 0x47 29462306a36Sopenharmony_ci#define CX0342_AS_CURRENT_CNT_L 0x48 29562306a36Sopenharmony_ci#define CX0342_AS_CURRENT_CNT_H 0x49 29662306a36Sopenharmony_ci#define CX0342_AS_PREVIOUS_CNT_L 0x4a 29762306a36Sopenharmony_ci#define CX0342_AS_PREVIOUS_CNT_H 0x4b 29862306a36Sopenharmony_ci#define CX0342_SPV_VALUE_L 0x4c 29962306a36Sopenharmony_ci#define CX0342_SPV_VALUE_H 0x4d 30062306a36Sopenharmony_ci#define CX0342_GPXLTHD_L 0x50 30162306a36Sopenharmony_ci#define CX0342_GPXLTHD_H 0x51 30262306a36Sopenharmony_ci#define CX0342_RBPXLTHD_L 0x52 30362306a36Sopenharmony_ci#define CX0342_RBPXLTHD_H 0x53 30462306a36Sopenharmony_ci#define CX0342_PLANETHD_L 0x54 30562306a36Sopenharmony_ci#define CX0342_PLANETHD_H 0x55 30662306a36Sopenharmony_ci#define CX0342_ROWDARK_TH 0x56 30762306a36Sopenharmony_ci#define CX0342_ROWDARK_TOL 0x57 30862306a36Sopenharmony_ci#define CX0342_RB_GAP_L 0x58 30962306a36Sopenharmony_ci#define CX0342_RB_GAP_H 0x59 31062306a36Sopenharmony_ci#define CX0342_G_GAP_L 0x5a 31162306a36Sopenharmony_ci#define CX0342_G_GAP_H 0x5b 31262306a36Sopenharmony_ci#define CX0342_AUTO_ROW_DARK 0x60 31362306a36Sopenharmony_ci#define CX0342_MANUAL_DARK_VALUE 0x61 31462306a36Sopenharmony_ci#define CX0342_GB_DARK_OFFSET 0x62 31562306a36Sopenharmony_ci#define CX0342_GR_DARK_OFFSET 0x63 31662306a36Sopenharmony_ci#define CX0342_RED_DARK_OFFSET 0x64 31762306a36Sopenharmony_ci#define CX0342_BLUE_DARK_OFFSET 0x65 31862306a36Sopenharmony_ci#define CX0342_DATA_SCALING_MULTI 0x66 31962306a36Sopenharmony_ci#define CX0342_AUTOD_Q_FRAME 0x67 32062306a36Sopenharmony_ci#define CX0342_AUTOD_ALLOW_VARI 0x68 32162306a36Sopenharmony_ci#define CX0342_AUTO_DARK_VALUE_L 0x69 32262306a36Sopenharmony_ci#define CX0342_AUTO_DARK_VALUE_H 0x6a 32362306a36Sopenharmony_ci#define CX0342_IO_CTRL_0 0x70 32462306a36Sopenharmony_ci#define CX0342_IO_CTRL_1 0x71 32562306a36Sopenharmony_ci#define CX0342_IO_CTRL_2 0x72 32662306a36Sopenharmony_ci#define CX0342_IDLE_CTRL 0x73 32762306a36Sopenharmony_ci#define CX0342_TEST_MODE 0x74 32862306a36Sopenharmony_ci#define CX0342_FRAME_FIX_DATA_TEST 0x75 32962306a36Sopenharmony_ci#define CX0342_FRAME_CNT_TEST 0x76 33062306a36Sopenharmony_ci#define CX0342_RST_OVERFLOW_L 0x80 33162306a36Sopenharmony_ci#define CX0342_RST_OVERFLOW_H 0x81 33262306a36Sopenharmony_ci#define CX0342_RST_UNDERFLOW_L 0x82 33362306a36Sopenharmony_ci#define CX0342_RST_UNDERFLOW_H 0x83 33462306a36Sopenharmony_ci#define CX0342_DATA_OVERFLOW_L 0x84 33562306a36Sopenharmony_ci#define CX0342_DATA_OVERFLOW_H 0x85 33662306a36Sopenharmony_ci#define CX0342_DATA_UNDERFLOW_L 0x86 33762306a36Sopenharmony_ci#define CX0342_DATA_UNDERFLOW_H 0x87 33862306a36Sopenharmony_ci#define CX0342_CHANNEL_0_0_L_irst 0x90 33962306a36Sopenharmony_ci#define CX0342_CHANNEL_0_0_H_irst 0x91 34062306a36Sopenharmony_ci#define CX0342_CHANNEL_0_1_L_irst 0x92 34162306a36Sopenharmony_ci#define CX0342_CHANNEL_0_1_H_irst 0x93 34262306a36Sopenharmony_ci#define CX0342_CHANNEL_0_2_L_irst 0x94 34362306a36Sopenharmony_ci#define CX0342_CHANNEL_0_2_H_irst 0x95 34462306a36Sopenharmony_ci#define CX0342_CHANNEL_0_3_L_irst 0x96 34562306a36Sopenharmony_ci#define CX0342_CHANNEL_0_3_H_irst 0x97 34662306a36Sopenharmony_ci#define CX0342_CHANNEL_0_4_L_irst 0x98 34762306a36Sopenharmony_ci#define CX0342_CHANNEL_0_4_H_irst 0x99 34862306a36Sopenharmony_ci#define CX0342_CHANNEL_0_5_L_irst 0x9a 34962306a36Sopenharmony_ci#define CX0342_CHANNEL_0_5_H_irst 0x9b 35062306a36Sopenharmony_ci#define CX0342_CHANNEL_0_6_L_irst 0x9c 35162306a36Sopenharmony_ci#define CX0342_CHANNEL_0_6_H_irst 0x9d 35262306a36Sopenharmony_ci#define CX0342_CHANNEL_0_7_L_irst 0x9e 35362306a36Sopenharmony_ci#define CX0342_CHANNEL_0_7_H_irst 0x9f 35462306a36Sopenharmony_ci#define CX0342_CHANNEL_1_0_L_itx 0xa0 35562306a36Sopenharmony_ci#define CX0342_CHANNEL_1_0_H_itx 0xa1 35662306a36Sopenharmony_ci#define CX0342_CHANNEL_1_1_L_itx 0xa2 35762306a36Sopenharmony_ci#define CX0342_CHANNEL_1_1_H_itx 0xa3 35862306a36Sopenharmony_ci#define CX0342_CHANNEL_1_2_L_itx 0xa4 35962306a36Sopenharmony_ci#define CX0342_CHANNEL_1_2_H_itx 0xa5 36062306a36Sopenharmony_ci#define CX0342_CHANNEL_1_3_L_itx 0xa6 36162306a36Sopenharmony_ci#define CX0342_CHANNEL_1_3_H_itx 0xa7 36262306a36Sopenharmony_ci#define CX0342_CHANNEL_1_4_L_itx 0xa8 36362306a36Sopenharmony_ci#define CX0342_CHANNEL_1_4_H_itx 0xa9 36462306a36Sopenharmony_ci#define CX0342_CHANNEL_1_5_L_itx 0xaa 36562306a36Sopenharmony_ci#define CX0342_CHANNEL_1_5_H_itx 0xab 36662306a36Sopenharmony_ci#define CX0342_CHANNEL_1_6_L_itx 0xac 36762306a36Sopenharmony_ci#define CX0342_CHANNEL_1_6_H_itx 0xad 36862306a36Sopenharmony_ci#define CX0342_CHANNEL_1_7_L_itx 0xae 36962306a36Sopenharmony_ci#define CX0342_CHANNEL_1_7_H_itx 0xaf 37062306a36Sopenharmony_ci#define CX0342_CHANNEL_2_0_L_iwl 0xb0 37162306a36Sopenharmony_ci#define CX0342_CHANNEL_2_0_H_iwl 0xb1 37262306a36Sopenharmony_ci#define CX0342_CHANNEL_2_1_L_iwl 0xb2 37362306a36Sopenharmony_ci#define CX0342_CHANNEL_2_1_H_iwl 0xb3 37462306a36Sopenharmony_ci#define CX0342_CHANNEL_2_2_L_iwl 0xb4 37562306a36Sopenharmony_ci#define CX0342_CHANNEL_2_2_H_iwl 0xb5 37662306a36Sopenharmony_ci#define CX0342_CHANNEL_2_3_L_iwl 0xb6 37762306a36Sopenharmony_ci#define CX0342_CHANNEL_2_3_H_iwl 0xb7 37862306a36Sopenharmony_ci#define CX0342_CHANNEL_2_4_L_iwl 0xb8 37962306a36Sopenharmony_ci#define CX0342_CHANNEL_2_4_H_iwl 0xb9 38062306a36Sopenharmony_ci#define CX0342_CHANNEL_2_5_L_iwl 0xba 38162306a36Sopenharmony_ci#define CX0342_CHANNEL_2_5_H_iwl 0xbb 38262306a36Sopenharmony_ci#define CX0342_CHANNEL_2_6_L_iwl 0xbc 38362306a36Sopenharmony_ci#define CX0342_CHANNEL_2_6_H_iwl 0xbd 38462306a36Sopenharmony_ci#define CX0342_CHANNEL_2_7_L_iwl 0xbe 38562306a36Sopenharmony_ci#define CX0342_CHANNEL_2_7_H_iwl 0xbf 38662306a36Sopenharmony_ci#define CX0342_CHANNEL_3_0_L_ensp 0xc0 38762306a36Sopenharmony_ci#define CX0342_CHANNEL_3_0_H_ensp 0xc1 38862306a36Sopenharmony_ci#define CX0342_CHANNEL_3_1_L_ensp 0xc2 38962306a36Sopenharmony_ci#define CX0342_CHANNEL_3_1_H_ensp 0xc3 39062306a36Sopenharmony_ci#define CX0342_CHANNEL_3_2_L_ensp 0xc4 39162306a36Sopenharmony_ci#define CX0342_CHANNEL_3_2_H_ensp 0xc5 39262306a36Sopenharmony_ci#define CX0342_CHANNEL_3_3_L_ensp 0xc6 39362306a36Sopenharmony_ci#define CX0342_CHANNEL_3_3_H_ensp 0xc7 39462306a36Sopenharmony_ci#define CX0342_CHANNEL_3_4_L_ensp 0xc8 39562306a36Sopenharmony_ci#define CX0342_CHANNEL_3_4_H_ensp 0xc9 39662306a36Sopenharmony_ci#define CX0342_CHANNEL_3_5_L_ensp 0xca 39762306a36Sopenharmony_ci#define CX0342_CHANNEL_3_5_H_ensp 0xcb 39862306a36Sopenharmony_ci#define CX0342_CHANNEL_3_6_L_ensp 0xcc 39962306a36Sopenharmony_ci#define CX0342_CHANNEL_3_6_H_ensp 0xcd 40062306a36Sopenharmony_ci#define CX0342_CHANNEL_3_7_L_ensp 0xce 40162306a36Sopenharmony_ci#define CX0342_CHANNEL_3_7_H_ensp 0xcf 40262306a36Sopenharmony_ci#define CX0342_CHANNEL_4_0_L_sela 0xd0 40362306a36Sopenharmony_ci#define CX0342_CHANNEL_4_0_H_sela 0xd1 40462306a36Sopenharmony_ci#define CX0342_CHANNEL_4_1_L_sela 0xd2 40562306a36Sopenharmony_ci#define CX0342_CHANNEL_4_1_H_sela 0xd3 40662306a36Sopenharmony_ci#define CX0342_CHANNEL_5_0_L_intla 0xe0 40762306a36Sopenharmony_ci#define CX0342_CHANNEL_5_0_H_intla 0xe1 40862306a36Sopenharmony_ci#define CX0342_CHANNEL_5_1_L_intla 0xe2 40962306a36Sopenharmony_ci#define CX0342_CHANNEL_5_1_H_intla 0xe3 41062306a36Sopenharmony_ci#define CX0342_CHANNEL_5_2_L_intla 0xe4 41162306a36Sopenharmony_ci#define CX0342_CHANNEL_5_2_H_intla 0xe5 41262306a36Sopenharmony_ci#define CX0342_CHANNEL_5_3_L_intla 0xe6 41362306a36Sopenharmony_ci#define CX0342_CHANNEL_5_3_H_intla 0xe7 41462306a36Sopenharmony_ci#define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0 41562306a36Sopenharmony_ci#define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1 41662306a36Sopenharmony_ci#define CX0342_CHANNEL_7_1_L_cds_pos 0xf2 41762306a36Sopenharmony_ci#define CX0342_CHANNEL_7_1_H_cds_pos 0xf3 41862306a36Sopenharmony_ci#define CX0342_SENSOR_HEIGHT_L 0xfb 41962306a36Sopenharmony_ci#define CX0342_SENSOR_HEIGHT_H 0xfc 42062306a36Sopenharmony_ci#define CX0342_SENSOR_WIDTH_L 0xfd 42162306a36Sopenharmony_ci#define CX0342_SENSOR_WIDTH_H 0xfe 42262306a36Sopenharmony_ci#define CX0342_VSYNC_HSYNC_READ 0xff 42362306a36Sopenharmony_ci 42462306a36Sopenharmony_cistruct cmd { 42562306a36Sopenharmony_ci u8 reg; 42662306a36Sopenharmony_ci u8 val; 42762306a36Sopenharmony_ci}; 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_cistatic const u8 DQT[17][130] = { 43062306a36Sopenharmony_ci /* Define quantization table (thanks to Thomas Kaiser) */ 43162306a36Sopenharmony_ci { /* Quality 0 */ 43262306a36Sopenharmony_ci 0x00, 43362306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 43462306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 43562306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 43662306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 43762306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 43862306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 43962306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 44062306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 44162306a36Sopenharmony_ci 0x01, 44262306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06, 44362306a36Sopenharmony_ci 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18, 44462306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 44562306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 44662306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 44762306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 44862306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 44962306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 45062306a36Sopenharmony_ci }, 45162306a36Sopenharmony_ci { /* Quality 1 */ 45262306a36Sopenharmony_ci 0x00, 45362306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 45462306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 45562306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 45662306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 45762306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 45862306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09, 45962306a36Sopenharmony_ci 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 46062306a36Sopenharmony_ci 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 46162306a36Sopenharmony_ci 0x01, 46262306a36Sopenharmony_ci 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d, 46362306a36Sopenharmony_ci 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31, 46462306a36Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 46562306a36Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 46662306a36Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 46762306a36Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 46862306a36Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 46962306a36Sopenharmony_ci 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 47062306a36Sopenharmony_ci }, 47162306a36Sopenharmony_ci { /* Quality 2 */ 47262306a36Sopenharmony_ci 0x00, 47362306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 47462306a36Sopenharmony_ci 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 47562306a36Sopenharmony_ci 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 47662306a36Sopenharmony_ci 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 47762306a36Sopenharmony_ci 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 47862306a36Sopenharmony_ci 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 47962306a36Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 48062306a36Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 48162306a36Sopenharmony_ci 0x01, 48262306a36Sopenharmony_ci 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13, 48362306a36Sopenharmony_ci 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a, 48462306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 48562306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 48662306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 48762306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 48862306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 48962306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 49062306a36Sopenharmony_ci }, 49162306a36Sopenharmony_ci { /* Quality 3 */ 49262306a36Sopenharmony_ci 0x00, 49362306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 49462306a36Sopenharmony_ci 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 49562306a36Sopenharmony_ci 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 49662306a36Sopenharmony_ci 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 49762306a36Sopenharmony_ci 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 49862306a36Sopenharmony_ci 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13, 49962306a36Sopenharmony_ci 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 50062306a36Sopenharmony_ci 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 50162306a36Sopenharmony_ci 0x01, 50262306a36Sopenharmony_ci 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a, 50362306a36Sopenharmony_ci 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63, 50462306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 50562306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 50662306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 50762306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 50862306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 50962306a36Sopenharmony_ci 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 51062306a36Sopenharmony_ci }, 51162306a36Sopenharmony_ci { /* Quality 4 */ 51262306a36Sopenharmony_ci 0x00, 51362306a36Sopenharmony_ci 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 51462306a36Sopenharmony_ci 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05, 51562306a36Sopenharmony_ci 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 51662306a36Sopenharmony_ci 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 51762306a36Sopenharmony_ci 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 51862306a36Sopenharmony_ci 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17, 51962306a36Sopenharmony_ci 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 52062306a36Sopenharmony_ci 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 52162306a36Sopenharmony_ci 0x01, 52262306a36Sopenharmony_ci 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20, 52362306a36Sopenharmony_ci 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b, 52462306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 52562306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 52662306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 52762306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 52862306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 52962306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 53062306a36Sopenharmony_ci }, 53162306a36Sopenharmony_ci { /* Quality 5 */ 53262306a36Sopenharmony_ci 0x00, 53362306a36Sopenharmony_ci 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 53462306a36Sopenharmony_ci 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06, 53562306a36Sopenharmony_ci 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 53662306a36Sopenharmony_ci 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 53762306a36Sopenharmony_ci 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 53862306a36Sopenharmony_ci 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 53962306a36Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 54062306a36Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 54162306a36Sopenharmony_ci 0x01, 54262306a36Sopenharmony_ci 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27, 54362306a36Sopenharmony_ci 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94, 54462306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 54562306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 54662306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 54762306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 54862306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 54962306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 55062306a36Sopenharmony_ci }, 55162306a36Sopenharmony_ci { /* Quality 6 */ 55262306a36Sopenharmony_ci 0x00, 55362306a36Sopenharmony_ci 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 55462306a36Sopenharmony_ci 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07, 55562306a36Sopenharmony_ci 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 55662306a36Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 55762306a36Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 55862306a36Sopenharmony_ci 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21, 55962306a36Sopenharmony_ci 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 56062306a36Sopenharmony_ci 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 56162306a36Sopenharmony_ci 0x01, 56262306a36Sopenharmony_ci 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d, 56362306a36Sopenharmony_ci 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad, 56462306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 56562306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 56662306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 56762306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 56862306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 56962306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 57062306a36Sopenharmony_ci }, 57162306a36Sopenharmony_ci { /* Quality 7 */ 57262306a36Sopenharmony_ci 0x00, 57362306a36Sopenharmony_ci 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 57462306a36Sopenharmony_ci 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 57562306a36Sopenharmony_ci 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 57662306a36Sopenharmony_ci 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 57762306a36Sopenharmony_ci 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 57862306a36Sopenharmony_ci 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26, 57962306a36Sopenharmony_ci 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 58062306a36Sopenharmony_ci 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 58162306a36Sopenharmony_ci 0x01, 58262306a36Sopenharmony_ci 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34, 58362306a36Sopenharmony_ci 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6, 58462306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 58562306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 58662306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 58762306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 58862306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 58962306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 59062306a36Sopenharmony_ci }, 59162306a36Sopenharmony_ci { /* Quality 8 */ 59262306a36Sopenharmony_ci 0x00, 59362306a36Sopenharmony_ci 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 59462306a36Sopenharmony_ci 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a, 59562306a36Sopenharmony_ci 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 59662306a36Sopenharmony_ci 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 59762306a36Sopenharmony_ci 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 59862306a36Sopenharmony_ci 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 59962306a36Sopenharmony_ci 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 60062306a36Sopenharmony_ci 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 60162306a36Sopenharmony_ci 0x01, 60262306a36Sopenharmony_ci 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41, 60362306a36Sopenharmony_ci 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7, 60462306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 60562306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 60662306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 60762306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 60862306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 60962306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 61062306a36Sopenharmony_ci }, 61162306a36Sopenharmony_ci { /* Quality 9 */ 61262306a36Sopenharmony_ci 0x00, 61362306a36Sopenharmony_ci 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 61462306a36Sopenharmony_ci 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 61562306a36Sopenharmony_ci 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 61662306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 61762306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 61862306a36Sopenharmony_ci 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39, 61962306a36Sopenharmony_ci 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 62062306a36Sopenharmony_ci 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 62162306a36Sopenharmony_ci 0x01, 62262306a36Sopenharmony_ci 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e, 62362306a36Sopenharmony_ci 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff, 62462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 62562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 62662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 62762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 62862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 62962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 63062306a36Sopenharmony_ci }, 63162306a36Sopenharmony_ci { /* Quality 10 */ 63262306a36Sopenharmony_ci 0x00, 63362306a36Sopenharmony_ci 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 63462306a36Sopenharmony_ci 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e, 63562306a36Sopenharmony_ci 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 63662306a36Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 63762306a36Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 63862306a36Sopenharmony_ci 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42, 63962306a36Sopenharmony_ci 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 64062306a36Sopenharmony_ci 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 64162306a36Sopenharmony_ci 0x01, 64262306a36Sopenharmony_ci 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b, 64362306a36Sopenharmony_ci 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff, 64462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 64562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 64662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 64762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 64862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 64962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 65062306a36Sopenharmony_ci }, 65162306a36Sopenharmony_ci { /* Quality 11 */ 65262306a36Sopenharmony_ci 0x00, 65362306a36Sopenharmony_ci 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 65462306a36Sopenharmony_ci 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 65562306a36Sopenharmony_ci 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 65662306a36Sopenharmony_ci 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 65762306a36Sopenharmony_ci 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 65862306a36Sopenharmony_ci 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 65962306a36Sopenharmony_ci 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 66062306a36Sopenharmony_ci 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 66162306a36Sopenharmony_ci 0x01, 66262306a36Sopenharmony_ci 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68, 66362306a36Sopenharmony_ci 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 66462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 66562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 66662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 66762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 66862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 66962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 67062306a36Sopenharmony_ci }, 67162306a36Sopenharmony_ci { /* Quality 12 */ 67262306a36Sopenharmony_ci 0x00, 67362306a36Sopenharmony_ci 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 67462306a36Sopenharmony_ci 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14, 67562306a36Sopenharmony_ci 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 67662306a36Sopenharmony_ci 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 67762306a36Sopenharmony_ci 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 67862306a36Sopenharmony_ci 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 67962306a36Sopenharmony_ci 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 68062306a36Sopenharmony_ci 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 68162306a36Sopenharmony_ci 0x01, 68262306a36Sopenharmony_ci 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82, 68362306a36Sopenharmony_ci 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 68462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 68562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 68662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 68762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 68862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 68962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 69062306a36Sopenharmony_ci }, 69162306a36Sopenharmony_ci { /* Quality 13 */ 69262306a36Sopenharmony_ci 0x00, 69362306a36Sopenharmony_ci 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 69462306a36Sopenharmony_ci 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18, 69562306a36Sopenharmony_ci 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 69662306a36Sopenharmony_ci 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 69762306a36Sopenharmony_ci 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 69862306a36Sopenharmony_ci 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72, 69962306a36Sopenharmony_ci 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 70062306a36Sopenharmony_ci 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 70162306a36Sopenharmony_ci 0x01, 70262306a36Sopenharmony_ci 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c, 70362306a36Sopenharmony_ci 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 70462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 70562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 70662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 70762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 70862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 70962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 71062306a36Sopenharmony_ci }, 71162306a36Sopenharmony_ci { /* Quality 14 */ 71262306a36Sopenharmony_ci 0x00, 71362306a36Sopenharmony_ci 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 71462306a36Sopenharmony_ci 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c, 71562306a36Sopenharmony_ci 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 71662306a36Sopenharmony_ci 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 71762306a36Sopenharmony_ci 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 71862306a36Sopenharmony_ci 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85, 71962306a36Sopenharmony_ci 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 72062306a36Sopenharmony_ci 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 72162306a36Sopenharmony_ci 0x01, 72262306a36Sopenharmony_ci 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6, 72362306a36Sopenharmony_ci 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 72962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 73062306a36Sopenharmony_ci }, 73162306a36Sopenharmony_ci { /* Quality 15 */ 73262306a36Sopenharmony_ci 0x00, 73362306a36Sopenharmony_ci 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 73462306a36Sopenharmony_ci 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 73562306a36Sopenharmony_ci 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 73662306a36Sopenharmony_ci 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 73762306a36Sopenharmony_ci 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 73862306a36Sopenharmony_ci 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98, 73962306a36Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 74062306a36Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 74162306a36Sopenharmony_ci 0x01, 74262306a36Sopenharmony_ci 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0, 74362306a36Sopenharmony_ci 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 74462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 74562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 74662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 74762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 74862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 74962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 75062306a36Sopenharmony_ci }, 75162306a36Sopenharmony_ci { /* Quality 16-31 */ 75262306a36Sopenharmony_ci 0x00, 75362306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 75462306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 75562306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 75662306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 75762306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 75862306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 75962306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76062306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76162306a36Sopenharmony_ci 0x01, 76262306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76362306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76462306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76562306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76662306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76762306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76862306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 76962306a36Sopenharmony_ci 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 77062306a36Sopenharmony_ci } 77162306a36Sopenharmony_ci}; 77262306a36Sopenharmony_ci 77362306a36Sopenharmony_cistatic const struct cmd tp6810_cx_init_common[] = { 77462306a36Sopenharmony_ci {0x1c, 0x00}, 77562306a36Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, 77662306a36Sopenharmony_ci {0x4e, 0x00}, 77762306a36Sopenharmony_ci {0x4f, 0x00}, 77862306a36Sopenharmony_ci {TP6800_R50, 0xff}, 77962306a36Sopenharmony_ci {TP6800_R51, 0x03}, 78062306a36Sopenharmony_ci {0x00, 0x07}, 78162306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x03}, 78262306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x37}, 78362306a36Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x10}, 78462306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 78562306a36Sopenharmony_ci {TP6800_R52, 0x40}, 78662306a36Sopenharmony_ci {TP6800_R53, 0x40}, 78762306a36Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x40}, 78862306a36Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x18}, 78962306a36Sopenharmony_ci {0x4b, 0x00}, 79062306a36Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x83}, 79162306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x05}, 79262306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 79362306a36Sopenharmony_ci {0x7c, 0x04}, 79462306a36Sopenharmony_ci {0x25, 0x14}, 79562306a36Sopenharmony_ci {0x26, 0x0f}, 79662306a36Sopenharmony_ci {0x7b, 0x10}, 79762306a36Sopenharmony_ci}; 79862306a36Sopenharmony_ci 79962306a36Sopenharmony_cistatic const struct cmd tp6810_ov_init_common[] = { 80062306a36Sopenharmony_ci {0x1c, 0x00}, 80162306a36Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, 80262306a36Sopenharmony_ci {0x4e, 0x00}, 80362306a36Sopenharmony_ci {0x4f, 0x00}, 80462306a36Sopenharmony_ci {TP6800_R50, 0xff}, 80562306a36Sopenharmony_ci {TP6800_R51, 0x03}, 80662306a36Sopenharmony_ci {0x00, 0x07}, 80762306a36Sopenharmony_ci {TP6800_R52, 0x40}, 80862306a36Sopenharmony_ci {TP6800_R53, 0x40}, 80962306a36Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x40}, 81062306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x03}, 81162306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x17}, 81262306a36Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x18}, 81362306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 81462306a36Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x86}, 81562306a36Sopenharmony_ci {0x25, 0x18}, 81662306a36Sopenharmony_ci {0x26, 0x0f}, 81762306a36Sopenharmony_ci {0x7b, 0x90}, 81862306a36Sopenharmony_ci}; 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_cistatic const struct cmd tp6810_bridge_start[] = { 82162306a36Sopenharmony_ci {0x59, 0x88}, 82262306a36Sopenharmony_ci {0x5a, 0x0f}, 82362306a36Sopenharmony_ci {0x5b, 0x4e}, 82462306a36Sopenharmony_ci {TP6800_R5C_EDGE_THRLD, 0x63}, 82562306a36Sopenharmony_ci {TP6800_R5D_DEMOSAIC_CFG, 0x00}, 82662306a36Sopenharmony_ci {0x03, 0x7f}, 82762306a36Sopenharmony_ci {0x04, 0x80}, 82862306a36Sopenharmony_ci {0x06, 0x00}, 82962306a36Sopenharmony_ci {0x00, 0x00}, 83062306a36Sopenharmony_ci}; 83162306a36Sopenharmony_ci 83262306a36Sopenharmony_cistatic const struct cmd tp6810_late_start[] = { 83362306a36Sopenharmony_ci {0x7d, 0x01}, 83462306a36Sopenharmony_ci {0xb0, 0x04}, 83562306a36Sopenharmony_ci {0xb1, 0x04}, 83662306a36Sopenharmony_ci {0xb2, 0x04}, 83762306a36Sopenharmony_ci {0xb3, 0x04}, 83862306a36Sopenharmony_ci {0xb4, 0x04}, 83962306a36Sopenharmony_ci {0xb5, 0x04}, 84062306a36Sopenharmony_ci {0xb6, 0x08}, 84162306a36Sopenharmony_ci {0xb7, 0x08}, 84262306a36Sopenharmony_ci {0xb8, 0x04}, 84362306a36Sopenharmony_ci {0xb9, 0x04}, 84462306a36Sopenharmony_ci {0xba, 0x04}, 84562306a36Sopenharmony_ci {0xbb, 0x04}, 84662306a36Sopenharmony_ci {0xbc, 0x04}, 84762306a36Sopenharmony_ci {0xbd, 0x08}, 84862306a36Sopenharmony_ci {0xbe, 0x08}, 84962306a36Sopenharmony_ci {0xbf, 0x08}, 85062306a36Sopenharmony_ci {0xc0, 0x04}, 85162306a36Sopenharmony_ci {0xc1, 0x04}, 85262306a36Sopenharmony_ci {0xc2, 0x08}, 85362306a36Sopenharmony_ci {0xc3, 0x08}, 85462306a36Sopenharmony_ci {0xc4, 0x08}, 85562306a36Sopenharmony_ci {0xc5, 0x08}, 85662306a36Sopenharmony_ci {0xc6, 0x08}, 85762306a36Sopenharmony_ci {0xc7, 0x13}, 85862306a36Sopenharmony_ci {0xc8, 0x04}, 85962306a36Sopenharmony_ci {0xc9, 0x08}, 86062306a36Sopenharmony_ci {0xca, 0x08}, 86162306a36Sopenharmony_ci {0xcb, 0x08}, 86262306a36Sopenharmony_ci {0xcc, 0x08}, 86362306a36Sopenharmony_ci {0xcd, 0x08}, 86462306a36Sopenharmony_ci {0xce, 0x13}, 86562306a36Sopenharmony_ci {0xcf, 0x13}, 86662306a36Sopenharmony_ci {0xd0, 0x08}, 86762306a36Sopenharmony_ci {0xd1, 0x08}, 86862306a36Sopenharmony_ci {0xd2, 0x08}, 86962306a36Sopenharmony_ci {0xd3, 0x08}, 87062306a36Sopenharmony_ci {0xd4, 0x08}, 87162306a36Sopenharmony_ci {0xd5, 0x13}, 87262306a36Sopenharmony_ci {0xd6, 0x13}, 87362306a36Sopenharmony_ci {0xd7, 0x13}, 87462306a36Sopenharmony_ci {0xd8, 0x08}, 87562306a36Sopenharmony_ci {0xd9, 0x08}, 87662306a36Sopenharmony_ci {0xda, 0x08}, 87762306a36Sopenharmony_ci {0xdb, 0x08}, 87862306a36Sopenharmony_ci {0xdc, 0x13}, 87962306a36Sopenharmony_ci {0xdd, 0x13}, 88062306a36Sopenharmony_ci {0xde, 0x13}, 88162306a36Sopenharmony_ci {0xdf, 0x13}, 88262306a36Sopenharmony_ci {0xe0, 0x08}, 88362306a36Sopenharmony_ci {0xe1, 0x08}, 88462306a36Sopenharmony_ci {0xe2, 0x08}, 88562306a36Sopenharmony_ci {0xe3, 0x13}, 88662306a36Sopenharmony_ci {0xe4, 0x13}, 88762306a36Sopenharmony_ci {0xe5, 0x13}, 88862306a36Sopenharmony_ci {0xe6, 0x13}, 88962306a36Sopenharmony_ci {0xe7, 0x13}, 89062306a36Sopenharmony_ci {0xe8, 0x08}, 89162306a36Sopenharmony_ci {0xe9, 0x08}, 89262306a36Sopenharmony_ci {0xea, 0x13}, 89362306a36Sopenharmony_ci {0xeb, 0x13}, 89462306a36Sopenharmony_ci {0xec, 0x13}, 89562306a36Sopenharmony_ci {0xed, 0x13}, 89662306a36Sopenharmony_ci {0xee, 0x13}, 89762306a36Sopenharmony_ci {0xef, 0x13}, 89862306a36Sopenharmony_ci {0x7d, 0x02}, 89962306a36Sopenharmony_ci 90062306a36Sopenharmony_ci /* later after isoc start */ 90162306a36Sopenharmony_ci {0x7d, 0x08}, 90262306a36Sopenharmony_ci {0x7d, 0x00}, 90362306a36Sopenharmony_ci}; 90462306a36Sopenharmony_ci 90562306a36Sopenharmony_cistatic const struct cmd cx0342_timing_seq[] = { 90662306a36Sopenharmony_ci {CX0342_CHANNEL_0_1_L_irst, 0x20}, 90762306a36Sopenharmony_ci {CX0342_CHANNEL_0_2_L_irst, 0x24}, 90862306a36Sopenharmony_ci {CX0342_CHANNEL_0_2_H_irst, 0x00}, 90962306a36Sopenharmony_ci {CX0342_CHANNEL_0_3_L_irst, 0x2f}, 91062306a36Sopenharmony_ci {CX0342_CHANNEL_0_3_H_irst, 0x00}, 91162306a36Sopenharmony_ci {CX0342_CHANNEL_1_0_L_itx, 0x02}, 91262306a36Sopenharmony_ci {CX0342_CHANNEL_1_0_H_itx, 0x00}, 91362306a36Sopenharmony_ci {CX0342_CHANNEL_1_1_L_itx, 0x20}, 91462306a36Sopenharmony_ci {CX0342_CHANNEL_1_1_H_itx, 0x00}, 91562306a36Sopenharmony_ci {CX0342_CHANNEL_1_2_L_itx, 0xe4}, 91662306a36Sopenharmony_ci {CX0342_CHANNEL_1_2_H_itx, 0x00}, 91762306a36Sopenharmony_ci {CX0342_CHANNEL_1_3_L_itx, 0xee}, 91862306a36Sopenharmony_ci {CX0342_CHANNEL_1_3_H_itx, 0x00}, 91962306a36Sopenharmony_ci {CX0342_CHANNEL_2_0_L_iwl, 0x30}, 92062306a36Sopenharmony_ci {CX0342_CHANNEL_2_0_H_iwl, 0x00}, 92162306a36Sopenharmony_ci {CX0342_CHANNEL_3_0_L_ensp, 0x34}, 92262306a36Sopenharmony_ci {CX0342_CHANNEL_3_1_L_ensp, 0xe2}, 92362306a36Sopenharmony_ci {CX0342_CHANNEL_3_1_H_ensp, 0x00}, 92462306a36Sopenharmony_ci {CX0342_CHANNEL_3_2_L_ensp, 0xf6}, 92562306a36Sopenharmony_ci {CX0342_CHANNEL_3_2_H_ensp, 0x00}, 92662306a36Sopenharmony_ci {CX0342_CHANNEL_3_3_L_ensp, 0xf4}, 92762306a36Sopenharmony_ci {CX0342_CHANNEL_3_3_H_ensp, 0x02}, 92862306a36Sopenharmony_ci {CX0342_CHANNEL_4_0_L_sela, 0x26}, 92962306a36Sopenharmony_ci {CX0342_CHANNEL_4_0_H_sela, 0x00}, 93062306a36Sopenharmony_ci {CX0342_CHANNEL_4_1_L_sela, 0xe2}, 93162306a36Sopenharmony_ci {CX0342_CHANNEL_4_1_H_sela, 0x00}, 93262306a36Sopenharmony_ci {CX0342_CHANNEL_5_0_L_intla, 0x26}, 93362306a36Sopenharmony_ci {CX0342_CHANNEL_5_1_L_intla, 0x29}, 93462306a36Sopenharmony_ci {CX0342_CHANNEL_5_2_L_intla, 0xf0}, 93562306a36Sopenharmony_ci {CX0342_CHANNEL_5_2_H_intla, 0x00}, 93662306a36Sopenharmony_ci {CX0342_CHANNEL_5_3_L_intla, 0xf3}, 93762306a36Sopenharmony_ci {CX0342_CHANNEL_5_3_H_intla, 0x00}, 93862306a36Sopenharmony_ci {CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24}, 93962306a36Sopenharmony_ci {CX0342_CHANNEL_7_1_L_cds_pos, 0x02}, 94062306a36Sopenharmony_ci {CX0342_TIMING_EN, 0x01}, 94162306a36Sopenharmony_ci}; 94262306a36Sopenharmony_ci 94362306a36Sopenharmony_ci/* define the JPEG header */ 94462306a36Sopenharmony_cistatic void jpeg_define(u8 *jpeg_hdr, 94562306a36Sopenharmony_ci int height, 94662306a36Sopenharmony_ci int width) 94762306a36Sopenharmony_ci{ 94862306a36Sopenharmony_ci memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head); 94962306a36Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8; 95062306a36Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height; 95162306a36Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8; 95262306a36Sopenharmony_ci jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width; 95362306a36Sopenharmony_ci} 95462306a36Sopenharmony_ci 95562306a36Sopenharmony_ci/* set the JPEG quality for sensor soi763a */ 95662306a36Sopenharmony_cistatic void jpeg_set_qual(u8 *jpeg_hdr, 95762306a36Sopenharmony_ci int quality) 95862306a36Sopenharmony_ci{ 95962306a36Sopenharmony_ci int i, sc; 96062306a36Sopenharmony_ci 96162306a36Sopenharmony_ci if (quality <= 0) 96262306a36Sopenharmony_ci sc = 5000; 96362306a36Sopenharmony_ci else if (quality < 50) 96462306a36Sopenharmony_ci sc = 5000 / quality; 96562306a36Sopenharmony_ci else 96662306a36Sopenharmony_ci sc = 200 - quality * 2; 96762306a36Sopenharmony_ci for (i = 0; i < 64; i++) { 96862306a36Sopenharmony_ci jpeg_hdr[JPEG_QT0_OFFSET + i] = 96962306a36Sopenharmony_ci (jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100; 97062306a36Sopenharmony_ci jpeg_hdr[JPEG_QT1_OFFSET + i] = 97162306a36Sopenharmony_ci (jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100; 97262306a36Sopenharmony_ci } 97362306a36Sopenharmony_ci} 97462306a36Sopenharmony_ci 97562306a36Sopenharmony_cistatic void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value) 97662306a36Sopenharmony_ci{ 97762306a36Sopenharmony_ci struct usb_device *dev = gspca_dev->dev; 97862306a36Sopenharmony_ci int ret; 97962306a36Sopenharmony_ci 98062306a36Sopenharmony_ci if (gspca_dev->usb_err < 0) 98162306a36Sopenharmony_ci return; 98262306a36Sopenharmony_ci ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), 98362306a36Sopenharmony_ci 0x0e, 98462306a36Sopenharmony_ci USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 98562306a36Sopenharmony_ci value, index, NULL, 0, 500); 98662306a36Sopenharmony_ci if (ret < 0) { 98762306a36Sopenharmony_ci pr_err("reg_w err %d\n", ret); 98862306a36Sopenharmony_ci gspca_dev->usb_err = ret; 98962306a36Sopenharmony_ci } 99062306a36Sopenharmony_ci} 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_ci/* the returned value is in gspca_dev->usb_buf */ 99362306a36Sopenharmony_cistatic void reg_r(struct gspca_dev *gspca_dev, u8 index) 99462306a36Sopenharmony_ci{ 99562306a36Sopenharmony_ci struct usb_device *dev = gspca_dev->dev; 99662306a36Sopenharmony_ci int ret; 99762306a36Sopenharmony_ci 99862306a36Sopenharmony_ci if (gspca_dev->usb_err < 0) 99962306a36Sopenharmony_ci return; 100062306a36Sopenharmony_ci ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 100162306a36Sopenharmony_ci 0x0d, 100262306a36Sopenharmony_ci USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 100362306a36Sopenharmony_ci 0, index, gspca_dev->usb_buf, 1, 500); 100462306a36Sopenharmony_ci if (ret < 0) { 100562306a36Sopenharmony_ci pr_err("reg_r err %d\n", ret); 100662306a36Sopenharmony_ci gspca_dev->usb_err = ret; 100762306a36Sopenharmony_ci } 100862306a36Sopenharmony_ci} 100962306a36Sopenharmony_ci 101062306a36Sopenharmony_cistatic void reg_w_buf(struct gspca_dev *gspca_dev, 101162306a36Sopenharmony_ci const struct cmd *p, int l) 101262306a36Sopenharmony_ci{ 101362306a36Sopenharmony_ci do { 101462306a36Sopenharmony_ci reg_w(gspca_dev, p->reg, p->val); 101562306a36Sopenharmony_ci p++; 101662306a36Sopenharmony_ci } while (--l > 0); 101762306a36Sopenharmony_ci} 101862306a36Sopenharmony_ci 101962306a36Sopenharmony_cistatic int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value) 102062306a36Sopenharmony_ci{ 102162306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 102262306a36Sopenharmony_ci 102362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); 102462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index); 102562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value); 102662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01); 102762306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 102862306a36Sopenharmony_ci return 0; 102962306a36Sopenharmony_ci msleep(5); 103062306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R11_SIF_CONTROL); 103162306a36Sopenharmony_ci if (gspca_dev->usb_buf[0] == 0) 103262306a36Sopenharmony_ci return 0; 103362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); 103462306a36Sopenharmony_ci return -1; /* error */ 103562306a36Sopenharmony_ci} 103662306a36Sopenharmony_ci 103762306a36Sopenharmony_cistatic void i2c_w_buf(struct gspca_dev *gspca_dev, 103862306a36Sopenharmony_ci const struct cmd *p, int l) 103962306a36Sopenharmony_ci{ 104062306a36Sopenharmony_ci do { 104162306a36Sopenharmony_ci i2c_w(gspca_dev, p->reg, p->val); 104262306a36Sopenharmony_ci p++; 104362306a36Sopenharmony_ci } while (--l > 0); 104462306a36Sopenharmony_ci} 104562306a36Sopenharmony_ci 104662306a36Sopenharmony_cistatic int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len) 104762306a36Sopenharmony_ci{ 104862306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 104962306a36Sopenharmony_ci int v; 105062306a36Sopenharmony_ci 105162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index); 105262306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02); 105362306a36Sopenharmony_ci msleep(5); 105462306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA); 105562306a36Sopenharmony_ci v = gspca_dev->usb_buf[0]; 105662306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 105762306a36Sopenharmony_ci return v; 105862306a36Sopenharmony_ci if (len > 1) { 105962306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2); 106062306a36Sopenharmony_ci v |= (gspca_dev->usb_buf[0] << 8); 106162306a36Sopenharmony_ci } 106262306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R11_SIF_CONTROL); 106362306a36Sopenharmony_ci if (gspca_dev->usb_buf[0] == 0) 106462306a36Sopenharmony_ci return v; 106562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00); 106662306a36Sopenharmony_ci return -1; 106762306a36Sopenharmony_ci} 106862306a36Sopenharmony_ci 106962306a36Sopenharmony_cistatic void bulk_w(struct gspca_dev *gspca_dev, 107062306a36Sopenharmony_ci u8 tag, 107162306a36Sopenharmony_ci const u8 *data, 107262306a36Sopenharmony_ci int length) 107362306a36Sopenharmony_ci{ 107462306a36Sopenharmony_ci struct usb_device *dev = gspca_dev->dev; 107562306a36Sopenharmony_ci int count, actual_count, ret; 107662306a36Sopenharmony_ci 107762306a36Sopenharmony_ci if (gspca_dev->usb_err < 0) 107862306a36Sopenharmony_ci return; 107962306a36Sopenharmony_ci for (;;) { 108062306a36Sopenharmony_ci count = length > BULK_OUT_SIZE - 1 108162306a36Sopenharmony_ci ? BULK_OUT_SIZE - 1 : length; 108262306a36Sopenharmony_ci gspca_dev->usb_buf[0] = tag; 108362306a36Sopenharmony_ci memcpy(&gspca_dev->usb_buf[1], data, count); 108462306a36Sopenharmony_ci ret = usb_bulk_msg(dev, 108562306a36Sopenharmony_ci usb_sndbulkpipe(dev, 3), 108662306a36Sopenharmony_ci gspca_dev->usb_buf, count + 1, 108762306a36Sopenharmony_ci &actual_count, 500); 108862306a36Sopenharmony_ci if (ret < 0) { 108962306a36Sopenharmony_ci pr_err("bulk write error %d tag=%02x\n", 109062306a36Sopenharmony_ci ret, tag); 109162306a36Sopenharmony_ci gspca_dev->usb_err = ret; 109262306a36Sopenharmony_ci return; 109362306a36Sopenharmony_ci } 109462306a36Sopenharmony_ci length -= count; 109562306a36Sopenharmony_ci if (length <= 0) 109662306a36Sopenharmony_ci break; 109762306a36Sopenharmony_ci data += count; 109862306a36Sopenharmony_ci } 109962306a36Sopenharmony_ci} 110062306a36Sopenharmony_ci 110162306a36Sopenharmony_cistatic int probe_6810(struct gspca_dev *gspca_dev) 110262306a36Sopenharmony_ci{ 110362306a36Sopenharmony_ci u8 gpio; 110462306a36Sopenharmony_ci int ret; 110562306a36Sopenharmony_ci 110662306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R18_GPIO_DATA); 110762306a36Sopenharmony_ci gpio = gspca_dev->usb_buf[0]; 110862306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 110962306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 111062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 111162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */ 111262306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); /* ov??? */ 111362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00); 111462306a36Sopenharmony_ci if (i2c_w(gspca_dev, 0x00, 0x00) >= 0) 111562306a36Sopenharmony_ci return SENSOR_SOI763A; 111662306a36Sopenharmony_ci 111762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 111862306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ 111962306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f); /* (unknown i2c) */ 112062306a36Sopenharmony_ci if (i2c_w(gspca_dev, 0x00, 0x00) >= 0) 112162306a36Sopenharmony_ci return -2; 112262306a36Sopenharmony_ci 112362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 112462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 112562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 112662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ 112762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11); /* tas??? / hv??? */ 112862306a36Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 1); 112962306a36Sopenharmony_ci if (ret > 0) 113062306a36Sopenharmony_ci return -3; 113162306a36Sopenharmony_ci 113262306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 113362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 113462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 113562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e); /* po??? */ 113662306a36Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 1); 113762306a36Sopenharmony_ci if (ret > 0) 113862306a36Sopenharmony_ci return -4; 113962306a36Sopenharmony_ci 114062306a36Sopenharmony_ci ret = i2c_r(gspca_dev, 0x01, 1); 114162306a36Sopenharmony_ci if (ret > 0) 114262306a36Sopenharmony_ci return -5; 114362306a36Sopenharmony_ci 114462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 114562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 114662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 114762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04); /* i2c 16 bits */ 114862306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d); /* mi/mt??? */ 114962306a36Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 2); 115062306a36Sopenharmony_ci if (ret > 0) 115162306a36Sopenharmony_ci return -6; 115262306a36Sopenharmony_ci 115362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 115462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 115562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 115662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c); /* mi/mt??? */ 115762306a36Sopenharmony_ci ret = i2c_r(gspca_dev, 0x36, 2); 115862306a36Sopenharmony_ci if (ret > 0) 115962306a36Sopenharmony_ci return -7; 116062306a36Sopenharmony_ci 116162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 116262306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 116362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 116462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61); /* (unknown i2c) */ 116562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10); 116662306a36Sopenharmony_ci if (i2c_w(gspca_dev, 0xff, 0x00) >= 0) 116762306a36Sopenharmony_ci return -8; 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 117062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio); 117162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20); 117262306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00); /* i2c 8 bits */ 117362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 */ 117462306a36Sopenharmony_ci ret = i2c_r(gspca_dev, 0x00, 1); 117562306a36Sopenharmony_ci if (ret > 0) 117662306a36Sopenharmony_ci return SENSOR_CX0342; 117762306a36Sopenharmony_ci return -9; 117862306a36Sopenharmony_ci} 117962306a36Sopenharmony_ci 118062306a36Sopenharmony_cistatic void cx0342_6810_init(struct gspca_dev *gspca_dev) 118162306a36Sopenharmony_ci{ 118262306a36Sopenharmony_ci static const struct cmd reg_init_1[] = { 118362306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 118462306a36Sopenharmony_ci {0x25, 0x02}, 118562306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 118662306a36Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x80}, 118762306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 118862306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xe1}, 118962306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xc1}, 119062306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xe1}, 119162306a36Sopenharmony_ci {TP6800_R11_SIF_CONTROL, 0x00}, 119262306a36Sopenharmony_ci }; 119362306a36Sopenharmony_ci static const struct cmd reg_init_2[] = { 119462306a36Sopenharmony_ci {TP6800_R78_FORMAT, 0x48}, 119562306a36Sopenharmony_ci {TP6800_R11_SIF_CONTROL, 0x00}, 119662306a36Sopenharmony_ci }; 119762306a36Sopenharmony_ci static const struct cmd sensor_init[] = { 119862306a36Sopenharmony_ci {CX0342_OUTPUT_CTRL, 0x07}, 119962306a36Sopenharmony_ci {CX0342_BYPASS_MODE, 0x58}, 120062306a36Sopenharmony_ci {CX0342_GPXLTHD_L, 0x28}, 120162306a36Sopenharmony_ci {CX0342_RBPXLTHD_L, 0x28}, 120262306a36Sopenharmony_ci {CX0342_PLANETHD_L, 0x50}, 120362306a36Sopenharmony_ci {CX0342_PLANETHD_H, 0x03}, 120462306a36Sopenharmony_ci {CX0342_RB_GAP_L, 0xff}, 120562306a36Sopenharmony_ci {CX0342_RB_GAP_H, 0x07}, 120662306a36Sopenharmony_ci {CX0342_G_GAP_L, 0xff}, 120762306a36Sopenharmony_ci {CX0342_G_GAP_H, 0x07}, 120862306a36Sopenharmony_ci {CX0342_RST_OVERFLOW_L, 0x5c}, 120962306a36Sopenharmony_ci {CX0342_RST_OVERFLOW_H, 0x01}, 121062306a36Sopenharmony_ci {CX0342_DATA_OVERFLOW_L, 0xfc}, 121162306a36Sopenharmony_ci {CX0342_DATA_OVERFLOW_H, 0x03}, 121262306a36Sopenharmony_ci {CX0342_DATA_UNDERFLOW_L, 0x00}, 121362306a36Sopenharmony_ci {CX0342_DATA_UNDERFLOW_H, 0x00}, 121462306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x40}, 121562306a36Sopenharmony_ci {CX0342_GLOBAL_GAIN, 0x01}, 121662306a36Sopenharmony_ci {CX0342_CLOCK_GEN, 0x00}, 121762306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x02}, 121862306a36Sopenharmony_ci {CX0342_IDLE_CTRL, 0x05}, 121962306a36Sopenharmony_ci {CX0342_ADCGN, 0x00}, 122062306a36Sopenharmony_ci {CX0342_ADC_CTL, 0x00}, 122162306a36Sopenharmony_ci {CX0342_LVRST_BLBIAS, 0x01}, 122262306a36Sopenharmony_ci {CX0342_VTHSEL, 0x0b}, 122362306a36Sopenharmony_ci {CX0342_RAMP_RIV, 0x0b}, 122462306a36Sopenharmony_ci {CX0342_LDOSEL, 0x07}, 122562306a36Sopenharmony_ci {CX0342_SPV_VALUE_L, 0x40}, 122662306a36Sopenharmony_ci {CX0342_SPV_VALUE_H, 0x02}, 122762306a36Sopenharmony_ci 122862306a36Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 122962306a36Sopenharmony_ci {CX0342_TIMING_EN, 0x01}, 123062306a36Sopenharmony_ci }; 123162306a36Sopenharmony_ci 123262306a36Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1)); 123362306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_cx_init_common, 123462306a36Sopenharmony_ci ARRAY_SIZE(tp6810_cx_init_common)); 123562306a36Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2)); 123662306a36Sopenharmony_ci 123762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); /* cx0342 I2C addr */ 123862306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 123962306a36Sopenharmony_ci i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq)); 124062306a36Sopenharmony_ci} 124162306a36Sopenharmony_ci 124262306a36Sopenharmony_cistatic void soi763a_6810_init(struct gspca_dev *gspca_dev) 124362306a36Sopenharmony_ci{ 124462306a36Sopenharmony_ci static const struct cmd reg_init_1[] = { 124562306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 124662306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xe1}, 124762306a36Sopenharmony_ci {0x25, 0x02}, 124862306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x00}, 124962306a36Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x80}, 125062306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 125162306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xc1}, 125262306a36Sopenharmony_ci }; 125362306a36Sopenharmony_ci static const struct cmd reg_init_2[] = { 125462306a36Sopenharmony_ci {TP6800_R78_FORMAT, 0x54}, 125562306a36Sopenharmony_ci }; 125662306a36Sopenharmony_ci static const struct cmd sensor_init[] = { 125762306a36Sopenharmony_ci {0x00, 0x00}, 125862306a36Sopenharmony_ci {0x01, 0x80}, 125962306a36Sopenharmony_ci {0x02, 0x80}, 126062306a36Sopenharmony_ci {0x03, 0x90}, 126162306a36Sopenharmony_ci {0x04, 0x20}, 126262306a36Sopenharmony_ci {0x05, 0x20}, 126362306a36Sopenharmony_ci {0x06, 0x80}, 126462306a36Sopenharmony_ci {0x07, 0x00}, 126562306a36Sopenharmony_ci {0x08, 0xff}, 126662306a36Sopenharmony_ci {0x09, 0xff}, 126762306a36Sopenharmony_ci {0x0a, 0x76}, /* 7630 = soi673a */ 126862306a36Sopenharmony_ci {0x0b, 0x30}, 126962306a36Sopenharmony_ci {0x0c, 0x20}, 127062306a36Sopenharmony_ci {0x0d, 0x20}, 127162306a36Sopenharmony_ci {0x0e, 0xff}, 127262306a36Sopenharmony_ci {0x0f, 0xff}, 127362306a36Sopenharmony_ci {0x10, 0x41}, 127462306a36Sopenharmony_ci {0x15, 0x14}, 127562306a36Sopenharmony_ci {0x11, 0x40}, 127662306a36Sopenharmony_ci {0x12, 0x48}, 127762306a36Sopenharmony_ci {0x13, 0x80}, 127862306a36Sopenharmony_ci {0x14, 0x80}, 127962306a36Sopenharmony_ci {0x16, 0x03}, 128062306a36Sopenharmony_ci {0x28, 0xb0}, 128162306a36Sopenharmony_ci {0x71, 0x20}, 128262306a36Sopenharmony_ci {0x75, 0x8e}, 128362306a36Sopenharmony_ci {0x17, 0x1b}, 128462306a36Sopenharmony_ci {0x18, 0xbd}, 128562306a36Sopenharmony_ci {0x19, 0x05}, 128662306a36Sopenharmony_ci {0x1a, 0xf6}, 128762306a36Sopenharmony_ci {0x1b, 0x04}, 128862306a36Sopenharmony_ci {0x1c, 0x7f}, /* omnivision */ 128962306a36Sopenharmony_ci {0x1d, 0xa2}, 129062306a36Sopenharmony_ci {0x1e, 0x00}, 129162306a36Sopenharmony_ci {0x1f, 0x00}, 129262306a36Sopenharmony_ci {0x20, 0x45}, 129362306a36Sopenharmony_ci {0x21, 0x80}, 129462306a36Sopenharmony_ci {0x22, 0x80}, 129562306a36Sopenharmony_ci {0x23, 0xee}, 129662306a36Sopenharmony_ci {0x24, 0x50}, 129762306a36Sopenharmony_ci {0x25, 0x7a}, 129862306a36Sopenharmony_ci {0x26, 0xa0}, 129962306a36Sopenharmony_ci {0x27, 0x9a}, 130062306a36Sopenharmony_ci {0x29, 0x30}, 130162306a36Sopenharmony_ci {0x2a, 0x80}, 130262306a36Sopenharmony_ci {0x2b, 0x00}, 130362306a36Sopenharmony_ci {0x2c, 0xac}, 130462306a36Sopenharmony_ci {0x2d, 0x05}, 130562306a36Sopenharmony_ci {0x2e, 0x80}, 130662306a36Sopenharmony_ci {0x2f, 0x3c}, 130762306a36Sopenharmony_ci {0x30, 0x22}, 130862306a36Sopenharmony_ci {0x31, 0x00}, 130962306a36Sopenharmony_ci {0x32, 0x86}, 131062306a36Sopenharmony_ci {0x33, 0x08}, 131162306a36Sopenharmony_ci {0x34, 0xff}, 131262306a36Sopenharmony_ci {0x35, 0xff}, 131362306a36Sopenharmony_ci {0x36, 0xff}, 131462306a36Sopenharmony_ci {0x37, 0xff}, 131562306a36Sopenharmony_ci {0x38, 0xff}, 131662306a36Sopenharmony_ci {0x39, 0xff}, 131762306a36Sopenharmony_ci {0x3a, 0xfe}, 131862306a36Sopenharmony_ci {0x3b, 0xfe}, 131962306a36Sopenharmony_ci {0x3c, 0xfe}, 132062306a36Sopenharmony_ci {0x3d, 0xfe}, 132162306a36Sopenharmony_ci {0x3e, 0xfe}, 132262306a36Sopenharmony_ci {0x3f, 0x71}, 132362306a36Sopenharmony_ci {0x40, 0xff}, 132462306a36Sopenharmony_ci {0x41, 0xff}, 132562306a36Sopenharmony_ci {0x42, 0xff}, 132662306a36Sopenharmony_ci {0x43, 0xff}, 132762306a36Sopenharmony_ci {0x44, 0xff}, 132862306a36Sopenharmony_ci {0x45, 0xff}, 132962306a36Sopenharmony_ci {0x46, 0xff}, 133062306a36Sopenharmony_ci {0x47, 0xff}, 133162306a36Sopenharmony_ci {0x48, 0xff}, 133262306a36Sopenharmony_ci {0x49, 0xff}, 133362306a36Sopenharmony_ci {0x4a, 0xfe}, 133462306a36Sopenharmony_ci {0x4b, 0xff}, 133562306a36Sopenharmony_ci {0x4c, 0x00}, 133662306a36Sopenharmony_ci {0x4d, 0x00}, 133762306a36Sopenharmony_ci {0x4e, 0xff}, 133862306a36Sopenharmony_ci {0x4f, 0xff}, 133962306a36Sopenharmony_ci {0x50, 0xff}, 134062306a36Sopenharmony_ci {0x51, 0xff}, 134162306a36Sopenharmony_ci {0x52, 0xff}, 134262306a36Sopenharmony_ci {0x53, 0xff}, 134362306a36Sopenharmony_ci {0x54, 0xff}, 134462306a36Sopenharmony_ci {0x55, 0xff}, 134562306a36Sopenharmony_ci {0x56, 0xff}, 134662306a36Sopenharmony_ci {0x57, 0xff}, 134762306a36Sopenharmony_ci {0x58, 0xff}, 134862306a36Sopenharmony_ci {0x59, 0xff}, 134962306a36Sopenharmony_ci {0x5a, 0xff}, 135062306a36Sopenharmony_ci {0x5b, 0xfe}, 135162306a36Sopenharmony_ci {0x5c, 0xff}, 135262306a36Sopenharmony_ci {0x5d, 0x8f}, 135362306a36Sopenharmony_ci {0x5e, 0xff}, 135462306a36Sopenharmony_ci {0x5f, 0x8f}, 135562306a36Sopenharmony_ci {0x60, 0xa2}, 135662306a36Sopenharmony_ci {0x61, 0x4a}, 135762306a36Sopenharmony_ci {0x62, 0xf3}, 135862306a36Sopenharmony_ci {0x63, 0x75}, 135962306a36Sopenharmony_ci {0x64, 0xf0}, 136062306a36Sopenharmony_ci {0x65, 0x00}, 136162306a36Sopenharmony_ci {0x66, 0x55}, 136262306a36Sopenharmony_ci {0x67, 0x92}, 136362306a36Sopenharmony_ci {0x68, 0xa0}, 136462306a36Sopenharmony_ci {0x69, 0x4a}, 136562306a36Sopenharmony_ci {0x6a, 0x22}, 136662306a36Sopenharmony_ci {0x6b, 0x00}, 136762306a36Sopenharmony_ci {0x6c, 0x33}, 136862306a36Sopenharmony_ci {0x6d, 0x44}, 136962306a36Sopenharmony_ci {0x6e, 0x22}, 137062306a36Sopenharmony_ci {0x6f, 0x84}, 137162306a36Sopenharmony_ci {0x70, 0x0b}, 137262306a36Sopenharmony_ci {0x72, 0x10}, 137362306a36Sopenharmony_ci {0x73, 0x50}, 137462306a36Sopenharmony_ci {0x74, 0x21}, 137562306a36Sopenharmony_ci {0x76, 0x00}, 137662306a36Sopenharmony_ci {0x77, 0xa5}, 137762306a36Sopenharmony_ci {0x78, 0x80}, 137862306a36Sopenharmony_ci {0x79, 0x80}, 137962306a36Sopenharmony_ci {0x7a, 0x80}, 138062306a36Sopenharmony_ci {0x7b, 0xe2}, 138162306a36Sopenharmony_ci {0x7c, 0x00}, 138262306a36Sopenharmony_ci {0x7d, 0xf7}, 138362306a36Sopenharmony_ci {0x7e, 0x00}, 138462306a36Sopenharmony_ci {0x7f, 0x00}, 138562306a36Sopenharmony_ci }; 138662306a36Sopenharmony_ci 138762306a36Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1)); 138862306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_ov_init_common, 138962306a36Sopenharmony_ci ARRAY_SIZE(tp6810_ov_init_common)); 139062306a36Sopenharmony_ci reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2)); 139162306a36Sopenharmony_ci 139262306a36Sopenharmony_ci i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */ 139362306a36Sopenharmony_ci msleep(10); 139462306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 139562306a36Sopenharmony_ci} 139662306a36Sopenharmony_ci 139762306a36Sopenharmony_ci/* set the gain and exposure */ 139862306a36Sopenharmony_cistatic void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain, 139962306a36Sopenharmony_ci s32 blue, s32 red) 140062306a36Sopenharmony_ci{ 140162306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 140262306a36Sopenharmony_ci 140362306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 140462306a36Sopenharmony_ci expo = (expo << 2) - 1; 140562306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo); 140662306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8); 140762306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 140862306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H, 140962306a36Sopenharmony_ci gain >> 8); 141062306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain); 141162306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 141262306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H, 141362306a36Sopenharmony_ci gain >> 8); 141462306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain); 141562306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 141662306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 141762306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, 141862306a36Sopenharmony_ci blue >> 8); 141962306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue); 142062306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 142162306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, 142262306a36Sopenharmony_ci red >> 8); 142362306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red); 142462306a36Sopenharmony_ci } 142562306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 142662306a36Sopenharmony_ci sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81); 142762306a36Sopenharmony_ci return; 142862306a36Sopenharmony_ci } 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_ci /* soi763a */ 143162306a36Sopenharmony_ci i2c_w(gspca_dev, 0x10, /* AEC_H (exposure time) */ 143262306a36Sopenharmony_ci expo); 143362306a36Sopenharmony_ci/* i2c_w(gspca_dev, 0x76, 0x02); * AEC_L ([1:0] */ 143462306a36Sopenharmony_ci i2c_w(gspca_dev, 0x00, /* gain */ 143562306a36Sopenharmony_ci gain); 143662306a36Sopenharmony_ci} 143762306a36Sopenharmony_ci 143862306a36Sopenharmony_ci/* set the JPEG quantization tables */ 143962306a36Sopenharmony_cistatic void set_dqt(struct gspca_dev *gspca_dev, u8 q) 144062306a36Sopenharmony_ci{ 144162306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 144262306a36Sopenharmony_ci 144362306a36Sopenharmony_ci /* update the jpeg quantization tables */ 144462306a36Sopenharmony_ci gspca_dbg(gspca_dev, D_STREAM, "q %d -> %d\n", sd->quality, q); 144562306a36Sopenharmony_ci sd->quality = q; 144662306a36Sopenharmony_ci if (q > 16) 144762306a36Sopenharmony_ci q = 16; 144862306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 144962306a36Sopenharmony_ci jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]); 145062306a36Sopenharmony_ci else 145162306a36Sopenharmony_ci memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1], 145262306a36Sopenharmony_ci DQT[q], sizeof DQT[0]); 145362306a36Sopenharmony_ci} 145462306a36Sopenharmony_ci 145562306a36Sopenharmony_ci/* set the JPEG compression quality factor */ 145662306a36Sopenharmony_cistatic void setquality(struct gspca_dev *gspca_dev, s32 q) 145762306a36Sopenharmony_ci{ 145862306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 145962306a36Sopenharmony_ci 146062306a36Sopenharmony_ci if (q != 16) 146162306a36Sopenharmony_ci q = 15 - q; 146262306a36Sopenharmony_ci 146362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00); 146462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04); 146562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R79_QUALITY, q); 146662306a36Sopenharmony_ci 146762306a36Sopenharmony_ci /* auto quality */ 146862306a36Sopenharmony_ci if (q == 15 && sd->bridge == BRIDGE_TP6810) { 146962306a36Sopenharmony_ci msleep(4); 147062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19); 147162306a36Sopenharmony_ci } 147262306a36Sopenharmony_ci} 147362306a36Sopenharmony_ci 147462306a36Sopenharmony_cistatic const u8 color_null[18] = { 147562306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 147662306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 147762306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 147862306a36Sopenharmony_ci}; 147962306a36Sopenharmony_cistatic const u8 color_gain[NSENSORS][18] = { 148062306a36Sopenharmony_ci[SENSOR_CX0342] = 148162306a36Sopenharmony_ci {0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00, /* Y R/G/B (LE values) */ 148262306a36Sopenharmony_ci 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00, /* U R/G/B */ 148362306a36Sopenharmony_ci 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */ 148462306a36Sopenharmony_ci[SENSOR_SOI763A] = 148562306a36Sopenharmony_ci {0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00, /* Y R/G/B (LE values) */ 148662306a36Sopenharmony_ci 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00, /* U R/G/B */ 148762306a36Sopenharmony_ci 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03}, /* V R/G/B */ 148862306a36Sopenharmony_ci}; 148962306a36Sopenharmony_ci 149062306a36Sopenharmony_cistatic void setgamma(struct gspca_dev *gspca_dev, s32 gamma) 149162306a36Sopenharmony_ci{ 149262306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 149362306a36Sopenharmony_ci#define NGAMMA 6 149462306a36Sopenharmony_ci static const u8 gamma_tb[NGAMMA][3][1024] = { 149562306a36Sopenharmony_ci { /* gamma 0 - from tp6800 + soi763a */ 149662306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 149762306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 149862306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 149962306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 150062306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 150162306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 150262306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 150362306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 150462306a36Sopenharmony_ci 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09, 150562306a36Sopenharmony_ci 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11, 150662306a36Sopenharmony_ci 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 150762306a36Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 150862306a36Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23, 150962306a36Sopenharmony_ci 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 151062306a36Sopenharmony_ci 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 151162306a36Sopenharmony_ci 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 151262306a36Sopenharmony_ci 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38, 151362306a36Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 151462306a36Sopenharmony_ci 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40, 151562306a36Sopenharmony_ci 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 151662306a36Sopenharmony_ci 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, 151762306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 151862306a36Sopenharmony_ci 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50, 151962306a36Sopenharmony_ci 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 152062306a36Sopenharmony_ci 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58, 152162306a36Sopenharmony_ci 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 152262306a36Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f, 152362306a36Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 152462306a36Sopenharmony_ci 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65, 152562306a36Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 152662306a36Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 152762306a36Sopenharmony_ci 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 152862306a36Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 152962306a36Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 153062306a36Sopenharmony_ci 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 153162306a36Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 153262306a36Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 153362306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 153462306a36Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 153562306a36Sopenharmony_ci 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 153662306a36Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 153762306a36Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 153862306a36Sopenharmony_ci 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 153962306a36Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 154062306a36Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 154162306a36Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 154262306a36Sopenharmony_ci 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 154362306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 154462306a36Sopenharmony_ci 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 154562306a36Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 154662306a36Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 154762306a36Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 154862306a36Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 154962306a36Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 155062306a36Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 155162306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 155262306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 155362306a36Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 155462306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 155562306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 155662306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 155762306a36Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 155862306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 155962306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 156062306a36Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 156162306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 156262306a36Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 156362306a36Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 156462306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 156562306a36Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 156662306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 156762306a36Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 156862306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 156962306a36Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 157062306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 157162306a36Sopenharmony_ci 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 157262306a36Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 157362306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 157462306a36Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 157562306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 157662306a36Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 157762306a36Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 157862306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 157962306a36Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 158062306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 158162306a36Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 158262306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 158362306a36Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 158462306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 158562306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 158662306a36Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 158762306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 158862306a36Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 158962306a36Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 159062306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 159162306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 159262306a36Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 159362306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 159462306a36Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 159562306a36Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 159662306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 159762306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 159862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 159962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 160962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 161962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 162062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 162162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 162262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 162362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 162462306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 162562306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 162662306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 162762306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 162862306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 162962306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 163062306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 163162306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 163262306a36Sopenharmony_ci 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09, 163362306a36Sopenharmony_ci 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11, 163462306a36Sopenharmony_ci 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 163562306a36Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 163662306a36Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23, 163762306a36Sopenharmony_ci 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 163862306a36Sopenharmony_ci 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 163962306a36Sopenharmony_ci 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 164062306a36Sopenharmony_ci 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38, 164162306a36Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 164262306a36Sopenharmony_ci 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40, 164362306a36Sopenharmony_ci 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 164462306a36Sopenharmony_ci 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, 164562306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 164662306a36Sopenharmony_ci 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50, 164762306a36Sopenharmony_ci 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 164862306a36Sopenharmony_ci 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58, 164962306a36Sopenharmony_ci 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 165062306a36Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f, 165162306a36Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 165262306a36Sopenharmony_ci 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65, 165362306a36Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 165462306a36Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 165562306a36Sopenharmony_ci 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 165662306a36Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 165762306a36Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 165862306a36Sopenharmony_ci 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 165962306a36Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 166062306a36Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 166162306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 166262306a36Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 166362306a36Sopenharmony_ci 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 166462306a36Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 166562306a36Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 166662306a36Sopenharmony_ci 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 166762306a36Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 166862306a36Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 166962306a36Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 167062306a36Sopenharmony_ci 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 167162306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 167262306a36Sopenharmony_ci 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 167362306a36Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 167462306a36Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 167562306a36Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 167662306a36Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 167762306a36Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 167862306a36Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 167962306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 168062306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 168162306a36Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 168262306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 168362306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 168462306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 168562306a36Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 168662306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 168762306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 168862306a36Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 168962306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 169062306a36Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 169162306a36Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 169262306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 169362306a36Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 169462306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 169562306a36Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 169662306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 169762306a36Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 169862306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 169962306a36Sopenharmony_ci 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 170062306a36Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 170162306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 170262306a36Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 170362306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 170462306a36Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 170562306a36Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 170662306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 170762306a36Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 170862306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 170962306a36Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 171062306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 171162306a36Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 171262306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 171362306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 171462306a36Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 171562306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 171662306a36Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 171762306a36Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 171862306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 171962306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 172062306a36Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 172162306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 172262306a36Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 172362306a36Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 172462306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 172562306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 172662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 172762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 172862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 172962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 173962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 174962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 175062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 175162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 175262306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175362306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175462306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175562306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 175662306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175762306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175862306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175962306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 176062306a36Sopenharmony_ci 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09, 176162306a36Sopenharmony_ci 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11, 176262306a36Sopenharmony_ci 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17, 176362306a36Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 176462306a36Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23, 176562306a36Sopenharmony_ci 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 176662306a36Sopenharmony_ci 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 176762306a36Sopenharmony_ci 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 176862306a36Sopenharmony_ci 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38, 176962306a36Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 177062306a36Sopenharmony_ci 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40, 177162306a36Sopenharmony_ci 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45, 177262306a36Sopenharmony_ci 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49, 177362306a36Sopenharmony_ci 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c, 177462306a36Sopenharmony_ci 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50, 177562306a36Sopenharmony_ci 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54, 177662306a36Sopenharmony_ci 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58, 177762306a36Sopenharmony_ci 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 177862306a36Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f, 177962306a36Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61, 178062306a36Sopenharmony_ci 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65, 178162306a36Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 178262306a36Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a, 178362306a36Sopenharmony_ci 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 178462306a36Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 178562306a36Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 178662306a36Sopenharmony_ci 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76, 178762306a36Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 178862306a36Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 178962306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 179062306a36Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 179162306a36Sopenharmony_ci 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 179262306a36Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 179362306a36Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 179462306a36Sopenharmony_ci 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 179562306a36Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 179662306a36Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 179762306a36Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 179862306a36Sopenharmony_ci 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 179962306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 180062306a36Sopenharmony_ci 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 180162306a36Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 180262306a36Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 180362306a36Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 180462306a36Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 180562306a36Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 180662306a36Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 180762306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 180862306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 180962306a36Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 181062306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 181162306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae, 181262306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 181362306a36Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 181462306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 181562306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 181662306a36Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 181762306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 181862306a36Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 181962306a36Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 182062306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 182162306a36Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 182262306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 182362306a36Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 182462306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 182562306a36Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 182662306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 182762306a36Sopenharmony_ci 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 182862306a36Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 182962306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 183062306a36Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 183162306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 183262306a36Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 183362306a36Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 183462306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 183562306a36Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 183662306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 183762306a36Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 183862306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 183962306a36Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 184062306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 184162306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 184262306a36Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 184362306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 184462306a36Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 184562306a36Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 184662306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 184762306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 184862306a36Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 184962306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 185062306a36Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 185162306a36Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 185262306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 185362306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 185462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 185562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 185662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 185762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 185862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 185962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 186962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 187962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb} 188062306a36Sopenharmony_ci }, 188162306a36Sopenharmony_ci { /* gamma 1 - from tp6810 + soi763a */ 188262306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 188362306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 188462306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 188562306a36Sopenharmony_ci 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a, 188662306a36Sopenharmony_ci 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15, 188762306a36Sopenharmony_ci 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e, 188862306a36Sopenharmony_ci 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27, 188962306a36Sopenharmony_ci 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f, 189062306a36Sopenharmony_ci 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35, 189162306a36Sopenharmony_ci 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 189262306a36Sopenharmony_ci 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43, 189362306a36Sopenharmony_ci 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49, 189462306a36Sopenharmony_ci 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d, 189562306a36Sopenharmony_ci 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53, 189662306a36Sopenharmony_ci 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 189762306a36Sopenharmony_ci 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 189862306a36Sopenharmony_ci 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61, 189962306a36Sopenharmony_ci 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 190062306a36Sopenharmony_ci 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69, 190162306a36Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 190262306a36Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 190362306a36Sopenharmony_ci 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 190462306a36Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 190562306a36Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 190662306a36Sopenharmony_ci 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80, 190762306a36Sopenharmony_ci 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84, 190862306a36Sopenharmony_ci 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88, 190962306a36Sopenharmony_ci 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 191062306a36Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 191162306a36Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 191262306a36Sopenharmony_ci 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 191362306a36Sopenharmony_ci 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 191462306a36Sopenharmony_ci 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 191562306a36Sopenharmony_ci 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 191662306a36Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 191762306a36Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 191862306a36Sopenharmony_ci 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 191962306a36Sopenharmony_ci 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 192062306a36Sopenharmony_ci 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 192162306a36Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab, 192262306a36Sopenharmony_ci 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae, 192362306a36Sopenharmony_ci 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 192462306a36Sopenharmony_ci 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 192562306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 192662306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 192762306a36Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 192862306a36Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 192962306a36Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 193062306a36Sopenharmony_ci 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 193162306a36Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 193262306a36Sopenharmony_ci 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 193362306a36Sopenharmony_ci 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 193462306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 193562306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 193662306a36Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 193762306a36Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 193862306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 193962306a36Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 194062306a36Sopenharmony_ci 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 194162306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 194262306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 194362306a36Sopenharmony_ci 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 194462306a36Sopenharmony_ci 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 194562306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 194662306a36Sopenharmony_ci 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 194762306a36Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 194862306a36Sopenharmony_ci 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 194962306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 195062306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 195162306a36Sopenharmony_ci 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 195262306a36Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 195362306a36Sopenharmony_ci 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 195462306a36Sopenharmony_ci 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 195562306a36Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 195662306a36Sopenharmony_ci 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 195762306a36Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 195862306a36Sopenharmony_ci 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 195962306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 196062306a36Sopenharmony_ci 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 196162306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 196262306a36Sopenharmony_ci 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 196362306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 196462306a36Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 196562306a36Sopenharmony_ci 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 196662306a36Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 196762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 196862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 196962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 197962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 198962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 199962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 200962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 201062306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201162306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201262306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201362306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 201462306a36Sopenharmony_ci 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 201562306a36Sopenharmony_ci 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15, 201662306a36Sopenharmony_ci 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e, 201762306a36Sopenharmony_ci 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25, 201862306a36Sopenharmony_ci 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c, 201962306a36Sopenharmony_ci 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31, 202062306a36Sopenharmony_ci 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 202162306a36Sopenharmony_ci 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 202262306a36Sopenharmony_ci 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43, 202362306a36Sopenharmony_ci 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 202462306a36Sopenharmony_ci 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 202562306a36Sopenharmony_ci 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 202662306a36Sopenharmony_ci 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55, 202762306a36Sopenharmony_ci 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59, 202862306a36Sopenharmony_ci 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 202962306a36Sopenharmony_ci 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60, 203062306a36Sopenharmony_ci 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65, 203162306a36Sopenharmony_ci 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 203262306a36Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 203362306a36Sopenharmony_ci 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 203462306a36Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71, 203562306a36Sopenharmony_ci 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 203662306a36Sopenharmony_ci 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78, 203762306a36Sopenharmony_ci 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 203862306a36Sopenharmony_ci 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 203962306a36Sopenharmony_ci 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 204062306a36Sopenharmony_ci 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 204162306a36Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86, 204262306a36Sopenharmony_ci 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89, 204362306a36Sopenharmony_ci 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 204462306a36Sopenharmony_ci 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 204562306a36Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 204662306a36Sopenharmony_ci 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 204762306a36Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 204862306a36Sopenharmony_ci 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 204962306a36Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 205062306a36Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 205162306a36Sopenharmony_ci 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 205262306a36Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 205362306a36Sopenharmony_ci 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 205462306a36Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 205562306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 205662306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 205762306a36Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 205862306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 205962306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 206062306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 206162306a36Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 206262306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 206362306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 206462306a36Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 206562306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 206662306a36Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc, 206762306a36Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 206862306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 206962306a36Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 207062306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 207162306a36Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 207262306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 207362306a36Sopenharmony_ci 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 207462306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 207562306a36Sopenharmony_ci 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 207662306a36Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 207762306a36Sopenharmony_ci 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf, 207862306a36Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 207962306a36Sopenharmony_ci 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 208062306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 208162306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 208262306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 208362306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 208462306a36Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 208562306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 208662306a36Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 208762306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 208862306a36Sopenharmony_ci 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 208962306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 209062306a36Sopenharmony_ci 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 209162306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 209262306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 209362306a36Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 209462306a36Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 209562306a36Sopenharmony_ci 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 209662306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 209762306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 209862306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 209962306a36Sopenharmony_ci 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 210062306a36Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 210162306a36Sopenharmony_ci 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 210262306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 210362306a36Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 210462306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 210562306a36Sopenharmony_ci 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 210662306a36Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 210762306a36Sopenharmony_ci 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 210862306a36Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 210962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 211962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 212962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 213762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 213862306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 213962306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 214062306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 214162306a36Sopenharmony_ci 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 214262306a36Sopenharmony_ci 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07, 214362306a36Sopenharmony_ci 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e, 214462306a36Sopenharmony_ci 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16, 214562306a36Sopenharmony_ci 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e, 214662306a36Sopenharmony_ci 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23, 214762306a36Sopenharmony_ci 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 214862306a36Sopenharmony_ci 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 214962306a36Sopenharmony_ci 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35, 215062306a36Sopenharmony_ci 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a, 215162306a36Sopenharmony_ci 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d, 215262306a36Sopenharmony_ci 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43, 215362306a36Sopenharmony_ci 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47, 215462306a36Sopenharmony_ci 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 215562306a36Sopenharmony_ci 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 215662306a36Sopenharmony_ci 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53, 215762306a36Sopenharmony_ci 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56, 215862306a36Sopenharmony_ci 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a, 215962306a36Sopenharmony_ci 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 216062306a36Sopenharmony_ci 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 216162306a36Sopenharmony_ci 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 216262306a36Sopenharmony_ci 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 216362306a36Sopenharmony_ci 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 216462306a36Sopenharmony_ci 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c, 216562306a36Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 216662306a36Sopenharmony_ci 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71, 216762306a36Sopenharmony_ci 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 216862306a36Sopenharmony_ci 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77, 216962306a36Sopenharmony_ci 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 217062306a36Sopenharmony_ci 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 217162306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 217262306a36Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 217362306a36Sopenharmony_ci 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 217462306a36Sopenharmony_ci 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 217562306a36Sopenharmony_ci 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 217662306a36Sopenharmony_ci 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a, 217762306a36Sopenharmony_ci 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d, 217862306a36Sopenharmony_ci 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 217962306a36Sopenharmony_ci 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 218062306a36Sopenharmony_ci 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 218162306a36Sopenharmony_ci 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 218262306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96, 218362306a36Sopenharmony_ci 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 218462306a36Sopenharmony_ci 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 218562306a36Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 218662306a36Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 218762306a36Sopenharmony_ci 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 218862306a36Sopenharmony_ci 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 218962306a36Sopenharmony_ci 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 219062306a36Sopenharmony_ci 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 219162306a36Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 219262306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 219362306a36Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 219462306a36Sopenharmony_ci 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 219562306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 219662306a36Sopenharmony_ci 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 219762306a36Sopenharmony_ci 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 219862306a36Sopenharmony_ci 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 219962306a36Sopenharmony_ci 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 220062306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 220162306a36Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 220262306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 220362306a36Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 220462306a36Sopenharmony_ci 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 220562306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 220662306a36Sopenharmony_ci 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 220762306a36Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 220862306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 220962306a36Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 221062306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 221162306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 221262306a36Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 221362306a36Sopenharmony_ci 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 221462306a36Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 221562306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 221662306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 221762306a36Sopenharmony_ci 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 221862306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 221962306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 222062306a36Sopenharmony_ci 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 222162306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 222262306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 222362306a36Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 222462306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 222562306a36Sopenharmony_ci 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 222662306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 222762306a36Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 222862306a36Sopenharmony_ci 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 222962306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 223062306a36Sopenharmony_ci 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 223162306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 223262306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 223362306a36Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 223462306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 223562306a36Sopenharmony_ci 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 223662306a36Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 223762306a36Sopenharmony_ci 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 223862306a36Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 223962306a36Sopenharmony_ci 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 224062306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 224162306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 224262306a36Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 224362306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 224462306a36Sopenharmony_ci 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 224562306a36Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 224662306a36Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 224762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 224862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 224962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 225962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 226062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 226162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 226262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 226362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 226462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 226562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} 226662306a36Sopenharmony_ci }, 226762306a36Sopenharmony_ci { /* gamma 2 */ 226862306a36Sopenharmony_ci {0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c, 226962306a36Sopenharmony_ci 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17, 227062306a36Sopenharmony_ci 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22, 227162306a36Sopenharmony_ci 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c, 227262306a36Sopenharmony_ci 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 227362306a36Sopenharmony_ci 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b, 227462306a36Sopenharmony_ci 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43, 227562306a36Sopenharmony_ci 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49, 227662306a36Sopenharmony_ci 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f, 227762306a36Sopenharmony_ci 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55, 227862306a36Sopenharmony_ci 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a, 227962306a36Sopenharmony_ci 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 228062306a36Sopenharmony_ci 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 228162306a36Sopenharmony_ci 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 228262306a36Sopenharmony_ci 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c, 228362306a36Sopenharmony_ci 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 228462306a36Sopenharmony_ci 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 228562306a36Sopenharmony_ci 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 228662306a36Sopenharmony_ci 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 228762306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 228862306a36Sopenharmony_ci 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 228962306a36Sopenharmony_ci 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 229062306a36Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89, 229162306a36Sopenharmony_ci 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 229262306a36Sopenharmony_ci 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 229362306a36Sopenharmony_ci 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 229462306a36Sopenharmony_ci 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 229562306a36Sopenharmony_ci 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 229662306a36Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 229762306a36Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 229862306a36Sopenharmony_ci 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 229962306a36Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 230062306a36Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 230162306a36Sopenharmony_ci 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 230262306a36Sopenharmony_ci 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 230362306a36Sopenharmony_ci 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 230462306a36Sopenharmony_ci 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 230562306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 230662306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 230762306a36Sopenharmony_ci 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 230862306a36Sopenharmony_ci 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 230962306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 231062306a36Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 231162306a36Sopenharmony_ci 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 231262306a36Sopenharmony_ci 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 231362306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 231462306a36Sopenharmony_ci 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 231562306a36Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 231662306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 231762306a36Sopenharmony_ci 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 231862306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 231962306a36Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 232062306a36Sopenharmony_ci 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 232162306a36Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 232262306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 232362306a36Sopenharmony_ci 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 232462306a36Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 232562306a36Sopenharmony_ci 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 232662306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 232762306a36Sopenharmony_ci 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 232862306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 232962306a36Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 233062306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 233162306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 233262306a36Sopenharmony_ci 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 233362306a36Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 233462306a36Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 233562306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 233662306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 233762306a36Sopenharmony_ci 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 233862306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 233962306a36Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 234062306a36Sopenharmony_ci 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 234162306a36Sopenharmony_ci 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 234262306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 234362306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 234462306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 234562306a36Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 234662306a36Sopenharmony_ci 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 234762306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 234862306a36Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 234962306a36Sopenharmony_ci 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 235062306a36Sopenharmony_ci 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 235162306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 235262306a36Sopenharmony_ci 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 235962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 236962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 237962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 238962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 239062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 239162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 239262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 239362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 239462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 239562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 239662306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 239762306a36Sopenharmony_ci 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11, 239862306a36Sopenharmony_ci 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a, 239962306a36Sopenharmony_ci 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 240062306a36Sopenharmony_ci 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b, 240162306a36Sopenharmony_ci 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33, 240262306a36Sopenharmony_ci 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39, 240362306a36Sopenharmony_ci 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f, 240462306a36Sopenharmony_ci 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 240562306a36Sopenharmony_ci 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a, 240662306a36Sopenharmony_ci 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 240762306a36Sopenharmony_ci 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53, 240862306a36Sopenharmony_ci 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58, 240962306a36Sopenharmony_ci 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 241062306a36Sopenharmony_ci 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 241162306a36Sopenharmony_ci 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63, 241262306a36Sopenharmony_ci 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 241362306a36Sopenharmony_ci 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69, 241462306a36Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 241562306a36Sopenharmony_ci 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 241662306a36Sopenharmony_ci 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73, 241762306a36Sopenharmony_ci 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 241862306a36Sopenharmony_ci 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79, 241962306a36Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c, 242062306a36Sopenharmony_ci 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 242162306a36Sopenharmony_ci 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 242262306a36Sopenharmony_ci 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84, 242362306a36Sopenharmony_ci 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88, 242462306a36Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 242562306a36Sopenharmony_ci 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d, 242662306a36Sopenharmony_ci 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 242762306a36Sopenharmony_ci 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91, 242862306a36Sopenharmony_ci 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 242962306a36Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 243062306a36Sopenharmony_ci 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 243162306a36Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 243262306a36Sopenharmony_ci 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 243362306a36Sopenharmony_ci 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 243462306a36Sopenharmony_ci 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 243562306a36Sopenharmony_ci 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 243662306a36Sopenharmony_ci 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 243762306a36Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 243862306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 243962306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 244062306a36Sopenharmony_ci 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 244162306a36Sopenharmony_ci 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 244262306a36Sopenharmony_ci 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 244362306a36Sopenharmony_ci 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 244462306a36Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 244562306a36Sopenharmony_ci 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 244662306a36Sopenharmony_ci 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 244762306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 244862306a36Sopenharmony_ci 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 244962306a36Sopenharmony_ci 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 245062306a36Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 245162306a36Sopenharmony_ci 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 245262306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 245362306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 245462306a36Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 245562306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 245662306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 245762306a36Sopenharmony_ci 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 245862306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 245962306a36Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 246062306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca, 246162306a36Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 246262306a36Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 246362306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 246462306a36Sopenharmony_ci 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 246562306a36Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 246662306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 246762306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 246862306a36Sopenharmony_ci 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 246962306a36Sopenharmony_ci 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 247062306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 247162306a36Sopenharmony_ci 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 247262306a36Sopenharmony_ci 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 247362306a36Sopenharmony_ci 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 247462306a36Sopenharmony_ci 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 247562306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 247662306a36Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 247762306a36Sopenharmony_ci 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 247862306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 247962306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 248062306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 248162306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 248262306a36Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 248362306a36Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 248462306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 248562306a36Sopenharmony_ci 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 248662306a36Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 248762306a36Sopenharmony_ci 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 248862306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 248962306a36Sopenharmony_ci 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 249062306a36Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 249162306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 249262306a36Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 249362306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 249462306a36Sopenharmony_ci 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 249562306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 249662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 249762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 249862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 249962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 250962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 251962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 252062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 252162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 252262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 252362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 252462306a36Sopenharmony_ci {0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 252562306a36Sopenharmony_ci 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14, 252662306a36Sopenharmony_ci 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 252762306a36Sopenharmony_ci 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27, 252862306a36Sopenharmony_ci 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f, 252962306a36Sopenharmony_ci 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37, 253062306a36Sopenharmony_ci 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c, 253162306a36Sopenharmony_ci 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43, 253262306a36Sopenharmony_ci 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 253362306a36Sopenharmony_ci 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 253462306a36Sopenharmony_ci 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53, 253562306a36Sopenharmony_ci 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 253662306a36Sopenharmony_ci 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 253762306a36Sopenharmony_ci 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 253862306a36Sopenharmony_ci 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 253962306a36Sopenharmony_ci 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 254062306a36Sopenharmony_ci 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c, 254162306a36Sopenharmony_ci 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 254262306a36Sopenharmony_ci 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 254362306a36Sopenharmony_ci 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 254462306a36Sopenharmony_ci 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 254562306a36Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 254662306a36Sopenharmony_ci 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 254762306a36Sopenharmony_ci 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 254862306a36Sopenharmony_ci 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 254962306a36Sopenharmony_ci 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 255062306a36Sopenharmony_ci 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 255162306a36Sopenharmony_ci 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 255262306a36Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 255362306a36Sopenharmony_ci 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 255462306a36Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 255562306a36Sopenharmony_ci 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 255662306a36Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 255762306a36Sopenharmony_ci 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 255862306a36Sopenharmony_ci 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 255962306a36Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 256062306a36Sopenharmony_ci 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 256162306a36Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 256262306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 256362306a36Sopenharmony_ci 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 256462306a36Sopenharmony_ci 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 256562306a36Sopenharmony_ci 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 256662306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 256762306a36Sopenharmony_ci 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 256862306a36Sopenharmony_ci 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 256962306a36Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 257062306a36Sopenharmony_ci 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4, 257162306a36Sopenharmony_ci 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 257262306a36Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 257362306a36Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 257462306a36Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 257562306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 257662306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 257762306a36Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 257862306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 257962306a36Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 258062306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 258162306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 258262306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 258362306a36Sopenharmony_ci 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 258462306a36Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 258562306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 258662306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 258762306a36Sopenharmony_ci 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 258862306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 258962306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 259062306a36Sopenharmony_ci 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 259162306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 259262306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 259362306a36Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 259462306a36Sopenharmony_ci 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 259562306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 259662306a36Sopenharmony_ci 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 259762306a36Sopenharmony_ci 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 259862306a36Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 259962306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 260062306a36Sopenharmony_ci 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 260162306a36Sopenharmony_ci 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 260262306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 260362306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 260462306a36Sopenharmony_ci 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 260562306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 260662306a36Sopenharmony_ci 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 260762306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 260862306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 260962306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 261062306a36Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 261162306a36Sopenharmony_ci 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 261262306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 261362306a36Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 261462306a36Sopenharmony_ci 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 261562306a36Sopenharmony_ci 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 261662306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 261762306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 261862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 261962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 262962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 263962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 264962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 265062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 265162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb} 265262306a36Sopenharmony_ci }, 265362306a36Sopenharmony_ci { /* gamma 3 - from tp6810 + cx0342 */ 265462306a36Sopenharmony_ci {0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15, 265562306a36Sopenharmony_ci 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23, 265662306a36Sopenharmony_ci 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f, 265762306a36Sopenharmony_ci 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39, 265862306a36Sopenharmony_ci 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43, 265962306a36Sopenharmony_ci 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b, 266062306a36Sopenharmony_ci 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53, 266162306a36Sopenharmony_ci 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a, 266262306a36Sopenharmony_ci 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61, 266362306a36Sopenharmony_ci 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67, 266462306a36Sopenharmony_ci 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 266562306a36Sopenharmony_ci 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73, 266662306a36Sopenharmony_ci 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 266762306a36Sopenharmony_ci 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 266862306a36Sopenharmony_ci 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 266962306a36Sopenharmony_ci 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 267062306a36Sopenharmony_ci 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 267162306a36Sopenharmony_ci 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f, 267262306a36Sopenharmony_ci 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 267362306a36Sopenharmony_ci 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97, 267462306a36Sopenharmony_ci 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 267562306a36Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 267662306a36Sopenharmony_ci 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 267762306a36Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 267862306a36Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8, 267962306a36Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 268062306a36Sopenharmony_ci 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 268162306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 268262306a36Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 268362306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 268462306a36Sopenharmony_ci 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 268562306a36Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 268662306a36Sopenharmony_ci 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 268762306a36Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 268862306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 268962306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 269062306a36Sopenharmony_ci 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 269162306a36Sopenharmony_ci 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 269262306a36Sopenharmony_ci 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 269362306a36Sopenharmony_ci 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 269462306a36Sopenharmony_ci 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 269562306a36Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 269662306a36Sopenharmony_ci 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 269762306a36Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 269862306a36Sopenharmony_ci 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 269962306a36Sopenharmony_ci 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 270062306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 270162306a36Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 270262306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 270362306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 270462306a36Sopenharmony_ci 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 270562306a36Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 270662306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 270762306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 270862306a36Sopenharmony_ci 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 270962306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 271062306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 271162306a36Sopenharmony_ci 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 271262306a36Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 271362306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 271462306a36Sopenharmony_ci 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 271562306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 271662306a36Sopenharmony_ci 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 271762306a36Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 271862306a36Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 271962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 272962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 273962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 274962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 275962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 276962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 277962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 278062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 278162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 278262306a36Sopenharmony_ci {0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10, 278362306a36Sopenharmony_ci 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b, 278462306a36Sopenharmony_ci 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26, 278562306a36Sopenharmony_ci 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f, 278662306a36Sopenharmony_ci 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38, 278762306a36Sopenharmony_ci 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 278862306a36Sopenharmony_ci 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 278962306a36Sopenharmony_ci 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 279062306a36Sopenharmony_ci 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 279162306a36Sopenharmony_ci 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58, 279262306a36Sopenharmony_ci 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 279362306a36Sopenharmony_ci 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 279462306a36Sopenharmony_ci 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66, 279562306a36Sopenharmony_ci 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 279662306a36Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 279762306a36Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 279862306a36Sopenharmony_ci 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 279962306a36Sopenharmony_ci 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79, 280062306a36Sopenharmony_ci 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 280162306a36Sopenharmony_ci 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 280262306a36Sopenharmony_ci 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 280362306a36Sopenharmony_ci 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 280462306a36Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 280562306a36Sopenharmony_ci 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 280662306a36Sopenharmony_ci 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 280762306a36Sopenharmony_ci 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 280862306a36Sopenharmony_ci 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 280962306a36Sopenharmony_ci 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98, 281062306a36Sopenharmony_ci 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 281162306a36Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 281262306a36Sopenharmony_ci 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 281362306a36Sopenharmony_ci 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 281462306a36Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 281562306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 281662306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 281762306a36Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 281862306a36Sopenharmony_ci 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 281962306a36Sopenharmony_ci 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 282062306a36Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 282162306a36Sopenharmony_ci 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 282262306a36Sopenharmony_ci 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 282362306a36Sopenharmony_ci 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 282462306a36Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 282562306a36Sopenharmony_ci 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 282662306a36Sopenharmony_ci 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 282762306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 282862306a36Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 282962306a36Sopenharmony_ci 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 283062306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 283162306a36Sopenharmony_ci 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 283262306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 283362306a36Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 283462306a36Sopenharmony_ci 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 283562306a36Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 283662306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 283762306a36Sopenharmony_ci 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 283862306a36Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 283962306a36Sopenharmony_ci 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 284062306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 284162306a36Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 284262306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 284362306a36Sopenharmony_ci 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 284462306a36Sopenharmony_ci 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 284562306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 284662306a36Sopenharmony_ci 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 284762306a36Sopenharmony_ci 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 284862306a36Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 284962306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 285062306a36Sopenharmony_ci 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 285162306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 285262306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 285362306a36Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 285462306a36Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 285562306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 285662306a36Sopenharmony_ci 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 285762306a36Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 285862306a36Sopenharmony_ci 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 285962306a36Sopenharmony_ci 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 286062306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 286162306a36Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 286262306a36Sopenharmony_ci 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 286362306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 286462306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 286562306a36Sopenharmony_ci 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 286662306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 286762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 286862306a36Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 286962306a36Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 287062306a36Sopenharmony_ci 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 287162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 287962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 288962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 289962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 290962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 291062306a36Sopenharmony_ci {0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 291162306a36Sopenharmony_ci 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 291262306a36Sopenharmony_ci 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d, 291362306a36Sopenharmony_ci 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 291462306a36Sopenharmony_ci 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 291562306a36Sopenharmony_ci 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49, 291662306a36Sopenharmony_ci 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 291762306a36Sopenharmony_ci 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58, 291862306a36Sopenharmony_ci 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 291962306a36Sopenharmony_ci 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 292062306a36Sopenharmony_ci 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 292162306a36Sopenharmony_ci 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e, 292262306a36Sopenharmony_ci 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74, 292362306a36Sopenharmony_ci 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79, 292462306a36Sopenharmony_ci 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 292562306a36Sopenharmony_ci 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 292662306a36Sopenharmony_ci 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 292762306a36Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 292862306a36Sopenharmony_ci 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 292962306a36Sopenharmony_ci 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92, 293062306a36Sopenharmony_ci 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 293162306a36Sopenharmony_ci 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 293262306a36Sopenharmony_ci 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 293362306a36Sopenharmony_ci 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0, 293462306a36Sopenharmony_ci 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3, 293562306a36Sopenharmony_ci 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 293662306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 293762306a36Sopenharmony_ci 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 293862306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf, 293962306a36Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 294062306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4, 294162306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 294262306a36Sopenharmony_ci 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 294362306a36Sopenharmony_ci 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 294462306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf, 294562306a36Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 294662306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 294762306a36Sopenharmony_ci 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 294862306a36Sopenharmony_ci 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 294962306a36Sopenharmony_ci 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 295062306a36Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 295162306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 295262306a36Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 295362306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 295462306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 295562306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 295662306a36Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 295762306a36Sopenharmony_ci 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 295862306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 295962306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 296062306a36Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 296162306a36Sopenharmony_ci 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 296262306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 296362306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 296462306a36Sopenharmony_ci 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 296562306a36Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 296662306a36Sopenharmony_ci 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 296762306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 296862306a36Sopenharmony_ci 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 296962306a36Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 297062306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 297162306a36Sopenharmony_ci 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 297262306a36Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 297362306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 297462306a36Sopenharmony_ci 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 297562306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 297662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 297762306a36Sopenharmony_ci 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 297862306a36Sopenharmony_ci 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 297962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 298962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 299962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 300962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 301962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 302962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 303762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff} 303862306a36Sopenharmony_ci }, 303962306a36Sopenharmony_ci { /* gamma 4 - from tp6800 + soi763a */ 304062306a36Sopenharmony_ci {0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f, 304162306a36Sopenharmony_ci 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 304262306a36Sopenharmony_ci 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a, 304362306a36Sopenharmony_ci 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45, 304462306a36Sopenharmony_ci 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f, 304562306a36Sopenharmony_ci 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58, 304662306a36Sopenharmony_ci 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60, 304762306a36Sopenharmony_ci 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67, 304862306a36Sopenharmony_ci 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e, 304962306a36Sopenharmony_ci 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74, 305062306a36Sopenharmony_ci 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a, 305162306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 305262306a36Sopenharmony_ci 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 305362306a36Sopenharmony_ci 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 305462306a36Sopenharmony_ci 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91, 305562306a36Sopenharmony_ci 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96, 305662306a36Sopenharmony_ci 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 305762306a36Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d, 305862306a36Sopenharmony_ci 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2, 305962306a36Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5, 306062306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab, 306162306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 306262306a36Sopenharmony_ci 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1, 306362306a36Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4, 306462306a36Sopenharmony_ci 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8, 306562306a36Sopenharmony_ci 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc, 306662306a36Sopenharmony_ci 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf, 306762306a36Sopenharmony_ci 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 306862306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 306962306a36Sopenharmony_ci 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9, 307062306a36Sopenharmony_ci 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 307162306a36Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce, 307262306a36Sopenharmony_ci 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 307362306a36Sopenharmony_ci 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 307462306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 307562306a36Sopenharmony_ci 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 307662306a36Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 307762306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 307862306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 307962306a36Sopenharmony_ci 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 308062306a36Sopenharmony_ci 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 308162306a36Sopenharmony_ci 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 308262306a36Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 308362306a36Sopenharmony_ci 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 308462306a36Sopenharmony_ci 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 308562306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 308662306a36Sopenharmony_ci 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 308762306a36Sopenharmony_ci 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 308862306a36Sopenharmony_ci 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 308962306a36Sopenharmony_ci 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 309062306a36Sopenharmony_ci 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 309162306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 309962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 310962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 311962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 312962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 313962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 314962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 315962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 316762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 316862306a36Sopenharmony_ci {0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15, 316962306a36Sopenharmony_ci 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 317062306a36Sopenharmony_ci 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c, 317162306a36Sopenharmony_ci 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35, 317262306a36Sopenharmony_ci 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 317362306a36Sopenharmony_ci 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 317462306a36Sopenharmony_ci 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 317562306a36Sopenharmony_ci 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54, 317662306a36Sopenharmony_ci 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a, 317762306a36Sopenharmony_ci 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 317862306a36Sopenharmony_ci 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65, 317962306a36Sopenharmony_ci 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 318062306a36Sopenharmony_ci 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 318162306a36Sopenharmony_ci 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 318262306a36Sopenharmony_ci 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 318362306a36Sopenharmony_ci 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 318462306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 318562306a36Sopenharmony_ci 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 318662306a36Sopenharmony_ci 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86, 318762306a36Sopenharmony_ci 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 318862306a36Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 318962306a36Sopenharmony_ci 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 319062306a36Sopenharmony_ci 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94, 319162306a36Sopenharmony_ci 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 319262306a36Sopenharmony_ci 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 319362306a36Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 319462306a36Sopenharmony_ci 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0, 319562306a36Sopenharmony_ci 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 319662306a36Sopenharmony_ci 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 319762306a36Sopenharmony_ci 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 319862306a36Sopenharmony_ci 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 319962306a36Sopenharmony_ci 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 320062306a36Sopenharmony_ci 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 320162306a36Sopenharmony_ci 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 320262306a36Sopenharmony_ci 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 320362306a36Sopenharmony_ci 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 320462306a36Sopenharmony_ci 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 320562306a36Sopenharmony_ci 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 320662306a36Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 320762306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 320862306a36Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 320962306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 321062306a36Sopenharmony_ci 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 321162306a36Sopenharmony_ci 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 321262306a36Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 321362306a36Sopenharmony_ci 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 321462306a36Sopenharmony_ci 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 321562306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 321662306a36Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 321762306a36Sopenharmony_ci 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 321862306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 321962306a36Sopenharmony_ci 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 322062306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 322162306a36Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 322262306a36Sopenharmony_ci 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 322362306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 322462306a36Sopenharmony_ci 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 322562306a36Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 322662306a36Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 322762306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 322862306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 322962306a36Sopenharmony_ci 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 323062306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 323162306a36Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 323262306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 323362306a36Sopenharmony_ci 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 323462306a36Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 323562306a36Sopenharmony_ci 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 323662306a36Sopenharmony_ci 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 323762306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 323862306a36Sopenharmony_ci 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 323962306a36Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 324062306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 324162306a36Sopenharmony_ci 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 324262306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 324362306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 324462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 324562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 324662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 324762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 324862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 324962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 325962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 326962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 327962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 328962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 329062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 329162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 329262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 329362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 329462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 329562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}, 329662306a36Sopenharmony_ci {0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b, 329762306a36Sopenharmony_ci 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28, 329862306a36Sopenharmony_ci 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 329962306a36Sopenharmony_ci 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 330062306a36Sopenharmony_ci 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48, 330162306a36Sopenharmony_ci 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50, 330262306a36Sopenharmony_ci 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58, 330362306a36Sopenharmony_ci 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 330462306a36Sopenharmony_ci 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65, 330562306a36Sopenharmony_ci 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c, 330662306a36Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 330762306a36Sopenharmony_ci 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 330862306a36Sopenharmony_ci 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 330962306a36Sopenharmony_ci 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 331062306a36Sopenharmony_ci 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 331162306a36Sopenharmony_ci 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 331262306a36Sopenharmony_ci 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 331362306a36Sopenharmony_ci 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 331462306a36Sopenharmony_ci 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97, 331562306a36Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a, 331662306a36Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 331762306a36Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 331862306a36Sopenharmony_ci 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 331962306a36Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8, 332062306a36Sopenharmony_ci 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 332162306a36Sopenharmony_ci 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 332262306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 332362306a36Sopenharmony_ci 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4, 332462306a36Sopenharmony_ci 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 332562306a36Sopenharmony_ci 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 332662306a36Sopenharmony_ci 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 332762306a36Sopenharmony_ci 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 332862306a36Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3, 332962306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 333062306a36Sopenharmony_ci 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 333162306a36Sopenharmony_ci 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 333262306a36Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 333362306a36Sopenharmony_ci 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 333462306a36Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 333562306a36Sopenharmony_ci 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 333662306a36Sopenharmony_ci 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 333762306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 333862306a36Sopenharmony_ci 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 333962306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 334062306a36Sopenharmony_ci 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 334162306a36Sopenharmony_ci 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 334262306a36Sopenharmony_ci 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 334362306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 334462306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 334562306a36Sopenharmony_ci 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 334662306a36Sopenharmony_ci 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 334762306a36Sopenharmony_ci 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 334862306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 334962306a36Sopenharmony_ci 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 335062306a36Sopenharmony_ci 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 335162306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 335262306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 335362306a36Sopenharmony_ci 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 335462306a36Sopenharmony_ci 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 335562306a36Sopenharmony_ci 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 335662306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 335762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 335862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 335962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 336962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 337962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 338962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 339962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 340962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341462306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341562306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341662306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341762306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341862306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 341962306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 342062306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 342162306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 342262306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 342362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb} 342462306a36Sopenharmony_ci }, 342562306a36Sopenharmony_ci { /* gamma 5 */ 342662306a36Sopenharmony_ci {0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21, 342762306a36Sopenharmony_ci 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c, 342862306a36Sopenharmony_ci 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36, 342962306a36Sopenharmony_ci 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 343062306a36Sopenharmony_ci 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 343162306a36Sopenharmony_ci 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 343262306a36Sopenharmony_ci 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55, 343362306a36Sopenharmony_ci 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b, 343462306a36Sopenharmony_ci 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61, 343562306a36Sopenharmony_ci 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66, 343662306a36Sopenharmony_ci 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 343762306a36Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 343862306a36Sopenharmony_ci 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75, 343962306a36Sopenharmony_ci 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 344062306a36Sopenharmony_ci 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 344162306a36Sopenharmony_ci 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82, 344262306a36Sopenharmony_ci 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 344362306a36Sopenharmony_ci 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89, 344462306a36Sopenharmony_ci 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d, 344562306a36Sopenharmony_ci 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90, 344662306a36Sopenharmony_ci 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 344762306a36Sopenharmony_ci 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 344862306a36Sopenharmony_ci 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a, 344962306a36Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d, 345062306a36Sopenharmony_ci 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0, 345162306a36Sopenharmony_ci 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3, 345262306a36Sopenharmony_ci 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 345362306a36Sopenharmony_ci 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 345462306a36Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 345562306a36Sopenharmony_ci 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 345662306a36Sopenharmony_ci 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 345762306a36Sopenharmony_ci 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 345862306a36Sopenharmony_ci 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 345962306a36Sopenharmony_ci 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 346062306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 346162306a36Sopenharmony_ci 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 346262306a36Sopenharmony_ci 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 346362306a36Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 346462306a36Sopenharmony_ci 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 346562306a36Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 346662306a36Sopenharmony_ci 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 346762306a36Sopenharmony_ci 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9, 346862306a36Sopenharmony_ci 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 346962306a36Sopenharmony_ci 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 347062306a36Sopenharmony_ci 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 347162306a36Sopenharmony_ci 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 347262306a36Sopenharmony_ci 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3, 347362306a36Sopenharmony_ci 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 347462306a36Sopenharmony_ci 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 347562306a36Sopenharmony_ci 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 347662306a36Sopenharmony_ci 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 347762306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd, 347862306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 347962306a36Sopenharmony_ci 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 348062306a36Sopenharmony_ci 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 348162306a36Sopenharmony_ci 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 348262306a36Sopenharmony_ci 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 348362306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 348462306a36Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 348562306a36Sopenharmony_ci 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb, 348662306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 348762306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 348862306a36Sopenharmony_ci 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 348962306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 349062306a36Sopenharmony_ci 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 349162306a36Sopenharmony_ci 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 349262306a36Sopenharmony_ci 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 349362306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 349462306a36Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 349562306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 349662306a36Sopenharmony_ci 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 349762306a36Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 349862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 349962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 350962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 351962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 352962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 353962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 354962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 355062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 355162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 355262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 355362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 355462306a36Sopenharmony_ci {0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19, 355562306a36Sopenharmony_ci 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 355662306a36Sopenharmony_ci 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 355762306a36Sopenharmony_ci 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32, 355862306a36Sopenharmony_ci 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39, 355962306a36Sopenharmony_ci 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f, 356062306a36Sopenharmony_ci 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45, 356162306a36Sopenharmony_ci 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 356262306a36Sopenharmony_ci 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50, 356362306a36Sopenharmony_ci 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54, 356462306a36Sopenharmony_ci 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59, 356562306a36Sopenharmony_ci 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d, 356662306a36Sopenharmony_ci 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 356762306a36Sopenharmony_ci 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 356862306a36Sopenharmony_ci 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 356962306a36Sopenharmony_ci 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 357062306a36Sopenharmony_ci 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 357162306a36Sopenharmony_ci 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72, 357262306a36Sopenharmony_ci 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75, 357362306a36Sopenharmony_ci 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78, 357462306a36Sopenharmony_ci 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 357562306a36Sopenharmony_ci 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e, 357662306a36Sopenharmony_ci 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81, 357762306a36Sopenharmony_ci 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83, 357862306a36Sopenharmony_ci 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 357962306a36Sopenharmony_ci 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88, 358062306a36Sopenharmony_ci 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 358162306a36Sopenharmony_ci 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d, 358262306a36Sopenharmony_ci 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 358362306a36Sopenharmony_ci 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91, 358462306a36Sopenharmony_ci 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 358562306a36Sopenharmony_ci 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96, 358662306a36Sopenharmony_ci 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 358762306a36Sopenharmony_ci 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a, 358862306a36Sopenharmony_ci 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 358962306a36Sopenharmony_ci 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 359062306a36Sopenharmony_ci 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 359162306a36Sopenharmony_ci 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 359262306a36Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 359362306a36Sopenharmony_ci 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 359462306a36Sopenharmony_ci 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7, 359562306a36Sopenharmony_ci 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 359662306a36Sopenharmony_ci 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 359762306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad, 359862306a36Sopenharmony_ci 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 359962306a36Sopenharmony_ci 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 360062306a36Sopenharmony_ci 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 360162306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 360262306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 360362306a36Sopenharmony_ci 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 360462306a36Sopenharmony_ci 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 360562306a36Sopenharmony_ci 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 360662306a36Sopenharmony_ci 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 360762306a36Sopenharmony_ci 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 360862306a36Sopenharmony_ci 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 360962306a36Sopenharmony_ci 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 361062306a36Sopenharmony_ci 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 361162306a36Sopenharmony_ci 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 361262306a36Sopenharmony_ci 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 361362306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 361462306a36Sopenharmony_ci 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 361562306a36Sopenharmony_ci 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 361662306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 361762306a36Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 361862306a36Sopenharmony_ci 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 361962306a36Sopenharmony_ci 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 362062306a36Sopenharmony_ci 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 362162306a36Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 362262306a36Sopenharmony_ci 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 362362306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 362462306a36Sopenharmony_ci 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 362562306a36Sopenharmony_ci 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 362662306a36Sopenharmony_ci 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 362762306a36Sopenharmony_ci 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 362862306a36Sopenharmony_ci 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 362962306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 363062306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 363162306a36Sopenharmony_ci 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 363262306a36Sopenharmony_ci 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 363362306a36Sopenharmony_ci 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 363462306a36Sopenharmony_ci 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 363562306a36Sopenharmony_ci 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 363662306a36Sopenharmony_ci 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 363762306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 363862306a36Sopenharmony_ci 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 363962306a36Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 364062306a36Sopenharmony_ci 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 364162306a36Sopenharmony_ci 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 364262306a36Sopenharmony_ci 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee, 364362306a36Sopenharmony_ci 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 364462306a36Sopenharmony_ci 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 364562306a36Sopenharmony_ci 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 364662306a36Sopenharmony_ci 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 364762306a36Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 364862306a36Sopenharmony_ci 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 364962306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 365062306a36Sopenharmony_ci 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 365162306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 365262306a36Sopenharmony_ci 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 365362306a36Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 365462306a36Sopenharmony_ci 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 365562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 365662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 365762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 365862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 365962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 366962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 367962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 368062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 368162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 368262306a36Sopenharmony_ci {0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e, 368362306a36Sopenharmony_ci 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28, 368462306a36Sopenharmony_ci 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 368562306a36Sopenharmony_ci 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 368662306a36Sopenharmony_ci 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 368762306a36Sopenharmony_ci 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48, 368862306a36Sopenharmony_ci 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e, 368962306a36Sopenharmony_ci 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54, 369062306a36Sopenharmony_ci 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59, 369162306a36Sopenharmony_ci 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f, 369262306a36Sopenharmony_ci 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63, 369362306a36Sopenharmony_ci 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 369462306a36Sopenharmony_ci 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c, 369562306a36Sopenharmony_ci 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 369662306a36Sopenharmony_ci 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74, 369762306a36Sopenharmony_ci 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 369862306a36Sopenharmony_ci 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 369962306a36Sopenharmony_ci 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 370062306a36Sopenharmony_ci 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 370162306a36Sopenharmony_ci 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 370262306a36Sopenharmony_ci 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89, 370362306a36Sopenharmony_ci 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 370462306a36Sopenharmony_ci 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 370562306a36Sopenharmony_ci 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92, 370662306a36Sopenharmony_ci 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95, 370762306a36Sopenharmony_ci 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 370862306a36Sopenharmony_ci 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 370962306a36Sopenharmony_ci 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 371062306a36Sopenharmony_ci 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 371162306a36Sopenharmony_ci 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 371262306a36Sopenharmony_ci 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 371362306a36Sopenharmony_ci 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 371462306a36Sopenharmony_ci 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9, 371562306a36Sopenharmony_ci 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab, 371662306a36Sopenharmony_ci 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 371762306a36Sopenharmony_ci 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 371862306a36Sopenharmony_ci 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 371962306a36Sopenharmony_ci 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 372062306a36Sopenharmony_ci 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5, 372162306a36Sopenharmony_ci 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 372262306a36Sopenharmony_ci 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 372362306a36Sopenharmony_ci 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 372462306a36Sopenharmony_ci 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 372562306a36Sopenharmony_ci 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 372662306a36Sopenharmony_ci 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 372762306a36Sopenharmony_ci 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 372862306a36Sopenharmony_ci 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 372962306a36Sopenharmony_ci 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 373062306a36Sopenharmony_ci 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 373162306a36Sopenharmony_ci 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 373262306a36Sopenharmony_ci 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 373362306a36Sopenharmony_ci 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 373462306a36Sopenharmony_ci 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 373562306a36Sopenharmony_ci 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 373662306a36Sopenharmony_ci 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 373762306a36Sopenharmony_ci 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 373862306a36Sopenharmony_ci 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6, 373962306a36Sopenharmony_ci 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 374062306a36Sopenharmony_ci 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 374162306a36Sopenharmony_ci 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 374262306a36Sopenharmony_ci 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 374362306a36Sopenharmony_ci 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 374462306a36Sopenharmony_ci 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 374562306a36Sopenharmony_ci 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 374662306a36Sopenharmony_ci 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 374762306a36Sopenharmony_ci 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 374862306a36Sopenharmony_ci 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 374962306a36Sopenharmony_ci 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 375062306a36Sopenharmony_ci 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 375162306a36Sopenharmony_ci 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 375262306a36Sopenharmony_ci 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 375362306a36Sopenharmony_ci 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 375462306a36Sopenharmony_ci 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 375562306a36Sopenharmony_ci 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 375662306a36Sopenharmony_ci 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 375762306a36Sopenharmony_ci 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 375862306a36Sopenharmony_ci 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 375962306a36Sopenharmony_ci 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 376062306a36Sopenharmony_ci 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 376162306a36Sopenharmony_ci 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 376262306a36Sopenharmony_ci 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 376362306a36Sopenharmony_ci 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 376462306a36Sopenharmony_ci 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 376562306a36Sopenharmony_ci 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 376662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 376762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 376862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 376962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 377962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 378962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 379962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380062306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380162306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380262306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380362306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380462306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380562306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380662306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380762306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380862306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 380962306a36Sopenharmony_ci 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, 381062306a36Sopenharmony_ci }, 381162306a36Sopenharmony_ci }; 381262306a36Sopenharmony_ci 381362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 381462306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) 381562306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 381662306a36Sopenharmony_ci/* msleep(50); */ 381762306a36Sopenharmony_ci bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024); 381862306a36Sopenharmony_ci bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024); 381962306a36Sopenharmony_ci bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024); 382062306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 382162306a36Sopenharmony_ci int i; 382262306a36Sopenharmony_ci 382362306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x2b); 382462306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 382562306a36Sopenharmony_ci for (i = 0; i < 6; i++) 382662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R55_GAMMA_R, 382762306a36Sopenharmony_ci gamma_tb[gamma][0][i]); 382862306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x2b); 382962306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 383062306a36Sopenharmony_ci for (i = 0; i < 6; i++) 383162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R56_GAMMA_G, 383262306a36Sopenharmony_ci gamma_tb[gamma][1][i]); 383362306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x2b); 383462306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 383562306a36Sopenharmony_ci for (i = 0; i < 6; i++) 383662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R57_GAMMA_B, 383762306a36Sopenharmony_ci gamma_tb[gamma][2][i]); 383862306a36Sopenharmony_ci reg_w(gspca_dev, 0x02, 0x28); 383962306a36Sopenharmony_ci } 384062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); 384162306a36Sopenharmony_ci/* msleep(50); */ 384262306a36Sopenharmony_ci} 384362306a36Sopenharmony_ci 384462306a36Sopenharmony_cistatic void setsharpness(struct gspca_dev *gspca_dev, s32 val) 384562306a36Sopenharmony_ci{ 384662306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 384762306a36Sopenharmony_ci 384862306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 384962306a36Sopenharmony_ci val |= 0x08; /* grid compensation enable */ 385062306a36Sopenharmony_ci if (gspca_dev->pixfmt.width == 640) 385162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 385262306a36Sopenharmony_ci else 385362306a36Sopenharmony_ci val |= 0x04; /* scaling down enable */ 385462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val); 385562306a36Sopenharmony_ci } else { 385662306a36Sopenharmony_ci val = (val << 5) | 0x08; 385762306a36Sopenharmony_ci reg_w(gspca_dev, 0x59, val); 385862306a36Sopenharmony_ci } 385962306a36Sopenharmony_ci} 386062306a36Sopenharmony_ci 386162306a36Sopenharmony_cistatic void setautogain(struct gspca_dev *gspca_dev, s32 val) 386262306a36Sopenharmony_ci{ 386362306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 386462306a36Sopenharmony_ci 386562306a36Sopenharmony_ci sd->ag_cnt = val ? AG_CNT_START : -1; 386662306a36Sopenharmony_ci} 386762306a36Sopenharmony_ci 386862306a36Sopenharmony_ci/* set the resolution for sensor cx0342 */ 386962306a36Sopenharmony_cistatic void set_resolution(struct gspca_dev *gspca_dev) 387062306a36Sopenharmony_ci{ 387162306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 387262306a36Sopenharmony_ci 387362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 387462306a36Sopenharmony_ci if (gspca_dev->pixfmt.width == 320) { 387562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06); 387662306a36Sopenharmony_ci msleep(100); 387762306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 387862306a36Sopenharmony_ci msleep(100); 387962306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); 388062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ 388162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d); 388262306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37); 388362306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01); 388462306a36Sopenharmony_ci } else { 388562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05); 388662306a36Sopenharmony_ci msleep(100); 388762306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 388862306a36Sopenharmony_ci msleep(100); 388962306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03); 389062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 389162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09); 389262306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf); 389362306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00); 389462306a36Sopenharmony_ci } 389562306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01); 389662306a36Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342], 389762306a36Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 389862306a36Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 389962306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 390062306a36Sopenharmony_ci setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); 390162306a36Sopenharmony_ci} 390262306a36Sopenharmony_ci 390362306a36Sopenharmony_ci/* convert the frame rate to a tp68x0 value */ 390462306a36Sopenharmony_cistatic int get_fr_idx(struct gspca_dev *gspca_dev) 390562306a36Sopenharmony_ci{ 390662306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 390762306a36Sopenharmony_ci int i; 390862306a36Sopenharmony_ci 390962306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 391062306a36Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) { 391162306a36Sopenharmony_ci if (sd->framerate >= rates[i]) 391262306a36Sopenharmony_ci break; 391362306a36Sopenharmony_ci } 391462306a36Sopenharmony_ci i = 6 - i; /* 1 = 5fps .. 6 = 30fps */ 391562306a36Sopenharmony_ci 391662306a36Sopenharmony_ci /* 640x480 * 30 fps does not work */ 391762306a36Sopenharmony_ci if (i == 6 /* if 30 fps */ 391862306a36Sopenharmony_ci && gspca_dev->pixfmt.width == 640) 391962306a36Sopenharmony_ci i = 0x05; /* 15 fps */ 392062306a36Sopenharmony_ci } else { 392162306a36Sopenharmony_ci for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) { 392262306a36Sopenharmony_ci if (sd->framerate >= rates_6810[i]) 392362306a36Sopenharmony_ci break; 392462306a36Sopenharmony_ci } 392562306a36Sopenharmony_ci i = 7 - i; /* 3 = 5fps .. 7 = 30fps */ 392662306a36Sopenharmony_ci 392762306a36Sopenharmony_ci /* 640x480 * 30 fps does not work */ 392862306a36Sopenharmony_ci if (i == 7 /* if 30 fps */ 392962306a36Sopenharmony_ci && gspca_dev->pixfmt.width == 640) 393062306a36Sopenharmony_ci i = 6; /* 15 fps */ 393162306a36Sopenharmony_ci i |= 0x80; /* clock * 1 */ 393262306a36Sopenharmony_ci } 393362306a36Sopenharmony_ci return i; 393462306a36Sopenharmony_ci} 393562306a36Sopenharmony_ci 393662306a36Sopenharmony_cistatic void setframerate(struct gspca_dev *gspca_dev, s32 val) 393762306a36Sopenharmony_ci{ 393862306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 393962306a36Sopenharmony_ci u8 fr_idx; 394062306a36Sopenharmony_ci 394162306a36Sopenharmony_ci fr_idx = get_fr_idx(gspca_dev); 394262306a36Sopenharmony_ci 394362306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 394462306a36Sopenharmony_ci reg_r(gspca_dev, 0x7b); 394562306a36Sopenharmony_ci reg_w(gspca_dev, 0x7b, 394662306a36Sopenharmony_ci sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90); 394762306a36Sopenharmony_ci if (val >= 128) 394862306a36Sopenharmony_ci fr_idx = 0xf0; /* lower frame rate */ 394962306a36Sopenharmony_ci } 395062306a36Sopenharmony_ci 395162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx); 395262306a36Sopenharmony_ci 395362306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 395462306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01); 395562306a36Sopenharmony_ci} 395662306a36Sopenharmony_ci 395762306a36Sopenharmony_cistatic void setrgain(struct gspca_dev *gspca_dev, s32 rgain) 395862306a36Sopenharmony_ci{ 395962306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8); 396062306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain); 396162306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80); 396262306a36Sopenharmony_ci} 396362306a36Sopenharmony_ci 396462306a36Sopenharmony_cistatic int sd_setgain(struct gspca_dev *gspca_dev) 396562306a36Sopenharmony_ci{ 396662306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 396762306a36Sopenharmony_ci s32 val = gspca_dev->gain->val; 396862306a36Sopenharmony_ci 396962306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 397062306a36Sopenharmony_ci s32 old = gspca_dev->gain->cur.val ? 397162306a36Sopenharmony_ci gspca_dev->gain->cur.val : 1; 397262306a36Sopenharmony_ci 397362306a36Sopenharmony_ci sd->blue->val = sd->blue->val * val / old; 397462306a36Sopenharmony_ci if (sd->blue->val > 4095) 397562306a36Sopenharmony_ci sd->blue->val = 4095; 397662306a36Sopenharmony_ci sd->red->val = sd->red->val * val / old; 397762306a36Sopenharmony_ci if (sd->red->val > 4095) 397862306a36Sopenharmony_ci sd->red->val = 4095; 397962306a36Sopenharmony_ci } 398062306a36Sopenharmony_ci if (gspca_dev->streaming) { 398162306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 398262306a36Sopenharmony_ci setexposure(gspca_dev, gspca_dev->exposure->val, 398362306a36Sopenharmony_ci gspca_dev->gain->val, 398462306a36Sopenharmony_ci sd->blue->val, sd->red->val); 398562306a36Sopenharmony_ci else 398662306a36Sopenharmony_ci setexposure(gspca_dev, gspca_dev->exposure->val, 398762306a36Sopenharmony_ci gspca_dev->gain->val, 0, 0); 398862306a36Sopenharmony_ci } 398962306a36Sopenharmony_ci return gspca_dev->usb_err; 399062306a36Sopenharmony_ci} 399162306a36Sopenharmony_ci 399262306a36Sopenharmony_cistatic void setbgain(struct gspca_dev *gspca_dev, s32 bgain) 399362306a36Sopenharmony_ci{ 399462306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8); 399562306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain); 399662306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80); 399762306a36Sopenharmony_ci} 399862306a36Sopenharmony_ci 399962306a36Sopenharmony_ci/* this function is called at probe time */ 400062306a36Sopenharmony_cistatic int sd_config(struct gspca_dev *gspca_dev, 400162306a36Sopenharmony_ci const struct usb_device_id *id) 400262306a36Sopenharmony_ci{ 400362306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 400462306a36Sopenharmony_ci 400562306a36Sopenharmony_ci sd->bridge = id->driver_info; 400662306a36Sopenharmony_ci 400762306a36Sopenharmony_ci gspca_dev->cam.cam_mode = vga_mode; 400862306a36Sopenharmony_ci gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); 400962306a36Sopenharmony_ci gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ? 401062306a36Sopenharmony_ci framerates : framerates_6810; 401162306a36Sopenharmony_ci 401262306a36Sopenharmony_ci sd->framerate = DEFAULT_FRAME_RATE; 401362306a36Sopenharmony_ci return 0; 401462306a36Sopenharmony_ci} 401562306a36Sopenharmony_ci 401662306a36Sopenharmony_ci/* this function is called at probe and resume time */ 401762306a36Sopenharmony_cistatic int sd_init(struct gspca_dev *gspca_dev) 401862306a36Sopenharmony_ci{ 401962306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 402062306a36Sopenharmony_ci static const struct cmd tp6800_preinit[] = { 402162306a36Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x01}, /* sif */ 402262306a36Sopenharmony_ci {TP6800_R11_SIF_CONTROL, 0x01}, 402362306a36Sopenharmony_ci {TP6800_R15_GPIO_PU, 0x9f}, 402462306a36Sopenharmony_ci {TP6800_R16_GPIO_PD, 0x9f}, 402562306a36Sopenharmony_ci {TP6800_R17_GPIO_IO, 0x80}, 402662306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0x40}, /* LED off */ 402762306a36Sopenharmony_ci }; 402862306a36Sopenharmony_ci static const struct cmd tp6810_preinit[] = { 402962306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x2f}, 403062306a36Sopenharmony_ci {TP6800_R15_GPIO_PU, 0x6f}, 403162306a36Sopenharmony_ci {TP6800_R16_GPIO_PD, 0x40}, 403262306a36Sopenharmony_ci {TP6800_R17_GPIO_IO, 0x9f}, 403362306a36Sopenharmony_ci {TP6800_R18_GPIO_DATA, 0xc1}, /* LED off */ 403462306a36Sopenharmony_ci }; 403562306a36Sopenharmony_ci 403662306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 403762306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6800_preinit, 403862306a36Sopenharmony_ci ARRAY_SIZE(tp6800_preinit)); 403962306a36Sopenharmony_ci else 404062306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_preinit, 404162306a36Sopenharmony_ci ARRAY_SIZE(tp6810_preinit)); 404262306a36Sopenharmony_ci msleep(15); 404362306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R18_GPIO_DATA); 404462306a36Sopenharmony_ci gspca_dbg(gspca_dev, D_PROBE, "gpio: %02x\n", gspca_dev->usb_buf[0]); 404562306a36Sopenharmony_ci/* values: 404662306a36Sopenharmony_ci * 0x80: snapshot button 404762306a36Sopenharmony_ci * 0x40: LED 404862306a36Sopenharmony_ci * 0x20: (bridge / sensor) reset for tp6810 ? 404962306a36Sopenharmony_ci * 0x07: sensor type ? 405062306a36Sopenharmony_ci */ 405162306a36Sopenharmony_ci 405262306a36Sopenharmony_ci /* guess the sensor type */ 405362306a36Sopenharmony_ci if (force_sensor >= 0) { 405462306a36Sopenharmony_ci sd->sensor = force_sensor; 405562306a36Sopenharmony_ci } else { 405662306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 405762306a36Sopenharmony_ci/*fixme: not sure this is working*/ 405862306a36Sopenharmony_ci switch (gspca_dev->usb_buf[0] & 0x07) { 405962306a36Sopenharmony_ci case 0: 406062306a36Sopenharmony_ci sd->sensor = SENSOR_SOI763A; 406162306a36Sopenharmony_ci break; 406262306a36Sopenharmony_ci case 1: 406362306a36Sopenharmony_ci sd->sensor = SENSOR_CX0342; 406462306a36Sopenharmony_ci break; 406562306a36Sopenharmony_ci } 406662306a36Sopenharmony_ci } else { 406762306a36Sopenharmony_ci int sensor; 406862306a36Sopenharmony_ci 406962306a36Sopenharmony_ci sensor = probe_6810(gspca_dev); 407062306a36Sopenharmony_ci if (sensor < 0) { 407162306a36Sopenharmony_ci pr_warn("Unknown sensor %d - forced to soi763a\n", 407262306a36Sopenharmony_ci -sensor); 407362306a36Sopenharmony_ci sensor = SENSOR_SOI763A; 407462306a36Sopenharmony_ci } 407562306a36Sopenharmony_ci sd->sensor = sensor; 407662306a36Sopenharmony_ci } 407762306a36Sopenharmony_ci } 407862306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) { 407962306a36Sopenharmony_ci pr_info("Sensor soi763a\n"); 408062306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 408162306a36Sopenharmony_ci soi763a_6810_init(gspca_dev); 408262306a36Sopenharmony_ci } 408362306a36Sopenharmony_ci } else { 408462306a36Sopenharmony_ci pr_info("Sensor cx0342\n"); 408562306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 408662306a36Sopenharmony_ci cx0342_6810_init(gspca_dev); 408762306a36Sopenharmony_ci } 408862306a36Sopenharmony_ci } 408962306a36Sopenharmony_ci 409062306a36Sopenharmony_ci set_dqt(gspca_dev, 0); 409162306a36Sopenharmony_ci return 0; 409262306a36Sopenharmony_ci} 409362306a36Sopenharmony_ci 409462306a36Sopenharmony_ci/* This function is called before choosing the alt setting */ 409562306a36Sopenharmony_cistatic int sd_isoc_init(struct gspca_dev *gspca_dev) 409662306a36Sopenharmony_ci{ 409762306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 409862306a36Sopenharmony_ci static const struct cmd cx_sensor_init[] = { 409962306a36Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 410062306a36Sopenharmony_ci {CX0342_EXPO_LINE_L, 0x37}, 410162306a36Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x01}, 410262306a36Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x00}, 410362306a36Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x00}, 410462306a36Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x00}, 410562306a36Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x00}, 410662306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 410762306a36Sopenharmony_ci }; 410862306a36Sopenharmony_ci static const struct cmd cx_bridge_init[] = { 410962306a36Sopenharmony_ci {0x4d, 0x00}, 411062306a36Sopenharmony_ci {0x4c, 0xff}, 411162306a36Sopenharmony_ci {0x4e, 0xff}, 411262306a36Sopenharmony_ci {0x4f, 0x00}, 411362306a36Sopenharmony_ci }; 411462306a36Sopenharmony_ci static const struct cmd ov_sensor_init[] = { 411562306a36Sopenharmony_ci {0x10, 0x75}, /* exposure */ 411662306a36Sopenharmony_ci {0x76, 0x03}, 411762306a36Sopenharmony_ci {0x00, 0x00}, /* gain */ 411862306a36Sopenharmony_ci }; 411962306a36Sopenharmony_ci static const struct cmd ov_bridge_init[] = { 412062306a36Sopenharmony_ci {0x7b, 0x90}, 412162306a36Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x87}, 412262306a36Sopenharmony_ci }; 412362306a36Sopenharmony_ci 412462306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 412562306a36Sopenharmony_ci return 0; 412662306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 412762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20); 412862306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87); 412962306a36Sopenharmony_ci i2c_w_buf(gspca_dev, cx_sensor_init, 413062306a36Sopenharmony_ci ARRAY_SIZE(cx_sensor_init)); 413162306a36Sopenharmony_ci reg_w_buf(gspca_dev, cx_bridge_init, 413262306a36Sopenharmony_ci ARRAY_SIZE(cx_bridge_init)); 413362306a36Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_null, sizeof color_null); 413462306a36Sopenharmony_ci reg_w(gspca_dev, 0x59, 0x40); 413562306a36Sopenharmony_ci } else { 413662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21); 413762306a36Sopenharmony_ci i2c_w_buf(gspca_dev, ov_sensor_init, 413862306a36Sopenharmony_ci ARRAY_SIZE(ov_sensor_init)); 413962306a36Sopenharmony_ci reg_r(gspca_dev, 0x7b); 414062306a36Sopenharmony_ci reg_w_buf(gspca_dev, ov_bridge_init, 414162306a36Sopenharmony_ci ARRAY_SIZE(ov_bridge_init)); 414262306a36Sopenharmony_ci } 414362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 414462306a36Sopenharmony_ci gspca_dev->curr_mode ? 0x00 : 0x01); 414562306a36Sopenharmony_ci return gspca_dev->usb_err; 414662306a36Sopenharmony_ci} 414762306a36Sopenharmony_ci 414862306a36Sopenharmony_cistatic void set_led(struct gspca_dev *gspca_dev, int on) 414962306a36Sopenharmony_ci{ 415062306a36Sopenharmony_ci u8 data; 415162306a36Sopenharmony_ci 415262306a36Sopenharmony_ci reg_r(gspca_dev, TP6800_R18_GPIO_DATA); 415362306a36Sopenharmony_ci data = gspca_dev->usb_buf[0]; 415462306a36Sopenharmony_ci if (on) 415562306a36Sopenharmony_ci data &= ~0x40; 415662306a36Sopenharmony_ci else 415762306a36Sopenharmony_ci data |= 0x40; 415862306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data); 415962306a36Sopenharmony_ci} 416062306a36Sopenharmony_ci 416162306a36Sopenharmony_cistatic void cx0342_6800_start(struct gspca_dev *gspca_dev) 416262306a36Sopenharmony_ci{ 416362306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 416462306a36Sopenharmony_ci static const struct cmd reg_init[] = { 416562306a36Sopenharmony_ci /* fixme: is this useful? */ 416662306a36Sopenharmony_ci {TP6800_R17_GPIO_IO, 0x9f}, 416762306a36Sopenharmony_ci {TP6800_R16_GPIO_PD, 0x40}, 416862306a36Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */ 416962306a36Sopenharmony_ci {TP6800_R50, 0x00}, 417062306a36Sopenharmony_ci {TP6800_R51, 0x00}, 417162306a36Sopenharmony_ci {TP6800_R52, 0xff}, 417262306a36Sopenharmony_ci {TP6800_R53, 0x03}, 417362306a36Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x07}, 417462306a36Sopenharmony_ci {TP6800_R5C_EDGE_THRLD, 0x40}, 417562306a36Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x40}, 417662306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x17}, 417762306a36Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x18}, /* G1B..RG0 */ 417862306a36Sopenharmony_ci {TP6800_R37_FRONT_DARK_ST, 0x00}, 417962306a36Sopenharmony_ci {TP6800_R38_FRONT_DARK_END, 0x00}, 418062306a36Sopenharmony_ci {TP6800_R39_REAR_DARK_ST_L, 0x00}, 418162306a36Sopenharmony_ci {TP6800_R3A_REAR_DARK_ST_H, 0x00}, 418262306a36Sopenharmony_ci {TP6800_R3B_REAR_DARK_END_L, 0x00}, 418362306a36Sopenharmony_ci {TP6800_R3C_REAR_DARK_END_H, 0x00}, 418462306a36Sopenharmony_ci {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00}, 418562306a36Sopenharmony_ci {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00}, 418662306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x03}, 418762306a36Sopenharmony_ci 418862306a36Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x0b}, 418962306a36Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x8a}, 419062306a36Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 419162306a36Sopenharmony_ci {TP6800_R34_LINE_START, 0x0e}, 419262306a36Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf4}, 419362306a36Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 419462306a36Sopenharmony_ci {TP6800_R78_FORMAT, 0x00}, 419562306a36Sopenharmony_ci {TP6800_R12_SIF_ADDR_S, 0x20}, /* cx0342 i2c addr */ 419662306a36Sopenharmony_ci }; 419762306a36Sopenharmony_ci static const struct cmd sensor_init[] = { 419862306a36Sopenharmony_ci {CX0342_OUTPUT_CTRL, 0x07}, 419962306a36Sopenharmony_ci {CX0342_BYPASS_MODE, 0x58}, 420062306a36Sopenharmony_ci {CX0342_GPXLTHD_L, 0x16}, 420162306a36Sopenharmony_ci {CX0342_RBPXLTHD_L, 0x16}, 420262306a36Sopenharmony_ci {CX0342_PLANETHD_L, 0xc0}, 420362306a36Sopenharmony_ci {CX0342_PLANETHD_H, 0x03}, 420462306a36Sopenharmony_ci {CX0342_RB_GAP_L, 0xff}, 420562306a36Sopenharmony_ci {CX0342_RB_GAP_H, 0x07}, 420662306a36Sopenharmony_ci {CX0342_G_GAP_L, 0xff}, 420762306a36Sopenharmony_ci {CX0342_G_GAP_H, 0x07}, 420862306a36Sopenharmony_ci {CX0342_RST_OVERFLOW_L, 0x5c}, 420962306a36Sopenharmony_ci {CX0342_RST_OVERFLOW_H, 0x01}, 421062306a36Sopenharmony_ci {CX0342_DATA_OVERFLOW_L, 0xfc}, 421162306a36Sopenharmony_ci {CX0342_DATA_OVERFLOW_H, 0x03}, 421262306a36Sopenharmony_ci {CX0342_DATA_UNDERFLOW_L, 0x00}, 421362306a36Sopenharmony_ci {CX0342_DATA_UNDERFLOW_H, 0x00}, 421462306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x40}, 421562306a36Sopenharmony_ci {CX0342_GLOBAL_GAIN, 0x01}, 421662306a36Sopenharmony_ci {CX0342_CLOCK_GEN, 0x00}, 421762306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x02}, 421862306a36Sopenharmony_ci {CX0342_IDLE_CTRL, 0x05}, 421962306a36Sopenharmony_ci {CX0342_ADCGN, 0x00}, 422062306a36Sopenharmony_ci {CX0342_ADC_CTL, 0x00}, 422162306a36Sopenharmony_ci {CX0342_LVRST_BLBIAS, 0x01}, 422262306a36Sopenharmony_ci {CX0342_VTHSEL, 0x0b}, 422362306a36Sopenharmony_ci {CX0342_RAMP_RIV, 0x0b}, 422462306a36Sopenharmony_ci {CX0342_LDOSEL, 0x07}, 422562306a36Sopenharmony_ci {CX0342_SPV_VALUE_L, 0x40}, 422662306a36Sopenharmony_ci {CX0342_SPV_VALUE_H, 0x02}, 422762306a36Sopenharmony_ci }; 422862306a36Sopenharmony_ci 422962306a36Sopenharmony_ci reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init)); 423062306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 423162306a36Sopenharmony_ci i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq)); 423262306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10); 423362306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00); 423462306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00); 423562306a36Sopenharmony_ci i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01); 423662306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 423762306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 423862306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 423962306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 424062306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 424162306a36Sopenharmony_ci else 424262306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 424362306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 424462306a36Sopenharmony_ci set_led(gspca_dev, 1); 424562306a36Sopenharmony_ci set_resolution(gspca_dev); 424662306a36Sopenharmony_ci} 424762306a36Sopenharmony_ci 424862306a36Sopenharmony_cistatic void cx0342_6810_start(struct gspca_dev *gspca_dev) 424962306a36Sopenharmony_ci{ 425062306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 425162306a36Sopenharmony_ci static const struct cmd sensor_init_2[] = { 425262306a36Sopenharmony_ci {CX0342_EXPO_LINE_L, 0x6f}, 425362306a36Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x02}, 425462306a36Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x00}, 425562306a36Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x00}, 425662306a36Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x00}, 425762306a36Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x00}, 425862306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 425962306a36Sopenharmony_ci }; 426062306a36Sopenharmony_ci static const struct cmd bridge_init_2[] = { 426162306a36Sopenharmony_ci {0x4d, 0x00}, 426262306a36Sopenharmony_ci {0x4c, 0xff}, 426362306a36Sopenharmony_ci {0x4e, 0xff}, 426462306a36Sopenharmony_ci {0x4f, 0x00}, 426562306a36Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x00}, 426662306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x04}, 426762306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x01}, 426862306a36Sopenharmony_ci }; 426962306a36Sopenharmony_ci static const struct cmd bridge_init_3[] = { 427062306a36Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x08}, 427162306a36Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x87}, 427262306a36Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 427362306a36Sopenharmony_ci {TP6800_R34_LINE_START, 0x0e}, 427462306a36Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf4}, 427562306a36Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 427662306a36Sopenharmony_ci }; 427762306a36Sopenharmony_ci static const struct cmd sensor_init_3[] = { 427862306a36Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 427962306a36Sopenharmony_ci {CX0342_EXPO_LINE_L, 0x6f}, 428062306a36Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x02}, 428162306a36Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x00}, 428262306a36Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x00}, 428362306a36Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x00}, 428462306a36Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x00}, 428562306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 428662306a36Sopenharmony_ci }; 428762306a36Sopenharmony_ci static const struct cmd bridge_init_5[] = { 428862306a36Sopenharmony_ci {0x4d, 0x00}, 428962306a36Sopenharmony_ci {0x4c, 0xff}, 429062306a36Sopenharmony_ci {0x4e, 0xff}, 429162306a36Sopenharmony_ci {0x4f, 0x00}, 429262306a36Sopenharmony_ci }; 429362306a36Sopenharmony_ci static const struct cmd sensor_init_4[] = { 429462306a36Sopenharmony_ci {CX0342_EXPO_LINE_L, 0xd3}, 429562306a36Sopenharmony_ci {CX0342_EXPO_LINE_H, 0x01}, 429662306a36Sopenharmony_ci/*fixme: gains, but 00..80 only*/ 429762306a36Sopenharmony_ci {CX0342_RAW_GRGAIN_L, 0x40}, 429862306a36Sopenharmony_ci {CX0342_RAW_GBGAIN_L, 0x40}, 429962306a36Sopenharmony_ci {CX0342_RAW_RGAIN_L, 0x40}, 430062306a36Sopenharmony_ci {CX0342_RAW_BGAIN_L, 0x40}, 430162306a36Sopenharmony_ci {CX0342_SYS_CTRL_0, 0x81}, 430262306a36Sopenharmony_ci }; 430362306a36Sopenharmony_ci static const struct cmd sensor_init_5[] = { 430462306a36Sopenharmony_ci {CX0342_IDLE_CTRL, 0x05}, 430562306a36Sopenharmony_ci {CX0342_ADCGN, 0x00}, 430662306a36Sopenharmony_ci {CX0342_ADC_CTL, 0x00}, 430762306a36Sopenharmony_ci {CX0342_LVRST_BLBIAS, 0x01}, 430862306a36Sopenharmony_ci {CX0342_VTHSEL, 0x0b}, 430962306a36Sopenharmony_ci {CX0342_RAMP_RIV, 0x0b}, 431062306a36Sopenharmony_ci {CX0342_LDOSEL, 0x07}, 431162306a36Sopenharmony_ci {CX0342_SPV_VALUE_L, 0x40}, 431262306a36Sopenharmony_ci {CX0342_SPV_VALUE_H, 0x02}, 431362306a36Sopenharmony_ci {CX0342_AUTO_ADC_CALIB, 0x81}, 431462306a36Sopenharmony_ci }; 431562306a36Sopenharmony_ci 431662306a36Sopenharmony_ci reg_w(gspca_dev, 0x22, gspca_dev->alt); 431762306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2)); 431862306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2)); 431962306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_cx_init_common, 432062306a36Sopenharmony_ci ARRAY_SIZE(tp6810_cx_init_common)); 432162306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3)); 432262306a36Sopenharmony_ci if (gspca_dev->curr_mode) { 432362306a36Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0x7f); 432462306a36Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x05); 432562306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 432662306a36Sopenharmony_ci } else { 432762306a36Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0xff); 432862306a36Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x85); 432962306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ 433062306a36Sopenharmony_ci } 433162306a36Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 433262306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_bridge_start, 433362306a36Sopenharmony_ci ARRAY_SIZE(tp6810_bridge_start)); 433462306a36Sopenharmony_ci setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); 433562306a36Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342], 433662306a36Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 433762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87); 433862306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3)); 433962306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5)); 434062306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4)); 434162306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5)); 434262306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5)); 434362306a36Sopenharmony_ci 434462306a36Sopenharmony_ci set_led(gspca_dev, 1); 434562306a36Sopenharmony_ci/* setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */ 434662306a36Sopenharmony_ci} 434762306a36Sopenharmony_ci 434862306a36Sopenharmony_cistatic void soi763a_6800_start(struct gspca_dev *gspca_dev) 434962306a36Sopenharmony_ci{ 435062306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 435162306a36Sopenharmony_ci static const struct cmd reg_init[] = { 435262306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x04}, 435362306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x01}, 435462306a36Sopenharmony_ci {TP6800_R10_SIF_TYPE, 0x00}, /* i2c 8 bits */ 435562306a36Sopenharmony_ci 435662306a36Sopenharmony_ci {TP6800_R50, 0x00}, 435762306a36Sopenharmony_ci {TP6800_R51, 0x00}, 435862306a36Sopenharmony_ci {TP6800_R52, 0xff}, 435962306a36Sopenharmony_ci {TP6800_R53, 0x03}, 436062306a36Sopenharmony_ci {TP6800_R54_DARK_CFG, 0x07}, 436162306a36Sopenharmony_ci {TP6800_R5C_EDGE_THRLD, 0x40}, 436262306a36Sopenharmony_ci 436362306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x03}, 436462306a36Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x40}, 436562306a36Sopenharmony_ci 436662306a36Sopenharmony_ci {TP6800_R2F_TIMING_CFG, 0x46}, 436762306a36Sopenharmony_ci {TP6800_R30_SENSOR_CFG, 0x10}, /* BG1..G0R */ 436862306a36Sopenharmony_ci {TP6800_R37_FRONT_DARK_ST, 0x00}, 436962306a36Sopenharmony_ci {TP6800_R38_FRONT_DARK_END, 0x00}, 437062306a36Sopenharmony_ci {TP6800_R39_REAR_DARK_ST_L, 0x00}, 437162306a36Sopenharmony_ci {TP6800_R3A_REAR_DARK_ST_H, 0x00}, 437262306a36Sopenharmony_ci {TP6800_R3B_REAR_DARK_END_L, 0x00}, 437362306a36Sopenharmony_ci {TP6800_R3C_REAR_DARK_END_H, 0x00}, 437462306a36Sopenharmony_ci {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00}, 437562306a36Sopenharmony_ci {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00}, 437662306a36Sopenharmony_ci {TP6800_R21_ENDP_1_CTL, 0x03}, 437762306a36Sopenharmony_ci 437862306a36Sopenharmony_ci {TP6800_R3F_FRAME_RATE, 0x04}, /* 15 fps */ 437962306a36Sopenharmony_ci {TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */ 438062306a36Sopenharmony_ci 438162306a36Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x1b}, 438262306a36Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x9a}, 438362306a36Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 438462306a36Sopenharmony_ci {TP6800_R34_LINE_START, 0x0f}, 438562306a36Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf4}, 438662306a36Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 438762306a36Sopenharmony_ci {TP6800_R78_FORMAT, 0x01}, /* qvga */ 438862306a36Sopenharmony_ci {TP6800_R12_SIF_ADDR_S, 0x21}, /* soi763a i2c addr */ 438962306a36Sopenharmony_ci {TP6800_R1A_SIF_TX_DATA2, 0x00}, 439062306a36Sopenharmony_ci }; 439162306a36Sopenharmony_ci static const struct cmd sensor_init[] = { 439262306a36Sopenharmony_ci {0x12, 0x48}, /* mirror - RGB */ 439362306a36Sopenharmony_ci {0x13, 0xa0}, /* clock - no AGC nor AEC */ 439462306a36Sopenharmony_ci {0x03, 0xa4}, /* saturation */ 439562306a36Sopenharmony_ci {0x04, 0x30}, /* hue */ 439662306a36Sopenharmony_ci {0x05, 0x88}, /* contrast */ 439762306a36Sopenharmony_ci {0x06, 0x60}, /* brightness */ 439862306a36Sopenharmony_ci {0x10, 0x41}, /* AEC */ 439962306a36Sopenharmony_ci {0x11, 0x40}, /* clock rate */ 440062306a36Sopenharmony_ci {0x13, 0xa0}, 440162306a36Sopenharmony_ci {0x14, 0x00}, /* 640x480 */ 440262306a36Sopenharmony_ci {0x15, 0x14}, 440362306a36Sopenharmony_ci {0x1f, 0x41}, 440462306a36Sopenharmony_ci {0x20, 0x80}, 440562306a36Sopenharmony_ci {0x23, 0xee}, 440662306a36Sopenharmony_ci {0x24, 0x50}, 440762306a36Sopenharmony_ci {0x25, 0x7a}, 440862306a36Sopenharmony_ci {0x26, 0x00}, 440962306a36Sopenharmony_ci {0x27, 0xe2}, 441062306a36Sopenharmony_ci {0x28, 0xb0}, 441162306a36Sopenharmony_ci {0x2a, 0x00}, 441262306a36Sopenharmony_ci {0x2b, 0x00}, 441362306a36Sopenharmony_ci {0x2d, 0x81}, 441462306a36Sopenharmony_ci {0x2f, 0x9d}, 441562306a36Sopenharmony_ci {0x60, 0x80}, 441662306a36Sopenharmony_ci {0x61, 0x00}, 441762306a36Sopenharmony_ci {0x62, 0x88}, 441862306a36Sopenharmony_ci {0x63, 0x11}, 441962306a36Sopenharmony_ci {0x64, 0x89}, 442062306a36Sopenharmony_ci {0x65, 0x00}, 442162306a36Sopenharmony_ci {0x67, 0x94}, 442262306a36Sopenharmony_ci {0x68, 0x7a}, 442362306a36Sopenharmony_ci {0x69, 0x0f}, 442462306a36Sopenharmony_ci {0x6c, 0x80}, 442562306a36Sopenharmony_ci {0x6d, 0x80}, 442662306a36Sopenharmony_ci {0x6e, 0x80}, 442762306a36Sopenharmony_ci {0x6f, 0xff}, 442862306a36Sopenharmony_ci {0x71, 0x20}, 442962306a36Sopenharmony_ci {0x74, 0x20}, 443062306a36Sopenharmony_ci {0x75, 0x86}, 443162306a36Sopenharmony_ci {0x77, 0xb5}, 443262306a36Sopenharmony_ci {0x17, 0x18}, /* H href start */ 443362306a36Sopenharmony_ci {0x18, 0xbf}, /* H href end */ 443462306a36Sopenharmony_ci {0x19, 0x03}, /* V start */ 443562306a36Sopenharmony_ci {0x1a, 0xf8}, /* V end */ 443662306a36Sopenharmony_ci {0x01, 0x80}, /* blue gain */ 443762306a36Sopenharmony_ci {0x02, 0x80}, /* red gain */ 443862306a36Sopenharmony_ci }; 443962306a36Sopenharmony_ci 444062306a36Sopenharmony_ci reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init)); 444162306a36Sopenharmony_ci 444262306a36Sopenharmony_ci i2c_w(gspca_dev, 0x12, 0x80); /* sensor reset */ 444362306a36Sopenharmony_ci msleep(10); 444462306a36Sopenharmony_ci 444562306a36Sopenharmony_ci i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init)); 444662306a36Sopenharmony_ci 444762306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10); 444862306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00); 444962306a36Sopenharmony_ci 445062306a36Sopenharmony_ci setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); 445162306a36Sopenharmony_ci 445262306a36Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A], 445362306a36Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 445462306a36Sopenharmony_ci 445562306a36Sopenharmony_ci set_led(gspca_dev, 1); 445662306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 445762306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 445862306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 445962306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 446062306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 446162306a36Sopenharmony_ci else 446262306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 446362306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 446462306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 446562306a36Sopenharmony_ci setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); 446662306a36Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 446762306a36Sopenharmony_ci} 446862306a36Sopenharmony_ci 446962306a36Sopenharmony_cistatic void soi763a_6810_start(struct gspca_dev *gspca_dev) 447062306a36Sopenharmony_ci{ 447162306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 447262306a36Sopenharmony_ci static const struct cmd bridge_init_2[] = { 447362306a36Sopenharmony_ci {TP6800_R7A_BLK_THRLD, 0x00}, 447462306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x04}, 447562306a36Sopenharmony_ci {TP6800_R79_QUALITY, 0x01}, 447662306a36Sopenharmony_ci }; 447762306a36Sopenharmony_ci static const struct cmd bridge_init_3[] = { 447862306a36Sopenharmony_ci {TP6800_R31_PIXEL_START, 0x20}, 447962306a36Sopenharmony_ci {TP6800_R32_PIXEL_END_L, 0x9f}, 448062306a36Sopenharmony_ci {TP6800_R33_PIXEL_END_H, 0x02}, 448162306a36Sopenharmony_ci {TP6800_R34_LINE_START, 0x13}, 448262306a36Sopenharmony_ci {TP6800_R35_LINE_END_L, 0xf8}, 448362306a36Sopenharmony_ci {TP6800_R36_LINE_END_H, 0x01}, 448462306a36Sopenharmony_ci }; 448562306a36Sopenharmony_ci static const struct cmd bridge_init_6[] = { 448662306a36Sopenharmony_ci {0x08, 0xff}, 448762306a36Sopenharmony_ci {0x09, 0xff}, 448862306a36Sopenharmony_ci {0x0a, 0x5f}, 448962306a36Sopenharmony_ci {0x0b, 0x80}, 449062306a36Sopenharmony_ci }; 449162306a36Sopenharmony_ci 449262306a36Sopenharmony_ci reg_w(gspca_dev, 0x22, gspca_dev->alt); 449362306a36Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_null, sizeof color_null); 449462306a36Sopenharmony_ci reg_w(gspca_dev, 0x59, 0x40); 449562306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 449662306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 449762306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 449862306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 449962306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 450062306a36Sopenharmony_ci else 450162306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 450262306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 450362306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2)); 450462306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_ov_init_common, 450562306a36Sopenharmony_ci ARRAY_SIZE(tp6810_ov_init_common)); 450662306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3)); 450762306a36Sopenharmony_ci if (gspca_dev->curr_mode) { 450862306a36Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0x7f); 450962306a36Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x05); 451062306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */ 451162306a36Sopenharmony_ci } else { 451262306a36Sopenharmony_ci reg_w(gspca_dev, 0x4a, 0xff); 451362306a36Sopenharmony_ci reg_w(gspca_dev, 0x07, 0x85); 451462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01); /* qvga */ 451562306a36Sopenharmony_ci } 451662306a36Sopenharmony_ci setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma)); 451762306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_bridge_start, 451862306a36Sopenharmony_ci ARRAY_SIZE(tp6810_bridge_start)); 451962306a36Sopenharmony_ci 452062306a36Sopenharmony_ci if (gspca_dev->curr_mode) { 452162306a36Sopenharmony_ci reg_w(gspca_dev, 0x4f, 0x00); 452262306a36Sopenharmony_ci reg_w(gspca_dev, 0x4e, 0x7c); 452362306a36Sopenharmony_ci } 452462306a36Sopenharmony_ci 452562306a36Sopenharmony_ci reg_w(gspca_dev, 0x00, 0x00); 452662306a36Sopenharmony_ci 452762306a36Sopenharmony_ci setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness)); 452862306a36Sopenharmony_ci bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A], 452962306a36Sopenharmony_ci ARRAY_SIZE(color_gain[0])); 453062306a36Sopenharmony_ci set_led(gspca_dev, 1); 453162306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0); 453262306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 453362306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 453462306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 453562306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 453662306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 453762306a36Sopenharmony_ci else 453862306a36Sopenharmony_ci setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure), 453962306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 454062306a36Sopenharmony_ci reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6)); 454162306a36Sopenharmony_ci} 454262306a36Sopenharmony_ci 454362306a36Sopenharmony_ci/* -- start the camera -- */ 454462306a36Sopenharmony_cistatic int sd_start(struct gspca_dev *gspca_dev) 454562306a36Sopenharmony_ci{ 454662306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 454762306a36Sopenharmony_ci 454862306a36Sopenharmony_ci jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height, 454962306a36Sopenharmony_ci gspca_dev->pixfmt.width); 455062306a36Sopenharmony_ci set_dqt(gspca_dev, sd->quality); 455162306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) { 455262306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 455362306a36Sopenharmony_ci cx0342_6800_start(gspca_dev); 455462306a36Sopenharmony_ci else 455562306a36Sopenharmony_ci soi763a_6800_start(gspca_dev); 455662306a36Sopenharmony_ci } else { 455762306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 455862306a36Sopenharmony_ci cx0342_6810_start(gspca_dev); 455962306a36Sopenharmony_ci else 456062306a36Sopenharmony_ci soi763a_6810_start(gspca_dev); 456162306a36Sopenharmony_ci reg_w_buf(gspca_dev, tp6810_late_start, 456262306a36Sopenharmony_ci ARRAY_SIZE(tp6810_late_start)); 456362306a36Sopenharmony_ci reg_w(gspca_dev, 0x80, 0x03); 456462306a36Sopenharmony_ci reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e); 456562306a36Sopenharmony_ci 456662306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) 456762306a36Sopenharmony_ci setexposure(gspca_dev, 456862306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->exposure), 456962306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 457062306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->blue), 457162306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->red)); 457262306a36Sopenharmony_ci else 457362306a36Sopenharmony_ci setexposure(gspca_dev, 457462306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->exposure), 457562306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0); 457662306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 457762306a36Sopenharmony_ci setquality(gspca_dev, 457862306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(sd->jpegqual)); 457962306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) 458062306a36Sopenharmony_ci setautogain(gspca_dev, 458162306a36Sopenharmony_ci v4l2_ctrl_g_ctrl(gspca_dev->autogain)); 458262306a36Sopenharmony_ci } 458362306a36Sopenharmony_ci 458462306a36Sopenharmony_ci setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); 458562306a36Sopenharmony_ci 458662306a36Sopenharmony_ci return gspca_dev->usb_err; 458762306a36Sopenharmony_ci} 458862306a36Sopenharmony_ci 458962306a36Sopenharmony_cistatic void sd_stopN(struct gspca_dev *gspca_dev) 459062306a36Sopenharmony_ci{ 459162306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 459262306a36Sopenharmony_ci 459362306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 459462306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03); 459562306a36Sopenharmony_ci set_led(gspca_dev, 0); 459662306a36Sopenharmony_ci reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00); 459762306a36Sopenharmony_ci} 459862306a36Sopenharmony_ci 459962306a36Sopenharmony_cistatic void sd_pkt_scan(struct gspca_dev *gspca_dev, 460062306a36Sopenharmony_ci u8 *data, 460162306a36Sopenharmony_ci int len) 460262306a36Sopenharmony_ci{ 460362306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 460462306a36Sopenharmony_ci 460562306a36Sopenharmony_ci /* the start of frame contains: 460662306a36Sopenharmony_ci * ff d8 460762306a36Sopenharmony_ci * ff fe 460862306a36Sopenharmony_ci * width / 16 460962306a36Sopenharmony_ci * height / 8 461062306a36Sopenharmony_ci * quality 461162306a36Sopenharmony_ci */ 461262306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 461362306a36Sopenharmony_ci if (*data != 0x5a) { 461462306a36Sopenharmony_ci/*fixme: don't discard the whole frame..*/ 461562306a36Sopenharmony_ci if (*data == 0xaa || *data == 0x00) 461662306a36Sopenharmony_ci return; 461762306a36Sopenharmony_ci if (*data > 0xc0) { 461862306a36Sopenharmony_ci gspca_dbg(gspca_dev, D_FRAM, "bad frame\n"); 461962306a36Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 462062306a36Sopenharmony_ci return; 462162306a36Sopenharmony_ci } 462262306a36Sopenharmony_ci } 462362306a36Sopenharmony_ci data++; 462462306a36Sopenharmony_ci len--; 462562306a36Sopenharmony_ci if (len < 2) { 462662306a36Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 462762306a36Sopenharmony_ci return; 462862306a36Sopenharmony_ci } 462962306a36Sopenharmony_ci if (*data == 0xff && data[1] == 0xd8) { 463062306a36Sopenharmony_ci/*fixme: there may be information in the 4 high bits*/ 463162306a36Sopenharmony_ci if (len < 7) { 463262306a36Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 463362306a36Sopenharmony_ci return; 463462306a36Sopenharmony_ci } 463562306a36Sopenharmony_ci if ((data[6] & 0x0f) != sd->quality) 463662306a36Sopenharmony_ci set_dqt(gspca_dev, data[6] & 0x0f); 463762306a36Sopenharmony_ci gspca_frame_add(gspca_dev, FIRST_PACKET, 463862306a36Sopenharmony_ci sd->jpeg_hdr, JPEG_HDR_SZ); 463962306a36Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 464062306a36Sopenharmony_ci data + 7, len - 7); 464162306a36Sopenharmony_ci } else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) { 464262306a36Sopenharmony_ci gspca_frame_add(gspca_dev, LAST_PACKET, 464362306a36Sopenharmony_ci data, len); 464462306a36Sopenharmony_ci } else { 464562306a36Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 464662306a36Sopenharmony_ci data, len); 464762306a36Sopenharmony_ci } 464862306a36Sopenharmony_ci return; 464962306a36Sopenharmony_ci } 465062306a36Sopenharmony_ci 465162306a36Sopenharmony_ci switch (*data) { 465262306a36Sopenharmony_ci case 0x55: 465362306a36Sopenharmony_ci gspca_frame_add(gspca_dev, LAST_PACKET, data, 0); 465462306a36Sopenharmony_ci 465562306a36Sopenharmony_ci if (len < 8 465662306a36Sopenharmony_ci || data[1] != 0xff || data[2] != 0xd8 465762306a36Sopenharmony_ci || data[3] != 0xff || data[4] != 0xfe) { 465862306a36Sopenharmony_ci 465962306a36Sopenharmony_ci /* Have only seen this with corrupt frames */ 466062306a36Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 466162306a36Sopenharmony_ci return; 466262306a36Sopenharmony_ci } 466362306a36Sopenharmony_ci if (data[7] != sd->quality) 466462306a36Sopenharmony_ci set_dqt(gspca_dev, data[7]); 466562306a36Sopenharmony_ci gspca_frame_add(gspca_dev, FIRST_PACKET, 466662306a36Sopenharmony_ci sd->jpeg_hdr, JPEG_HDR_SZ); 466762306a36Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 466862306a36Sopenharmony_ci data + 8, len - 8); 466962306a36Sopenharmony_ci break; 467062306a36Sopenharmony_ci case 0xaa: 467162306a36Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 467262306a36Sopenharmony_ci break; 467362306a36Sopenharmony_ci case 0xcc: 467462306a36Sopenharmony_ci if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8)) 467562306a36Sopenharmony_ci gspca_frame_add(gspca_dev, INTER_PACKET, 467662306a36Sopenharmony_ci data + 1, len - 1); 467762306a36Sopenharmony_ci else 467862306a36Sopenharmony_ci gspca_dev->last_packet_type = DISCARD_PACKET; 467962306a36Sopenharmony_ci break; 468062306a36Sopenharmony_ci } 468162306a36Sopenharmony_ci} 468262306a36Sopenharmony_ci 468362306a36Sopenharmony_cistatic void sd_dq_callback(struct gspca_dev *gspca_dev) 468462306a36Sopenharmony_ci{ 468562306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 468662306a36Sopenharmony_ci int ret, alen; 468762306a36Sopenharmony_ci int luma, expo; 468862306a36Sopenharmony_ci 468962306a36Sopenharmony_ci if (sd->ag_cnt < 0) 469062306a36Sopenharmony_ci return; 469162306a36Sopenharmony_ci if (--sd->ag_cnt > 5) 469262306a36Sopenharmony_ci return; 469362306a36Sopenharmony_ci switch (sd->ag_cnt) { 469462306a36Sopenharmony_ci/* case 5: */ 469562306a36Sopenharmony_ci default: 469662306a36Sopenharmony_ci reg_w(gspca_dev, 0x7d, 0x00); 469762306a36Sopenharmony_ci break; 469862306a36Sopenharmony_ci case 4: 469962306a36Sopenharmony_ci reg_w(gspca_dev, 0x27, 0xb0); 470062306a36Sopenharmony_ci break; 470162306a36Sopenharmony_ci case 3: 470262306a36Sopenharmony_ci reg_w(gspca_dev, 0x0c, 0x01); 470362306a36Sopenharmony_ci break; 470462306a36Sopenharmony_ci case 2: 470562306a36Sopenharmony_ci ret = usb_bulk_msg(gspca_dev->dev, 470662306a36Sopenharmony_ci usb_rcvbulkpipe(gspca_dev->dev, 0x02), 470762306a36Sopenharmony_ci gspca_dev->usb_buf, 470862306a36Sopenharmony_ci 32, 470962306a36Sopenharmony_ci &alen, 471062306a36Sopenharmony_ci 500); 471162306a36Sopenharmony_ci if (ret < 0) { 471262306a36Sopenharmony_ci pr_err("bulk err %d\n", ret); 471362306a36Sopenharmony_ci break; 471462306a36Sopenharmony_ci } 471562306a36Sopenharmony_ci /* values not used (unknown) */ 471662306a36Sopenharmony_ci break; 471762306a36Sopenharmony_ci case 1: 471862306a36Sopenharmony_ci reg_w(gspca_dev, 0x27, 0xd0); 471962306a36Sopenharmony_ci break; 472062306a36Sopenharmony_ci case 0: 472162306a36Sopenharmony_ci ret = usb_bulk_msg(gspca_dev->dev, 472262306a36Sopenharmony_ci usb_rcvbulkpipe(gspca_dev->dev, 0x02), 472362306a36Sopenharmony_ci gspca_dev->usb_buf, 472462306a36Sopenharmony_ci 32, 472562306a36Sopenharmony_ci &alen, 472662306a36Sopenharmony_ci 500); 472762306a36Sopenharmony_ci if (ret < 0) { 472862306a36Sopenharmony_ci pr_err("bulk err %d\n", ret); 472962306a36Sopenharmony_ci break; 473062306a36Sopenharmony_ci } 473162306a36Sopenharmony_ci luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] + 473262306a36Sopenharmony_ci (gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] + 473362306a36Sopenharmony_ci (gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] + 473462306a36Sopenharmony_ci (gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] + 473562306a36Sopenharmony_ci (gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] + 473662306a36Sopenharmony_ci (gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] + 473762306a36Sopenharmony_ci (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] + 473862306a36Sopenharmony_ci (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28]) 473962306a36Sopenharmony_ci / 8; 474062306a36Sopenharmony_ci if (gspca_dev->pixfmt.width == 640) 474162306a36Sopenharmony_ci luma /= 4; 474262306a36Sopenharmony_ci reg_w(gspca_dev, 0x7d, 0x00); 474362306a36Sopenharmony_ci 474462306a36Sopenharmony_ci expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); 474562306a36Sopenharmony_ci ret = gspca_expo_autogain(gspca_dev, luma, 474662306a36Sopenharmony_ci 60, /* desired luma */ 474762306a36Sopenharmony_ci 6, /* dead zone */ 474862306a36Sopenharmony_ci 2, /* gain knee */ 474962306a36Sopenharmony_ci 70); /* expo knee */ 475062306a36Sopenharmony_ci sd->ag_cnt = AG_CNT_START; 475162306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) { 475262306a36Sopenharmony_ci int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure); 475362306a36Sopenharmony_ci 475462306a36Sopenharmony_ci if ((expo >= 128 && new_expo < 128) 475562306a36Sopenharmony_ci || (expo < 128 && new_expo >= 128)) 475662306a36Sopenharmony_ci setframerate(gspca_dev, new_expo); 475762306a36Sopenharmony_ci } 475862306a36Sopenharmony_ci break; 475962306a36Sopenharmony_ci } 476062306a36Sopenharmony_ci} 476162306a36Sopenharmony_ci 476262306a36Sopenharmony_ci/* get stream parameters (framerate) */ 476362306a36Sopenharmony_cistatic void sd_get_streamparm(struct gspca_dev *gspca_dev, 476462306a36Sopenharmony_ci struct v4l2_streamparm *parm) 476562306a36Sopenharmony_ci{ 476662306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 476762306a36Sopenharmony_ci struct v4l2_captureparm *cp = &parm->parm.capture; 476862306a36Sopenharmony_ci struct v4l2_fract *tpf = &cp->timeperframe; 476962306a36Sopenharmony_ci int fr, i; 477062306a36Sopenharmony_ci 477162306a36Sopenharmony_ci tpf->numerator = 1; 477262306a36Sopenharmony_ci i = get_fr_idx(gspca_dev); 477362306a36Sopenharmony_ci if (i & 0x80) { 477462306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6800) 477562306a36Sopenharmony_ci fr = rates[6 - (i & 0x07)]; 477662306a36Sopenharmony_ci else 477762306a36Sopenharmony_ci fr = rates_6810[7 - (i & 0x07)]; 477862306a36Sopenharmony_ci } else { 477962306a36Sopenharmony_ci fr = rates[6 - i]; 478062306a36Sopenharmony_ci } 478162306a36Sopenharmony_ci tpf->denominator = fr; 478262306a36Sopenharmony_ci} 478362306a36Sopenharmony_ci 478462306a36Sopenharmony_ci/* set stream parameters (framerate) */ 478562306a36Sopenharmony_cistatic void sd_set_streamparm(struct gspca_dev *gspca_dev, 478662306a36Sopenharmony_ci struct v4l2_streamparm *parm) 478762306a36Sopenharmony_ci{ 478862306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 478962306a36Sopenharmony_ci struct v4l2_captureparm *cp = &parm->parm.capture; 479062306a36Sopenharmony_ci struct v4l2_fract *tpf = &cp->timeperframe; 479162306a36Sopenharmony_ci int fr, i; 479262306a36Sopenharmony_ci 479362306a36Sopenharmony_ci if (tpf->numerator == 0 || tpf->denominator == 0) 479462306a36Sopenharmony_ci sd->framerate = DEFAULT_FRAME_RATE; 479562306a36Sopenharmony_ci else 479662306a36Sopenharmony_ci sd->framerate = tpf->denominator / tpf->numerator; 479762306a36Sopenharmony_ci 479862306a36Sopenharmony_ci if (gspca_dev->streaming) 479962306a36Sopenharmony_ci setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); 480062306a36Sopenharmony_ci 480162306a36Sopenharmony_ci /* Return the actual framerate */ 480262306a36Sopenharmony_ci i = get_fr_idx(gspca_dev); 480362306a36Sopenharmony_ci if (i & 0x80) 480462306a36Sopenharmony_ci fr = rates_6810[7 - (i & 0x07)]; 480562306a36Sopenharmony_ci else 480662306a36Sopenharmony_ci fr = rates[6 - i]; 480762306a36Sopenharmony_ci tpf->numerator = 1; 480862306a36Sopenharmony_ci tpf->denominator = fr; 480962306a36Sopenharmony_ci} 481062306a36Sopenharmony_ci 481162306a36Sopenharmony_cistatic int sd_set_jcomp(struct gspca_dev *gspca_dev, 481262306a36Sopenharmony_ci const struct v4l2_jpegcompression *jcomp) 481362306a36Sopenharmony_ci{ 481462306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 481562306a36Sopenharmony_ci 481662306a36Sopenharmony_ci if (sd->sensor != SENSOR_SOI763A) 481762306a36Sopenharmony_ci return -ENOTTY; 481862306a36Sopenharmony_ci v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality); 481962306a36Sopenharmony_ci return 0; 482062306a36Sopenharmony_ci} 482162306a36Sopenharmony_ci 482262306a36Sopenharmony_cistatic int sd_get_jcomp(struct gspca_dev *gspca_dev, 482362306a36Sopenharmony_ci struct v4l2_jpegcompression *jcomp) 482462306a36Sopenharmony_ci{ 482562306a36Sopenharmony_ci struct sd *sd = (struct sd *) gspca_dev; 482662306a36Sopenharmony_ci 482762306a36Sopenharmony_ci if (sd->sensor != SENSOR_SOI763A) 482862306a36Sopenharmony_ci return -ENOTTY; 482962306a36Sopenharmony_ci memset(jcomp, 0, sizeof *jcomp); 483062306a36Sopenharmony_ci jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual); 483162306a36Sopenharmony_ci jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT 483262306a36Sopenharmony_ci | V4L2_JPEG_MARKER_DQT; 483362306a36Sopenharmony_ci return 0; 483462306a36Sopenharmony_ci} 483562306a36Sopenharmony_ci 483662306a36Sopenharmony_cistatic int sd_s_ctrl(struct v4l2_ctrl *ctrl) 483762306a36Sopenharmony_ci{ 483862306a36Sopenharmony_ci struct gspca_dev *gspca_dev = 483962306a36Sopenharmony_ci container_of(ctrl->handler, struct gspca_dev, ctrl_handler); 484062306a36Sopenharmony_ci struct sd *sd = (struct sd *)gspca_dev; 484162306a36Sopenharmony_ci 484262306a36Sopenharmony_ci gspca_dev->usb_err = 0; 484362306a36Sopenharmony_ci 484462306a36Sopenharmony_ci if (!gspca_dev->streaming) 484562306a36Sopenharmony_ci return 0; 484662306a36Sopenharmony_ci 484762306a36Sopenharmony_ci switch (ctrl->id) { 484862306a36Sopenharmony_ci case V4L2_CID_SHARPNESS: 484962306a36Sopenharmony_ci setsharpness(gspca_dev, ctrl->val); 485062306a36Sopenharmony_ci break; 485162306a36Sopenharmony_ci case V4L2_CID_GAMMA: 485262306a36Sopenharmony_ci setgamma(gspca_dev, ctrl->val); 485362306a36Sopenharmony_ci break; 485462306a36Sopenharmony_ci case V4L2_CID_BLUE_BALANCE: 485562306a36Sopenharmony_ci setbgain(gspca_dev, ctrl->val); 485662306a36Sopenharmony_ci break; 485762306a36Sopenharmony_ci case V4L2_CID_RED_BALANCE: 485862306a36Sopenharmony_ci setrgain(gspca_dev, ctrl->val); 485962306a36Sopenharmony_ci break; 486062306a36Sopenharmony_ci case V4L2_CID_EXPOSURE: 486162306a36Sopenharmony_ci sd_setgain(gspca_dev); 486262306a36Sopenharmony_ci break; 486362306a36Sopenharmony_ci case V4L2_CID_AUTOGAIN: 486462306a36Sopenharmony_ci if (ctrl->val) 486562306a36Sopenharmony_ci break; 486662306a36Sopenharmony_ci sd_setgain(gspca_dev); 486762306a36Sopenharmony_ci break; 486862306a36Sopenharmony_ci case V4L2_CID_JPEG_COMPRESSION_QUALITY: 486962306a36Sopenharmony_ci jpeg_set_qual(sd->jpeg_hdr, ctrl->val); 487062306a36Sopenharmony_ci break; 487162306a36Sopenharmony_ci } 487262306a36Sopenharmony_ci return gspca_dev->usb_err; 487362306a36Sopenharmony_ci} 487462306a36Sopenharmony_ci 487562306a36Sopenharmony_cistatic const struct v4l2_ctrl_ops sd_ctrl_ops = { 487662306a36Sopenharmony_ci .s_ctrl = sd_s_ctrl, 487762306a36Sopenharmony_ci}; 487862306a36Sopenharmony_ci 487962306a36Sopenharmony_cistatic int sd_init_controls(struct gspca_dev *gspca_dev) 488062306a36Sopenharmony_ci{ 488162306a36Sopenharmony_ci struct sd *sd = (struct sd *)gspca_dev; 488262306a36Sopenharmony_ci struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; 488362306a36Sopenharmony_ci 488462306a36Sopenharmony_ci gspca_dev->vdev.ctrl_handler = hdl; 488562306a36Sopenharmony_ci v4l2_ctrl_handler_init(hdl, 4); 488662306a36Sopenharmony_ci gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 488762306a36Sopenharmony_ci V4L2_CID_EXPOSURE, 1, 0xdc, 1, 0x4e); 488862306a36Sopenharmony_ci if (sd->sensor == SENSOR_CX0342) { 488962306a36Sopenharmony_ci sd->red = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 489062306a36Sopenharmony_ci V4L2_CID_RED_BALANCE, 0, 4095, 1, 256); 489162306a36Sopenharmony_ci sd->blue = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 489262306a36Sopenharmony_ci V4L2_CID_BLUE_BALANCE, 0, 4095, 1, 256); 489362306a36Sopenharmony_ci } 489462306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 489562306a36Sopenharmony_ci gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 489662306a36Sopenharmony_ci V4L2_CID_GAIN, 0, 15, 1, 3); 489762306a36Sopenharmony_ci else 489862306a36Sopenharmony_ci gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 489962306a36Sopenharmony_ci V4L2_CID_GAIN, 0, 4095, 1, 256); 490062306a36Sopenharmony_ci sd->sharpness = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 490162306a36Sopenharmony_ci V4L2_CID_SHARPNESS, 0, 3, 1, 2); 490262306a36Sopenharmony_ci sd->gamma = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 490362306a36Sopenharmony_ci V4L2_CID_GAMMA, 0, NGAMMA - 1, 1, 490462306a36Sopenharmony_ci (sd->sensor == SENSOR_SOI763A && 490562306a36Sopenharmony_ci sd->bridge == BRIDGE_TP6800) ? 0 : 1); 490662306a36Sopenharmony_ci if (sd->bridge == BRIDGE_TP6810) 490762306a36Sopenharmony_ci gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 490862306a36Sopenharmony_ci V4L2_CID_AUTOGAIN, 0, 1, 1, 1); 490962306a36Sopenharmony_ci if (sd->sensor == SENSOR_SOI763A) 491062306a36Sopenharmony_ci sd->jpegqual = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, 491162306a36Sopenharmony_ci V4L2_CID_JPEG_COMPRESSION_QUALITY, 491262306a36Sopenharmony_ci 0, 15, 1, (sd->bridge == BRIDGE_TP6810) ? 0 : 13); 491362306a36Sopenharmony_ci 491462306a36Sopenharmony_ci if (hdl->error) { 491562306a36Sopenharmony_ci pr_err("Could not initialize controls\n"); 491662306a36Sopenharmony_ci return hdl->error; 491762306a36Sopenharmony_ci } 491862306a36Sopenharmony_ci if (gspca_dev->autogain) 491962306a36Sopenharmony_ci v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); 492062306a36Sopenharmony_ci else 492162306a36Sopenharmony_ci v4l2_ctrl_cluster(2, &gspca_dev->exposure); 492262306a36Sopenharmony_ci return 0; 492362306a36Sopenharmony_ci} 492462306a36Sopenharmony_ci 492562306a36Sopenharmony_cistatic const struct sd_desc sd_desc = { 492662306a36Sopenharmony_ci .name = KBUILD_MODNAME, 492762306a36Sopenharmony_ci .config = sd_config, 492862306a36Sopenharmony_ci .init = sd_init, 492962306a36Sopenharmony_ci .init_controls = sd_init_controls, 493062306a36Sopenharmony_ci .isoc_init = sd_isoc_init, 493162306a36Sopenharmony_ci .start = sd_start, 493262306a36Sopenharmony_ci .stopN = sd_stopN, 493362306a36Sopenharmony_ci .pkt_scan = sd_pkt_scan, 493462306a36Sopenharmony_ci .dq_callback = sd_dq_callback, 493562306a36Sopenharmony_ci .get_streamparm = sd_get_streamparm, 493662306a36Sopenharmony_ci .set_streamparm = sd_set_streamparm, 493762306a36Sopenharmony_ci .get_jcomp = sd_get_jcomp, 493862306a36Sopenharmony_ci .set_jcomp = sd_set_jcomp, 493962306a36Sopenharmony_ci}; 494062306a36Sopenharmony_ci 494162306a36Sopenharmony_cistatic const struct usb_device_id device_table[] = { 494262306a36Sopenharmony_ci {USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800}, 494362306a36Sopenharmony_ci {USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810}, 494462306a36Sopenharmony_ci {} /* Terminating entry */ 494562306a36Sopenharmony_ci}; 494662306a36Sopenharmony_ci 494762306a36Sopenharmony_ciMODULE_DEVICE_TABLE(usb, device_table); 494862306a36Sopenharmony_ci 494962306a36Sopenharmony_cistatic int sd_probe(struct usb_interface *interface, 495062306a36Sopenharmony_ci const struct usb_device_id *id) 495162306a36Sopenharmony_ci{ 495262306a36Sopenharmony_ci return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd), 495362306a36Sopenharmony_ci THIS_MODULE); 495462306a36Sopenharmony_ci} 495562306a36Sopenharmony_ci 495662306a36Sopenharmony_cistatic struct usb_driver sd_driver = { 495762306a36Sopenharmony_ci .name = KBUILD_MODNAME, 495862306a36Sopenharmony_ci .id_table = device_table, 495962306a36Sopenharmony_ci .probe = sd_probe, 496062306a36Sopenharmony_ci .disconnect = gspca_disconnect, 496162306a36Sopenharmony_ci#ifdef CONFIG_PM 496262306a36Sopenharmony_ci .suspend = gspca_suspend, 496362306a36Sopenharmony_ci .resume = gspca_resume, 496462306a36Sopenharmony_ci .reset_resume = gspca_resume, 496562306a36Sopenharmony_ci#endif 496662306a36Sopenharmony_ci}; 496762306a36Sopenharmony_ci 496862306a36Sopenharmony_cimodule_usb_driver(sd_driver); 496962306a36Sopenharmony_ci 497062306a36Sopenharmony_cimodule_param(force_sensor, int, 0644); 497162306a36Sopenharmony_ciMODULE_PARM_DESC(force_sensor, 497262306a36Sopenharmony_ci "Force sensor. 0: cx0342, 1: soi763a"); 4973